(57)【特許請求の範囲】
【請求項１】
ＣＰＵを含むゲーム機本体に接続して用いるＲＯＭカートリッジにおいて、
(1)デバッグ対象の処理シーケンスすなわちゲームプログラムを含むＲＯＭである製品用ＲＯＭ、
(2)デバッグに用いられる時間調整プログラムを含むテスト用プログラムＲＯＭであるテスト用ＲＯＭ、
(3)デバッグに用いる時刻を自動的に刻むタイマーであるＲＴＣ、および
(4)メモリ空間の配置を制御するメモリ・ＲＴＣ制御回路
とで構成され、
(5)前記メモリ・ＲＴＣ制御回路内のレジスタの設定により、前記製品用ＲＯＭのメモリは、常時前記ＣＰＵのメモリ空間に配置し、前記テスト用ＲＯＭのメモリは前記製品用ＲＯＭが製品化されたときにアクセスしないメモリ空間にそれぞれ配置する手段、
(6)前記時間調整プログラムが前記ＲＴＣが示す現在時間より過去に戻って時間設定ができないように設定する手段
を備えたことを特徴とするＣＰＵを含むゲーム機本体に接続して用いるデバッグ機能付きＲＯＭカートリッジ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、時計機能を有する家庭用テレビゲーム機を用いて前記時計機能に基づいて進行する家庭用テレビゲームのプログラムのデバッグ装置に関する。
【０００２】
【従来の技術】
プログラム開発において、デバッグは労力と時間の掛かる作業の一つである。デバッグはエラーを修正する作業である。コンパイルエラーは文法上のエラーであり、コンパイラがエラーを検出してプログラマに知らせてくれるために、エラー発見は容易である。またリンクエラーもリンカーが検出するために、このエラー発見も容易である。優秀なプログラマなら、1,000ステップのプログラムを３回以内のテストでコンパイル、リンクを通過させることができる。最近はパソコンなどの個人使用のコンピュータが使えるようになったため、トライアンドエラーでコンパイル、リンクエラーを修正しても大した労力ではない。
【０００３】
しかし、実行時のエラーとなると、コンパイル、リンクエラーのような単純なデバッグは行えない。コンピュータがエラー個所を指摘してくれないからである。それでも、エラーが発生して実行が停止すれば、停止したおおよその位置がわかるために、原因追及がしやすい。もっとも大変なエラーはエラーが発生しないで正常にプログラムが終了し、しかも結果が正しくない場合である。そのような場合、プログラムのチェックはもちろんのこと、ときには仕様レベルのチェックまでしなければならないこともある。
【０００４】
実行時のエラーの原因究明でよく使われる方法がチェックプリントである。この方法は、エラーに関係すると思われる変数を選び、プログラムの何個所かにチェックプリントを挿入してその時点のデータを見てエラーを発見する方法である。適切な変数を選んで、適切な場所にチェックプリントを挿入することは難しい。打ち出したデータがエラーと関係のない場合がしばしばある。このため、適切なチェックプリントが行えるようになれば、プログラマとして一人前とさえいわれている。
【０００５】
コンピュータゲームはプログラムで記述したストーリーで進む。このため、コンピュータを相手にするゲームではストーリーやゲームパターンがある程度わかってしまうと、プレーヤー（遊技者）の興味が薄れるという傾向は否めない。とくにロールプレーイングゲームでは、完全にゲームプログラムの筋書きに沿ってゲームが進行するから、筋書きがある程度理解されると、ゲームが単調になってしまうことがある。そこでゲームストーリーに意外性や現実感をもたせるためにゲーム機に時計機能を備えさせ、現実の時計に基づいた背景や環境を設定するなどの工夫がなされている。
【０００６】
【発明が解決しようとする課題】
ゲーム機に時計機能を備えさせ、現実の時計に基づいた背景や環境を設定するゲームのプログラミングではデバッグが通常のゲームプログラムより困難な点がある。この場合、難しいのは状況の再現である。決まったデータで決まった場所でエラーが発生すれば、再現性があることになる。再現性がある場合には、どこにチェックを入れればよいかがわかり、エラーの発見も早い。ところがエラーが発生したり、しなかったりする場合がある。このような場合には、どこをチェックすればよいかがつかめず、エラー発見が困難になる。
【０００７】
内部時計を使用するプログラムや、ユーザーが操作するプログラムではこのようなエラーが比較的多くなる。リアル時間を利用するプログラムも、やはり時計（タイマー）の時間によって刻々と状況が変わるために、再現性を難しくしている。
【０００８】
たとえば、図１で示すロジックが含まれるゲームプログラムがあり、図の処理Ａでエラーが発生したとする。処理Ａを通るのは１２月（Ｍ＝１２）、２４日（Ｄ＝２４）、午後６時（Ｔ≧１８）以降の場合である。ここで月Ｍ、日Ｄ、時刻Ｔのセットはコンピュータ内蔵の時計（タイマー）を用いて行っている。したがって、同じ月の、同じ日の、同じ時間で再テストすれば同じ状況が再現できる。
【０００９】
ところが、タイマーは実際の時を刻んでいるから、時間が変わったり、日が変わったりした場合には同じ状況を再現できない。この場合には月も含まれているから、同じ状況が現れるのは１年後となる。１年も待ってデバッグを行うなど、狂気に近い。プログラム開発には開発期間が設定されているから、何らかの方法で同じ状況を再現しなければならない。
【００１０】
この場合、もっとも単純な方法がタイマーの時刻を外部入力によって変えてしまうことである。この方法では、テストのたびにタイマーの日時を変更しなければならない。また複数の開発者が同じマシンを使用している場合には、やたらにタイマーの日時を変えてしまうと他の開発者のテストに影響してしまう。
【００１１】
そこで一般的には、強制的に処理Ａを通すためにプログラム上で月日時のチェックの前にＭ＝１２、Ｄ＝２４、Ｔ＝１９の処理（図の処理ＭＤＴ）を入れ、月日時を書き換えてしまう。それでも同じエラーを再現できるという保証はないが、再現できれば問題は解決する。
【００１２】
上記の例は単純なステートメント（命令文）で成功したとしているが、実際には時間調整のために何個所にも修正文を挿入したり、複雑なロジックを必要とする場合も少なくない。
【００１３】
新しいタイプのゲームソフトとして、実時間を利用して継続的にゲームが進行していくものが登場している。たとえば今日ゲームを行い、また明日ゲームを行った場合に、明日行うゲームは今日のゲームの続きとしてストーリーが展開される。一方、ストーリーは曜日単位で行われるとする。このようなゲームで、ある曜日（たとえば月曜日）にエラーが起きたとする。デバッグは翌日（火曜日）に行われたとすると、前日の曜日（月曜日）でテストしなければならない。
【００１４】
それには実時間を刻む時計を前日に戻す方法が一般に行われる。ところが、上記のタイプのゲームでは過去の履歴が保存されているために、時計が過去に戻ることによって不具合が生じることがある。したがってこのゲームプログラムのテストでは同じ状況を作るために、未来の同じ曜日にセットしなければならない。しかし、時計は任意の時間（年月日曜日も含む）に設定できるから、時計よりも過去に設定してしまうことがしばしばある。そのため、テストに支障をきたすことがしばしばあった。
【００１５】
本発明の課題は、上記のような不具合を起こさないようなタイム設定が行えるデバッグ装置を開発することである。
【００１６】
【課題を解決するための手段】
本発明は、ＣＰＵを含むゲーム機本体に接続して用いるＲＯＭカートリッジにおいて、
(1)デバッグ対象の処理シーケンスすなわちゲームプログラムを含むＲＯＭである製品用ＲＯＭ、
(2)デバッグに用いられる時間調整プログラムを含むテスト用プログラムＲＯＭであるテスト用ＲＯＭ、
(3)デバッグに用いる時刻を自動的に刻むタイマーであるＲＴＣ、および
(4)メモリ空間の配置を制御するメモリ・ＲＴＣ制御回路
とで構成され、
(5)前記メモリ・ＲＴＣ制御回路内のレジスタの設定により、前記製品用ＲＯＭのメモリは、常時前記ＣＰＵのメモリ空間に配置し、前記テスト用ＲＯＭのメモリは前記製品用ＲＯＭが製品化されたときにアクセスしないメモリ空間にそれぞれ配置する手段、
(6)前記時間調整プログラムが前記ＲＴＣが示す現在時間より過去に戻って時間設定ができないように設定する手段
を備えたことを特徴とするＣＰＵを含むゲーム機本体に接続して用いるデバッグ機能付きＲＯＭカートリッジである。
【００１７】
【発明の実施の形態】
本発明の実施の形態について説明する。図２は本発明の時間調整プログラムを含むテスト用ＲＯＭを含むデバッグシステムのブロック図である。このシステムはＣＰＵ１を含むゲーム機本体を用いて、これに接続されたメモリ・ＲＴＣ制御回路２、製品用ＲＯＭ３、テスト用ＲＯＭ４、ＲＴＣ５とで構成される。
【００１８】
製品用ＲＯＭ３は処理シーケンスすなわちゲームプログラムを含むＲＯＭであり、テスト用ＲＯＭ４は時間調整プログラムを含むＲＯＭである。ＲＴＣ５は年月日時分秒および曜日までを自動的に刻むタイマーである。
【００１９】
製品用ＲＯＭ３はメモリ・ＲＴＣ制御回路２により、常時ＣＰＵ１のメモリ空間に配置される。起動時にブートアップするために、製品用ＲＯＭ３のメモリ空間は固定位置にしてある。
【００２０】
一方、テスト用ＲＯＭ４のメモリーはメモリ・ＲＴＣ制御回路２に内蔵されているレジスタによって、ＣＰＵ１のメモリ空間に配置される。本発明ではテスト用ＲＯＭ４はテスト時にのみ使用するメモリであり、出荷時は取り外すために、製品化されたときにテスト用ＲＯＭ４のメモリ空間をアクセスしないように、レジスタによって配置できないようにする。
【００２１】
以上のような形態にしておけば、メモリ・ＲＴＣ制御回路内のレジスタによってテスト用ＲＯＭのメモリ配置が容易に行えるために、製品となったゲームソフトがデバッグルーチンを間違ってアクセスすることはない。また、製品化されたあとにエラーが発生したときには、テスト用ＲＯＭの挿入とレジスタの調整によって出荷前のテスト環境が容易に復元できる。
【００２２】
本発明は過去に戻って時間設定ができないように、時間調整プログラムの一サブプログラムとしてテスト用ＲＯＭに内蔵させる。
【００２３】
【実施例】
本発明の実施例について説明する。本実施例では、ＲＯＭカートリッジ式の家庭用テレビゲーム機を用いたテストを想定する。このＲＯＭカートリッジはこれまでにはなかったＲＴＣ（時計回路）内蔵の新しいタイプである。ＲＯＭカートリッジにはＲＴＣのほかに製品用ＲＯＭ、テスト用ＲＯＭが含まれている。ゲーム機本体に時計（タイマー）が含まれていても、ゲームプログラムが使用する時計はＲＯＭカートリッジ内のＲＴＣを用いる。
【００２４】
製品用ＲＯＭにはゲームプログラムが内蔵され、本発明のテスト用プログラムはテスト用ＲＯＭに内蔵される。開発者はこのＲＯＭカートリッジをゲーム機に挿入してデバッグを行う。ＲＴＣはバッテリでバックアップされており、ゲーム機本体の電源を切っても正しく時間を刻む。ただし本発明のテスト中では、実際の時間ではなく、ゲームプログラムのテストで使用する仮想の時間になる。なぜなら、本発明の対象ゲームが時間の継続性を要求するものだからである。
【００２５】
ＲＯＭカートリッジ内のＲＴＣのタイマーに対しては、曜日を開発者が設定できるようになっている。曜日と年月日とずれていてもＲＴＣがエラーを出すこともなく、以降は設定された年月日曜日でサイクリックに曜日を自動的に設定する。これはテストがしやすくなるようにしてあるためである。たとえば、ゲームプログラムが曜日だけでストーリーを展開する場合には、いちいち年月日まで設定し直さなくても、曜日だけを設定することによって同じ曜日のゲームストーリーを展開できるからである。
【００２６】
ところが本発明が対象にしているゲームプログラムは、ストーリーはある単位（たとえば時間とか曜日）をサイクルとして展開するが、時間的継続性をもっている場合である。たとえば図３の丸印で示す時点でテストを行ったとする。このゲームは曜日をサイクルにストーリーが展開される。しかし前記のゲームと違うところは、テスト（ゲーム）を行った時点のストーリーが記録されるために、継続的な日付も意味をもっている点である。したがって図に示す１２月２０日水曜日と１２月２７日水曜日ではストーリーが違う（キャラクタの動作パターンは同じでも発生するイベントが異なる）。このような場合、単純に曜日だけを変えて日時が過去の日時の場合には、プログラム上でエラーが発生する。すなわち、正常なテストが行えないことになる。
【００２７】
そこで本発明のデバッグツールとして、曜日のチェックと過去に戻れない時間設定を行うテスト用時間調整プログラムを開発した。そのロジック例が図４および図５のフローチャートである。本発明のメインとなる部分は破線で囲ってある（図の番号３３、３４、３５）。本発明のプログラムでは基準となる年月日曜日をマスターとしてもっている。
【００２８】
たとえば、図６で示すように
１９９５年１月１日００時００分００秒日曜日
というようになる。これは実際の年月日の曜日に矛盾のないカレンダー時間である。本発明の時間調整プログラムを実行すると、現在時間が読み込まれ、エディット時間にコピーされる（図４の処理３９）。ここでいう“現在時間”とは図３で示したＲＴＣの時間であるから、テスト中は必ずしも社会一般の時間でなくてもよい。エディット時間とは時間設定のために設けられたエリアのことで、処理３９の段階ではコピーされた時点のＲＴＣの時間になっている。サブルーチン３４は、図５で示すようにマスターの基準時間より計算される正しい曜日を出力するルーチンである。さきにも述べたが、ＲＴＣの間は必ずしも正しい曜日が刻まれているとは限らない。
【００２９】
なぜならＲＴＣでは曜日のチェックを行っていないために、入力時に間違った曜日がセットされれば、以降その曜日を基準にサイクリックに刻まれるからである。このあたりは、パソコンなどの一般コンピュータのタイマーと異なる。したがってサブルーチン３３で現在時間の曜日が正しいかを判定し、正しくない場合には現時時間を赤色で表示にし、正しい場合には白で表示する。
【００３０】
図５の判定３６の“エディット時間の設定を行うか？”の問に対して“Ｙｅｓ”とするとサブルーチン３７が実行し、エディット時間が対話形式で年月日時分秒まで設定できる。エディット時間が設定できたら、その年月日を入力項目にしてサブルーチン３４をコールすると、正しい曜日が出力パラメータとして返される。その曜日をエディット時間の曜日にセットすれば、エディット時間のセットは完了である。しかし、この時点では、ＲＴＣの時間いわゆる“現在時間”は更新されていない。
【００３１】
現在時間を更新するには図５の判定３８の“時間書き込み操作か？”の問に“Ｙｅｓ”と答える。しかし、エディット時間が現在時間（ＲＴＣの時間）と比較され、エディット時間が現在時間よりも過去の場合には更新ができない。過去でない場合にのみ、現在時間の更新が行われる。それが処理３５である。年月日から曜日を算出するサブルーチンは図７に説明図を示す。このルーチンにより時計機能から得られた任意の日付の曜日を計算することができる。
【００３２】
図４および図５に示されたロジックを使えば、現在時間（ＲＴＣの時間）より過去に戻る時間設定を誤って行うこともなく、また誤った曜日が設定されることもない。出荷時はテスト用ＲＯＭは取り外され、ＲＴＣの年月日は正しい時間が設定される。また通常、ユーザーがＲＴＣの時間を設定できないようにされる。
【００３３】
【発明の効果】
実際には年月日時分曜日までを含めた実時間でストーリーが進展するゲームは少ない。その要因の一つに、いままでは家庭用ゲーム機に時計回路が含まれていなかったからである。しかし今後、時計回路を内蔵したゲームシステムが一般的になり、時計を使ったゲームが増えるものと思われる。その意味で、本発明はゲーム機の分野ではいまのところ特異なケースのみに有効であるが、今後利用価値が増えるものと思われる。その際のデバッグツールとして本発明は効力を発揮する。
【００３４】
鶏卵には尖った部分に空気の入った小さな隙間がある。この部分を割っても中身はでない。したがってこの部分を割ると、中身を出さずに鶏卵が立てられる。いわゆるコロンブスの卵である。気づいてしまえばなんということもないが、気づくまでには大変な努力と試行錯誤を要する。本発明のロジックも、表面上は大した内容ではない。しかしデバッグを行っていて、過去の時間に戻すことがエラーの原因と気づくには大変な労力を要する。実施例でも述べたように、曜日でストーリーの筋書きができているために、テスト時は曜日のみに着目し、時間の事象まで気づかないからである。
【００３５】
気づいたあとでも、いざテストしてみると設定時間を誤ることはしばしばある。一回設定時間を誤ると、設定時に誤りに気づけばよいが、テスト中に気づくことが多い。そうすると、いままでのテスト時間が無駄になり、大変な時間の浪費をしたことになる。本発明の装置を用いれば、間違った時間を設定することもなく、要求する時間が設定できる。
【００３６】
たとえば、図３において１２月２６日に木曜日の処理をテストする場合、１２月２０日水曜日として時間設定してすると、実際に行われた１２月２０日から１２月２５日までの記録内容と矛盾が生じるために、ゲーム中にエラーが生じる。ところが本発明のロジックを用いれば過去に戻れないから、１２月２７日以降の年月日しか設定できないことになる。
【００３７】
したがって、社会の時間よりも先に進むことになるが、テスト時には一向に差し支えない。ゲームの要求する年月日曜日にそくしていれば、テストは矛盾なく行えるからだ。以前は年月日と曜日および過去、現在、未来の設定が自由に行えたために、テストに無駄な時間を費やしてきた。本発明の装置により、このような浪費がなくなり、開発時間の短縮と開発費の軽減が可能となった。
【００３８】
本発明は特殊なゲームソフトが対象になるが、似たようなケースが生じた場合には、本発明の装置はそのまま使える。しかも本発明は別途特許申請中の時間調整プログラムの一サブプログラムとして登録しておけば、テスト用ＲＯＭの取り外しだけで簡単に利用できる。
【図面の簡単な説明】
【図１】  従来技術におけるリアル時間を含んだゲームプログラムのデバッグ（テスト）時のデバッグ（テスト）の仕方を説明するためのフローチャートである。
【図２】  本発明の実施例におけるＲＴＣおよび時間調整プログラムを含むテスト用ＲＯＭ内蔵のＲＯＭカートリッジの構成の例である。
【図３】  本発明の実施例における時間とテスト状況を説明する図である。
【図４】  本発明の実施例における時間設定用時間調整プログラムの処理フローチャートである。
【図５】  本発明の実施例における現在時間とエディット時間の更新を説明図である。
【図６】  本発明の実施例における現在時間とエディット時間の更新を説明図である。
【図７】  本発明の実施例における年月日から曜日を算出するサブルーチンの説明図である。
【符号の説明】
１  ＣＰＵ
２  メモリ・ＲＴＣ制御回路
３  製品用ＲＯＭ
４  テスト用ＲＯＭ
５  ＲＴＣ
【図１】
0003720442.tif 000002
【図２】
0003720442.tif 000003
【図３】
0003720442.tif 000004
【図４】
0003720442.tif 000005
【図５】
0003720442.tif 000006
【図６】
0003720442.tif 000007
【図７】
0003720442.tif 000008