(57)【特許請求の範囲】
【請求項１】
第１解像度の表示装置を利用する第１ゲーム機用のゲームプログラムを、当該第１解像度よりも低い第２解像度の表示装置を利用する第２ゲーム機上において実行させるためのゲーム用エミュレータプログラムであって、
前記ゲームプログラムには、ゲーム画像の背景を構成する第１解像度の背景画像のデータと、当該背景画像上に重ねて表示されるオブジェクト画像のデータとが含まれており、
前記ゲーム用エミュレータプログラムは、前記ゲームプログラムを実行してゲーム画像を生成するときの所定のフレームの処理において、
前記背景画像の水平ラインおよび垂直ラインの少なくともいずれか一方について、画像をライン単位で間引くための第１間引対象ラインを決定するステップ、
前記第１間引対象ラインの画像を間引きながら前記背景画像のライン単位の画像を順次出力することにより、当該背景画像を第２解像度に変換するステップ、
前記出力されるライン単位の画像に前記オブジェクト画像が重なるとき、当該オブジェクト画像を重ねたライン単位の第１ゲーム画像を生成するステップ、および
前記生成されたライン単位の第１ゲーム画像を前記第２解像度の表示装置に順次供給することにより前記第１ゲーム画像を表示させるステップを、第２ゲーム機に実行させ、
前記ゲーム用エミュレータプログラムは、前記所定のフレームに連続する次のフレームの処理において、
前記第１間引対象ラインに隣合ういずれか一方のラインを第２間引対象ラインとして決定するステップ、
前記第２間引対象ラインの画像を前記背景画像から間引きながら前記背景画像のライン単位の画像を順次出力することにより、当該背景画像を第２解像度に変換するステップ、
前記出力されるライン単位の画像に前記オブジェクト画像が重なるとき、当該オブジェクト画像を重ねたライン単位の第２ゲーム画像を生成するステップ、および
前記生成されたライン単位の第２ゲーム画像を前記第２解像度の表示装置に順次供給することにより前記第２ゲーム画像を表示させるステップを、第２ゲーム機に実行させることを特徴とするゲーム用エミュレータプログラム。
【請求項２】
第１解像度の表示装置を利用する第１ゲーム機用のゲームプログラムを、前記第１解像度よりも低い第２解像度の表示装置を利用する第２ゲーム機上において実行させるためのゲーム用エミュレータプログラムであって、
前記ゲームプログラムには、ゲーム画像の背景を構成する第１解像度の第１背景画像のデータと、当該第１背景画像上に重ねて表示されるオブジェクト画像のデータとが含まれており、
前記ゲーム用エミュレータプログラムは、
前記第１背景画像の水平ラインおよび垂直ラインの少なくともいずれか一方について、ライン単位の画像を間引くための第１間引対象ラインを決定するステップ、
前記第１間引対象ラインの画像を前記第１背景画像から間引くことにより、当該第１背景画像を第２解像度の第２背景画像に変換するステップ、
前記第１間引対象ラインに隣合ういずれか一方のラインを第２間引対象ラインとして決定するステップ、
前記第２間引対象ラインの画像を前記第１背景画像から間引くことにより、当該第１背景画像を第２解像度の第３背景画像に変換するステップ、
前記第２背景画像に前記オブジェクト画像を重ねた第１ゲーム画像を生成するステップ、
前記第３背景画像に前記オブジェクト画像を重ねた第２ゲーム画像を生成するステップ、および
前記第１ゲーム画像と前記第２ゲーム画像とをフレーム毎に交互に前記第２解像度の表示装置に表示させるステップを、第２ゲーム機に実行させることを特徴とするゲーム用エミュレータプログラム。
【請求項３】
前記第１解像度の背景画像をライン単位で間引くための対象ラインを決める要素となる第１補正値群を生成するステップを、前記第１間引対象ラインを決定するステップが実行される前に第２ゲーム機にさらに実行させ、
前記第１解像度の背景画像をライン単位で間引くための対象ラインを決める要素となる補正値群であって前記第１補正値群とは異なる第２補正値群を生成するステップを、前記第２間引対象ラインを決定するステップが実行される前に第２ゲーム機にさらに実行させ、
前記第１間引対象ラインを決定するステップは、前記第１補正値群の各値と、前記第１解像度の背景画像の水平ラインを指定するための値とに基づいて、第１間引対象ラインを決定し、
前記第２間引対象ラインを決定するステップは、前記第２補正値群の各値と、前記第１解像度の背景画像の水平ラインを指定するための値とに基づいて、第２間引対象ラインを決定する、請求項１または２に記載のゲーム用エミュレータプログラム。
【請求項４】
前記第１間引対象ラインを決定するステップは、一定本数のライン間隔毎に前記第１間引対象ラインを決定する、請求項１または２に記載のゲーム用エミュレータプログラム。
【請求項５】
第１背景画像上に重ねられる前記オブジェクト画像の位置、および、前記第１解像度と前記第２解像度との比率に基づいて、第２解像度に変換した後の背景画像上に重ねる前記オブジェクト画像の位置を決定するステップを、前記第１ゲーム画像を生成するステップおよび前記第２ゲーム画像を生成するステップが実行される前に第２ゲーム機にさらに実行させる、請求項１ないし４のいずれかに記載のゲーム用エミュレータプログラム。
【請求項６】
前記第２解像度の表示装置は、ノンインターレス方式の表示装置である、請求項１または２に記載のゲーム用エミュレータプログラム。
【請求項７】
前記第１間引対象ラインを決定するステップは、第１間引対象ラインを水平ラインとする請求項１または２に記載のゲーム用エミュレータプログラム。
【請求項８】
前記第１間引対象ラインを決定するステップは、第１間引対象ラインを水平ラインおよび垂直ラインの両方とする請求項１または２に記載のゲーム用エミュレータプログラム。
【請求項９】
前記第１間引対象ラインの画像を前記オブジェクト画像から間引くことにより、当該オブジェクト画像を第２オブジェクト画像に変換するステップを、前記第１ゲーム画像を生成するステップが実行される前に第２ゲーム機にさらに実行させ、
前記第２間引対象ラインの画像を前記オブジェクト画像から間引くことにより、当該オブジェクト画像を第３オブジェクト画像に変換するステップを、前記第２ゲーム画像を生成するステップが実行される前に第２ゲーム機にさらに実行させ、
前記第１ゲーム画像を生成するステップは、解像度を変換した後の背景画像上に前記第２オブジェクト画像を重ねた第１ゲーム画像を生成し、
前記第２ゲーム画像を生成するステップは、解像度を変換した後の背景画像上に前記第３オブジェクト画像を重ねた第２ゲーム画像を生成する、請求項１または２に記載のゲーム用エミュレータプログラム。
【請求項１０】
請求項１ないし９に記載のゲーム用エミュレータプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ゲーム用エミュレータプログラムに関し、より特定的には、表示画面の解像度が元のゲーム装置よりも低いゲーム装置において用いられるゲーム用エミュレータプログラムに関する。
【０００２】
【従来の技術】
新型の携帯ゲームは、その技術進歩により、旧式のビデオゲーム機などをエミュレーションすることができるほど高性能化してきている。そこで、最近の携帯ゲーム機の一例であるゲームボーイアドバンス（登録商標）上において、旧式のビデオゲーム機の一例であるファミリーコンピュータ（登録商標）をエミュレーションさせるためのエミュレータプログラムの開発が着手されている。このエミュレータプログラムをゲームボーイアドバンス上で動作させることにより、ファミリーコンピュータ用のゲームソフトのプレイを可能にさせるものである。
【０００３】
なお、従来におけるエミュレーションの技術としては、他機種のゲーム装置に対応するゲームソフトを携帯端末装置において再生可能とするものがある（例えば、特許文献１参照）。
【０００４】
【特許文献１】
特開２００２−２７０３８号公報
【０００５】
【発明が解決しようとする課題】
しかしながら、ファミリーコンピュータ（登録商標）は、テレビジョン受像機に接続されるものであり、そのゲーム画像を２４０×２５６（垂直×水平）ドットの解像度で生成するものであった。一方、ゲームボーイアドバンス（登録商標）に備える液晶モニタは、それよりも低解像度の１６０×２４０（垂直×水平）ドットの解像度である。つまり、ファミリーコンピュータ（登録商標）のゲーム画像をゲームボーイアドバンス（登録商標）の液晶モニタにそのまま表示すると、特に上下の４０本づつまたは下側の８０本の水平ラインが表示されず、この表示されない部分ではゲームができないという問題が生じている。以上のように、特定のゲーム装置に対応するゲームソフトを他のゲーム装置で処理する場合には、各ゲーム装置の表示画面の解像度が異なることに起因する問題が生じる。しかし、この問題についての有効な解決手段は従来提案されていない。
【０００６】
また、上記問題の解決策として、液晶モニタの水平ラインの８０本を均等に全体から均等に間引くことにより、垂直方向の解像度を合わせることが考えられる。しかし、この場合、間引かれた水平ライン分の画像が欠落するため、ファミリーコンピュータ（登録商標）のオリジナルのゲームの雰囲気を損なうという問題がある。
【０００７】
なお、画像の特定画素の周囲の画素情報の平均をとって画素数を減らす解像度の一般的な画像処理方法も考えられるが、これらの画像処理は負担が大きいため、リアルタイムでゲームを行わせかつ他種のゲーム機をエミュレーションするような重い処理を行うゲーム用のエミュレータプログラムには向かないという問題がある。
【０００８】
それ故に、本発明の目的は、解像度の低いゲーム装置においてゲームをプレイする場合でも、オリジナルに近いゲーム画面を再現することができるゲーム用エミュレータプログラムを提供することである。
【０００９】
また、他の目的は、ゲーム装置が少ない処理負担でゲーム処理を行うことができるゲーム用エミュレータプログラムを提供することである。
【００１０】
【課題を解決するための手段および発明の効果】
第１の発明は、第１解像度の表示装置を利用する第１ゲーム機（実施例との対応関係を示せば、例えば、他種ゲーム機）用のゲームプログラム（ゲームプログラム３２）を、当該第１解像度よりも低い第２解像度の表示装置を利用する第２ゲーム機（携帯ゲーム機１）上において実行させるためのゲーム用エミュレータプログラム（エミュレータプログラム３１）である。ゲームプログラムは、背景画像のデータ（背景画像データ３３）と、オブジェクト画像（オブジェクト画像データ３４）のデータをと含む。背景画像のデータは、ゲーム画像の背景を構成する第１解像度で構成される画像データである。オブジェクト画像は、背景画像上に重ねて表示される画像データである。ゲーム用エミュレータプログラムは、ゲームプログラムを実行してゲーム画像を生成するときの所定のフレームの処理において、以下を第２ゲーム機に実行させる。すなわち、まず、背景画像の水平ラインおよび垂直ラインの少なくともいずれか一方について、画像をライン単位で間引くための第１間引対象ラインを決定する（ステップ３１，３５を実行するＣＰＵ２０１；以下、単にステップ番号のみを示す。）次に、第１間引対象ラインの画像を第１背景画像から間引きながら前記第１背景画像の各ライン単位の画像を順次出力し、第１背景画像を第２解像度に変換する（ステップ３６）。次に、出力されるライン単位の画像に前記オブジェクト画像が重なるとき、当該オブジェクト画像のライン単位の画像を重ねたライン単位の第１ゲーム画像を生成する（ステップ３８）。その後、第２解像度の表示装置に第１ゲーム画像をライン単位で順次供給する（ステップ３８）。これにより、前記第２解像度の表示装置には、第１ゲーム画面が表示される（ステップ３９）。そして、ゲーム用エミュレータプログラムは、所定のフレームに連続する次のフレームの処理において、以下の処理を第２ゲーム機に実行させる。まず、第１間引対象ラインに隣合ういずれか一方のラインを第２間引対象ラインとして決定する（ステップ３１，３５）。次に、第２間引対象ラインの画像を第１背景画像から間引きながら、前記第１背景画像の各ライン単位の画像を順次出力することにより、当該第１背景画像を第２解像度に変換する（ステップ３６）。次に、出力されるライン単位の画像にオブジェクト画像が重なるとき、オブジェクト画像のライン単位の画像を重ねた第２ゲーム画像をライン単位で生成する（ステップ３８）。その後、第２解像度の表示装置に第２ゲーム画像をライン単位で順次供給する（ステップ３８）。これにより、第２解像度の表示装置には、第２解像度の第２ゲーム画像が表示される（ステップ３９）。
【００１１】
この発明によれば、所定のフレームと次のフレームとによって、オリジナルのゲーム画像のほぼすべての画像情報を表示させることができるので、表示装置が低解像度になっても旧式のゲーム機用ソフトのオリジナルの雰囲気を壊さないゲーム用エミュレータプログラムを提供することができる。また、ゲーム中にプレイヤが注視するオブジェクト画像に対しては間引き処理をしないので、オブジェクト画像が部分的にちらつくことなく見やすくすることができる。また、処理負担の大きい画素単位の圧縮処理などを行わないので、ゲーム装置が少ない処理負担でゲーム処理を行うことができ、ゲーム機用のエミュレータプログラムとして非常に有効である。さらに、ライン単位ごとにリアルタイムで間引き処理をしながら表示装置にデータを供給するので、フレームメモリ間のコピー処理などが発生させずに、より高速に動作させることができる。
【００１２】
第２の発明は、第１解像度の表示装置を利用する第１ゲーム機用のゲームプログラムを、第１解像度よりも低い第２解像度の表示装置を利用する第２ゲーム機上において実行させるためのゲーム用エミュレータプログラムである。ここで、ゲームプログラム（ゲームプログラム３２）は、ゲーム画像の背景を構成する第１解像度の第１背景画像のデータ（背景画像データ３３）と、当該第１背景画像上に重ねて表示されるオブジェクト画像のデータ（オブジェクト画像データ３４）とを含んでいる。ゲーム用エミュレータプログラムは、以下を第２ゲーム機に実行させる。すなわち、第２ゲーム機は、第１背景画像の水平ラインおよび垂直ラインの少なくともいずれか一方について、ライン単位の画像を間引くための第１間引対象ラインを決定する（ステップ３１，８２）。また、第２ゲーム機は、第１間引対象ラインの画像を第１背景画像から間引くことにより、当該第１背景画像を第２解像度の第２背景画像に変換する（ステップ８４）。さらに、第１間引対象ラインに隣合ういずれか一方のラインを第２間引対象ラインとして決定する（ステップ３１，８２）。また、第２間引対象ラインの画像を第１背景画像から間引くことにより、当該第１背景画像を第２解像度の第３背景画像に変換する（ステップ８４）。また、第２背景画像にオブジェクト画像を重ねた第１ゲーム画像を生成する（ステップ８４）。また、第３背景画像にオブジェクト画像を重ねた第２ゲーム画像を生成する（ステップ３８）。また、第１ゲーム画像と第２ゲーム画像とをフレーム毎に交互に第２解像度の表示装置に表示させる（ステップ８６）。
【００１３】
この発明によれば、所定のフレームと次のフレームとによって、オリジナルのゲーム画像のほぼすべての画像情報を表示させることができるので、表示装置が低解像度になっても旧式のゲーム機用ソフトのオリジナルの雰囲気を壊さないゲーム用エミュレータプログラムを提供することができる。また、ゲーム中にプレイヤが注視するオブジェクト画像に対しては間引き処理をしないので、オブジェクト画像が部分的にちらつくことなく見やすくすることができる。また、処理負担の大きい画素単位の処理を行わず、ゲーム装置が少ない処理負担でゲーム処理を行うことができるので、ゲーム機用のエミュレータプログラムとして非常に有効である。
【００１４】
また、好ましくは（請求項３に記載の発明）、ゲーム用エミュレータプログラムは、以下を第２ゲーム機にさらに実行させる。すなわち、第１解像度の背景画像をライン単位で間引くための対象ラインを決める要素となる第１補正値群（補正値群４６）を生成するステップを、第１間引対象ラインを決定するステップが実行される前に第２ゲーム機にさらに実行させる。また、第１解像度の背景画像をライン単位で間引くための対象ラインを決める要素となる補正値群であって第１補正値群とは異なる第２補正値群（補正値群４６）を生成するステップを、第２間引対象ラインを決定するステップが実行される前に第２ゲーム機にさらに実行させる。このとき、第１補正値群の各値と、第１解像度の背景画像の水平ラインを指定するための値とに基づいて、第１間引対象ラインを決定する。また、第２補正値群の各値と、第１解像度の背景画像の水平ラインを指定するための値とに基づいて、第２間引対象ラインを決定する。
【００１５】
これによれば、予め算出しておいた補正値群によって間引き対象ラインをリアルタイムで決めている。従って、間引き対象ラインか否かをそのつど計算する処理に比べて、より高速化を図ることができる。
【００１６】
また、一定本数のライン間隔毎に第１間引対象ラインを決定してもよい（請求項４に記載の発明）。これによって、画像全体から均等にラインが間引かれることとなる。ここで、１部分に集中して間引かれると、各フレームの画像が大きく異なるものになる場合がある。かかる場合、プレイヤにとっては見づらい画面となるおそれがある。これに対して、一定本数のライン間隔毎に第１間引対象ラインを決定することによって、上記問題を解決することができる。
【００１７】
また、好ましくは（請求項５に記載の発明）、ゲーム用エミュレータプログラムは、第１背景画像上に重ねられるオブジェクト画像の位置、および、第１解像度と第２解像度との比率に基づいて、第２背景画像に変換した後の背景画像の上に重ねるオブジェクト画像の位置を決定するステップ（ステップ４）を、第１ゲーム画像を生成するステップおよび第２ゲーム画像を生成するステップが実行される前に第２ゲーム機にさらに実行させる。
【００１８】
これによって、オブジェクト画像の表示位置は、背景画像の変換の度合に適合して変化し、第２解像度の背景画像において表示位置が決定される。従って、オブジェクト画像の表示位置が背景画像と大きくずれることがなく、オリジナルのゲーム画面と同様の操作感覚を提供することができる。
【００１９】
また、好ましくは（請求項６に記載の発明）、第２の解像度の表示装置は、ノンインターレス方式の表示装置である。
【００２０】
また、第１間引対象ラインを水平ラインとしてもよいし（請求項７に記載の発明）、第１間引対象ラインを水平ラインおよび垂直ラインの両方としてもよい（請求項８に記載の発明）。
【００２１】
また、好ましくは（請求項９に記載の発明）、ゲーム用エミュレータプログラムは、以下を第２ゲーム機にさらに実行させる。すなわち、第１間引対象ラインの画像をオブジェクト画像から間引くことにより、当該オブジェクト画像を第２オブジェクト画像に変換させるステップを、第１ゲーム画像を生成するステップが実行される前に第２ゲーム機にさらに実行させる。なお、これは、第１の発明においては、上述した所定のフレームの処理において行われる。また、第２間引対象ラインの画像をオブジェクト画像から間引くことにより、当該オブジェクト画像を第３オブジェクト画像に変換させるステップを、第２ゲーム画像を生成するステップが実行される前に第２ゲーム機にさらに実行させる。なお、これは、第１の発明においては、上述した所定のフレームに連続する次のフレームの処理において行われる。さらに、このとき、第２背景画像上に第２オブジェクト画像を重ねて表示される第１ゲーム画像を生成し、第３背景画像上に第３オブジェクト画像を重ねて表示される第２ゲーム画像を生成する。
【００２２】
これによって、オブジェクト画像についても背景画像と同様の処理が行われるので、オブジェクトの位置を解像度にあわせて変化させる処理が不要になる。
【００２３】
また、以上のゲーム用エミュレータプログラムは、コンピュータ読み取り可能な記録媒体に記録されていてもよい（請求項１０に記載の発明）。
【００２４】
【発明の実施の形態】
図１は、本発明における第２ゲーム機の一実施形態に係る携帯ゲーム機の概観図である。なお、第２ゲーム機は携帯型のゲーム機に限定されるものではなく、例えば据置型のビデオゲーム機や、ゲームプログラムを実行可能な携帯電話，ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｃｅ）などのにも適用することができる。
【００２５】
携帯ゲーム機１（例えば本願出願人が製造販売している「ゲームボーイアドバンス（登録商標）」）は、表示手段である液晶モニタ１１（以下、単に「ＬＣＤ１１」と呼ぶ）およびプレイヤによって操作される複数個の操作ボタン１２ａ〜ｇ等を備える。複数個の操作ボタン１２ａ〜ｇは、液晶モニタ１１の左側に設けられた十字ボタン１２ａ、スタートボタン１２ｂおよびセレクトボタン１２ｃ、液晶モニタ１１の右側に設けられたＡボタン１２ｄおよびＢボタン１２ｅ、左肩側に設けられたＬボタン１２ｆならびに右肩側に設けられたＲボタン１２ｇで構成される。これらの操作ボタン１２ａ〜ｇは、プレイヤによる操作に応じて、ゲーム処理に関する所定の操作指示を与える。さらに、携帯ゲーム機１には、本発明における第１ゲーム機の一例の他種のゲーム機用のゲームプログラム（例えば本願出願人が製造販売している「ファミリーコンピュータ（登録商標）」）および他種のゲーム機をエミュレーションさせるためのエミュレータプログラム等を記憶する記憶媒体の一例のゲームカートリッジ（図２参照）を装着可能するための装着口がその背面側に設けられている。
【００２６】
図２は、携帯ゲーム機１およびゲームカートリッジの構成を示すブロック図である。図２に示すように、携帯ゲーム機１は、エミュレータプログラムを直接実行するためのＣＰＵ２０１を備える。ここで、ＣＰＵ２０１は、エミュレータプログラムを通じて間接的に他種ゲームプログラムを実行する。他種ゲームプログラムとは、携帯ゲーム機１とは異なるアーキテクチャを採用するゲーム機（以下、「他種ゲーム機」と呼ぶ。）で実行可能であり、本携帯ゲーム機１では直接実行不可能なゲームプログラムである。つまり、他種ゲームプログラムは、エミュレータプログラムによって実行されるプログラムである。ＣＰＵ２０１には、ブートＲＯＭ２０２、ワークメモリ２０３、ＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）２０４、通信ポート２０５、外部メモリＩ／Ｆ２０６、操作ボタン２０８、背景処理ユニット（ＢＧ処理ユニット）２１０、オブジェクト処理ユニット（ＯＢＪ処理ユニット）２１２および画像合成処理ユニット２１３が接続される。また、ＢＧ処理ユニット２１０には、ＢＧ用ＶＲＡＭ２０９が接続される。ＯＢＪ処理ユニット２１２には、ＯＢＪ用ＶＲＡＭ２１１が接続される。画像合成処理ユニット２１３には、ＬＣＤ１１が接続される。さらに、本実施例では、外部メモリＩ／Ｆ２０６には、ゲームカートリッジ２０７が接続される。このゲームカートリッジ２０７は、他種ゲームプログラム（以下、単に「ゲームプログラム」という。）およびエミュレータプログラムを記憶したプログラムＲＯＭ２１６と、ゲームデータをバックアップするためのバックアップＲＡＭ２１７とを備える。なお、本実施例では、他種ゲームプログラムとエミュレータプログラムとを同一の記録媒体（又は記憶媒体）に記憶させたが、例えば別々の記録又は記憶媒体に記憶させるようにしてもよい。
【００２７】
ＣＰＵ２０１は、携帯ゲーム機１の電源が投入されると、ブートＲＯＭ２０２に記憶されている起動プログラムを実行し、メモリ等を初期化した後、ゲームカートリッジ２０７からデータの取り込みを行う。これによって、ゲームカートリッジ２０７のプログラムＲＯＭ２１６に記憶されているエミュレータプログラムおよびゲームプログラムがワークメモリ２０３に記憶される。なお、プログラムＲＯＭ２１６およびワークメモリ２０３の具体例は、図３および図４にそれぞれ示されている。ＣＰＵ２０１は、ワークメモリ２０３のエミュレータプログラムおよびゲームプログラムを実行して、ゲーム処理を開始する。なお、ＤＭＡＣ２０４は、データ転送を統括的に制御するものである。また、通信ポート２０５は、外部装置（例えば、他のゲーム機）と通信を行うためのものである。
【００２８】
図３は、ゲームカートリッジ２０７のプログラムＲＯＭ２１６に記憶されるデータの一例を示す図である。図３に示すように、プログラムＲＯＭ２１６には、エミュレータプログラム３１およびゲームプログラム３２が記憶されている。ゲームプログラム３２には、背景画像データ３３およびオブジェクト画像データ３４が含まれている。背景画像データ３３は、主にゲーム画像の背景を構成する画像を表示するためのデータである。また、オブジェクト画像データ３４は、主にゲーム画像における背景以外の画像であるオブジェクト画像を表示するためのデータである。オブジェクト画像データには、例えば、プレイヤの操作対象のオブジェクトの画像を表示するためのプレイヤオブジェクト画像データや、ゲームに登場するアイテムの画像を表示するためのアイテム画像データ等が含まれる。
【００２９】
図４は、ワークメモリ２０３に記憶されるデータの一例を示す図である。図４に示すように、ワークメモリ２０３には、プログラムＲＯＭ２１６に記憶されているプログラムの一部又は全部（本実施例では全部）である例えばエミュレータプログラム３１およびゲームプログラム３２が転送され記憶される。また、エミュレータプログラム３１が実行されることによって、ワークメモリ２０３には、他種のゲーム機（本実施例では例えばファミリーコンピュータなど）をエミュレーションするために各種の記憶領域が確保される。具体的には、仮想ＯＡＭバッファ４１、生成処理フラグ４２、Ａバッファ４３、Ｂバッファ４４、仮想カウンタバッファ４５などの記憶領域が確保される（例えば、ファミリーコンピュータをエミュレーションする場合には、６４個のＯＡＭバッファが確保される）。さらに、ワークメモリ２０３には、エミュレータプログラム３１が実行されることによって生成される補正値群４６（又は補正値といってもよい）が記憶される。
【００３０】
仮想ＯＡＭバッファ４１には、ゲームプログラム３２の実行によって生成される他種ゲーム機用のオブジェクトネーム（又はキャラクタネーム，キャラクタコードともいう）、表示座標、拡大縮小率等のデータが書込まれる。ここで、オブジェクトネームとは、特定のオブジェクトを表示するための画像を指定するためのデータである。また、表示座標とは、背景画像上におけるオブジェクトの表示位置を示す座標である。生成処理フラグ４２には、フラグのＯＮ／ＯＦＦを識別するためのデータが書込まれる。なお、生成処理フラグ４２については後述する。補正値群４６は、後述するゲーム画面表示処理において用いられる補正値の集合である。この補正値群４６は、後述する間引用補正値生成処理（図１４参照）において生成され、ワークメモリ２０３に書込まれる。また、Ａバッファ４３およびＢバッファ４４は、補正値群４６を生成する際に用いられる。仮想カウンタバッファ４５は、後述する変形例において用いられる。
【００３１】
なお、本実施形態では、ゲームプログラム３２は携帯ゲーム機１の起動時にワークメモリ２０３に書込まれるものとしたが、他の実施形態においては、ゲームプログラム３２は、カートリッジから必要なデータが適宜読み出される形態であってもよい。
【００３２】
図２の説明に戻り、ゲーム処理中、携帯ゲーム機１は、ＢＧ処理ユニット２１０およびＯＢＪ処理ユニット２１２を用いていわゆるスプライト処理を行い、ゲーム画像を生成する。ＯＢＪ処理ユニット２１２は、ＯＡＭバッファ（Ｏｂｊｅｃｔ  Ａｔｔｒｉｂｕｔｅ  Ｍｅｍｏｒｙ）２２１に格納されているデータに基づいて、オブジェクト画像データを画像合成処理ユニット２１３へ出力する。ＯＡＭバッファ２２１には、携帯ゲーム機１用の、オブジェクトを表示すべき座標やオブジェクトの画像を指定するためのオブジェクトネーム等が書込まれる。また、ＯＢＪ用ＶＲＡＭ２１１は、ワークメモリ２０３から読み込まれたオブジェクト画像データを記憶するために用いられる。
【００３３】
ＢＧ処理ユニット２１０は、ワークメモリ２０３に格納されている背景画像データ３３を、ＬＣＤ１１の解像度に適合する画像に変換しながら出力する。かかる変換を行うため、ＢＧ処理ユニット２１０には、ＬＣＤ用第１カウンタ２１８、ＬＣＤ用第２カウンタ２１９および水平ライン補正値バッファ２２０が設定される。また、ＢＧ用ＶＲＡＭ２０９は、ワークメモリ２０３から読み出したオブジェクト画像データ３４を保持するために用いられる。ＢＧ処理ユニット２１０は、ＬＣＤ用第１カウンタ２１８および水平ライン補正値バッファ２２０の値に基づいて、ＢＧ用ＶＲＡＭ２０９から背景画像データ３３の所定の水平ラインを読み出し、画像合成処理ユニット２１３へ出力する。なお、ＢＧ処理ユニット２１０から出力される背景画像のデータ、およびＯＢＪ処理ユニット２１２から出力されるオブジェクト画像のデータは、ゲーム画像の水平ライン毎に同期をとって画像合成処理ユニット２１３へ出力される。
【００３４】
画像合成処理ユニット２１３は、ライン単位の背景画像データとオブジェクト画像データとを合成し、合成した画像データをＬＣＤ１１へ出力する。ＬＣＤ１１は、画像合成処理ユニット２１３によって合成された画像データに基づいてゲーム画像を表示する。その結果、背景画像の上にオブジェクト画像を重ねられたゲーム画像が表示される。なお、本実施例ではノンインターレス方式の表示装置としてＬＣＤ１１を例に挙げたが、例えば、コンピュータ用のノンインターレス方式のＣＲＴ（Ｃａｔｈｏｄｅ−Ｒａｙ  Ｔｕｂｅ）モニタなどの表示装置でもよく、また、インターレス方式のテレビジョン受像機などでもよい。
【００３５】
なお、以上において、エミュレータプログラム３１およびゲームプログラム３２を記録する記録媒体の一例としてゲームカートリッジ２０７を挙げて説明した。ここで、エミュレータプログラムおよびゲームプログラムの取得方法は、どのようなものであってもよく、例えば、携帯ゲーム機１に接続可能な他のゲーム機からエミュレータプログラム３１とゲームプログラム３２とを供給し、ワークメモリ２０３に直接記憶させるような構成してもよい。この場合には、カートリッジは必要なくなる。また、ゲームカートリッジ２０７以外の例えばＤＶＤ−ＲＯＭなどの光又は磁気記録媒体から供給されるように構成してもよい。さらに、ゲームプログラムをバーコードによって記録したカードを記録媒体とし、エミュレータプログラムを記憶させたバーコード読取装置を、携帯ゲーム機１に装着して使用するような形態も考えられる。さらに、エミュレータプログラムおよびゲームプログラムは、別々の記録媒体に格納されていてもよく、異なる方法で取得されてもよい。
【００３６】
次に、携帯ゲーム機１のコンピュータによって実行される具体的な処理を説明する前に、本発明の理解を容易にするために、図５〜図１１を参照して携帯ゲーム機１における処理の概要等について説明する。
【００３７】
図５（ａ）は、第１解像度の表示装置（例えば、テレビジョン受像機、以下、単に「テレビ」と呼ぶ）によって表示されるゲーム画像の例を示す図である。図５（ｂ）は、第２解像度の表示装置（例えば、小型の液晶モニタ）に表示されるゲーム画像の例を示す図である。ここで、他種ゲーム機の表示装置の解像度を第１解像度と呼び、携帯ゲーム機１の表示装置（ＬＣＤ１１）の解像度を第２解像度と呼ぶ。  ゲームプログラム３２は、テレビが接続されるゲーム機において実行されるプログラムであるので、プログラムによって利用される画像データもテレビに表示することを前提にした第１解像度（例えば、２４０×２５６（垂直×水平、以下同様））で記憶されている（図５（ａ）参照）。これに対して、第２解像度は、携帯ゲーム機１を前提とした解像度（１６０×２４０ドット）である。つまり、ここでは、図５（ｂ）に示すように、第２解像度は、このように、第２解像度が第１解像度よりも低いため、携帯ゲーム機１は、ゲームプログラム３２を実行することによって得られるゲーム画像から所定数のラインを間引く処理を行う。なお、本実施例のラインの間引処理は、背景画像に対してのみ行い、オブジェクト画像に対しては間引処理を行わない。以下、ラインの間引方法について説明する。
【００３８】
本実施形態では、ゲームプログラム３２に含まれる背景画像データ３３により示される背景画像の上側の１２ライン分、下側の１５ライン分、右側の８ドット分および左側の８ドット分（図５（ａ）の斜線部分）が削除されるように、ライン単位の画像を間引く。ここで、当該削除部分は、ゲームプレイに必要な情報が含まれない安全フレーム以外の部分である。安全フレームとは、テレビのメーカごとの種類や性能等によって、同じ画像を表示させても画面上に表示される部分と表示されない部分とがあり、これらの誤差を考慮し決められた領域である。この領域内に含まれる画像情報は、どのようなテレビであっても必ず表示される。従って、安全フレーム以外の部分を削除したとしてもゲームプレイに支障がでない。
【００３９】
以上のように、背景画像から安全フレーム以外の部分を削除すると、削除した場合の背景画像は、２１３×２４０ドットとなる。従って、背景画像の垂直ラインについては、第２解像度に適合することとなる。一方、背景画像の水平ラインについてはさらに間引く必要がある。以下、この水平ラインの間引方法を図６および図７を参照しながら説明する。
【００４０】
図６は、水平ラインの間引方法の概要を示す図である。画像６１は、間引処理前のゲーム画像の例えば一部分（８×８ドット）を示したものである。また、画像６２および６３は、それぞれ、ｎフレーム（本発明における所定フレーム）およびｎ＋１フレーム（本発明における所定フレームの次フレーム）において、画像６１から所定ライン数だけ間引処理した後の画像である。また、本実施形態では、２１３ラインを１６０ラインに変換する必要があるので、おおよそ４ラインの内１ラインを間引けばよい。そこで、図６においては、８ラインを６ラインにするべく、２ライン分を間引いている。ここで、画像から間引く対象となるラインを、間引対象ラインと呼ぶ。
【００４１】
図７は、図６に示す間引方法において間引対象ラインを決定する方法を説明する図である。図７において、カウンタは、ＬＣＤ用第１カウンタ２１８の値を表す。カウンタの値「ｉ」（ｉは任意の自然数）は、間引処理後の背景画像における第（ｉ）番目のラインに対応している。また、読み出し水平ラインとは、間引処理前の背景画像における水平ラインの内、ＢＧ処理ユニットが読み出すべきラインを表すものである。すなわち、カウンタの値が「ｉ」である場合において、読み出し水平ラインの値が「ｊ」（ｊは任意の自然数）となっているとき、間引処理後の背景画像における第（ｉ）番目の水平ラインは、間引処理前の背景画像における第（ｊ）番目の水平ラインであることを意味する。
【００４２】
また、補正値は、補正値群４６を構成するものであり、カウンタの値から読み出し水平ラインの値を算出するための値である。読み出し水平ラインの値は、カウンタ（ＬＣＤ用第１カウンタ２１８）の値と、その値に対応する補正値とを加算したものである。本実施形態では、この補正値をカウンタの各値毎に設定し、読み出し水平ラインを決定する。図７（ａ）においては、補正値を（０，０，０，１，１，１）と設定することによって、読み出し水平ラインの値は、（１，２，３，５，６，７）と決定される。換言すれば、間引対象ラインは、第４および第８番目の水平ラインと決定される。このとき、間引処理前の画像６１から、第４および第８番目の水平ラインが間引かれ、間引処理後は画像６２となる。
【００４３】
なお、上述のように、本実施形態においては、水平ラインについて４ラインの内１ラインを間引けばよい。従って、補正値群４６は、同じ数が３つずつ連続し、かつ、同じ数が３つ連続した後は１増加するように生成する。これによって、連続する４ラインの内、１ラインが必ず間引かれることとなる。また、一定本数のライン毎に間引かれることとなる。なお、このような補正値群４６を生成する方法は、図１５に示されている。
【００４４】
また、本実施形態では、ｎフレーム目と次のｎ＋１フレーム目とにおいて、補正値を変更する。これによって、読み出し水平ラインの値が変化する結果、間引対象ラインが変化する。具体的には、ｎフレーム目の画像６２では、第４および第８番目の水平ラインが間引かれているのに対して、ｎ＋１フレーム目の画像６３では、第３および第７番目の水平ラインが間引かれている。つまり、ｎフレーム目とｎ＋１フレームとで、隣合うラインを間引くようにしている。本実施形態では、以上の方法によって、２種類の補正値（補正値群）を利用し、各フレームにおいて異なる補正値を選択することにより、間引対象ラインを１フレーム毎に変化させている。
【００４５】
なお、ここでは、間引処理前の背景画像（第１解像度の背景画像）を第１背景画像と呼ぶ。また、あるフレームにおける間引処理によって生成される第２解像度の背景画像を第２背景画像と呼ぶとき、当該あるフレームに連続する次のフレームにおける間引処理によって生成される第２解像度の背景画像を第３背景画像と呼ぶ。すなわち、本実施形態では、第２背景画像および第３背景画像は、連続するフレームにおいて交互に生成される。また、第２背景画像と第３背景画像とでは、間引処理において決定される間引対象ラインが異なる。
【００４６】
図８は、間引処理後における２つの画面を重ね合わせた画面の表示例である。上述した画像６２と画像６３とを連続する２フレームによって表示させる。これによって、図８に示すように、人間の目には前フレームの画像の残像が残り、次フレームの画像と重ね合わせたように見える。図８において、黒く塗りつぶされた部分８１は、連続する２フレームで重なって表示される部分である。また、斜線部分８２は、偶数番目（図６のｎフレーム目を偶数番目とした場合）のみ表示される部分であり、斜線部分８３は、奇数番目のフレーム（図６のｎ＋１フレーム目）のみ表示される部分である。つまり、連続するフレーム間で重なりあう部分の画像は濃く見え、それ以外の部分は薄く見える。結果として、画像を間引いてもオリジナルに近い画像を表示させることが可能になる。
【００４７】
図９は、間引処理を行う前後の背景画像の表示例を示す図である。図９（ａ）は、間引処理を行う前の背景画像（ゲームプログラム３２に含まれる背景画像データ３３により示される背景画像（オリジナル））を示す。図９（ｂ）は、偶数番目のフレームにおける間引処理後の背景画像を示す。図９（ｂ）では、梯子やレンガを表す線が描かれた水平ラインの画像が間引かれているので、梯子やレンガを表す線が欠けている。また、図９（ｃ）は、奇数番目のフレームにおける間引処理後の背景画像を示す。図９（ｃ）では、偶数番目のフレームで欠けている線が表示されているとともに、例えば梯子の梯と梯との間の水平ラインの画像が間引かれているので梯子の間隔が短くなっている。なお、奇数番目のフレームにおいても、偶数番目のフレームと同様、背景画像のいずれかの部分が欠けて表示されることもあるが、奇数番目のフレームにおいて欠けている部分は、偶数番目のフレームにおいて表示されている。
【００４８】
図１０は、偶数番目のフレームおよび奇数番目のフレームの２つ分のフレームを重ねて表示した場合の表示例を示す図である。図１０では、間引処理前の背景画像に含まれている情報（梯子やレンガを表す横線）がオリジナルに近い状態でほぼ表示されている。なお、図１０では、偶数番目のフレームおよび奇数番目のフレームの両方で表示される部分については太線で、いずれか一方で表示される部分について細線で表している。以上のように、本実施形態では、ｎフレーム目およびｎ＋１フレーム目の２つ分の連続するフレームによって、間引処理前の背景画像に含まれる表示情報がほぼ表示される。
【００４９】
なお、本実施形態の説明において、１フレームとは、表示装置に表示される画面１つ分に対応するものである。テレビジョン受像機のようなインターレス方式においては、１フレームが２画面分（２フィールド）を意味する場合があるが、ここでは、表示装置がインターレス方式であるかノンインターレス方式であるかにかかわらず、１フレームとは１画面分を意味するものとする。
【００５０】
本実施形態では、以上に説明した間引処理に加え、オブジェクト画像の表示位置の補正処理を行う。図１１は、背景画像にオブジェクト画像を重ね合わせた画像の表示例である。図１１（ａ）は、オブジェクト画像の表示位置を補正していない場合の表示例である。つまり、解像度変換後の背景画像上に、解像度変換前のオブジェクトの配置座標にそのままオブジェクト画像を重ねたゲーム画像の表示例である。これは、解像度変換後には背景画像が垂直方向に縮んでいるにもかかわらず、解像度変換前の配置座標にオブジェクト画像を配置したために、本来の表示したい位置からずれてしまっている例である。より具体的に説明すれば、図７に示すように、カウンタの値と読み出し水平ラインの値とは、必ずしも一致するものではないことによる。つまり、間引処理前のラインと、間引処理後のラインとの位置は必ずしも一致しない。例えば、カウンタの値が１００、読み出し水平ラインの値が１２５となる場合が考えられる。この場合、間引処理前において第１２５番目の水平ラインに表示される背景画像は、間引処理後には第１００番目の水平ラインに表示されることとなる。これに対して、オブジェクト画像データについては間引処理が行われないので、間引処理前において第１２５番目の水平ラインに表示されるオブジェクト画像は、間引処理後においても第１２５番目の水平ラインに表示されることとなる。その結果、背景画像およびオブジェクト画像が、本来同じ位置に表示されるべきであるにもかかわらず、異なる位置に表示されてしまう（図１１（ａ）参照）。以上より、本実施形態では、間引処理に応じてオブジェクト画像の表示位置を変換する。
【００５１】
具体的には、オブジェクト画像の座標（Ｘ，Ｙ）を、以下の式に従って新座標（Ｘ’，Ｙ’）に変換する。
（Ｘ’，Ｙ’）＝（Ｘ−８，（Ｙ−１２）÷Ｈ１×Ｈ２）…▲１▼
ここで、Ｈ１は、第１解像度であり、Ｈ２は、第２解像度である。なお、水平方向の座標（Ｘ）について８を減算しているのは、８ドット分を削除するためである。また、垂直方向の座標（Ｙ）について１２を減算しているのは、１２ドット分の安全フレームを削除するためである。また、第１解像度と第２解像度の比率である（Ｈ２／Ｈ１）を乗算しているのは、間引処理の前後において背景画像の垂直方向の幅が（Ｈ２／Ｈ１）倍に変化しているからである。つまり、背景画像の垂直方向の幅が変化した割合と同じ割合だけ、オブジェクト画像の表示位置を変化させる。このように、間引処理による背景画像の変化に応じてオブジェクト画像の表示座標を変換することによって、オブジェクト画像の表示位置を背景画像にほぼ一致させることができる（図１１（ｂ）参照）。
【００５２】
次に、図１２〜図１６を参照して、携帯ゲーム機１によって実行される処理について具体的に説明する。以下の処理は、携帯ゲーム機１の電源が投入された後、ＣＰＵ２０１がワークメモリ２０３のエミュレータプログラム３１およびゲームプログラム３２を実行することによって行われる。
【００５３】
図１２は、携帯ゲーム機１において実行されるフローチャートである。まず、ステップ１（図では「ステップ」を単に「Ｓ」と略す）において、ＣＰＵ２０１によって、エミュレータプログラム３１が実行される。このとき、エミュレーションに必要な仮想ＯＡＭバッファ等の記憶領域がワークメモリ２０３に確保される（図４参照）。ステップ２において、エミュレータプログラム３１を介してゲームプログラム３２が実行される（すなわち、「エミュレータプログラム３１がゲームプログラム３２を実行する」ともいえる）。このステップ２において、ゲームプログラム３２に基づく１フレーム分のゲーム画像が設定される。換言すれば、ステップ２では、他種のゲーム機によって第１解像度の表示装置に表示するためのゲーム画像が生成される（すなわち、背景画像と、オブジェクト画像と、オブジェクト画像の表示座標が設定される）。以下、ステップＳ２の詳細を図１３を参照して説明する。
【００５４】
図１３は、ステップ２のゲームプログラム処理の詳細を示すフローチャートである。まず、ステップ２１において、ゲームの初期設定が行われる。すなわち、ステップ２１では、次のフレームで表示すべき背景画像やゲームキャラクタ画像等が決定される。ステップ２２において、ステップＳ２１で決定された背景画像の背景画像データがワークメモリ２０３から読み込まれ、ＢＧ処理ユニット２１０に対して背景画像データをＢＧ用ＶＲＡＭ２０９に書込ませる。次に、ステップ２３において、コントローラポート（図示せず）に保持されているゲームキャラクタの操作情報が取得される。なお、コントローラポートには、プレイヤの操作に応じて操作ボタン２０８から出力される情報が一時的に記憶される。続く、ステップ２４において、ステップＳ２３で取得された操作情報に基づいてゲームキャラクタの移動後の座標が決定される。そして、ステップ２５において、ゲームキャラクタの移動後の座標および当該ゲームキャラクタのオブジェクトネーム等が仮想ＯＡＭバッファ４１に書込まれる。上述したステップ２１〜２５によって、他種のゲーム機がテレビに表示するためのゲーム画像を生成するのに必要なデータが生成される。なお、このデータに基づくゲーム画像をそのまま表示すると、前提とする解像度が異なることにより、ゲームに必要な情報が欠落したゲーム画像が表示されることになる。そこで、ゲームに必要な情報が欠落していないゲーム画像を表示するために、以下のステップＳ３〜Ｓ６が実行される。
【００５５】
図１２の説明に戻り、ステップ３において、ゲームキャラクタの座標（Ｘ，Ｙ）およびオブジェクトネーム等のデータが仮想ＯＡＭバッファ４１から読み出される。ステップ４において、読み出した座標（Ｘ，Ｙ）を新座標（Ｘ’，Ｙ’）に変換される。新座標への変換には、上述の式▲１▼が用いられる。ステップ５において、新座標およびオブジェクトネーム等のデータがＯＡＭバッファ２２１に書込まれる。ステップ６において、ＣＰＵ２０１等によって、ゲーム画面表示処理が行われる。ゲーム画面表示処理の詳細は図１４に示す。ステップ６が終了すると、ステップ２からステップ６の処理が繰り返される。ステップ２からステップ６までの１回のループによって１フレーム分の画像が生成され表示される。なお、このループのたびに後述するステップ３１において異なるパターンの補正値群４６が生成される。この補正値群４６の各補正値を利用して連続するフレーム間で異なるラインを間引くことにより、図６，図８で説明した現象を利用したゲーム画像を表示させることができる。
【００５６】
図１４は、ステップ６のゲーム画面表示処理の詳細を示すフローチャートである。ステップ３１において、ＣＰＵ２０１によって、補正値生成処理が行われる。ここで、本実施形態では、補正値群４６は、同じ数が３つずつ連続し、かつ、同じ数が３つ連続した後は１増加するように生成される。以下、補正値生成処理の詳細を図１５を参照して説明する。
【００５７】
図１５は、ステップ３１の補正値生成処理の詳細を示すフローチャートである。まず、ステップ５１において、ワークメモリ２０３に記憶されているすべての補正値がクリアされる。これは、前フレームにおけるループ（ステップ２〜ステップ６）において生成された補正値を消去するものである。ステップ５２において、生成処理フラグがＯＮであるか否かが判断される。ここで、生成処理フラグは、奇数番目のフレームか偶数番目のフレームかを判断するためのフラグである。すなわち、生成処理フラグは、ＯＮである場合には奇数番目のフレーム、ＯＦＦである場合には偶数番目のフレームを表す。ステップ５２の判断において、生成処理フラグがＯＮである場合、ステップ５３〜５５の処理が実行される。また、生成処理フラグがＯＦＦである場合、ステップ５６〜５８の処理が実行される。
【００５８】
ステップ５３において、生成処理フラグがＯＦＦに変更される。これは、次回のループにおいて今回と異なる補正値群４６を生成するためである。ステップ５４において、カウンタの値が１５７にセットされる。ここで用いられるカウンタは、生成すべき補正値の残り数を示すものである。ステップ５５において、（０，０，０）を補正値として保存する。ここで、補正値生成処理において生成すべき補正値の数（補正値群４６を構成する補正値の数）は垂直方向のライン数と同数の１６０であり、ステップ５５において予め補正値を３つ設定している。このため、ステップＳ５４においてカウンタの値は１５７にセットされる。ステップ５５が終了すると、ステップ５９が実行される。
【００５９】
一方、ステップ５６において、生成処理フラグがＯＮに変更される。これは、ステップ５３と同様の理由である。ステップ５７において、カウンタの値が１５８にセットされる。ステップ５８において、（０，０）が補正値として保存される。ここで、補正値生成処理において生成すべき補正値の数は垂直方向のライン数と同数の１６０であり、ステップ５８において補正値を２つ設定している。このため、ステップＳ５７においてカウンタの値は１５８にセットされる。ステップ５８が終了すると、ステップ５９が実行される。なお、上述のステップ５５とステップ５８において予め異なる補正値の数を設定することにより、その後の補正値の生成ルーティンを共有化させることができる。
【００６０】
ステップ５９において、Ａバッファに「１」がセットされる。ここで、Ａバッファに格納される値は、設定される補正値を示す。ステップ６０において、Ｂバッファに「３」がセットされる。ここで、Ｂバッファに格納される値は、同じ値の補正値を連続して設定する回数を示す。すなわち、Ｂバッファに「３」が設定されている場合、補正値は、（・・・ｐ，ｐ，ｐ，ｑ，ｑ，ｑ・・・）のように、同じ補が３つ連続して設定される。
【００６１】
続くステップ６１において、カウンタの値が「０」であるかが判定される。カウンタの値が「０」である場合、生成すべき補正値の残り数は０であるので、補正値生成処理を終了する。一方、カウンタの値が「０」でない場合、ステップ６２の処理が実行される。
【００６２】
ステップ６２において、Ｂバッファの値が「０」であるか否かが判断される。Ｂバッファの値が「０」である場合、ステップ６３，６４の処理が実行される。一方、Ｂバッファの値が「０」でない場合、ステップ６５〜６７の処理が実行される。
【００６３】
ステップ６３において、Ａバッファの値に「１」だけ加算される（以下、単に『「＋１」される』という）。さらに、ステップ６４において、Ｂバッファの値に「３」がセットされる。その後、ステップ６１に戻る。一方、ステップ６５において、Ａバッファの値がまず補正値として保存される。続くステップ６６において、Ｂバッファの値が「１」だけ減算される（以下、単に『「−１」される』という）。さらに、ステップ６７において、カウンタの値が「−１」される。その後、ステップ６１に戻る。以降、ステップ６１においてカウンタの値が「０」になるまで、ステップ６２から６７の処理が繰り返し行われる。
【００６４】
図１４の説明に戻り、ステップ３２において、ＬＣＤ用第１カウンタ２１８をスタートさせる。ＬＣＤ用第１カウンタ２１８の値は、背景画像データを画像合成処理ユニット２１３に出力する際の水平ラインを示す。ここで、ＬＣＤ用第１カウンタ２１８の初期値が「１」に設定される。続くステップ３３において、水平ライン補正値バッファ２２０にステップ３１で生成した補正値が書込まれる。ステップ３３において書込まれる補正値は、ステップ３１において最初に書込まれた補正値、すなわち、第１番目の水平ラインに対応する補正値である。ステップ３４において、ＢＧ処理ユニット２１０に対して、ＢＧ用ＶＲＡＭ２０９に格納されている背景画像データの１３ライン目を１ライン目として設定させる。これは、背景画像データの上側１２ライン分を削除するためである。
【００６５】
ステップ３５において、ＢＧ処理ユニット２１０に対して、ＬＣＤ用第１カウンタ２１８の値と対応する補正値とを加算させる。具体的には、ＢＧ処理ユニット２１０は、ＬＣＤ用第１カウンタ２１８の値と水平ライン補正値バッファ２２０に格納されている補正値とを加算する。これによって、読み出し水平ラインの値が算出されるので（図７参照）、表示すべき読み出し水平ラインと、間引くべき間引対象ラインとが決定されることとなる。ステップ３６において、ＢＧ処理ユニット２１０に対して背景画像の水平ライン単位の転送処理を行わせる。ステップ３６において転送処理の対象となるのは、読み出し水平ラインの値に対応する水平ラインである。すなわち、ステップ３６では、ライン単位の画像を順次出力させている。以下、ステップ３６の背景画像の水平ライン単位の転送処理の詳細を図１６を用いて説明する。
【００６６】
図１６は、ステップ３６の背景画像の水平ライン単位の転送処理の詳細を示すフローチャートである。まず、ステップ７１において、ＢＧ処理ユニット２１０によって、転送開始位置が設定される。具体的には、９ドット目を転送開始位置とする。これは、安全フレーム外の８ドット分を削除するためである。続くステップ７２において、ＬＣＤ用第２カウンタ２１９がスタートされる。ここで、ＢＧ処理ユニット２１０は、ＬＣＤ用第２カウンタ２１９の初期値を「１」に設定する。ステップ７３において、ＬＣＤ用第２カウンタ２１９の値に相当するドットの画像データ（すなわち、各ドットごとのカラーデータといえる）をＢＧ用ＶＲＡＭから読み出させ、画像合成処理ユニット２１３へ送信させる。
【００６７】
次に、ステップ７４において、ＬＣＤ用第２カウンタ２１９のカウントが終了したか否かを判定させる。具体的には、ＬＣＤ用第２カウンタ２１９の値が「２４０」となったか否かを判定する。ステップ７４の判定において、カウンタ値が終了した場合、２４０ドット（すなわち、１ライン分）の背景画像データの転送処理を終了する。一方、ステップ７４の判定において、カウントが終了していない場合、ステップ７５が実行される。ステップ７５において、ＬＣＤ用第２カウンタ２１９の値を「＋１」する。ステップ７５の後、ステップ７３の処理に戻る。以降、カウンタ値が終了するまで、ステップ７３から７５の処理が繰り返される。上述したステップ３５およびステップ７１から７５によって、補正値によって選択された水平ラインの１ライン分の画像データが出力される。すなわち、ライン単位の画像が順次出力される。
【００６８】
図１４の説明に戻り、ステップ３７において、ＯＢＪ処理ユニット２１２に対して、１ライン分のオブジェクト画像データを画像合成処理ユニットへ送信させる。ステップ３７において送信の対象となるのは、読み出し水平ラインにより示されるライン単位のオブジェクト画像データである。ステップ３８において、画像合成処理ユニットに対して、ステップ３６においてＢＧ処理ユニット２１０から転送されてきた背景画像データと、ステップ３７においてＯＢＪ処理ユニットから送信されてきたオブジェクト画像データとを合成させて、ゲーム画像を生成させている。すなわち、ステップ３８では、ゲーム画像をライン単位で生成し出力している。ステップ３９において、ＬＣＤ１１は、読み出し水平ラインに対応するラインの画面を書き換えて表示する。ここで、ＬＣＤ１１は、ステップ３８において画像合成処理ユニットによって合成された画像データに書き換えて表示する。
【００６９】
ステップ４０において、すべての水平ラインについてステップ３９における書き換え表示が終了したか否かを判定させる。ステップ４０における判定において、書き換え表示が終了した場合、ゲーム画面表示処理を終了する。一方、書き換え表示が終了していない場合、ステップ４１および４２の処理が実行される。すなわち、ステップ４１において、次の水平ライン用の補正値が水平ライン補正値バッファ２２０に書込まれる。次の水平ライン用の補正値とは、ステップ３１において、水平ライン補正値バッファ２２０に現在書込まれている補正値の次に生成された補正値である。次に、ステップ４２において、ＬＣＤ用第１カウンタ２１８の値が１加算される。ステップ４２の後、ステップ３５の処理に戻る。以降、ステップ４０の書き換え表示が終了するまで、ステップ３５から４２の処理が行われる。上述の実施例によれば、ライン単位の画像データを順次出力させるとともに、間引き処理をさせているので、処理負担をより軽減でき、特にエミュレータの画像処理に適合させることができる。
【００７０】
次に、携帯ゲーム機１によって実行される処理の変形例を説明する。上記実施形態では、ＢＧ用ＶＲＡＭ２０９には間引処理がなされていない背景画像データが格納され、ＢＧ処理ユニット２１０において水平ライン毎に背景画像データを出力する際に間引処理が行われた。これに対して、本変形例では、ＢＧ用ＶＲＡＭ２０９に背景画像データを格納する際に間引処理を行い、ＢＧ用ＶＲＡＭ２０９には間引処理がなされた少なくとも２種類の背景画像データが格納される。以下、図１７を参照して本変形例を説明する。
【００７１】
図１７は、携帯ゲーム機１において実行される処理の変形例を示すフローチャートである。なお、図１７において、図１２と同様の処理を行うブロックについては詳細な説明を省略する。図１７において、処理の開始からステップ２までの処理は、図１２と同様である。ここで、本変形例では、ステップ２の後に補正値生成処理が行われる（ステップ３１）。なお、補正値生成処理の内容は、上述の実施形態と同様である。続くステップ８１において、仮想カウンタがスタートされる。ここで、仮想カウンタは、上記実施形態におけるＬＣＤ用第１カウンタ２１８に対応するものである。ステップ８１において、仮想カウンタの値は１にセットされる。
【００７２】
ステップ８２において、仮想カウンタの値と、仮想カウンタの値に対応する補正値とが加算される。加算した結果は、上述の読み出し水平ラインの値と同じものである。次に、ワークメモリ２０３に格納されている背景画像データの１３ライン目が１ライン目として設定される。これは、背景画像データの上側１２ライン分を安全フレーム外の部分として削除するためである。さらに、ステップ８２において加算した結果に対応する水平ラインの背景画像データが、ＢＧ用ＶＲＡＭ２０９に保存される。
【００７３】
ステップ８５において、仮想カウンタの値が１６０であるか否かが判定される。仮想カウンタの値が１６０でない場合、ステップ８６が実行される。すなわち、ステップ８６において、仮想カウンタの値を「＋１」して、ステップ８２の処理に戻る。以降、ステップ８５において仮想カウンタの値が１６０となるまで、ステップ８２から８６の処理が行われる。一方、ステップ８５の判定において、仮想カウンタの値が１６０でない場合、ステップ３から５が実行される。ステップ３から５の処理は、上記実施形態と同様である。ステップ５の後、本変形例においては、ステップ８７が実行される。ステップ８７において、ＬＣＤ１１によって画像を表示させる。具体的には、ＢＧ処理ユニット２１０から背景画像データを出力させ、ＯＢＪ処理ユニット２１２からオブジェクト画像データを出力させる。さらに、画像合成処理ユニット２１３に背景画像データとオブジェクト画像データとを合成させ、ＬＣＤ１１に出力させる。
【００７４】
なお、本実施形態では、間引処理の対象を背景画像のみとした。ここで、他の実施形態においては、オブジェクト画像も間引き処理の対象としてもよい。この場合、ＯＢＪ処理ユニット２１２は、ＬＣＤ用第１カウンタ２１８および水平ライン補正値バッファ２２０の値に基づいて、オブジェクト画像データの所定の水平ラインを読み出し、画像合成処理ユニット２１３へ出力する。このように、オブジェクト画像についても背景画像と同様に間引き処理を行うことができる。
【００７５】
なお、本実施形態では、間引対象ラインをフレーム毎に変化させて画像データを間引く処理は、水平ライン方向のみについて行った。ここで、他の実施形態においては、かかる処理を垂直ライン方向について行ってもよい。図１８に、垂直ラインの間引方法の概要を示す。図１８は、図６と同様の処理を行うものである。具体的には、ｎ番目のフレームにおいては、垂直ライン方向について第３および第７番目のラインを間引き、ｎ＋１番目のフレームにおいては、垂直ライン方向について第４および第８番目のラインを間引く。このように、垂直ライン方向についても、本実施形態と同様に間引処理を行うことが可能である。さらに、他の実施形態においては、水平ラインおよび垂直ラインの両方について間引処理を行ってもよい。
【００７６】
なお、本実施形態では、隣接するラインを間引く処理をフレーム毎に交互に行った。これは、表示装置の一例である液晶モニタは表示応答速度がＣＲＴモニタなどに比べて非常に遅いので特に効果があったためである。例えば表示応答速度が十分に早い場合には、所定数のフレーム毎に（例えば、３フレームに１回）間引対象ラインを変更するようにしてもよい。なお、表示応答速度が遅い場合には、間引きパターンを増やしても、本実施形態に比して格別の効果を有するものではない。例えば、間引き位置を連続して移動させると画面自体が波打つように見えるという現象がわかった。
【００７７】
また、本実施形態では、あるフレームにおいてｋ番目のラインが間引かれた場合、次のフレームではｋ番目のラインに隣接するラインが間引いている。これは、色々な間引きパターンを実験した結果、プレイヤに違和感を与えることなく、オリジナルのゲーム画面をほぼ再現できることがわかったからである。
【００７８】
以上、本実施形態によれば、間引対象ラインをフレーム毎に変化させることで、解像度の低いゲーム装置においてゲームをプレイする場合でも、オリジナルに近いゲーム画像を再現することができる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る携帯ゲーム機の概観図である。
【図２】携帯ゲーム機１およびゲームカートリッジの構成を示すブロック図である。
【図３】ゲームカートリッジ２０７のプログラムＲＯＭ２１６に記憶されるデータの一例を示す図である。
【図４】ワークメモリ２０３に記憶されるデータの一例を示す図である。
【図５】ゲーム画像の例を示す図である。
【図６】水平ラインの間引方法の概要を示す図である。
【図７】図６に示す間引方法において間引対象ラインを決定する方法を説明する図である。
【図８】間引処理後における２つの画面を重ね合わせた画面の表示例である。
【図９】間引処理を行う前後の背景画面の表示例を示す図である。
【図１０】偶数番目のフレームおよび奇数番目のフレームの２つ分のフレームを重ねて表示した場合の表示例を示す図である。
【図１１】背景画像にオブジェクト画像を重ね合わせた画面の表示例である。
【図１２】携帯ゲーム機１において実行されるフローチャートである。
【図１３】ステップ２のゲームプログラム処理の詳細を示すフローチャートである。
【図１４】ステップ６のゲーム画面表示処理の詳細を示すフローチャートである。
【図１５】ステップ３１の補正値生成処理の詳細を示すフローチャートである。
【図１６】ステップ３６の背景画像の水平ライン単位の転送処理の詳細を示すフローチャートである。
【図１７】携帯ゲーム機１において実行される処理の変形例を示すフローチャートである。
【図１８】垂直ラインの間引方法の概要を示す図である。
【符号の説明】
２０１  ＣＰＵ
２０３  ワークメモリ
２０７  ゲームカートリッジ
２０９  ＢＧ用ＶＲＡＭ
２１０  ＢＧ処理ユニット
２１１  ＯＢＪ用ＶＲＡＭ
２１２  ＯＢＪ処理ユニット
２１３  画像合成処理ユニット
【図１】
0003599728.tif 000002
【図２】
0003599728.tif 000003
【図３】
0003599728.tif 000004
【図４】
0003599728.tif 000005
【図５】
0003599728.tif 000006
【図６】
0003599728.tif 000007
【図７】
0003599728.tif 000008
【図８】
0003599728.tif 000009
【図９】
0003599728.tif 000010
【図１０】
0003599728.tif 000011
【図１１】
0003599728.tif 000012
【図１２】
0003599728.tif 000013
【図１３】
0003599728.tif 000014
【図１４】
0003599728.tif 000015
【図１５】
0003599728.tif 000016
【図１６】
0003599728.tif 000017
【図１７】
0003599728.tif 000018
【図１８】
0003599728.tif 000019