(57)【特許請求の範囲】
【請求項１】
顧客が持参した記憶媒体に格納されているソフトウェアのプログラムを書き換えることにより、顧客にソフトウェアを販売するためのソフトウェア書換システムであって、
顧客に販売する複数種類のソフトウェアのプログラムを記憶したソフトウェア記憶手段と、
前記ソフトウェア記憶手段に記憶されているソフトウェア毎に、当該ソフトウェアが継承判定を必要とするソフトウェアであるか否かを示すプログラム継承フラグを記憶したフラグ記憶手段と、
顧客またはソフトウェアを販売する店員による入力操作に基づいて、前記ソフトウェア記憶手段に記憶されている複数種類のソフトウェアの中から、顧客が購入しようとする１以上のソフトウェアを選択するソフトウェア選択手段と、
前記ソフトウェア選択手段によって選択されたソフトウェアが継承判定を必要とするソフトウェアであるか否かを、前記フラグ記憶手段に記憶されている前記プログラム継承フラグに基づいて判断する判断手段と、
前記ソフトウェア選択手段によって選択されたソフトウェアが継承判定を必要とするソフトウェアであることを前記判断手段が判断したとき、前記ソフトウェア記憶手段に記憶されている前記ソフトウェア選択手段によって選択されたソフトウェアの関連情報と前記記憶媒体に記憶されている各ソフトウェアの関連情報を参照し、前記記憶媒体に記憶されているソフトウェアの関連情報の中に、前記ソフトウェア記憶手段に記憶されている前記ソフトウェア選択手段によって選択されたソフトウェアの関連情報と所定の関係にある関連情報が存在するか否かを判断することによって、当該選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが前記記憶媒体内に記憶されているか否かを判定する継承判定手段と、
前記継承判定手段による判定の結果、前記ソフトウェア選択手段によって選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが前記記憶媒体に記憶されていると判断されたとき、当該選択されたソフトウェアのプログラムを前記記憶媒体に書き込む書込制御手段とを備える、ソフトウェア書換システム。
【請求項２】
前記記憶媒体は、ソフトウェアのプログラムを記憶するプログラム記憶領域と、プログラムの進行によって生じかつプログラムの進行に関連して利用されるバックアップデータを記憶するバックアップデータ記憶領域とを有し、
前記書込制御手段は、前記継承判定手段による判定の結果、前記ソフトウェア選択手段によって選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが前記記憶媒体内に記憶されていると判断されたとき、当該選択されたソフトウェアのプログラムを前記プログラム記憶領域に書き込むと共に、前記バックアップデータ記憶領域に記憶されている当該所定の継承条件を満たすソフトウェアのバックアップデータを前記プログラム記憶領域に書き込まれるソフトウェアのバックアップデータとして前記バックアップデータ記憶領域に書き込むことによって、当該所定の継承条件を満たすソフトウェアのバックアップデータを前記プログラム記憶領域に書き込まれるソフトウェアのバックアップデータとして継承させることを特徴とする、請求項１に記載のソフトウェア書換システム。
【請求項３】
前記継承判定手段は、前記ソフトウェア記憶手段に記憶されている前記ソフトウェア選択手段によって選択されたソフトウェアのタイトルと前記記憶媒体に記憶されている各ソフトウェアのタイトルを参照し、前記ソフトウェア選択手段によって選択されたソフトウェアのタイトルに対してタイトルのうちのシリーズ番号を除く部分が同一でありかつタイトルのうちのシリーズ番号が当該ソフトウェアよりも古いタイトルを有するソフトウェアが前記記憶媒体に記憶されているときに、前記所定の継承条件が満たされていると判定する、請求項１または２に記載のソフトウェア書換システム。
【請求項４】
前記継承判定手段は、前記ソフトウェア選択手段によって選択されたソフトウェアのタイトルに対してタイトルのシリーズ番号を除く部分が同一でありかつシリーズ番号が当該ソフトウェアよりも１つだけ古いタイトルを有するソフトウェアが前記記憶媒体に記憶されているときに、前記所定の継承条件が満たされていると判定する、請求項３に記載のソフトウェア書換システム。
【請求項５】
前記継承判定手段による判定の結果、前記ソフトウェア選択手段によって選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが前記記憶媒体に記憶されていないと判断されたときに、エラーメッセージを表示させる手段をさらに備えた、請求項１に記載のソフトウェア書換システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウェア書換システムに関し、より特定的には、ユーザが持参した記憶媒体にプログラム（例えば、ゲーム用プログラム）を書き込むことにより、当該プログラムをユーザに販売するためのソフトウェア書換システムに関する。
【０００２】
【従来の技術】
コンピュータ装置の急速な普及に伴い、ゲーム、教育、ビジネス等の広い分野において、頻繁にソフトウェアが取り引きされている。現在、取引の主流は、ソフトウェアのプログラムが格納された記録媒体（フロッピーディスク、ＲＯＭカートリッジ、ＣＤ−ＲＯＭ等）を、パッケージソフトとしてユーザに提供する方法である。
【０００３】
しかしながら、ユーザにとっては、プログラム自体が重要なのであって、プログラムを格納する記録媒体は重要ではない。もし、プログラムのみをユーザに提供できれば、記録媒体にかかるコストを削減でき、より安価にソフトウェアの提供が可能となる。一方、販売店側にしても、プログラムを格納した記録媒体をソフトウェアの種類毎に在庫しておく必要がないので、省スペース化が図れると共に、資金の滞留が防げるので、より健全な経営が可能となる。
【０００４】
そこで、プログラムのみを販売できるような販売装置の実現が強く望まれている。本発明は、ユーザが持参した記録媒体にプログラムを書き込むことにより、プログラムのみをユーザに販売するシステムに向けられているが、そのためには記録媒体に格納されたプログラムを書き換える必要がある。
【０００５】
【発明が解決しようとする課題】
しかしながら、シリーズ化されたソフトウェアを販売する場合、前作のソフトウェアを実行していないユーザに対して新作のソフトウェアを販売することが好ましくない場合がある。例えば、ソフトウェアがゲームプログラムの場合、前作のゲームをプレイしていないユーザが新作のゲームをプレイすると、シリーズ全体のストーリ展開が見えなくなり、ユーザにゲームの真の面白さを評価してもらえない事態が生じる。また、ソフトウェアが教育プログラムの場合、前作の教育プログラムを実行していないユーザが新作の教育プログラムを実行すると、学習の進行が新作の教育プログラムに追い付かず、結局、新作の教育プログラムを途中で投げ出してしまうおそれがある。
【０００６】
また、前作のゲームをプレイしたユーザは、前作のゲームで苦労して育てたゲームキャラクタを、当然に新作のゲームでも使用したいという要求を持つことになる。しかしながら、現在のテレビゲームシステムでは、前作のゲームで育てたゲームキャラクタを新作のゲームで使用すると、前作のゲームで育てたゲームキャラクタをそのまま前作のゲームで使用することができなくなってしまう。同様の不都合は、形を変えて教育プログラムやビジネスプログラムにおいても起こり得る。例えば小学校低学年用の教育プログラムを終了後、小学校高学年用の教育プログラムに移る場合、低学年用の教育プログラムでの理解度を示すパラメータ（成績、点数、得意分野）を高学年用の教育プログラムに引き継げば、出題内容を理解度に応じて変えることができ、より学力に応じた指導ができる。しかしながら、このようなパラメータの引継を行うと、低学年用の教育プログラムを復習する場合に元のパラメータを使用できなくなってしまう。
【０００７】
それゆえに、本発明の目的は、シリーズ化されたソフトウェアの販売順序を考慮しつつソフトウェアのみを効率的に販売できるソフトウェア書換システムを提供することである。
本発明の他の目的は、シリーズ化されたソフトウェアのプログラムを書き込む際に、プログラムの進行によって生じかつプログラムの進行に関連して利用されるバックアップデータを、不都合無く継承することができるソフトウェア書き換えシステムを提供することである。
【０００８】
【課題を解決するための手段および発明の効果】
第１の発明は、顧客が持参した記憶媒体に格納されているソフトウェアのプログラムを書き換えることにより、顧客にソフトウェアを販売するためのソフトウェア書換システムであって、
顧客に販売する複数種類のソフトウェアのプログラムを記憶したソフトウェア記憶手段と、
ソフトウェア記憶手段に記憶されているソフトウェア毎に、当該ソフトウェアが継承判定を必要とするソフトウェアであるか否かを示すプログラム継承フラグを記憶したフラグ記憶手段と、
顧客またはソフトウェアを販売する店員による入力操作に基づいて、ソフトウェア記憶手段に記憶されている複数種類のソフトウェアの中から、顧客が購入しようとする１以上のソフトウェアを選択するソフトウェア選択手段と、
ソフトウェア選択手段によって選択されたソフトウェアが継承判定を必要とするソフトウェアであるか否かを、フラグ記憶手段に記憶されているプログラム継承フラグに基づいて判断する判断手段と、
ソフトウェア選択手段によって選択されたソフトウェアが継承判定を必要とするソフトウェアであることを判断手段が判断したとき、ソフトウェア記憶手段に記憶されているソフトウェア選択手段によって選択されたソフトウェアの関連情報と記憶媒体に記憶されている各ソフトウェアの関連情報を参照し、記憶媒体に記憶されているソフトウェアの関連情報の中に、ソフトウェア記憶手段に記憶されているソフトウェア選択手段によって選択されたソフトウェアの関連情報と所定の関係にある関連情報が存在するか否かを判断することによって、当該選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが記憶媒体内に記憶されているか否かを判定する継承判定手段と、
継承判定手段による判定の結果、ソフトウェア選択手段によって選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが記憶媒体に記憶されていると判断されたとき、当該選択されたソフトウェアのプログラムを記憶媒体に書き込む書込制御手段とを備える、ソフトウェア書換システム。
【０００９】
上記のように、第１の発明によれば、顧客が持参した記憶媒体に格納されたソフトウェアのプログラムを書き換えることで、ソフトウェアのみを販売することができる。その際、購入のために選択されたソフトウェアが継承判定を必要とするソフトウェアである場合、当該選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが記憶媒体内に記憶されているときにのみ、当該選択されたソフトウェアのプログラムを記憶媒体に書き込むようにしているので、例えばシリーズ化されたソフトウェアであって、シリーズ番号順に実行して欲しいようなソフトウェアを、販売者が希望する順番で販売することができる。
【００１０】
第２の発明は、第１の発明において、
記憶媒体は、ソフトウェアのプログラムを記憶するプログラム記憶領域と、プログラムの進行によって生じかつプログラムの進行に関連して利用されるバックアップデータを記憶するバックアップデータ記憶領域とを有し、
書込制御手段は、継承判定手段による判定の結果、ソフトウェア選択手段によって選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが記憶媒体内に記憶されていると判断されたとき、当該選択されたソフトウェアのプログラムをプログラム記憶領域に書き込むと共に、バックアップデータ記憶領域に記憶されている当該所定の継承条件を満たすソフトウェアのバックアップデータをプログラム記憶領域に書き込まれるソフトウェアのバックアップデータとしてバックアップデータ記憶領域に書き込むことによって、当該所定の継承条件を満たすソフトウェアのバックアップデータをプログラム記憶領域に書き込まれるソフトウェアのバックアップデータとして継承させることを特徴とする。
【００１１】
上記のように、第２の発明によれば、ソフトウェア選択手段によって選択されたソフトウェアのプログラムを記憶媒体に書き込むとき、所定の継承条件を満たす記憶媒体内のソフトウェアのバックアップデータを当該選択されたソフトウェアのバックアップデータとして記憶媒体内で継承させるようにしているので、当該バックアップデータを、既に書き込まれているソフトウェアおよび新たに書き込まれるソフトウェアの両方で用いることが可能となる。
【００１２】
第３の発明は、第１または第２の発明において、
継承判定手段は、ソフトウェア記憶手段に記憶されているソフトウェア選択手段によって選択されたソフトウェアのタイトルと記憶媒体に記憶されている各ソフトウェアのタイトルを参照し、ソフトウェア選択手段によって選択されたソフトウェアのタイトルに対してタイトルのうちのシリーズ番号を除く部分が同一でありかつタイトルのうちのシリーズ番号が当該ソフトウェアよりも古いタイトルを有するソフトウェアが記憶媒体に記憶されているときに、所定の継承条件が満たされていると判定することを特徴とする。
【００１３】
第４の発明は、第３の発明において、
継承判定手段は、ソフトウェア選択手段によって選択されたソフトウェアのタイトルに対してタイトルのシリーズ番号を除く部分が同一でありかつシリーズ番号が当該ソフトウェアよりも１つだけ古いタイトルを有するソフトウェアが記憶媒体に記憶されているときに、所定の継承条件が満たされていると判定することを特徴とする。
第５の発明は、第１の発明において、
継承判定手段による判定の結果、ソフトウェア選択手段によって選択されたソフトウェアに対して所定の継承条件を満たすソフトウェアが記憶媒体に記憶されていないと判断されたときに、エラーメッセージを表示させる手段をさらに備えたことを特徴とする。
【００１４】
【発明の実施の形態】
図１は、本発明の一実施形態に係るソフトウェア書換システムの第１の構成例を示すブロック図である。図１において、本実施形態のソフトウェア書換システムは、セットされたゲームカセット１０にゲームプログラムを書き込むためのカセットライタ２０と、このカセットライタ２０を操作するための店内端末３０とを備えている。
【００１５】
カセットライタ２０は、ＣＰＵ２１と、ＣＤ−ＲＯＭドライブ２２と、ＲＡＭ２３と、フラッシュメモリ２４と、ＡＳＩＣ２５と、コネクタ２６とを含む。ＣＰＵ２１には、ＣＤ−ＲＯＭドライブ２２、ＲＡＭ２３、フラッシュメモリ２４、ＡＳＩＣ２５が接続されている。コネクタ２６は、ＡＳＩＣ２５と接続されている。このコネクタ２６には、ゲームカセット１０内のコネクタ１１が着脱自在に装着される。これによって、ゲームカセット１０とカセットライタ２０とが電気的に接続される。店内端末３０は、カセットライタ２０の内部バス２７に直結され、この内部バス２７を介してＣＰＵ２１と接続されている。
【００１６】
ＣＤ−ＲＯＭドライブ２２は、セットされたＣＤ−ＲＯＭ４０からデータを読み出してＣＰＵ２１に与える。後述するように、このデータには、書込制御プログラムと、ゲーム選択プログラムと、ゲームプログラムと、関連情報とが含まれている。ＣＰＵ２１は、上記の書込制御プログラムに従った動作を実行する。ＲＡＭ２３は、ＣＤ−ＲＯＭ２２から読み出されたゲームプログラムおよび関連情報と、ＣＰＵ２１の演算処理に必要なデータとを記憶する。フラッシュメモリ２４は、ＣＤ−ＲＯＭドライブ２２から読み出された書込制御プログラムを記憶する。ＡＳＩＣ２５は、ＣＰＵ２１からの命令に従ってゲームカセット１０に対するデータの書き込みおよび読み出しを制御する。つまり、ＡＳＩＣ２５は、ゲームカセット１０に対する入出力インタフェイスである。
【００１７】
なお、店内端末３０は、図２に示すように、ＬＡＮケーブル２９およびＬＡＮボード２８を介して、ＣＰＵ２１と接続されても良い。また、ＣＰＵ２１は、ＬＡＮケーブル２９およびＬＡＮボード２８を介して接続された電子式キャッシュレジスタ５０と連動するような構成であっても良い。
図１のシステム構成は、カセットライタ２０と店内端末３０との間の物理的距離が近いが、図２のシステム構成では、店内端末３０がカセットライタ２０から離れた位置に設置される。図１のシステム構成は、客からの注文を聞いた店員が店内端末３０を操作するような形態の店に適している。一方、図２のシステム構成は、顧客自身が店内端末３０を操作して必要なゲームプログラムを注文するような形態の店に適している。
【００１８】
図３は、図１に示すゲームカセット１０と、当該ゲームカセット１０が接続されるゲーム機６０との詳細な構成を示すブロック図である。図３を参照して、ゲームカセット１０は、コネクタ１１と、フラッシュメモリ１２と、ＳＲＡＭ１３と、メモリコントローラ１４と、バックアップＩＣ１５と、バックアップ用電池１６と、チェック用ＩＣ１７とを含む。フラッシュメモリ１２およびＳＲＡＭ１３は、データバスＤＢ１を介してコネクタ１１に接続されると共に、アドレスバスＡＢ１を介してメモリコントローラ１４と接続される。メモリコントローラ１４は、アドレスバスＡＢ２を介してコネクタ１１と接続される。チェック用ＩＣ１７は、コネクタ１１と接続される。
【００１９】
周知のごとく、フラッシュメモリは、書き換え可能な不揮発性メモリであって、小型かつ大容量である。本実施形態において、フラッシュメモリ１２は、一例として、３２Ｍｂｉｔの容量を有しており、後述するように、ゲームプログラムを記憶するために用いられ、４Ｍｂｉｔ単位で８つのブロックに分割されている。ＳＲＡＭ１３は、電源が供給される限り記憶内容を保持する静的なＲＡＭである。本実施形態において、ＳＲＡＭ１３は、一例として、２５６ｋｂｉｔの容量を有しており、後述するように、ゲームのためのバックアップデータ（攻略したステージ、獲得したアイテム、成長させたキャラクタに関するデータ等）を記憶するために用いられ、１６ｋｂｉｔ単位で１６個のブロックに分割されている。
【００２０】
メモリコントローラ１４は、アドレスバスＡＢ２を介してカセットライタ２０またはゲーム機６０から与えられるアドレスを、フラッシュメモリ１２およびＳＲＡＭ１３でのメモリ配置に適合するアドレスに変換する機能を有している。バックアップＩＣ１５は、電源をＳＲＡＭ１３に安定的に供給する機能と、ＳＲＡＭ１３を不所望な誤書き込みから保護する機能とを有している。バックアップＩＣ１５は、ゲームカセット１０に内蔵されたバックアップ用電池１６から電源の供給を受ける。また、バックアップＩＣ１５は、図示されていないが、ゲームカセット１０がカセットライタ２０またはゲーム機６０にセットされたとき、これらカセットライタ２０またはゲーム機６０から電源（商用電源を降圧して平滑化した直流電源）の供給を受ける。バックアップＩＣ１５は、ゲームカセット１０がカセットライタ２０またはゲーム機６０から外されているとき、バックアップ用電池１６からの電源をＳＲＡＭ１３に供給する。また、バックアップＩＣ１５は、ゲームカセット１０がカセットライタ２０またはゲーム機６０にセットされているとき、カセットライタ２０またはゲーム機６０からの電源をＳＲＡＭ１３に供給する。
【００２１】
フラッシュメモリ１２およびＳＲＡＭ１３は、メモリコントローラ１４から出力されるチップセレクト信号ＣＥ１と、バックアップＩＣ１５から出力されるチップセレクト信号ＣＥ２とによって、それらの選択状態が相補的に切り替えられる。すなわち、フラッシュメモリ１２およびＳＲＡＭ１３は、いずれか一方が選択状態になっているとき、いずれか他方が非選択状態になっている。これは、フラッシュメモリ１２およびＳＲＡＭ１３には、共通のデータバスおよびアドレスバスを介してデータおよびアドレスが供給されるが、供給されたアドレスに対応するメモリチップのアクセスのみを許可状態にするためである。チップセレクト信号ＣＥ２は、メモリコントローラ１４から出力される１ビットのデコード信号ＤＳおよびＳＲＡＭ１３に対する電源供給状態を基に、バックアップＩＣ１５が生成する。特に、ゲームカセット１０がカセットライタ２０またはゲーム機６０にセットされた状態であって、これらカセットライタ２０またはゲーム機６０の電源がオンされたとき、アドレスバスＡＢ１には、電源オン時の過渡特性によって、ノイズが混入するおそれがある。このノイズが偶然ＳＲＡＭ１３のいずれかの番地と一致した場合、メモリコントローラ１４が誤ってデコード信号ＤＳを発生しＳＲＡＭ１３の該当する番地には不所望な書き込みが行われる。そこで、バックアップＩＣ１５は、カセットライタ２０またはゲーム機６０から供給される電源の電圧値を監視し、電源オン時においては、当該電圧値が予め定める値（約４．５Ｖ）に落ち着くまで、チップセレクト信号ＣＥ２をＳＲＡＭ１３に与えない。これによって、電源オン時の不所望な誤書き込みを防止することができる。
【００２２】
また、メモリコントローラ１４からフラッシュメモリ１２に与えられるアドレスバスＡＢ１の内、上位３ビットがフラッシュメモリ１２の８つに分割されたブロックのいずれかを指定するために用いられる。同様に、メモリコントローラ１４からＳＲＡＭ１３に与えられるアドレスバスＡＢ１の内、上位４ビットがＳＲＡＭ１３の１６個に分割されたブロックのいずれかを指定するために用いられる。
【００２３】
ゲーム機６０は、ＣＰＵ６１と、ＰＰＵ（ピクチャ・プロセッシング・ユニット）６２と、ワーキングＲＡＭ６３と、ビデオＲＡＭ６４と、Ｉ／Ｏインタフェイス６５と、コネクタ６６と、チェック用ＩＣ６７とを含む。ＣＰＵ６１には、データバスＤＢ３およびアドレスバスＡＢ３を介してコネクタ６６が接続され、データバスＤＢ４およびアドレスバスＡＢ４を介してＰＰＵ６２が接続され、データバスＤＢ５およびアドレスバスＡＢ５を介してワーキングＲＡＭ６３が接続される。さらに、ＣＰＵ６１には、Ｉ／Ｏインタフェイス６５を介して、コントローラ７０が接続される。ビデオＲＡＭ６４は、データバスＤＢ６およびアドレスバスＡＢ６を介してＰＰＵ６２と接続される。また、ＰＰＵ６２の出力は、テレビジョン受像機８０に与えられる。チェック用ＩＣ６７は、コネクタ６６と接続される。
【００２４】
ゲームを楽しむとき、ゲームカセット１０のコネクタ１１がゲーム機６０のコネクタ６６に差し込まれる。これによって、フラッシュメモリ１２およびＳＲＡＭ１３がＣＰＵ６１の管理下に入る。そして、ＣＰＵ６１は、フラッシュメモリ１２からゲームプログラムを読み出し、ゲーム動作を開始する。また、必要に応じて、ＳＲＡＭ１３からゲームに対応するバックアップデータを読み出し、ゲーム動作のためのパラメータを設定する。コントローラ７０は、プレイヤーによって操作され、ＣＰＵ６１に種々の指示および命令を与える。ワーキングＲＡＭ６３は、ＣＰＵ６１の演算処理に必要な種々のデータを記憶する。ＰＰＵ６２は、ＣＰＵ６１からの命令に基づき、ビデオＲＡＭ６４に格納されたキャラクタデータから表示用データを生成する。この表示用データは、テレビジョン受像機８０に与えられ、表示される。このように、ＰＰＵ６２を設けることで、ＣＰＵ６１は、表示用データの生成処理から解放され、本来のゲーム動作を高速で行うことが可能となる。
【００２５】
コネクタ１１がコネクタ６６に差し込まれると、チェック用ＩＣ６７は、チェック用ＩＣ１７との間で所定の認証処理を行う。認証結果が適正な場合、チェック用ＩＣ１７は、リセット解除信号／ＲＳを出力する。このリセット解除信号／ＲＳは、メモリコントローラ１４に与えられる。応じて、メモリコントローラ１４は、コネクタ１１およびコネクタ６６を介してＣＰＵ６１に供給しているリセット信号ＲＳを解除する。一方、認証結果が不適正な場合、メモリコントローラ１４はＣＰＵ６１のリセットを解除しない。このとき、ＣＰＵ６１は、ゲームプログラムを起動しない。これによって、違法に販売されたゲームカセットの使用を排除することができる。
【００２６】
図４は、図３に示すフラッシュメモリ１２およびＳＲＡＭ１３のメモリマップを示す図である。図４において、フラッシュメモリ１２は、データ記憶領域として、ゲーム選択プログラムやゲームプログラムを記憶する主領域１２１と、ゲーム関連情報を記憶する関連情報記憶領域１２２とを含む。主領域１２１は、３２Ｍｂｉｔの記憶容量を有し、４Ｍｂｉｔ単位に８つのブロックに分割されている。主領域１２１は、ブロック単位でゲーム選択プログラムおよびゲームプログラムを記憶する。ブロックの１つが、ゲーム選択プログラムの記憶のために用いられるので、主領域１２１は、最大７種類のゲームプログラムを記憶可能である（ただし、各ゲームプログラムが４Ｍｂｉｔ以下の場合である）。なお、４Ｍｂｉｔ以上のゲームプログラムを記憶する場合は、複数のブロックを使用することになる。
【００２７】
ＳＲＡＭ１３は、２５６ｋｂｉｔの記憶容量を有し、１６ｋｂｉｔ単位で１６個のブロックに分割されている。ＳＲＡＭ１３は、上記主領域１２１に書き込まれたゲームプログラムのためのバックアップデータを記憶する。
【００２８】
図５は、図４における関連情報記憶領域１２２のメモリマップを示す図である。図５において、関連情報記憶領域１２２は、主領域１２１のアドレス空間とは別のアドレス空間を有し、特別のコマンドが与えられたときのみアクセス可能なメモリ領域である。この関連情報記憶領域１２２は、フラッシュメモリ１２の主領域１２１に記憶されたゲーム選択プログラムおよびゲームプログラムについて、それぞれに固有の関連情報を記憶する領域１２２ａ〜１２２ｉを含む。領域１２２ａはゲームタイトルを、領域１２２ｂはマップ情報を、領域１２２ｃはフラッシュメモリの容量（プログラムを主記憶領域１２１に記憶させるのに必要な容量）を、領域１２２ｄはＳＲＡＭの容量（対応するバックアップデータをＳＲＡＭ１３に記憶させるのに必要な容量）を、領域１２２ｅはフラッシュメモリのブロック番号（プログラムを記憶している主記憶領域１２１のブロックの番号）を、領域１２２ｆはＳＲＡＭのブロック番号（対応するバックアップデータを記憶しているＳＲＡＭ１３のブロックの番号）を、領域１２２ｇはプログラム継承フラグ（プログラムの継承判定を行うべきか否かを示すフラグ）を、領域１２２ｈはバックアップデータ継承フラグ（バックアップデータの継承判定を行うべきか否かを示すフラグ）を、領域１２２ｉはゲームの販売価格の情報を、それぞれ記憶する。ところで、ゲーム機６０内のＣＰＵ６１は、独自の広いアドレス空間を有している。そして、ゲームプログラムは、このアドレス空間の所定の位置に配置されなければならない。上記マップ情報は、ゲームプログラムがＣＰＵ６１のアドレス空間のいずれの位置に配置されるべきかを示している。
【００２９】
図６は、この発明のゲームソフトを書き換えて販売する原理を説明するための図であり、例えばＣＤ−ＲＯＭ４０に格納されたデータが、ゲームカセット１０に書き込まれていく際のデータの流れを示した図である。図６において、ＣＤ−ＲＯＭ４０には、書込制御プログラムと、ゲーム選択プログラムと、複数種類のゲームプログラムと、各ゲームプログラムについての関連情報とが格納されている。ＣＤ−ＲＯＭ４０に格納される関連情報は、ゲームのタイトルと、マップ情報と、ゲームプログラム記憶のためにフラッシュメモリ１２に確保すべき容量と、バックアップデータ記憶のためにＳＲＡＭ１３に確保すべき容量と、プログラム継承フラグと、バックアップデータ継承フラグと、ゲームの販売価格とを含む。なお、プログラム継承フラグは、ゲームプログラムの継承を必要とする場合はオンされ、プログラムの継承を必要としない場合はオフされている。また、バックアップデータ継承フラグは、バックアップデータの継承を必要とする場合はオンされ、バックアップデータの継承を必要としない場合はオフされている。ＣＤ−ＲＯＭ４０に格納された書込制御プログラムは、カセットライタ２０のＣＰＵ２１によって読み出され、カセットライタ２０内のフラッシュメモリ２４に書き込まれる。以後、ＣＰＵ２１は、この書込制御プログラムに従って、ゲームカセット１０に対するゲームプログラムの書き込み制御動作を実行する。ＣＤ−ＲＯＭ４０に格納されたゲーム選択プログラム、ゲームプログラムおよび関連情報は、カセットライタ２０のＣＰＵ２１によって読み出され、カセットライタ２０内のＲＡＭ２３に書き込まれる。ＲＡＭ２３に書き込まれたゲーム選択プログラムおよびゲームプログラムは、ゲームカセット１０に転送され、フラッシュメモリ１２の主領域１２１に書き込まれる。ＲＡＭ２３に書き込まれた関連情報は、ゲームカセット１０に転送され、フラッシュメモリ１２の関連情報記憶域１２２に書き込まれる。なお、ゲーム選択プログラムは、ゲームカセット１０をゲーム機６０にセットしたとき、ゲーム機６０のＣＰＵ６１によって実行され、複数のゲームの中から１つのゲームを選択するために用いられる。
【００３０】
ここで、１つのゲームプログラム、フラッシュメモリ１２、マスターデータを記憶するＣＤ−ＲＯＭ４０の、それぞれの容量の関係を説明する。フラッシュメモリ１２は、例えば３２Ｍｂｉｔの容量を有するものが用いられる。１つのゲームプログラムのデータ量は、４Ｍｂｉｔの整数倍、例えばフラッシュメモリ１２の容量が３２Ｍｂｉｔの場合であれば、４Ｍｂｉｔ、８Ｍｂｉｔ、１２Ｍｂｉｔ、１６Ｍｂｉｔ、２０Ｍｂｉｔ、２４Ｍｂｉｔ、２８Ｍｂｉｔ、３２Ｍｂｉｔに選ばれる。１つのゲームプログラムは、フラッシュメモリ１２の容量と同等かそれ以下に設定されている。したがって、フラッシュメモリ１２には、４Ｍｂｉｔのゲームプログラムが最大で７種類と４Ｍｂｉｔのゲーム選択プログラムとを記憶できる。例えば、１本のゲームプログラムが８Ｍｂｉｔの場合であれば、３種類のゲームソフトと４Ｍｂｉｔのゲーム選択プログラムが記憶できる。また、３２Ｍｂｉｔのゲームプログラムを記憶する場合は、ゲーム選択プログラムが不要である。
【００３１】
一方、ＣＤ−ＲＯＭ４０は、数百Ｍｂｙｔｅの容量を有する。従って、ＣＤ−ＲＯＭ４０の容量は、フラッシュメモリ１２の容量や１つのゲームプログラムの容量に比べて非常に大きいため、数多くの種類のゲームプログラムを記憶できる。なお、ＣＤ−ＲＯＭ４０は、少なくとも４Ｍｂｉｔのゲームプログラム７種類と４Ｍｂｉｔのゲーム選択プログラムとを記憶できる容量であれば足りる。
【００３２】
図７は、ゲームカセット１０のフラッシュメモリ１２に書き込まれたゲームプログラムを書き換える際のデータの流れを示した図である。なお、ここでは、一例として、ゲーム１〜４のプログラムが書き込まれているフラッシュメモリ１２において、ゲーム１および３のプログラムを残し、かつゲーム２および４のプログラムを消去して、新たにゲーム５のプログラムを書き込む際のデータの流れを示している。図７において、カセットライタ２０のＣＰＵ２１は、フラッシュメモリ１２に書き込まれている全てのデータを読み出し、ＲＡＭ２３上に展開する。その後、カセットライタ２０において、消去のためにゲーム２および４が選択されると、ＣＰＵ２１は、ＲＡＭ２３からゲーム２および４のプログラムを消去する。また、ＣＰＵ２１は、カセットライタ２０において、購入のためにゲーム５が選択されると、ＣＤ−ＲＯＭ４０からゲーム５のプログラムを読み出し、ＲＡＭ２３に格納する。その後、ＣＰＵ２１は、ＲＡＭ２３に残ったゲーム選択プログラムと、ゲーム１，３および５のプログラムとを読み出し、ゲームカセット１０に転送する。これによって、ゲームカセット１０のフラッシュメモリ１２には、ゲーム選択プログラムと、ゲーム１，３および５のプログラムとが書き込まれる。
【００３３】
なお、残されたゲーム１，３に対応する関連情報および新たに書き込まれるゲーム５の関連情報が、フラッシュメモリ１２の関連情報記憶領域１２２に書き込まれるが、その詳細は、図６の説明を参照すれば、容易に理解できるので、ここではその説明を省略する。
【００３４】
このように、本実施形態では、ゲームカセット１０のフラッシュメモリ１２に書き込まれたゲームプログラムを書き換える際に、フラッシュメモリ１２に書き込まれている全てのデータを一度ＲＡＭ２３に読み出し、ＲＡＭ２３上でゲームプログラムの整理、再配置を行った後、フラッシュメモリ１２に書き込むようにしているので、ゲームプログラムを効率良く書き込むことができる。なお、図７では、フラッシュメモリ１２内の全てのプログラムを書き換えるようにしているが、フラッシュメモリ１２内の記憶位置（ブロック番号）が変更されないプログラム、すなわちゲーム選択プログラムとゲーム１のプログラムは書き換えないようにしても良い。
【００３５】
図８〜図１３は、カセットライタ２０に接続された店内端末３０に表示される操作画面の一例を示す図である。より具体的には、図８および図９は、ゲーム選択画面を示している。なお、図８は、購入するゲームを選択する前の画面を、図９は、購入するゲームを選択した後の画面を示している。また、図１０〜図１２は、ゲーム削除画面を示している。なお、図１０は、消去および／または取り消すべきゲームプログラムを指定する前であって、書込可能な状態の画面を示しており、図１１は、消去および／または取り消すべきゲームプログラムを指定する前であって、書込不可能な状態の画面を示しており、図１２は、消去および／または取り消すべきゲームプログラムの指定が終了した後の画面を示している。また、図１３は、ゲーム機６０に接続されたテレビジョン受像機８０において、ゲーム開始前に表示されるメニュー画面を示す図である。
【００３６】
図１４〜図１８は、書込制御プログラムに従うカセットライタ２０の動作を示すフローチャートである。また、図１９は、ゲーム機６０の動作を示すフローチャートである。また、図２０は、ゲームカセット１０にシリーズ化されたゲームプログラムを書き込むとき、バックアップデータの移行のさせ方を示した図である。以下、これら図８〜図２０を参照して、上記実施形態の動作を説明する。
【００３７】
まず、図１４〜図１９に示されるカセットライタ２０の動作について説明する。電源がオンされると、ＣＰＵ２１は、フラッシュメモリ２４内の書込制御プログラムをバージョンアップすべきか否かを判断する（ステップＳ１０１）。フラッシュメモリ２４に書込制御プログラムが記憶されていない場合、またはＣＤ−ＲＯＭ４０に格納された書込制御プログラムのバージョンがフラッシュメモリ２４に記憶された書込制御プログラムのバージョンよりも新しい場合は、書込制御プログラムをバージョンアップすべきと判断される。書込制御プログラムをバージョンアップすべき場合、ＣＰＵ２１は、ＣＤ−ＲＯＭドライブ２２を用いてＣＤ−ＲＯＭ４０から書込制御プログラムを読み出し、当該読み出した書込制御プログラムを、図６に示すように、フラッシュメモリ２４にダウンロードする（ステップＳ１０２）。ＣＤ−ＲＯＭ４０は、常に新作ソフトが販売できるように、定期的（例えば、１ヶ月毎）に販売店に供給される。従って、このＣＤ−ＲＯＭ４０に書込制御プログラムを格納し、格納された書込制御プログラムに基づいて自動的にカセットライタ２０のソフト処理のバージョンアップ作業を行うようにすれば、販売店側は、面倒なバージョンアップ作業から解放され、本来の店内業務に専念できる。
【００３８】
書込制御プログラムのダウンロードが終了すると、ＣＰＵ２１は、当該書込制御プログラムを起動する（ステップＳ１０３）。以後、ＣＰＵ２１は、書込制御プログラムに従って動作する。次に、ＣＰＵ２１は、ＣＤ−ＲＯＭ４０からゲーム選択画面の表示に必要なデータ（ゲームのタイトル、容量および販売価格）を読み込み、図６に示すように、ＲＡＭ２３のワーキング領域に書き込む（ステップＳ１０４）。次に、ＣＰＵ２１は、図８に示すようなゲーム選択画面を店内端末３０に表示させる（ステップＳ１０５）。このゲーム選択画面は、販売ゲームリスト３０１と、ページ更新ボタン３０２および３０３と、購入ゲームリスト３０４と、合計容量表示部３０５および３０６とを含む。販売ゲームリスト３０１には、上記ステップＳ１０４においてＲＡＭ２３に書き込まれたゲームのタイトル、容量および価格に従って、販売するゲームのタイトル、容量および価格が表示される。販売するゲームの種類が多い場合は、１画面中に販売ゲームリストの全体を表示することが困難であるが、画面中のページ更新ボタン３０２または３０３を選択することにより、販売ゲームリストの表示ページを前後方向に更新でき、これによって、販売ゲームリストに含まれるゲームの全種類を見ることができる。なお、ボタンを選択する方法としては、表示画面にタッチパネルを設け、該当するボタンを指で押圧する方法であっても良いし、マウス等のポインティングデバイスによって該当するボタンにカーソルを合わせ、クリックするような方法であっても良い。以下に述べる店内端末３０での種々の選択操作も上記と同様の方法で行われる。このとき、購入するゲームの選択は行われていないので、購入ゲームリスト３０４、合計容量表示部３０５および３０６には、何らの情報も表示されていない。購入決定ボタン３０７は、購入するゲームの選択が終了したときに選択されるボタンである。
【００３９】
次に、ＣＰＵ２１は、コネクタ２６にゲームカセット１０がセット（装着）されたか否かを判断する（ステップＳ１０６）。ゲームカセット１０がセットされると、ＣＰＵ２１は、関連情報記憶領域１２２に記憶された関連情報に基づいてフラッシュメモリ１２およびＳＲＡＭ１３の空き容量（以下、ゲームカセット空き容量と称す）を計算するとともに、関連情報記憶領域１２２に記憶されている関連情報を読み出す（ステップＳ１０７）。このとき計算されたゲームカセット空き容量および読み出されたデータは、ＲＡＭ２３に一時的に記憶される（図７参照）。
【００４０】
次に、店員または顧客（図１のシステム構成の場合は店員、図２のシステム構成の場合は顧客）は、店内端末３０を操作し、販売ゲームリストの中から購入するゲームを選択する（ステップＳ１０８）。応じて、ＣＰＵ２１は、購入のために選択されたゲームの関連情報を、ＲＡＭ２３に一時的に記憶させる（ステップＳ１０９）。このとき、図９に示すように、店内端末３０には、購入ゲームリスト３０４中に、選択されたゲームのタイトル、容量および価格が表示される。次に、ＣＰＵ２１は、そのときまでに選択されたゲームの合計容量（以下、選択ゲーム合計容量と称す）を計算する（ステップＳ１１０）。計算された選択ゲーム合計容量は、図９の合計容量表示部３０５および３０６に表示される。なお、合計容量表示部３０５は、書き込みに必要なフラッシュメモリ１２の容量をブロック単位で表示し、合計容量表示部３０６は、書き込みに必要なＳＲＡＭ１３の容量をブロック単位で表示する。次に、ＣＰＵ２１は、継承判定処理を実行する（ステップＳ３００）。このサブルーチンステップ３００の詳細は、図１７に示されている。
【００４１】
図１７を参照して、ＣＰＵ２１は、前述のステップＳ１０８でＣＤ−ＲＯＭ４０から選択されたゲームの関連情報を、ＲＡＭ２３から読み出す（ステップＳ３０１）。次に、ＣＰＵ２１は、ＲＡＭ２３から読み出した関連情報をサーチし、継承を必要とするゲームプログラムまたはバックアップデータが存在するか否かを判断する（ステップＳ３０２）。プログラム継承フラグまたはバックアップ継承フラグがオンされている場合、そのゲームプログラムまたはバックアップデータは、継承を必要とすると判断される。継承を必要とするゲームプログラムまたはバックアップデータが存在しない場合、ＣＰＵ２１は、図１４のメインルーチンにリターンする。一方、継承を必要とするゲームプログラムまたはバックアップデータが存在する場合、ＣＰＵ２１は、ゲームカセット１０内のフラッシュメモリ１２の関連情報記憶領域１２２から関連情報を読み出す（ステップＳ３０３）。次に、ＣＰＵ２１は、関連情報記憶領域１２２から読み出した関連情報（以下、第１の関連情報と称す）の中に、上記ステップＳ３０２で継承が必要と判断されたゲームプログラムまたはバックアップデータの関連情報（以下、第２の関連情報と称す）と所定の関係にある関連情報が存在するか否かを判断する（ステップＳ３０４）。ここで、所定の関係とは、以下のことを意味する。
（１）第１の関連情報中に第２の関連情報のゲームタイトル（ただし、シリーズ番号を除く部分）と一致するゲームタイトルが存在すること
（２）一致したゲームタイトルのシリーズ番号部分は、第１の関連情報の方が第２の関連情報よりも１つだけ古いこと
例えば、第２の関連情報中にゲームタイトルとして「マリオ２」が存在する場合、第１の関連情報中にゲームタイトルとして「マリオ１」が存在すれば、第１の関連情報中に、第２の関連情報と所定の関係にある関連情報が存在すると判断される。
【００４２】
第１の関連情報中に、第２の関連情報と所定の関係にある関連情報が存在しない場合、ＣＰＵ２１は、店内端末３０にエラーメッセージを表示させる。このエラーメッセージは、購入のために選択されたゲームがシリーズ化されたゲームであって、ゲームカセット中に選択されたゲームの１つ前のゲームプログラムが格納されていないため、書き込みを禁止する旨の表示を含む。一方、第１の関連情報中に、第２の関連情報と所定の関係にある関連情報が存在する場合、ＣＰＵ２１は、継承フラグ（ＲＡＭ２３のワーキング領域内に設定されている）をオンした後（ステップＳ３０５）、図１４のメインルーチンにリターンする。
【００４３】
再び図１４を参照して、ＣＰＵ２１は、購入するゲームの選択が終了したか否かを判断する（ステップＳ１１１）。店員または顧客によって、図９の購入決定ボタン３０７が選択されたとき、購入するゲームの選択が終了したと判断される。ゲームの選択が終了していない場合は、再びステップＳ１０８〜Ｓ１１０の動作が繰り返される。
【００４４】
一方、ゲームの選択が終了した場合、ＣＰＵ２１は、前述のステップＳ１１０で計算された選択ゲーム合計容量が前述のステップＳ１０７で計算されたゲームカセット空き容量以下であるか否かを判断する（ステップＳ１１２）。選択ゲーム合計容量がゲームカセット空き容量以下である場合、ＣＰＵ２１は、店内端末３０に、図１０に示すようなゲーム削除画面を表示させる。一方、選択ゲーム合計容量がゲームカセット空き容量を越えている場合、ＣＰＵ２１は、店内端末３０に、図１１に示すようなゲーム削除画面を表示させる。
【００４５】
図１０および図１１に示すように、ゲーム削除画面は、カセット内ゲームリスト３０８と、空き容量表示部３０９および３１０と、購入ゲームリスト３０４と、合計容量表示部３０５および３０６と、書込可能ボタン３１１と、カセット内全消去ボタン３１２と、画面リターンボタン３１３とを含む。カセット内ゲームリスト３０８には、ゲームカセット１０に格納されているゲームのリストが表示される。また、空き容量表示部３０９には、フラッシュメモリ１２の空き容量が表示される。空き容量表示部３１０には、ＳＲＡＭ１３の空き容量が表示される。これらカセット内ゲームリスト３０８、空き容量表示部３０９および３１０の表示内容は、前述のステップＳ１０７でＲＡＭ２３に格納されたデータに基づいて決定される。書込可能ボタン３１１は、購入ゲームリスト３０４に挙げられたゲームのプログラムをゲームカセット１０に書き込む指示を与えるときに選択される。ここで、図１０および図１１を対比すると、図１０のゲーム削除画面では、書込可能ボタン３１１が選択可能になっているのに対し、図１１のゲーム削除画面では、書込可能ボタン３１１が選択不能になっている。これは、図１１の状態では、選択ゲーム合計容量がゲームカセット空き容量を越えているため、ゲームプログラムの書込指示を禁止するためである。カセット内全削除ボタン３１２は、ゲームカセット１０に格納されたゲームプログラムを一括的に全て消去するときに選択される。画面リターンボタン３１３は、ゲーム削除画面を図９に示すゲーム選択画面に戻すときに選択される。
【００４６】
選択ゲーム合計容量がフラッシュメモリ１２およびＳＲＡＭ１３の空き容量以下の場合、ＣＰＵ２１は、店員または顧客によって書込可能ボタン３１１が選択されたか、画面リターンボタン３１３が選択されたかを判断する（ステップＳ１１３）。画面リターンボタン３１３が選択された場合、再びステップＳ１０８〜Ｓ１１２の動作が繰り返される。すなわち、このステップＳ１０８〜Ｓ１１２の繰り返し動作において、購入すべきゲームの追加または変更が行われる。一方、書込可能ボタン３１１が選択された場合、ＣＰＵ２１は、図６および図７に示すように、購入のために選択されたゲームのプログラムと、ゲーム選択プログラムと、関連情報とをＣＤ−ＲＯＭ４０から読み出し、および／またはゲームカセット１０内のフラッシュメモリ１２およびＳＲＡＭ１３に記憶されている全データ（ゲームプログラム、バックアップデータ）を読み出し、ＲＡＭ２３に格納する（ステップＳ１１４）。
【００４７】
前述のステップＳ１１２において、選択ゲーム合計容量がゲームカセット空き容量を越えている場合、ゲームカセット１０に格納されているゲームプログラムを消去するか、購入のために選択したゲームを取り消す必要がある。そこで、店員または顧客は、図１１に示すゲーム削除画面において、カセット内ゲームリスト３０８から消去すべきゲームを選択し、および／または、購入ゲームリスト３０４から購入を取り消すべきゲームを選択する。この後の動作の詳細は、図１６に示されている。
【００４８】
図１６において、ＣＰＵ２１は、購入するゲームの取消が選択されたのか、ゲームプログラムの消去が選択されたかを判断する（ステップＳ１１５およびＳ１１６）。ゲームの取消が選択された場合、ＣＰＵ２１は、選択されたゲームの取消処理を行う（ステップＳ１１７）。これによって、ゲーム削除画面の購入ゲームリスト３０４には、図１２に示すように、取消が選択されたゲームに対し、取消表示がなされる。また、ゲームプログラムの消去が選択された場合、ＣＰＵ２１は、図示しない消去フラグをオンする（ステップＳ１１８）。このとき、ゲーム削除画面のカセット内ゲームリスト３０８には、図１２に示すように、消去が選択されたゲームに対し、消去表示がなされる。
【００４９】
上記ステップＳ１１７またはＳ１１８の後、ＣＰＵ２１は、選択ゲーム合計容量およびゲームカセット空き容量を再計算する（ステップＳ１１９）。このときの再計算結果は、図１２に示すように、合計容量表示部３０５および３０６、空き容量表示部３０９および３１０に反映される。ここで、顧客は、ゲームカセット１０内のゲームプログラムを消去しないように考え直す場合がある。このような場合、店員または顧客は、カセット内ゲームリスト３０８において消去が選択されているゲームを再選択することにより、ゲームプログラムの消去を解除する。ＣＰＵ２１は、このような消去の解除がなされたか否かを判断する（ステップＳ１２０）。もし、消去の解除がなされている場合、ＣＰＵ２１は、前述のステップＳ１１８でセットした消去フラグをオフした後（ステップＳ１２１）、ステップＳ１２２に進む。一方、消去の解除がなされていない場合、ＣＰＵ２１は、消去フラグをリセットすることなく、ステップＳ１２２に進む。
【００５０】
ステップＳ１２２において、ＣＰＵ２１は、再計算された選択ゲーム合計容量が再計算されたフラッシュメモリ１２またはＳＲＡＭ１３の空き容量以下であるか否かを判断する。選択ゲーム合計容量がこれらの空き容量を越えている場合、再びステップＳ１１５〜Ｓ１２１の動作が繰り返される。すなわち、選択ゲーム合計容量がフラッシュメモリ１２またはＳＲＡＭ１３の空き容量以下になるまで、取消および／または消去すべきゲームの追加または変更が行われる。選択ゲーム合計容量が空き容量以下になると、ＣＰＵ２１は、店員または顧客によって書込可能ボタン３１１が選択されたか、画面リターンボタン３１３が選択されたかを判断する（ステップＳ１２３）。画面リターンボタン３１３が選択された場合、再びステップＳ１０８の動作に戻る。すなわち、購入すべきゲームの追加または変更処理が行われる。一方、書込可能ボタン３１１が選択された場合、ＣＰＵ２１は、購入のために選択されたゲームのプログラムと、ゲーム選択プログラムと、関連情報とをＣＤ−ＲＯＭ４０から読み出すと共に、ゲームカセット１０内のフラッシュメモリ１２およびＳＲＡＭ１３に記憶されている全データ（ゲームプログラム、バックアップデータ）を読み出してＲＡＭ２３に格納する（ステップＳ１２４）。次に、ＣＰＵ２１は、消去フラグがオンされているか否かを判断する（ステップＳ１２５）。消去フラグがオンされている場合、ＣＰＵ２１は、継承フラグがオンされているか否かを判断する（ステップＳ１２６）。継承フラグがオンされていない場合、ＣＰＵ２１は、消去処理を行う（ステップＳ１２７）。この消去処理では、前述のステップＳ１０７でＲＡＭ２３に格納されたゲームカセット１０のデータの内、消去のために選択されたゲームのプログラム、バックアップデータおよび関連情報が消去される（図７参照）。一方、継承フラグがオンされている場合、消去のために選択されたゲームのバックアップデータをバッファ（例えば、ＲＡＭ２３のワーキング領域に設定される）に退避させる（ステップＳ１２８）。
【００５１】
前述のステップＳ１１４の処理が終了した後、またはステップＳ１２５で消去フラグがオフされていると判断された場合、またはステップＳ１２７の消去処理が終了した後、またはステップＳ１２８のバックアップデータ退避処理が終了した後、ＣＰＵ２１は、バックアップデータの移行処理を実行する（ステップＳ４００）。このサブルーチンステップの詳細は、図１８に示されている。
【００５２】
図１８を参照して、ＣＰＵ２１は、ＲＡＭ２３内のバッファ領域にバックアップデータが退避されているか否かを判断する（ステップＳ４０１）。バックアップデータが退避されていない場合、ＣＰＵ２１は、図１４のメインルーチンにリターンする。一方、バックアップデータが退避されている場合、ＣＰＵ２１は、当該退避されたバックアップデータ中に、継承を必要とするバックアップデータが存在するか否かを判断する（ステップＳ４０２）。フラッシュメモリ１２の関連情報記憶領域１２２から読み出された関連情報中の対応するバックアップデータ継承フラグがオンされている場合、当該バックアップデータは、継承を必要とするバックアップデータである。継承を必要とするバックアップデータが存在する場合、ＣＰＵ２１は、当該バックアップデータを書き込むためのＳＲＡＭ１３のブロックを指定し（ステップＳ４０３）、当該バックアップデータを指定したブロックに書き込む（ステップＳ４０４）。これによって、消去されたゲームのバックアップデータが新たに書き込まれるゲームのバックアップデータとして継承される（図２０（ａ）および（ｃ）参照）。
【００５３】
次に、ＣＰＵ２１は、ゲームカセット１０へのプログラムの書込を開始する（図６，図７および図１５参照）。まず、ＣＰＵ２１は、フラッシュメモリ１２の先頭ブロックを指定する（ステップＳ１２９）。次に、ＣＰＵ２１は、フラッシュメモリ１２に書き込むべきゲームプログラム（購入のために選択されたゲームプログラムおよびゲームカセット１０に元から格納されていたゲームプログラムであって消去されなかったゲームプログラム）がフラッシュメモリ１２の８つのブロック（３２Ｍｂｉｔ分）を全て使用するゲームプログラム（以下、フルサイズゲームプログラムと称す）か否かを判断する（ステップＳ１３０）。書き込むべきゲームプログラムがフルサイズゲームプログラムでない場合、ＣＰＵ２１は、ＲＡＭ２３からゲーム選択プログラム（ＣＤ−ＲＯＭ４０から読み出したゲーム選択プログラム）を読み出し、フラッシュメモリ１２の主領域１２１の先頭ブロックに書き込む（ステップＳ１３１）。一方、書き込むべきゲームプログラムがフルサイズゲームプログラムの場合は、後にゲーム機６０においてゲーム選択を行う必要がないので、ＣＰＵ２１は、ゲーム選択プログラムをフラッシュメモリ１２に書き込まない。これによって、ゲームプログラムの容量が大きい場合は、フラッシュメモリ１２の容量を最大限に利用した書込が行える。
【００５４】
上記ステップＳ１３１の後、または上記ステップＳ１２７で書き込むべきゲームプログラムがフルサイズゲームプログラムであると判断された後、ＣＰＵ２１は、ゲームプログラムをＲＡＭ２３から読み出し、フラッシュメモリ１２の主領域１２１に書き込む（ステップＳ１３２）。このとき、書き込むべきゲームプログラムがフルサイズゲームプログラムである場合は、フラッシュメモリ１２の主領域１２１の先頭ブロックから書き込みが開始され、書き込むべきゲームプログラムがフルサイズゲームプログラムでない場合は、フラッシュメモリ１２の主領域１２１の第２番目のブロックから書き込みが開始される。次に、ＣＰＵ２１は、ＲＡＭ２３内にフラッシュメモリ１２に書き込むべきゲームプログラムが２個以上存在するか否かを判断する（ステップＳ１３３）。書き込むべきゲームプログラムが２個以上存在する場合、ＣＰＵ２１は、フラッシュメモリ１２の主領域１２１の次のブロック（次のゲームプログラムの書き込みを開始するブロック）を指定する（ステップＳ１３４）。その後、ＣＰＵ２１は、ゲームプログラムの書き込みが全て終了したか否かを判断する（ステップＳ１３５）。一方、書き込むべきゲームプログラムが１個であり、しかもフルサイズゲームプログラムでない場合、ＣＰＵ２１は、次のブロックを指定することなく、ステップＳ１３５の判断を行う。ゲームプログラムの書き込みが終了していない場合、ＣＰＵ２１は、再びステップＳ１３２以下の動作を繰り返す。これによって、フラッシュメモリ１２の主領域１２１には、ＲＡＭ２３に格納されたゲームプログラムが順番に書き込まれていく。一方、ゲームプログラムの書き込みが終了した場合、ＣＰＵ２１は、ＲＡＭ２３に格納されたバックアップデータをＳＲＡＭ１３に書き込むと共に、関連情報をフラッシュメモリ１２の関連情報記憶領域１２２に書き込む（ステップＳ１３６）。このとき、ＣＰＵ２１は、図２０（ｂ）に示すように、継承を必要とするゲームのバックアップデータについては、既にゲームカセット１０に書き込まれていたゲームのバックアップデータをコピーして、新たに書き込む新バージョンのゲームのバックアップデータとして書き込む。その後、ＣＰＵ２１は、図１４のステップＳ１０６の動作に戻る。
【００５５】
次に、図１９を参照して、ゲームカセット１０内に格納されたゲームプログラムをゲーム機６０で実行させる際の動作を説明する。ゲームカセット１０がゲーム機６０のコネクタ６６にセットされ、ゲーム機６０の電源がオンされると、ゲームカセット１０内のメモリコントローラ１４は、リセット信号ＲＳを生成し、当該リセット信号ＲＳをコネクタ１１および６６を介して、ゲーム機６０内のＣＰＵ６１に供給する。これによって、ＣＰＵ６１は、動作停止状態に置かれる。
【００５６】
その後、メモリコントローラ１４は、フラッシュメモリ１２の関連情報記憶領域１２２から関連情報を読み出して一時的に記憶すると共に、当該関連情報に含まれるマップ情報に基づいて、アドレス変換パラメータを設定する（ステップＳ２０１）。このとき、ＣＰＵ６１は、依然として動作停止状態にある。前述したように、ゲームプログラムは、ＣＰＵ６１が有するアドレス空間の所定の位置に配置されなければならない。そして、この所定の位置は、ゲームの種類によって異なっている。上記のアドレス変換パラメータは、ＣＰＵ６１のアドレス空間をフラッシュメモリ１２のアドレス空間に一致させるためのアドレス変換処理に用いられる。
【００５７】
その後、チェック用ＩＣ１７および６７が動作し、ゲームカセット１０の認証処理を行う。認証処理の結果、ゲームカセット１０が適法な真性品であることが確認された場合、チェック用ＩＣ１７からリセット解除信号／ＲＳが出力される。このリセット解除信号／ＲＳは、メモリコントローラ１４に与えられる。メモリコントローラ１４は、リセット解除信号／ＲＳが与えられると、コネクタ１１および６６を介してＣＰＵ６１に供給しているリセット信号ＲＳを解除する。これによって、ＣＰＵ６１は動作を開始し、まず、フラッシュメモリ１２の主領域１２１の先頭ブロックからプログラム（ゲームプログラムまたはゲーム選択プログラム）を読み出す。
【００５８】
フラッシュメモリ１２に記憶されたゲームプログラムがフルサイズゲームプログラムの場合、上記先頭ブロックから読み出されるプログラムは、フルサイズゲームプログラムである。これに対し、フラッシュメモリ１２に記憶されたゲームプログラムがフルサイズゲームプログラムでない場合、上記先頭ブロックから読み出されるプログラムは、ゲーム選択プログラムである。ＣＰＵ６１は、上記先頭ブロックからのプログラムの読み出しを終了すると、当該読み出したプログラムがフルサイズゲームプログラムかゲーム選択プログラムかを判断する（ステップＳ２０２）。
【００５９】
まず、上記先頭ブロックからフルサイズゲームプログラムが読み出された場合の動作について説明する。この場合、ＣＰＵ６１は、フラッシュメモリ１２の主領域１２１からブロック順次にフルサイズゲームプログラムを読み出し、読み出したフルサイズゲームプログラムに従って、ゲーム処理を実行する（ステップＳ２０３）。次に、ＣＰＵ６１は、ゲームが終了したか否かを判断する（ステップＳ２０４）。ゲームが終了するまで、ステップＳ２０３のゲーム処理は継続的に実行される。ゲームが終了すると、ＣＰＵ６１は、所定の終了処理を実行する（ステップＳ２０５）。この終了処理では、例えばバックアップデータがＳＲＡＭ１３に格納される。次に、ＣＰＵ６１は、プレイヤーからリセット要求があったか否か（すなわち、プレイヤーによってゲーム機６０のリセットボタン（図示せず）が押されたか否か）を判断する（ステップＳ２０６）。リセット要求があった場合、ＣＰＵ６１は、再びステップＳ２０３以下の動作を繰り返す。一方、リセット要求がない場合、ＣＰＵ６１は、その動作を終了する。
【００６０】
次に、上記先頭ブロックからゲーム選択プログラムが読み出される場合の動作を説明する。この場合、ＣＰＵ６１は、読み出したゲーム選択プログラムに従ってゲーム選択処理を実行する（ステップＳ２０７）。このゲーム選択処理では、テレビジョン受像機８０に図１３に示すようなゲーム選択メニューが表示される。プレイヤーは、コントローラ７０を用いてゲーム選択メニューの中から遊びたいゲームを選択する。次に、ＣＰＵ６１は、プレイヤーによるゲームの選択が終了したか否かを判断する（ステップＳ２０８）。ゲームの選択が終了すると、メモリコントローラ１４によって、アドレス変換処理が行われる（ステップＳ２０９）。このアドレス変換処理では、ＣＰＵ６１は、再びリセットされて動作停止状態に置かれる。また、メモリコントローラ１４は、選択されたゲームが格納されているフラッシュメモリ１２のブロックの先頭アドレスを指定し、ＣＰＵ６１のアドレス空間のプログラム配置位置をこの先頭アドレスに一致させるために、ステップＳ２０１で設定されたアドレス変換パラメータを変更する。上記ステップＳ２０９においてＣＰＵ６１をリセット状態に置くのは、ＣＰＵ６１が不安定な状態で暴走するのを防止するためである。その後、メモリコントローラ１４は、ＣＰＵ６１のリセットを解除する。これによって、ＣＰＵ６１は動作を開始し、ステップＳ２１０〜Ｓ２１３の動作を行う。このステップＳ２１０〜Ｓ２１３の動作は、それぞれ、前述のステップＳ２０３〜Ｓ２０６の動作と同様であるので、その説明を省略する。
【００６１】
なお、上記実施形態では、ゲームプログラムが書き込まれる記憶媒体として、フラッシュメモリを内蔵したゲームカートリッジ１を用いたが、これに代えて、ＭＯＤ（磁気光ディスク）、ＣＤＲ（書き込み可能なコンパクトディスク）、ＤＶＤＲ（書き込み可能なデジタルビデオディスク）、フロッピーディスク等、その他の記憶媒体を用いるようにしても良い。
【００６２】
また、上記実施形態では、ＣＤ−ＲＯＭ４０に元データを記録するようにしたが、このようなＣＤ−ＲＯＭ４０に代えて、ＭＯＤ、ＣＤ、ＤＶＤ等、他の大容量記憶媒体を用いるようにしても良い。
【００６３】
また、上記実施形態では、ソフトウェアとしてゲームプログラムを販売するシステムについて示したが、本発明は、教育用プログラム、ビジネス用プログラム等の他の種類のソフトウェアを販売するシステムにも適用が可能である。
【００６４】
また、上記実施形態では、ゲームカセット１０は、ゲームプログラムをフラッシュメモリ１２に記憶し、バックアップデータをＳＲＡＭ１３に記憶するように構成されているが、それぞれのデータを他の種類のメモリ（ただし、書き換えが可能である性質を有していることが必要）に記憶させるようにしてもよいし、ゲームプログラムおよびバックアップデータを１つのメモリ内に記憶させるようにしても良い。
【００６５】
また、上記実施形態では、ゲームプログラムとバックアップデータとを異なるメモリに記憶させるようにしたが、これらを同一のメモリに書き込むようにしても良い。この場合、バックアップデータの継承は、図２１に示すように行われる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係るソフトウェア販売システムの第１の構成例を示すブロック図である。
【図２】本発明の一実施形態に係るソフトウェア販売システムの第２の構成例を示すブロック図である。
【図３】図１に示すゲームカセット１０と、当該ゲームカセット１０が接続されるゲーム機６０との詳細な構成を示すブロック図である。
【図４】図３に示すフラッシュメモリ１２およびＳＲＡＭ１３のメモリマップを示す図である。
【図５】図４における関連情報記憶領域１２２のメモリマップを示す図である。
【図６】ＣＤ−ＲＯＭ４０に格納されたデータがゲームカセット１０に書き込まれていく際のデータの流れを示した図である。
【図７】ゲームカセット１０のフラッシュメモリ１２に書き込まれたゲームプログラムを書き換える際のデータの流れを示した図である。
【図８】店内端末３０に表示されるゲーム選択画面を示す図であり、特に、購入するゲームを選択する前の画面を示している。
【図９】店内端末３０に表示されるゲーム選択画面を示す図であり、特に、購入するゲームを選択した後の画面を示している。
【図１０】店内端末３０に表示されるゲーム削除画面を示す図であり、特に、消去および／または取り消すべきゲームプログラムを指定する前であって、書込可能な状態の画面を示している。
【図１１】店内端末３０に表示されるゲーム削除画面を示す図であり、特に、消去および／または取り消すべきゲームプログラムを指定する前であって、書込不可能な状態の画面を示している。
【図１２】店内端末３０に表示されるゲーム削除画面を示す図であり、特に、消去および／または取り消すべきゲームプログラムを指定した後の画面を示している。
【図１３】ゲーム機６０に接続されたテレビジョン受像機８０において、ゲーム開始前に表示されるメニュー画面を示す図である。
【図１４】書込制御プログラムに従うカセットライタ２０の第１の動作を示すフローチャートである。
【図１５】書込制御プログラムに従うカセットライタ２０の第２の動作を示すフローチャートである。
【図１６】書込制御プログラムに従うカセットライタ２０の第３の動作を示すフローチャートである。
【図１７】図１４に示すサブルーチンステップＳ３００の詳細を示すフローチャートである。
【図１８】図１４に示すサブルーチンステップＳ４００の詳細を示すフローチャートである。
【図１９】ゲーム機６０の動作を示すフローチャートである。
【図２０】ゲームカセットにシリーズ化されたゲームプログラムを書き込むとき、バックアップデータの移行のさせ方を示した図である。
【図２１】ゲームプログラムとバックアップデータとを１つのメモリに書き込むときのバックアップデータの移行のさせ方を示した図である。
【符号の説明】
１０…ゲームカセット
１１…コネクタ
１２…フラッシュメモリ
１２１…主領域
１２２…関連情報記憶領域
１３…ＳＲＡＭ
１４…メモリコントローラ
１５…バックアップＩＣ
１６…バックアップ用電池
１７…チェック用ＩＣ
２０…カセットライタ
２１…ＣＰＵ
２２…ＣＤ−ＲＯＭドライブ
２３…ＲＡＭ
２４…フラッシュメモリ
２５…ＡＳＩＣ
２６…コネクタ
３０…店内端末
４０…ＣＤ−ＲＯＭ
５０…電子式キャッシュレジスタ
６０…ゲーム機
６１…ＣＰＵ
６２…ＰＰＵ
６３…ワーキングＲＡＭ
６４…ビデオＲＡＭ
６５…Ｉ／０インタフェイス
６６…コネクタ
６７…チェック用ＩＣ
７０…コントローラ
８０…テレビジョン受像機
【図１】
0003618204.tif 000002
【図２】
0003618204.tif 000003
【図３】
0003618204.tif 000004
【図４】
0003618204.tif 000005
【図５】
0003618204.tif 000006
【図６】
0003618204.tif 000007
【図７】
0003618204.tif 000008
【図８】
0003618204.tif 000009
【図９】
0003618204.tif 000010
【図１０】
0003618204.tif 000011
【図１１】
0003618204.tif 000012
【図１２】
0003618204.tif 000013
【図１３】
0003618204.tif 000014
【図１４】
0003618204.tif 000015
【図１５】
0003618204.tif 000016
【図１６】
0003618204.tif 000017
【図１７】
0003618204.tif 000018
【図１８】
0003618204.tif 000019
【図１９】
0003618204.tif 000020
【図２０】
0003618204.tif 000021
【図２１】
0003618204.tif 000022