記憶処理装置、記憶処理方法、ならびに、プログラム
【課題】コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止する。
【解決手段】記憶処理装置200において、データ記憶部201は各メモリブロックにパラメータを記憶する。フラグ記憶部202はメモリブロックに記憶されたパラメータを他のメモリブロックにも多重化して記憶するか否かを示す多重化フラグを各メモリブロックに対応付けて記憶する。選択部203は多重化するメモリブロックを選択する。更新部204は選択されたメモリブロックを多重化し、多重化フラグを更新する。取得要求受付部205がデータ記憶部201に記憶されたパラメータを取得する要求を受け付けると、出力部206は多重化されたメモリブロック同士を比較し、内容が一致していれば要求されたパラメータを出力し、一致していなければエラーを出力する。
【解決手段】記憶処理装置200において、データ記憶部201は各メモリブロックにパラメータを記憶する。フラグ記憶部202はメモリブロックに記憶されたパラメータを他のメモリブロックにも多重化して記憶するか否かを示す多重化フラグを各メモリブロックに対応付けて記憶する。選択部203は多重化するメモリブロックを選択する。更新部204は選択されたメモリブロックを多重化し、多重化フラグを更新する。取得要求受付部205がデータ記憶部201に記憶されたパラメータを取得する要求を受け付けると、出力部206は多重化されたメモリブロック同士を比較し、内容が一致していれば要求されたパラメータを出力し、一致していなければエラーを出力する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムに関する。
【背景技術】
【0002】
従来から、ゲーム装置においては、各種のパラメータを用いてゲームの状態が表現されている。このようなパラメータには、プレイヤーが操作するキャラクターの体力やレベル等の各種の能力値、クリアした面の数や過去のスコア履歴など、種々のものがある。そして、このようなパラメータは、メモリカードやハードディスクなど、ユーザが利用する不揮発性情報記録媒体に記録されることが多い。保存されたパラメータを改変することはチート行為と呼ばれ、特にネットワークにおいて多数のプレイヤーが参加するゲームにおいては不正行為となる。そのため、データ改変等の不正行為を抑止する技術が求められている。例えば特許文献1には、チート行為や情報記録媒体の不良等に起因するデータ改変をできるだけ検出できる装置等が開示されている。また、例えば特許文献2には、パラメータとして乱数を使用する際に、この乱数が不正なく使用されているかを認証する装置が開示されている。
【特許文献1】特開2006−72825号公報
【特許文献2】特開2006−279542号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、チート行為の防止策が一旦判明してしまうと、これを覆すような不正技術が開発されることも多く、種々の新たな技術が常に必要とされている。また、情報記録媒体の故障や不良が生じた場合も考慮するため、情報記録媒体に記憶されたデータが正当であるか否かをチェックする手段は、種々の応用分野で必要とされている。
【0004】
本発明はこのような課題を解決するものであり、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0006】
本発明の第1の観点に係る記憶処理装置は、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を備える。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶される。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新部は、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する。
取得要求受付部は、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力部は、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する。
本発明の記憶処理装置は、複数のメモリブロックの中からいずれかのメモリブロックを選択して読み出し、読み出されたデータと同じデータを、別のメモリブロックに書き込んで記憶させる。これを多重化と呼ぶ。読み出されたメモリブロックのことを多重化元のメモリブロックと表現し、書き込まれたメモリブロックのことを多重化先のメモリブロックと表現する。多重化フラグに記憶される第1種の値は、例えば、多重化先のメモリブロックのアドレスである。記憶されたパラメータを取得する要求があり、要求されたパラメータが記憶されたメモリブロックが多重化されている場合、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。つまり、多重化の正当性がチェックされ、チェックの結果に応じて、成功応答又は失敗応答が出力される。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。例えば、記憶処理装置として、RAM(Random Access Memory)、ハードディスク装置、フラッシュメモリ、各種リムーバルディスクなどを用いることができる。
【0007】
更新部は、選択されたメモリブロック以外に対応する当該多重化フラグを、当該パラメータ群を多重化して記憶しないことを示す第2種の値に更新してもよい。
例えば第2種の値は、記憶処理装置が計算したチェックサムあるいはハッシュ値である。多重化元のメモリブロックに対応する多重化フラグには第1種の値が、多重化先のメモリブロックに対応する多重化フラグには第2種の値が、それぞれ記憶される。記憶処理装置は、メモリブロックを多重化するたびに、多重化フラグを第1種の値又は第2種の値に更新するため、多重化するメモリブロックを毎回変えて繰り返し多重化でき、データ改変の不正行為を抑止できる効果が増す。
【0008】
選択部は、取得要求受付部が当該要求を受け付けると、当該要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第2種の値である場合、当該多重化フラグが当該第1種の値であるメモリブロックを所定個数選択してもよい。
そして、出力部は、
(c)選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該要求が示すメモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(d)選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、当該失敗応答を出力してもよい。
本発明の記憶処理装置は、記憶されたパラメータを取得する要求があり、要求されたパラメータが記憶されたメモリブロックが多重化されていない場合であっても、データ改変が無いかどうかをチェックする。例えば、要求されたパラメータが記憶されたメモリブロックが多重化されていない場合、現在多重化されている旨が多重化フラグに記憶されている多重化元のメモリブロックに記憶されたパラメータ群の内容と、多重化先のメモリブロックに記憶されたパラメータ群の内容とを読み出し、一致すれば成功応答を出力し、一致しなければ失敗応答を出力する。この多重化の正当性のチェックは、現在多重化されているすべてのメモリブロックについて行われてもよいし、現在多重化されているメモリブロックの一部について行われてもよい。一部についてのみチェックする場合には、例えば現在多重化されているすべてのメモリブロックの中から所定個数をランダムに選択することができる。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータが記憶されたメモリブロックが多重化されているか否かに関わらず、パラメータの値を出力しないので、データ改変の不正行為等を抑止することができる効果が増す。
【0009】
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
選択部は、当該多重化フラグが当該第1種の値であるメモリブロックの中から、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックのアドレス(以下「要求アドレス」という。)から循環的順序で次以降のアドレスであって、当該要求アドレスに最も近いアドレスが付与されたメモリブロックであり、且つ、当該多重化フラグが当該第1種の値であるメモリブロックを選択してもよい。
各メモリブロックには連続した数値を用いた固有のアドレスが予め付与される。循環的順序とは、例えばアドレスを表す数値が増加する(又は減少する)向きの順序である。循環的順序においては、メモリブロックのアドレスが終端(又は先端)に達した場合、メモリブロックの先端(又は終端)に戻って、次の順番とする。
本発明の記憶処理装置は、取得要求されたパラメータを格納するメモリブロックから循環的順序で順々に多重化フラグをチェックしていき、第1種の値がセットされた多重化フラグをもつ最初のメモリブロックを、多重化の正当性のチェック対象となるメモリブロックとして選択する。そして、選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致するか否かを判別する。したがって、多重化の正当性のチェック対象となるメモリブロックは、取得要求されたパラメータによって異なるので、チェック対象のメモリブロックが偏って選択されることがないようにできる。
【0010】
当該複数のメモリブロックにはそれぞれ固有の識別情報が対応付けられ、
当該第1種の値は、当該固有の識別情報であり、
当該第2種の値は、当該識別情報のいずれとも異なる値であり、
選択されたメモリブロックに対応する識別情報を記憶する識別情報記憶部を更に備え、
更新部は、選択されたメモリブロックに対応する当該多重化フラグを更新した後、選択されたメモリブロックに対応する識別情報を識別情報記憶部に記憶させ、
選択部は、識別情報記憶部に記憶された識別情報に対応するメモリブロックと異なるメモリブロックを選択してもよい。
本発明の記憶処理装置は、多重化するたびに、多重化元のメモリブロックを指定する識別情報を記憶する。例えば第1種の値に用いる識別情報としてメモリブロックのアドレスを、第2種の値に用いる値としていずれのアドレスとも異なる値を、それぞれ採用できる。そして、記憶処理装置は、次の多重化のタイミングになると、記憶された識別情報に対応するメモリブロック以外のメモリブロックを選択して多重化する。本発明によれば、多重化するメモリブロックが毎回変わるので、データ改変の不正行為等を抑止することができる効果が増す。
【0011】
選択部は、所定の時間間隔でいずれかのメモリブロックをランダムに選択してもよい。
本発明の記憶処理装置は、予め決められたタイミングで多重化を繰り返し、多重化元のメモリブロックを毎回ランダムに選ぶ。本発明によれば、多重化するメモリブロックに偏りがないようにするので、データ改変の不正行為等を抑止することができる効果が増す。
【0012】
データ記憶部に記憶されたパラメータを更新する要求を受け付ける更新要求受付部を更に備え、
更新部は、更新要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックを更新し、
選択部は、更新要求受付部が当該要求を受け付けた場合に、いずれかのメモリブロックを選択してもよい。
本発明の記憶処理装置は、記憶されたパラメータを更新する要求があると、多重化元のメモリブロックを選択し直し、更に、選択し直したメモリブロックを多重化する。パラメータの更新には、パラメータの値の書き換えのほか、パラメータの追加や削除も含まれる。本発明によれば、パラメータを読み出すタイミングだけでなく、更新するタイミングにおいても多重化し直すので、データ改変の不正行為等を抑止することができる効果が増す。
【0013】
本発明のその他の観点に係る記憶処理装置は、パラメータを記憶する記憶処理装置であって、データ記憶部、フラグ記憶部、選択部、更新部、出力部を備える。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部から1つ以上のメモリブロックを選択する。
更新部は、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択部により選択されたメモリブロックに記憶させ、選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する。
出力部は、当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する。
本発明の記憶処理装置にはパラメータが予め記憶され、記憶処理装置は、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第1種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第1種の値は、第1種の値と異なる所定値である。記憶処理装置は、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。記憶処理装置は、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断は定期的に実行される。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【0014】
更新部は、当該同一の値と異なる所定値、又は、乱数値を、選択部により選択されなかったメモリブロックに記憶させてもよい。
本発明の記憶処理装置は、選択部が選択したメモリブロックを多重化先のメモリブロックとし、この多重化先のメモリブロックに多重化元のメモリブロックと同じデータをコピーすることによって、データを多重化する。一方、選択部が選択しなかったメモリブロックには所定値又は乱数値を書き込む。つまり、例えばミラー化したハードディスクのように記憶領域全体をコピーするのではなく、多重化対象となったメモリブロックのみコピーするので、記憶処理装置の負荷が軽減される。
【0015】
例えば、当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与される。
そして、更新部は、選択部により選択されたメモリブロックのアドレスから所定範囲内のアドレスが付与され、且つ、当該非第1種の値が記憶された当該多重化フラグが対応付けられたメモリブロックの中のいずれか1つに記憶されているデータを、選択部により選択されなかったメモリブロックに記憶させてもよい。
本発明の記憶処理装置は、選択部が選択したメモリブロックを多重化先のメモリブロックとし、この多重化先のメモリブロックに多重化元のメモリブロックと同じデータをコピーすることによって、データを多重化する。一方、選択部が選択しなかったメモリブロックには、選択部が選択したメモリブロックの近くのアドレスのメモリブロック(典型的には1つ前のアドレスや1つ後ろのアドレスなど)であって多重化対象となっていないメモリブロックのデータを記憶する。つまり、例えばミラー化したハードディスクのように記憶領域全体をコピーするのではなく、多重化対象となったメモリブロックのみコピーするので、記憶処理装置の負荷が軽減される。例えばハードディスクなどの磁気ディスク装置の場合、すぐ近くのアドレスからデータを読み出すことになるので、磁気ヘッドを移動する処理に要する時間(シーク・タイム)を減らすことができる。
【0016】
本発明のその他の観点に係る記憶処理方法は、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を有する記憶処理装置にて実行される記憶処理方法であって、選択ステップ、更新ステップ、取得要求受付ステップ、出力ステップを備える。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群を記憶する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択ステップは、選択部が、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新ステップは、更新部が、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する。
取得要求受付ステップは、取得要求受付部が、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力ステップは、取得要求受付ステップが受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、出力部が、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、出力部が、失敗応答を出力する。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。
【0017】
本発明のその他の観点に係る記憶処理方法は、データ記憶部、フラグ記憶部、選択部、更新部、出力部を有しパラメータを記憶する記憶処理装置にて実行される記憶処理方法であって、選択ステップ、更新ステップ、出力ステップを備える。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択ステップは、選択部が、データ記憶部から1つ以上のメモリブロックを選択する。
更新ステップは、更新部が、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択ステップにより選択されたメモリブロックに記憶させ、選択ステップにより選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する。
出力ステップは、当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、出力部が成功応答を出力し、そうでない場合、出力部が失敗応答を出力する。
本発明の記憶処理方法を用いる記憶処理装置にはパラメータが予め記憶され、記憶処理装置は、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第1種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第1種の値は、第1種の値と異なる所定値である。記憶処理装置は、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。記憶処理装置は、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断を定期的に実行する。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【0018】
本発明のその他の観点に係るプログラムは、コンピュータを、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部として機能させる。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶される。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新部は、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する。
取得要求受付部は、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力部は、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する。
本発明によれば、コンピュータに記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。
【0019】
本発明のその他の観点に係るプログラムは、パラメータを記憶するコンピュータを、データ記憶部、フラグ記憶部、選択部、更新部、出力部として機能させる。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部から1つ以上のメモリブロックを選択する。
更新部は、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択部により選択されたメモリブロックに記憶させ、選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する。
出力部は、当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する。
本発明のプログラムを実行するコンピュータにはパラメータが予め記憶され、コンピュータは、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第1種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第1種の値は、第1種の値と異なる所定値である。コンピュータは、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。コンピュータは、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断を定期的に実行する。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【0020】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0021】
本発明によれば、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止することができる。
【発明を実施するための最良の形態】
【0022】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0023】
図1は、プログラムを実行することにより、本発明の記憶処理装置の機能を果たす典型的な情報処理装置100の概要構成を示す模式図である。以下、本図を参照して説明する。
【0024】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、インターフェース104と、コントローラ105と、外部メモリ106と、DVD−ROM(Digital Versatile Disk - Read Only Memory)ドライブ107と、画像処理部108と、音声処理部109と、NIC(Network Interface Card)110と、を備える。
【0025】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ107に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の記憶処理装置が実現される。
【0026】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0027】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0028】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0029】
インターフェース104を介して接続されたコントローラ105は、ユーザがダンスゲームやサッカーゲームなどのゲームの実行の際に行う操作入力を受け付ける。
【0030】
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲームのプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いたゲームのチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0031】
DVD−ROMドライブ107に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ107は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0032】
画像処理部108は、DVD−ROMから読み出されたデータをCPU 101や画像処理部108が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部108が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部108に接続されるモニター(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0033】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やアルファブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0034】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0035】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0036】
また、ゲームの画像などの情報をDVD−ROMに用意しておき、これをフレームメモリに展開することによって、ゲームの様子などを画面に表示することができるようになる。
【0037】
音声処理部109は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【0038】
音声処理部109では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM(Adaptive Differential Pulse Code Modulation)形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
【0039】
NIC 110は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0040】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ107に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0041】
次に、本実施形態の記憶処理装置200の機能的な構成について説明する。図2に示すように、記憶処理装置200は、データ記憶部201、フラグ記憶部202、選択部203、更新部204を備える。
【0042】
データ記憶部201は、データを記憶する領域として、複数のメモリブロックを有する。例えば、データ記憶部201は、各メモリブロックに、1つ又は複数のパラメータから構成されるパラメータ群を記憶する。メモリブロックは、データ記憶部201に予め定義された全メモリ空間の中において、1つのアドレスが対応付けられたメモリセルが1つ以上存在するメモリ空間である。RAM 103がデータ記憶部201として機能する。RAM 103の代わりに、ハードディスクなどの磁気ディスク装置、フラッシュメモリカード等を用いてもよい。
【0043】
ここで、多重化して記憶するとは、例えば図3に示すように、2つ以上のメモリブロック(本図ではMX,MYの2つ)に、同一のパラメータ群G1を記憶することである。本図では、データ記憶部201は、同じデータ容量の2つのメモリブロック群GX,GYを有する。それぞれのメモリブロック群はN個(Nは1以上の整数)のメモリブロックを有する。つまりデータ記憶部201は合計2N個のメモリブロックを有する。パラメータ群G1はメモリブロック群GXに属するメモリブロックMXに記憶され、同じ内容がメモリブロック群GYに属するメモリブロックMY(≠MX)にも記憶される。つまり、メモリブロックMX,MYは互いにミラー化されている。メモリブロック群GXには、多重化されるパラメータ群の「本データ」が記憶される。メモリブロック群GYには、本データが記憶された多重化対象のメモリブロック(以下、「多重化元のメモリブロック」と呼ぶ)のみメモリブロック群GXと一致する「複製データ」が記憶される。
【0044】
なお、本実施形態では、メモリブロック群GX,GYは共に同じデータ容量であるとしているが、パラメータ群を記憶するために最低限必要なデータ容量以上であれば、必ずしも同じでなくてもよい。また、各メモリブロックのデータ容量も、パラメータ群を記憶するために最低限必要なデータ容量以上であれば、必ずしも同じでなくてもよい。
【0045】
フラグ記憶部202は、データ記憶部201が有する各メモリブロックと対応付けて、パラメータ群を多重化して記憶するか否かを示すフラグ(以下、「多重化フラグ」と呼ぶ)を記憶する。後述する更新部204は、フラグ記憶部202に、多重化フラグの値として第1種の値又は第2種の値を記憶させる。RAM 103がフラグ記憶部202として機能する。
【0046】
より詳細には、フラグ記憶部202は、パラメータ群を多重化して記憶するメモリブロックに対応する多重化フラグの値として、第1種の値を記憶する。第1種の値とは、典型的には、多重化元のメモリブロックを多重化するために用いる他のメモリブロック(以下、「多重化先のメモリブロック」と呼ぶ)の物理アドレスである。例えば図3において、多重化元のメモリブロックMXに対応する多重化フラグFXには、多重化先のメモリブロックMYの物理アドレスが記憶される。同様に、多重化元のメモリブロックMX+1に対応する多重化フラグFX+1には、多重化先のメモリブロックMY+1の物理アドレスが記憶される。
【0047】
連続した物理アドレスが付与された複数のメモリセルがメモリブロックに含まれる場合には、フラグ記憶部202は、複数のメモリセルのうち先頭のメモリセルの物理アドレスを記憶する。例えば、メモリブロックMXに、物理アドレスADSTART〜ADENDまでの連続したアドレス空間が割り当てられている場合、多重化フラグFXには物理アドレスADSTARTが記憶される。
【0048】
また、フラグ記憶部202は、パラメータ群を多重化しないメモリブロックに対応する多重化フラグの値として、第2種の値を記憶する。第2種の値とは、典型的には、メモリブロック群GY内のいずれの物理アドレスとも一致しない所定値(例えば“0”や“−1”等)である。例えば図3において、多重化対象でないメモリブロックMX+2に対応する多重化フラグFX+2にはこの所定値が記憶される。
【0049】
選択部203は、データ記憶部201の各メモリブロックのうちいずれかのメモリブロックを選択する。本実施形態では、選択部203は、全てのメモリブロックのうちの一部のメモリブロックを選択する。選択部203によって選択されたメモリブロックが、多重化元のメモリブロックとなる。なお、選択部203は、全てのメモリブロックを選択することもできるが、この場合には全てのメモリブロックが多重化されることになる。CPU 101とRAM 103が協働して選択部203として機能する。
【0050】
選択部203がどのメモリブロックを選択するかについては、幾つかの手法がある。
例えば、選択部203は、所定の時間間隔で、いずれかのメモリブロックをランダムに選択する。選択部203は、全てのメモリブロックの中からランダムに1つを選択することとしてもよいし、複数個選択することとしてもよい。
【0051】
例えば、選択部203は、所定の時間間隔で、予め決められた順番にメモリブロックを選択する。予め決められた順番が一巡すれば、選択部203は1番目から選択し直す。すなわちサイクリックに選択する。予め決められた順番は、例えば、物理アドレスの小さい順、大きい順、などである。
【0052】
更新部204は、選択部203によって選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させる。つまり、選択部203によって選択されたメモリブロックに記憶されたパラメータ群を多重化して記憶させる。例えば、選択部203によってメモリブロックMXが選択されると、更新部204は、メモリブロック群GXに属するメモリブロックMXに対応する、メモリブロック群GYに属するメモリブロックMYに、メモリブロックMXと同じ内容を記憶させる。
【0053】
更に、更新部204は、選択部203によって選択されたメモリブロックに対応する多重化フラグを、パラメータ群を多重化して記憶することを示す上述の第1種の値に更新する。また、更新部204は、それ以外のメモリブロック(選択部203によって選択されなかったメモリブロック)に対応する多重化フラグを、上述の第2種の値に更新する。CPU 101とRAM 103が協働して選択部203として機能する。
【0054】
例えば、第2種の値は、上述のようにいずれの物理アドレスとも一致しない所定値である。
【0055】
例えば、更新部204は、メモリブロック群GXの先頭のメモリブロックから、選択部203によって選択されたメモリブロックまで、に含まれるメモリセルに記憶されたデータのチェックサム(合計値)を計算して、第2種の値としてもよい。
【0056】
例えば、更新部204は、メモリブロック群GXの先頭のメモリブロックから、選択部203によって選択されたメモリブロックまで、に含まれるメモリセルに記憶されたデータから、所定のハッシュ関数を用いてハッシュ値を計算して、第2種の値としてもよい。
【0057】
取得要求受付部205は、データ記憶部201に記憶されたパラメータを取得する要求を受け付ける。CPU 101が取得要求受付部205として機能する。例えば、CPU 101は、DVD−ROMドライブ107に装着されたDVD−ROMからゲームのプログラムを読み出して実行し、ゲームの実行中の任意のタイミングで、ゲーム用のパラメータをデータ記憶部201から読み出す(取得する)要求を受け付ける。
【0058】
出力部206は、取得要求受付部205が受け付けた要求が示すパラメータが記憶されたメモリブロックMREQに対応する多重化フラグFREQが第1種の値であるか否かを判別する。更に、出力部206は、メモリブロックMREQに記憶されたパラメータ群と、多重化先のメモリブロックに記憶されたパラメータ群とが一致するか否かを判別する。そして、出力部206は、それぞれの判別結果の組み合わせに応じて、以下のケースに示すように成功応答又は失敗応答を出力する。ただし、図3に示すように、メモリブロックMXがメモリブロックMYに多重化されているものとする。Xは、0以上N−1以下の整数とする。Yは、N以上2N−1以下の整数とする。対応する多重化フラグFXに格納する値としてメモリブロックの物理アドレスを用いると、次の数式[数1]が成り立つ。
【0059】
FX = Y ・・・[数1]
【0060】
(ケース1)メモリブロックMREQに対応する多重化フラグFREQが第1種の値であって、メモリブロックMREQに記憶されたパラメータ群と、その多重化先のメモリブロックMY(ただし、Y=FREQ)に記憶されたパラメータ群とが一致する場合、出力部206は、メモリブロックMREQに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックMREQに対応する多重化フラグFREQが第1種の値であるということは、要求されたメモリブロックMREQが、多重化元のメモリブロックMXに該当することを意味する。
【0061】
(ケース2)メモリブロックMREQに対応する多重化フラグFREQが第1種の値であって、メモリブロックMREQに記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致しない場合、出力部206は、失敗応答を出力する。
【0062】
(ケース3)メモリブロックMREQに対応する多重化フラグFREQが第2種の値である場合、出力部206は、メモリブロックMREQに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックMREQに対応する多重化フラグFREQが第2種の値であるということは、要求されたメモリブロックMREQが、多重化元のメモリブロックMXではないことを意味する。
【0063】
成功応答は、例えば、取得要求受付部205が受け付けた要求が示す、データ記憶部201に記憶されたパラメータそのものである。すなわち、上記ケース1又はケース3の場合、出力部206は、データ記憶部201には正しいパラメータ群が記憶されているものと判断し、データ記憶部201に記憶されたパラメータを読み出して出力する。
【0064】
失敗応答は、所定のエラーコードである。すなわち、上記ケース2又はケース4の場合、出力部206は、データ記憶部201には正しいパラメータ群が記憶されていない(不正にデータが書き換えられた可能性がある)ものと判断し、エラーコードを出力する。
【0065】
(更新処理)
次に、上述の各部が実行する更新処理について、図4のフローチャートを用いて説明する。この更新処理は、上述したように例えば所定時間毎に行われる。
【0066】
まず、選択部203は、データ記憶部201が有するメモリブロックの中から、いずれかのメモリブロックを選択する(ステップS401)。選択部203は、選択したメモリブロックを指定する情報を更新部204に通知する。
【0067】
次に、更新部204は、選択されたメモリブロックに対応する、多重化先のメモリブロックを特定する(ステップS402)。例えば図3において、更新部204は、選択部203によってメモリブロックMXが選択されると、対応するメモリブロックMYを多重化先のメモリブロックとして特定する。
【0068】
そして、更新部204は、選択されたメモリブロックを多重化する(ステップS403)。すなわち、更新部204は、ステップS401で選択されたメモリブロックに記憶されたパラメータ群を読み出して、ステップS402で特定された多重化先のメモリブロックに同じ内容を書き込む。選択されたメモリブロックMXに記憶された内容と、特定されたメモリブロックMYに記憶された内容は、同一となる。
【0069】
更に、更新部204は、選択されたメモリブロック(多重化したメモリブロック)に対応する多重化フラグを上述の第1種の値に更新し、選択されなかったメモリブロック(多重化しなかったメモリブロック)に対応する多重化フラグを上述の第2種の値に更新する(ステップS404)。
【0070】
この更新処理により、データ記憶部201に記憶されたパラメータ群が多重化して記憶されることとなる。
【0071】
(出力処理)
次に、上述の各部が実行する出力処理について、図5のフローチャートを用いて説明する。この出力処理では、記憶処理装置200は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付けると、所定の条件を満たした場合に、要求されたパラメータを出力する。以下詳述する。
【0072】
まず、取得要求受付部205は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付ける(ステップS501)。
【0073】
選択部203は、取得要求受付部205が受け付けた要求が示すパラメータが記憶されたメモリブロックMREQに対応する多重化フラグFREQが第1種の値か否かを判別する(ステップS502)。すなわち、メモリブロックMREQが多重化元のメモリブロックか否かを判別する。
【0074】
多重化フラグが第1種の値でない場合(ステップS502;NO)、更新部204は、要求されたパラメータが記憶されたメモリブロックからパラメータ群を読み出し(ステップS503)、成功応答を出力する(ステップS504)。成功応答は、例えば、ステップS503で読み出したパラメータ群に含まれる、ステップS501で受け付けた要求が示すパラメータそのものである。
【0075】
多重化フラグが第1種の値である場合(ステップS502;YES)、更新部204は、要求されたメモリブロックMREQと多重化先のメモリブロックとから、それぞれパラメータ群を読み出す(ステップS505)。
【0076】
更新部204は、要求されたメモリブロックMREQから読み出したパラメータ群と、多重化先のメモリブロックから読み出したパラメータ群とを比較し、一致するか否かを判別する(ステップS506)。
【0077】
一致すると判別された場合(ステップS506;YES)、出力部206は、成功応答を出力する(ステップS504)。例えば、出力部206は、ステップS505で読み出したパラメータ群に含まれる、ステップS501で受け付けた要求が示すパラメータを出力する。
【0078】
一致しないと判別された場合(ステップS506;NO)、出力部206は、失敗応答を出力して(ステップS507)、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部206は、要求されたパラメータを出力しない。
【0079】
本実施形態によれば、記憶処理装置200は、多重化元のメモリブロックMXに記憶された内容と、多重化先のメモリブロックMYに記憶された内容とが一致した場合のみ、要求されたパラメータを出力し、一致しなければ出力しない。例えば、更新処理によってデータ記憶部201が更新された後、上述の更新処理以外の手続きによってパラメータが更新されると、不正に書き換えられたと判断してエラーを出力する。したがって、データを勝手に書き換える不正改造・不正行為(いわゆる“チート”)を防ぐことができる。また、メモリブロックのハードウェア的な障害によってデータが改変してしまった場合にも、改変されたデータをそのまま読み出して使用してしまうような不具合を抑止することができる。
【0080】
(実施形態2)
次に、本発明のその他の実施形態について説明する。上述の実施形態では、取得要求受付部205が受け付けた要求が示すパラメータが記憶されたメモリブロックMREQに対応する多重化フラグFREQが第2種の値である場合(すなわち上述のケース3)、成功応答を出力している。つまり、第2種の値の場合には、多重化が正常に行われているか否かをチェックしていない。本実施形態は、ケース3においても、多重化元のメモリブロックMXに記憶されたデータ内容と、多重化先のメモリブロックMYに記憶されたデータ内容と、が一致するか否かを判別する点で、上述の実施形態と異なる。以下詳述する。
【0081】
本実施形態では、上述のケース3の代わりに、次のケース3’とケース3’’を考慮する。
【0082】
(ケース3’)メモリブロックMREQに対応する多重化フラグが第2種の値であって、多重化元のメモリブロックMXに記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致する場合、出力部206は、メモリブロックMREQに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックMREQに対応する多重化フラグが第2種の値であるということは、要求されたメモリブロックMREQが、多重化元のメモリブロックMXではないことを意味する。
【0083】
(ケース3’’)メモリブロックMREQに対応する多重化フラグが第2種の値であって、多重化元のメモリブロックMXに記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致しない場合、出力部206は、失敗応答を出力する。
【0084】
すなわち、出力部206は、要求されたメモリブロックMREQが多重化されていれば、メモリブロックMREQが正しく多重化されているか否かのチェック結果に応じて、成功応答又は失敗応答を出力する。また、要求されたメモリブロックMREQが多重化されていなければ、現在多重化されているすべてのメモリブロックの一部又は全部が正しく多重化されているか否かのチェック結果に応じて、成功応答又は失敗応答を出力する。
【0085】
(出力処理)
図6は、本実施形態の各部が実行する出力処理を説明するためのフローチャートである。
【0086】
まず、取得要求受付部205は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付ける(ステップS601)。要求されるパラメータが格納されるメモリブロックは、多重化されている(つまり多重化フラグに第1種の値が設定されている)場合もあれば、多重化されていない(つまり多重化フラグに第2種の値が設定されている)場合もある。
【0087】
選択部203は、フラグ記憶部202に記憶された多重化フラグを参照して、多重化フラグに第1種の値がセットされたメモリブロックを選択する(ステップS602)。すなわち、選択部203は、ステップS601で要求されたパラメータを格納したメモリブロックが多重化されている場合、要求されたパラメータを格納したメモリブロックを含む、現在多重化されているメモリブロックMXの一部又は全部を選択する。また、選択部203は、ステップS601で要求されたパラメータを格納したメモリブロックが多重化されていない場合、現在多重化されているメモリブロックMXの一部又は全部を選択する。例えば第1種の値には全アドレス空間(ADSTARTからADENDまで)のいずれかの物理アドレスが設定されるので、選択部203は、多重化フラグに物理アドレスが設定されているメモリブロックを選択する。そして、選択部203は、選択したメモリブロックを更新部204に通知する。なお、選択部203は、多重化フラグが第2種の値でないメモリブロックの一部又は全部を選択してもよい。
【0088】
更新部204は、選択部203によって選択されたメモリブロックMXと、選択されたメモリブロックMXの多重化先のメモリブロックMYとから、それぞれパラメータ群を読み出す(ステップS603)。選択部203によって複数のメモリブロックが選択された場合、更新部204は、選択されたそれぞれのメモリブロックからパラメータ群を読み出し、また、多重化先のそれぞれのメモリブロックからパラメータ群を読み出す。
【0089】
更新部204は、選択されたメモリブロックMXから読み出したパラメータ群と、多重化先のメモリブロックMYから読み出したパラメータ群とを比較し、一致するか否かを判別する(ステップS604)。すなわち、更新部204は多重化の正当性をチェックする。選択部203によって複数のメモリブロックが選択された場合、更新部204は、選択されたそれぞれのメモリブロックについて、多重化の正当性をチェックする。そして、チェック対象のメモリブロック(つまり選択部203によって選択されたメモリブロック)のすべてについて、正常に多重化されている場合、“一致する”と判別する。チェック対象のメモリブロックのいずれか1つでも正常に多重化されていない場合、“一致しない”と判別する。
【0090】
一致しないと判別された場合(ステップS604;NO)、出力部206は失敗応答を出力して(ステップS605)、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部206は、要求されたパラメータを出力しない。
【0091】
一方、一致すると判別された場合(ステップS604;YES)、出力部206は、ステップS601で要求されたパラメータが記憶されたメモリブロックMREQからパラメータ群を読み出す(ステップS606)。
【0092】
そして、出力部206は、読み出したパラメータ群の中から、要求されたパラメータを取りだして出力する(ステップS607)。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と同じ場合、出力部206は、要求されたパラメータを出力する。
【0093】
本実施形態によれば、記憶処理装置200は、読み出しが要求されたパラメータを格納するメモリブロックが多重化対象である場合だけでなく、多重化対象でない場合にも、多重化元と多重化先の各メモリブロックに記憶された内容が一致するか否かを判別するので、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が増す。
【0094】
なお、選択部203は、ステップS602において、多重化されているすべてのメモリブロックを選択する代わりに、多重化されているメモリブロックのうち予め決められた個数だけ選択してもよい。例えば、選択部203は、多重化されているメモリブロックの中から所定個数だけランダムに選んだメモリブロックをステップS602で選択してもよい。
【0095】
(実施形態3)
次に、本発明のその他の実施形態について説明する。上述のケース3’とケース3’’では、要求されたパラメータを格納しているメモリブロックMREQに対応する多重化フラグFREQが第2種の値の場合、多重化元のメモリブロックMX(X≠REQ)に記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致するか否かを判別している。ここで、多重化対象のメモリブロックの数は1つだけとは限らないため、多重化対象のメモリブロックがC個存在するとすれば、C個のそれぞれについて多重化の正当性を判断することになる。本実施形態は、多重化の正当性を判断するためのメモリブロックMXの選択方法を変えた実施形態である。以下詳述する。
【0096】
選択部203は、上述のステップS602において、フラグ記憶部202に記憶された多重化フラグを参照し、要求されたパラメータを格納しているメモリブロックMREQより後方の物理アドレスを有するメモリブロックであって、多重化フラグに第1種の値がセットされたメモリブロックを1つ選択する。
【0097】
図7に示すように、データ記憶部201は、N個のメモリブロックをから構成されるメモリブロック群GXと、N個のメモリブロックから構成されるメモリブロック群GYとを有する。各メモリブロックには、0,1,…,N−1,N,…,2N−1、というように連続した物理アドレスが付与されている。上述の「メモリブロックMREQより後方」とは、物理アドレスがMREQ+1からMN−1までのメモリブロックのことである。
【0098】
選択部203は、物理アドレスがMREQからMN−1までのメモリブロックであって、多重化フラグに第1種の値、すなわち多重化されていることを示す値がセットされているメモリブロックを1つ選択する。例えば、選択部203は、参照先の物理アドレスの初期値をMREQとし(i=0)、順々にインクリメントし(i++)、多重化フラグに第1種の値がセットされているとして最初にヒットしたメモリブロックを選択する。
【0099】
もし、MREQからMN−1までに、多重化フラグが第1種の値であるメモリブロックがない場合、先頭のメモリブロックM0に戻り、同様にMREQ−1まで多重化フラグをチェックする。つまり、チェック対象の物理アドレスをサイクリックに変化させる。そして、選択部203は、多重化フラグが第1種の値である最初のメモリブロックを選択する。この場合には、M0からMREQ−1までも含めて「後方」ということになるが、このときの「後方」とは、「循環させる向き」と解釈すればよい。
【0100】
言い換えれば、チェック対象の物理アドレスjは、[数2]で表される循環的順序となる。
【0101】
j = (REQ+i)%N ・・・[数2]
ただし、i=0,1,2,…,N−1とする。
【0102】
なお、図6のその他のステップについては同じであるため、説明を省略する。
【0103】
本実施形態では、選択部203は、メモリブロックを1つだけ選択しているが、例えば最初にヒットしたメモリブロックと2番目にヒットしたメモリブロックの2つというように、所定の個数を選択するようにしてもよい。また、選択部203は、Ca番目にヒットしたメモリブロックとCb番目にヒットしたメモリブロックの2つを選択することとし、出力処理を行うたびにCaとCbをランダムに変化させるようにしてもよい。勿論、2つでなく3つ以上のメモリブロックを選択してもよい。
【0104】
本実施形態によれば、複数の多重化対象のメモリブロックがある場合には、それらのすべてのメモリブロックについて多重化の正当性をチェックする必要はないので、CPU 101等の処理負担が軽減される。また、記憶された内容が一致するか否かを判別する対象となるメモリブロックが、要求されたパラメータ(が記憶されたメモリブロック)によって変化するので、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が増す。
【0105】
(実施形態4)
次に、本発明のその他の実施形態について説明する。本実施形態は、選択部203が多重化対象のメモリブロックを選択する処理の他の実施形態である。
【0106】
図8は、本実施形態の記憶処理装置200の機能的な構成を示す図である。記憶処理装置200は、識別情報記憶部207を更に備える。
【0107】
識別情報記憶部207は、選択部203によって選択された多重化元のメモリブロックMXを識別するための情報を記憶する。典型的には、識別情報記憶部207は、多重化元のメモリブロックMXの物理アドレスを記憶する。RAM 103が識別情報記憶部207として機能する。
【0108】
更新部204は、上述の更新処理のステップS401で選択部203が多重化元のメモリブロックMXを選択した後、選択されたメモリブロックMXの物理アドレスを識別情報記憶部207に格納する。
【0109】
選択部203は、ステップS401において識別情報記憶部207に既に識別情報が格納されている場合、すなわち、上述の更新処理が2回目以降に行われる場合、識別情報記憶部207に格納されている識別情報が示すメモリブロック以外のメモリブロックを選択する。言い換えれば、選択部203は、前回の更新処理で選択したメモリブロックと異なるメモリブロックを選択する。
【0110】
なお、識別情報は物理アドレスでなくてもよく、論理アドレス、セクタ番号、ブロック番号など、それぞれのメモリブロックを識別可能な情報であればよい。
【0111】
本実施形態によれば、記憶処理装置200は、データを多重化して記憶する際、前回多重化したメモリブロックと異なるメモリブロックを選択するので、同じメモリブロックが続けて選択されてしまうような偏りを減らすことができ、データを勝手に書き換える不正行為等を防ぐことができる効果が増す。
【0112】
(実施形態5)
次に、本発明のその他の実施形態について説明する。本実施形態は、上述の更新処理を開始するタイミングを変えた実施形態である。
【0113】
図9は、本実施形態の記憶処理装置200の機能的な構成を示す図である。記憶処理装置200は、更新要求受付部208を更に備える。
【0114】
更新要求受付部208は、データ記憶部201に記憶されたパラメータを更新する要求を受け付ける。CPU 101が取得要求受付部205として機能する。例えば、CPU 101は、DVD−ROMドライブ107に装着されたDVD−ROMからゲームのプログラムを読み出して実行し、ゲームの実行中の任意のタイミングで、データ記憶部201に記憶されたゲーム用のパラメータを更新する要求を受け付ける。更新とは、典型的にはパラメータ値の書き換え(変更)であるが、パラメータの削除、パラメータの追加、などでもよい。
【0115】
更新部204は、更新要求受付部208が受け付けた更新要求が示すパラメータが記憶されたメモリブロックを更新する。例えば、あるパラメータP1に値Vaが記憶されているとき、値Vaを値Vbに書き換える更新要求があると、更新部204は、この更新要求が示すパラメータP1が記憶されたメモリブロックM1を読み出し、読み出したメモリブロックM1に含まれるパラメータP1を値Vaから値Vbに変更し、再びメモリブロックM1に書き込む。
【0116】
選択部203は、更新要求受付部208が更新要求を受け付けた場合に、多重化対象のメモリブロックとして、データ記憶部201が有するいずれかのメモリブロックを選択する。
【0117】
選択部203によって多重化対象のメモリブロックが選択されると、更新部204は、上述の更新処理を開始する。すなわち、更新部204は、更新要求受付部208がパラメータを更新する要求を受け付けると、多重化対象のメモリブロックを選択して、多重化し直す。
【0118】
図10は、本実施形態の更新処理を説明するためのフローチャートである。
【0119】
まず、更新要求受付部208は、パラメータを更新する要求があったか否かを判別する(ステップS1001)。
【0120】
更新要求がない場合(ステップS1001;NO)、ステップS1001に戻り、更新要求があるまで待機する。
【0121】
一方、更新要求があった場合(ステップS1001;YES)、更新部204は、現在多重化対象となっているメモリブロックMXと、その多重化先のメモリブロックMYから、パラメータ群を読み出す(ステップS1002)。
【0122】
そして、更新部204は、ステップS1002で読み出した2つのパラメータ群の内容が一致するか否かを判別する(ステップS1003)。
【0123】
一致しないと判別された場合(ステップS1003;NO)、出力部206は失敗応答を出力して(ステップS1004)、更新処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理又は本実施形態の更新処理によって更新された内容と異なる場合、更新部204は、要求されたパラメータを更新しない。
【0124】
一方、一致すると判別された場合(ステップS1003;YES)、更新部204は、更新対象のパラメータが記憶されているメモリブロックを特定する(ステップS1005)。
【0125】
そして、更新部204は、更新要求があったパラメータを更新する(ステップS1006)。
【0126】
本実施形態によれば、記憶処理装置200は、多重化元のメモリブロックMXに記憶された内容と、多重化先のメモリブロックMYに記憶された内容とが一致した場合のみ、要求されたパラメータを更新し、一致しなければ更新しない。例えば、上述の実施形態又は本実施形態の更新処理によって(つまり正式な手続きによって)データ記憶部201が更新された後、不正に書き換えられたと判断すると、エラーを出力してパラメータを更新しない。したがって、データを読み出すタイミングだけでなく、更新するタイミングにも、不正行為を防ぐことができる。
【0127】
(実施形態6)
次に、本発明のその他の実施形態について説明する。上述の実施形態では、データ記憶部201は、図3に示すように同じメモリ容量のメモリブロック群GX,GYを有している。一方、本実施形態は、1つのメモリブロック群のみを有する点で、上述の実施形態と異なる。
【0128】
図11は、本実施形態のデータ記憶部201とフラグ記憶部202の構成を示す図である。データ記憶部201は、L個(Lは2以上の整数)のメモリブロックを有する。それぞれのメモリブロックにパラメータ群が記憶される点は同じである。
【0129】
フラグ記憶部202の多重化フラグには、上述の実施形態と同様に、第1種の値又は第2種の値が格納される。更新部204は、多重化元のメモリブロックMXに対応する多重化フラグFXに、第1種の値として、多重化先のメモリブロックMYの物理アドレスを格納する。また、更新部204は、多重化対象でないメモリブロック(ただし多重化先のメモリブロックMYを除く)に対応する多重化フラグに、上述のチェックサムやハッシュ値を格納する。
【0130】
選択部203は、多重化先のメモリブロックMYとして、パラメータ群が記憶されていない未使用のメモリブロックを選択する。
【0131】
更新部204は、更新要求受付部208がパラメータを削除する要求を受け付けると、データ記憶部201に記憶されたパラメータを削除する。1つのメモリブロックに記憶されたパラメータ群に含まれる全てのパラメータを削除する要求があると、更新部204は、要求されたパラメータ群を消去し、パラメータ群が記憶されていないことを示す所定値FBLANKを多重化フラグにセットする。つまり、多重化フラグに所定値FBLANKが対応付けられたメモリブロックは、未使用のメモリブロックとなる。
【0132】
未使用のメモリブロックは、パラメータ群を追加する要求があったときに優先的に使用される。また、選択部203は、多重化先のメモリブロックMYとして、未使用のメモリブロックを選択する。更新部204は、上述の更新処理を行って多重化した後、前回の多重化先のメモリブロックに対応する多重化フラグを所定値FBLANKに更新し(すなわち未使用とし)、今回多重化先として選択されたメモリブロックに対応する多重化フラグに第1種の値をセットする。こうすることで、多重化に使用されるメモリブロックが入れ替わる。
【0133】
更新部204は、多重化先のメモリブロックMYに対応する多重化フラグFYに、第1種の値として、多重化元のメモリブロックMXの物理アドレスを記憶する。つまり、メモリブロックMX,MYは、上述の出力処理において同等に扱われ、どちらが本データでどちらが複製データであるかという点で違いはない。
【0134】
ただし、更新部204は、多重化フラグFYに、多重化対象でないメモリブロックと同様に、上述のチェックサムやハッシュ値を格納することとしてもよい。この場合には、多重化元のメモリブロックMXに本データが、多重化先のメモリブロックMYに複製データが、それぞれ記憶されることになる。
【0135】
また、更新部204は、多重化フラグFYに、多重化先のメモリブロックであることを示す所定値FC1を格納してもよい。ただし、この場合、この所定値FC1は、物理アドレスADSTART〜ADENDのいずれにも一致しない値とする。さらに、多重化対象でないメモリブロックに対応する多重化フラグには、上述のチェックサムやハッシュ値ではなく、FC1と異なる他の所定値FC2を格納するのがよい。
【0136】
本実施形態によれば、記憶処理装置200は、データを多重化して記憶する際、本データを記憶する第1のメモリ領域と、複製データを記憶する第2のメモリ領域と、を明確に区別する必要がないので、メモリ管理が簡略化される。また、上述の実施形態では第1のメモリ領域と同じサイズの第2のメモリ領域を必要とし、CPU 101が自由に利用可能なサイズが実質的に半分になっていたが、本実施形態によれば、利用可能なメモリ領域をより多く確保することができるようになる。
【0137】
なお、本実施形態は、上述の各実施形態と容易に組み合わせて構成することができる。例えば、ステップS1001において、更新要求があったか否かを判別するのに加えて、取得要求(読み出す要求)があったか否かを判別してもよい。このようにすれば、記憶処理装置200は、パラメータの更新のタイミングだけでなく、読み出しのタイミングにおいても多重化を行うことができ、更に不正行為を防ぐことができる効果が増す。
【0138】
(実施形態7)
次に、本発明のその他の実施形態について説明する。上述の実施形態では、多重化フラグにメモリブロックの物理アドレスを格納している。本実施形態では、多重化フラグに物理アドレスでない他の所定の値を格納する。
【0139】
図12は、本実施形態のデータ記憶部201とフラグ記憶部202の構成例を示す図である。データ記憶部201は、それぞれN個のメモリブロックから構成される4つのメモリブロック群GA,GB,GC,GDを有する。フラグ記憶部202は、各々のメモリブロックに対応する多重化フラグを記憶する。なお、本図のようなメモリブロックの構成を、“N行4列”と呼ぶことにする。本実施形態では4列であるが、M列(Mは1以上の整数)とした“N行M列”の構成にすることができる。
【0140】
データ記憶部201は、1つ以上のパラメータを含むパラメータ群を、選択部203によって選択された各メモリブロックに記憶する。メモリブロックの選択の仕方(多重化パターン)には次に示すような様々なものがある。
【0141】
(パターン1)例えば、更新部204は、メモリブロック群GAのi番目(iは0以上N−1以下の整数)のメモリブロックMAiに格納されるパラメータ群を、他のメモリブロック群のメモリブロックMBi,MCi,MDiにも記憶させ、メモリブロックMAi,MBi,MCi,MDiに対応する多重化フラグに所定値FMULTIを記憶させる(すなわち多重化する)。本パターンでは、パラメータ群は四重化される。
【0142】
(パターン2)例えば、更新部204は、メモリブロック群GBのi+1番目のメモリブロックMBi+1に格納されるパラメータ群を、他のメモリブロック群のメモリブロックMCi+1にも記憶させ、メモリブロックMBi+1,MCi+1に対応する多重化フラグに所定値FMULTIを記憶させる。残りのメモリブロックMAi+1,MDi+1に対応する多重化フラグに他の所定値FBLANK(≠FMULTI)を記憶させる。メモリブロックMAi+1,MDi+1にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。本パターンでは、パラメータ群は二重化される。選択部203は、多重化対象のメモリブロック(この例ではMBi+1とMCi+1の2つ)として、4つのメモリブロック群のうちいずれのメモリブロック群の組み合わせで選択してもよい。
【0143】
(パターン3)例えば、更新部204は、メモリブロック群GAのi+2番目のメモリブロックMAi+2に格納されるパラメータ群を、他のメモリブロック群のメモリブロックMCi+2,MDi+2にも記憶させ、メモリブロックMAi+2,MCi+2,MDi+2に対応する多重化フラグに所定値FMULTIを記憶させる。残りのメモリブロックMBi+2に対応する多重化フラグに所定値FBLANKを記憶させる。メモリブロックMBi+2にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。本パターンでは、パラメータ群は三重化される。選択部203は、多重化対象のメモリブロック(この例ではMAi+2,MCi+2,MDi+2の3つ)として、4つのメモリブロック群のうちいずれのメモリブロック群の組み合わせで選択してもよい。
【0144】
(パターン4)例えば、更新部204は、メモリブロック群GDのi+3番目のメモリブロックMDi+3にパラメータ群を記憶させ、メモリブロックMDi+3に対応する多重化フラグに所定値FMULTIを記憶させる。この場合、i+3番目のパラメータ群は多重化されない。メモリブロックMAi+3,MBi+3,MCi+3にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。選択部203は、パラメータ群が記憶されるメモリブロック(この例ではMDi+3の1つ)として、4つのメモリブロック群のうちいずれのメモリブロック群を選択してもよい。
【0145】
選択部203は、上記のいずれのパターンでメモリブロックを選択してもよい。例えば、選択部203は、各行について上記のパターンの中からランダムに1つを選んで、多重化対象のメモリブロックを選択する。
【0146】
また、選択部203は、任意のタイミングで多重化対象のメモリブロックを選択し直してもよい。例えば、選択部203は、垂直同期回数やタイマー等を用いた所定の時間サイクルで選択し直す。
【0147】
したがって、多重化対象のメモリブロックを所定の時間毎に様々なパターンで入れ替えて多重化し直すことになり、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が更に増す。
【0148】
上述の多重化パターンは例示であり、選択部203は他の方法によりメモリブロックを選択してもよい。
【0149】
次に、本実施形態の更新処理について、図13のフローチャートを用いて説明する。データ記憶部201はN行M列のメモリブロックから構成され、選択部203はL種類の多重化パターンから選択する。言い換えれば、データ記憶部201には、N個のパラメータ群が格納される。N,M,Lはいずれも1以上の整数である。
【0150】
まず、選択部203は、現在、多重化する所定の更新タイミングか否かを判別する(ステップS1301)。選択部203は、例えば垂直同期信号(VSYNC)が所定回数に達したとき、更新タイミングであると判別する。所定の更新タイミングでないと判別された場合(ステップS1301;NO)、選択部203は所定の更新タイミングになるまで待機する。
【0151】
一方、所定の更新タイミングであると判別された場合(ステップS1301;YES)、選択部203は、カウンターiを初期化する(ステップS1302)。すなわちi=0とする。カウンターiは、0以上N−1以下の整数であり、以下に述べるステップS1303〜ステップS1305の処理はN回ループする。
【0152】
選択部203は、i行目のメモリブロックの多重化パターンとして、L種類の中から1つ選択する(ステップS1303)。例えば、選択部203は、L種類の中からランダムに1つ選択する。
【0153】
選択部203は、ステップS1303の選択結果に基づいて、多重化対象のメモリブロックを選択する(ステップS1304)。
【0154】
更新部204は、i行目のメモリブロックを多重化する(ステップS1305)。
【0155】
詳細には、i行目に格納されたパラメータ群を読み出してRAM103の所定領域や未使用領域に一時記憶して待避させる。そして、更新部204は、ステップS1304で選択したメモリブロックに、待避させておいたパラメータ群を格納する。つまり、更新部204は、選択部203が選択したメモリブロックにi行目のパラメータ群をコピーする。ステップS1304で選択しなかったメモリブロックにはダミーデータ等を格納してもよいし、既に格納されたデータを更新せずにそのままにしてもよい。
【0156】
さらに、更新部204は、i行目のパラメータ群を格納したメモリブロック(多重化対象のメモリブロック)に対応する多重化フラグに、多重化に用いられたことを示す値FMULTIを格納する。また、パラメータ群を格納しなかったメモリブロック(多重化対象でないメモリブロック)に対応する多重化フラグに、多重化に用いられなかったことを示す値FBLANKを格納する。このようにして更新部204はi行目のメモリブロックを多重化する。
【0157】
ここで、更新部204は、多重化対象ではないことを示す所定値FBLANKの代わりに、対応するメモリブロックに格納されているデータのハッシュ値やチェックサム値、あるいは乱数値等を多重化フラグに記憶させてもよい。
【0158】
また、更新部204は、各行のメモリブロックのうち選択部203が選択しなかったメモリブロック(言い換えれば、対応する多重化フラグに所定値FMULTIでない値が格納されたメモリブロック)に、選択部203が選択したメモリブロックのハッシュ値やチェックサム値、あるいは乱数値等を記憶させてもよい。
【0159】
また、更新部204は、各行のメモリブロックのうち選択部203が選択しなかったメモリブロックが複数個存在する場合、これらの選択しなかったメモリブロックのうちいずれか1つに記憶されたデータを、残りの選択しなかったメモリブロックにダミーデータ1310としてコピーしてもよい。
【0160】
例えば、多重化し直す前のメモリブロックに図14(a)のようにパラメータ群等が記憶されているとする。多重化に用いるメモリブロックとして選択部203が図14(b)に示すようにメモリブロックMB,MCを選択すると、メモリブロックMB,MCには待避したパラメータ群を記憶させ、残りのメモリブロックMA,MDには同一のダミーデータを記憶させる。ダミーデータには、例えば多重化し直す前にメモリブロックMA,MDのどちらかに記憶されていたデータを用いる。この場合、一見しただけではダミーデータ1310があたかも「正規に多重化されたパラメータ群」であるかのように見え、多重化フラグを解読しない限り、どのメモリブロックがパラメータ群を記憶したメモリブロックなのか分からなくなるので、チート行為への抑止力としての効果が大きくなる。
【0161】
また、更新部204は、各行のメモリブロックのうち選択部203が選択しなかったメモリブロックに、選択したメモリブロックの前後のアドレスが付与されたメモリブロックであって多重化フラグに所定値FMULTIでない値が記憶されたメモリブロックと同じデータを記憶させてもよい。前後のアドレスとは、典型的には隣り合う前後のアドレスであるが、所定量ADWIDTH以下だけ離れたアドレス(例えばADWIDTHだけ前のアドレス、ADWIDTHだけ後のアドレスなど)でもよい。
【0162】
例えば、多重化し直す前のメモリブロックに図14(c)のようにパラメータ群等が記憶されているとする。多重化に用いるメモリブロックとして選択部203が図14(d)に示すようにメモリブロックMBi,MCiを選択すると、更新部204は、メモリブロックMB,MCには、待避したパラメータ群を記憶させる。また、残りのメモリブロックMAi,MDiには、アドレスが前後に隣り合っていて且つ多重化フラグがFMULTIでないメモリブロックのうち、いずれかと同じデータを記憶させる。本図では、更新部204は、アドレスがMDi−1,MAi+1,MBi+1の3つのうちのいずれか1つのメモリブロックからデータを読み出すこととなるが、MDi−1を採用している。例えば更新部204は、これらの3つの中からランダムに1つを採用すればよい。
【0163】
なお、更新部204が採用するメモリブロックは、選択部203が選択したメモリブロックのアドレスの近くであることが望ましい。ハードディスクなどの磁気ディスク装置の場合、同じ磁気ディスクの同じトラック内のアドレスを選択部203が選択してデータを読み出すことにすれば、データのコピーのために磁気ヘッドを移動する処理に要する時間(シーク・タイム)を減らすことができ、より効率よく多重化できる。また、同じセクタ内のアドレスを選択部203が選択してデータを読み出すことにすれば、ハードディスクのバッファーメモリの書き換え頻度を減らすことができ、より効率良く多重化できる。
【0164】
次に、選択部203は、カウンターiがN−1か否かを判別する(ステップS1306)。すなわち、選択部203は、N行のすべてについて多重化したか否かを判別する。
【0165】
i=N−1である場合(ステップS1306;YES)、更新処理を終了する。つまり、N行M列のメモリブロックすべてについて多重化を終了したことになる。
【0166】
i=N−1でない場合(ステップS1306;NO)、選択部203はカウンターをインクリメント(i=i+1)し(ステップS1307)、ステップS1303に戻る。つまり、N行M列のメモリブロックすべてについて未だ多重化を終えていないので、残りのメモリブロックについて引き続き多重化をする。
【0167】
(出力処理)
次に、本実施形態の出力処理について、図15のフローチャートを用いて説明する。上述のように、本実施形態のデータ記憶部201にはN個のパラメータ群が格納され、最大でM重に多重化されている。
【0168】
まず、取得要求受付部205は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付ける(ステップS1501)。
【0169】
選択部203は、取得要求受付部205が受け付けた要求が示すパラメータが、何行目のメモリブロックのパラメータ群に含まれているかを判別する(ステップS1502)。判別の結果、選択部203は、要求されたパラメータが例えばX行目のパラメータ群に含まれていると判別する。
【0170】
更新部204は、ステップS1502で判別された行のメモリブロックのうち、多重化フラグに第1種の値が格納されたメモリブロックからパラメータ群を読み出す(ステップS1503)。多重化フラグに第1種の値が格納された複数のメモリブロックがX行目にある場合、更新部204はそれらすべてのメモリブロックからパラメータ群を読み出す。
【0171】
更新部204は、ステップS1503で読み出したパラメータ群のデータ内容が互いに一致するか否かを判別する(ステップS1504)。ただし、多重化フラグに第1種の値が格納されたメモリブロックがX行目に1つしかない場合、更新部204は、「一致する」と判別することとする。
【0172】
一致すると判別された場合(ステップS1504;YES)、出力部206は、成功応答を出力する(ステップS1505)。例えば、出力部206は、ステップS1504で読み出したパラメータ群に含まれる、ステップS1501で受け付けた要求が示すパラメータを、成功応答として出力する。
【0173】
一致しないと判別された場合(ステップS1504;NO)、出力部206は、失敗応答を出力して(ステップS1506)、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部206は、要求されたパラメータを出力しない。
【0174】
本実施形態によれば、記憶処理装置200は、N個のパラメータ群のそれぞれについて異なった方法で多重化するので、多重化がより複雑になり、不正なデータ改変を防ぐことができる効果が更に増す。
【0175】
上述の各実施形態では、出力部206は、成功応答としてパラメータを出力しているが、正常に多重化されていることを示す所定値を出力することとしてもよい。例えば、取得要求受付部205や更新要求受付部208が要求を受け付けたか否かに関わらず、定期的に出力処理を実行し、パラメータが正常に記憶されているか否かをチェックするための手段として本発明を利用することも可能である。
【0176】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0177】
記憶処理装置200を装置の全部又は一部として動作させるためのプログラムを、メモリカード、CD−ROM、DVD、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【0178】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【0179】
以上説明したように、本発明によれば、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【0180】
【図1】本実施形態の記憶処理装置が実現される典型的なゲーム装置の概要構成を示す図である。
【図2】記憶処理装置の機能的構成を説明するための図である。
【図3】データ記憶部とフラグ記憶部の構成を説明するための図である。
【図4】更新処理を説明するためのフローチャートである。
【図5】出力処理を説明するためのフローチャートである。
【図6】実施形態2の出力処理を説明するためのフローチャートである。
【図7】実施形態3のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図8】実施形態4の記憶処理装置の機能的構成を説明するための図である。
【図9】実施形態5の記憶処理装置の機能的構成を説明するための図である。
【図10】実施形態5の更新処理を説明するためのフローチャートである。
【図11】実施形態6のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図12】実施形態7のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図13】実施形態7の更新処理を説明するためのフローチャートである。
【図14】(a)と(c)は更新部が多重化する前にデータ記憶部とフラグ記憶部に記憶されるデータの構成例である。(b)と(d)は更新部が多重化した後にデータ記憶部とフラグ記憶部に記憶されるデータの構成例である。
【図15】実施形態7の出力処理を説明するためのフローチャートである。
【符号の説明】
【0181】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェース
105 コントローラ
106 外部メモリ
107 DVD−ROMドライブ
108 画像処理部
109 音声処理部
110 NIC
200 記憶処理装置
201 データ記憶部
202 フラグ記憶部
203 選択部
204 更新部
205 取得要求受付部
206 出力部
207 識別情報記憶部
208 更新要求受付部
【技術分野】
【0001】
本発明は、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムに関する。
【背景技術】
【0002】
従来から、ゲーム装置においては、各種のパラメータを用いてゲームの状態が表現されている。このようなパラメータには、プレイヤーが操作するキャラクターの体力やレベル等の各種の能力値、クリアした面の数や過去のスコア履歴など、種々のものがある。そして、このようなパラメータは、メモリカードやハードディスクなど、ユーザが利用する不揮発性情報記録媒体に記録されることが多い。保存されたパラメータを改変することはチート行為と呼ばれ、特にネットワークにおいて多数のプレイヤーが参加するゲームにおいては不正行為となる。そのため、データ改変等の不正行為を抑止する技術が求められている。例えば特許文献1には、チート行為や情報記録媒体の不良等に起因するデータ改変をできるだけ検出できる装置等が開示されている。また、例えば特許文献2には、パラメータとして乱数を使用する際に、この乱数が不正なく使用されているかを認証する装置が開示されている。
【特許文献1】特開2006−72825号公報
【特許文献2】特開2006−279542号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかし、チート行為の防止策が一旦判明してしまうと、これを覆すような不正技術が開発されることも多く、種々の新たな技術が常に必要とされている。また、情報記録媒体の故障や不良が生じた場合も考慮するため、情報記録媒体に記憶されたデータが正当であるか否かをチェックする手段は、種々の応用分野で必要とされている。
【0004】
本発明はこのような課題を解決するものであり、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【0005】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【0006】
本発明の第1の観点に係る記憶処理装置は、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を備える。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶される。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新部は、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する。
取得要求受付部は、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力部は、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する。
本発明の記憶処理装置は、複数のメモリブロックの中からいずれかのメモリブロックを選択して読み出し、読み出されたデータと同じデータを、別のメモリブロックに書き込んで記憶させる。これを多重化と呼ぶ。読み出されたメモリブロックのことを多重化元のメモリブロックと表現し、書き込まれたメモリブロックのことを多重化先のメモリブロックと表現する。多重化フラグに記憶される第1種の値は、例えば、多重化先のメモリブロックのアドレスである。記憶されたパラメータを取得する要求があり、要求されたパラメータが記憶されたメモリブロックが多重化されている場合、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。つまり、多重化の正当性がチェックされ、チェックの結果に応じて、成功応答又は失敗応答が出力される。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。例えば、記憶処理装置として、RAM(Random Access Memory)、ハードディスク装置、フラッシュメモリ、各種リムーバルディスクなどを用いることができる。
【0007】
更新部は、選択されたメモリブロック以外に対応する当該多重化フラグを、当該パラメータ群を多重化して記憶しないことを示す第2種の値に更新してもよい。
例えば第2種の値は、記憶処理装置が計算したチェックサムあるいはハッシュ値である。多重化元のメモリブロックに対応する多重化フラグには第1種の値が、多重化先のメモリブロックに対応する多重化フラグには第2種の値が、それぞれ記憶される。記憶処理装置は、メモリブロックを多重化するたびに、多重化フラグを第1種の値又は第2種の値に更新するため、多重化するメモリブロックを毎回変えて繰り返し多重化でき、データ改変の不正行為を抑止できる効果が増す。
【0008】
選択部は、取得要求受付部が当該要求を受け付けると、当該要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第2種の値である場合、当該多重化フラグが当該第1種の値であるメモリブロックを所定個数選択してもよい。
そして、出力部は、
(c)選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該要求が示すメモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(d)選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、当該失敗応答を出力してもよい。
本発明の記憶処理装置は、記憶されたパラメータを取得する要求があり、要求されたパラメータが記憶されたメモリブロックが多重化されていない場合であっても、データ改変が無いかどうかをチェックする。例えば、要求されたパラメータが記憶されたメモリブロックが多重化されていない場合、現在多重化されている旨が多重化フラグに記憶されている多重化元のメモリブロックに記憶されたパラメータ群の内容と、多重化先のメモリブロックに記憶されたパラメータ群の内容とを読み出し、一致すれば成功応答を出力し、一致しなければ失敗応答を出力する。この多重化の正当性のチェックは、現在多重化されているすべてのメモリブロックについて行われてもよいし、現在多重化されているメモリブロックの一部について行われてもよい。一部についてのみチェックする場合には、例えば現在多重化されているすべてのメモリブロックの中から所定個数をランダムに選択することができる。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータが記憶されたメモリブロックが多重化されているか否かに関わらず、パラメータの値を出力しないので、データ改変の不正行為等を抑止することができる効果が増す。
【0009】
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
選択部は、当該多重化フラグが当該第1種の値であるメモリブロックの中から、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックのアドレス(以下「要求アドレス」という。)から循環的順序で次以降のアドレスであって、当該要求アドレスに最も近いアドレスが付与されたメモリブロックであり、且つ、当該多重化フラグが当該第1種の値であるメモリブロックを選択してもよい。
各メモリブロックには連続した数値を用いた固有のアドレスが予め付与される。循環的順序とは、例えばアドレスを表す数値が増加する(又は減少する)向きの順序である。循環的順序においては、メモリブロックのアドレスが終端(又は先端)に達した場合、メモリブロックの先端(又は終端)に戻って、次の順番とする。
本発明の記憶処理装置は、取得要求されたパラメータを格納するメモリブロックから循環的順序で順々に多重化フラグをチェックしていき、第1種の値がセットされた多重化フラグをもつ最初のメモリブロックを、多重化の正当性のチェック対象となるメモリブロックとして選択する。そして、選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致するか否かを判別する。したがって、多重化の正当性のチェック対象となるメモリブロックは、取得要求されたパラメータによって異なるので、チェック対象のメモリブロックが偏って選択されることがないようにできる。
【0010】
当該複数のメモリブロックにはそれぞれ固有の識別情報が対応付けられ、
当該第1種の値は、当該固有の識別情報であり、
当該第2種の値は、当該識別情報のいずれとも異なる値であり、
選択されたメモリブロックに対応する識別情報を記憶する識別情報記憶部を更に備え、
更新部は、選択されたメモリブロックに対応する当該多重化フラグを更新した後、選択されたメモリブロックに対応する識別情報を識別情報記憶部に記憶させ、
選択部は、識別情報記憶部に記憶された識別情報に対応するメモリブロックと異なるメモリブロックを選択してもよい。
本発明の記憶処理装置は、多重化するたびに、多重化元のメモリブロックを指定する識別情報を記憶する。例えば第1種の値に用いる識別情報としてメモリブロックのアドレスを、第2種の値に用いる値としていずれのアドレスとも異なる値を、それぞれ採用できる。そして、記憶処理装置は、次の多重化のタイミングになると、記憶された識別情報に対応するメモリブロック以外のメモリブロックを選択して多重化する。本発明によれば、多重化するメモリブロックが毎回変わるので、データ改変の不正行為等を抑止することができる効果が増す。
【0011】
選択部は、所定の時間間隔でいずれかのメモリブロックをランダムに選択してもよい。
本発明の記憶処理装置は、予め決められたタイミングで多重化を繰り返し、多重化元のメモリブロックを毎回ランダムに選ぶ。本発明によれば、多重化するメモリブロックに偏りがないようにするので、データ改変の不正行為等を抑止することができる効果が増す。
【0012】
データ記憶部に記憶されたパラメータを更新する要求を受け付ける更新要求受付部を更に備え、
更新部は、更新要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックを更新し、
選択部は、更新要求受付部が当該要求を受け付けた場合に、いずれかのメモリブロックを選択してもよい。
本発明の記憶処理装置は、記憶されたパラメータを更新する要求があると、多重化元のメモリブロックを選択し直し、更に、選択し直したメモリブロックを多重化する。パラメータの更新には、パラメータの値の書き換えのほか、パラメータの追加や削除も含まれる。本発明によれば、パラメータを読み出すタイミングだけでなく、更新するタイミングにおいても多重化し直すので、データ改変の不正行為等を抑止することができる効果が増す。
【0013】
本発明のその他の観点に係る記憶処理装置は、パラメータを記憶する記憶処理装置であって、データ記憶部、フラグ記憶部、選択部、更新部、出力部を備える。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部から1つ以上のメモリブロックを選択する。
更新部は、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択部により選択されたメモリブロックに記憶させ、選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する。
出力部は、当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する。
本発明の記憶処理装置にはパラメータが予め記憶され、記憶処理装置は、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第1種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第1種の値は、第1種の値と異なる所定値である。記憶処理装置は、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。記憶処理装置は、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断は定期的に実行される。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【0014】
更新部は、当該同一の値と異なる所定値、又は、乱数値を、選択部により選択されなかったメモリブロックに記憶させてもよい。
本発明の記憶処理装置は、選択部が選択したメモリブロックを多重化先のメモリブロックとし、この多重化先のメモリブロックに多重化元のメモリブロックと同じデータをコピーすることによって、データを多重化する。一方、選択部が選択しなかったメモリブロックには所定値又は乱数値を書き込む。つまり、例えばミラー化したハードディスクのように記憶領域全体をコピーするのではなく、多重化対象となったメモリブロックのみコピーするので、記憶処理装置の負荷が軽減される。
【0015】
例えば、当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与される。
そして、更新部は、選択部により選択されたメモリブロックのアドレスから所定範囲内のアドレスが付与され、且つ、当該非第1種の値が記憶された当該多重化フラグが対応付けられたメモリブロックの中のいずれか1つに記憶されているデータを、選択部により選択されなかったメモリブロックに記憶させてもよい。
本発明の記憶処理装置は、選択部が選択したメモリブロックを多重化先のメモリブロックとし、この多重化先のメモリブロックに多重化元のメモリブロックと同じデータをコピーすることによって、データを多重化する。一方、選択部が選択しなかったメモリブロックには、選択部が選択したメモリブロックの近くのアドレスのメモリブロック(典型的には1つ前のアドレスや1つ後ろのアドレスなど)であって多重化対象となっていないメモリブロックのデータを記憶する。つまり、例えばミラー化したハードディスクのように記憶領域全体をコピーするのではなく、多重化対象となったメモリブロックのみコピーするので、記憶処理装置の負荷が軽減される。例えばハードディスクなどの磁気ディスク装置の場合、すぐ近くのアドレスからデータを読み出すことになるので、磁気ヘッドを移動する処理に要する時間(シーク・タイム)を減らすことができる。
【0016】
本発明のその他の観点に係る記憶処理方法は、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を有する記憶処理装置にて実行される記憶処理方法であって、選択ステップ、更新ステップ、取得要求受付ステップ、出力ステップを備える。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群を記憶する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択ステップは、選択部が、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新ステップは、更新部が、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する。
取得要求受付ステップは、取得要求受付部が、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力ステップは、取得要求受付ステップが受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、出力部が、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、出力部が、失敗応答を出力する。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。
【0017】
本発明のその他の観点に係る記憶処理方法は、データ記憶部、フラグ記憶部、選択部、更新部、出力部を有しパラメータを記憶する記憶処理装置にて実行される記憶処理方法であって、選択ステップ、更新ステップ、出力ステップを備える。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択ステップは、選択部が、データ記憶部から1つ以上のメモリブロックを選択する。
更新ステップは、更新部が、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択ステップにより選択されたメモリブロックに記憶させ、選択ステップにより選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する。
出力ステップは、当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、出力部が成功応答を出力し、そうでない場合、出力部が失敗応答を出力する。
本発明の記憶処理方法を用いる記憶処理装置にはパラメータが予め記憶され、記憶処理装置は、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第1種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第1種の値は、第1種の値と異なる所定値である。記憶処理装置は、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。記憶処理装置は、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断を定期的に実行する。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【0018】
本発明のその他の観点に係るプログラムは、コンピュータを、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部として機能させる。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶される。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新部は、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する。
取得要求受付部は、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力部は、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する。
本発明によれば、コンピュータに記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。
【0019】
本発明のその他の観点に係るプログラムは、パラメータを記憶するコンピュータを、データ記憶部、フラグ記憶部、選択部、更新部、出力部として機能させる。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部から1つ以上のメモリブロックを選択する。
更新部は、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択部により選択されたメモリブロックに記憶させ、選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する。
出力部は、当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する。
本発明のプログラムを実行するコンピュータにはパラメータが予め記憶され、コンピュータは、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第1種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第1種の値は、第1種の値と異なる所定値である。コンピュータは、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。コンピュータは、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断を定期的に実行する。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【0020】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【0021】
本発明によれば、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止することができる。
【発明を実施するための最良の形態】
【0022】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【0023】
図1は、プログラムを実行することにより、本発明の記憶処理装置の機能を果たす典型的な情報処理装置100の概要構成を示す模式図である。以下、本図を参照して説明する。
【0024】
情報処理装置100は、CPU(Central Processing Unit)101と、ROM(Read Only Memory)102と、RAM(Random Access Memory)103と、インターフェース104と、コントローラ105と、外部メモリ106と、DVD−ROM(Digital Versatile Disk - Read Only Memory)ドライブ107と、画像処理部108と、音声処理部109と、NIC(Network Interface Card)110と、を備える。
【0025】
ゲーム用のプログラムおよびデータを記憶したDVD−ROMをDVD−ROMドライブ107に装着して、情報処理装置100の電源を投入することにより、当該プログラムが実行され、本実施形態の記憶処理装置が実現される。
【0026】
CPU 101は、情報処理装置100全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、CPU 101は、レジスタ(図示せず)という高速アクセスが可能な記憶域に対してALU(Arithmetic Logic Unit)(図示せず)を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、CPU 101自身が構成されているものや、コプロセッサを備えて実現するものがある。
【0027】
ROM 102には、電源投入直後に実行されるIPL(Initial Program Loader)が記録され、これが実行されることにより、DVD−ROMに記録されたプログラムをRAM 103に読み出してCPU 101による実行が開始される。また、ROM 102には、情報処理装置100全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【0028】
RAM 103は、データやプログラムを一時的に記憶するためのもので、DVD−ROMから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、CPU 101は、RAM 103に変数領域を設け、当該変数に格納された値に対して直接ALUを作用させて演算を行ったり、RAM 103に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【0029】
インターフェース104を介して接続されたコントローラ105は、ユーザがダンスゲームやサッカーゲームなどのゲームの実行の際に行う操作入力を受け付ける。
【0030】
インターフェース104を介して着脱自在に接続された外部メモリ106には、ゲームのプレイ状況(過去の成績等)を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いたゲームのチャット通信のログ(記録)のデータなどが書き換え可能に記憶される。ユーザは、コントローラ105を介して指示入力を行うことにより、これらのデータを適宜外部メモリ106に記録することができる。
【0031】
DVD−ROMドライブ107に装着されるDVD−ROMには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。CPU 101の制御によって、DVD−ROMドライブ107は、これに装着されたDVD−ROMに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはRAM 103等に一時的に記憶される。
【0032】
画像処理部108は、DVD−ROMから読み出されたデータをCPU 101や画像処理部108が備える画像演算プロセッサ(図示せず)によって加工処理した後、これを画像処理部108が備えるフレームメモリ(図示せず)に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部108に接続されるモニター(図示せず)へ出力される。これにより、各種の画像表示が可能となる。
【0033】
画像演算プロセッサは、2次元の画像の重ね合わせ演算やアルファブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【0034】
また、仮想3次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Zバッファ法によりレンダリングして、所定の視点位置から仮想3次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【0035】
さらに、CPU 101と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を2次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【0036】
また、ゲームの画像などの情報をDVD−ROMに用意しておき、これをフレームメモリに展開することによって、ゲームの様子などを画面に表示することができるようになる。
【0037】
音声処理部109は、DVD−ROMから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ(図示せず)から出力させる。また、CPU 101の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【0038】
音声処理部109では、DVD−ROMに記録された音声データがMIDIデータである場合には、これが有する音源データを参照して、MIDIデータをPCMデータに変換する。また、ADPCM(Adaptive Differential Pulse Code Modulation)形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してPCMデータに変換する。PCMデータは、そのサンプリング周波数に応じたタイミングでD/A(Digital/Analog)変換を行って、スピーカに出力することにより、音声出力が可能となる。
【0039】
NIC 110は、情報処理装置100をインターネット等のコンピュータ通信網(図示せず)に接続するためのものであり、LAN(Local Area Network)を構成する際に用いられる10BASE−T/100BASE−T規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ISDN(Integrated Services Digital Network)モデム、ADSL(Asymmetric Digital Subscriber Line)モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとCPU 101との仲立ちを行うインターフェース(図示せず)により構成される。
【0040】
このほか、情報処理装置100は、ハードディスク等の大容量外部記憶装置を用いて、ROM 102、RAM 103、外部メモリ106、DVD−ROMドライブ107に装着されるDVD−ROM等と同じ機能を果たすように構成してもよい。
【0041】
次に、本実施形態の記憶処理装置200の機能的な構成について説明する。図2に示すように、記憶処理装置200は、データ記憶部201、フラグ記憶部202、選択部203、更新部204を備える。
【0042】
データ記憶部201は、データを記憶する領域として、複数のメモリブロックを有する。例えば、データ記憶部201は、各メモリブロックに、1つ又は複数のパラメータから構成されるパラメータ群を記憶する。メモリブロックは、データ記憶部201に予め定義された全メモリ空間の中において、1つのアドレスが対応付けられたメモリセルが1つ以上存在するメモリ空間である。RAM 103がデータ記憶部201として機能する。RAM 103の代わりに、ハードディスクなどの磁気ディスク装置、フラッシュメモリカード等を用いてもよい。
【0043】
ここで、多重化して記憶するとは、例えば図3に示すように、2つ以上のメモリブロック(本図ではMX,MYの2つ)に、同一のパラメータ群G1を記憶することである。本図では、データ記憶部201は、同じデータ容量の2つのメモリブロック群GX,GYを有する。それぞれのメモリブロック群はN個(Nは1以上の整数)のメモリブロックを有する。つまりデータ記憶部201は合計2N個のメモリブロックを有する。パラメータ群G1はメモリブロック群GXに属するメモリブロックMXに記憶され、同じ内容がメモリブロック群GYに属するメモリブロックMY(≠MX)にも記憶される。つまり、メモリブロックMX,MYは互いにミラー化されている。メモリブロック群GXには、多重化されるパラメータ群の「本データ」が記憶される。メモリブロック群GYには、本データが記憶された多重化対象のメモリブロック(以下、「多重化元のメモリブロック」と呼ぶ)のみメモリブロック群GXと一致する「複製データ」が記憶される。
【0044】
なお、本実施形態では、メモリブロック群GX,GYは共に同じデータ容量であるとしているが、パラメータ群を記憶するために最低限必要なデータ容量以上であれば、必ずしも同じでなくてもよい。また、各メモリブロックのデータ容量も、パラメータ群を記憶するために最低限必要なデータ容量以上であれば、必ずしも同じでなくてもよい。
【0045】
フラグ記憶部202は、データ記憶部201が有する各メモリブロックと対応付けて、パラメータ群を多重化して記憶するか否かを示すフラグ(以下、「多重化フラグ」と呼ぶ)を記憶する。後述する更新部204は、フラグ記憶部202に、多重化フラグの値として第1種の値又は第2種の値を記憶させる。RAM 103がフラグ記憶部202として機能する。
【0046】
より詳細には、フラグ記憶部202は、パラメータ群を多重化して記憶するメモリブロックに対応する多重化フラグの値として、第1種の値を記憶する。第1種の値とは、典型的には、多重化元のメモリブロックを多重化するために用いる他のメモリブロック(以下、「多重化先のメモリブロック」と呼ぶ)の物理アドレスである。例えば図3において、多重化元のメモリブロックMXに対応する多重化フラグFXには、多重化先のメモリブロックMYの物理アドレスが記憶される。同様に、多重化元のメモリブロックMX+1に対応する多重化フラグFX+1には、多重化先のメモリブロックMY+1の物理アドレスが記憶される。
【0047】
連続した物理アドレスが付与された複数のメモリセルがメモリブロックに含まれる場合には、フラグ記憶部202は、複数のメモリセルのうち先頭のメモリセルの物理アドレスを記憶する。例えば、メモリブロックMXに、物理アドレスADSTART〜ADENDまでの連続したアドレス空間が割り当てられている場合、多重化フラグFXには物理アドレスADSTARTが記憶される。
【0048】
また、フラグ記憶部202は、パラメータ群を多重化しないメモリブロックに対応する多重化フラグの値として、第2種の値を記憶する。第2種の値とは、典型的には、メモリブロック群GY内のいずれの物理アドレスとも一致しない所定値(例えば“0”や“−1”等)である。例えば図3において、多重化対象でないメモリブロックMX+2に対応する多重化フラグFX+2にはこの所定値が記憶される。
【0049】
選択部203は、データ記憶部201の各メモリブロックのうちいずれかのメモリブロックを選択する。本実施形態では、選択部203は、全てのメモリブロックのうちの一部のメモリブロックを選択する。選択部203によって選択されたメモリブロックが、多重化元のメモリブロックとなる。なお、選択部203は、全てのメモリブロックを選択することもできるが、この場合には全てのメモリブロックが多重化されることになる。CPU 101とRAM 103が協働して選択部203として機能する。
【0050】
選択部203がどのメモリブロックを選択するかについては、幾つかの手法がある。
例えば、選択部203は、所定の時間間隔で、いずれかのメモリブロックをランダムに選択する。選択部203は、全てのメモリブロックの中からランダムに1つを選択することとしてもよいし、複数個選択することとしてもよい。
【0051】
例えば、選択部203は、所定の時間間隔で、予め決められた順番にメモリブロックを選択する。予め決められた順番が一巡すれば、選択部203は1番目から選択し直す。すなわちサイクリックに選択する。予め決められた順番は、例えば、物理アドレスの小さい順、大きい順、などである。
【0052】
更新部204は、選択部203によって選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させる。つまり、選択部203によって選択されたメモリブロックに記憶されたパラメータ群を多重化して記憶させる。例えば、選択部203によってメモリブロックMXが選択されると、更新部204は、メモリブロック群GXに属するメモリブロックMXに対応する、メモリブロック群GYに属するメモリブロックMYに、メモリブロックMXと同じ内容を記憶させる。
【0053】
更に、更新部204は、選択部203によって選択されたメモリブロックに対応する多重化フラグを、パラメータ群を多重化して記憶することを示す上述の第1種の値に更新する。また、更新部204は、それ以外のメモリブロック(選択部203によって選択されなかったメモリブロック)に対応する多重化フラグを、上述の第2種の値に更新する。CPU 101とRAM 103が協働して選択部203として機能する。
【0054】
例えば、第2種の値は、上述のようにいずれの物理アドレスとも一致しない所定値である。
【0055】
例えば、更新部204は、メモリブロック群GXの先頭のメモリブロックから、選択部203によって選択されたメモリブロックまで、に含まれるメモリセルに記憶されたデータのチェックサム(合計値)を計算して、第2種の値としてもよい。
【0056】
例えば、更新部204は、メモリブロック群GXの先頭のメモリブロックから、選択部203によって選択されたメモリブロックまで、に含まれるメモリセルに記憶されたデータから、所定のハッシュ関数を用いてハッシュ値を計算して、第2種の値としてもよい。
【0057】
取得要求受付部205は、データ記憶部201に記憶されたパラメータを取得する要求を受け付ける。CPU 101が取得要求受付部205として機能する。例えば、CPU 101は、DVD−ROMドライブ107に装着されたDVD−ROMからゲームのプログラムを読み出して実行し、ゲームの実行中の任意のタイミングで、ゲーム用のパラメータをデータ記憶部201から読み出す(取得する)要求を受け付ける。
【0058】
出力部206は、取得要求受付部205が受け付けた要求が示すパラメータが記憶されたメモリブロックMREQに対応する多重化フラグFREQが第1種の値であるか否かを判別する。更に、出力部206は、メモリブロックMREQに記憶されたパラメータ群と、多重化先のメモリブロックに記憶されたパラメータ群とが一致するか否かを判別する。そして、出力部206は、それぞれの判別結果の組み合わせに応じて、以下のケースに示すように成功応答又は失敗応答を出力する。ただし、図3に示すように、メモリブロックMXがメモリブロックMYに多重化されているものとする。Xは、0以上N−1以下の整数とする。Yは、N以上2N−1以下の整数とする。対応する多重化フラグFXに格納する値としてメモリブロックの物理アドレスを用いると、次の数式[数1]が成り立つ。
【0059】
FX = Y ・・・[数1]
【0060】
(ケース1)メモリブロックMREQに対応する多重化フラグFREQが第1種の値であって、メモリブロックMREQに記憶されたパラメータ群と、その多重化先のメモリブロックMY(ただし、Y=FREQ)に記憶されたパラメータ群とが一致する場合、出力部206は、メモリブロックMREQに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックMREQに対応する多重化フラグFREQが第1種の値であるということは、要求されたメモリブロックMREQが、多重化元のメモリブロックMXに該当することを意味する。
【0061】
(ケース2)メモリブロックMREQに対応する多重化フラグFREQが第1種の値であって、メモリブロックMREQに記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致しない場合、出力部206は、失敗応答を出力する。
【0062】
(ケース3)メモリブロックMREQに対応する多重化フラグFREQが第2種の値である場合、出力部206は、メモリブロックMREQに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックMREQに対応する多重化フラグFREQが第2種の値であるということは、要求されたメモリブロックMREQが、多重化元のメモリブロックMXではないことを意味する。
【0063】
成功応答は、例えば、取得要求受付部205が受け付けた要求が示す、データ記憶部201に記憶されたパラメータそのものである。すなわち、上記ケース1又はケース3の場合、出力部206は、データ記憶部201には正しいパラメータ群が記憶されているものと判断し、データ記憶部201に記憶されたパラメータを読み出して出力する。
【0064】
失敗応答は、所定のエラーコードである。すなわち、上記ケース2又はケース4の場合、出力部206は、データ記憶部201には正しいパラメータ群が記憶されていない(不正にデータが書き換えられた可能性がある)ものと判断し、エラーコードを出力する。
【0065】
(更新処理)
次に、上述の各部が実行する更新処理について、図4のフローチャートを用いて説明する。この更新処理は、上述したように例えば所定時間毎に行われる。
【0066】
まず、選択部203は、データ記憶部201が有するメモリブロックの中から、いずれかのメモリブロックを選択する(ステップS401)。選択部203は、選択したメモリブロックを指定する情報を更新部204に通知する。
【0067】
次に、更新部204は、選択されたメモリブロックに対応する、多重化先のメモリブロックを特定する(ステップS402)。例えば図3において、更新部204は、選択部203によってメモリブロックMXが選択されると、対応するメモリブロックMYを多重化先のメモリブロックとして特定する。
【0068】
そして、更新部204は、選択されたメモリブロックを多重化する(ステップS403)。すなわち、更新部204は、ステップS401で選択されたメモリブロックに記憶されたパラメータ群を読み出して、ステップS402で特定された多重化先のメモリブロックに同じ内容を書き込む。選択されたメモリブロックMXに記憶された内容と、特定されたメモリブロックMYに記憶された内容は、同一となる。
【0069】
更に、更新部204は、選択されたメモリブロック(多重化したメモリブロック)に対応する多重化フラグを上述の第1種の値に更新し、選択されなかったメモリブロック(多重化しなかったメモリブロック)に対応する多重化フラグを上述の第2種の値に更新する(ステップS404)。
【0070】
この更新処理により、データ記憶部201に記憶されたパラメータ群が多重化して記憶されることとなる。
【0071】
(出力処理)
次に、上述の各部が実行する出力処理について、図5のフローチャートを用いて説明する。この出力処理では、記憶処理装置200は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付けると、所定の条件を満たした場合に、要求されたパラメータを出力する。以下詳述する。
【0072】
まず、取得要求受付部205は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付ける(ステップS501)。
【0073】
選択部203は、取得要求受付部205が受け付けた要求が示すパラメータが記憶されたメモリブロックMREQに対応する多重化フラグFREQが第1種の値か否かを判別する(ステップS502)。すなわち、メモリブロックMREQが多重化元のメモリブロックか否かを判別する。
【0074】
多重化フラグが第1種の値でない場合(ステップS502;NO)、更新部204は、要求されたパラメータが記憶されたメモリブロックからパラメータ群を読み出し(ステップS503)、成功応答を出力する(ステップS504)。成功応答は、例えば、ステップS503で読み出したパラメータ群に含まれる、ステップS501で受け付けた要求が示すパラメータそのものである。
【0075】
多重化フラグが第1種の値である場合(ステップS502;YES)、更新部204は、要求されたメモリブロックMREQと多重化先のメモリブロックとから、それぞれパラメータ群を読み出す(ステップS505)。
【0076】
更新部204は、要求されたメモリブロックMREQから読み出したパラメータ群と、多重化先のメモリブロックから読み出したパラメータ群とを比較し、一致するか否かを判別する(ステップS506)。
【0077】
一致すると判別された場合(ステップS506;YES)、出力部206は、成功応答を出力する(ステップS504)。例えば、出力部206は、ステップS505で読み出したパラメータ群に含まれる、ステップS501で受け付けた要求が示すパラメータを出力する。
【0078】
一致しないと判別された場合(ステップS506;NO)、出力部206は、失敗応答を出力して(ステップS507)、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部206は、要求されたパラメータを出力しない。
【0079】
本実施形態によれば、記憶処理装置200は、多重化元のメモリブロックMXに記憶された内容と、多重化先のメモリブロックMYに記憶された内容とが一致した場合のみ、要求されたパラメータを出力し、一致しなければ出力しない。例えば、更新処理によってデータ記憶部201が更新された後、上述の更新処理以外の手続きによってパラメータが更新されると、不正に書き換えられたと判断してエラーを出力する。したがって、データを勝手に書き換える不正改造・不正行為(いわゆる“チート”)を防ぐことができる。また、メモリブロックのハードウェア的な障害によってデータが改変してしまった場合にも、改変されたデータをそのまま読み出して使用してしまうような不具合を抑止することができる。
【0080】
(実施形態2)
次に、本発明のその他の実施形態について説明する。上述の実施形態では、取得要求受付部205が受け付けた要求が示すパラメータが記憶されたメモリブロックMREQに対応する多重化フラグFREQが第2種の値である場合(すなわち上述のケース3)、成功応答を出力している。つまり、第2種の値の場合には、多重化が正常に行われているか否かをチェックしていない。本実施形態は、ケース3においても、多重化元のメモリブロックMXに記憶されたデータ内容と、多重化先のメモリブロックMYに記憶されたデータ内容と、が一致するか否かを判別する点で、上述の実施形態と異なる。以下詳述する。
【0081】
本実施形態では、上述のケース3の代わりに、次のケース3’とケース3’’を考慮する。
【0082】
(ケース3’)メモリブロックMREQに対応する多重化フラグが第2種の値であって、多重化元のメモリブロックMXに記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致する場合、出力部206は、メモリブロックMREQに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックMREQに対応する多重化フラグが第2種の値であるということは、要求されたメモリブロックMREQが、多重化元のメモリブロックMXではないことを意味する。
【0083】
(ケース3’’)メモリブロックMREQに対応する多重化フラグが第2種の値であって、多重化元のメモリブロックMXに記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致しない場合、出力部206は、失敗応答を出力する。
【0084】
すなわち、出力部206は、要求されたメモリブロックMREQが多重化されていれば、メモリブロックMREQが正しく多重化されているか否かのチェック結果に応じて、成功応答又は失敗応答を出力する。また、要求されたメモリブロックMREQが多重化されていなければ、現在多重化されているすべてのメモリブロックの一部又は全部が正しく多重化されているか否かのチェック結果に応じて、成功応答又は失敗応答を出力する。
【0085】
(出力処理)
図6は、本実施形態の各部が実行する出力処理を説明するためのフローチャートである。
【0086】
まず、取得要求受付部205は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付ける(ステップS601)。要求されるパラメータが格納されるメモリブロックは、多重化されている(つまり多重化フラグに第1種の値が設定されている)場合もあれば、多重化されていない(つまり多重化フラグに第2種の値が設定されている)場合もある。
【0087】
選択部203は、フラグ記憶部202に記憶された多重化フラグを参照して、多重化フラグに第1種の値がセットされたメモリブロックを選択する(ステップS602)。すなわち、選択部203は、ステップS601で要求されたパラメータを格納したメモリブロックが多重化されている場合、要求されたパラメータを格納したメモリブロックを含む、現在多重化されているメモリブロックMXの一部又は全部を選択する。また、選択部203は、ステップS601で要求されたパラメータを格納したメモリブロックが多重化されていない場合、現在多重化されているメモリブロックMXの一部又は全部を選択する。例えば第1種の値には全アドレス空間(ADSTARTからADENDまで)のいずれかの物理アドレスが設定されるので、選択部203は、多重化フラグに物理アドレスが設定されているメモリブロックを選択する。そして、選択部203は、選択したメモリブロックを更新部204に通知する。なお、選択部203は、多重化フラグが第2種の値でないメモリブロックの一部又は全部を選択してもよい。
【0088】
更新部204は、選択部203によって選択されたメモリブロックMXと、選択されたメモリブロックMXの多重化先のメモリブロックMYとから、それぞれパラメータ群を読み出す(ステップS603)。選択部203によって複数のメモリブロックが選択された場合、更新部204は、選択されたそれぞれのメモリブロックからパラメータ群を読み出し、また、多重化先のそれぞれのメモリブロックからパラメータ群を読み出す。
【0089】
更新部204は、選択されたメモリブロックMXから読み出したパラメータ群と、多重化先のメモリブロックMYから読み出したパラメータ群とを比較し、一致するか否かを判別する(ステップS604)。すなわち、更新部204は多重化の正当性をチェックする。選択部203によって複数のメモリブロックが選択された場合、更新部204は、選択されたそれぞれのメモリブロックについて、多重化の正当性をチェックする。そして、チェック対象のメモリブロック(つまり選択部203によって選択されたメモリブロック)のすべてについて、正常に多重化されている場合、“一致する”と判別する。チェック対象のメモリブロックのいずれか1つでも正常に多重化されていない場合、“一致しない”と判別する。
【0090】
一致しないと判別された場合(ステップS604;NO)、出力部206は失敗応答を出力して(ステップS605)、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部206は、要求されたパラメータを出力しない。
【0091】
一方、一致すると判別された場合(ステップS604;YES)、出力部206は、ステップS601で要求されたパラメータが記憶されたメモリブロックMREQからパラメータ群を読み出す(ステップS606)。
【0092】
そして、出力部206は、読み出したパラメータ群の中から、要求されたパラメータを取りだして出力する(ステップS607)。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と同じ場合、出力部206は、要求されたパラメータを出力する。
【0093】
本実施形態によれば、記憶処理装置200は、読み出しが要求されたパラメータを格納するメモリブロックが多重化対象である場合だけでなく、多重化対象でない場合にも、多重化元と多重化先の各メモリブロックに記憶された内容が一致するか否かを判別するので、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が増す。
【0094】
なお、選択部203は、ステップS602において、多重化されているすべてのメモリブロックを選択する代わりに、多重化されているメモリブロックのうち予め決められた個数だけ選択してもよい。例えば、選択部203は、多重化されているメモリブロックの中から所定個数だけランダムに選んだメモリブロックをステップS602で選択してもよい。
【0095】
(実施形態3)
次に、本発明のその他の実施形態について説明する。上述のケース3’とケース3’’では、要求されたパラメータを格納しているメモリブロックMREQに対応する多重化フラグFREQが第2種の値の場合、多重化元のメモリブロックMX(X≠REQ)に記憶されたパラメータ群と、その多重化先のメモリブロックMYに記憶されたパラメータ群とが一致するか否かを判別している。ここで、多重化対象のメモリブロックの数は1つだけとは限らないため、多重化対象のメモリブロックがC個存在するとすれば、C個のそれぞれについて多重化の正当性を判断することになる。本実施形態は、多重化の正当性を判断するためのメモリブロックMXの選択方法を変えた実施形態である。以下詳述する。
【0096】
選択部203は、上述のステップS602において、フラグ記憶部202に記憶された多重化フラグを参照し、要求されたパラメータを格納しているメモリブロックMREQより後方の物理アドレスを有するメモリブロックであって、多重化フラグに第1種の値がセットされたメモリブロックを1つ選択する。
【0097】
図7に示すように、データ記憶部201は、N個のメモリブロックをから構成されるメモリブロック群GXと、N個のメモリブロックから構成されるメモリブロック群GYとを有する。各メモリブロックには、0,1,…,N−1,N,…,2N−1、というように連続した物理アドレスが付与されている。上述の「メモリブロックMREQより後方」とは、物理アドレスがMREQ+1からMN−1までのメモリブロックのことである。
【0098】
選択部203は、物理アドレスがMREQからMN−1までのメモリブロックであって、多重化フラグに第1種の値、すなわち多重化されていることを示す値がセットされているメモリブロックを1つ選択する。例えば、選択部203は、参照先の物理アドレスの初期値をMREQとし(i=0)、順々にインクリメントし(i++)、多重化フラグに第1種の値がセットされているとして最初にヒットしたメモリブロックを選択する。
【0099】
もし、MREQからMN−1までに、多重化フラグが第1種の値であるメモリブロックがない場合、先頭のメモリブロックM0に戻り、同様にMREQ−1まで多重化フラグをチェックする。つまり、チェック対象の物理アドレスをサイクリックに変化させる。そして、選択部203は、多重化フラグが第1種の値である最初のメモリブロックを選択する。この場合には、M0からMREQ−1までも含めて「後方」ということになるが、このときの「後方」とは、「循環させる向き」と解釈すればよい。
【0100】
言い換えれば、チェック対象の物理アドレスjは、[数2]で表される循環的順序となる。
【0101】
j = (REQ+i)%N ・・・[数2]
ただし、i=0,1,2,…,N−1とする。
【0102】
なお、図6のその他のステップについては同じであるため、説明を省略する。
【0103】
本実施形態では、選択部203は、メモリブロックを1つだけ選択しているが、例えば最初にヒットしたメモリブロックと2番目にヒットしたメモリブロックの2つというように、所定の個数を選択するようにしてもよい。また、選択部203は、Ca番目にヒットしたメモリブロックとCb番目にヒットしたメモリブロックの2つを選択することとし、出力処理を行うたびにCaとCbをランダムに変化させるようにしてもよい。勿論、2つでなく3つ以上のメモリブロックを選択してもよい。
【0104】
本実施形態によれば、複数の多重化対象のメモリブロックがある場合には、それらのすべてのメモリブロックについて多重化の正当性をチェックする必要はないので、CPU 101等の処理負担が軽減される。また、記憶された内容が一致するか否かを判別する対象となるメモリブロックが、要求されたパラメータ(が記憶されたメモリブロック)によって変化するので、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が増す。
【0105】
(実施形態4)
次に、本発明のその他の実施形態について説明する。本実施形態は、選択部203が多重化対象のメモリブロックを選択する処理の他の実施形態である。
【0106】
図8は、本実施形態の記憶処理装置200の機能的な構成を示す図である。記憶処理装置200は、識別情報記憶部207を更に備える。
【0107】
識別情報記憶部207は、選択部203によって選択された多重化元のメモリブロックMXを識別するための情報を記憶する。典型的には、識別情報記憶部207は、多重化元のメモリブロックMXの物理アドレスを記憶する。RAM 103が識別情報記憶部207として機能する。
【0108】
更新部204は、上述の更新処理のステップS401で選択部203が多重化元のメモリブロックMXを選択した後、選択されたメモリブロックMXの物理アドレスを識別情報記憶部207に格納する。
【0109】
選択部203は、ステップS401において識別情報記憶部207に既に識別情報が格納されている場合、すなわち、上述の更新処理が2回目以降に行われる場合、識別情報記憶部207に格納されている識別情報が示すメモリブロック以外のメモリブロックを選択する。言い換えれば、選択部203は、前回の更新処理で選択したメモリブロックと異なるメモリブロックを選択する。
【0110】
なお、識別情報は物理アドレスでなくてもよく、論理アドレス、セクタ番号、ブロック番号など、それぞれのメモリブロックを識別可能な情報であればよい。
【0111】
本実施形態によれば、記憶処理装置200は、データを多重化して記憶する際、前回多重化したメモリブロックと異なるメモリブロックを選択するので、同じメモリブロックが続けて選択されてしまうような偏りを減らすことができ、データを勝手に書き換える不正行為等を防ぐことができる効果が増す。
【0112】
(実施形態5)
次に、本発明のその他の実施形態について説明する。本実施形態は、上述の更新処理を開始するタイミングを変えた実施形態である。
【0113】
図9は、本実施形態の記憶処理装置200の機能的な構成を示す図である。記憶処理装置200は、更新要求受付部208を更に備える。
【0114】
更新要求受付部208は、データ記憶部201に記憶されたパラメータを更新する要求を受け付ける。CPU 101が取得要求受付部205として機能する。例えば、CPU 101は、DVD−ROMドライブ107に装着されたDVD−ROMからゲームのプログラムを読み出して実行し、ゲームの実行中の任意のタイミングで、データ記憶部201に記憶されたゲーム用のパラメータを更新する要求を受け付ける。更新とは、典型的にはパラメータ値の書き換え(変更)であるが、パラメータの削除、パラメータの追加、などでもよい。
【0115】
更新部204は、更新要求受付部208が受け付けた更新要求が示すパラメータが記憶されたメモリブロックを更新する。例えば、あるパラメータP1に値Vaが記憶されているとき、値Vaを値Vbに書き換える更新要求があると、更新部204は、この更新要求が示すパラメータP1が記憶されたメモリブロックM1を読み出し、読み出したメモリブロックM1に含まれるパラメータP1を値Vaから値Vbに変更し、再びメモリブロックM1に書き込む。
【0116】
選択部203は、更新要求受付部208が更新要求を受け付けた場合に、多重化対象のメモリブロックとして、データ記憶部201が有するいずれかのメモリブロックを選択する。
【0117】
選択部203によって多重化対象のメモリブロックが選択されると、更新部204は、上述の更新処理を開始する。すなわち、更新部204は、更新要求受付部208がパラメータを更新する要求を受け付けると、多重化対象のメモリブロックを選択して、多重化し直す。
【0118】
図10は、本実施形態の更新処理を説明するためのフローチャートである。
【0119】
まず、更新要求受付部208は、パラメータを更新する要求があったか否かを判別する(ステップS1001)。
【0120】
更新要求がない場合(ステップS1001;NO)、ステップS1001に戻り、更新要求があるまで待機する。
【0121】
一方、更新要求があった場合(ステップS1001;YES)、更新部204は、現在多重化対象となっているメモリブロックMXと、その多重化先のメモリブロックMYから、パラメータ群を読み出す(ステップS1002)。
【0122】
そして、更新部204は、ステップS1002で読み出した2つのパラメータ群の内容が一致するか否かを判別する(ステップS1003)。
【0123】
一致しないと判別された場合(ステップS1003;NO)、出力部206は失敗応答を出力して(ステップS1004)、更新処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理又は本実施形態の更新処理によって更新された内容と異なる場合、更新部204は、要求されたパラメータを更新しない。
【0124】
一方、一致すると判別された場合(ステップS1003;YES)、更新部204は、更新対象のパラメータが記憶されているメモリブロックを特定する(ステップS1005)。
【0125】
そして、更新部204は、更新要求があったパラメータを更新する(ステップS1006)。
【0126】
本実施形態によれば、記憶処理装置200は、多重化元のメモリブロックMXに記憶された内容と、多重化先のメモリブロックMYに記憶された内容とが一致した場合のみ、要求されたパラメータを更新し、一致しなければ更新しない。例えば、上述の実施形態又は本実施形態の更新処理によって(つまり正式な手続きによって)データ記憶部201が更新された後、不正に書き換えられたと判断すると、エラーを出力してパラメータを更新しない。したがって、データを読み出すタイミングだけでなく、更新するタイミングにも、不正行為を防ぐことができる。
【0127】
(実施形態6)
次に、本発明のその他の実施形態について説明する。上述の実施形態では、データ記憶部201は、図3に示すように同じメモリ容量のメモリブロック群GX,GYを有している。一方、本実施形態は、1つのメモリブロック群のみを有する点で、上述の実施形態と異なる。
【0128】
図11は、本実施形態のデータ記憶部201とフラグ記憶部202の構成を示す図である。データ記憶部201は、L個(Lは2以上の整数)のメモリブロックを有する。それぞれのメモリブロックにパラメータ群が記憶される点は同じである。
【0129】
フラグ記憶部202の多重化フラグには、上述の実施形態と同様に、第1種の値又は第2種の値が格納される。更新部204は、多重化元のメモリブロックMXに対応する多重化フラグFXに、第1種の値として、多重化先のメモリブロックMYの物理アドレスを格納する。また、更新部204は、多重化対象でないメモリブロック(ただし多重化先のメモリブロックMYを除く)に対応する多重化フラグに、上述のチェックサムやハッシュ値を格納する。
【0130】
選択部203は、多重化先のメモリブロックMYとして、パラメータ群が記憶されていない未使用のメモリブロックを選択する。
【0131】
更新部204は、更新要求受付部208がパラメータを削除する要求を受け付けると、データ記憶部201に記憶されたパラメータを削除する。1つのメモリブロックに記憶されたパラメータ群に含まれる全てのパラメータを削除する要求があると、更新部204は、要求されたパラメータ群を消去し、パラメータ群が記憶されていないことを示す所定値FBLANKを多重化フラグにセットする。つまり、多重化フラグに所定値FBLANKが対応付けられたメモリブロックは、未使用のメモリブロックとなる。
【0132】
未使用のメモリブロックは、パラメータ群を追加する要求があったときに優先的に使用される。また、選択部203は、多重化先のメモリブロックMYとして、未使用のメモリブロックを選択する。更新部204は、上述の更新処理を行って多重化した後、前回の多重化先のメモリブロックに対応する多重化フラグを所定値FBLANKに更新し(すなわち未使用とし)、今回多重化先として選択されたメモリブロックに対応する多重化フラグに第1種の値をセットする。こうすることで、多重化に使用されるメモリブロックが入れ替わる。
【0133】
更新部204は、多重化先のメモリブロックMYに対応する多重化フラグFYに、第1種の値として、多重化元のメモリブロックMXの物理アドレスを記憶する。つまり、メモリブロックMX,MYは、上述の出力処理において同等に扱われ、どちらが本データでどちらが複製データであるかという点で違いはない。
【0134】
ただし、更新部204は、多重化フラグFYに、多重化対象でないメモリブロックと同様に、上述のチェックサムやハッシュ値を格納することとしてもよい。この場合には、多重化元のメモリブロックMXに本データが、多重化先のメモリブロックMYに複製データが、それぞれ記憶されることになる。
【0135】
また、更新部204は、多重化フラグFYに、多重化先のメモリブロックであることを示す所定値FC1を格納してもよい。ただし、この場合、この所定値FC1は、物理アドレスADSTART〜ADENDのいずれにも一致しない値とする。さらに、多重化対象でないメモリブロックに対応する多重化フラグには、上述のチェックサムやハッシュ値ではなく、FC1と異なる他の所定値FC2を格納するのがよい。
【0136】
本実施形態によれば、記憶処理装置200は、データを多重化して記憶する際、本データを記憶する第1のメモリ領域と、複製データを記憶する第2のメモリ領域と、を明確に区別する必要がないので、メモリ管理が簡略化される。また、上述の実施形態では第1のメモリ領域と同じサイズの第2のメモリ領域を必要とし、CPU 101が自由に利用可能なサイズが実質的に半分になっていたが、本実施形態によれば、利用可能なメモリ領域をより多く確保することができるようになる。
【0137】
なお、本実施形態は、上述の各実施形態と容易に組み合わせて構成することができる。例えば、ステップS1001において、更新要求があったか否かを判別するのに加えて、取得要求(読み出す要求)があったか否かを判別してもよい。このようにすれば、記憶処理装置200は、パラメータの更新のタイミングだけでなく、読み出しのタイミングにおいても多重化を行うことができ、更に不正行為を防ぐことができる効果が増す。
【0138】
(実施形態7)
次に、本発明のその他の実施形態について説明する。上述の実施形態では、多重化フラグにメモリブロックの物理アドレスを格納している。本実施形態では、多重化フラグに物理アドレスでない他の所定の値を格納する。
【0139】
図12は、本実施形態のデータ記憶部201とフラグ記憶部202の構成例を示す図である。データ記憶部201は、それぞれN個のメモリブロックから構成される4つのメモリブロック群GA,GB,GC,GDを有する。フラグ記憶部202は、各々のメモリブロックに対応する多重化フラグを記憶する。なお、本図のようなメモリブロックの構成を、“N行4列”と呼ぶことにする。本実施形態では4列であるが、M列(Mは1以上の整数)とした“N行M列”の構成にすることができる。
【0140】
データ記憶部201は、1つ以上のパラメータを含むパラメータ群を、選択部203によって選択された各メモリブロックに記憶する。メモリブロックの選択の仕方(多重化パターン)には次に示すような様々なものがある。
【0141】
(パターン1)例えば、更新部204は、メモリブロック群GAのi番目(iは0以上N−1以下の整数)のメモリブロックMAiに格納されるパラメータ群を、他のメモリブロック群のメモリブロックMBi,MCi,MDiにも記憶させ、メモリブロックMAi,MBi,MCi,MDiに対応する多重化フラグに所定値FMULTIを記憶させる(すなわち多重化する)。本パターンでは、パラメータ群は四重化される。
【0142】
(パターン2)例えば、更新部204は、メモリブロック群GBのi+1番目のメモリブロックMBi+1に格納されるパラメータ群を、他のメモリブロック群のメモリブロックMCi+1にも記憶させ、メモリブロックMBi+1,MCi+1に対応する多重化フラグに所定値FMULTIを記憶させる。残りのメモリブロックMAi+1,MDi+1に対応する多重化フラグに他の所定値FBLANK(≠FMULTI)を記憶させる。メモリブロックMAi+1,MDi+1にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。本パターンでは、パラメータ群は二重化される。選択部203は、多重化対象のメモリブロック(この例ではMBi+1とMCi+1の2つ)として、4つのメモリブロック群のうちいずれのメモリブロック群の組み合わせで選択してもよい。
【0143】
(パターン3)例えば、更新部204は、メモリブロック群GAのi+2番目のメモリブロックMAi+2に格納されるパラメータ群を、他のメモリブロック群のメモリブロックMCi+2,MDi+2にも記憶させ、メモリブロックMAi+2,MCi+2,MDi+2に対応する多重化フラグに所定値FMULTIを記憶させる。残りのメモリブロックMBi+2に対応する多重化フラグに所定値FBLANKを記憶させる。メモリブロックMBi+2にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。本パターンでは、パラメータ群は三重化される。選択部203は、多重化対象のメモリブロック(この例ではMAi+2,MCi+2,MDi+2の3つ)として、4つのメモリブロック群のうちいずれのメモリブロック群の組み合わせで選択してもよい。
【0144】
(パターン4)例えば、更新部204は、メモリブロック群GDのi+3番目のメモリブロックMDi+3にパラメータ群を記憶させ、メモリブロックMDi+3に対応する多重化フラグに所定値FMULTIを記憶させる。この場合、i+3番目のパラメータ群は多重化されない。メモリブロックMAi+3,MBi+3,MCi+3にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。選択部203は、パラメータ群が記憶されるメモリブロック(この例ではMDi+3の1つ)として、4つのメモリブロック群のうちいずれのメモリブロック群を選択してもよい。
【0145】
選択部203は、上記のいずれのパターンでメモリブロックを選択してもよい。例えば、選択部203は、各行について上記のパターンの中からランダムに1つを選んで、多重化対象のメモリブロックを選択する。
【0146】
また、選択部203は、任意のタイミングで多重化対象のメモリブロックを選択し直してもよい。例えば、選択部203は、垂直同期回数やタイマー等を用いた所定の時間サイクルで選択し直す。
【0147】
したがって、多重化対象のメモリブロックを所定の時間毎に様々なパターンで入れ替えて多重化し直すことになり、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が更に増す。
【0148】
上述の多重化パターンは例示であり、選択部203は他の方法によりメモリブロックを選択してもよい。
【0149】
次に、本実施形態の更新処理について、図13のフローチャートを用いて説明する。データ記憶部201はN行M列のメモリブロックから構成され、選択部203はL種類の多重化パターンから選択する。言い換えれば、データ記憶部201には、N個のパラメータ群が格納される。N,M,Lはいずれも1以上の整数である。
【0150】
まず、選択部203は、現在、多重化する所定の更新タイミングか否かを判別する(ステップS1301)。選択部203は、例えば垂直同期信号(VSYNC)が所定回数に達したとき、更新タイミングであると判別する。所定の更新タイミングでないと判別された場合(ステップS1301;NO)、選択部203は所定の更新タイミングになるまで待機する。
【0151】
一方、所定の更新タイミングであると判別された場合(ステップS1301;YES)、選択部203は、カウンターiを初期化する(ステップS1302)。すなわちi=0とする。カウンターiは、0以上N−1以下の整数であり、以下に述べるステップS1303〜ステップS1305の処理はN回ループする。
【0152】
選択部203は、i行目のメモリブロックの多重化パターンとして、L種類の中から1つ選択する(ステップS1303)。例えば、選択部203は、L種類の中からランダムに1つ選択する。
【0153】
選択部203は、ステップS1303の選択結果に基づいて、多重化対象のメモリブロックを選択する(ステップS1304)。
【0154】
更新部204は、i行目のメモリブロックを多重化する(ステップS1305)。
【0155】
詳細には、i行目に格納されたパラメータ群を読み出してRAM103の所定領域や未使用領域に一時記憶して待避させる。そして、更新部204は、ステップS1304で選択したメモリブロックに、待避させておいたパラメータ群を格納する。つまり、更新部204は、選択部203が選択したメモリブロックにi行目のパラメータ群をコピーする。ステップS1304で選択しなかったメモリブロックにはダミーデータ等を格納してもよいし、既に格納されたデータを更新せずにそのままにしてもよい。
【0156】
さらに、更新部204は、i行目のパラメータ群を格納したメモリブロック(多重化対象のメモリブロック)に対応する多重化フラグに、多重化に用いられたことを示す値FMULTIを格納する。また、パラメータ群を格納しなかったメモリブロック(多重化対象でないメモリブロック)に対応する多重化フラグに、多重化に用いられなかったことを示す値FBLANKを格納する。このようにして更新部204はi行目のメモリブロックを多重化する。
【0157】
ここで、更新部204は、多重化対象ではないことを示す所定値FBLANKの代わりに、対応するメモリブロックに格納されているデータのハッシュ値やチェックサム値、あるいは乱数値等を多重化フラグに記憶させてもよい。
【0158】
また、更新部204は、各行のメモリブロックのうち選択部203が選択しなかったメモリブロック(言い換えれば、対応する多重化フラグに所定値FMULTIでない値が格納されたメモリブロック)に、選択部203が選択したメモリブロックのハッシュ値やチェックサム値、あるいは乱数値等を記憶させてもよい。
【0159】
また、更新部204は、各行のメモリブロックのうち選択部203が選択しなかったメモリブロックが複数個存在する場合、これらの選択しなかったメモリブロックのうちいずれか1つに記憶されたデータを、残りの選択しなかったメモリブロックにダミーデータ1310としてコピーしてもよい。
【0160】
例えば、多重化し直す前のメモリブロックに図14(a)のようにパラメータ群等が記憶されているとする。多重化に用いるメモリブロックとして選択部203が図14(b)に示すようにメモリブロックMB,MCを選択すると、メモリブロックMB,MCには待避したパラメータ群を記憶させ、残りのメモリブロックMA,MDには同一のダミーデータを記憶させる。ダミーデータには、例えば多重化し直す前にメモリブロックMA,MDのどちらかに記憶されていたデータを用いる。この場合、一見しただけではダミーデータ1310があたかも「正規に多重化されたパラメータ群」であるかのように見え、多重化フラグを解読しない限り、どのメモリブロックがパラメータ群を記憶したメモリブロックなのか分からなくなるので、チート行為への抑止力としての効果が大きくなる。
【0161】
また、更新部204は、各行のメモリブロックのうち選択部203が選択しなかったメモリブロックに、選択したメモリブロックの前後のアドレスが付与されたメモリブロックであって多重化フラグに所定値FMULTIでない値が記憶されたメモリブロックと同じデータを記憶させてもよい。前後のアドレスとは、典型的には隣り合う前後のアドレスであるが、所定量ADWIDTH以下だけ離れたアドレス(例えばADWIDTHだけ前のアドレス、ADWIDTHだけ後のアドレスなど)でもよい。
【0162】
例えば、多重化し直す前のメモリブロックに図14(c)のようにパラメータ群等が記憶されているとする。多重化に用いるメモリブロックとして選択部203が図14(d)に示すようにメモリブロックMBi,MCiを選択すると、更新部204は、メモリブロックMB,MCには、待避したパラメータ群を記憶させる。また、残りのメモリブロックMAi,MDiには、アドレスが前後に隣り合っていて且つ多重化フラグがFMULTIでないメモリブロックのうち、いずれかと同じデータを記憶させる。本図では、更新部204は、アドレスがMDi−1,MAi+1,MBi+1の3つのうちのいずれか1つのメモリブロックからデータを読み出すこととなるが、MDi−1を採用している。例えば更新部204は、これらの3つの中からランダムに1つを採用すればよい。
【0163】
なお、更新部204が採用するメモリブロックは、選択部203が選択したメモリブロックのアドレスの近くであることが望ましい。ハードディスクなどの磁気ディスク装置の場合、同じ磁気ディスクの同じトラック内のアドレスを選択部203が選択してデータを読み出すことにすれば、データのコピーのために磁気ヘッドを移動する処理に要する時間(シーク・タイム)を減らすことができ、より効率よく多重化できる。また、同じセクタ内のアドレスを選択部203が選択してデータを読み出すことにすれば、ハードディスクのバッファーメモリの書き換え頻度を減らすことができ、より効率良く多重化できる。
【0164】
次に、選択部203は、カウンターiがN−1か否かを判別する(ステップS1306)。すなわち、選択部203は、N行のすべてについて多重化したか否かを判別する。
【0165】
i=N−1である場合(ステップS1306;YES)、更新処理を終了する。つまり、N行M列のメモリブロックすべてについて多重化を終了したことになる。
【0166】
i=N−1でない場合(ステップS1306;NO)、選択部203はカウンターをインクリメント(i=i+1)し(ステップS1307)、ステップS1303に戻る。つまり、N行M列のメモリブロックすべてについて未だ多重化を終えていないので、残りのメモリブロックについて引き続き多重化をする。
【0167】
(出力処理)
次に、本実施形態の出力処理について、図15のフローチャートを用いて説明する。上述のように、本実施形態のデータ記憶部201にはN個のパラメータ群が格納され、最大でM重に多重化されている。
【0168】
まず、取得要求受付部205は、データ記憶部201に記憶されたパラメータを読み出す要求を受け付ける(ステップS1501)。
【0169】
選択部203は、取得要求受付部205が受け付けた要求が示すパラメータが、何行目のメモリブロックのパラメータ群に含まれているかを判別する(ステップS1502)。判別の結果、選択部203は、要求されたパラメータが例えばX行目のパラメータ群に含まれていると判別する。
【0170】
更新部204は、ステップS1502で判別された行のメモリブロックのうち、多重化フラグに第1種の値が格納されたメモリブロックからパラメータ群を読み出す(ステップS1503)。多重化フラグに第1種の値が格納された複数のメモリブロックがX行目にある場合、更新部204はそれらすべてのメモリブロックからパラメータ群を読み出す。
【0171】
更新部204は、ステップS1503で読み出したパラメータ群のデータ内容が互いに一致するか否かを判別する(ステップS1504)。ただし、多重化フラグに第1種の値が格納されたメモリブロックがX行目に1つしかない場合、更新部204は、「一致する」と判別することとする。
【0172】
一致すると判別された場合(ステップS1504;YES)、出力部206は、成功応答を出力する(ステップS1505)。例えば、出力部206は、ステップS1504で読み出したパラメータ群に含まれる、ステップS1501で受け付けた要求が示すパラメータを、成功応答として出力する。
【0173】
一致しないと判別された場合(ステップS1504;NO)、出力部206は、失敗応答を出力して(ステップS1506)、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部201に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部206は、要求されたパラメータを出力しない。
【0174】
本実施形態によれば、記憶処理装置200は、N個のパラメータ群のそれぞれについて異なった方法で多重化するので、多重化がより複雑になり、不正なデータ改変を防ぐことができる効果が更に増す。
【0175】
上述の各実施形態では、出力部206は、成功応答としてパラメータを出力しているが、正常に多重化されていることを示す所定値を出力することとしてもよい。例えば、取得要求受付部205や更新要求受付部208が要求を受け付けたか否かに関わらず、定期的に出力処理を実行し、パラメータが正常に記憶されているか否かをチェックするための手段として本発明を利用することも可能である。
【0176】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【0177】
記憶処理装置200を装置の全部又は一部として動作させるためのプログラムを、メモリカード、CD−ROM、DVD、MO(Magneto Optical disk)などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【0178】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【0179】
以上説明したように、本発明によれば、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【0180】
【図1】本実施形態の記憶処理装置が実現される典型的なゲーム装置の概要構成を示す図である。
【図2】記憶処理装置の機能的構成を説明するための図である。
【図3】データ記憶部とフラグ記憶部の構成を説明するための図である。
【図4】更新処理を説明するためのフローチャートである。
【図5】出力処理を説明するためのフローチャートである。
【図6】実施形態2の出力処理を説明するためのフローチャートである。
【図7】実施形態3のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図8】実施形態4の記憶処理装置の機能的構成を説明するための図である。
【図9】実施形態5の記憶処理装置の機能的構成を説明するための図である。
【図10】実施形態5の更新処理を説明するためのフローチャートである。
【図11】実施形態6のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図12】実施形態7のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図13】実施形態7の更新処理を説明するためのフローチャートである。
【図14】(a)と(c)は更新部が多重化する前にデータ記憶部とフラグ記憶部に記憶されるデータの構成例である。(b)と(d)は更新部が多重化した後にデータ記憶部とフラグ記憶部に記憶されるデータの構成例である。
【図15】実施形態7の出力処理を説明するためのフローチャートである。
【符号の説明】
【0181】
100 情報処理装置
101 CPU
102 ROM
103 RAM
104 インターフェース
105 コントローラ
106 外部メモリ
107 DVD−ROMドライブ
108 画像処理部
109 音声処理部
110 NIC
200 記憶処理装置
201 データ記憶部
202 フラグ記憶部
203 選択部
204 更新部
205 取得要求受付部
206 出力部
207 識別情報記憶部
208 更新要求受付部
【特許請求の範囲】
【請求項1】
複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶されるデータ記憶部と、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部と、
前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択部と、
前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する更新部と、
前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付部と、
前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する、
出力部と、
を備えることを特徴とする記憶処理装置。
【請求項2】
請求項1に記載の記憶処理装置であって、
前記更新部は、前記選択されたメモリブロック以外に対応する当該多重化フラグを、当該パラメータ群を多重化して記憶しないことを示す第2種の値に更新する、
ことを特徴とする記憶処理装置。
【請求項3】
請求項2に記載の記憶処理装置であって、
前記選択部は、前記取得要求受付部が当該要求を受け付けると、当該要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第2種の値である場合、当該多重化フラグが当該第1種の値であるメモリブロックを所定個数選択し、
前記出力部は、
(c)前記選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該要求が示すメモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(d)前記選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、当該失敗応答を出力する、
ことを特徴とする記憶処理装置。
【請求項4】
請求項3に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
前記選択部は、当該多重化フラグが当該第1種の値であるメモリブロックの中から、前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックのアドレス(以下「要求アドレス」という。)から循環的順序で次以降のアドレスであって、当該要求アドレスに最も近いアドレスが付与されたメモリブロックであり、且つ、当該多重化フラグが当該第1種の値であるメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項5】
請求項2に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ固有の識別情報が対応付けられ、
当該第1種の値は、当該固有の識別情報であり、
当該第2種の値は、当該識別情報のいずれとも異なる値であり、
前記選択されたメモリブロックに対応する識別情報を記憶する識別情報記憶部を更に備え、
前記更新部は、前記選択されたメモリブロックに対応する当該多重化フラグを更新した後、前記選択されたメモリブロックに対応する識別情報を前記識別情報記憶部に記憶させ、
前記選択部は、前記識別情報記憶部に記憶された識別情報に対応するメモリブロックと異なるメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項6】
請求項2に記載の記憶処理装置であって、
前記選択部は、所定の時間間隔でいずれかのメモリブロックをランダムに選択する、
ことを特徴とする記憶処理装置。
【請求項7】
請求項2に記載の記憶処理装置であって、
前記データ記憶部に記憶されたパラメータを更新する要求を受け付ける更新要求受付部を更に備え、
前記更新部は、前記更新要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックを更新し、
前記選択部は、前記更新要求受付部が当該要求を受け付けた場合に、いずれかのメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項8】
パラメータを記憶する記憶処理装置であって、
当該パラメータを記憶できるサイズの複数のメモリブロックを有するデータ記憶部と、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部と、
前記データ記憶部から1つ以上のメモリブロックを選択する選択部と、
当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択部により選択されたメモリブロックに記憶させ、前記選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する更新部と、
当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する出力部と、
を備えることを特徴とする記憶処理装置。
【請求項9】
請求項8に記載の記憶処理装置であって、
前記更新部は、当該同一の値と異なる所定値、又は、乱数値を、前記選択部により選択されなかったメモリブロックに記憶させる、
ことを特徴とする記憶処理装置。
【請求項10】
請求項8に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
前記更新部は、前記選択部により選択されたメモリブロックのアドレスから所定範囲内のアドレスが付与され、且つ、当該非第1種の値が記憶された当該多重化フラグが対応付けられたメモリブロックの中のいずれか1つに記憶されているデータを、前記選択部により選択されなかったメモリブロックに記憶させる、
ことを特徴とする記憶処理装置。
【請求項11】
データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を有する記憶処理装置にて実行される記憶処理方法であって、
前記データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群を記憶し、
前記フラグ記憶部は、前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶し、
前記選択部が、前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択ステップと、
前記更新部が、前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する更新ステップと、
前記取得要求受付部が、前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付ステップと、
前記取得要求受付ステップが受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、前記出力部が、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、前記出力部が、失敗応答を出力する、
出力ステップと、
を備えることを特徴とする記憶処理方法。
【請求項12】
データ記憶部、フラグ記憶部、選択部、更新部、出力部を有しパラメータを記憶する記憶処理装置にて実行される記憶処理方法であって、
前記データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有し、
前記フラグ記憶部は、前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶し、
前記選択部が、前記データ記憶部から1つ以上のメモリブロックを選択する選択ステップと、
前記更新部が、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択ステップにより選択されたメモリブロックに記憶させ、前記選択ステップにより選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する更新ステップと、
当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、前記出力部が成功応答を出力し、そうでない場合、前記出力部が失敗応答を出力する出力ステップと、
を備えることを特徴とする記憶処理方法。
【請求項13】
コンピュータを、
複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶されるデータ記憶部、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部、
前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択部、
前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する更新部、
前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付部、
前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する、
出力部、
として機能させることを特徴とするプログラム。
【請求項14】
パラメータを記憶するコンピュータを、
当該パラメータを記憶できるサイズの複数のメモリブロックを有するデータ記憶部、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部、
前記データ記憶部から1つ以上のメモリブロックを選択する選択部、
当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択部により選択されたメモリブロックに記憶させ、前記選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する更新部、
当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する出力部、
として機能させることを特徴とするプログラム。
【請求項1】
複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶されるデータ記憶部と、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部と、
前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択部と、
前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する更新部と、
前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付部と、
前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する、
出力部と、
を備えることを特徴とする記憶処理装置。
【請求項2】
請求項1に記載の記憶処理装置であって、
前記更新部は、前記選択されたメモリブロック以外に対応する当該多重化フラグを、当該パラメータ群を多重化して記憶しないことを示す第2種の値に更新する、
ことを特徴とする記憶処理装置。
【請求項3】
請求項2に記載の記憶処理装置であって、
前記選択部は、前記取得要求受付部が当該要求を受け付けると、当該要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第2種の値である場合、当該多重化フラグが当該第1種の値であるメモリブロックを所定個数選択し、
前記出力部は、
(c)前記選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該要求が示すメモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(d)前記選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、当該失敗応答を出力する、
ことを特徴とする記憶処理装置。
【請求項4】
請求項3に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
前記選択部は、当該多重化フラグが当該第1種の値であるメモリブロックの中から、前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックのアドレス(以下「要求アドレス」という。)から循環的順序で次以降のアドレスであって、当該要求アドレスに最も近いアドレスが付与されたメモリブロックであり、且つ、当該多重化フラグが当該第1種の値であるメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項5】
請求項2に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ固有の識別情報が対応付けられ、
当該第1種の値は、当該固有の識別情報であり、
当該第2種の値は、当該識別情報のいずれとも異なる値であり、
前記選択されたメモリブロックに対応する識別情報を記憶する識別情報記憶部を更に備え、
前記更新部は、前記選択されたメモリブロックに対応する当該多重化フラグを更新した後、前記選択されたメモリブロックに対応する識別情報を前記識別情報記憶部に記憶させ、
前記選択部は、前記識別情報記憶部に記憶された識別情報に対応するメモリブロックと異なるメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項6】
請求項2に記載の記憶処理装置であって、
前記選択部は、所定の時間間隔でいずれかのメモリブロックをランダムに選択する、
ことを特徴とする記憶処理装置。
【請求項7】
請求項2に記載の記憶処理装置であって、
前記データ記憶部に記憶されたパラメータを更新する要求を受け付ける更新要求受付部を更に備え、
前記更新部は、前記更新要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックを更新し、
前記選択部は、前記更新要求受付部が当該要求を受け付けた場合に、いずれかのメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項8】
パラメータを記憶する記憶処理装置であって、
当該パラメータを記憶できるサイズの複数のメモリブロックを有するデータ記憶部と、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部と、
前記データ記憶部から1つ以上のメモリブロックを選択する選択部と、
当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択部により選択されたメモリブロックに記憶させ、前記選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する更新部と、
当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する出力部と、
を備えることを特徴とする記憶処理装置。
【請求項9】
請求項8に記載の記憶処理装置であって、
前記更新部は、当該同一の値と異なる所定値、又は、乱数値を、前記選択部により選択されなかったメモリブロックに記憶させる、
ことを特徴とする記憶処理装置。
【請求項10】
請求項8に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
前記更新部は、前記選択部により選択されたメモリブロックのアドレスから所定範囲内のアドレスが付与され、且つ、当該非第1種の値が記憶された当該多重化フラグが対応付けられたメモリブロックの中のいずれか1つに記憶されているデータを、前記選択部により選択されなかったメモリブロックに記憶させる、
ことを特徴とする記憶処理装置。
【請求項11】
データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を有する記憶処理装置にて実行される記憶処理方法であって、
前記データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群を記憶し、
前記フラグ記憶部は、前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶し、
前記選択部が、前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択ステップと、
前記更新部が、前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する更新ステップと、
前記取得要求受付部が、前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付ステップと、
前記取得要求受付ステップが受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、前記出力部が、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、前記出力部が、失敗応答を出力する、
出力ステップと、
を備えることを特徴とする記憶処理方法。
【請求項12】
データ記憶部、フラグ記憶部、選択部、更新部、出力部を有しパラメータを記憶する記憶処理装置にて実行される記憶処理方法であって、
前記データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有し、
前記フラグ記憶部は、前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶し、
前記選択部が、前記データ記憶部から1つ以上のメモリブロックを選択する選択ステップと、
前記更新部が、当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択ステップにより選択されたメモリブロックに記憶させ、前記選択ステップにより選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する更新ステップと、
当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、前記出力部が成功応答を出力し、そうでない場合、前記出力部が失敗応答を出力する出力ステップと、
を備えることを特徴とする記憶処理方法。
【請求項13】
コンピュータを、
複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶されるデータ記憶部、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部、
前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択部、
前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第1種の値に更新する更新部、
前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付部、
前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第1種の値であり、且つ、
(a)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
(b)当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する、
出力部、
として機能させることを特徴とするプログラム。
【請求項14】
パラメータを記憶するコンピュータを、
当該パラメータを記憶できるサイズの複数のメモリブロックを有するデータ記憶部、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部、
前記データ記憶部から1つ以上のメモリブロックを選択する選択部、
当該パラメータを多重化する旨を示す第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択部により選択されたメモリブロックに記憶させ、前記選択部により選択されたか否かに基づいて、当該多重化フラグを当該第1種の値又は非第1種の値に更新する更新部、
当該第1種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する出力部、
として機能させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2009−122858(P2009−122858A)
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願番号】特願2007−294741(P2007−294741)
【出願日】平成19年11月13日(2007.11.13)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】
【公開日】平成21年6月4日(2009.6.4)
【国際特許分類】
【出願日】平成19年11月13日(2007.11.13)
【出願人】(506113602)株式会社コナミデジタルエンタテインメント (1,441)
【Fターム(参考)】
[ Back to top ]