(57)【特許請求の範囲】
【請求項１】
複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶されるデータ記憶部と、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部と、
前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択部と、
前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第１種の値に更新する更新部と、
前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付部と、
前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第１種の値であり、且つ、
（ａ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｂ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する、
出力部と、
を備えることを特徴とする記憶処理装置。
【請求項２】
請求項１に記載の記憶処理装置であって、
前記更新部は、前記選択されたメモリブロック以外に対応する当該多重化フラグを、当該パラメータ群を多重化して記憶しないことを示す第２種の値に更新する、
ことを特徴とする記憶処理装置。
【請求項３】
請求項２に記載の記憶処理装置であって、
前記選択部は、前記取得要求受付部が当該要求を受け付けると、当該要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第２種の値である場合、当該多重化フラグが当該第１種の値であるメモリブロックを所定個数選択し、
前記出力部は、
（ｃ）前記選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該要求が示すメモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｄ）前記選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、当該失敗応答を出力する、
ことを特徴とする記憶処理装置。
【請求項４】
請求項３に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
前記選択部は、当該多重化フラグが当該第１種の値であるメモリブロックの中から、前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックのアドレス（以下「要求アドレス」という。）から循環的順序で次以降のアドレスであって、当該要求アドレスに最も近いアドレスが付与されたメモリブロックであり、且つ、当該多重化フラグが当該第１種の値であるメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項５】
請求項２に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ固有の識別情報が対応付けられ、
当該第１種の値は、当該固有の識別情報であり、
当該第２種の値は、当該識別情報のいずれとも異なる値であり、
前記選択されたメモリブロックに対応する識別情報を記憶する識別情報記憶部を更に備え、
前記更新部は、前記選択されたメモリブロックに対応する当該多重化フラグを更新した後、前記選択されたメモリブロックに対応する識別情報を前記識別情報記憶部に記憶させ、
前記選択部は、前記識別情報記憶部に記憶された識別情報に対応するメモリブロックと異なるメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項６】
請求項２に記載の記憶処理装置であって、
前記選択部は、所定の時間間隔でいずれかのメモリブロックをランダムに選択する、
ことを特徴とする記憶処理装置。
【請求項７】
請求項２に記載の記憶処理装置であって、
前記データ記憶部に記憶されたパラメータを更新する要求を受け付ける更新要求受付部を更に備え、
前記更新部は、前記更新要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックを更新し、
前記選択部は、前記更新要求受付部が当該要求を受け付けた場合に、いずれかのメモリブロックを選択する、
ことを特徴とする記憶処理装置。
【請求項８】
パラメータを記憶する記憶処理装置であって、
当該パラメータを記憶できるサイズの複数のメモリブロックを有するデータ記憶部と、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部と、
前記データ記憶部から１つ以上のメモリブロックを選択する選択部と、
当該パラメータを多重化する旨を示す第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択部により選択されたメモリブロックに記憶させ、前記選択部により選択されたか否かに基づいて、当該多重化フラグを当該第１種の値又は非第１種の値に更新する更新部と、
当該第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する出力部と、
を備えることを特徴とする記憶処理装置。
【請求項９】
請求項８に記載の記憶処理装置であって、
前記更新部は、当該同一の値と異なる所定値、又は、乱数値を、前記選択部により選択されなかったメモリブロックに記憶させる、
ことを特徴とする記憶処理装置。
【請求項１０】
請求項８に記載の記憶処理装置であって、
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
前記更新部は、前記選択部により選択されたメモリブロックのアドレスから所定範囲内のアドレスが付与され、且つ、当該非第１種の値が記憶された当該多重化フラグが対応付けられたメモリブロックの中のいずれか１つに記憶されているデータを、前記選択部により選択されなかったメモリブロックに記憶させる、
ことを特徴とする記憶処理装置。
【請求項１１】
データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を有する記憶処理装置にて実行される記憶処理方法であって、
前記データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群を記憶し、
前記フラグ記憶部は、前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶し、
前記選択部が、前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択ステップと、
前記更新部が、前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第１種の値に更新する更新ステップと、
前記取得要求受付部が、前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付ステップと、
前記取得要求受付ステップが受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第１種の値であり、且つ、
（ａ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、前記出力部が、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｂ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、前記出力部が、失敗応答を出力する、
出力ステップと、
を備えることを特徴とする記憶処理方法。
【請求項１２】
データ記憶部、フラグ記憶部、選択部、更新部、出力部を有しパラメータを記憶する記憶処理装置にて実行される記憶処理方法であって、
前記データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有し、
前記フラグ記憶部は、前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶し、
前記選択部が、前記データ記憶部から１つ以上のメモリブロックを選択する選択ステップと、
前記更新部が、当該パラメータを多重化する旨を示す第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択ステップにより選択されたメモリブロックに記憶させ、前記選択ステップにより選択されたか否かに基づいて、当該多重化フラグを当該第１種の値又は非第１種の値に更新する更新ステップと、
当該第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、前記出力部が成功応答を出力し、そうでない場合、前記出力部が失敗応答を出力する出力ステップと、
を備えることを特徴とする記憶処理方法。
【請求項１３】
コンピュータを、
複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶されるデータ記憶部、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部、
前記データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する選択部、
前記選択されたメモリブロックに記憶されるパラメータ群を、前記選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、前記選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第１種の値に更新する更新部、
前記データ記憶部に記憶されたパラメータを取得する要求を受け付ける取得要求受付部、
前記取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第１種の値であり、且つ、
（ａ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｂ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する、
出力部、
として機能させることを特徴とするプログラム。
【請求項１４】
パラメータを記憶するコンピュータを、
当該パラメータを記憶できるサイズの複数のメモリブロックを有するデータ記憶部、
前記データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶するフラグ記憶部、
前記データ記憶部から１つ以上のメモリブロックを選択する選択部、
当該パラメータを多重化する旨を示す第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、前記選択部により選択されたメモリブロックに記憶させ、前記選択部により選択されたか否かに基づいて、当該多重化フラグを当該第１種の値又は非第１種の値に更新する更新部、
当該第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する出力部、
として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムに関する。
【背景技術】
【０００２】
従来から、ゲーム装置においては、各種のパラメータを用いてゲームの状態が表現されている。このようなパラメータには、プレイヤーが操作するキャラクターの体力やレベル等の各種の能力値、クリアした面の数や過去のスコア履歴など、種々のものがある。そして、このようなパラメータは、メモリカードやハードディスクなど、ユーザが利用する不揮発性情報記録媒体に記録されることが多い。保存されたパラメータを改変することはチート行為と呼ばれ、特にネットワークにおいて多数のプレイヤーが参加するゲームにおいては不正行為となる。そのため、データ改変等の不正行為を抑止する技術が求められている。例えば特許文献１には、チート行為や情報記録媒体の不良等に起因するデータ改変をできるだけ検出できる装置等が開示されている。また、例えば特許文献２には、パラメータとして乱数を使用する際に、この乱数が不正なく使用されているかを認証する装置が開示されている。
【特許文献１】特開２００６−７２８２５号公報
【特許文献２】特開２００６−２７９５４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、チート行為の防止策が一旦判明してしまうと、これを覆すような不正技術が開発されることも多く、種々の新たな技術が常に必要とされている。また、情報記録媒体の故障や不良が生じた場合も考慮するため、情報記録媒体に記憶されたデータが正当であるか否かをチェックする手段は、種々の応用分野で必要とされている。
【０００４】
本発明はこのような課題を解決するものであり、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
以上の目的を達成するため、本発明の原理にしたがって、下記の発明を開示する。
【０００６】
本発明の第１の観点に係る記憶処理装置は、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を備える。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶される。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新部は、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第１種の値に更新する。
取得要求受付部は、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力部は、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第１種の値であり、且つ、
（ａ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｂ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する。
本発明の記憶処理装置は、複数のメモリブロックの中からいずれかのメモリブロックを選択して読み出し、読み出されたデータと同じデータを、別のメモリブロックに書き込んで記憶させる。これを多重化と呼ぶ。読み出されたメモリブロックのことを多重化元のメモリブロックと表現し、書き込まれたメモリブロックのことを多重化先のメモリブロックと表現する。多重化フラグに記憶される第１種の値は、例えば、多重化先のメモリブロックのアドレスである。記憶されたパラメータを取得する要求があり、要求されたパラメータが記憶されたメモリブロックが多重化されている場合、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。つまり、多重化の正当性がチェックされ、チェックの結果に応じて、成功応答又は失敗応答が出力される。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。例えば、記憶処理装置として、ＲＡＭ（Random Access Memory）、ハードディスク装置、フラッシュメモリ、各種リムーバルディスクなどを用いることができる。
【０００７】
更新部は、選択されたメモリブロック以外に対応する当該多重化フラグを、当該パラメータ群を多重化して記憶しないことを示す第２種の値に更新してもよい。
例えば第２種の値は、記憶処理装置が計算したチェックサムあるいはハッシュ値である。多重化元のメモリブロックに対応する多重化フラグには第１種の値が、多重化先のメモリブロックに対応する多重化フラグには第２種の値が、それぞれ記憶される。記憶処理装置は、メモリブロックを多重化するたびに、多重化フラグを第１種の値又は第２種の値に更新するため、多重化するメモリブロックを毎回変えて繰り返し多重化でき、データ改変の不正行為を抑止できる効果が増す。
【０００８】
選択部は、取得要求受付部が当該要求を受け付けると、当該要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第２種の値である場合、当該多重化フラグが当該第１種の値であるメモリブロックを所定個数選択してもよい。
そして、出力部は、
（ｃ）選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該要求が示すメモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｄ）選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、当該失敗応答を出力してもよい。
本発明の記憶処理装置は、記憶されたパラメータを取得する要求があり、要求されたパラメータが記憶されたメモリブロックが多重化されていない場合であっても、データ改変が無いかどうかをチェックする。例えば、要求されたパラメータが記憶されたメモリブロックが多重化されていない場合、現在多重化されている旨が多重化フラグに記憶されている多重化元のメモリブロックに記憶されたパラメータ群の内容と、多重化先のメモリブロックに記憶されたパラメータ群の内容とを読み出し、一致すれば成功応答を出力し、一致しなければ失敗応答を出力する。この多重化の正当性のチェックは、現在多重化されているすべてのメモリブロックについて行われてもよいし、現在多重化されているメモリブロックの一部について行われてもよい。一部についてのみチェックする場合には、例えば現在多重化されているすべてのメモリブロックの中から所定個数をランダムに選択することができる。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータが記憶されたメモリブロックが多重化されているか否かに関わらず、パラメータの値を出力しないので、データ改変の不正行為等を抑止することができる効果が増す。
【０００９】
当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与され、
選択部は、当該多重化フラグが当該第１種の値であるメモリブロックの中から、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックのアドレス（以下「要求アドレス」という。）から循環的順序で次以降のアドレスであって、当該要求アドレスに最も近いアドレスが付与されたメモリブロックであり、且つ、当該多重化フラグが当該第１種の値であるメモリブロックを選択してもよい。
各メモリブロックには連続した数値を用いた固有のアドレスが予め付与される。循環的順序とは、例えばアドレスを表す数値が増加する（又は減少する）向きの順序である。循環的順序においては、メモリブロックのアドレスが終端（又は先端）に達した場合、メモリブロックの先端（又は終端）に戻って、次の順番とする。
本発明の記憶処理装置は、取得要求されたパラメータを格納するメモリブロックから循環的順序で順々に多重化フラグをチェックしていき、第１種の値がセットされた多重化フラグをもつ最初のメモリブロックを、多重化の正当性のチェック対象となるメモリブロックとして選択する。そして、選択されたメモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致するか否かを判別する。したがって、多重化の正当性のチェック対象となるメモリブロックは、取得要求されたパラメータによって異なるので、チェック対象のメモリブロックが偏って選択されることがないようにできる。
【００１０】
当該複数のメモリブロックにはそれぞれ固有の識別情報が対応付けられ、
当該第１種の値は、当該固有の識別情報であり、
当該第２種の値は、当該識別情報のいずれとも異なる値であり、
選択されたメモリブロックに対応する識別情報を記憶する識別情報記憶部を更に備え、
更新部は、選択されたメモリブロックに対応する当該多重化フラグを更新した後、選択されたメモリブロックに対応する識別情報を識別情報記憶部に記憶させ、
選択部は、識別情報記憶部に記憶された識別情報に対応するメモリブロックと異なるメモリブロックを選択してもよい。
本発明の記憶処理装置は、多重化するたびに、多重化元のメモリブロックを指定する識別情報を記憶する。例えば第１種の値に用いる識別情報としてメモリブロックのアドレスを、第２種の値に用いる値としていずれのアドレスとも異なる値を、それぞれ採用できる。そして、記憶処理装置は、次の多重化のタイミングになると、記憶された識別情報に対応するメモリブロック以外のメモリブロックを選択して多重化する。本発明によれば、多重化するメモリブロックが毎回変わるので、データ改変の不正行為等を抑止することができる効果が増す。
【００１１】
選択部は、所定の時間間隔でいずれかのメモリブロックをランダムに選択してもよい。
本発明の記憶処理装置は、予め決められたタイミングで多重化を繰り返し、多重化元のメモリブロックを毎回ランダムに選ぶ。本発明によれば、多重化するメモリブロックに偏りがないようにするので、データ改変の不正行為等を抑止することができる効果が増す。
【００１２】
データ記憶部に記憶されたパラメータを更新する要求を受け付ける更新要求受付部を更に備え、
更新部は、更新要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックを更新し、
選択部は、更新要求受付部が当該要求を受け付けた場合に、いずれかのメモリブロックを選択してもよい。
本発明の記憶処理装置は、記憶されたパラメータを更新する要求があると、多重化元のメモリブロックを選択し直し、更に、選択し直したメモリブロックを多重化する。パラメータの更新には、パラメータの値の書き換えのほか、パラメータの追加や削除も含まれる。本発明によれば、パラメータを読み出すタイミングだけでなく、更新するタイミングにおいても多重化し直すので、データ改変の不正行為等を抑止することができる効果が増す。
【００１３】
本発明のその他の観点に係る記憶処理装置は、パラメータを記憶する記憶処理装置であって、データ記憶部、フラグ記憶部、選択部、更新部、出力部を備える。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部から１つ以上のメモリブロックを選択する。
更新部は、当該パラメータを多重化する旨を示す第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択部により選択されたメモリブロックに記憶させ、選択部により選択されたか否かに基づいて、当該多重化フラグを当該第１種の値又は非第１種の値に更新する。
出力部は、当該第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する。
本発明の記憶処理装置にはパラメータが予め記憶され、記憶処理装置は、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第１種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第１種の値は、第１種の値と異なる所定値である。記憶処理装置は、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。記憶処理装置は、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断は定期的に実行される。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【００１４】
更新部は、当該同一の値と異なる所定値、又は、乱数値を、選択部により選択されなかったメモリブロックに記憶させてもよい。
本発明の記憶処理装置は、選択部が選択したメモリブロックを多重化先のメモリブロックとし、この多重化先のメモリブロックに多重化元のメモリブロックと同じデータをコピーすることによって、データを多重化する。一方、選択部が選択しなかったメモリブロックには所定値又は乱数値を書き込む。つまり、例えばミラー化したハードディスクのように記憶領域全体をコピーするのではなく、多重化対象となったメモリブロックのみコピーするので、記憶処理装置の負荷が軽減される。
【００１５】
例えば、当該複数のメモリブロックにはそれぞれ連続した数値を用いたアドレスが予め付与される。
そして、更新部は、選択部により選択されたメモリブロックのアドレスから所定範囲内のアドレスが付与され、且つ、当該非第１種の値が記憶された当該多重化フラグが対応付けられたメモリブロックの中のいずれか１つに記憶されているデータを、選択部により選択されなかったメモリブロックに記憶させてもよい。
本発明の記憶処理装置は、選択部が選択したメモリブロックを多重化先のメモリブロックとし、この多重化先のメモリブロックに多重化元のメモリブロックと同じデータをコピーすることによって、データを多重化する。一方、選択部が選択しなかったメモリブロックには、選択部が選択したメモリブロックの近くのアドレスのメモリブロック（典型的には１つ前のアドレスや１つ後ろのアドレスなど）であって多重化対象となっていないメモリブロックのデータを記憶する。つまり、例えばミラー化したハードディスクのように記憶領域全体をコピーするのではなく、多重化対象となったメモリブロックのみコピーするので、記憶処理装置の負荷が軽減される。例えばハードディスクなどの磁気ディスク装置の場合、すぐ近くのアドレスからデータを読み出すことになるので、磁気ヘッドを移動する処理に要する時間（シーク・タイム）を減らすことができる。
【００１６】
本発明のその他の観点に係る記憶処理方法は、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部を有する記憶処理装置にて実行される記憶処理方法であって、選択ステップ、更新ステップ、取得要求受付ステップ、出力ステップを備える。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群を記憶する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択ステップは、選択部が、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新ステップは、更新部が、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第１種の値に更新する。
取得要求受付ステップは、取得要求受付部が、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力ステップは、取得要求受付ステップが受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第１種の値であり、且つ、
（ａ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、出力部が、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｂ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、出力部が、失敗応答を出力する。
本発明によれば、記憶処理装置に記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。
【００１７】
本発明のその他の観点に係る記憶処理方法は、データ記憶部、フラグ記憶部、選択部、更新部、出力部を有しパラメータを記憶する記憶処理装置にて実行される記憶処理方法であって、選択ステップ、更新ステップ、出力ステップを備える。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択ステップは、選択部が、データ記憶部から１つ以上のメモリブロックを選択する。
更新ステップは、更新部が、当該パラメータを多重化する旨を示す第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択ステップにより選択されたメモリブロックに記憶させ、選択ステップにより選択されたか否かに基づいて、当該多重化フラグを当該第１種の値又は非第１種の値に更新する。
出力ステップは、当該第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、出力部が成功応答を出力し、そうでない場合、出力部が失敗応答を出力する。
本発明の記憶処理方法を用いる記憶処理装置にはパラメータが予め記憶され、記憶処理装置は、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第１種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第１種の値は、第１種の値と異なる所定値である。記憶処理装置は、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。記憶処理装置は、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断を定期的に実行する。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【００１８】
本発明のその他の観点に係るプログラムは、コンピュータを、データ記憶部、フラグ記憶部、選択部、更新部、取得要求受付部、出力部として機能させる。
データ記憶部は、複数のメモリブロックを有し、各メモリブロックにそれぞれパラメータ群が記憶される。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータ群を多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部の各メモリブロックのうち一部のメモリブロックを選択する。
更新部は、選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させ、選択されたメモリブロックに対応する当該多重化フラグを、当該パラメータ群を多重化して記憶することを示す第１種の値に更新する。
取得要求受付部は、データ記憶部に記憶されたパラメータを取得する要求を受け付ける。
出力部は、取得要求受付部が受け付けた要求が示すパラメータが記憶されたメモリブロックに対応する当該多重化フラグが当該第１種の値であり、且つ、
（ａ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致する場合、当該メモリブロックに記憶されたパラメータを指定する成功応答を出力し、
（ｂ）当該メモリブロックに記憶されたパラメータ群と、当該他のメモリブロックに記憶されたパラメータ群と、が一致しない場合、失敗応答を出力する。
本発明によれば、コンピュータに記憶されたデータが改変されていると、要求のあったパラメータの値を出力しないので、パラメータを勝手に書き換えてデータを改変するといった不正行為等を抑止することができる。また、情報記録媒体の不良等に起因するデータ改変が発生しても、改変されたデータをそのまま使用してしまうような不具合を抑止することができる。
【００１９】
本発明のその他の観点に係るプログラムは、パラメータを記憶するコンピュータを、データ記憶部、フラグ記憶部、選択部、更新部、出力部として機能させる。
データ記憶部は、当該パラメータを記憶できるサイズの複数のメモリブロックを有する。
フラグ記憶部は、データ記憶部の各メモリブロックと対応付けて、当該パラメータを多重化して記憶するか否かを示す多重化フラグを記憶する。
選択部は、データ記憶部から１つ以上のメモリブロックを選択する。
更新部は、当該パラメータを多重化する旨を示す第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックのいずれかに記憶されているパラメータの値と同一の値を、選択部により選択されたメモリブロックに記憶させ、選択部により選択されたか否かに基づいて、当該多重化フラグを当該第１種の値又は非第１種の値に更新する。
出力部は、当該第１種の値が記憶されている当該多重化フラグが対応付けられたメモリブロックに記憶されているパラメータのすべての値が一致する場合、成功応答を出力し、そうでない場合、失敗応答を出力する。
本発明のプログラムを実行するコンピュータにはパラメータが予め記憶され、コンピュータは、メモリブロックのそれぞれについて、例えば所定の時間間隔で、多重化先のメモリブロックを選択し直して多重化する。多重化フラグに記憶される第１種の値は、多重化対象のメモリブロックであることを示す所定値であり、非第１種の値は、第１種の値と異なる所定値である。コンピュータは、多重化元のメモリブロックと多重化先のメモリブロックからそれぞれデータを読み出し、一致すれば成功応答を出力する。例えば成功応答は、予め記憶されたデータの中の、要求のあったパラメータの値である。一方、一致しなければ失敗応答を出力する。例えば失敗応答は所定のエラーコードである。コンピュータは、記憶されたデータが改変されていると、要求のあったパラメータの値を出力しない。例えば、一致するか否かの判断を定期的に実行する。したがって、データを勝手に書き換える不正改造や不正行為が困難になり、また、ハードウェア障害に起因するデータ改変による誤動作も防ぐことができるようになる。
【００２０】
また、本発明のプログラムは、コンパクトディスク、フレキシブルディスク、ハードディスク、光磁気ディスク、ディジタルビデオディスク、磁気テープ、半導体メモリ等のコンピュータ読取可能な情報記憶媒体に記録することができる。
上記プログラムは、プログラムが実行されるコンピュータとは独立して、コンピュータ通信網を介して配布・販売することができる。また、上記情報記憶媒体は、コンピュータとは独立して配布・販売することができる。
【発明の効果】
【００２１】
本発明によれば、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止することができる。
【発明を実施するための最良の形態】
【００２２】
本発明の実施形態を説明する。以下では、理解を容易にするため、ゲーム用の情報処理装置を利用して本発明が実現される実施形態を説明するが、以下の実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。したがって、当業者であればこれらの各要素もしくは全要素をこれと均等なものに置換した実施形態を採用することが可能であるが、これらの実施形態も本発明の範囲に含まれる。
【００２３】
図１は、プログラムを実行することにより、本発明の記憶処理装置の機能を果たす典型的な情報処理装置１００の概要構成を示す模式図である。以下、本図を参照して説明する。
【００２４】
情報処理装置１００は、ＣＰＵ（Central Processing Unit）１０１と、ＲＯＭ（Read Only Memory）１０２と、ＲＡＭ（Random Access Memory）１０３と、インターフェース１０４と、コントローラ１０５と、外部メモリ１０６と、ＤＶＤ−ＲＯＭ（Digital Versatile Disk - Read Only Memory）ドライブ１０７と、画像処理部１０８と、音声処理部１０９と、ＮＩＣ（Network Interface Card）１１０と、を備える。
【００２５】
ゲーム用のプログラムおよびデータを記憶したＤＶＤ−ＲＯＭをＤＶＤ−ＲＯＭドライブ１０７に装着して、情報処理装置１００の電源を投入することにより、当該プログラムが実行され、本実施形態の記憶処理装置が実現される。
【００２６】
ＣＰＵ  １０１は、情報処理装置１００全体の動作を制御し、各構成要素と接続され制御信号やデータをやりとりする。また、ＣＰＵ  １０１は、レジスタ（図示せず）という高速アクセスが可能な記憶域に対してＡＬＵ（Arithmetic Logic Unit）（図示せず）を用いて加減乗除等の算術演算や、論理和、論理積、論理否定等の論理演算、ビット和、ビット積、ビット反転、ビットシフト、ビット回転等のビット演算などを行うことができる。さらに、マルチメディア処理対応のための加減乗除等の飽和演算や、三角関数等、ベクトル演算などを高速に行えるように、ＣＰＵ  １０１自身が構成されているものや、コプロセッサを備えて実現するものがある。
【００２７】
ＲＯＭ  １０２には、電源投入直後に実行されるＩＰＬ（Initial Program Loader）が記録され、これが実行されることにより、ＤＶＤ−ＲＯＭに記録されたプログラムをＲＡＭ  １０３に読み出してＣＰＵ  １０１による実行が開始される。また、ＲＯＭ  １０２には、情報処理装置１００全体の動作制御に必要なオペレーティングシステムのプログラムや各種のデータが記録される。
【００２８】
ＲＡＭ  １０３は、データやプログラムを一時的に記憶するためのもので、ＤＶＤ−ＲＯＭから読み出したプログラムやデータ、その他ゲームの進行やチャット通信に必要なデータが保持される。また、ＣＰＵ  １０１は、ＲＡＭ  １０３に変数領域を設け、当該変数に格納された値に対して直接ＡＬＵを作用させて演算を行ったり、ＲＡＭ  １０３に格納された値を一旦レジスタに格納してからレジスタに対して演算を行い、演算結果をメモリに書き戻す、などの処理を行う。
【００２９】
インターフェース１０４を介して接続されたコントローラ１０５は、ユーザがダンスゲームやサッカーゲームなどのゲームの実行の際に行う操作入力を受け付ける。
【００３０】
インターフェース１０４を介して着脱自在に接続された外部メモリ１０６には、ゲームのプレイ状況（過去の成績等）を示すデータ、ゲームの進行状態を示すデータ、ネットワークを用いたゲームのチャット通信のログ（記録）のデータなどが書き換え可能に記憶される。ユーザは、コントローラ１０５を介して指示入力を行うことにより、これらのデータを適宜外部メモリ１０６に記録することができる。
【００３１】
ＤＶＤ−ＲＯＭドライブ１０７に装着されるＤＶＤ−ＲＯＭには、ゲームを実現するためのプログラムとゲームに付随する画像データや音声データが記録される。ＣＰＵ  １０１の制御によって、ＤＶＤ−ＲＯＭドライブ１０７は、これに装着されたＤＶＤ−ＲＯＭに対する読み出し処理を行って、必要なプログラムやデータを読み出し、これらはＲＡＭ  １０３等に一時的に記憶される。
【００３２】
画像処理部１０８は、ＤＶＤ−ＲＯＭから読み出されたデータをＣＰＵ  １０１や画像処理部１０８が備える画像演算プロセッサ（図示せず）によって加工処理した後、これを画像処理部１０８が備えるフレームメモリ（図示せず）に記録する。フレームメモリに記録された画像情報は、所定の同期タイミングでビデオ信号に変換され画像処理部１０８に接続されるモニター（図示せず）へ出力される。これにより、各種の画像表示が可能となる。
【００３３】
画像演算プロセッサは、２次元の画像の重ね合わせ演算やアルファブレンディング等の透過演算、各種の飽和演算を高速に実行できる。
【００３４】
また、仮想３次元空間に配置され、各種のテクスチャ情報が付加されたポリゴン情報を、Ｚバッファ法によりレンダリングして、所定の視点位置から仮想３次元空間に配置されたポリゴンを所定の視線の方向へ俯瞰したレンダリング画像を得る演算の高速実行も可能である。
【００３５】
さらに、ＣＰＵ  １０１と画像演算プロセッサが協調動作することにより、文字の形状を定義するフォント情報にしたがって、文字列を２次元画像としてフレームメモリへ描画したり、各ポリゴン表面へ描画することが可能である。
【００３６】
また、ゲームの画像などの情報をＤＶＤ−ＲＯＭに用意しておき、これをフレームメモリに展開することによって、ゲームの様子などを画面に表示することができるようになる。
【００３７】
音声処理部１０９は、ＤＶＤ−ＲＯＭから読み出した音声データをアナログ音声信号に変換し、これに接続されたスピーカ（図示せず）から出力させる。また、ＣＰＵ  １０１の制御の下、ゲームの進行の中で発生させるべき効果音や楽曲データを生成し、これに対応した音声をスピーカから出力させる。
【００３８】
音声処理部１０９では、ＤＶＤ−ＲＯＭに記録された音声データがＭＩＤＩデータである場合には、これが有する音源データを参照して、ＭＩＤＩデータをＰＣＭデータに変換する。また、ＡＤＰＣＭ（Adaptive Differential Pulse Code Modulation）形式やOgg Vorbis形式等の圧縮済音声データである場合には、これを展開してＰＣＭデータに変換する。ＰＣＭデータは、そのサンプリング周波数に応じたタイミングでＤ／Ａ（Digital/Analog）変換を行って、スピーカに出力することにより、音声出力が可能となる。
【００３９】
ＮＩＣ  １１０は、情報処理装置１００をインターネット等のコンピュータ通信網（図示せず）に接続するためのものであり、ＬＡＮ（Local Area Network）を構成する際に用いられる１０ＢＡＳＥ−Ｔ／１００ＢＡＳＥ−Ｔ規格にしたがうものや、電話回線を用いてインターネットに接続するためのアナログモデム、ＩＳＤＮ（Integrated Services Digital Network）モデム、ＡＤＳＬ（Asymmetric Digital Subscriber Line）モデム、ケーブルテレビジョン回線を用いてインターネットに接続するためのケーブルモデム等と、これらとＣＰＵ  １０１との仲立ちを行うインターフェース（図示せず）により構成される。
【００４０】
このほか、情報処理装置１００は、ハードディスク等の大容量外部記憶装置を用いて、ＲＯＭ  １０２、ＲＡＭ  １０３、外部メモリ１０６、ＤＶＤ−ＲＯＭドライブ１０７に装着されるＤＶＤ−ＲＯＭ等と同じ機能を果たすように構成してもよい。
【００４１】
次に、本実施形態の記憶処理装置２００の機能的な構成について説明する。図２に示すように、記憶処理装置２００は、データ記憶部２０１、フラグ記憶部２０２、選択部２０３、更新部２０４を備える。
【００４２】
データ記憶部２０１は、データを記憶する領域として、複数のメモリブロックを有する。例えば、データ記憶部２０１は、各メモリブロックに、１つ又は複数のパラメータから構成されるパラメータ群を記憶する。メモリブロックは、データ記憶部２０１に予め定義された全メモリ空間の中において、１つのアドレスが対応付けられたメモリセルが１つ以上存在するメモリ空間である。ＲＡＭ  １０３がデータ記憶部２０１として機能する。ＲＡＭ  １０３の代わりに、ハードディスクなどの磁気ディスク装置、フラッシュメモリカード等を用いてもよい。
【００４３】
ここで、多重化して記憶するとは、例えば図３に示すように、２つ以上のメモリブロック（本図ではＭＸ，ＭＹの２つ）に、同一のパラメータ群Ｇ１を記憶することである。本図では、データ記憶部２０１は、同じデータ容量の２つのメモリブロック群ＧＸ，ＧＹを有する。それぞれのメモリブロック群はＮ個（Ｎは１以上の整数）のメモリブロックを有する。つまりデータ記憶部２０１は合計２Ｎ個のメモリブロックを有する。パラメータ群Ｇ１はメモリブロック群ＧＸに属するメモリブロックＭＸに記憶され、同じ内容がメモリブロック群ＧＹに属するメモリブロックＭＹ（≠ＭＸ）にも記憶される。つまり、メモリブロックＭＸ，ＭＹは互いにミラー化されている。メモリブロック群ＧＸには、多重化されるパラメータ群の「本データ」が記憶される。メモリブロック群ＧＹには、本データが記憶された多重化対象のメモリブロック（以下、「多重化元のメモリブロック」と呼ぶ）のみメモリブロック群ＧＸと一致する「複製データ」が記憶される。
【００４４】
なお、本実施形態では、メモリブロック群ＧＸ，ＧＹは共に同じデータ容量であるとしているが、パラメータ群を記憶するために最低限必要なデータ容量以上であれば、必ずしも同じでなくてもよい。また、各メモリブロックのデータ容量も、パラメータ群を記憶するために最低限必要なデータ容量以上であれば、必ずしも同じでなくてもよい。
【００４５】
フラグ記憶部２０２は、データ記憶部２０１が有する各メモリブロックと対応付けて、パラメータ群を多重化して記憶するか否かを示すフラグ（以下、「多重化フラグ」と呼ぶ）を記憶する。後述する更新部２０４は、フラグ記憶部２０２に、多重化フラグの値として第１種の値又は第２種の値を記憶させる。ＲＡＭ  １０３がフラグ記憶部２０２として機能する。
【００４６】
より詳細には、フラグ記憶部２０２は、パラメータ群を多重化して記憶するメモリブロックに対応する多重化フラグの値として、第１種の値を記憶する。第１種の値とは、典型的には、多重化元のメモリブロックを多重化するために用いる他のメモリブロック（以下、「多重化先のメモリブロック」と呼ぶ）の物理アドレスである。例えば図３において、多重化元のメモリブロックＭＸに対応する多重化フラグＦＸには、多重化先のメモリブロックＭＹの物理アドレスが記憶される。同様に、多重化元のメモリブロックＭＸ＋１に対応する多重化フラグＦＸ＋１には、多重化先のメモリブロックＭＹ＋１の物理アドレスが記憶される。
【００４７】
連続した物理アドレスが付与された複数のメモリセルがメモリブロックに含まれる場合には、フラグ記憶部２０２は、複数のメモリセルのうち先頭のメモリセルの物理アドレスを記憶する。例えば、メモリブロックＭＸに、物理アドレスＡＤＳＴＡＲＴ〜ＡＤＥＮＤまでの連続したアドレス空間が割り当てられている場合、多重化フラグＦＸには物理アドレスＡＤＳＴＡＲＴが記憶される。
【００４８】
また、フラグ記憶部２０２は、パラメータ群を多重化しないメモリブロックに対応する多重化フラグの値として、第２種の値を記憶する。第２種の値とは、典型的には、メモリブロック群ＧＹ内のいずれの物理アドレスとも一致しない所定値（例えば“０”や“−１”等）である。例えば図３において、多重化対象でないメモリブロックＭＸ＋２に対応する多重化フラグＦＸ＋２にはこの所定値が記憶される。
【００４９】
選択部２０３は、データ記憶部２０１の各メモリブロックのうちいずれかのメモリブロックを選択する。本実施形態では、選択部２０３は、全てのメモリブロックのうちの一部のメモリブロックを選択する。選択部２０３によって選択されたメモリブロックが、多重化元のメモリブロックとなる。なお、選択部２０３は、全てのメモリブロックを選択することもできるが、この場合には全てのメモリブロックが多重化されることになる。ＣＰＵ  １０１とＲＡＭ  １０３が協働して選択部２０３として機能する。
【００５０】
選択部２０３がどのメモリブロックを選択するかについては、幾つかの手法がある。
例えば、選択部２０３は、所定の時間間隔で、いずれかのメモリブロックをランダムに選択する。選択部２０３は、全てのメモリブロックの中からランダムに１つを選択することとしてもよいし、複数個選択することとしてもよい。
【００５１】
例えば、選択部２０３は、所定の時間間隔で、予め決められた順番にメモリブロックを選択する。予め決められた順番が一巡すれば、選択部２０３は１番目から選択し直す。すなわちサイクリックに選択する。予め決められた順番は、例えば、物理アドレスの小さい順、大きい順、などである。
【００５２】
更新部２０４は、選択部２０３によって選択されたメモリブロックに記憶されるパラメータ群を、選択されたメモリブロックと、所定の他のメモリブロックと、に記憶させる。つまり、選択部２０３によって選択されたメモリブロックに記憶されたパラメータ群を多重化して記憶させる。例えば、選択部２０３によってメモリブロックＭＸが選択されると、更新部２０４は、メモリブロック群ＧＸに属するメモリブロックＭＸに対応する、メモリブロック群ＧＹに属するメモリブロックＭＹに、メモリブロックＭＸと同じ内容を記憶させる。
【００５３】
更に、更新部２０４は、選択部２０３によって選択されたメモリブロックに対応する多重化フラグを、パラメータ群を多重化して記憶することを示す上述の第１種の値に更新する。また、更新部２０４は、それ以外のメモリブロック（選択部２０３によって選択されなかったメモリブロック）に対応する多重化フラグを、上述の第２種の値に更新する。ＣＰＵ  １０１とＲＡＭ  １０３が協働して選択部２０３として機能する。
【００５４】
例えば、第２種の値は、上述のようにいずれの物理アドレスとも一致しない所定値である。
【００５５】
例えば、更新部２０４は、メモリブロック群ＧＸの先頭のメモリブロックから、選択部２０３によって選択されたメモリブロックまで、に含まれるメモリセルに記憶されたデータのチェックサム（合計値）を計算して、第２種の値としてもよい。
【００５６】
例えば、更新部２０４は、メモリブロック群ＧＸの先頭のメモリブロックから、選択部２０３によって選択されたメモリブロックまで、に含まれるメモリセルに記憶されたデータから、所定のハッシュ関数を用いてハッシュ値を計算して、第２種の値としてもよい。
【００５７】
取得要求受付部２０５は、データ記憶部２０１に記憶されたパラメータを取得する要求を受け付ける。ＣＰＵ  １０１が取得要求受付部２０５として機能する。例えば、ＣＰＵ  １０１は、ＤＶＤ−ＲＯＭドライブ１０７に装着されたＤＶＤ−ＲＯＭからゲームのプログラムを読み出して実行し、ゲームの実行中の任意のタイミングで、ゲーム用のパラメータをデータ記憶部２０１から読み出す（取得する）要求を受け付ける。
【００５８】
出力部２０６は、取得要求受付部２０５が受け付けた要求が示すパラメータが記憶されたメモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第１種の値であるか否かを判別する。更に、出力部２０６は、メモリブロックＭＲＥＱに記憶されたパラメータ群と、多重化先のメモリブロックに記憶されたパラメータ群とが一致するか否かを判別する。そして、出力部２０６は、それぞれの判別結果の組み合わせに応じて、以下のケースに示すように成功応答又は失敗応答を出力する。ただし、図３に示すように、メモリブロックＭＸがメモリブロックＭＹに多重化されているものとする。Ｘは、０以上Ｎ−１以下の整数とする。Ｙは、Ｎ以上２Ｎ−１以下の整数とする。対応する多重化フラグＦＸに格納する値としてメモリブロックの物理アドレスを用いると、次の数式［数１］が成り立つ。
【００５９】
ＦＸ  ＝  Ｙ      ・・・［数１］
【００６０】
（ケース１）メモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第１種の値であって、メモリブロックＭＲＥＱに記憶されたパラメータ群と、その多重化先のメモリブロックＭＹ（ただし、Ｙ＝ＦＲＥＱ）に記憶されたパラメータ群とが一致する場合、出力部２０６は、メモリブロックＭＲＥＱに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第１種の値であるということは、要求されたメモリブロックＭＲＥＱが、多重化元のメモリブロックＭＸに該当することを意味する。
【００６１】
（ケース２）メモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第１種の値であって、メモリブロックＭＲＥＱに記憶されたパラメータ群と、その多重化先のメモリブロックＭＹに記憶されたパラメータ群とが一致しない場合、出力部２０６は、失敗応答を出力する。
【００６２】
（ケース３）メモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第２種の値である場合、出力部２０６は、メモリブロックＭＲＥＱに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第２種の値であるということは、要求されたメモリブロックＭＲＥＱが、多重化元のメモリブロックＭＸではないことを意味する。
【００６３】
成功応答は、例えば、取得要求受付部２０５が受け付けた要求が示す、データ記憶部２０１に記憶されたパラメータそのものである。すなわち、上記ケース１又はケース３の場合、出力部２０６は、データ記憶部２０１には正しいパラメータ群が記憶されているものと判断し、データ記憶部２０１に記憶されたパラメータを読み出して出力する。
【００６４】
失敗応答は、所定のエラーコードである。すなわち、上記ケース２又はケース４の場合、出力部２０６は、データ記憶部２０１には正しいパラメータ群が記憶されていない（不正にデータが書き換えられた可能性がある）ものと判断し、エラーコードを出力する。
【００６５】
（更新処理）
次に、上述の各部が実行する更新処理について、図４のフローチャートを用いて説明する。この更新処理は、上述したように例えば所定時間毎に行われる。
【００６６】
まず、選択部２０３は、データ記憶部２０１が有するメモリブロックの中から、いずれかのメモリブロックを選択する（ステップＳ４０１）。選択部２０３は、選択したメモリブロックを指定する情報を更新部２０４に通知する。
【００６７】
次に、更新部２０４は、選択されたメモリブロックに対応する、多重化先のメモリブロックを特定する（ステップＳ４０２）。例えば図３において、更新部２０４は、選択部２０３によってメモリブロックＭＸが選択されると、対応するメモリブロックＭＹを多重化先のメモリブロックとして特定する。
【００６８】
そして、更新部２０４は、選択されたメモリブロックを多重化する（ステップＳ４０３）。すなわち、更新部２０４は、ステップＳ４０１で選択されたメモリブロックに記憶されたパラメータ群を読み出して、ステップＳ４０２で特定された多重化先のメモリブロックに同じ内容を書き込む。選択されたメモリブロックＭＸに記憶された内容と、特定されたメモリブロックＭＹに記憶された内容は、同一となる。
【００６９】
更に、更新部２０４は、選択されたメモリブロック（多重化したメモリブロック）に対応する多重化フラグを上述の第１種の値に更新し、選択されなかったメモリブロック（多重化しなかったメモリブロック）に対応する多重化フラグを上述の第２種の値に更新する（ステップＳ４０４）。
【００７０】
この更新処理により、データ記憶部２０１に記憶されたパラメータ群が多重化して記憶されることとなる。
【００７１】
（出力処理）
次に、上述の各部が実行する出力処理について、図５のフローチャートを用いて説明する。この出力処理では、記憶処理装置２００は、データ記憶部２０１に記憶されたパラメータを読み出す要求を受け付けると、所定の条件を満たした場合に、要求されたパラメータを出力する。以下詳述する。
【００７２】
まず、取得要求受付部２０５は、データ記憶部２０１に記憶されたパラメータを読み出す要求を受け付ける（ステップＳ５０１）。
【００７３】
選択部２０３は、取得要求受付部２０５が受け付けた要求が示すパラメータが記憶されたメモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第１種の値か否かを判別する（ステップＳ５０２）。すなわち、メモリブロックＭＲＥＱが多重化元のメモリブロックか否かを判別する。
【００７４】
多重化フラグが第１種の値でない場合（ステップＳ５０２；ＮＯ）、更新部２０４は、要求されたパラメータが記憶されたメモリブロックからパラメータ群を読み出し（ステップＳ５０３）、成功応答を出力する（ステップＳ５０４）。成功応答は、例えば、ステップＳ５０３で読み出したパラメータ群に含まれる、ステップＳ５０１で受け付けた要求が示すパラメータそのものである。
【００７５】
多重化フラグが第１種の値である場合（ステップＳ５０２；ＹＥＳ）、更新部２０４は、要求されたメモリブロックＭＲＥＱと多重化先のメモリブロックとから、それぞれパラメータ群を読み出す（ステップＳ５０５）。
【００７６】
更新部２０４は、要求されたメモリブロックＭＲＥＱから読み出したパラメータ群と、多重化先のメモリブロックから読み出したパラメータ群とを比較し、一致するか否かを判別する（ステップＳ５０６）。
【００７７】
一致すると判別された場合（ステップＳ５０６；ＹＥＳ）、出力部２０６は、成功応答を出力する（ステップＳ５０４）。例えば、出力部２０６は、ステップＳ５０５で読み出したパラメータ群に含まれる、ステップＳ５０１で受け付けた要求が示すパラメータを出力する。
【００７８】
一致しないと判別された場合（ステップＳ５０６；ＮＯ）、出力部２０６は、失敗応答を出力して（ステップＳ５０７）、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部２０１に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部２０６は、要求されたパラメータを出力しない。
【００７９】
本実施形態によれば、記憶処理装置２００は、多重化元のメモリブロックＭＸに記憶された内容と、多重化先のメモリブロックＭＹに記憶された内容とが一致した場合のみ、要求されたパラメータを出力し、一致しなければ出力しない。例えば、更新処理によってデータ記憶部２０１が更新された後、上述の更新処理以外の手続きによってパラメータが更新されると、不正に書き換えられたと判断してエラーを出力する。したがって、データを勝手に書き換える不正改造・不正行為（いわゆる“チート”）を防ぐことができる。また、メモリブロックのハードウェア的な障害によってデータが改変してしまった場合にも、改変されたデータをそのまま読み出して使用してしまうような不具合を抑止することができる。
【００８０】
（実施形態２）
次に、本発明のその他の実施形態について説明する。上述の実施形態では、取得要求受付部２０５が受け付けた要求が示すパラメータが記憶されたメモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第２種の値である場合（すなわち上述のケース３）、成功応答を出力している。つまり、第２種の値の場合には、多重化が正常に行われているか否かをチェックしていない。本実施形態は、ケース３においても、多重化元のメモリブロックＭＸに記憶されたデータ内容と、多重化先のメモリブロックＭＹに記憶されたデータ内容と、が一致するか否かを判別する点で、上述の実施形態と異なる。以下詳述する。
【００８１】
本実施形態では、上述のケース３の代わりに、次のケース３’とケース３’’を考慮する。
【００８２】
（ケース３’）メモリブロックＭＲＥＱに対応する多重化フラグが第２種の値であって、多重化元のメモリブロックＭＸに記憶されたパラメータ群と、その多重化先のメモリブロックＭＹに記憶されたパラメータ群とが一致する場合、出力部２０６は、メモリブロックＭＲＥＱに記憶されたパラメータを指定する成功応答を出力する。ここで、要求されたメモリブロックＭＲＥＱに対応する多重化フラグが第２種の値であるということは、要求されたメモリブロックＭＲＥＱが、多重化元のメモリブロックＭＸではないことを意味する。
【００８３】
（ケース３’’）メモリブロックＭＲＥＱに対応する多重化フラグが第２種の値であって、多重化元のメモリブロックＭＸに記憶されたパラメータ群と、その多重化先のメモリブロックＭＹに記憶されたパラメータ群とが一致しない場合、出力部２０６は、失敗応答を出力する。
【００８４】
すなわち、出力部２０６は、要求されたメモリブロックＭＲＥＱが多重化されていれば、メモリブロックＭＲＥＱが正しく多重化されているか否かのチェック結果に応じて、成功応答又は失敗応答を出力する。また、要求されたメモリブロックＭＲＥＱが多重化されていなければ、現在多重化されているすべてのメモリブロックの一部又は全部が正しく多重化されているか否かのチェック結果に応じて、成功応答又は失敗応答を出力する。
【００８５】
（出力処理）
図６は、本実施形態の各部が実行する出力処理を説明するためのフローチャートである。
【００８６】
まず、取得要求受付部２０５は、データ記憶部２０１に記憶されたパラメータを読み出す要求を受け付ける（ステップＳ６０１）。要求されるパラメータが格納されるメモリブロックは、多重化されている（つまり多重化フラグに第１種の値が設定されている）場合もあれば、多重化されていない（つまり多重化フラグに第２種の値が設定されている）場合もある。
【００８７】
選択部２０３は、フラグ記憶部２０２に記憶された多重化フラグを参照して、多重化フラグに第１種の値がセットされたメモリブロックを選択する（ステップＳ６０２）。すなわち、選択部２０３は、ステップＳ６０１で要求されたパラメータを格納したメモリブロックが多重化されている場合、要求されたパラメータを格納したメモリブロックを含む、現在多重化されているメモリブロックＭＸの一部又は全部を選択する。また、選択部２０３は、ステップＳ６０１で要求されたパラメータを格納したメモリブロックが多重化されていない場合、現在多重化されているメモリブロックＭＸの一部又は全部を選択する。例えば第１種の値には全アドレス空間（ＡＤＳＴＡＲＴからＡＤＥＮＤまで）のいずれかの物理アドレスが設定されるので、選択部２０３は、多重化フラグに物理アドレスが設定されているメモリブロックを選択する。そして、選択部２０３は、選択したメモリブロックを更新部２０４に通知する。なお、選択部２０３は、多重化フラグが第２種の値でないメモリブロックの一部又は全部を選択してもよい。
【００８８】
更新部２０４は、選択部２０３によって選択されたメモリブロックＭＸと、選択されたメモリブロックＭＸの多重化先のメモリブロックＭＹとから、それぞれパラメータ群を読み出す（ステップＳ６０３）。選択部２０３によって複数のメモリブロックが選択された場合、更新部２０４は、選択されたそれぞれのメモリブロックからパラメータ群を読み出し、また、多重化先のそれぞれのメモリブロックからパラメータ群を読み出す。
【００８９】
更新部２０４は、選択されたメモリブロックＭＸから読み出したパラメータ群と、多重化先のメモリブロックＭＹから読み出したパラメータ群とを比較し、一致するか否かを判別する（ステップＳ６０４）。すなわち、更新部２０４は多重化の正当性をチェックする。選択部２０３によって複数のメモリブロックが選択された場合、更新部２０４は、選択されたそれぞれのメモリブロックについて、多重化の正当性をチェックする。そして、チェック対象のメモリブロック（つまり選択部２０３によって選択されたメモリブロック）のすべてについて、正常に多重化されている場合、“一致する”と判別する。チェック対象のメモリブロックのいずれか１つでも正常に多重化されていない場合、“一致しない”と判別する。
【００９０】
一致しないと判別された場合（ステップＳ６０４；ＮＯ）、出力部２０６は失敗応答を出力して（ステップＳ６０５）、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部２０１に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部２０６は、要求されたパラメータを出力しない。
【００９１】
一方、一致すると判別された場合（ステップＳ６０４；ＹＥＳ）、出力部２０６は、ステップＳ６０１で要求されたパラメータが記憶されたメモリブロックＭＲＥＱからパラメータ群を読み出す（ステップＳ６０６）。
【００９２】
そして、出力部２０６は、読み出したパラメータ群の中から、要求されたパラメータを取りだして出力する（ステップＳ６０７）。つまり、データ記憶部２０１に記憶された内容が、上述の更新処理によって更新された内容と同じ場合、出力部２０６は、要求されたパラメータを出力する。
【００９３】
本実施形態によれば、記憶処理装置２００は、読み出しが要求されたパラメータを格納するメモリブロックが多重化対象である場合だけでなく、多重化対象でない場合にも、多重化元と多重化先の各メモリブロックに記憶された内容が一致するか否かを判別するので、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が増す。
【００９４】
なお、選択部２０３は、ステップＳ６０２において、多重化されているすべてのメモリブロックを選択する代わりに、多重化されているメモリブロックのうち予め決められた個数だけ選択してもよい。例えば、選択部２０３は、多重化されているメモリブロックの中から所定個数だけランダムに選んだメモリブロックをステップＳ６０２で選択してもよい。
【００９５】
（実施形態３）
次に、本発明のその他の実施形態について説明する。上述のケース３’とケース３’’では、要求されたパラメータを格納しているメモリブロックＭＲＥＱに対応する多重化フラグＦＲＥＱが第２種の値の場合、多重化元のメモリブロックＭＸ（Ｘ≠ＲＥＱ）に記憶されたパラメータ群と、その多重化先のメモリブロックＭＹに記憶されたパラメータ群とが一致するか否かを判別している。ここで、多重化対象のメモリブロックの数は１つだけとは限らないため、多重化対象のメモリブロックがＣ個存在するとすれば、Ｃ個のそれぞれについて多重化の正当性を判断することになる。本実施形態は、多重化の正当性を判断するためのメモリブロックＭＸの選択方法を変えた実施形態である。以下詳述する。
【００９６】
選択部２０３は、上述のステップＳ６０２において、フラグ記憶部２０２に記憶された多重化フラグを参照し、要求されたパラメータを格納しているメモリブロックＭＲＥＱより後方の物理アドレスを有するメモリブロックであって、多重化フラグに第１種の値がセットされたメモリブロックを１つ選択する。
【００９７】
図７に示すように、データ記憶部２０１は、Ｎ個のメモリブロックをから構成されるメモリブロック群ＧＸと、Ｎ個のメモリブロックから構成されるメモリブロック群ＧＹとを有する。各メモリブロックには、０，１，…，Ｎ−１，Ｎ，…，２Ｎ−１、というように連続した物理アドレスが付与されている。上述の「メモリブロックＭＲＥＱより後方」とは、物理アドレスがＭＲＥＱ＋１からＭＮ−１までのメモリブロックのことである。
【００９８】
選択部２０３は、物理アドレスがＭＲＥＱからＭＮ−１までのメモリブロックであって、多重化フラグに第１種の値、すなわち多重化されていることを示す値がセットされているメモリブロックを１つ選択する。例えば、選択部２０３は、参照先の物理アドレスの初期値をＭＲＥＱとし（ｉ＝０）、順々にインクリメントし（ｉ＋＋）、多重化フラグに第１種の値がセットされているとして最初にヒットしたメモリブロックを選択する。
【００９９】
もし、ＭＲＥＱからＭＮ−１までに、多重化フラグが第１種の値であるメモリブロックがない場合、先頭のメモリブロックＭ０に戻り、同様にＭＲＥＱ−１まで多重化フラグをチェックする。つまり、チェック対象の物理アドレスをサイクリックに変化させる。そして、選択部２０３は、多重化フラグが第１種の値である最初のメモリブロックを選択する。この場合には、Ｍ０からＭＲＥＱ−１までも含めて「後方」ということになるが、このときの「後方」とは、「循環させる向き」と解釈すればよい。
【０１００】
言い換えれば、チェック対象の物理アドレスｊは、［数２］で表される循環的順序となる。
【０１０１】
ｊ  ＝  （ＲＥＱ＋ｉ）％Ｎ      ・・・［数２］
ただし、ｉ＝０，１，２，…，Ｎ−１とする。
【０１０２】
なお、図６のその他のステップについては同じであるため、説明を省略する。
【０１０３】
本実施形態では、選択部２０３は、メモリブロックを１つだけ選択しているが、例えば最初にヒットしたメモリブロックと２番目にヒットしたメモリブロックの２つというように、所定の個数を選択するようにしてもよい。また、選択部２０３は、Ｃａ番目にヒットしたメモリブロックとＣｂ番目にヒットしたメモリブロックの２つを選択することとし、出力処理を行うたびにＣａとＣｂをランダムに変化させるようにしてもよい。勿論、２つでなく３つ以上のメモリブロックを選択してもよい。
【０１０４】
本実施形態によれば、複数の多重化対象のメモリブロックがある場合には、それらのすべてのメモリブロックについて多重化の正当性をチェックする必要はないので、ＣＰＵ  １０１等の処理負担が軽減される。また、記憶された内容が一致するか否かを判別する対象となるメモリブロックが、要求されたパラメータ（が記憶されたメモリブロック）によって変化するので、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が増す。
【０１０５】
（実施形態４）
次に、本発明のその他の実施形態について説明する。本実施形態は、選択部２０３が多重化対象のメモリブロックを選択する処理の他の実施形態である。
【０１０６】
図８は、本実施形態の記憶処理装置２００の機能的な構成を示す図である。記憶処理装置２００は、識別情報記憶部２０７を更に備える。
【０１０７】
識別情報記憶部２０７は、選択部２０３によって選択された多重化元のメモリブロックＭＸを識別するための情報を記憶する。典型的には、識別情報記憶部２０７は、多重化元のメモリブロックＭＸの物理アドレスを記憶する。ＲＡＭ  １０３が識別情報記憶部２０７として機能する。
【０１０８】
更新部２０４は、上述の更新処理のステップＳ４０１で選択部２０３が多重化元のメモリブロックＭＸを選択した後、選択されたメモリブロックＭＸの物理アドレスを識別情報記憶部２０７に格納する。
【０１０９】
選択部２０３は、ステップＳ４０１において識別情報記憶部２０７に既に識別情報が格納されている場合、すなわち、上述の更新処理が２回目以降に行われる場合、識別情報記憶部２０７に格納されている識別情報が示すメモリブロック以外のメモリブロックを選択する。言い換えれば、選択部２０３は、前回の更新処理で選択したメモリブロックと異なるメモリブロックを選択する。
【０１１０】
なお、識別情報は物理アドレスでなくてもよく、論理アドレス、セクタ番号、ブロック番号など、それぞれのメモリブロックを識別可能な情報であればよい。
【０１１１】
本実施形態によれば、記憶処理装置２００は、データを多重化して記憶する際、前回多重化したメモリブロックと異なるメモリブロックを選択するので、同じメモリブロックが続けて選択されてしまうような偏りを減らすことができ、データを勝手に書き換える不正行為等を防ぐことができる効果が増す。
【０１１２】
（実施形態５）
次に、本発明のその他の実施形態について説明する。本実施形態は、上述の更新処理を開始するタイミングを変えた実施形態である。
【０１１３】
図９は、本実施形態の記憶処理装置２００の機能的な構成を示す図である。記憶処理装置２００は、更新要求受付部２０８を更に備える。
【０１１４】
更新要求受付部２０８は、データ記憶部２０１に記憶されたパラメータを更新する要求を受け付ける。ＣＰＵ  １０１が取得要求受付部２０５として機能する。例えば、ＣＰＵ  １０１は、ＤＶＤ−ＲＯＭドライブ１０７に装着されたＤＶＤ−ＲＯＭからゲームのプログラムを読み出して実行し、ゲームの実行中の任意のタイミングで、データ記憶部２０１に記憶されたゲーム用のパラメータを更新する要求を受け付ける。更新とは、典型的にはパラメータ値の書き換え（変更）であるが、パラメータの削除、パラメータの追加、などでもよい。
【０１１５】
更新部２０４は、更新要求受付部２０８が受け付けた更新要求が示すパラメータが記憶されたメモリブロックを更新する。例えば、あるパラメータＰ１に値Ｖａが記憶されているとき、値Ｖａを値Ｖｂに書き換える更新要求があると、更新部２０４は、この更新要求が示すパラメータＰ１が記憶されたメモリブロックＭ１を読み出し、読み出したメモリブロックＭ１に含まれるパラメータＰ１を値Ｖａから値Ｖｂに変更し、再びメモリブロックＭ１に書き込む。
【０１１６】
選択部２０３は、更新要求受付部２０８が更新要求を受け付けた場合に、多重化対象のメモリブロックとして、データ記憶部２０１が有するいずれかのメモリブロックを選択する。
【０１１７】
選択部２０３によって多重化対象のメモリブロックが選択されると、更新部２０４は、上述の更新処理を開始する。すなわち、更新部２０４は、更新要求受付部２０８がパラメータを更新する要求を受け付けると、多重化対象のメモリブロックを選択して、多重化し直す。
【０１１８】
図１０は、本実施形態の更新処理を説明するためのフローチャートである。
【０１１９】
まず、更新要求受付部２０８は、パラメータを更新する要求があったか否かを判別する（ステップＳ１００１）。
【０１２０】
更新要求がない場合（ステップＳ１００１；ＮＯ）、ステップＳ１００１に戻り、更新要求があるまで待機する。
【０１２１】
一方、更新要求があった場合（ステップＳ１００１；ＹＥＳ）、更新部２０４は、現在多重化対象となっているメモリブロックＭＸと、その多重化先のメモリブロックＭＹから、パラメータ群を読み出す（ステップＳ１００２）。
【０１２２】
そして、更新部２０４は、ステップＳ１００２で読み出した２つのパラメータ群の内容が一致するか否かを判別する（ステップＳ１００３）。
【０１２３】
一致しないと判別された場合（ステップＳ１００３；ＮＯ）、出力部２０６は失敗応答を出力して（ステップＳ１００４）、更新処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部２０１に記憶された内容が、上述の更新処理又は本実施形態の更新処理によって更新された内容と異なる場合、更新部２０４は、要求されたパラメータを更新しない。
【０１２４】
一方、一致すると判別された場合（ステップＳ１００３；ＹＥＳ）、更新部２０４は、更新対象のパラメータが記憶されているメモリブロックを特定する（ステップＳ１００５）。
【０１２５】
そして、更新部２０４は、更新要求があったパラメータを更新する（ステップＳ１００６）。
【０１２６】
本実施形態によれば、記憶処理装置２００は、多重化元のメモリブロックＭＸに記憶された内容と、多重化先のメモリブロックＭＹに記憶された内容とが一致した場合のみ、要求されたパラメータを更新し、一致しなければ更新しない。例えば、上述の実施形態又は本実施形態の更新処理によって（つまり正式な手続きによって）データ記憶部２０１が更新された後、不正に書き換えられたと判断すると、エラーを出力してパラメータを更新しない。したがって、データを読み出すタイミングだけでなく、更新するタイミングにも、不正行為を防ぐことができる。
【０１２７】
（実施形態６）
次に、本発明のその他の実施形態について説明する。上述の実施形態では、データ記憶部２０１は、図３に示すように同じメモリ容量のメモリブロック群ＧＸ，ＧＹを有している。一方、本実施形態は、１つのメモリブロック群のみを有する点で、上述の実施形態と異なる。
【０１２８】
図１１は、本実施形態のデータ記憶部２０１とフラグ記憶部２０２の構成を示す図である。データ記憶部２０１は、Ｌ個（Ｌは２以上の整数）のメモリブロックを有する。それぞれのメモリブロックにパラメータ群が記憶される点は同じである。
【０１２９】
フラグ記憶部２０２の多重化フラグには、上述の実施形態と同様に、第１種の値又は第２種の値が格納される。更新部２０４は、多重化元のメモリブロックＭＸに対応する多重化フラグＦＸに、第１種の値として、多重化先のメモリブロックＭＹの物理アドレスを格納する。また、更新部２０４は、多重化対象でないメモリブロック（ただし多重化先のメモリブロックＭＹを除く）に対応する多重化フラグに、上述のチェックサムやハッシュ値を格納する。
【０１３０】
選択部２０３は、多重化先のメモリブロックＭＹとして、パラメータ群が記憶されていない未使用のメモリブロックを選択する。
【０１３１】
更新部２０４は、更新要求受付部２０８がパラメータを削除する要求を受け付けると、データ記憶部２０１に記憶されたパラメータを削除する。１つのメモリブロックに記憶されたパラメータ群に含まれる全てのパラメータを削除する要求があると、更新部２０４は、要求されたパラメータ群を消去し、パラメータ群が記憶されていないことを示す所定値ＦＢＬＡＮＫを多重化フラグにセットする。つまり、多重化フラグに所定値ＦＢＬＡＮＫが対応付けられたメモリブロックは、未使用のメモリブロックとなる。
【０１３２】
未使用のメモリブロックは、パラメータ群を追加する要求があったときに優先的に使用される。また、選択部２０３は、多重化先のメモリブロックＭＹとして、未使用のメモリブロックを選択する。更新部２０４は、上述の更新処理を行って多重化した後、前回の多重化先のメモリブロックに対応する多重化フラグを所定値ＦＢＬＡＮＫに更新し（すなわち未使用とし）、今回多重化先として選択されたメモリブロックに対応する多重化フラグに第１種の値をセットする。こうすることで、多重化に使用されるメモリブロックが入れ替わる。
【０１３３】
更新部２０４は、多重化先のメモリブロックＭＹに対応する多重化フラグＦＹに、第１種の値として、多重化元のメモリブロックＭＸの物理アドレスを記憶する。つまり、メモリブロックＭＸ，ＭＹは、上述の出力処理において同等に扱われ、どちらが本データでどちらが複製データであるかという点で違いはない。
【０１３４】
ただし、更新部２０４は、多重化フラグＦＹに、多重化対象でないメモリブロックと同様に、上述のチェックサムやハッシュ値を格納することとしてもよい。この場合には、多重化元のメモリブロックＭＸに本データが、多重化先のメモリブロックＭＹに複製データが、それぞれ記憶されることになる。
【０１３５】
また、更新部２０４は、多重化フラグＦＹに、多重化先のメモリブロックであることを示す所定値ＦＣ１を格納してもよい。ただし、この場合、この所定値ＦＣ１は、物理アドレスＡＤＳＴＡＲＴ〜ＡＤＥＮＤのいずれにも一致しない値とする。さらに、多重化対象でないメモリブロックに対応する多重化フラグには、上述のチェックサムやハッシュ値ではなく、ＦＣ１と異なる他の所定値ＦＣ２を格納するのがよい。
【０１３６】
本実施形態によれば、記憶処理装置２００は、データを多重化して記憶する際、本データを記憶する第１のメモリ領域と、複製データを記憶する第２のメモリ領域と、を明確に区別する必要がないので、メモリ管理が簡略化される。また、上述の実施形態では第１のメモリ領域と同じサイズの第２のメモリ領域を必要とし、ＣＰＵ  １０１が自由に利用可能なサイズが実質的に半分になっていたが、本実施形態によれば、利用可能なメモリ領域をより多く確保することができるようになる。
【０１３７】
なお、本実施形態は、上述の各実施形態と容易に組み合わせて構成することができる。例えば、ステップＳ１００１において、更新要求があったか否かを判別するのに加えて、取得要求（読み出す要求）があったか否かを判別してもよい。このようにすれば、記憶処理装置２００は、パラメータの更新のタイミングだけでなく、読み出しのタイミングにおいても多重化を行うことができ、更に不正行為を防ぐことができる効果が増す。
【０１３８】
（実施形態７）
次に、本発明のその他の実施形態について説明する。上述の実施形態では、多重化フラグにメモリブロックの物理アドレスを格納している。本実施形態では、多重化フラグに物理アドレスでない他の所定の値を格納する。
【０１３９】
図１２は、本実施形態のデータ記憶部２０１とフラグ記憶部２０２の構成例を示す図である。データ記憶部２０１は、それぞれＮ個のメモリブロックから構成される４つのメモリブロック群ＧＡ，ＧＢ，ＧＣ，ＧＤを有する。フラグ記憶部２０２は、各々のメモリブロックに対応する多重化フラグを記憶する。なお、本図のようなメモリブロックの構成を、“Ｎ行４列”と呼ぶことにする。本実施形態では４列であるが、Ｍ列（Ｍは１以上の整数）とした“Ｎ行Ｍ列”の構成にすることができる。
【０１４０】
データ記憶部２０１は、１つ以上のパラメータを含むパラメータ群を、選択部２０３によって選択された各メモリブロックに記憶する。メモリブロックの選択の仕方（多重化パターン）には次に示すような様々なものがある。
【０１４１】
（パターン１）例えば、更新部２０４は、メモリブロック群ＧＡのｉ番目（ｉは０以上Ｎ−１以下の整数）のメモリブロックＭＡｉに格納されるパラメータ群を、他のメモリブロック群のメモリブロックＭＢｉ，ＭＣｉ，ＭＤｉにも記憶させ、メモリブロックＭＡｉ，ＭＢｉ，ＭＣｉ，ＭＤｉに対応する多重化フラグに所定値ＦＭＵＬＴＩを記憶させる（すなわち多重化する）。本パターンでは、パラメータ群は四重化される。
【０１４２】
（パターン２）例えば、更新部２０４は、メモリブロック群ＧＢのｉ＋１番目のメモリブロックＭＢｉ＋１に格納されるパラメータ群を、他のメモリブロック群のメモリブロックＭＣｉ＋１にも記憶させ、メモリブロックＭＢｉ＋１，ＭＣｉ＋１に対応する多重化フラグに所定値ＦＭＵＬＴＩを記憶させる。残りのメモリブロックＭＡｉ＋１，ＭＤｉ＋１に対応する多重化フラグに他の所定値ＦＢＬＡＮＫ（≠ＦＭＵＬＴＩ）を記憶させる。メモリブロックＭＡｉ＋１，ＭＤｉ＋１にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。本パターンでは、パラメータ群は二重化される。選択部２０３は、多重化対象のメモリブロック（この例ではＭＢｉ＋１とＭＣｉ＋１の２つ）として、４つのメモリブロック群のうちいずれのメモリブロック群の組み合わせで選択してもよい。
【０１４３】
（パターン３）例えば、更新部２０４は、メモリブロック群ＧＡのｉ＋２番目のメモリブロックＭＡｉ＋２に格納されるパラメータ群を、他のメモリブロック群のメモリブロックＭＣｉ＋２，ＭＤｉ＋２にも記憶させ、メモリブロックＭＡｉ＋２，ＭＣｉ＋２，ＭＤｉ＋２に対応する多重化フラグに所定値ＦＭＵＬＴＩを記憶させる。残りのメモリブロックＭＢｉ＋２に対応する多重化フラグに所定値ＦＢＬＡＮＫを記憶させる。メモリブロックＭＢｉ＋２にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。本パターンでは、パラメータ群は三重化される。選択部２０３は、多重化対象のメモリブロック（この例ではＭＡｉ＋２，ＭＣｉ＋２，ＭＤｉ＋２の３つ）として、４つのメモリブロック群のうちいずれのメモリブロック群の組み合わせで選択してもよい。
【０１４４】
（パターン４）例えば、更新部２０４は、メモリブロック群ＧＤのｉ＋３番目のメモリブロックＭＤｉ＋３にパラメータ群を記憶させ、メモリブロックＭＤｉ＋３に対応する多重化フラグに所定値ＦＭＵＬＴＩを記憶させる。この場合、ｉ＋３番目のパラメータ群は多重化されない。メモリブロックＭＡｉ＋３，ＭＢｉ＋３，ＭＣｉ＋３にはパラメータ群を格納しないようにしてもよいし、ダミーデータを格納してもよい。選択部２０３は、パラメータ群が記憶されるメモリブロック（この例ではＭＤｉ＋３の１つ）として、４つのメモリブロック群のうちいずれのメモリブロック群を選択してもよい。
【０１４５】
選択部２０３は、上記のいずれのパターンでメモリブロックを選択してもよい。例えば、選択部２０３は、各行について上記のパターンの中からランダムに１つを選んで、多重化対象のメモリブロックを選択する。
【０１４６】
また、選択部２０３は、任意のタイミングで多重化対象のメモリブロックを選択し直してもよい。例えば、選択部２０３は、垂直同期回数やタイマー等を用いた所定の時間サイクルで選択し直す。
【０１４７】
したがって、多重化対象のメモリブロックを所定の時間毎に様々なパターンで入れ替えて多重化し直すことになり、データを勝手に書き換える不正改造や不正行為、ハードウェア障害に起因するデータ改変による誤動作を防ぐことができる効果が更に増す。
【０１４８】
上述の多重化パターンは例示であり、選択部２０３は他の方法によりメモリブロックを選択してもよい。
【０１４９】
次に、本実施形態の更新処理について、図１３のフローチャートを用いて説明する。データ記憶部２０１はＮ行Ｍ列のメモリブロックから構成され、選択部２０３はＬ種類の多重化パターンから選択する。言い換えれば、データ記憶部２０１には、Ｎ個のパラメータ群が格納される。Ｎ，Ｍ，Ｌはいずれも１以上の整数である。
【０１５０】
まず、選択部２０３は、現在、多重化する所定の更新タイミングか否かを判別する（ステップＳ１３０１）。選択部２０３は、例えば垂直同期信号（VSYNC）が所定回数に達したとき、更新タイミングであると判別する。所定の更新タイミングでないと判別された場合（ステップＳ１３０１；ＮＯ）、選択部２０３は所定の更新タイミングになるまで待機する。
【０１５１】
一方、所定の更新タイミングであると判別された場合（ステップＳ１３０１；ＹＥＳ）、選択部２０３は、カウンターｉを初期化する（ステップＳ１３０２）。すなわちｉ＝０とする。カウンターｉは、０以上Ｎ−１以下の整数であり、以下に述べるステップＳ１３０３〜ステップＳ１３０５の処理はＮ回ループする。
【０１５２】
選択部２０３は、ｉ行目のメモリブロックの多重化パターンとして、Ｌ種類の中から１つ選択する（ステップＳ１３０３）。例えば、選択部２０３は、Ｌ種類の中からランダムに１つ選択する。
【０１５３】
選択部２０３は、ステップＳ１３０３の選択結果に基づいて、多重化対象のメモリブロックを選択する（ステップＳ１３０４）。
【０１５４】
更新部２０４は、ｉ行目のメモリブロックを多重化する（ステップＳ１３０５）。
【０１５５】
詳細には、ｉ行目に格納されたパラメータ群を読み出してＲＡＭ１０３の所定領域や未使用領域に一時記憶して待避させる。そして、更新部２０４は、ステップＳ１３０４で選択したメモリブロックに、待避させておいたパラメータ群を格納する。つまり、更新部２０４は、選択部２０３が選択したメモリブロックにｉ行目のパラメータ群をコピーする。ステップＳ１３０４で選択しなかったメモリブロックにはダミーデータ等を格納してもよいし、既に格納されたデータを更新せずにそのままにしてもよい。
【０１５６】
さらに、更新部２０４は、ｉ行目のパラメータ群を格納したメモリブロック（多重化対象のメモリブロック）に対応する多重化フラグに、多重化に用いられたことを示す値ＦＭＵＬＴＩを格納する。また、パラメータ群を格納しなかったメモリブロック（多重化対象でないメモリブロック）に対応する多重化フラグに、多重化に用いられなかったことを示す値ＦＢＬＡＮＫを格納する。このようにして更新部２０４はｉ行目のメモリブロックを多重化する。
【０１５７】
ここで、更新部２０４は、多重化対象ではないことを示す所定値ＦＢＬＡＮＫの代わりに、対応するメモリブロックに格納されているデータのハッシュ値やチェックサム値、あるいは乱数値等を多重化フラグに記憶させてもよい。
【０１５８】
また、更新部２０４は、各行のメモリブロックのうち選択部２０３が選択しなかったメモリブロック（言い換えれば、対応する多重化フラグに所定値ＦＭＵＬＴＩでない値が格納されたメモリブロック）に、選択部２０３が選択したメモリブロックのハッシュ値やチェックサム値、あるいは乱数値等を記憶させてもよい。
【０１５９】
また、更新部２０４は、各行のメモリブロックのうち選択部２０３が選択しなかったメモリブロックが複数個存在する場合、これらの選択しなかったメモリブロックのうちいずれか１つに記憶されたデータを、残りの選択しなかったメモリブロックにダミーデータ１３１０としてコピーしてもよい。
【０１６０】
例えば、多重化し直す前のメモリブロックに図１４（ａ）のようにパラメータ群等が記憶されているとする。多重化に用いるメモリブロックとして選択部２０３が図１４（ｂ）に示すようにメモリブロックＭＢ，ＭＣを選択すると、メモリブロックＭＢ，ＭＣには待避したパラメータ群を記憶させ、残りのメモリブロックＭＡ，ＭＤには同一のダミーデータを記憶させる。ダミーデータには、例えば多重化し直す前にメモリブロックＭＡ，ＭＤのどちらかに記憶されていたデータを用いる。この場合、一見しただけではダミーデータ１３１０があたかも「正規に多重化されたパラメータ群」であるかのように見え、多重化フラグを解読しない限り、どのメモリブロックがパラメータ群を記憶したメモリブロックなのか分からなくなるので、チート行為への抑止力としての効果が大きくなる。
【０１６１】
また、更新部２０４は、各行のメモリブロックのうち選択部２０３が選択しなかったメモリブロックに、選択したメモリブロックの前後のアドレスが付与されたメモリブロックであって多重化フラグに所定値ＦＭＵＬＴＩでない値が記憶されたメモリブロックと同じデータを記憶させてもよい。前後のアドレスとは、典型的には隣り合う前後のアドレスであるが、所定量ＡＤＷＩＤＴＨ以下だけ離れたアドレス（例えばＡＤＷＩＤＴＨだけ前のアドレス、ＡＤＷＩＤＴＨだけ後のアドレスなど）でもよい。
【０１６２】
例えば、多重化し直す前のメモリブロックに図１４（ｃ）のようにパラメータ群等が記憶されているとする。多重化に用いるメモリブロックとして選択部２０３が図１４（ｄ）に示すようにメモリブロックＭＢｉ，ＭＣｉを選択すると、更新部２０４は、メモリブロックＭＢ，ＭＣには、待避したパラメータ群を記憶させる。また、残りのメモリブロックＭＡｉ，ＭＤｉには、アドレスが前後に隣り合っていて且つ多重化フラグがＦＭＵＬＴＩでないメモリブロックのうち、いずれかと同じデータを記憶させる。本図では、更新部２０４は、アドレスがＭＤｉ−１，ＭＡｉ＋１，ＭＢｉ＋１の３つのうちのいずれか１つのメモリブロックからデータを読み出すこととなるが、ＭＤｉ−１を採用している。例えば更新部２０４は、これらの３つの中からランダムに１つを採用すればよい。
【０１６３】
なお、更新部２０４が採用するメモリブロックは、選択部２０３が選択したメモリブロックのアドレスの近くであることが望ましい。ハードディスクなどの磁気ディスク装置の場合、同じ磁気ディスクの同じトラック内のアドレスを選択部２０３が選択してデータを読み出すことにすれば、データのコピーのために磁気ヘッドを移動する処理に要する時間（シーク・タイム）を減らすことができ、より効率よく多重化できる。また、同じセクタ内のアドレスを選択部２０３が選択してデータを読み出すことにすれば、ハードディスクのバッファーメモリの書き換え頻度を減らすことができ、より効率良く多重化できる。
【０１６４】
次に、選択部２０３は、カウンターｉがＮ−１か否かを判別する（ステップＳ１３０６）。すなわち、選択部２０３は、Ｎ行のすべてについて多重化したか否かを判別する。
【０１６５】
ｉ＝Ｎ−１である場合（ステップＳ１３０６；ＹＥＳ）、更新処理を終了する。つまり、Ｎ行Ｍ列のメモリブロックすべてについて多重化を終了したことになる。
【０１６６】
ｉ＝Ｎ−１でない場合（ステップＳ１３０６；ＮＯ）、選択部２０３はカウンターをインクリメント（ｉ＝ｉ＋１）し（ステップＳ１３０７）、ステップＳ１３０３に戻る。つまり、Ｎ行Ｍ列のメモリブロックすべてについて未だ多重化を終えていないので、残りのメモリブロックについて引き続き多重化をする。
【０１６７】
（出力処理）
次に、本実施形態の出力処理について、図１５のフローチャートを用いて説明する。上述のように、本実施形態のデータ記憶部２０１にはＮ個のパラメータ群が格納され、最大でＭ重に多重化されている。
【０１６８】
まず、取得要求受付部２０５は、データ記憶部２０１に記憶されたパラメータを読み出す要求を受け付ける（ステップＳ１５０１）。
【０１６９】
選択部２０３は、取得要求受付部２０５が受け付けた要求が示すパラメータが、何行目のメモリブロックのパラメータ群に含まれているかを判別する（ステップＳ１５０２）。判別の結果、選択部２０３は、要求されたパラメータが例えばＸ行目のパラメータ群に含まれていると判別する。
【０１７０】
更新部２０４は、ステップＳ１５０２で判別された行のメモリブロックのうち、多重化フラグに第１種の値が格納されたメモリブロックからパラメータ群を読み出す（ステップＳ１５０３）。多重化フラグに第１種の値が格納された複数のメモリブロックがＸ行目にある場合、更新部２０４はそれらすべてのメモリブロックからパラメータ群を読み出す。
【０１７１】
更新部２０４は、ステップＳ１５０３で読み出したパラメータ群のデータ内容が互いに一致するか否かを判別する（ステップＳ１５０４）。ただし、多重化フラグに第１種の値が格納されたメモリブロックがＸ行目に１つしかない場合、更新部２０４は、「一致する」と判別することとする。
【０１７２】
一致すると判別された場合（ステップＳ１５０４；ＹＥＳ）、出力部２０６は、成功応答を出力する（ステップＳ１５０５）。例えば、出力部２０６は、ステップＳ１５０４で読み出したパラメータ群に含まれる、ステップＳ１５０１で受け付けた要求が示すパラメータを、成功応答として出力する。
【０１７３】
一致しないと判別された場合（ステップＳ１５０４；ＮＯ）、出力部２０６は、失敗応答を出力して（ステップＳ１５０６）、出力処理を終了する。失敗応答は、例えば所定のエラーコードである。つまり、データ記憶部２０１に記憶された内容が、上述の更新処理によって更新された内容と異なる場合、出力部２０６は、要求されたパラメータを出力しない。
【０１７４】
本実施形態によれば、記憶処理装置２００は、Ｎ個のパラメータ群のそれぞれについて異なった方法で多重化するので、多重化がより複雑になり、不正なデータ改変を防ぐことができる効果が更に増す。
【０１７５】
上述の各実施形態では、出力部２０６は、成功応答としてパラメータを出力しているが、正常に多重化されていることを示す所定値を出力することとしてもよい。例えば、取得要求受付部２０５や更新要求受付部２０８が要求を受け付けたか否かに関わらず、定期的に出力処理を実行し、パラメータが正常に記憶されているか否かをチェックするための手段として本発明を利用することも可能である。
【０１７６】
本発明は、上述した実施形態に限定されず、種々の変形及び応用が可能である。また、上述した実施形態の各構成要素を自由に組み合わせることも可能である。
【０１７７】
記憶処理装置２００を装置の全部又は一部として動作させるためのプログラムを、メモリカード、ＣＤ−ＲＯＭ、ＤＶＤ、ＭＯ（Magneto Optical disk）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１７８】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【０１７９】
以上説明したように、本発明によれば、コンピュータゲームにおけるチート行為や情報記録媒体の不良等に起因するデータ改変を抑止するために好適な記憶処理装置、記憶処理方法、ならびに、プログラムを提供することができる。
【図面の簡単な説明】
【０１８０】
【図１】本実施形態の記憶処理装置が実現される典型的なゲーム装置の概要構成を示す図である。
【図２】記憶処理装置の機能的構成を説明するための図である。
【図３】データ記憶部とフラグ記憶部の構成を説明するための図である。
【図４】更新処理を説明するためのフローチャートである。
【図５】出力処理を説明するためのフローチャートである。
【図６】実施形態２の出力処理を説明するためのフローチャートである。
【図７】実施形態３のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図８】実施形態４の記憶処理装置の機能的構成を説明するための図である。
【図９】実施形態５の記憶処理装置の機能的構成を説明するための図である。
【図１０】実施形態５の更新処理を説明するためのフローチャートである。
【図１１】実施形態６のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図１２】実施形態７のデータ記憶部とフラグ記憶部の構成を説明するための図である。
【図１３】実施形態７の更新処理を説明するためのフローチャートである。
【図１４】（ａ）と（ｃ）は更新部が多重化する前にデータ記憶部とフラグ記憶部に記憶されるデータの構成例である。（ｂ）と（ｄ）は更新部が多重化した後にデータ記憶部とフラグ記憶部に記憶されるデータの構成例である。
【図１５】実施形態７の出力処理を説明するためのフローチャートである。
【符号の説明】
【０１８１】
１００  情報処理装置
１０１  ＣＰＵ
１０２  ＲＯＭ
１０３  ＲＡＭ
１０４  インターフェース
１０５  コントローラ
１０６  外部メモリ
１０７  ＤＶＤ−ＲＯＭドライブ
１０８  画像処理部
１０９  音声処理部
１１０  ＮＩＣ
２００  記憶処理装置
２０１  データ記憶部
２０２  フラグ記憶部
２０３  選択部
２０４  更新部
２０５  取得要求受付部
２０６  出力部
２０７  識別情報記憶部
２０８  更新要求受付部
【図１】
0004588751.tif 000002
【図２】
0004588751.tif 000003
【図３】
0004588751.tif 000004
【図４】
0004588751.tif 000005
【図５】
0004588751.tif 000006
【図６】
0004588751.tif 000007
【図７】
0004588751.tif 000008
【図８】
0004588751.tif 000009
【図９】
0004588751.tif 000010
【図１０】
0004588751.tif 000011
【図１１】
0004588751.tif 000012
【図１２】
0004588751.tif 000013
【図１３】
0004588751.tif 000014
【図１４】
0004588751.tif 000015
【図１５】
0004588751.tif 000016