(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-02
(45)【発行日】2022-11-11
(54)【発明の名称】情報処理装置、情報処理システム、情報処理プログラム、および情報処理方法
(51)【国際特許分類】
A63F 13/60 20140101AFI20221104BHJP
A63F 13/45 20140101ALI20221104BHJP
A63F 13/53 20140101ALI20221104BHJP
A63F 13/55 20140101ALI20221104BHJP
A63F 13/42 20140101ALI20221104BHJP
A63F 13/577 20140101ALI20221104BHJP
【FI】
A63F13/60
A63F13/45
A63F13/53
A63F13/55
A63F13/42
A63F13/577
(21)【出願番号】P 2020037015
(22)【出願日】2020-03-04
【審査請求日】2021-03-09
(73)【特許権者】
【識別番号】000233778
【氏名又は名称】任天堂株式会社
(74)【代理人】
【識別番号】110001276
【氏名又は名称】特許業務法人 小笠原特許事務所
(74)【代理人】
【識別番号】100130269
【氏名又は名称】石原 盛規
(72)【発明者】
【氏名】吉本 裕仁
(72)【発明者】
【氏名】川瀬 智広
【審査官】右田 純生
(56)【参考文献】
【文献】特開2001-340641(JP,A)
【文献】特開2013-102842(JP,A)
【文献】特開2017-029509(JP,A)
【文献】特開2002-027038(JP,A)
【文献】特開2001-340655(JP,A)
【文献】特開2013-109560(JP,A)
【文献】特開2011-107958(JP,A)
【文献】特表2015-525105(JP,A)
【文献】米国特許出願公開第2018/0139507(US,A1)
【文献】米国特許出願公開第2014/0094314(US,A1)
【文献】米国特許出願公開第2014/0004962(US,A1)
【文献】ちょっとマジック大全 スキ・キライ発見器 ニンテンドーDSi時計 どうぶつの森タイプ ニンテンドーDSi時計 ファミコンマリオタイプ,ファミ通ディーエスプラスウィー 第11巻 第6号 DS+Wii,株式会社エンターブレイン,2009年06月01日,第11巻,第101頁
【文献】クジラ飛行机 KUJIRAHIKOUZUKUE,HTML5/JavaScriptで作る Androidアプリ開発ガイドブック 初版 Android Application with HTML5/JavaScript Guide Book,第1版,株式会社毎日コミュニケーションズ 中川 信行,2011年04月25日,第151-152頁
(58)【調査した分野】(Int.Cl.,DB名)
A63F 13/00-13/98
A63F 9/24
(57)【特許請求の範囲】
【請求項1】
記憶媒体と、
プロセッサを備え、
前記記憶媒体は、ゲームのロムデータと、当該ロムデータに基づいてゲームを実行するエミュレータプログラムを少なくとも記憶し、
前記プロセッサは、
第1のモードにおいて、前記エミュレータプログラムによって前記ロムデータに基づくゲーム処理を実行し、
第2のモードにおいて、前記エミュレータプログラムに前記ロムデータに基づくゲーム処理を実行させながら、更に実行中の当該エミュレータプログラムが処理するデータに変更を加えることにより、前記ゲーム処理とは異なり、かつ前記ロムデータに含まれるゲーム画像の少なくとも一部が表示されるアプリケーションを実行する、情報処理装置。
【請求項2】
前記ロムデータは、背景画像データとキャラクタ画像データを少なくとも含み、
前記エミュレータプログラムは、前記ロムデータに基づいて背景画像およびキャラクタ画像を生成し、当該キャラクタ画像に関連付けられたキャラクタを制御し、当該背景画像およびキャラクタ画像を少なくとも含むゲーム画面を表示させることで前記ゲームを実行する、請求項1に記載の情報処理装置。
【請求項3】
前記プロセッサは、
前記第1のモードにおいて、前記エミュレータプログラムに前記キャラクタのうちプレイヤキャラクタを少なくとも制御させ、
前記第2のモードにおいて、前記プレイヤキャラクタに関連付けられる前記キャラクタ画像が少なくとも表示される前記アプリケーションを実行する、請求項2に記載の情報処理装置。
【請求項4】
前記プロセッサは、前記第2のモードにおいて、前記プレイヤキャラクタを所定の位置に配置する変更を行った上で、前記エミュレータプログラムに前記プレイヤキャラクタを制御させる、請求項3に記載の情報処理装置。
【請求項5】
前記プロセッサは、
前記第1のモードにおいて、前記エミュレータプログラムに、操作部から入力されるキーデータに基づいて前記プレイヤキャラクタを制御させ、
前記第2のモードにおいて、前記キーデータを疑似的に入力する変更を行った上で、前記エミュレータプログラムに前記プレイヤキャラクタを制御させる、請求項3または4に記載の情報処理装置。
【請求項6】
前記プロセッサは、前記第2のモードにおいて、前記キャラクタのうち、前記プレイヤキャラクタ以外の少なくとも1つのノンプレイヤキャラクタを所定の位置に配置する変更を行った上で前記エミュレータプログラムに当該プレイヤキャラクタおよび当該ノンプレイヤキャラクタを制御させる、請求項3から5のいずれかに記載の情報処理装置。
【請求項7】
前記エミュレータプログラムが実行する処理は、前記キャラクタ同士の当たり判定処理を含む、請求項3から6のいずれかに記載の情報処理装置。
【請求項8】
前記記憶媒体は、前記ロムデータに含まれる前記キャラクタ画像とは別に追加キャラクタ画像を更に記憶し、
前記プロセッサは、前記第2のモードにおいて、前記エミュレータプログラムが前記ゲーム処理の実行中に制御する前記キャラクタの前記キャラクタ画像を、前記追加キャラク
タ画像に変更して表示する、請求項2から7のいずれかに記載の情報処理装置。
【請求項9】
前記記憶媒体は、前記ロムデータに含まれる前記背景画像データとは別に追加背景画像データを更に記憶し、
前記プロセッサは、前記第2のモードにおいて表示する前記背景画像の少なくとも一部に、前記追加背景画像データを用いた画像を表示させる、請求項2から8のいずれか記載の情報処理装置。
【請求項10】
前記第2のモードにおけるアプリケーションは、時計アプリケーションである、請求項1から9のいずれか記載の情報処理装置。
【請求項11】
前記第2のモードにおけるアプリケーションは、時計アプリケーションであり、
前記プロセッサは、前記第2のモードにおいて、複数の前記ノンプレイヤキャラクタを、時刻を表す形状に配置する、請求項
6に記載の情報処理装置。
【請求項12】
前記第2のモードにおけるアプリケーションは、時計アプリケーションであり、
前記プロセッサは、前記第2のモードにおいて、前記追加背景画像データによって時刻を表す画像を表示させる、請求項9に記載の情報処理装置。
【請求項13】
前記プロセッサは更に、前記第2のモードにおいて、特定の時刻になったことに応じて、所定のイベントを発生させる、請求項10から12のいずれかに記載の情報処理装置。
【請求項14】
前記情報処理装置は、モード切替の指示を行うための切替操作部を更に備え、
前記プロセッサは更に、
前記切替操作部への操作に応じて前記モードの切替を行い、
前記第1のモードから別のモードに移行する場合には、プレイ中の前記ゲーム処理の状態を保存し、
前記別のモードから前記第1のモードに移行した場合に、保存された状態から前記ゲーム処理を再開させる、請求項1から13のいずれかに記載の情報処理装置。
【請求項15】
前記情報処理装置は、画像を表示するディスプレイと、前記ゲームをプレイするための操作部を更に備える携帯型の装置である、請求項1から14のいずれか記載の情報処理装置。
【請求項16】
記憶媒体と、
プロセッサを備え、
前記記憶媒体は、ゲームのロムデータと、当該ロムデータに基づいてゲームを実行するエミュレータプログラムを少なくとも記憶し、
前記プロセッサは、
第1のモードにおいて、前記エミュレータプログラムによって前記ロムデータに基づくゲーム処理を実行し、
第2のモードにおいて、前記エミュレータプログラムに前記ロムデータに基づくゲーム処理を実行させながら、更に実行中のエミュレータプログラムが処理するデータに変更を加えることにより、前記ゲーム処理とは異なり、かつ前記ロムデータに含まれるゲーム画像の少なくとも一部が表示されるアプリケーションを実行する、情報処理システム。
【請求項17】
ゲームのロムデータと、当該ロムデータに基づいてゲームを実行するエミュレータプログラムを少なくとも記憶した記憶媒体を備える情報処理装置のプロセッサに、
第1のモードにおいて、前記エミュレータプログラムによって前記ロムデータに基づくゲーム処理を実行させ、
第2のモードにおいて、前記エミュレータプログラムに前記ロムデータに基づくゲーム処理を実行させながら、更に実行中の当該エミュレータプログラムが処理するデータに変更を加えることにより、前記ゲーム処理とは異なり、かつ前記ロムデータに含まれるゲーム画像の少なくとも一部が表示されるアプリケーションを実行させる、情報処理プログラム。
【請求項18】
前記ロムデータは、背景画像データとキャラクタ画像データを少なくとも含み、
前記エミュレータプログラムは、前記ロムデータに基づいて背景画像とキャラクタ画像を生成し、前記キャラクタ画像に関連付けられたキャラクタを制御し、背景画像とキャラクタ画像を少なくとも含むゲーム画面を表示させることで前記ゲームを実行する、請求項17に記載の情報処理プログラム。
【請求項19】
前記プロセッサに、
前記第1のモードにおいて、前記エミュレータプログラムによって前記キャラクタのうちプレイヤキャラクタを少なくとも制御させ、
前記第2のモードにおいて、前記プレイヤキャラクタに関連付けられる前記キャラクタ画像が少なくとも表示される前記アプリケーションを実行させる、請求項18に記載の情報処理プログラム。
【請求項20】
前記プロセッサに、前記第2のモードにおいて、前記プレイヤキャラクタを所定の位置に配置する変更を行った上で、前記エミュレータプログラムによる前記プレイヤキャラクタの制御を行わせる、請求項19に記載の情報処理プログラム。
【請求項21】
前記プロセッサに、
前記第1のモードにおいて、操作部から入力されるキーデータに基づいて前記エミュレータプログラムによる前記プレイヤキャラクタの制御を行わせ、
前記第2のモードにおいて、前記キーデータを疑似的に入力する変更を行った上で、前記エミュレータプログラムによる前記プレイヤキャラクタの制御を行わせる、請求項19または20に記載の情報処理プログラム。
【請求項22】
前記プロセッサに、前記第2のモードにおいて、前記キャラクタのうち、前記プレイヤキャラクタ以外の少なくとも1つのノンプレイヤキャラクタを所定の位置に配置する変更を行った上で前記エミュレータプログラムによる当該プレイヤキャラクタおよび当該ノンプレイヤキャラクタの制御を行わせる、請求項
19から21のいずれかに記載の情報処理プログラム。
【請求項23】
前記記憶媒体には、前記ロムデータに含まれる前記キャラクタ画像とは別に追加キャラクタ画像が更に記憶されており、
前記プロセッサに、前記第2のモードにおいて、前記エミュレータプログラムが前記ゲーム実行中に制御する前記キャラクタの前記キャラクタ画像を、前記追加キャラクタ画像に変更して表示させる、請求項18から22のいずれかに記載の情報処理プログラム。
【請求項24】
前記記憶媒体には、前記ロムデータに含まれる前記背景画像データとは別に追加背景画像データを更に記憶されており、
前記プロセッサに、前記第2のモードにおいて表示する前記背景画像の少なくとも一部に、前記追加背景画像データを用いた画像を表示させる、請求項18から23のいずれか記載の情報処理プログラム。
【請求項25】
前記第2のモードにおけるアプリケーションは、時計アプリケーションであり、
前記プロセッサに、前記第2のモードにおいて、複数の前記ノンプレイヤキャラクタを
、時刻を表す形状に配置させる、請求項2
2に記載の情報処理プログラム。
【請求項26】
前記第2のモードにおけるアプリケーションは、時計アプリケーションであり、
前記プロセッサに、前記第2のモードにおいて、前記追加背景画像データによって時刻を表す画像を表示させる、請求項24に記載の情報処理プログラム。
【請求項27】
前記プロセッサに更に、前記第2のモードにおいて、特定の時刻になったことに応じて、所定のイベントを発生させる、請求項25または26に記載の情報処理プログラム。
【請求項28】
ゲームのロムデータと、当該ロムデータに基づいてゲームを実行するエミュレータプログラムを少なくとも記憶した記憶媒体を備える情報処理装置のプロセッサが実行する情報処理方法であって、
前記プロセッサに、
第1のモードにおいては、前記ロムデータに基づいたゲーム処理を前記エミュレータプログラムが実行するように制御させ、
第2のモードにおいては、前記ロムデータに基づくゲーム処理を前記エミュレータプログラムに実行させながら、更に実行中の当該エミュレータプログラムが処理するデータに変更を加えることにより、当該ゲーム処理とは異なり、かつ前記ロムデータに含れるゲーム画像の少なくとも一部が表示されるアプリケーションを実行するように制御させる、情報処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ロムデータに基づくゲーム処理を実行するエミュレータプログラムが動作する情報処理装置、情報処理システム、情報処理プログラム、情報処理方法に関する。
【背景技術】
【0002】
従来から、エミュレータプログラムと、ゲームのロムが複数記憶されている情報処理装置が知られている(例えば特許文献1)。この装置では、過去に発売されていたゲーム装置の動作をエミュレータプログラムで再現でき、インストールされている複数のゲームをプレイすることが可能となっている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記のような情報処理装置は、単にエミュレータを使ったゲームをプレイ可能とするだけであった。そのため、当該ゲームに含まれる各種コンテンツ(プレイヤキャラクタ等)をさらに活用するようなことは考慮されていなかった。
【0005】
それ故に、本発明の目的は、単にエミュレータを使ったゲームがプレイできることに加え、当該ゲームのコンテンツを活用する別のアプリをも実行可能な情報処理装置等を提供することである。
【課題を解決するための手段】
【0006】
上記目的を達成するために、例えば以下のような構成例が挙げられる。
【0007】
構成例の一例は、記憶媒体と、プロセッサとを備える情報処理装置である。記憶媒体は、ゲームのロムデータと、当該ロムデータに基づいてゲームを実行するエミュレータプログラムを少なくとも記憶する。プロセッサは、第1のモードにおいて、エミュレータプログラムによってロムデータに基づくゲーム処理を実行し、第2のモードにおいて、エミュレータプログラムにロムデータに基づくゲーム処理を実行させながら、更に実行中のエミュレータプログラムが処理するデータに変更を加えることにより、ゲーム処理とは異なり、かつロムデータに含まれるゲーム画像の少なくとも一部が表示されるアプリケーションを実行する。
【0008】
上記構成例によれば、エミュレータを使ったゲームがプレイできることに加えて、ゲームのロムデータを利用することで当該ゲームに関連した別のアプリケーションを更に実行可能な情報処理装置を提供できる。アプリケーションを1から全て作るのではなく、ロムデータとエミュレータの挙動を利用することで、データ量を削減することが可能となる。また、開発コストを抑えながら、オリジナルのゲームの動作の再現性を高めることができる。
【0009】
他の構成例として、ロムデータは、背景画像データとキャラクタ画像データを少なくとも含み、エミュレータプログラムは、ロムデータに基づいて背景画像とキャラクタ画像を生成し、キャラクタ画像に関連付けられたキャラクタを制御し、背景画像とキャラクタ画像を少なくとも含むゲーム画面を表示させることでゲームを実行してもよい。
【0010】
他の構成例として、プロセッサは、第1のモードにおいて、エミュレータプログラムにキャラクタのうちプレイヤキャラクタを少なくとも制御させ、第2のモードにおいて、プレイヤキャラクタに関連付けられるキャラクタ画像が少なくとも表示されるアプリケーションを実行させてもよい。
【0011】
上記構成例によれば、第1のモードでは、プレイヤキャラクタをユーザが操作するゲームを楽しませることができ、第2のモードでは、このプレイヤキャラクタが登場する他のアプリケーションをユーザに提供できる。これにより、オリジナルのゲームに登場するプレイヤキャラクタを活用したアプリケーションを提供できる。
【0012】
他の構成例として、プロセッサは、第2のモードにおいて、プレイヤキャラクタを所定の位置に配置する変更を行った上で、エミュレータプログラムにプレイヤキャラクタを制御させてもよい。
【0013】
上記構成例によれば、第2モードにおいて、プレイヤキャラクタの表示・配置位置の自由度を高めると共に、当該プレイヤキャラクタの挙動の再現性を高めることができる。
【0014】
他の構成例として、プロセッサは、第1のモードにおいて、エミュレータプログラムに、操作部から入力されるキーデータに基づいてプレイヤキャラクタを制御させてもよい。更に、第2のモードにおいて、キーデータを疑似的に入力する変更を行った上で、エミュレータプログラムにプレイヤキャラクタを制御させてもよい。
【0015】
上記構成例によれば、疑似的にプレイヤキャラクタの操作入力を行い、その動作制御自体はエミュレータプログラムに行わせる。これにより、第2のモードにおいて自動的にプレイヤキャラクタを動作させつつも、ロムデータに基づくゲーム処理における挙動の再現度を高めることができ、ユーザに違和感を与えない表現が可能となる。
【0016】
他の構成例として、プロセッサは、第2のモードにおいて、キャラクタのうち、プレイヤキャラクタ以外の少なくとも1つのノンプレイヤキャラクタを所定の位置に配置する変更を行った上でエミュレータプログラムに当該プレイヤキャラクタおよび当該ノンプレイヤキャラクタを制御させてもよい。
【0017】
上記構成例によれば、第2のモードにおいて、ノンプレイヤキャラクタの配置位置に自由度を与えつつ、ノンプレイヤキャラクタの挙動について、ロムデータに基づくゲーム処理における挙動の再現度が高い挙動を行わせることができる。
【0018】
他の構成例として、エミュレータプログラムが実行する処理は、キャラクタ同士の当たり判定処理を含んでいてもよい。
【0019】
上記構成例によれば、第2のモードにおいて、キャラクタ同士の衝突に伴う各種の挙動の再現度を高めることができる。
【0020】
他の構成例として、記憶媒体は、ロムデータに含まれるキャラクタ画像とは別に追加キャラクタ画像を更に記憶していてもよい。更に、プロセッサは、第2のモードにおいて、エミュレータプログラムがゲーム処理の実行中に制御するキャラクタのキャラクタ画像を追加キャラクタ画像に変更して表示してもよい。
【0021】
上記構成例によれば、第2のモードにおいて、キャラクタの動作制御自体はエミュレータプログラムの処理を利用し、この処理結果に基づく表示の際にキャラクタの画像を追加キャラクタの画像に差し替える。これにより、エミュレータの処理を活用しつつ、オリジナルのゲームには存在しない新たなキャラクタを用いた表現が可能になり、ユーザを飽きさせないアプリケーションを提供できる。
【0022】
他の構成例として、記憶媒体は、ロムデータに含まれる背景画像データとは別に追加背景画像データを更に記憶していてもよい。更に、プロセッサは、第2のモードにおいて表示する背景画像の少なくとも一部に、上記追加背景画像データを用いた画像を表示してもよい。
【0023】
上記構成例によれば、第2のモードにおいて、エミュレータの処理を活用しつつ、オリジナルのゲームには存在しない背景画像を用いた表現が可能になり、ユーザを飽きさせないアプリケーションを提供できる。
【0024】
他の構成例として、第2のモードにおけるアプリケーションは、時計アプリケーションであってもよい。
【0025】
他の構成例として、第2のモードにおけるアプリケーションは、時計アプリケーションであり、プロセッサは、第2のモードにおいて、複数のノンプレイヤキャラクタを、時刻を表す形状に配置してもよい。
【0026】
他の構成例として、第2のモードにおけるアプリケーションは、時計アプリケーションであり、プロセッサは、第2のモードにおいて、追加背景画像データによって時刻を表す画像を表示してもよい。
【0027】
他の構成例として、プロセッサは更に、第2のモードにおいて、特定の時刻になったことに応じて所定のイベントを発生させてもよい。
【0028】
上記構成例によれば、第2のモードにおいて、時刻に応じて様々なイベントを実行し、ユーザを楽しませることができる。
【0029】
他の構成例として、情報処理装置は、モード切替の指示を行うための切替操作部を更に備えていてもよい。更に、プロセッサは、切替操作部への操作に応じてモード切替を行い、第1のモードから別のモードに移行する場合には、プレイ中の前記ゲームの状態を保存し、別のモードから第1のモードに移行した場合に、保存された状態からゲーム処理を再開させてもよい。
【0030】
上記構成例によれば、第1モードのゲームをプレイ中、別のモードに切り替えた後、第1のモードに戻した場合、前回切り替えたときのゲーム状態からプレイを再開することができる。これにより、第1のモードにおけるゲームプレイの際のユーザの利便性を高めることができる。
【0031】
他の構成例として、情報処理装置は、画像を表示するディスプレイと、ゲームをプレイするための操作部を更に備える携帯型の装置であってもよい。
【発明の効果】
【0032】
本実施形態によれば、エミュレータを使ったゲームがプレイできることに加え、更に、当該ゲームのロムデータを利用することで当該ゲームに関連した別のアプリケーションを実行可能な情報処理装置を提供することができる。
【図面の簡単な説明】
【0033】
【
図1】本実施形態の情報処理装置10の外観を示す模式図
【
図2】情報処理装置10のハードウェア構成を示すブロック図
【
図9】フラッシュメモリ102に記憶されるデータの一例
【
図10】ゲームロムデータ404のデータ構成の一例
【
図11】登場キャラクタ画像データ423のデータ構成の一例
【
図12】登場キャラクタ画像データ423の一部のデータ内容の一例
【
図13】イベント定義データ408のデータ構成の一例
【
図15】第1モード用エミュレータメモリ領域471に記憶されるデータの一例
【
図16】カスタムロムデータ504のデータ構成の一例
【
図17】第2モード用エミュレータメモリ領域505に記憶されるデータの一例
【
図18】第2モード処理作業用データ415のデータ構成の一例
【
図20】第1モードの処理の詳細を示すフローチャート
【
図21】ゲームプログラムの実行処理の詳細を示すフローチャート
【
図22】時計アプリ処理の詳細を示すフローチャート
【
図23】時計アプリ処理の詳細を示すフローチャート
【
図25】第2モード用エミュレータ処理の詳細を示すフローチャート
【発明を実施するための形態】
【0034】
[情報処理端末のハードウェア構成]
以下、本発明の一実施形態について説明する。
図1は、本実施形態に係る処理が実行される情報処理装置10の外観を示す図である。情報処理装置10は、略板状のハウジング11を備える。本実施形態において、ハウジング11の主面(換言すれば、表側の面、すなわち、ディスプレイ12が設けられる面)は、大略的には矩形形状である。なお、ハウジング11の形状および大きさは、任意である。一例として、ハウジング11は、携帯可能な大きさであってよい。
【0035】
図1に示すように、情報処理装置10は、ハウジング11の主面に設けられるディスプレイ12を備える。ディスプレイ12は、情報処理装置10が生成した画像を表示する。本実施形態においては、ディスプレイ12は、液晶表示装置(LCD)とする。ただし、ディスプレイ12は任意の種類の表示装置であってよい。
【0036】
また、ハウジング11の主面には、複数の操作キー(後述の操作部104)が設けられている。具体的には、十字キー13、Aボタン14、Bボタン15、第1モード切り替えボタン16、第2モード切り替えボタン17が設けられている。
【0037】
次に、情報処理装置10のハードウェア構成について説明する。
図2は、情報処理装置10のハードウェア構成を示すブロック図である。
図2において、情報処理装置10は、プロセッサ101と、フラッシュメモリ102と、DRAM103と、操作部104と、上記ディスプレイ12と、リアルタイムクロック(以下RTC)106とを備えている。プロセッサ101は、後述するような各種処理を実行する。なお、プロセッサ101は、単一のプロセッサを搭載してもよいし、複数のプロセッサを搭載するようにしてもよい。フラッシュメモリ102は、プロセッサ101によって実行される各種プログラムおよび当該プログラムで利用される各種データが格納される。DRAM103は、ゲーム処理の過程で生成されたゲームデータを必要に応じて記憶するためのメモリである。また、本例では、実際に本実施形態の処理を実行するに際して、フラッシュメモリ102内の各種プログラム及びデータが当該DRAM103にコピー(ロード)される。そして、以下に説明する処理の実行においては、基本的には当該DRAM103にコピーされたプログラムやデータが用いられる。また、DRAM103の領域の一部は、VRAMとしても用いられる。
【0038】
次に、操作部104は、ユーザからの操作を受け付けるための入力装置であり、上述した複数の操作キーに対応する。RTC106は、時計機能や計時機能を提供するものであり、プロセッサ101は、RTC106から現在時刻等を取得することができる。
【0039】
[本実施形態の処理の概要]
次に、本実施形態で想定する処理の概要について説明する。本実施形態では、情報処理装置10は、複数の動作モードを有しており、ユーザの操作に基づき切り替え可能に構成されている。具体的には、少なくとも以下の2つの動作モードを有している。
【0040】
[第1の動作モードについて]
まず、第1の動作モード(以下、単に第1のモードと呼ぶ)として、エミュレータプログラムを実行して、所定のゲーム装置で実行される所定のゲーム処理をエミュレーションする動作モードがある。所定のゲーム装置は情報処理装置10とは別のゲーム装置であって、本実施形態では、この所定のゲーム装置の一例として、8ビットCPUのゲーム装置を想定する。以下、当該ゲーム装置のことを、エミュレーション対象ゲーム機と呼ぶ。ここで、本実施形態で想定する情報処理装置10は、エミュレーション対象ゲーム機よりもプロセッサの性能や画像処理の性能(処理能力)は高いものとする。また、本実施形態における情報処理装置10では、当該エミュレーション対象ゲーム機よりも表示可能な色数が多いものとする。また、上記エミュレーションするゲームのことを、以下の説明ではエミュレーション対象ゲームと呼ぶ。そして、エミュレーション対象ゲームの一例として、2D画面での処理による、画面スクロールが可能なジャンプアクションゲームを想定する。当該エミュレーション対象ゲームは、本来は、エミュレーション対象ゲーム機用のゲームカートリッジとして提供されていたものである。本実施形態では、このゲームカートリッジに記憶されているデータを後述するゲームロムデータ404として上記フラッシュメモリ102に記憶している。そして、当該ゲームロムデータ404を上記エミュレータプログラムに読み込ませ、当該ゲームロムデータ404内に含まれるゲームプログラムを実行(エミュレーション)することで、エミュレーション対象ゲームを実行する。
【0041】
図3に、第1のモードにおける画面例を示す。
図3では、プレイヤキャラクタ201、敵キャラクタ202、複数のブロックキャラクタ203、土管205等が表示されている。また、
図3では、プレイヤキャラクタ201と敵キャラクタ202は、地形部分204の上に乗っている状態である。ユーザは、十字キー13、Aボタン14、Bボタン15をそれぞれ操作することで、プレイヤキャラクタ201を移動させたり、ジャンプさせたりすることができる。当該ゲームは、プレイヤキャラクタ201を操作して、各種障害物を避けたり、敵キャラクタ202を踏みつけたり、ブロックキャラクタ203を破壊したりしながら、ゴール地点を目指して進んでいくジャンプアクションゲームとなっている。以下の説明では、第1のモードにおけるゲーム画面を「第1モード画面」と呼ぶ。
【0042】
[第2の動作モードについて]
次に、第2の動作モード(以下、単に第2のモードと呼ぶ)について説明する。本実施形態では、第2のモードとして、時計アプリケーション(以下、時計アプリ)をユーザに提供する。
図4に、第2のモードにおける画面例を示す。
図4では、上記ブロックキャラクタ203を用いて、HH:MM形式で現在時刻が表示されている。以下、第2のモードにおいてこのような時刻表示に用いている複数のブロックキャラクタ203のことを総称して時刻ブロック206と呼ぶ。また、その他、地形部分204や山、そして、土管205の画像も表示されている。第2のモードは、基本的には、このように現在時刻をディスプレイ12に表示して、情報処理装置10を時計として機能させるものである。以下の説明では、第2のモードにおける画面を「第2モード画面」と呼ぶ。
【0043】
ここで、本実施形態では、この第2モード画面において、上記のプレイヤキャラクタ201や敵キャラクタ202が登場し、自動的に各種アクションを行う。一例として、
図5に、第2モード画面の別の画面例を示し、第2モード画面におけるプレイヤキャラクタ201の基本的な動作例を説明する。
図5において、プレイヤキャラクタ201は、画面左端から(地形部分204に乗った状態で)出現し、画面右端に向けて地形部分204の上を走って行く動作を自動的に行う。また、途中にある土管205に関しては、ジャンプして避ける動作を行う(後述するが、土管205の表示位置には当たり判定が設定されている)。そして、画面右端まで到達すれば、そのまま画面外に移動する。その後、再度画面左端から出現して、同じ動作を繰り返す。内部処理的には、例えば画面外の丸印1番の位置にプレイヤキャラクタ201が到達すれば、画面外の丸印2番の位置にプレイヤキャラクタ201を配置するような処理が行われることになる(例えばディスプレイ12よりも広い領域の内部画面を用いて処理する)。このように、第2モード画面においては、プレイヤキャラクタ201が画面左端から出現して右端に向けて走って行く、という動作が繰り返し行われる。
【0044】
更に、
図6に、第2モード画面の別の画面例を示す。この画面では、更に敵キャラクタ202が出現する例を示している。この例では、敵キャラクタ202は
図6の黒丸で示す出現位置から降ってくるようにして出現し、画面左端に向けて移動するように制御される。その結果、
図6の点線で示すような経路で移動することになる。最初は時刻ブロック206の上に乗るように出現し、左方向に移動した結果、時刻ブロック206の足場がなくなるため下方に垂直に落下していき、地形部分204に到達すれば、当該地形部分204の上を左方向に移動していく。敵キャラクタ202が画面外まで移動すれば、再度、
図6の黒丸の出現位置から出現し、同様の動作制御が繰り返される。また、この動作の過程で、プレイヤキャラクタ201と敵キャラクタ202が互いに接近した場合、例えばプレイヤキャラクタ201が敵キャラクタ202をジャンプして避ける動作も行われる。
【0045】
このように、第2のモードでは、時刻ブロック206によって現在時刻を表示しつつ、プレイヤキャラクタ201や敵キャラクタ202が自動的に動くものとなっている。そして、本実施形態では、時刻に応じて発生するイベントが複数用意されている。各イベントでは、プレイヤキャラクタ等について、上記に例示した基本動作とは異なる動作が行われ得る。例えば、特定の時刻になると、プレイヤキャラクタ201が上述した動き以外の特定の動きを行うことがある。また、イベント内容によっては、背景画像が変化することもある。例えば、朝、昼、夕方、夜という時間帯に応じて、背景画像の色が変化する。また、イベント内容によっては、元々のエミュレーション対象ゲームには登場しないキャラクタ(以下、未登場キャラクタ)が登場することもある。例えば、特定に時刻になると、未登場キャラクタが画面に出現したりする(なお、イベント内容の具体例は、後にいくつか例示する)。
【0046】
また、第2のモードから第1のモードへの切り替えは、上記第1モード切り替えボタン16を押下することによって実現される。逆に、第1モードから第2のモードへの切り替えは、上記第2モード切り替えボタン17を押下することによって実現される。ここで、第1のモードから第2のモードへの切り替えが行われる際、その時点の第1モードでのエミュレーション対象ゲームのゲーム実行状態は保存される。そして、その後第2のモードから第1のモードへの切り替えが行われたときは、保存した状態からエミュレーション対象ゲームのプレイを再開できる。つまり、第1のモードについては、他のモードへの切り替え操作が発生した際、ゲームプレイが一時停止したような状態となり、再度第1のモードに切り替えられた際に、ゲームプレイが再開されるという制御が行われている。
【0047】
また、本実施形態では、説明の便宜上、動作モードが2つである場合を例示しているが、動作モードを3つ以上用意してもよい。例えば、第3の動作モードとして、更に他のゲーム処理が実行可能な構成とし、情報処理装置10が、第3の動作モードに切り替え可能な操作部を更に備える構成としてもよい。または、いずれかのボタンを再度操作することで第3の動作モードに切り替わるようにし、順番にモードが切り替わるようにしてもよい。
【0048】
ここで、本実施形態では、第2モード画面において描画する各種画像のうち、一部の画像については、上記エミュレーション対象ゲームのゲームロムデータ404に含まれている画像データをそのまま流用している。上記の例では、プレイヤキャラクタ201および敵キャラクタ202の画像データは、上記ゲームロムデータ404に含まれているデータをそのまま流用している。一方、これらキャラクタ以外の画像については、上記ゲームロムデータ404のものとは別に用意された、第2のモード専用の画像データ(以下、追加画像データと呼ぶ)を用いて表示している。また、第2のモードにおけるプレイヤキャラクタ201や敵キャラクタ202の動作の制御そのものについては、エミュレータプログラムによる処理結果を流用している。この点に関しては、後ほど説明する。
【0049】
なお、このような追加背景画像データを用いる理由について補足説明する。本実施形態では、上記情報処理装置10が表示可能(利用可能)な色数が、エミュレーション対象ゲーム機で表示可能な色数よりも多いものとなっている。すなわち、上記追加画像データに基づく画像については、エミュレーション対象ゲーム機よりも多くの色数を利用した表現が可能となっている。また、エミュレーション対象ゲーム機ではできなかったような画像効果を加えることも可能である(情報処理装置10自体がそのような画像処理機能を有していることが前提となる)。そのため、上記第2モード画面としては、第1モード画面よりも豊かな表現が可能である。その一方で、キャラクタ画像についてはエミュレーション対象ゲーム機の処理結果をそのまま流用している、これは、キャラクタの動作の再現性を高めるという観点等によるものである。つまり、第2のモードでは、プレイヤキャラクタ201等の外観や動き方はオリジナルのゲームのものを再現しつつ、背景画像についてはより豊かな表現とした時計アプリを提供している。
【0050】
以下、本実施形態における処理についてより詳細に説明するが、この説明に先立って、本実施形態で想定する上記エミュレーション対象ゲーム機における画像処理の概要について簡単に説明する。
【0051】
[エミュレーション対象ゲーム機における画像処理の概要]
本実施形態で想定するエミュレーション対象ゲーム機では、大きく分けて、「背景画像」と「キャラクタ画像」を用いてゲーム画像を生成している。背景画像、キャラクタ画像のいずれも、8×8ピクセルからなるピクセルパターンを最小単位としている。以下、説明の便宜上、この8×8ピクセルのピクセルパターンのことを「タイル」と呼ぶ。なお、このタイルはピクセルパターンを定義したものであり、これとは別に、各タイルで使用する色情報を定義した「パレット」と呼ばれるデータもある。各タイルで使用できる色の数は、52色中4色であるものとする。また、パレットは複数定義可能であり、本例のエミュレーション対象ゲーム機では、背景画像用に4つ、キャラクタ画像用に4つのパレットが定義可能である。このタイルと、各タイルで用いるパレットを指定することで、ゲーム画像が生成される。
【0052】
上記背景画像は、上記タイルを複数組み合わせることで表現される。キャラクタ画像は、このタイルを単体で用いる、あるいは複数組み合わせることで表現される。例えば、当該タイルを4つ組み合わせることで、16×16ピクセルの大きさのプレイヤキャラクタ201を表現することができる。
図7に、このような4つのタイルの組み合わせで構成されるプレイヤキャラクタ画像の一例を示す。
図7の例では、プレイヤキャラクタ201の左上部分、右上部分、左下部分、右下部分のピクセルパターンを定義した4つのタイルを2×2の配置で組み合わせて、1体のプレイヤキャラクタ201のキャラクタ画像を表現していることを示している。換言すれば、プレイヤキャラクタ201という仮想キャラクタとこれら4つのタイルとが関連付けられているといえる。なお、
図7の左側の図では、1マスが1ピクセルに相当する。また、
図7では、プレイヤキャラクタ201が描画される部分のピクセルを黒色で表現している(白色部分は透明色とする)が、実際は、上記パレットの指定によって、所定の色で描画されることになる。
【0053】
ここで、上記「キャラクタ」に関して、上記エミュレーション対象ゲームでは、プレイヤキャラクタ201、敵キャラクタ202、上記ブロックキャラクタ203等のその他のキャラクタ(プレイヤキャラクタ201との当たり判定が行われるキャラクタ)、という複数種類のキャラクタが登場する。以下の説明では、プレイヤキャラクタ201との当たり判定が行われ得るキャラクタや敵キャラクタ202等の、プレイヤキャラクタ201以外のキャラクタのことを「NPC(ノンプレイヤキャラクタ)」と呼ぶ。また、プレイヤキャラクタ201およびNPCを総称して、「登場キャラクタ」と呼ぶ。
【0054】
上記ゲームロムデータには、背景画像データと登場キャラクタ画像データとが含まれている。背景画像データとしては、最大で256個分のタイルが定義可能である。また、登場キャラクタ画像データも同様に、最大で256個分のタイルのデータが定義可能である。換言すれば、背景画像データ、登場キャラクタ画像データはそれぞれ、(最大で)256個分のタイルのデータを有している。そして、上記エミュレーション対象ゲーム機では、背景画像データに含まれる所定のタイルを、例えば32×30個並べることで、1画面分の背景画像を作成する。更に、上記エミュレーション対象ゲーム機では、この背景画像上の所定の位置に、上記登場キャラクタのタイル(これは、スプライトと呼ばれることもある)を合成することで、ディスプレイ12に出力されるゲーム画像を生成する。このように、上記エミュレーション対象ゲーム機では、タイルを並べて構成される背景画像に上記登場キャラクタ画像を合成することでゲーム画像を生成し、出力するという処理が行われている。
【0055】
エミュレーション対象ゲーム機では上記のような画像処理が行われることを前提として、本実施形態では、各動作モードで、次のような処理が行われる。まず、第1のモードでは、上記のようにエミュレータプログラムによるゲーム処理が行われる。つまり、エミュレーション対象ゲーム機と同様の画像処理が行われ、第1モード画面として出力されるゲーム画像も、上記ゲームロムデータに含まれる背景画像データと登場キャラクタ画像データとに基づいた画像となる。
【0056】
一方、第2のモードでは、上記のような第2モード画面を表示するが、プレイヤキャラクタ201、敵キャラクタ202の画像データおよびその動作制御に関しては、ゲームロムデータの内容を流用する。そして、空の部分や地形部分204等の背景画像に関しては、上記追加画像データを用いる。但し、上記時刻ブロック206に関しては、処理の内部的には上記NPC扱いではあるが、第2モード画面として表示する際は、上記追加画像データに基づく画像を用いる。時刻ブロック206については、より豊かな表現を行いたいためである。なお、他の実施形態では、時刻ブロック206として、エミュレーション対象ゲームにおけるブロックキャラクタ203の画像データをそのまま用いるようにしてもよい。
【0057】
第2のモードにおける処理の詳細については後述するが、一旦、第2のモードにおける処理概要を、
図8を用いて説明する。第2のモードでは、時計アプリのプロセス(以下、時計アプリプロセス)と、エミュレータプログラムによるプロセス(以下、エミュレータプロセス)とが並列的に実行される。時計アプリプロセスが、上記第2モード画面を生成するための主となるプロセスであり、その裏で(バックグラウンドプロセスとして)、エミュレータプロセス(いわば、画面出力を行わないゲーム処理)も同時実行されている。また、詳細は後述するが、エミュレータプロセスで実行されるゲームプログラムは、ゲームロムデータ404に含まれているゲームプログラムをそのまま用いるのではなく、上記第2モード処理との連携機能を追加するようにカスタマイズされたゲームプログラムが用いられる。
【0058】
典型的な処理の流れを説明すると、
図8において、まず、エミュレータプロセスから時計アプリプロセスに対して、動作制御パラメータの要求が行われる(P1)。これに応じて、時計アプリプロセスから、動作制御パラメータがエミュレータプロセスに渡される(P2:より正確には、エミュレータプロセスで用いられるメモリ空間内の所定アドレスの値が書き換えられる)。この動作制御パラメータは、例えばプレイヤキャラクタ201を擬似的に操作するための操作キーデータ等である(パラメータの具体的内容については後述する)。次に、エミュレータプロセスにおいて、上記動作制御パラメータに基づいてプレイヤキャラクタ201やNPCの動作を制御し、更に、当たり判定処理も行う(P3)。また、これらの処理結果は、エミュレータプロセスで用いられるメモリ空間内の所定アドレスに格納される。その後、エミュレータプロセスにおいて、このような処理結果の更新が発生したことを時計アプリプロセスに通知する(P4)。これに応じて、時計アプリプロセスでは、移動制御と当たり判定の処理結果を取得する(P5)。そして、この結果に基づいて、上記第2モード画面を生成して表示する(P6)。より具体的には、当該処理結果に基づき、プレイヤキャラクタ201、敵キャラクタ202、時刻ブロック206の表示位置を決定する。更に、上記追加画像データを用いて背景画像を生成する。これに、ゲームロムデータに含まれる登場キャラクタ画像データを用いたプレイヤキャラクタ画像等を合成する。これにより、上記第2モード画面が生成される。このような一連の流れが繰り返されることで、本実施形態にかかる時計アプリの処理が実現される。
【0059】
ここで、上記時刻ブロック206の扱いについて補足する。本実施形態では、上記時刻ブロック206については、当たり判定が行われ得る上記NPCとして扱う。そのため、エミュレータプロセス側では、時刻ブロック206は例えばエミュレーション対象ゲームに元々存在するブロックキャラクタ203として処理される。そして、時計アプリプロセス側で第2モード画面を生成する際に、このブロックキャラクタ203の画像を追加画像データによる画像に置き換えるような制御が行われる。但し、他の実施形態では、例えば時刻ブロック206についての当たり判定を行う必要がない場合は、上記背景画像として扱うようにしてもよい(その結果、追加画像データによる描画が行われることになる)。また、時刻ブロック206を上記背景画像として扱いつつ、当たり判定も行わせたい場合は、時刻ブロック206の配置上に当たり判定用の位置を設定するようにしてもよい(例えば、後述する当たり判定用ブロック配置情報486)。
【0060】
このように、本実施形態では、第1のモードでは、ユーザは、エミュレータプログラムによるエミュレーション対象ゲームがプレイできる。一方、第2のモードでは、エミュレーション対象ゲームのコンテンツを活用した別のアプリケーション(本例では時計アプリ)がユーザに提供できる。本実施形態によれば、このような2つの動作モードが実行可能な情報処理装置を提供できる。
【0061】
[本実施形態のゲーム処理の詳細]
次に、
図9~
図35を参照して、本実施形態における情報処理装置10の処理についてより詳細に説明する。
【0062】
[フラッシュメモリのデータについて]
まず、本処理にて用いられる各種データに関して説明する。まず、フラッシュメモリ102に記憶されている各種データに関して説明する。
図9は、上記フラッシュメモリ102に記憶される各種データの一例を示すメモリマップである。フラッシュメモリ102には、制御用プログラム401、エミュレータプログラム402、時計アプリプログラム403、ゲームロムデータ404、追加背景画像データ405、追加キャラ画像データ406、カスタマイズ用データ407、イベント定義データ408等が記憶されている。
【0063】
制御用プログラム401は、情報処理装置10の基本的な動作を制御するためのプログラムである。具体的には、上述した第1のモードと第2のモードとの切り替え制御等を行うためのプログラムである。
【0064】
エミュレータプログラム402は、上記エミュレーション対象ゲーム機の動作をエミュレーションするプログラムである。
【0065】
時計アプリプログラム403は、上記第2のモードにおける動作を実現するためのプログラムである。
【0066】
ゲームロムデータ404は、上記エミュレーション対象ゲームのロムデータである。
図10に、当該ゲームロムデータ404のデータ構成の一例を示す。ゲームロムデータ404には、ゲームプログラム421と、ゲーム画像データ422とが含まれている。ゲームプログラム421は、エミュレーション対象ゲームにかかるゲーム処理を実行するためのプログラムである。上記エミュレータプログラム402の実行で実現される仮想的な上記エミュレーション対象ゲーム機上で動作するものである。
【0067】
ゲーム画像データ422は、エミュレーション対象ゲームで用いられる各種画像データである。上記のように、エミュレーション対象ゲーム機では、背景画像に登場キャラクタ画像を合成してゲーム画像する。そのため、ゲーム画像データ422には、登場キャラクタ画像データ423と背景画像データ424とが含まれている。登場キャラクタ画像データ423は、登場キャラクタの画像の素になる画像のデータが記憶されたデータである。
図11に、登場キャラクタ画像データ423の内容の模式図を示す。登場キャラクタ画像データ423には、8×8ピクセルの上記タイルが256個含まれている。
図11では、1タイルを1マスとした、16×16のテーブルとして示している。なお、
図11では、各タイルには説明の便宜上、タイル番号を示している。更に、各タイルの内容の具体的な一例として、
図12に、タイル番号1番~9番の内容例を示す。
図12において、タイル番号1~4番は上記プレイヤキャラクタ201の画像データ例である。この4つのタイルが組み合わされて、1体のプレイヤキャラクタ201の画像が表現される。タイル番号5~8番は、敵キャラクタ202の画像データ例である。こちらも、これら4つのタイルが組み合わされることで、1体の敵キャラクタ202の画像が表現される。また、タイル番号9番は、上記ブロックキャラクタ203の画像データ例である。この9番のタイルが4つ組み合わされて、1個分のブロックキャラクタ203が表現される。このように、登場キャラクタ画像データ423は、上記登場キャラクタの画像を(タイル単位で)定義した画像データである。なお、このデータには、各タイル毎に使用するパレットを指定するための情報も適宜含まれている。
【0068】
図10に戻り、背景画像データ424は、背景画像の素になる画像のデータが記憶されたデータである。そのデータ構造は、上記登場キャラクタ画像データ423と同様であるため、詳細説明は割愛するが、背景画像として利用可能な上記タイルが256個分定義されている。
【0069】
図9に戻り、追加背景画像データ405および追加キャラ画像データ406は、上記追加画像データに相当するデータである。追加背景画像データ405は、上記第2モード画面における背景画像の素になるデータである。そのテータ構成は、基本的には、上記背景画像データと同じであり、上記タイルを最小単位としたピクセルパターンが定義されている。追加キャラ画像データ406は、第2のモードにおける上記未登場キャラクタの画像を定義したデータである。更に、元のエミュレーション対象ゲームには登場するNPCの一部について、それを描き直した画像を定義したデータも含まれる。具体的には、第2のモードにおける上記時刻ブロック206の画像データ等である。こちらも、上記タイルを最小単位としたピクセルパターンが定義されている。また、これらのデータには、上記パレットの情報(各タイルで使用する色の指定情報)も適宜含まれている。
【0070】
なお、本実施形態では、第2のモードにおける上記時刻ブロック206の画像データは、追加キャラ画像データ406として含まれる例を挙げたが、他の実施形態で時刻ブロック206を背景画像として扱う場合は、追加背景画像データ405に含めるようにすればよい。
【0071】
次に、カスタマイズ用データ407は、上記ゲームロムデータ404に含まれるゲームプログラム421の一部を変更する(書き換える)ために用いるデータである。詳細は後述するが、本実施形態では、第2のモードにおいて、時計アプリプログラムの実行プロセスと、エミュレータプログラムの実行プロセスとでデータの受け渡しを行う必要がある。そのため、本実施形態では、元々のゲームプログラム421の一部を変更して、当該データの受け渡しを実現が可能なようにゲームプログラム421をカスタマイズする。カスタマイズ用データ407は、このようなゲームプログラム421の変更内容が定義されているデータである。
【0072】
イベント定義データ408は、第2のモードにおいて発生させるイベントについて定義したデータである。
図13に、イベント定義データ408のデータ構成の一例を示す。イベント定義データ408は、イベント番号451、発生条件情報452、イベント内容情報453、動作制御用データ454、という項目を有するテーブル形式のデータである。イベント番号451は、各イベントを識別するための番号である。発生条件情報452は、そのイベントを実行するための条件を定義した情報である。具体的には、イベントを開始する時刻(あるいは時間帯)が定義されている。また、イベント内容によっては、プレイヤキャラクタ201の現在位置を発生条件とするものもある。このようなイベントについては、時刻情報に加えて、あるいは単独で、位置情報も定義される。また、このような特定の時刻や特定の位置に対応づけられたイベントの他、上記
図5~
図6を用いて説明したような「基本的な動作」についても、「基本イベント」として、その動作制御の内容が定義されているものとする。つまり、普段は「基本イベント」が実行され、特定の時刻になれば、その時刻に応じた特定のイベントの実行が開始され、この特定のイベントが終了すればまた「基本イベント」が実行される。
【0073】
イベント内容情報453は、そのイベントの内容を定義した情報である。例えば、背景画像を変更するイベントの場合は、変更する背景を指定する情報が含まれる。プレイヤキャラクタ201や未登場キャラクタに特定の動作を行わせるイベントであれば、そのモーションを定義する情報が含まれる。また、上記「基本イベント」であれば、上述したようなプレイヤキャラクタ201や敵キャラクタ202の基本的な動作内容等を定義した情報が含まれる。
【0074】
動作制御用データ454は、エミュレータプログラムのプロセスに渡すためのデータについて定義した情報である。具体的には、プレイヤキャラクタ201や敵キャラクタ202の出現位置や、当たり判定を行う位置を指定する情報、プレイヤキャラクタ201の操作を擬似的に入力するための操作キーデータ、等である。エミュレータプログラムのプロセスでは、このデータに基づいてプレイヤキャラクタ201を動作制御させたり、当たり判定を行ったりすることになる。
【0075】
[DRAMのデータについて]
次に、
図14を用いて、DRAM103に記憶されるデータについて説明する。本実施形態では、例えば情報処理装置10の電源がオンにされたときに、フラッシュメモリ102に記憶されているプログラムやデータがDRAM103内の所定の領域(アドレス)にコピー等される。
【0076】
図14は、DRAM103に記憶される各種データの一例を示すメモリマップである。
図14において、DRAM103のメモリ空間は、制御処理用領域411、第1モード用領域412、第2モード用領域413に区分けされている。まず、制御処理用領域411には、制御用プログラム401および現在動作モード461が記憶される。制御用プログラム401はフラッシュメモリ102からコピーされたものである。現在動作モード461は、現在の動作モードを示す情報である。本例では、第1のモードと第2のモードのいずれかを示す情報が設定される。
【0077】
第1モード用領域412には、エミュレータプログラム402が記憶される。また、第1モード用領域412には、第1モード用エミュレータメモリ領域471が含まれる。これは、上記エミュレータ対象ゲーム機に搭載されているメモリに対応する(このメモリをエミュレーションした)メモリ空間である。
図15に、第1モード用エミュレータメモリ領域471に記憶されるデータの一例を示す。第1モード用エミュレータメモリ領域471には、ゲームプログラム421、ゲーム画像データ422、ゲーム処理作業用データ481が記憶される。ゲームプログラム421およびゲーム画像データ422は、ゲームロムデータ404の内容がそのままコピーされたものである。より具体的には、本実施形態では、エミュレータプログラムの実行開始時に、ゲームロムデータ404をロードする処理を行うことで、ゲームプログラム421およびゲーム画像データ422が第1モード用エミュレータメモリ領域471に読み込まれる。
【0078】
ゲーム処理作業用データ481は、ゲーム処理の過程で適宜生成される各種のゲームデータである。ゲーム処理作業用データ481には、キー操作データ482、プレイヤキャラクタ移動制御用パラメータ483、NPC出現フラグ484、NPC出現位置指定パラメータ485、当たり判定用ブロック配置情報486、NPC移動制御用パラメータ487、ゲーム処理後の配置・位置情報488、当たり判定結果情報489、等が含まれる。
【0079】
キー操作データ482は、各操作キーに対する入力(押下)状態を示すデータである。プレイヤキャラクタ移動制御用パラメータ483は、プレイヤキャラクタ201の移動を制御するためのパラメータである。具体的には、プレイヤキャラクタ201の移動方向、移動速度、加速度等を指定するパラメータが含まれる。また、当該パラメータは、キー操作データ482に基づいてその内容が算出・決定される。NPC出現フラグ484は、例えば、ゲーム処理が1/60秒単位で繰り返されるとすると(1フレーム分の処理ループの場合)、今回のフレームにかかる処理において、新たに出現するNPCが存在するか否かを示すフラグである。また、NPC出現位置指定パラメータ485は、当該新たに出現するNPCの出現位置を指定するためのパラメータである。
【0080】
当たり判定用ブロック配置情報486は、仮想ゲーム空間内において、プレイヤキャラクタ201や敵キャラクタ202との当たり判定処理を実行する位置を定義した情報である。概念的には、当たり判定を有する透明なブロックが仮想ゲーム空間内に配置されることになり、当該情報はこの配置位置を示す情報であるともいえる。例えば、背景画像の一部に当たり判定を設定したい場合等に用いられる。一例を挙げると、上記
図4における地形部分204や土管205については、上記背景画像として扱われるが、これらの位置に重畳するようにして、当たり判定用の位置情報が当該当たり判定用ブロック配置情報486として設定される。これにより、実質的に、地形部分204や土管205と、プレイヤキャラクタ201等との当たり判定が行われ得る。また、上記時刻ブロック206を背景画像として扱う場合、この時刻ブロック206の全ての位置に当たり判定用の位置情報を設定してもよいし、時刻ブロック206のうちの任意のブロックにのみ当たり判定用の位置情報を設定してもよい。例えば、時刻ブロック206のうち、一番上と一番下のブロック部分だけ敵キャラクタ202等との当たり判定を行いたいような場合は、これらのブロックの位置にのみ当たり判定用の位置情報を設定するようにしてもよい。
【0081】
NPC移動制御用パラメータ487は、NPC(主に敵キャラクタ)の移動を制御するためのパラメータであり、各NPCの移動方向や移動速度等の情報が含まれる。
【0082】
ゲーム処理後の配置・位置情報488は、今回フレームの処理において移動制御を行った後のプレイヤキャラクタ201や敵キャラクタ202の配置・現在位置を示す情報である。つまり、ユーザの入力内容を反映させた後のプレイヤキャラクタ201等のゲーム空間内での位置を示す情報である。当たり判定結果情報489は、当たり判定処理の結果を示す情報である。当該情報に基づいて、当たり判定の結果を反映したゲーム処理(点数加算やキャラクタ画像の変更指示等)が更に行われ得る。
【0083】
なお、上記キー操作データ482~NPC移動制御用パラメータ487までのデータは、いわば、移動制御および当たり判定処理に関する「入力パラメータ」という性格を有し、ゲーム処理後の配置・位置情報488、および当たり判定結果情報489は、移動制御および当たり判定処理の結果を示す「出力パラメータ」という性格を有するものともいえる。
【0084】
また、図示は省略するが、第1モード用エミュレータメモリ領域471には、ゲーム処理に必要なその他の各種データが必要に応じて適宜生成され、格納される。
【0085】
図14に戻り、次に、第2モード用領域413に記憶されるデータについて説明する。第2モード用領域413には、時計アプリプログラム403、エミュレータプログラム402、カスタムロムデータ504、第2モード用エミュレータメモリ領域505、追加背景画像データ405、追加キャラ画像データ406、イベント定義データ408、第2モード処理作業用データ415等が記憶される。これら記憶されるデータのうち、カスタムロムデータ504、第2モード用エミュレータメモリ領域505、および第2モード処理作業用データ415以外は、上記フラッシュメモリ102に記憶されている各データがそのままコピーされたものである。そのため、説明は割愛する。
【0086】
カスタムロムデータ504は、第2のモードにおける処理で用いられるロムデータである。
図16に、カスタムロムデータ504のデータ構成の一例を示す。カスタムロムデータ504には、カスタムゲームプログラム521と、ゲーム画像データ422が含まれている。カスタムゲームプログラム521は、上記ゲームロムデータ404に含まれるゲームプログラム421を、第2のモードにおける処理に適合するように一部変更したものである。より具体的には、第2のモードの処理において、時計アプリプログラムの実行プロセスと連携するための機能が追加されたものとなっている。なお、この変更は、上記カスタマイズ用データ407を用いて行われる。
【0087】
図14に戻り、第2モード用エミュレータメモリ領域505は、上記同様、上記エミュレータ対象ゲーム機に搭載されているメモリに対応するメモリ空間であるが、第2モードにおける処理のために上記とは別に設けられているものである。
図17に、第2モード用エミュレータメモリ領域505に記憶されるデータの一例を示す。第2モード用エミュレータメモリ領域505には、カスタムゲームプログラム521、ゲーム画像データ422、ゲーム処理作業用データ481が記憶される。このうち、ゲーム画像データ422、ゲーム処理作業用データ481については、上述したものと同様の内容であるため、説明は割愛する。カスタムゲームプログラム521は、上記カスタムロムデータ504に含まれるカスタムゲームプログラム521が第2モードにおけるエミュレータの実行に際して読み込まれたものである。
【0088】
図14に戻り、次に、第2モード処理作業用データ415に記憶されるデータについて説明する。当該データは、第2のモードにかかる処理の過程で適宜生成される各種のデータである。
図18は、第2モード処理作業用データ415のデータ構成の一例を示す図である。第2モード処理作業用データ415には、操作データ531、現在イベント情報532、動作制御入力用パラメータ533、追加キャラ対応指定情報534、等が含まれる。
【0089】
操作データ531は、(第2のモード中における)ユーザの操作キーへの入力状況を示すデータである。現在イベント情報532は、現在実行するイベント(現在実行中のイベント)を特定するための情報である。動作制御入力用パラメータ533は、後述する処理において、エミュレータプログラムにかかるプロセスに渡すためのデータである。具体的には、上述したキー操作データ482、プレイヤキャラクタ移動制御用パラメータ483、NPC出現フラグ484、NPC出現位置指定パラメータ485、当たり判定用ブロック配置情報486、および、NPC移動制御用パラメータ487の内容を設定したデータである。第2のモードにおけるエミュレータプログラムは、これらデータに基づいて、各種キャラクタの移動制御と当たり判定処理を行うことになる。
【0090】
追加キャラ対応指定情報534は、所定のイベントにおいて上記未登場キャラクタを用いる場合に設定される情報である。本実施形態では、未登場キャラクタを用いる場合、エミュレータプログラムには、当該未登場キャラクタを既存のキャラクタに置き換えてエミュレーションさせる。例えば、未登場キャラクタAを使いたい場合、これをエミュレーション対象ゲームに元々含まれている既存キャラクタBとして、エミュレーションさせる。そして、既存キャラクタBとしての処理結果を取得し、その画像を未登場キャラクタAの画像のものにして、上記第2モード画面に表示するという処理を行っている。追加キャラ対応指定情報534は、このような未登場キャラクタAと既存キャラクタBとの対応付けを一時的に記憶しておくための情報である。
【0091】
[プロセッサ101が実行する処理の詳細]
次に、
図19~
図25のフローチャートを用いて、本実施形態にかかる処理の詳細を説明する。なお、ここで説明する処理は、汎用的な処理の例示であり、本実施形態の趣旨を逸脱しない範囲で、適宜別の処理が追加されてもよい。
【0092】
まず、制御用プログラム401により処理される全体制御処理について説明する。
図19は、当該全体制御処理の詳細を示すフローチャートである。この処理は、情報処理装置10の電源がオンにされたときに、(フラッシュメモリ102からDRAM103に制御用プログラム401がコピーされた上で)自動的に開始され、電源がオフにされるまで繰り返し実行される。
【0093】
図19において、まず、ステップS1で、プロセッサ101は、フラッシュメモリ102から、エミュレータプログラム402を読み込み、第1モード用領域412に配置する。続くステップS2で、プロセッサ101は、フラッシュメモリ102から、時計アプリプログラム403およびエミュレータプログラム402を読み込み、第2モード用領域413に配置する。
【0094】
次に、ステップS3で、プロセッサ101は、フラッシュメモリ102からゲームロムデータ404を読み込み、第1モード用エミュレータメモリ領域471に配置する。これは例えば、第1モード用領域412に配置したエミュレータプログラム402に当該ゲームロムデータ404をロードさせる処理を実行させることで実現される。
【0095】
次にステップS4で、プロセッサ101は、フラッシュメモリ102からゲームロムデータ404およびカスタマイズ用データ407を読み込む。更に、プロセッサ101は、当該読み込んだゲームロムデータ404に含まれるゲームプログラム421の一部をカスタマイズ用データ407に基づいて変更することで、カスタムゲームプログラム521を含むカスタムロムデータ504を生成する。そして、プロセッサ101は、当該カスタムロムデータ504を第2モード用領域413に記憶する。
【0096】
次に、ステップS5で、プロセッサ101は、初期の動作モードとして、現在動作モード461に「第2モード」を設定する。
【0097】
次に、ステップS6で、プロセッサ101は、現在の動作モードが第1モードか否かを判定する。当該判定の結果、第1モードの場合は(ステップS6でYES)、ステップS7で、プロセッサ101は、第1モードの処理を実行する。一方、第2モードの場合は(ステップS6でNO)、ステップS8で、プロセッサ101は、第2モードの処理を実行する。その後、ステップS6に戻り、処理が繰り返される。
【0098】
なお、図示は省略するが、全体制御処理としては、上記のような制御の他、例えば、いわゆるスリープモードへの移行制御等も適宜実行される。すなわち、一定時間以上操作が行わなければ、画面出力をオフにする処理等も適宜実行される。またこの際、実行中の第1のモードの処理あるいは第2のモードの処理を一時停止状態とする制御が行われてもよい。
【0099】
[第1のモードの処理]
次に、第1モードの処理の詳細について説明する。
図20は、第1モードの処理の詳細を示すフローチャートである。
図20において、まず、ステップS11で、プロセッサ101は、第2のモードへの切り替え操作が行われたか否かを判定する。すなわち、上記第2モード切り替えボタン17が押下されたか否かを判定する。その結果、切り替え操作が行われていない場合は(ステップS11でNO)、ステップS12で、プロセッサ101は、ゲームプログラムの実行処理を行い、ステップS11に戻る。なお、ステップS11~S12にかかる処理ループは、例えば1フレーム毎に繰り返し実行されるものとする。一方、切り替え操作が行われていた場合は(ステップS11でYES)、ステップS13で、プロセッサ101は、現在動作モード461に「第2モード」を設定し、第1モードの処理を終了する。この際、次に第1モードに移行したときに前回中断した状態からゲームプレイが再開できるように、プロセッサ101は、ゲーム状態を保存する。具体的には、第1モード用エミュレータメモリ領域471の状態を保持した状態のまま、第2モード処理が開始されるように制御する。これにより、次に第2のモードから第1のモードに切り替えられた際、中断した状態から再開することができる。なお、当該処理に関して、他の実施形態では、第1のモードから第2のモードへの切り替え操作が発生した際、例えばそのときの第1モード用エミュレータメモリ領域471の状態を保存したゲーム状態保存データを別途生成・記憶してもよい。そして、第1のモードの再開時にこのデータを読み込むような構成としてもよい。
【0100】
次に、上記ステップS12のゲームプログラムの実行処理の詳細を説明する。この処理では、エミュレータプログラムの実行によって、エミュレータ対象ゲームのゲーム処理をエミュレーションする処理が行われる。そのため、概念的には、この処理の主体はエミュレータであるともいえる。
図21は、当該処理の詳細を示すフローチャートである。
図21において、まず、ステップS21で、プロセッサ101は、エミュレータに、ユーザが行った操作内容、すなわち、キー操作データ482に基づいたプレイヤキャラクタ201の動作制御を行わせる。
【0101】
次に、ステップS22で、プロセッサ101は、エミュレータに、各種NPCの配置やその動作制御を行わせる。続くステップS23で、プロセッサ101は、エミュレータに各種の当たり判定処理を実行させ、その結果を当たり判定結果情報489に格納させる。
【0102】
次に、ステップS24で、プロセッサ101は、エミュレータに、当たり判定結果情報489に基づく各種ゲーム処理を実行させる。更に、ステップS25で、プロセッサ101は、エミュレータに、その他の各種ゲーム処理を実行させる。
【0103】
次に、ステップS26で、プロセッサ101は、エミュレータに、上記ゲーム処理の結果を反映するようにして、背景画像データ424を用いた背景画像を生成させる。更に、ステップS27で、登場キャラクタ画像データ423を用いて各種登場キャラクタの画像を生成する。そして、背景画像に登場キャラクタの画像を合成することで、上記第1モード画面として表示するゲーム画像(以下、第1モード用画像と呼ぶ)を生成する。
【0104】
次に、ステップS28で、プロセッサ101は、エミュレータに、第1モード用画像をディスプレイ12に出力する処理を行わせる。以上で、当該ゲームプログラムの実行処理は終了する。
【0105】
[第2のモードの処理]
次に、上記ステップS8にかかる第2モードの処理の詳細について説明する。上記のように、第2のモードでは、時計アプリプログラムの実行による時計アプリプロセスと、第2モード用のエミュレータ処理の実行によるエミュレータプロセスとが並列的に実行される(上記
図8参照)。ここではまず、時計アプリプロセス側の処理を説明し、その後、エミュレータプロセス側の処理について説明する。
【0106】
図22~
図23は、時計アプリプロセス側の処理となる時計アプリ処理の詳細を示すフローチャートである。
図22において、まず、ステップS31で、開始処理が実行される。この処理は、第2モードの処理の実行に際しての準備や初期設定を行う処理である。
【0107】
図24は、当該開始処理の詳細を示すフローチャートである。まず、ステップS51で、プロセッサ101は、第2モード用エミュレータメモリ領域505を初期化し、第2モード用のエミュレータに、カスタムゲームプログラム521を用いたエミュレーション処理の実行開始指示を行う(その結果、後述する第2モード用エミュレータ処理が開始される)。
【0108】
次に、ステップS52で、プロセッサ101は、初期準備用のキー操作データ482を生成して第2モード用のエミュレータに渡す処理を実行する。このキー操作データ482の内容は、例えば、エミュレーション対象ゲームのタイトル画面における操作内容を示すデータである。本例の場合、タイトル画面においてゲームをスタートするためのキー操作が第2モード用のエミュレータに渡される。より正確には、第2モード用エミュレータメモリ領域505のキー操作データ482に上記のような操作を示す内容を順次書き込んでいく処理が実行される。これにより、エミュレータプロセス側では、エミュレーション対象ゲームの開始後、最初のステージの開始時点までゲーム処理が進められ、更なる入力を待機する形となる。
【0109】
次に、ステップS53で、プロセッサ101は、RTC106から、現在の時刻を取得する。次に、ステップS54で、プロセッサ101は、現在時刻とイベント定義データ408とに基づいて、実行するイベント内容を決定する。そして、そのイベントを示すイベント番号451を現在イベント情報532に設定する。以上で、開始処理は終了する。
【0110】
なお、他の実施形態では、上記ステップS54の処理の次に、現在時刻を示すように時刻ブロック206が配置された第2モード画面を生成して、一旦この時点で表示する処理を行ってもよい。
【0111】
図22に戻り、次に、ステップS32で、プロセッサ101は、操作データ531に基づき、第1のモードへの切り替え操作が行われたか否かを判定する。すなわち、上記第1モード切り替えボタン16が押下されたか否かを判定する。その結果、切り替え操作が行われていた場合は(ステップS32でYES)、ステップS33で、プロセッサ101は、現在動作モード461に「第1モード」を設定し、時計アプリ処理を終了する。
【0112】
一方、切り替え操作が行われていない場合は(ステップS32でNO)、ステップS34で、プロセッサ101は、RTC106から現在時刻を取得する。次に、ステップS35で、プロセッサ101は、現在時刻とイベント定義データ408とに基づいて、所定のイベントの実行開始条件が満たされているか否かを判定する。当該判定の結果、所定イベントの実行開始条件が満たされている場合は(ステップS35でYES)、ステップS36で、プロセッサ101は、イベント定義データ408に基づき、現在時刻に応じた実行すべきイベント内容を決定する。なお、イベント内容によっては更にプレイヤキャラクタ201の位置に応じて実行するイベントを決定してもよい。そして、決定したイベント内容に対応するイベント番号451を現在イベント情報532に設定する。なお、特定の時刻に開始された所定のイベントが終了した場合は、上記「基本イベント」の開始条件が満たされたと判定され、「基本イベント」を実行することが決定される。
【0113】
一方、上記ステップS35の判定の結果、所定イベントの実行開始条件が満たされていない場合は(ステップS35でNO)、上記ステップS36の処理はスキップされる。
【0114】
次に、ステップS37で、プロセッサ101は、実行するイベント内容に応じて、エミュレータプロセスに渡す動作制御用パラメータを準備する処理を実行する。具体的には、実行するイベント内容やプレイヤキャラクタ201の現在位置等に基づき、上述したキー操作データ482、プレイヤキャラクタ移動制御用パラメータ483、NPC出現フラグ484、NPC出現位置指定パラメータ485、当たり判定用ブロック配置情報486、NPC移動制御用パラメータ487の内容を決定する。例えば、プロセッサ101は、(前回フレームの処理結果として)プレイヤキャラクタ201と敵キャラクタ202との位置関係を判定する。そして、プレイヤキャラクタ201の移動方向側に敵キャラクタ202が位置している場合は、プレイヤキャラクタ201をジャンプさせるようにキー操作データ482の内容を決定する。また、新たに敵キャラクタ202を出現させる場合は、プロセッサ101は、NPC出現フラグ484をオンにして、NPC出現位置指定パラメータ485で時刻ブロック206を含む各種NPCの出現位置または表示位置を指定するようにその内容を決定する。特定のイベントに応じた特定の動きをプレイヤキャラクタ201等に行わせる場合は、その動作内容に基づいて、キー操作データ482やプレイヤキャラクタ移動制御用パラメータ483の内容が決定される。
【0115】
ここで、上記のような、エミュレータ対象ゲームでは登場しない未登場キャラクタを用いるイベントの場合について補足する。このようなイベントの場合、上記のようにエミュレータプロセス側では、未登場キャラクタの代替として既存のキャラクタを用いて処理される。そのため、この場合は、上記未登場キャラ対応指定情報534として、時計アプリ側で用いる未登場キャラクタとエミュレータプロセス側で代替キャラとして扱うNPCとの対応付けを示す情報が生成される。そして、この代替となるNPCに関してのNPC出現フラグ484、NPC出現位置指定パラメータ485、NPC移動制御用パラメータ487が決定されることになる。
【0116】
次に、ステップS38で、プロセッサ101は、エミュレータプロセスから「動作制御用パラメータ」の入力要求が来ているか否かを判定する。当該入力要求が来ていない場合は(ステップS38でNO)、入力要求が来るまで待機する。入力要求が来た場合は(ステップS38でYES)、ステップS39で、プロセッサ101は、上記ステップS37で決定した動作制御用の各パラメータを第2モード用エミュレータメモリ領域505に書き込む。つまり、第2モード用エミュレータメモリ領域505におけるゲーム処理作業用データ481(すなわち、エミュレータ処理で用いるデータ)の内容を変更する処理が行われる。
【0117】
次に、
図23のステップS40で、プロセッサ101は、エミュレータプロセスから「処理結果の更新通知」が届いているか否かを判定する。届いていない場合は(ステップS40でNO)、プロセッサ101は、「処理結果の更新通知」が届くまで待機する。当該通知が届いていれば(ステップS40でYES)、次に、ステップS41で、プロセッサ101は、エミュレータプロセスにおける処理結果のデータを取得する。すなわち、プロセッサ101は、第2モード用エミュレータメモリ領域505からゲーム処理後の配置・位置情報488および当たり判定結果情報489を取得する。
【0118】
次に、ステップS42で、プロセッサ101は、上記処理結果のデータに基づき、第2モード用エミュレータメモリ領域505のキャラクタ画像データから、必要となる登場キャラクタの画像データを取得する。
【0119】
次に、ステップS43で、プロセッサ101は、現在時刻、上記処理結果のデータ、および、現在イベント情報532で示されるイベント内容に基づき、追加背景画像データ405を用いて背景画像を生成する。また、現在イベント情報532で示されるイベント内容に基づいて、用いる背景画像の決定やその色を設定する。例えば、時刻Aと時刻Bとで、上述した地形部分204の画像を異ならせたり、時間帯に応じて空の部分の色を変化させたりする。上記のように、追加背景画像データ405のほうが使用色数が多いため、背景画像に関しては、エミュレータ対象ゲームよりも豊かな表現が可能となる。
【0120】
次に、ステップS44で、プロセッサ101は、上記処理結果のデータに基づき、上記登場キャラクタの表示位置を特定する。すなわち、プレイヤキャラクタ201、敵キャラクタ202、時刻ブロック206等の表示位置を特定する。そして、プロセッサ101は、上記背景画像における当該位置に、上記取得した登場キャラクタの画像を合成する。ここで、時刻ブロック206に関しては、追加キャラ画像データ406に含まれる画像データを用いて、背景画像に合成する。そのため、時刻ブロック206に関しては、元のエミュレータ対象ゲームに登場するキャラクタ(ブロックキャラクタ203)の画像データを追加キャラ画像データ406のものに置き換える、という制御が行われる。
【0121】
次に、ステップS45で、プロセッサ101は、現在実行中のイベントが上記未登場キャラクタを利用するイベントであるか否かを判定する。その結果、利用するイベントである場合は(ステップS45でYES)、ステップS46で、プロセッサ101は、追加キャラ対応指定情報534を参照して、取得すべき未登場キャラクタのデータを特定する。更に、当該未登場キャラクタの画像データを追加キャラ画像データ406から取得する。そして、上記処理結果のデータに基づき、代替NPCの表示位置を特定し、上記背景画像におけるこの特定した位置に当該未登場キャラクタの画像を合成する。これにより、エミュレータプロセスで処理された代替NPCを未登場キャラクタに置き換えて表示することができる。一方、上記判定の結果、未登場キャラクタを利用するイベントではない場合は(ステップS45でNO)、当該ステップS46の処理はスキップされる。
【0122】
次に、ステップS47で、プロセッサ101は、上記のような背景画像に登場キャラクタや未登場キャラクタの画像が合成された第2モード用画像をディスプレイ12に表示する。その後、上記ステップS32に戻り、処理が繰り返される。
【0123】
[第2のモードにおけるエミュレータ処理]
次に、第2のモードにおけるエミュレータプロセス側の処理(以下、第2モード用エミュレータ処理)について説明する。
図25は、当該第2モード用エミュレータ処理の詳細を示すフローチャートである。この処理の開始タイミングについては、上記
図24のステップS51で、時計アプリプロセス側から実行開始指示が行われたときに、別プロセスとしてその実行が開始する。なお、上記第1のモードの場合と同様に、概念的には、この処理の主体はエミュレータであるともいえる。
【0124】
まず、ステップS81で、プロセッサ101は、エミュレータに開始処理を実行させる。この処理は、時計アプリプロセスとの連携の準備を行うための処理である。具体的には以下の処理が実行される。まず、エミュレータは、上記カスタムロムデータ504をロードし、カスタムゲームプログラム521に基づくゲーム処理の実行を開始する。その結果、内部的には例えばゲームのタイトル画面が表示される。エミュレータは、時計アプリプロセス側から送られた、上記準備用の動作制御パラメータ(擬似的な入力操作)に基づくゲーム処理を行う。当該準備用の動作制御パラメータには、エミュレーション対象ゲームの開始後、最初のステージの開始時点までゲーム処理を進めるための操作キーのデータが含まれる。そのため、当該開始処理により、エミュレータプロセス側では、擬似的な入力操作によって、最初のステージの開始時点までゲーム処理が自動的に進められることになる。
【0125】
次に、ステップS82で、プロセッサ101は、エミュレータに、時計アプリプロセス側への上記動作制御用パラメータの入力要求を行わせる。これに応じて時計アプリプロセス側では動作制御用パラメータの書き込み処理が行われる(上記ステップS39)。
【0126】
次のステップS83で、プロセッサ101は、エミュレータに上記書き込まれた動作制御用パラメータを取得させる。更に、続くステップS84で、プロセッサ101は、エミュレータに、当該動作制御用パラメータに基づいたプレイヤキャラクタ201および各種NPCの配置や動作制御を行わせる。上記のように、当該動作制御用パラメータには、プレイヤキャラクタ201の擬似的な操作内容や、時刻ブロック206の配置に対応する当たり判定用ブロックの配置位置や、敵キャラクタ(未登場キャラクタに対応づけられたものも含む)の出現位置等が含まれている。すなわち、上記第2モード画面として表示したい内容に対応するような各キャラクタの位置・配置情報が示されるものである。そのため、ここでの動作制御は、実質的には、上記第2モード画面の画面レイアウト(仮想ゲーム空間)においてプレイヤキャラクタ201や敵キャラクタ202を動作させる処理に相当する。そして、この動作制御処理の結果は、ゲーム処理後の配置・位置情報488して第2モード用エミュレータメモリ領域505に格納される。
【0127】
更に、ステップS85で、プロセッサ101は、エミュレータに、上記動作制御を踏まえた当たり判定処理を行わせる。プレイヤキャラクタ201と敵キャラクタ202当たり判定や、上記時刻ブロック206とプレイヤキャラクタ201・敵キャラクタ202との当たり判定がここで行われることになる。この結果は、当たり判定結果情報489として第2モード用エミュレータメモリ領域505に格納される。
【0128】
次に、ステップS86で、プロセッサ101は、エミュレータに、時計アプリプロセス側に判定処理結果が更新された旨を通知させる。これに応じて、時計アプリプロセス側では、上記ステップS41以降の処理が行われることになる。なお、図示は省略しているが、エミュレータプロセス側では、内部的にはこの後もゲーム画面の生成処理等のゲーム処理(上記
図21のステップS24~S28相当の処理)も行われるが、実際の画面出力は行われないことになる。このように内部的に1フレーム分のゲーム処理が行われた後、上記ステップS82に戻り、処理が繰り返される。
【0129】
このように、第2のモードにおけるエミュレータの役割は、主に、時計アプリプロセス側から入力された動作制御用パラメータに基づく各種キャラクタの移動制御と当たり判定処理の実行となる。時計アプリプロセス側では、この処理結果を用いて、上記のような第2モード画面の生成が行われることになる。
【0130】
[処理の適用例]
次に、上記のような第2のモードの処理の適用例を、適宜画面例を交えながらいくつか例示する。
【0131】
[地形・背景を変更する例]
適用例の1つとして、まず、第2モード画面における地形の画像を変更する例がある。
図26に、地形部分204の画像を変更した例を示す。上記
図4で示した第2モード画面と比べると、地形部分204の画像がブロック状の地形から「きのこ」を模したような地形に変化している。これは例えば、次のようなタイミングで変化させればよい。例えば、動作モードが切り替えられたタイミング(第1のモードから第2のモードに切り替えられたタイミング)である。その他、第2のモードにおいて、スリープモードから復帰したタイミングで、第2モード画面で使用する地形画像をランダムで他の地形画像に変更するようにしてもよい。
【0132】
また、第2モード画面の背景、具体的には「空」の部分の色を、時間帯に応じて変化させるようにしてもよい。すなわち、朝、昼、夕方、夜、深夜、といった時間帯に応じて、「空」の色を変化させるようにしてもよい。追加背景画像データ405のほうが使用色数が多いことから、このような時間帯毎に変化する「空」の色の表現について、エミュレータ対象ゲームにおける表現よりも豊かな表現ができる。
【0133】
また、その他、特定の時刻において、時刻ブロック206の画像をコインの画像に変化させる等、時刻ブロック206の画像を時刻に応じて変化させてもよい。なお、このコインの画像データは、上記エミュレータ対象ゲームに元々含まれている画像データである。またこの際、プレイヤキャラクタ201にコインを取得させる動作を行わせてもよい。また、この取得動作にかかる制御自体は、エミュレータにおける処理結果を流用すればよい。
【0134】
また、上記時刻ブロック206として描画する画像データについては、上記追加画像データを用意して、これを用いるようにしてもよいし、上記エミュレータ対象ゲームに含まれている(元の)画像データを流用するようにしてもよい。
【0135】
[プレイヤキャラクタを変更する例]
また、他の適用例として、ランダム、あるいは特定の時間帯に、プレイヤキャラクタ201を他のプレイヤキャラクタの画像に変更するような処理を行ってもよい。例えば、エミュレータ対象ゲームが2人以上の同時プレイが可能なゲームである場合に、2人目以降のプレイヤが操作するキャラクタの画像(外観が明らかに異なるキャラクタの他、単なる「色変え」の場合のキャラクタも含む)に変更するようにしてもよい。なお、この場合も、これらキャラクタの画像データは、エミュレータ対象ゲームの画像データを流用することになる。
【0136】
[ユーザ入力を利用する例]
また、他の適用例として、上記のような背景画像を変更するトリガーとして、ユーザの入力をトリガーとする処理を行ってもよい。例えば、第2のモードにおいて、プレイヤがAボタン14とBボタン15とを同時押しする度に、時刻ブロック206の色を他の色に変化させるような処理を行ってもよい。一例として、上記
図23のステップS44とS45の間に、このような同時押しが行われたか否かの判定を行い、行われていた場合は時刻ブロック206の表示色設定を変更する処理を行うようにしてもよい。また、時刻ブロック206の画像について追加画像データを用いるように構成しておくことで、より多彩な色彩表現を行うことも可能となる。
【0137】
[プレイヤキャラクタ画像を一時的に変更する例]
また、他の適用例として、プレイヤキャラクタ201について、元のエミュレータ対象ゲームにはなかった動きを行わせる処理を行ってもよい。例えば、プレイヤキャラクタ201が所定の位置に来たときに一旦立ち止まらせ、元のエミュレータ対象ゲームにはなかった画像に一時的にプレイヤキャラクタ201の画像を変更し、その後、元の画像に戻して移動を再開させる、等の処理をおこなってもよい。より具体的には、所定の位置でプレイヤキャラクタ201が時々立ち止まり、元のエミュレータ対象ゲームにはなかったプレイヤキャラクタ201の「正面画像」や、「休憩している画像」を描画する、等である。なお、この立ち止まりの発生については、例えばランダムで発生させてもよいし、特定の条件を満たした際に(上記イベントの1つとして)発生させるようにしてもよい。
【0138】
[敵キャラクタの動作例]
次に、第2のモードにおける敵キャラクタに関して、いくつか例示する。まず、基本的な動作としては、
図6を用いて上述したように、画面上方から敵キャラクタ202が出現し、画面左端に向けて移動していくという動作を行っている。この際、例えば、
図27に示すように分表示が「40分」台の場合、画面上方から出現した敵キャラクタ202は、時刻ブロック206のくぼみ(凹部分)に挟まり、結果的に身動きがとれないような状態で表示されることになる。
【0139】
[未登場キャラクタの利用例]
次に、敵キャラクタとして、元のエミュレータ対象ゲームには存在しない上記未登場キャラクタを用いる例を示す。
図28に、第2のモード専用の敵キャラクタが登場する場合の画面例を示す。
図28では、特定の時刻(1時11分)のときに、3体の未登場キャラクタ331が出現している例を示している。この例では、3体の未登場キャラクタ331はそれぞれ画面下方から出現して、真上方向に移動していく。これら未登場キャラクタ331の画像データは、追加キャラ画像データ406に含まれるものであって、エミュレータ対象ゲームには含まれていないデータである。処理としては、エミュレータ対象ゲームに登場する所定の敵キャラクタを代替キャラクタとして、当該未登場キャラクタと対応づけておく(追加キャラ対応指定情報534)。そして、エミュレータの処理において、その出現位置や移動経路を指定してこの代替キャラクタの動作制御を行わせ、その処理結果を受けて、この代替キャラクタの画像を未登場キャラクタの画像に変更して表示する、という処理となる。
【0140】
このような未登場キャラクタを用いる他の適用例を示す。次に説明する例では、「時報」としての演出で、これら未登場キャラクタを用いた特殊な演出を行っている。ここでは、12:00の時報を例にする。
図29に、12:00の数秒前の第2モード画面の例を示す。
図29では、未登場キャラクタ332が4体登場している。これら未登場キャラクタ332は、画面左端から順次出現し、それぞれ、時刻ブロック206の各桁の真下となる位置まで移動する。そして、12:00になると、これらの未登場キャラクタ332がジャンプして時刻ブロック206にぶつかることで、当該時刻ブロック206を破壊する(なお、ブロックの破片の画像データはエミュレーション対象ゲームのロムデータのものを利用しているとする)。その結果、
図30に示すように、時刻ブロック206は一旦粉々になった後、更に、破片が寄せ集まるような演出が行われ、
図31に示すように、「12:00」の形状に配置される。その後、未登場キャラクタ332は画面外に移動していく。なお、この一連の演出の間、プレイヤキャラクタ201は、地形部分204上の、ほぼ画面中央となる位置で停止している。このような処理の場合も、第2モード用エミュレータメモリ領域505のゲーム処理作業用データ481の内容を、未登場キャラクタに対応する代替キャラクタが出現するように変更して各種の動作制御を行わせている。そして、この処理結果に基づき、代替キャラクタの画像を未登場キャラクタの画像に変更して、上記のような時報の演出を行う。
【0141】
[ゲームシーンが変化する例]
また、更に他の適用例として、ゲーム場面が変化するような処理について説明する。一例として、上記12:00のような特定の時刻になると、ゲームステージのゴール地点に到達するような演出(ゴールシーン演出)を行う例を挙げる。この例では、上記のような時報演出が終わると、プレイヤキャラクタ201は、
図32に示すように、画面右端に向けて移動を開始する。この移動に伴い、
図33に示すように画面がスクロールし、山積みとなっているブロックが表示されてくる。プレイヤキャラクタ201はこのブロックを駆け上っていき、
図34に示すように、頂上からジャンプして着地した後、更に右方向に進んで
図35に示すようなゴール地点となる「城オブジェクト」に到着する、という演出が行われる。この処理の場合、上記動作制御パラメータの決定の際に、仮想ゲーム空間内におけるプレイヤキャラクタ201の位置としてゴール地点手前の地点を指定すればよい。そして、ゴールシーンの演出部分にかかる処理はエミュレータの処理結果をそのまま反映しつつ、背景画像だけを変更する、というような処理を行えばよい。
【0142】
この他、例えば、所定の時刻や時間帯になると、プレイヤキャラクタ201が上記土管205の中に入り、異なるゲームステージに移動するようにしてもよい。例えば、ある時刻になると、プレイヤキャラクタ201が土管205の中に入り、ゲームステージが遷移して、第2モード画面の内容が「水中ステージ」のものに切り替わるようにしてもよい。この場合は、仮想ゲーム空間内におけるプレイヤキャラクタ201の位置がこの水中ステージのスタート地点になるように、ゲーム処理作業用データ481の内容を変更して、エミュレータに処理させればよい。特に、地上ステージでは「走る」ところ、水中ステージでは「泳ぐ」というように、水中ステージでは地上ステージとでプレイヤキャラクタ201の挙動が異なる場合でも、動作制御自体はエミュレータ側に処理させているため、その挙動の再現度を高めることができる。
【0143】
以上で、本実施形態にかかる処理の詳細説明を終了する。
【0144】
このように、本実施形態では、エミュレータが処理するデータに変更を加えたうえで、プレイヤキャラクタ201やNPCの動作制御、および当たり判定処理自体は当該エミュレータに処理させている。そして、この処理結果に基づいて上記第2モード画面を生成するが、この際、登場キャラクタの画像データはエミュレーション対象ゲームのロムデータのものをそのまま流用している。その一方で、背景画像については、第2のモード専用の画像データを用いて描画している。これにより、エミュレーション対象ゲームのコンテンツを活用した別のアプリケーション(本例では時計アプリ)を実行することができる。また、その画面についても、より表現力が豊かな画面で表現できる。また、プレイヤキャラクタ201等の動作制御はエミュレータに行わせるため、時計アプリにおけるプレイヤキャラクタ201等の動きのエミュレーション対象ゲームに対する再現度をより高めることができる。換言すれば、プレイヤキャラクタ201の動作制御等に関して、時計アプリ側で新たにその制御用の処理を作り込む必要を省くことができ、開発コストの削減を図ることができる。特に、エミュレーション対象ゲームが過去のゲームであり、コンテンツを活用したアプリケーションにおいても原作再現度が求められる場合において、当時のハードウェアにおける当時のプログラムの挙動を現在の環境でも忠実に再現するということは必ずしも容易ではないが、その手間を省くことができる。また、エミュレーション対象ゲームのロムデータを第2モードでも利用することで、フラッシュメモリ102に記憶されるデータ量を節約することができる。
【0145】
[変形例]
なお、上記エミュレーション対象ゲームは、上記のようなジャンプアクションゲームに限らず、所定のキャラクタが登場する他のジャンルのゲームであってもよい。そして、プレイヤキャラクタ201やNPCの画像データについてはエミュレーション対象ゲームのロムデータのものを用いて、背景画像については時計アプリ専用に用意された画像を用いればよい。
【0146】
また、上記実施形態では、時計アプリにおける背景画像については全て追加背景画像データ405を用いる例を示した。他の実施形態では、背景画像についても、少なくとも一部は追加背景画像データ405を用い、残りの部分はエミュレーション対象ゲームにおける画像データをそのまま流用するような構成にしてもよい。
【0147】
また、上記の実施形態では、第2のモードにおいて、エミュレータプロセス側から取得する処理結果として、各キャラクタの移動制御の結果と当たり判定結果を取得する例を示した。そして、この処理結果を用いて時計アプリプロセス側で上記第2モード画面を生成していた。この他、他の実施形態では、背景画像と登場キャラクタ画像とを用いたゲーム画面の生成処理まで一旦エミュレータプロセス側に行わせ、出力結果としてのゲーム画像を時計アプリプロセス側で取得するようにしてもよい。そして、時計アプリ側でこのゲーム画像を解析し、背景画像を構成する各タイルを追加背景画像データ405に基づく画像に変更してからディスプレイ12に出力するような構成にしてもよい。例えば、エミュレータ対象ゲーム機がフレームバッファにゲーム画像を書き込むような処理を行うものであれば、エミュレータにおけるフレームバッファの内容を取得して、追加背景画像データ405を用いてその内容を変更してからディスプレイ12に出力するような構成としてもよい。
【0148】
また、上記の例では、第2のモードとしてエミュレーション処理を活用するアプリの例として時計アプリの例を挙げた。他の実施形態では、時計アプリ以外の所定のアプリケーションを実行してもよい。例えば、天気予報アプリ、歩数計アプリ、電卓アプリ等でもよい。これらのアプリケーションで表示するアプリケーション画像においても、登場するキャラクタの画像やその動作はエミュレーション対象ゲームのものをそのまま用い、背景画像は各アプリケーション専用の画像を用いるようにすればよい。
【0149】
また、上記のような処理を実行する主体に関しても、上記のような構成に限らない。例えば、単体の情報処理装置ではなく、本体装置、コントローラ、表示部とが別のコンポーネントとして構成される情報処理システムについても上記のような処理は適用可能である。更には、本体装置が所定のサーバと通信可能な構成として、情報処理装置10で実行される上記一連の処理のうちの主要な処理がサーバ側装置によって実行され、当該情報処理装置10では一部の処理が実行されてもよい。
【0150】
また、その他、スマートフォン等の汎用的な情報処理装置において、上記のような第1のモードと第2のモードの2つの動作モードを有する(スマートフォン向け)アプリケーションとして、上記のような機能が提供されてもよい。
【符号の説明】
【0151】
10 情報処理装置
101 プロセッサ
102 フラッシュメモリ
103 DRAM
104 操作部
12 ディスプレイ
106 RTC