本発明は、例えばビデオゲーム機と複数のコントローラからなるエンタテインメントシステムのように複数の操作端末と情報処理装置から構成される情報通信システム、例えばビデオゲーム機のような情報処理装置、例えばビデオゲーム機のコントローラのような操作端末、それらの動作を実行する処理プログラム、及びその処理プログラムが記憶された記憶媒体に関する。
例えば、複数のコントローラを接続可能なコントローラポートを備えたビデオゲーム機では、多数の遊戯者(以下、プレイヤーと称する)が複数のコントローラを各々操作して同じゲームを楽しむことが可能である。
このように多数のプレイヤーが各々コントローラを操作して遊ぶゲームの場合、テレビジョンモニタなどの表示画面上に映し出されるゲーム上のキャラクタと、そのキャラクタを操作するコントローラとの対応関係を、プレイヤー自身がコントローラを操作して設定する。
なお、ゲーム上においてコントローラにより操作されるのはキャラクタに限定されず、また、コントローラとの対応関係を設定するものもキャラクタに限定されるわけではないが、ここでは説明を簡略化するためにキャラクタを例に挙げている。
従来のビデオゲーム機の場合、コントローラは、ゲーム機本体のコントローラポートに有線(ケーブル)により1対1に接続され、ゲーム機本体は、プレイヤーからの入力に応じて各コントローラポートに付されたポート番号とキャラクタとを対応付ける。例えば、第1のコントローラポート(ポート番号01)に接続された第1のコントローラにより第1のキャラクタを操作するように設定し、第2のコントローラポート(ポート番号02)に接続された第2のコントローラにより第2のキャラクタを操作するように設定する場合、ゲーム機本体は、第1のキャラクタとポート番号01とを対応付け、第2のキャラクタとポート番号02とを対応付ける。すなわち、コントローラとキャラクタとの対応関係は、ポート番号を介して設定される。
しかし、コントローラとビデオゲーム機とを無線通信により接続する場合、コントローラとポート番号との対応関係によってコントローラを特定することができず、コントローラを特定するための新たな対応関係を設定する必要が生じる。
また、コントローラとビデオゲーム機とが有線及び無線の双方で接続が可能な場合、コントローラを変えずゲームの実行中に接続状態を変更(有線から無線への変更または無線から有線への変更)する可能性がある。このような場合において、通信状態の変更によりゲームの進行が妨げられてしまうことは好ましくない。
さらに、コントローラとビデオゲーム機との対応関係をゲーム開始の際に都度設定することは、ビデオゲーム機の処理負担やゲームの開始準備時間の増大を招くという不都合を生じさせる。
本発明は上述の課題に鑑みてなされたものであり、例えば複数のコントローラとそれらを接続可能なビデオゲーム機とからなるエンタテインメントシステムのように、複数の操作端末を接続可能な情報処理装置、その操作端末、及びそれらにより構成される通信システムにおいて、有線や無線という接続形式の影響を受けることなく、両者を対応付けることが可能な情報通信システム、情報処理装置、操作端末、それらの動作を実行する情報処理プログラム、及びその処理プログラムが記憶された記憶媒体を提供することを目的とする。
本発明の情報通信システムは、ユーザから操作される操作端末と、この操作端末との間で通信可能な情報処理装置と、を備える。
操作端末は、端末側送受信手段と端末側端末識別情報記憶手段とを有する。端末側送受信手段は、情報処理装置との間で情報を送受信する。端末側識別情報記憶手段には、固有の端末識別情報が予め記憶される。
情報処理装置は、情報処理実行手段と装置側送受信手段と装置側端末識別情報記憶手段と対応関係設定手段と対応関係記憶手段とを有する。
情報処理実行手段は、所定の情報処理を実行する。装置側送受信手段は、操作端末との間で情報を送受信する。装置側端末識別情報記憶手段には、端末識別情報が記憶される。対応関係設定手段は、複数の仮想端末番号の一つと装置側送受信手段が受信した端末識別情報とを対応付けると共に、端末識別情報に対応付けた一つの仮想端末番号を所定の情報処理に関連付ける。対応関係記憶手段には、端末識別情報と仮想端末番号との対応関係が記憶される。
端末側送受信手段は、装置側送受信手段との間で通信を開始する際に、端末側端末識別情報記憶手段に記憶された端末識別情報を装置側送受信手段へ送信する。
対応関係設定手段は、装置側送受信手段が受信した端末識別情報が装置側端末識別情報記憶手段に記憶されているか否かを判定する。判定の結果、既に記憶されている場合には、前記一つの仮想端末番号と前記端末識別情報とを対応付ける。一方、未だ記憶されていない場合には、受信した端末識別情報を装置側端末識別情報記憶手段に記憶する共に、前記一つの仮想端末番号と前記端末識別情報とを対応付ける。そして、前記端末識別情報に対応付けた前記一つの仮想端末番号を所定の情報処理に関連付ける。
本発明によれば、情報処理装置と操作端末との対応関係を仮想端末番号と端末識別情報とを対応付けることによって設定しているので、有線や無線という接続形式の影響を受けることなく、両者を対応付けることができる。
本発明の一実施形態のエンタテインメントシステムの概要を示す模式図である。
コントローラの外部構成を示す模式図である。
装置本体の内部構成を示すブロック図である。
コントローラの内部構成を示すブロック図である。
有線コントローラNo登録テーブルを示す模式図である。
無線コントローラNo登録テーブルを示す模式図である。
仮想コントローラNo対応テーブルを示す模式図である。
コントローラ登録及び対応付け処理を示すタイムチャートである。
有線及び無線共に既登録及び対応付け済のコントローラによる通信開始処理を示すタイムチャートである。
バッテリ監視処理を示すタイムチャートである。
BT通信中のRSSI監視処理を示すタイムチャートである。
通信開始時に装置本体が実行する処理を示すフローチャートである。
メニュー画面を示す模式図である。
[本実施の形態の概略構成]
本発明一実施形態として、図1に示すエンタテインメントシステムは、本発明の情報処理装置の一例のビデオゲーム機であるエンタテインメント装置(以下、装置本体と称する)10と、ユーザ(プレイヤー)により操作される複数の操作端末であるコントローラ20(図1の例では2つのコントローラ20A,20B)とを備える。装置本体10と各コントローラ20A,20Bとの間では、通信により情報が送受信される。プレイヤーは、両者間の通信方法として、ケーブル13A,13Bを介した有線接続による通信と無線による通信のうち任意の一方を選択可能である。また、装置本体10にコントローラ20を有線接続した場合には、有線による通信が実行され、無線による通信は実行されない。
図1の例において、装置本体10は、複数のコントローラポート11(本実施形態では、11A,11B,11C,11Dの4箇所)を有する。コントローラ20A,20Bと装置本体10とを有線接続する場合、ケーブル13Aは、一端部に設けられた差込コネクタ12Aが装置本体10のコントローラポート11のうち任意の一つ(この例では11A)に差し込まれて電気的に接続され、他端部に設けられた差込コネクタ14Aがコントローラ20Aの接続ポート15(15A)に差し込まれて電気的に接続される。また、ケーブル13Bは、一端部に設けられた差込コネクタ12Bが装置本体10のコントローラポート11のうち他の任意の一つ(11B)に差し込まれて電気的に接続され、他端部に設けられた差込コネクタ14Bがコントローラ20Bの接続ポート15(15B)に差し込まれて電気的に接続される。装置本体10とコントローラ20との有線接続方式は、双方向にて通信可能であればよく、本実施形態では、USB(Universal Serial Bus)形式による接続(以下、USB接続と称する)を採用している。
また、各コントローラ20(20A,20B)には、装置本体10の無線通信部(アンテナ)16との間で無線による情報の送受信を行う無線通信部(アンテナ)17(17A,17B)がそれぞれ設けられている。両無線通信部16,17同士の通信方式としては、双方向にて無線通信可能であれば、ブルーツゥース(Bluetooth(登録商標))のような汎用の近距離高速無線通信方式や専用の近距離無線通信方式などのあらゆる通信方式の適用が可能である。本実施形態では、ブルーツゥースによる無線通信方式(以下、BT通信と称する)を採用している。
コントローラ20(20A,20B)の外観等の詳細な構成については後述するが、これらコントローラ20A,20Bには、プレイヤーにとって視認し易い位置に、表示部21(21A,21B)がそれぞれ設けられている。これら表示部21A,21Bは、例えば、液晶表示パネル、有機若しくは無機EL(Electorluminescence)パネル、セグメント表示器、LED(発光ダイオード)など、プレイヤーが視認可能な表示を行えるものであり、本実施形態ではセグメント表示器またはLED(図示省略)が用いられている。
本実施形態における各表示部21A,21Bは、数値データを表示可能なセグメント表示器または異なった色で発光可能な多色発光LED(以下、単にLEDと称する)を有する。セグメント表示器の場合は、装置本体10が各コントローラ20と各ゲームキャラクタとの対応を表す対応情報として個々のコントローラ20に対して割り当てた仮想コントローラ番号(詳しくは後述する)を表示する。またLEDの場合は、仮想コントローラ番号に対応する発光色で光る。
また、セグメント表示器またはLED以外によって表示部を構成する場合、装置本体10が個々のコントローラ20とゲームキャラクタとの対応を表す対応情報としては、それらコントローラ20に対して割り当てて送信した個々のコントローラを識別するための図柄、記号等や、個々のコントローラが操作可能なゲーム中の例えばキャラクタを象徴する図柄,記号等が挙げられる。なお、キャラクタを象徴する図柄とは、キャラクタそのものの図柄や、キャラクタを抽象化した図柄などである。
すなわち、表示部21A,21Bにおける表示は、少なくとも、各コントローラ20A,20Bに対して装置本体10が割り当てた仮想コントローラ番号を、直接または間接的にプレイヤーに視認させることが可能であれば良い。
各コントローラ20A,20Bの表示部21A,21Bにおいて、このような表示を行うことにより、例えば、プレイヤーは自分が持つコントローラ20A,20Bにより、ゲーム中の各キャラクタのうち、どのキャラクタを操作可能であるのかを容易に確認することができる。
[エンタテインメントシステムの全体構成]
図1に示すエンタテインメントシステムは、装置本体10と、コントローラ20(20A,20B)と、装置本体10から映像及び音声信号が供給されるモニタ装置(例えばテレビジョン受像機など)100とから構成されている。モニタ装置100は、装置本体10から供給された映像信号に基づいて画像を表示する画像表示部101を有する。
〔装置本体の外観〕
上記装置本体10には、上記コントローラポート11(11A〜11D)及び無線通信部16の他、図示は省略するが、メモリカードが着脱自在とされるメモリカードスロット、ディスクトレイ、ディスクトレイをオープンまたはクローズさせるオープン/クローズボタン、電源のオンやスタンバイ,リセットを行うためのオン/スタンバイ/リセットボタン、音声映像出力端子(AVマルチ出力端子)、PCカードスロット、光ディジタル出力端子、IEEE(Institute of Electrical and Electronics Engineers)1394接続端子、電源スイッチ、AC電源入力端子などが設けられている。
また、上記装置本体10は、例えばいわゆるDVD−ROMやCD−ROM等のディスク媒体に記録されているビデオゲーム用のアプリケーションプログラムに基づいてビデオゲームを実行したり、例えばDVDビデオやCDに記録されたビデオデータ、オーディオデータを再生(デコード)可能なものである。また、この装置本体10は、アプリケーションプログラムが後述するコントローラ接続管理プログラムを含む場合、そのプログラムの制御の元で、後述する仮想コントローラ番号(No)等をコントローラ20へ向けて送信する制御が実行される。
なお、上記アプリケーションプログラムやビデオ、オーディオデータは、ディスク媒体に限らず、半導体メモリやテープ媒体から読みとられたもの、有線若しくは無線の広域或いは域内通信回線等により供給されたものであってもよい。
〔コントローラの外観〕
図2を用いて、コントローラ20の外観を簡単に説明する。
上記コントローラ20は、装置本体10との間でUSB接続するための上記接続ポート15と、装置本体10との間でBT通信するための上記無線通信部17と、仮想コントローラ番号を表示するか仮想コントローラ番号に対応した色で発光する表示部21を備えている。
コントローラ20には、プレイヤーがコントローラ20を左右の手により把持した状態で、プレイヤーの左右の手の親指により操作される右操作部31及び左操作部32と、同じく左右の親指によりアナログ操作が可能な右アナログ操作部33及び左アナログ操作部34と、左右の人差し指によりそれぞれ押下操作される右第1押下ボタン35及び左第1押下ボタン36と、左右の中指によりそれぞれ押下操作される右第2押下ボタン37及び左第2押下ボタン38が設けられている。
上記左操作部32には、例えばゲームキャラクタを画面上で移動させるなどの操作をプレイヤーが行う場合に用いられる、上指示ボタン41、下指示ボタン42,左指示ボタン43、右指示ボタン44が設けられている。また、上記右操作部31には、例えばゲームキャラクタの機能の設定や実行など、ゲームアプリケーションによりそれぞれ異なる機能が割り付けられる第1〜第4の操作ボタン45〜48が設けられている。
上記左右のアナログ操作部34,33は、操作軸を中心に360度方向に回転可能で且つ非操作時には弾性部材により中立位置に復帰する左右の回転操作子(図示省略)と、これら左右の回転操作子の操作に応じた信号を発生する信号発生部(図示省略)等を備えている。
上記左右のアナログ操作部34,33は、例えば、左右の回転操作子を回転操作することにより、例えばゲームキャラクタを回転しながら移動させ、或いは速度を可変しながら移動させ、さらには形態を変更させる等のアナログ的な動きを実現するための指令信号を入力するため等に用いられる。
さらにコントローラ20は、コントローラ20の電源をオン/オフさせるために使用するオン/オフボタン51と、ホームボタン52とを有している。
ホームボタン52は、装置本体10との間で通信を開始させる際の入力用、及び画像表示部101へのメニュー画面の表示処理を装置本体10に開始させるための入力用として割り当てられている。装置本体10におけるメニュー画面の表示処理は、実行中の他のアプリケーションプログラムを中断して優先的に実行される。また、ホームボタン52が押下されてコントローラ20が装置本体10との間で通信を開始した場合にも、メニュー画面が表示される。
装置本体10が生成するメニュー画面を図13に示す。同図に示すように、表示画面120において、水平方向に複数のメディアアイコンが並んだメディアアイコン配列121と、垂直方向に複数のコンテンツアイコンが並んだコンテンツアイコン配列122とが交差する二次元配列が表示される。メディアアイコン配列121には、装置本体10が再生可能なメディアの種類を示すマークとして、写真アイコン123、音楽アイコン124、動画アイコン125、放送アイコン126、ディスクアイコン127、ゲームアイコン128が含まれる。コンテンツアイコン配列122には、複数のコンテンツのサムネイルなどのアイコンが含まれる。メディアアイコン配列121およびコンテンツアイコン配列122で構成されるメニュー画面はオンスクリーン表示であり、コンテンツ映像の前面に重ね合わされて表示される。背景領域129に現在再生中のコンテンツ映像を表示する場合、メディアアイコン配列121とコンテンツアイコン配列122の領域全体に、背景領域129との外観上の区別を容易にするための彩色を施してもよく、またコンテンツ映像の明るさを調整するなどの方法により外観上の区別を容易にしてもよい。
メディアアイコン配列121とコンテンツアイコン配列122が交差する領域に位置するメディアアイコンは、動画アイコン125として図示するように他のメディアアイコンと異なる色彩にて拡大表示される。交差領域130は、表示画面120の略中央に位置したままその位置が据え置かれ、コントローラ20を介したユーザからの左右方向の入力指示に応じてメディアアイコンの配列全体が左右方向に移動し、交差領域130に位置したメディアアイコンの色彩とアイコンサイズが変化する。したがって、ユーザは左右の方向指示をするだけでメディアを選択でき、例えば、PC上で行われるマウスのクリック操作のような決定指示は不要である。
上述のように、右アナログ操作部33、左アナログ操作部34、右第1押下ボタン35、左第1押下ボタン36、右第2押下ボタン37、左第2押下ボタン38、上指示ボタン41、下指示ボタン42,左指示ボタン43、右指示ボタン44、及び第1〜第4の操作ボタン45〜48は、装置本体10においてプレイヤーからの指示に従って選択的に実行されるアプリケーションプログラムの実行処理に関与する入力用として割り当てられる第1の操作部として機能する。これに対し、ホームボタン52は、上記アプリケーションプログラムの実行処理に関与する入力用として割り当てられておらず、且つ実行中の他のアプリケーションプログラムに優先してメニュー画面の表示制御を開始させるための入力用として割り当てられた第2の操作部として機能する。
〔装置本体の内部回路構成〕
図3には、上記装置本体10の主要な内部構成を示す。
図3に示すように、装置本体10は、メインバス61とサブバス62とを有し、これらの61、62は、バスインタフェース63を介して互いに接続されまたは切り離される。
メインバス61には、メインCPU64と、DRAMで構成される揮発性のメインメモリ65と、メインDMAC(direct memory access controller)66と、フレームメモリ67を内蔵する画像処理デバイス(GPU(graphic processing unit))68が接続される。GPU68には、ビデオ出力信号を生成するための制御手段であるCRTC(CRT controller)69が接続される。ビデオ出力信号により、ケーブル等によって装置本体10と接続されている所定の表示装置(本実施形態では、モニタ装置100の画像表示部101)に画像が表示される。
メインCPU64は、装置本体10の起動時にサブバス62上のROM70から、バスインタフェース63を介して起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる。また、メディアドライブ71を制御するとともに、このメディアドライブ71に装着されたメディア72からアプリケーションプログラムやデータを読み出し、これをメインメモリ65に記憶させる。さらに、メディア72から読み出した各種データ、例えば複数の基本図形(ポリゴン)で構成された3次元オブジェクトデータ(ポリゴンの頂点(代表点)の座標値など)に対して、ジオメトリ処理を行う。ジオメトリ処理によりポリゴン定義情報をその内容とするディスプレイリストを生成する。また、MPEG(Moving Picture Experts Group)方式あるいはJPEG(Joint Photographic Experts Group)方式等で圧縮されたデータを伸張する。つまりメインCPU64は、ソフトウェアにより情報を解読する情報解読機能を持つ。
ポリゴン定義情報は、描画領域設定情報とポリゴン情報とからなる。描画領域設定情報は、描画領域のフレームバッファアドレスにおけるオフセット座標と、描画領域の外部にポリゴンの座標があった場合に、描画をキャンセルするための描画クリッピング領域の座標からなる。ポリゴン情報は、ポリゴン属性情報と頂点情報とからなり、ポリゴン属性情報は、シェーディングモード、αブレンディングモード、およびテクスチャマッピングモード等を指定する情報であり、頂点情報は、頂点描画領域内座標、頂点テクスチャ領域内座標、および頂点色等の情報である。
GPU68は、描画コンテクストを保持しており、メインCPU64から通知されるディスプレイリストに含まれる画像コンテクストの識別情報に基づいて該当する描画コンテクストを読み出し、これを用いてレンダリング処理を行い、フレームメモリ67にポリゴンを描画する。フレームメモリ67は、テクスチャメモリとしても使用できるため、フレームメモリ67上のピクセルイメージをテクスチャとして描画するポリゴンに貼り付けることができる。
メインDMAC66は、メインバス61に接続されている各回路を対象としてDMA転送制御を行うとともに、バスインタフェース63の状態に応じて、サブバス62に接続されている各回路を対象としてDMA転送制御を行う。
サブバス62には、マイクロプロセッサなどで構成されるサブCPU73、フラッシュメモリ等で構成される不揮発性のサブメモリ74、サブDMAC75、オペレーティングシステムなどのプログラムが記憶されているROM70、サウンドメモリ76に蓄積された音データを読み出してオーディオ出力として出力する音声処理装置(SPU(sound processing unit))77、USB接続ケーブルを介してコントローラ20との間で有線による情報の送受信を行うUSB通信モジュール78、BT通信を介してコントローラ20との間で無線による情報の送受信を行うBT通信モジュール79、所定のメディア72を装着するためのメディアドライブ71、及びキーボード80が接続されている。メディア72は、画像処理用のプログラムが記録されたCD−ROMやDVD−ROM等の記録媒体である。装置本体10は、この画像処理用のプログラムを読み取って実行することにより、所要のエンタテインメント処理を実行する。USB通信モジュール78は、コントローラポート11(図1に示す)を含み、BT通信モジュール79は、無線送受信部16(図1に示す)を含む。
サブCPU73は、ROM70に記憶されているプログラムに従って各種動作を行う。サブDMAC75は、バスインタフェース63がメインバス61とサブバス62を切り離している状態においてのみ、サブバス62に接続されている各回路を対象としてDMA転送などの制御を行う。
また、サブメモリ74には、後述する有線コントローラNo登録テーブル(図5に示す)、無線コントローラNo登録テーブル(図6に示す)が予め設定されており、メインメモリ65には後述する仮想コントローラNo対応テーブル(図7に示す)が予め設定されている。メインCPU64は、USB通信モジュール78またはBT通信モジュール79がコントローラ20との間で通信を開始した際、後述する未登録コントローラの登録及び対応付け(有線)処理(図8に示す)または有線及び無線共に既登録及び対応付け済のコントローラによる通信開始時の処理(図9に示す)を実行する。なお、上記各テーブルの設定先は、他の記憶部であってもよく、また上記各処理の実行主体は、サブCPU73であってもよい。
さらに、メインCPU64は、バッテリ監視処理(図10に示す)及びBT通信中におけるRSSIの監視処理(図11に示す)を実行する。ここで、RSSIとは、無線通信時の装置本体10とコントローラ20との間の接続環境としての電界強度を意味し、電界強度が強い(数値が大きい)ほど安定したBT通信が可能となる。なお、電界強度の検出は、BT通信モジュール79が行う。
〔コントローラの内部構成〕
次に、図4に、コントローラ20の主要な内部構成を示す。
図4において、コントローラ20は、CPU81と、DRAMで構成される揮発性のメインメモリ82と、バッテリ83と、振動検出素子84と、振動素子85と、スピーカ86と、キーボード87と、表示部(セグメント表示器またはLED)21と、USB通信モジュール88と、BT通信モジュール89と、フラッシュメモリ等で構成される不揮発性のサブメモリ91とを有し、これらはバス90を介して接続されている。キーボード87とは、コントローラ20に設けられた上記各種の入力ボタン33,34,35〜38,41〜48,51,52の総称である。
CPU81は、コントローラ20の起動時にサブメモリ91から起動プログラムを読み込み、その起動プログラムを実行する。また、CPU81は、表示部21を所定の発光状態に制御する表示制御や、スピーカ86への音声出力を制御する音声制御や、振動素子85を駆動させてコントローラ20に振動を与える振動制御を実行する。さらに、メインCPU64は、バッテリ83に対する充電及び放電の電流を積算し、バッテリ83の蓄電量を演算により求める。
USB通信モジュール88は、USB接続ケーブルを介して装置本体10との間で有線による情報の送受信を行い、BT通信モジュール89は、BT通信を介して装置本体10との間で無線による情報の送受信を行う。USB通信モジュール88は、接続ポート15(図1に示す)を含み、BT通信モジュール89は、無線送受信部17(図1に示す)を含む。
また、サブメモリ91には、各コントローラ20に固有に付された端末識別情報としての固有IDが予め記憶されている。CPU81は、所定のタイミングでサブメモリ91から固有IDを読み出し、読み出した固有IDをUSB通信モジュール88またはBT通信モジュール89から装置本体10へ送信させる。
また、CPU81は、キーボード87に対するプレイヤーからの操作入力に応じて予め設定された指示信号を生成し、生成した指示信号をUSB通信モジュール88またはBT通信モジュール89から装置本体10へ送信させる。特に、第2操作部として機能するホームボタン52と、第1操作部として機能する他の入力ボタン33,34,35〜38,41〜48のうち少なくとも一つとが同時に押下されると、CPU81は、ボタンの組み合わせに応じた特定処理実行指示信号を、装置本体10へ送信させる。本実施形態では、ホームボタン52と「×」ボタン46とが同時に押下されることにより、後述する仮想コントローラNoの画面表示処理の開始を指示する特定処理実行指示信号が生成され、ホームボタン52と「○」ボタン45とが同時に押下されることにより、後述するバッテリ残量の表示処理の実行を指示する特定処理実行指示信号が生成され、ホームボタン52と「△」ボタン48とが同時に押下されることにより、後述する電界強度の表示処理の実行を指示する特定処理実行指示信号が生成される。
なお、コントローラ20と装置本体10との間を接続するUSBケーブル13A,13B(図1に示す)は電源供給線を含み、USB接続状態において、装置本体10は、電源供給線を介してコントローラ20の電源を供給すると共に、バッテリ83の充電を行う。
また、振動素子85とは、例えばモータの回転軸に対し偏心した状態で固定された重りであり、モータの駆動時に回転する重りがコントローラ20を振動させる。ゲームの進行状態等に応じてモータを駆動させることにより、所望のタイミングでプレイヤーの手に振動が伝達される。また、振動検出素子84とは、プレイヤーからコントローラ20に加えられた振動を検出するセンサであり、例えば、振動の検出によりオフ状態のコントローラ20をオン状態とする等、プレイヤーからの振動の入力を所定の処理の契機として用いる。
〔コントローラ接続管理プログラムの説明〕
複数のコントローラとの有線及び無線による任意で且つ良好な接続を実現するために、本実施の形態の装置本体10は、図8〜図11のタイムチャートに示すアルゴリズム(以下、コントローラ接続管理プログラムと呼ぶ)により、それぞれ接続されているコントローラ20の認識及び管理や、各コントローラ20の表示部21へ表示させるための表示情報(対応情報)の送信や、BT通信中のバッテリ83の監視や、RSSIの監視などを行う。
なお、図8〜図11の処理は、ゲームアプリケーションプログラム若しくはデバイスドライバプログラム内に設けられたコントローラ接続管理プログラムが、主として装置本体10のメインCPU64上で動作することにより実現されるものである。
〔各テーブルの説明〕
サブメモリ74には、図5に示す有線コントローラNo登録テーブル、図6に示す無線コントローラNo登録テーブルが予め設定されており、メインメモリ65には図7に示す仮想コントローラNo対応テーブルが予め設定されている。
有線コントローラNo登録テーブルでは、有線コントローラNoが記憶される複数のセルと、各コントローラ20の固有IDが記憶される複数のセルとが、1対1で対応している。USB接続により新規のコントローラ20が登録される度に、先頭側(図中上方)の空欄のセルから有線コントローラNo(「W−01」,「W−02」,「W−03」,「W−04」)と固有ID(「C−02」,「C−03」,「C−04」,「C−01」)とが順次記憶される。例えば、固有IDがそれぞれ「C−02」,「C−03」,「C−04」,及び「C−01」であるコントローラ20が、この順序で新規に登録されると、図5に示すように、最初に固有ID「C−02」と有線コントローラNo「W−01」とが対応付けて登録され、次に固有ID「C−03」と有線コントローラNo「W−02」とが対応付けて登録され、次に固有ID「C−04」と有線コントローラNo「W−03」とが対応付けて登録され、最後に固有ID「C−01」と有線コントローラNo「W−04」とが対応付けて登録される。
無線コントローラNo登録テーブルでは、無線コントローラNoが記憶される複数のセルと、各コントローラ20の固有IDが記憶される複数のセルとが、1対1で対応している。USB接続により既に有線コントローラNo登録テーブルに登録されたコントローラ20が装置本体10にBT通信により最初に接続される度に、先頭側(図中上方)の空欄のセルから無線コントローラNo(「R−01」,「R−02」,「R−03」)と固有ID(「C−03」,「C−02」,「C−01」)とが順次記憶される。例えば、固有IDが「C−01」,「C−02」,「C−03」,及び「C−04」である4つのコントローラ20が上述のように既に有線コントローラNo登録テーブルに登録されており、これらのうち、固有IDが「C−03」,「C−02」,「C−01」であるコントローラ20が、この順序で新規にBT通信により装置本体10に接続されると、図6に示すように、最初に固有ID「C−03」と無線コントローラNo「R−01」とが対応付けて登録され、次に固有ID「C−02」と無線コントローラNo「R−02」とが対応付けて登録され、最後に固有ID「C−01」と無線コントローラNo「R−03」とが対応付けて登録される。なお、固有IDが「C−04」であるコントローラ20は、未だBT通信により装置本体10に接続されていないため、無線コントローラNo登録テーブルには登録されておらず、この固有IDが「C−04」であるコントローラ20がBT通信により装置本体10に最初に接続された際に、この固有ID「C−04」と無線コントローラNoとが対応付けて登録される。なお、図6及び図7は、固有ID「C−04」と無線コントローラNoとが対応付けて登録される前の状態を示しているため、これら固有ID及び無線コントローラNoを「(R−04)」及び「(C−04)」と表記している。一方で、各コントローラ20のサブメモリ91にも、接続された装置本体10の固有IDが登録される。サブメモリ74、サブメモリ91は上述のように不揮発性なので、装置本体10または各コントローラ20が電源オフされても、登録(記憶)された固有IDは解消(消去)されない。これにより、再度、電源オンされた場合にも固有IDのチェックを介して、互いに登録されていない装置本体10とコントローラ20との間の誤動作を防止できる。
仮想コントローラNo対応テーブルでは、複数の仮想コントローラNoが予め設定され記憶された複数のセルと、有線コントローラNo及び無線コントローラNo(以下、両者を物理コントローラNoと称する)が記憶される複数のセルと、固有IDが記憶される複数のセルとが、1対1対1で対応している。また、各仮想コントローラNoに対応する発光色が予め記憶されたセルが、仮想コントローラNoに対応して設定されている。有線コントローラNo登録テーブルに新規のコントローラ20が登録される度に、物理コントローラNoを記憶するセルのうち先頭側(図中上方)の空欄のセルから有線コントローラNo(「W−01」,「W−02」,「W−03」,「W−04」)が順次記憶される。例えば、上述の例では、図7に示すように、仮想コントローラNo「V−01」に対して有線コントローラNo「W−01」が対応付けられ、仮想コントローラNo「V−02」に対して有線コントローラNo「W−02」が対応付けられ、仮想コントローラNo「V−03」に対して有線コントローラNo「W−03」が対応付けられ、仮想コントローラNo「V−04」に対して有線コントローラNo「W−04」が対応付けられる。また、仮想コントローラNo「V−01」に対して無線コントローラNo「R−02」が対応付けられ、仮想コントローラNo「V−02」に対して無線コントローラNo「R−01」が対応付けられ、仮想コントローラNo「V−04」に対して無線コントローラNo「R−03」が対応付けられる。なお、仮想コントローラNo「V−03」に対応する無線コントローラNoは、固有IDが「C−04」であるコントローラ20が無線コントローラNo登録テーブルに登録された際に、仮想コントローラNo対応テーブルに対応付けられる。さらに、各コントローラ20の固有IDも対応付けられる。
仮想コントローラNo対応テーブルは揮発性のメインメモリ65に記憶されるので、仮想コントローラNo対応テーブルに対応付けられた対応関係は装置本体10が電源オフされると解消されるが、ユーザ操作による当該対応関係の解消または変更も可能である。そして、装置本体10で実行されるアプリケーションプログラムは、実行時に当該仮想コントローラNo対応テーブルをチェックし、有線、無線コントローラNoおよび固有IDと有効に対応付けられた仮想コントローラNoの一つとアプリケーションプログラムのキャラクタの一つとを対応付ける。有効な仮想コントローラNoおよびキャラクタが複数ある場合も、1対1に対応付ける。
〔コントローラと装置本体との接続開始処理の説明〕
オフ状態の装置本体10は、電源が投入されることによりオン状態となる。オフ状態のコントローラ20は、オン/オフボタン51が押下されることによりオン状態となる。なお、装置本体10及びコントローラ20が共にオン状態であり、両者がBT通信により接続された状態において、コントローラ20のオン/オフボタン51が押下されると、コントローラ20がオフ状態になると共に装置本体10が待機状態(スリープ状態)となる。
USB接続による通信は、装置本体10及びコントローラ20が共にオン状態であり、両者がUSB接続された後、コントローラ20のホームボタン52が押下されることによって開始される。USB接続が開始されると、装置本体10及びコントローラ20はUSB接続による情報の送受信を行うための通信準備処理を実行した後、コントローラ20は、サブメモリ91に記憶された固有IDを読み出して、装置本体10へ送信する。なお、装置本体10は、USBケーブルが適正な状態で接続されているか否かを検出することによって、USB接続か否かを判定する。
BT通信は、装置本体10及びコントローラ20が共にオン状態であり、両者がUSB接続されていない状態において、コントローラ20のホームボタン52が押下されることによって開始される。この場合、コントローラ20が装置本体10の通信範囲内に位置することが必要である。BT接続が開始されると、装置本体10及びコントローラ20はBT通信による情報の送受信を行うための通信準備処理を実行した後、コントローラ20は、サブメモリ91に記憶された固有IDを読み出して、装置本体10へ送信する。なお、装置本体10が待機状態でコントローラ20がオフ状態であり、両者がUSB接続されていない状態において、コントローラ20のホームボタン52が押下されると、装置本体10は待機状態からオン状態となり、両者のBT通信が開始される。
すなわち、コントローラ20との接続が開始すると、装置本体10のメインCPU64は、図12に示すように、USB接続かBT通信かを判定する(ステップS51)。USB接続の場合は、USB接続による情報の送受信を行うための通信準備処理を実行し(ステップS52)、USB接続を介してコントローラ20から固有IDを取得する(ステップS53)。一方BT通信の場合は、BT通信による情報の送受信を行うための通信準備処理を実行し(ステップS54)、BT通信によりコントローラ20から固有IDを取得する(ステップS55)。
そして、USB接続による通信の場合、装置本体10のメインCPU64は、USB通信モジュール78が受信した固有IDが有線コントローラNo登録テーブルに登録されているか否かを判定し(ステップS56)、既に登録されている場合には既登録対応関係設定処理を実行し(ステップS57)、未だ登録されていない場合には新規登録及び対応関係設定処理を実行する(ステップS58)。
USB接続時での既登録対応関係設定処理(ステップS57)では、メインCPU64は、上記受信した固有IDと対応関係を有する有線コントローラNoを有線コントローラNo登録テーブルから読み出す。そして、仮想コントローラNo対応テーブルにおいて、物理コントローラNo(有線コントローラNo)を記憶するセルのうち最も先頭の空欄のセルに当該有線コントローラNoと固有IDを記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと有線コントローラNoと固有IDとが対応付けられた状態で記憶される。
USB接続時での新規登録及び対応関係設定処理(ステップS58)では、メインCPU64は、未だ対応関係が設定されていない任意の一つの有線コントローラNoと固有IDとを対応付けて有線コントローラNo登録テーブルに登録する。次に、固有IDに対応付けた有線コントローラNoと未だ対応関係が設定されていない任意の一つの仮想コントローラNoとを対応付けると共に、この仮想コントローラNoと有線コントローラNoと固有IDとの対応関係を仮想コントローラNo対応テーブルに対応付ける。
一方、BT通信の場合、メインCPU64は、BT通信モジュール79が受信した固有IDが有線コントローラNo登録テーブルに登録されており、且つ仮想コントローラNo対応テーブルにおいて仮想コントローラNo及び有線コントローラNoと対応付けられているか否かを判定し(ステップS59)、既に登録され、対応付けられている場合には既登録対応関係設定処理(ステップS60)を実行する。しかし、未だ登録されていないかまたは対応付けられていない場合には、新規登録及び対応関係設定処理を実行しない。すなわち、BT通信の場合の新規登録及び対応関係設定処理は、有線コントローラNo登録テーブルへの登録及び仮想コントローラNo対応テーブルにおける対応付けを条件に実行される。
BT接続時での既登録対応関係設定処理(ステップS60)では、メインCPU64は、BT通信モジュール79が受信した固有IDが無線コントローラNo登録テーブルに登録されているか否かを判定する。既に登録されている場合には、上記固有IDと対応関係を有する無線コントローラNoを無線コントローラNo登録テーブルから読み出す。そして、仮想コントローラNo対応テーブルにおいて、読み出した無線コントローラNoを、上記固有IDに対応する空欄の無線コントローラNoのセルに記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと物理コントローラNo(有線コントローラNo及び無線コントローラNo)と固有IDとが対応付けられた状態で記憶される。反対に、BT通信モジュール79が受信した固有IDが無線コントローラNo登録テーブルに未だ登録されていない場合には、未だ対応関係が設定されていない一つの無線コントローラNoと上記固有IDとを対応させて無線コントローラNo登録テーブルに登録する。そして、上記固有IDと対応関係を有する無線コントローラNoを無線コントローラNo登録テーブルから読み出す。さらに、仮想コントローラNo対応テーブルにおいて、読み出した無線コントローラNoを、上記固有IDに対応する空欄の無線コントローラNoのセルに記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと物理コントローラNo(有線コントローラNo及び無線コントローラNo)と固有IDとが対応付けられた状態で記憶される。すなわち、仮想コントローラNo対応テーブルにおいて、各仮想コントローラNoに対応付けられた有線コントローラNoと無線コントローラNoがそれぞれ示すコントローラ20は同一のものであり、固有IDも1つということになる。
そして、メインCPU64は、上記既登録対応関係設定処理または新規登録及び対応関係設定処理が完了したことを条件に、固有IDに対応付けた一つの仮想コントローラIDを、ゲーム等のアプリケーションプログラムの実行処理に関連付ける。具体的には、プレイヤーからコントローラ20への入力操作に従って、例えばゲーム上のキャラクタと、そのキャラクタを操作するコントローラ20との対応関係を設定する。
このように、装置本体10とコントローラ20との対応関係を仮想コントローラNoと固有IDとを対応付けることによって設定しているので、有線や無線という接続形式の影響を受けることなく、両者を対応付けることができる。
従って、例えば、ゲームを実行している途中で、有線から無線へ、または無線から有線へ接続形式を変更した場合であっても、実行中のゲームのキャラクタとコントローラ20との対応関係を特に変更することなく、そのままゲームを続けることができる。さらに、有線接続されたコントローラ20でゲームを実行している場合、装置本体10の複数あるコントローラポート11の一つに差し込まれた差込コネクタ12を他のコントローラポートに差し替えたとしても、同様にそのままゲームを続けることができる。
また、未登録のコントローラ20に対する新規登録及び対応関係設定処理は、有線接続(USB接続)時のみ許容され、無線通信(BT通信)時には禁止されるので、装置本体10に対してBT通信が可能な領域に無関係な第三者のコントローラが存在し、この無関係なコントローラからBT通信によって装置本体10が情報を受信した場合であっても、この装置本体10において新規登録及び対応関係設定処理は実行されず、意図しない無関係なコントローラが誤って登録されてしまうことを防止することができる。
また、未登録のコントローラ20であっても、装置本体10に対して有線または無線の新規登録処理を一度行うことにより、当該コントローラ20の固有IDと有線または無線コントロールNoとの対応関係が不揮発性のサブメモリ74に記憶されるので、コントローラ20を使用する際に装置本体10との間で有線または無線の登録処理を再度行う必要がない。
また、アプリケーションプログラムの開発者にとっては、プログラムの作成に際し、接続形式を考慮することなく、仮想コントローラNoとの対応付けのみを考慮すればよいので、プログラムの作成作業の煩雑化を招くこともない。
さらに、有線接続を前提とした従来のアプリケーションプログラムに対しても、コントローラポートにポート番号に代えて仮想コントローラNoを使用することにより、上記従来のアプリケーションプログラムにおいてもコントローラ20の対応付けを行うことができる。
〔未登録コントローラの登録及び対応付け(有線)処理の説明〕
装置本体10に対して未だ一度も使用されていないコントローラ20(以下、未登録のコントローラ20と称する)により通信を行う場合(例えば、コントローラ20を購入後、初めて使用する場合など)、プレイヤーは、まずコントローラ20の登録及び対応付け(有線)処理を行う必要がある。
この登録及び対応付け(有線)処理は、上述のように、有線接続(USB接続)を条件として実行される。すなわち、装置本体10と未登録のコントローラ20とがUSB接続されると、図8に示すように、通信準備処理が完了した後、コントローラ20から装置本体10へ当該コントローラ20の固有IDが送信される。同様に装置本体10からコントローラ20へも当該装置本体10の固有IDが送信される。
装置本体10は、受信した固有IDが有線コントローラNo登録テーブルに既に登録されているか否かを判定する(図12のステップS56)。ここでは、未登録のコントローラ20であるため、有線コントローラNo登録テーブルに未だ登録されてないと判定され、装置本体10は、有線コントローラNoを固有IDに割り当てる登録処理を実行する(ステップS10)。具体的には、図12のステップS58の新規登録及び対応関係設定処理を実行し、固有IDに有線コントローラNoを割り当て、有線コントローラNo登録テーブルに、これら有線コントローラNoと固有IDとを登録する。同様に、コントローラ20は、受信した装置本体10の固有IDをサブメモリ91に登録する(ステップS12)。
次に、装置本体10は、仮想コントローラNoと有線コントローラNoと固有IDとを対応付ける処理(ステップS11)を実行する。具体的には、仮想コントローラNo対応テーブルにおいて、物理コントローラNo(有線コントローラNo)を記憶するセルのうち最も先頭の空欄のセルに当該有線コントローラNoと固有IDを記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと有線コントローラNoと固有IDとが対応付けられた状態で記憶される。
これにより、コントローラ20の登録及び対応付け(有線)処理が完了する。そして、装置本体10またはコントローラ20が電源オフされると仮想コントローラ対応Noテーブルに対応付けられた対応関係は解消されるが、物理コントローラNo登録テーブルの記憶内容は解消されない。また、ユーザ操作による解消は当該対応関係及び当該記憶内容いずれも可能である。
なお、USB接続を維持したまま、ゲーム等のアプリケーションプログラムを実行する場合には、後述する次の処理(固有ID及び物理コントローラNoに対応付けた一つの仮想コントローラNoを、ゲーム等のアプリケーションプログラムの実行処理に関連付ける処理)へ移行する。
〔有線及び無線共に既登録及び対応付け済のコントローラによる通信開始時の処理の説明〕
装置本体10に対して既に有線及び無線共に登録処理及び対応付け処理が行われたコントローラ20(以下、有線及び無線共に既登録及び対応付け済のコントローラ20と称する)により通信を開始すると、図9に示すように、USB接続による通信またはBT通信が開始し、所定の通信準備処理が完了した後、コントローラ20から装置本体10へ当該コントローラ20の固有IDが送信される。同様に装置本体10からコントローラ20へも当該装置本体10の固有IDが送信される。装置本体10は、受信した固有IDの登録状態及び対応付け状態を有線及び無線共に判定し(ステップS21−1)、有線及び無線共に登録及び対応付けが完全に終了しているときは、固有IDに対応する物理コントローラNoと仮想コントローラNoとの対応関係、及び対応する発光色を示す情報を、仮想コントローラNo対応テーブルから読み出す(ステップS21−2)。ここでは、有線及び無線共に既登録及び対応付け済のコントローラ20であるため、このステップS21−2の処理が実行される。同様にコントローラ20も、受信した装置本体10の固有IDがサブメモリ91に登録されているか否かを判定する(ステップS21−2)。この判定についても、既登録の装置本体10であるため、処理を継続する。
具体的には、USB接続及びBT通信の双方において、装置本体10は、受信したコントローラ20の固有IDが有線コントローラNo登録テーブルに登録されているか否か、及び仮想コントローラ対応テーブルにおいて対応付けられているか否かを判定する。
次に、装置本体10は、受信した固有IDに対応する仮想コントローラNoまたは仮想コントローラNoに対応する発光色の情報を仮想コントローラNo対応テーブルから読み出し、読み出した仮想コントローラNoまたは発光色の情報をコントローラ20へ送信する。コントローラ20は、受信した仮想コントローラNoまたは発光色の情報をメインメモリ82に記憶させる。仮想コントローラNoまたは発光色の情報はコントローラ20が電源オフされると解消されるが、ユーザ操作による解消または変更も可能である。
コントローラ20では、装置本体10から受信した仮想コントローラNoまたは発光色の情報に基づいて、CPU81が表示部(セグメント表示器またはLED)21の制御を行う(ステップS22)。セグメント表示器の場合は、コントローラ20の表示部21が、上記仮想コントローラNoを数値データとして表示する。またLEDの場合は、コントローラ20の表示部21が、上記仮想コントローラNoに対応する色で発光する。例えば、図5〜図7に示すように各テーブルが設定されている場合、固有ID「C−02」を有するコントローラ20の表示部21は「赤」に、固有ID「C−03」を有するコントローラ20の表示部21は「黄」に、固有ID「C−04」を有するコントローラ20の表示部21は「青」に、固有ID「C−01」を有するコントローラ20の表示部21は「黒」に、それぞれ発光する。
なお、本実施形態では、表示部21がLEDの場合は、装置本体10の仮想コントローラNo対応テーブルに発光色の情報を対応付けておき、仮想コントローラNoに対応する発光色の情報を装置本体10からコントローラ20へ送信しているが、仮想コントローラNoとこれに対応する発光色の情報をコントローラ20のサブメモリ91に予め対応付けておき、仮想コントローラNoを装置本体10からコントローラ20へ送信してもよい。
また、別の実施形態として、コントローラ20に対して所定の入力が行われた際に、コントローラ20のUSB通信モジュール88またはBT通信モジュール89が装置本体10へ画面表示要求信号を送信してもよい。この所定の入力の一例として、当該別の実施形態では、ホームボタン52と他の一つのキー(例えば、「×」ボタン46)とを同時に押下する操作が設定されている。
その後、装置本体10では、USB通信モジュール78またはBT通信モジュール79が上記特定処理実行指示信号を受信すると、メインCPU64がGPU68へ画像表示出力指示信号を出力し、GPU68は、上記発光色及び仮想コントローラNoをモニタ装置100の画像表示部101へ表示させる処理を実行する(ステップS23)。例えば、図5〜図7に示すように各テーブルが設定されている場合、固有ID「C−02」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「赤」色で仮想コントローラNo「V−01」を表示し、固有ID「C−03」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「黄」色で仮想コントローラNo「V−02」を表示し、固有ID「C−04」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「青」色で仮想コントローラNo「V−03」を表示し、固有ID「C−01」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「黒」色で仮想コントローラNo「V−04」を表示する。
また、上記発光色及び仮想コントローラNoをモニタ装置100の画像表示部101へ表示させる処理は、通信開始時に限定して実行されるものではない。すなわち、仮想コントローラNoが関連付けられたアプリケーションプログラムの実行中に、当該仮コントローラNoを保持するコントローラ20のホームボタン52と「×」ボタン46とが同時に押下され、このボタン操作に応じた特定処理実行指示信号を装置本体10が受信したときにも、上記処理が実行される。この場合、発光色及び仮想コントローラNoは、実行中のアプリケーションプログラムの画面に重ねて表示することが好ましい。
これにより、プレイヤーは、自己が使用しているコントローラ20の仮想コントローラNoを、任意のタイミングでモニタ装置100の画像表示部101に表示させて視ることができる。
そして、メインCPU64は、有線及び無線共に受信した固有IDの登録及び対応付けが完了していることを条件に、プレイヤーからコントローラ20への入力操作に従って、固有ID及び物理コントローラNoに対応付けた一つの仮想コントローラNoを、ゲーム等のアプリケーションプログラムの実行処理に関連付ける。このとき、プレイヤーは、自己が操作するコントローラ20の表示部21の仮想コントローラNoまたは発光色やモニタ装置100の画像表示部101に表示された発光色及び仮想コントローラNoを視認しながら、例えばゲーム上のキャラクタにコントローラ20を対応付けることができるので、コントローラ20とアプリケーションプログラムとの関連付け(例えば、コントローラ20とキャラクタとの対応付け)を容易且つ確実に行うことができる。
なお、図8に示す未登録コントローラの登録及び対応付け(有線)処理においても、新規登録及び対応関係設定処理の後に、上記仮想コントローラNoを報知するためのコントローラ20の表示部21の発光制御処理や、モニタ装置100の画像表示部101への表示制御を実行してもよい。以上のように、装置本体10と各コントローラ20との間の互いの固有IDの登録については不揮発性のサブメモリ74、サブメモリ91に記憶させ、仮想コントローラNoと物理コントローラNoとの対応付けについては揮発性のメインメモリ65、82に記憶させる。これにより、例えば、自分が持つコントローラ20を友人宅に持ち出した場合、友人が持つ装置本体10との間で互いに固有IDを登録し、仮想コントローラNoと物理コントローラNoとの対応付けを行うことにより、次回から固有IDの登録が不要になる。
〔BT通信中のバッテリ監視処理の説明〕
図10に示すように、BT通信中において、コントローラ20では、CPU81がバッテリ83の蓄電量を定期的に算出し、この蓄電量を示す情報(蓄電量情報)をBT通信モジュール89が装置本体10へ都度送信する。なお、ここでは、BT通信中におけるバッテリ監視処理について説明しているが、CPU81は、接続形式によらずバッテリ83の蓄電量を定期的に算出しており、USB接続の場合、蓄電量情報はUSB通信モジュール88によって装置本体10へ都度送信される。
そして、例えば仮想コントローラNoが関連付けられたアプリケーションプログラムの実行中などに、当該仮コントローラNoを保持するコントローラ20のホームボタン52と「○」ボタン45とが同時に押下され、このボタン操作に応じた特定処理実行指示信号を装置本体10が受信すると、装置本体10はバッテリ残量の表示処理を開始する。
このバッテリ残量の表示処理において、装置本体10では、BT通信モジュール79が受信した蓄電量情報に基づいて、メインCPU64がGPU68へ蓄電量表示出力指示信号を出力し、GPU68は、上記蓄電量情報に基づき、バッテリ83の蓄電量を数値表示やグラフ表示やキャラクタ表示等によりモニタ装置100の画像表示部101へ表示させる処理を実行する(ステップS31)。また、バッテリ残量に関する表示は、蓄電量が所定の閾値以下であるときに限って実行される充電不足の警告表示であってもよい。なお、上記バッテリ残量に関する表示は、実行中のアプリケーションプログラムの画面に重ねて表示することが好ましい。この場合、バッテリ残量に関する情報をアプリケーションプログラム側に提供することにより、アプリケーションプログラムによってバッテリ残量に関する表示を行わせることもできる。また、バッテリ残量の表示処理を、予め設定された条件の成立(例えば、所定の入力や所定時間の経過など)によって終了させてもよい。
これにより、プレイヤーは、バッテリ83の蓄電量に関する表示を、任意のタイミングでモニタ装置100の画像表示部101に表示させて視ることができる。すなわち、プレイヤーは、蓄電量が低下してBT通信による情報の送受信が困難となる可能性があることを、任意に且つ容易に認識することができる。
そして、このような場合、プレイヤーはUSB接続を行う。USB接続が行われると、所定の通信準備処理が完了した後、コントローラ20と装置本体10との間で固有IDが互いに送信され、装置本体10は、図9のステップS21−1と同様の処理を実行する(ステップS32−1)。すなわち、有線及び無線共に受信した固有IDの登録及び対応付けが完了していることを条件に、BT通信からUSB接続による通信へ切り替える。この切り替えの前後において、固有IDと仮想コントローラNoとの対応関係は維持されるため、プレイヤーは同じコントローラ20をそのまま使用して、アプリケーションプログラムの実行を継続して行うことができる。また、USB接続前にモニタ装置100の画像表示部101に表示されていた表示が充電不足の警告表示であった場合には、USB接続後に当該表示は消去される。同様にコントローラ20も、受信した装置本体10の固有IDがサブメモリ91に登録されているか否かを判定する(ステップS32−2)。
USB接続時には、装置本体10は、コントローラ20へ駆動電源を供給すると共に、バッテリ83を充電する(ステップS33)。このバッテリ83の充電時においても、コントローラ20では、CPU81がバッテリ83の蓄電量を定期的に算出し、蓄電量情報をUSB通信モジュール88が装置本体10へ都度送信する。
装置本体10では、USB通信モジュール78が受信した蓄電量情報に基づいて、GPU68がバッテリ83の蓄電量を数値表示等を更新して表示させる(ステップS34)。
プレイヤーは、モニタ装置100の画像表示部101に表示されたバッテリ83の蓄電量に関する表示を視ることによって、蓄電量が増大してBT通信による情報の送受信が長時間可能となったことを容易に認識することができる。
そして、プレイヤーは必要に応じてUSB接続を解除することにより、BT通信状態に復帰させることができる。
なお、本実施形態では、コントローラ20のホームボタン52と「○」ボタン45とが同時に押下されるという所定の入力を条件としてバッテリ残量の表示処理を実行しているが、このような所定の入力を条件とせずに、バッテリ残量の表示処理を行ってもよい。一例として、バッテリ残量が予め定めた閾値以下となったことを条件にバッテリ残量の表示処理を実行することが挙げられる。
〔BT通信中のRSSIの監視処理の説明〕
図11に示すように、装置本体10は、RSSIの監視処理を定期的に実行し、無線通信時の装置本体10とコントローラ20との間の電界強度を定期的に検出する。
そして、例えば仮想コントローラNoが関連付けられたアプリケーションプログラムの実行中などに、当該仮コントローラNoを保持するコントローラ20のホームボタン52と「△」ボタン48とが同時に押下され、このボタン操作に応じた特定処理実行指示信号を装置本体10が受信すると、装置本体10は電界強度の表示処理を開始する。
電界強度の表示処理において、GPU68は、上記検出された電界強度を、数値表示やグラフ表示やキャラクタ表示等によりモニタ装置100の画像表示部101へ表示させる処理を実行する(ステップS41)。また、電界強度に関する表示は、電界強度が所定の閾値以下であるときに限って実行されるBT通信不良の警告表示であってもよい。なお、上記電界強度に関する表示は、実行中のアプリケーションプログラムの画面に重ねて表示することが好ましい。この場合、電界強度に関する情報をアプリケーションプログラム側に提供することにより、アプリケーションプログラムによって電界強度に関する表示を行わせることもできる。また、電界強度の表示処理を、予め設定された条件の成立(例えば、所定の入力や所定時間の経過など)によって終了させてもよい。
プレイヤーは、電界強度に関する表示を、任意のタイミングでモニタ装置100の画像表示部101に表示させて視ることができる。すなわち、プレイヤーは、電界強度が低下してBT通信による情報の送受信が困難となっていることを、任意に且つ容易に認識することができる。
上記不都合は、プレイヤーがコントローラ20を装置本体10に近づけることによって解消される。このような対処により、画像表示部101における電界表示に関する表示が更新され、プレイヤーは、BT通信が適正に行われ得る電界強度であることを容易に視認することができる。
なお、本実施形態では、コントローラ20のホームボタン52と「△」ボタン48とが同時に押下されるという所定の入力を条件として電界強度の表示処理を実行しているが、このような所定の入力を条件とせずに、電界強度の表示処理を行ってもよい。一例として、電界強度が予め定めた閾値以下となったことを条件に電界強度の表示処理を実行することが挙げられる。
また、上述の実施の形態の説明では、本発明を装置本体とそのコントローラに適用することとしたが、これは装置本体とそのコントローラ以外に適用してもよい。
最後に、上述の各実施の形態の説明は本発明の一例である。このため、本発明は上述の各実施の形態に限定されることはなく、本発明の技術的思想を逸脱しない範囲であれば、上述の実施の形態以外であっても種々の変更が可能であることは勿論である。
本発明は、ユーザから操作される操作端末と、この操作端末と情報処理装置との間の有線及び無線通信を実現する様々な情報通信システムに適用することができる。
10 装置本体
20 コントローラ
21 表示部
64 メインCPU
65 メインメモリ
本発明は、例えばビデオゲーム機と複数のコントローラからなるエンタテインメントシステムのように複数の操作端末と情報処理装置から構成される情報通信システム、例えばビデオゲーム機のような情報処理装置、例えばビデオゲーム機のコントローラのような操作端末に関する。
例えば、複数のコントローラを接続可能なコントローラポートを備えたビデオゲーム機では、多数の遊戯者(以下、プレイヤーと称する)が複数のコントローラを各々操作して同じゲームを楽しむことが可能である。
ビデオゲーム機に使用される従来のコントローラは、特許文献1のような有線接続用のコントローラと、特許文献2のような無線接続用のコントローラとに分かれる。有線接続用のコントローラは、ゲーム機本体のコントローラポートに有線(ケーブル)により接続され、ゲーム機本体との間で有線接続を介してデータの送受信を行う。無線接続用のコントローラは、ゲーム機本体との間で無線通信によってデータの送受信を行う。
米国特許第6231444号
米国特許第6803676号
従来のコントローラは、上述のように有線接続用と無線接続用とに分かれているため、有線接続によってゲームを行う場合と無線接続によってゲームを行う場合とにおいて、プレイヤーは使用するコントローラを都度交換しなければならず煩雑である。
本発明は上述の課題に鑑みてなされたものであり、例えばコントローラとビデオゲーム機とからなるエンタテインメントシステムのように、操作端末を接続可能な情報処理装置、その操作端末、及びそれらにより構成される通信システムにおいて、1つの操作端末と情報処理装置との間で有線接続を介した情報の送受信と無線接続による情報の送受信とを選択的に実行可能な情報通信システム、情報処理装置、及び操作端末を提供することを目的とする。
本発明の情報通信システムは、ユーザから操作される操作端末と、この操作端末との間で有線及び無線による通信が可能な情報処理装置と、を備える。
操作端末は、操作部と接続状態判定手段と端末側送受信手段と端末側端末識別情報記憶手段とを有する。操作部は、ユーザからの入力操作を受ける。接続状態判定手段は、操作端末と情報処理装置とが有線接続された有線接続状態であるか否かを判定する。端末側送受信手段は、情報処理装置との間で情報を送受信する。端末側識別情報記憶手段には、固有の端末識別情報が予め記憶される。
情報処理装置は、情報処理実行手段と装置側送受信手段とを有する。情報処理実行手段は、所定の情報処理を実行する。装置側送受信手段は、操作端末との間で情報を送受信する。
端末側送受信手段は、操作部が所定の操作入力を受けたとき、端末側端末識別情報記憶手段に記憶された端末識別情報を、有線接続状態であると接続状態判定手段が判定した場合には有線接続を介して装置側送受信手段へ送信し、有線接続状態ではないと接続状態判定手段が判定した場合には無線通信によって装置側送受信手段へ送信する。
本発明によれば、情報処理装置との間における有線接続を介した情報の送受信と無線接続による情報の送受信とを、1つの操作端末によって適宜切り替えて実行することができる。
本発明の一実施形態のエンタテインメントシステムの概要を示す模式図である。
コントローラの外部構成を示す模式図である。
装置本体の内部構成を示すブロック図である。
コントローラの内部構成を示すブロック図である。
有線コントローラNo登録テーブルを示す模式図である。
無線コントローラNo登録テーブルを示す模式図である。
仮想コントローラNo対応テーブルを示す模式図である。
コントローラ登録及び対応付け処理を示すタイムチャートである。
有線及び無線共に既登録及び対応付け済のコントローラによる通信開始処理を示すタイムチャートである。
バッテリ監視処理を示すタイムチャートである。
BT通信中のRSSI監視処理を示すタイムチャートである。
通信開始時に装置本体が実行する処理を示すフローチャートである。
メニュー画面を示す模式図である。
[本実施の形態の概略構成]
本発明一実施形態として、図1に示すエンタテインメントシステムは、本発明の情報処理装置の一例のビデオゲーム機であるエンタテインメント装置(以下、装置本体と称する)10と、ユーザ(プレイヤー)により操作される複数の操作端末であるコントローラ20(図1の例では2つのコントローラ20A,20B)とを備える。装置本体10と各コントローラ20A,20Bとの間では、通信により情報が送受信される。プレイヤーは、両者間の通信方法として、ケーブル13A,13Bを介した有線接続による通信と無線による通信のうち任意の一方を選択可能である。また、装置本体10にコントローラ20を有線接続した場合には、有線による通信が実行され、無線による通信は実行されない。
図1の例において、装置本体10は、複数のコントローラポート11(本実施形態では、11A,11B,11C,11Dの4箇所)を有する。コントローラ20A,20Bと装置本体10とを有線接続する場合、ケーブル13Aは、一端部に設けられた差込コネクタ12Aが装置本体10のコントローラポート11のうち任意の一つ(この例では11A)に差し込まれて電気的に接続され、他端部に設けられた差込コネクタ14Aがコントローラ20Aの接続ポート15(15A)に差し込まれて電気的に接続される。また、ケーブル13Bは、一端部に設けられた差込コネクタ12Bが装置本体10のコントローラポート11のうち他の任意の一つ(11B)に差し込まれて電気的に接続され、他端部に設けられた差込コネクタ14Bがコントローラ20Bの接続ポート15(15B)に差し込まれて電気的に接続される。装置本体10とコントローラ20との有線接続方式は、双方向にて通信可能であればよく、本実施形態では、USB(Universal Serial Bus)形式による接続(以下、USB接続と称する)を採用している。
また、各コントローラ20(20A,20B)には、装置本体10の無線通信部(アンテナ)16との間で無線による情報の送受信を行う無線通信部(アンテナ)17(17A,17B)がそれぞれ設けられている。両無線通信部16,17同士の通信方式としては、双方向にて無線通信可能であれば、ブルーツゥース(Bluetooth(登録商標))のような汎用の近距離高速無線通信方式や専用の近距離無線通信方式などのあらゆる通信方式の適用が可能である。本実施形態では、ブルーツゥースによる無線通信方式(以下、BT通信と称する)を採用している。
コントローラ20(20A,20B)の外観等の詳細な構成については後述するが、これらコントローラ20A,20Bには、プレイヤーにとって視認し易い位置に、表示部21(21A,21B)がそれぞれ設けられている。これら表示部21A,21Bは、例えば、液晶表示パネル、有機若しくは無機EL(Electorluminescence)パネル、セグメント表示器、LED(発光ダイオード)など、プレイヤーが視認可能な表示を行えるものであり、本実施形態ではセグメント表示器またはLED(図示省略)が用いられている。
本実施形態における各表示部21A,21Bは、数値データを表示可能なセグメント表示器または異なった色で発光可能な多色発光LED(以下、単にLEDと称する)を有する。セグメント表示器の場合は、装置本体10が各コントローラ20と各ゲームキャラクタとの対応を表す対応情報として個々のコントローラ20に対して割り当てた仮想コントローラ番号(詳しくは後述する)を表示する。またLEDの場合は、仮想コントローラ番号に対応する発光色で光る。
また、セグメント表示器またはLED以外によって表示部を構成する場合、装置本体10が個々のコントローラ20とゲームキャラクタとの対応を表す対応情報としては、それらコントローラ20に対して割り当てて送信した個々のコントローラを識別するための図柄、記号等や、個々のコントローラが操作可能なゲーム中の例えばキャラクタを象徴する図柄,記号等が挙げられる。なお、キャラクタを象徴する図柄とは、キャラクタそのものの図柄や、キャラクタを抽象化した図柄などである。
すなわち、表示部21A,21Bにおける表示は、少なくとも、各コントローラ20A,20Bに対して装置本体10が割り当てた仮想コントローラ番号を、直接または間接的にプレイヤーに視認させることが可能であれば良い。
各コントローラ20A,20Bの表示部21A,21Bにおいて、このような表示を行うことにより、例えば、プレイヤーは自分が持つコントローラ20A,20Bにより、ゲーム中の各キャラクタのうち、どのキャラクタを操作可能であるのかを容易に確認することができる。
[エンタテインメントシステムの全体構成]
図1に示すエンタテインメントシステムは、装置本体10と、コントローラ20(20A,20B)と、装置本体10から映像及び音声信号が供給されるモニタ装置(例えばテレビジョン受像機など)100とから構成されている。モニタ装置100は、装置本体10から供給された映像信号に基づいて画像を表示する画像表示部101を有する。
〔装置本体の外観〕
上記装置本体10には、上記コントローラポート11(11A〜11D)及び無線通信部16の他、図示は省略するが、メモリカードが着脱自在とされるメモリカードスロット、ディスクトレイ、ディスクトレイをオープンまたはクローズさせるオープン/クローズボタン、電源のオンやスタンバイ,リセットを行うためのオン/スタンバイ/リセットボタン、音声映像出力端子(AVマルチ出力端子)、PCカードスロット、光ディジタル出力端子、IEEE(Institute of Electrical and Electronics Engineers)1394接続端子、電源スイッチ、AC電源入力端子などが設けられている。
また、上記装置本体10は、例えばいわゆるDVD−ROMやCD−ROM等のディスク媒体に記録されているビデオゲーム用のアプリケーションプログラムに基づいてビデオゲームを実行したり、例えばDVDビデオやCDに記録されたビデオデータ、オーディオデータを再生(デコード)可能なものである。また、この装置本体10は、アプリケーションプログラムが後述するコントローラ接続管理プログラムを含む場合、そのプログラムの制御の元で、後述する仮想コントローラ番号(No)等をコントローラ20へ向けて送信する制御が実行される。
なお、上記アプリケーションプログラムやビデオ、オーディオデータは、ディスク媒体に限らず、半導体メモリやテープ媒体から読みとられたもの、有線若しくは無線の広域或いは域内通信回線等により供給されたものであってもよい。
〔コントローラの外観〕
図2を用いて、コントローラ20の外観を簡単に説明する。
上記コントローラ20は、装置本体10との間でUSB接続するための上記接続ポート15と、装置本体10との間でBT通信するための上記無線通信部17と、仮想コントローラ番号を表示するか仮想コントローラ番号に対応した色で発光する表示部21を備えている。
コントローラ20には、プレイヤーがコントローラ20を左右の手により把持した状態で、プレイヤーの左右の手の親指により操作される右操作部31及び左操作部32と、同じく左右の親指によりアナログ操作が可能な右アナログ操作部33及び左アナログ操作部34と、左右の人差し指によりそれぞれ押下操作される右第1押下ボタン35及び左第1押下ボタン36と、左右の中指によりそれぞれ押下操作される右第2押下ボタン37及び左第2押下ボタン38が設けられている。
上記左操作部32には、例えばゲームキャラクタを画面上で移動させるなどの操作をプレイヤーが行う場合に用いられる、上指示ボタン41、下指示ボタン42,左指示ボタン43、右指示ボタン44が設けられている。また、上記右操作部31には、例えばゲームキャラクタの機能の設定や実行など、ゲームアプリケーションによりそれぞれ異なる機能が割り付けられる第1〜第4の操作ボタン45〜48が設けられている。
上記左右のアナログ操作部34,33は、操作軸を中心に360度方向に回転可能で且つ非操作時には弾性部材により中立位置に復帰する左右の回転操作子(図示省略)と、これら左右の回転操作子の操作に応じた信号を発生する信号発生部(図示省略)等を備えている。
上記左右のアナログ操作部34,33は、例えば、左右の回転操作子を回転操作することにより、例えばゲームキャラクタを回転しながら移動させ、或いは速度を可変しながら移動させ、さらには形態を変更させる等のアナログ的な動きを実現するための指令信号を入力するため等に用いられる。
さらにコントローラ20は、コントローラ20の電源をオン/オフさせるために使用するオン/オフボタン51と、ホームボタン52とを有している。
ホームボタン52は、装置本体10との間で通信を開始させる際の入力用、及び画像表示部101へのメニュー画面の表示処理を装置本体10に開始させるための入力用として割り当てられている。装置本体10におけるメニュー画面の表示処理は、実行中の他のアプリケーションプログラムを中断して優先的に実行される。また、ホームボタン52が押下されてコントローラ20が装置本体10との間で通信を開始した場合にも、メニュー画面が表示される。
装置本体10が生成するメニュー画面を図13に示す。同図に示すように、表示画面120において、水平方向に複数のメディアアイコンが並んだメディアアイコン配列121と、垂直方向に複数のコンテンツアイコンが並んだコンテンツアイコン配列122とが交差する二次元配列が表示される。メディアアイコン配列121には、装置本体10が再生可能なメディアの種類を示すマークとして、写真アイコン123、音楽アイコン124、動画アイコン125、放送アイコン126、ディスクアイコン127、ゲームアイコン128が含まれる。コンテンツアイコン配列122には、複数のコンテンツのサムネイルなどのアイコンが含まれる。メディアアイコン配列121およびコンテンツアイコン配列122で構成されるメニュー画面はオンスクリーン表示であり、コンテンツ映像の前面に重ね合わされて表示される。背景領域129に現在再生中のコンテンツ映像を表示する場合、メディアアイコン配列121とコンテンツアイコン配列122の領域全体に、背景領域129との外観上の区別を容易にするための彩色を施してもよく、またコンテンツ映像の明るさを調整するなどの方法により外観上の区別を容易にしてもよい。
メディアアイコン配列121とコンテンツアイコン配列122が交差する領域に位置するメディアアイコンは、動画アイコン125として図示するように他のメディアアイコンと異なる色彩にて拡大表示される。交差領域130は、表示画面120の略中央に位置したままその位置が据え置かれ、コントローラ20を介したユーザからの左右方向の入力指示に応じてメディアアイコンの配列全体が左右方向に移動し、交差領域130に位置したメディアアイコンの色彩とアイコンサイズが変化する。したがって、ユーザは左右の方向指示をするだけでメディアを選択でき、例えば、PC上で行われるマウスのクリック操作のような決定指示は不要である。
上述のように、右アナログ操作部33、左アナログ操作部34、右第1押下ボタン35、左第1押下ボタン36、右第2押下ボタン37、左第2押下ボタン38、上指示ボタン41、下指示ボタン42,左指示ボタン43、右指示ボタン44、及び第1〜第4の操作ボタン45〜48は、装置本体10においてプレイヤーからの指示に従って選択的に実行されるアプリケーションプログラムの実行処理に関与する入力用として割り当てられる第1の操作部として機能する。これに対し、ホームボタン52は、上記アプリケーションプログラムの実行処理に関与する入力用として割り当てられておらず、且つ実行中の他のアプリケーションプログラムに優先してメニュー画面の表示制御を開始させるための入力用として割り当てられた第2の操作部として機能する。
〔装置本体の内部回路構成〕
図3には、上記装置本体10の主要な内部構成を示す。
図3に示すように、装置本体10は、メインバス61とサブバス62とを有し、これらの61、62は、バスインタフェース63を介して互いに接続されまたは切り離される。
メインバス61には、メインCPU64と、DRAMで構成される揮発性のメインメモリ65と、メインDMAC(direct memory access controller)66と、フレームメモリ67を内蔵する画像処理デバイス(GPU(graphic processing unit))68が接続される。GPU68には、ビデオ出力信号を生成するための制御手段であるCRTC(CRT controller)69が接続される。ビデオ出力信号により、ケーブル等によって装置本体10と接続されている所定の表示装置(本実施形態では、モニタ装置100の画像表示部101)に画像が表示される。
メインCPU64は、装置本体10の起動時にサブバス62上のROM70から、バスインタフェース63を介して起動プログラムを読み込み、その起動プログラムを実行してオペレーティングシステムを動作させる。また、メディアドライブ71を制御するとともに、このメディアドライブ71に装着されたメディア72からアプリケーションプログラムやデータを読み出し、これをメインメモリ65に記憶させる。さらに、メディア72から読み出した各種データ、例えば複数の基本図形(ポリゴン)で構成された3次元オブジェクトデータ(ポリゴンの頂点(代表点)の座標値など)に対して、ジオメトリ処理を行う。ジオメトリ処理によりポリゴン定義情報をその内容とするディスプレイリストを生成する。また、MPEG(Moving Picture Experts Group)方式あるいはJPEG(Joint Photographic Experts Group)方式等で圧縮されたデータを伸張する。つまりメインCPU64は、ソフトウェアにより情報を解読する情報解読機能を持つ。
ポリゴン定義情報は、描画領域設定情報とポリゴン情報とからなる。描画領域設定情報は、描画領域のフレームバッファアドレスにおけるオフセット座標と、描画領域の外部にポリゴンの座標があった場合に、描画をキャンセルするための描画クリッピング領域の座標からなる。ポリゴン情報は、ポリゴン属性情報と頂点情報とからなり、ポリゴン属性情報は、シェーディングモード、αブレンディングモード、およびテクスチャマッピングモード等を指定する情報であり、頂点情報は、頂点描画領域内座標、頂点テクスチャ領域内座標、および頂点色等の情報である。
GPU68は、描画コンテクストを保持しており、メインCPU64から通知されるディスプレイリストに含まれる画像コンテクストの識別情報に基づいて該当する描画コンテクストを読み出し、これを用いてレンダリング処理を行い、フレームメモリ67にポリゴンを描画する。フレームメモリ67は、テクスチャメモリとしても使用できるため、フレームメモリ67上のピクセルイメージをテクスチャとして描画するポリゴンに貼り付けることができる。
メインDMAC66は、メインバス61に接続されている各回路を対象としてDMA転送制御を行うとともに、バスインタフェース63の状態に応じて、サブバス62に接続されている各回路を対象としてDMA転送制御を行う。
サブバス62には、マイクロプロセッサなどで構成されるサブCPU73、フラッシュメモリ等で構成される不揮発性のサブメモリ74、サブDMAC75、オペレーティングシステムなどのプログラムが記憶されているROM70、サウンドメモリ76に蓄積された音データを読み出してオーディオ出力として出力する音声処理装置(SPU(sound processing unit))77、USB接続ケーブルを介してコントローラ20との間で有線による情報の送受信を行うUSB通信モジュール78、BT通信を介してコントローラ20との間で無線による情報の送受信を行うBT通信モジュール79、所定のメディア72を装着するためのメディアドライブ71、及びキーボード80が接続されている。メディア72は、画像処理用のプログラムが記録されたCD−ROMやDVD−ROM等の記録媒体である。装置本体10は、この画像処理用のプログラムを読み取って実行することにより、所要のエンタテインメント処理を実行する。USB通信モジュール78は、コントローラポート11(図1に示す)を含み、BT通信モジュール79は、無線送受信部16(図1に示す)を含む。
サブCPU73は、ROM70に記憶されているプログラムに従って各種動作を行う。サブDMAC75は、バスインタフェース63がメインバス61とサブバス62を切り離している状態においてのみ、サブバス62に接続されている各回路を対象としてDMA転送などの制御を行う。
また、サブメモリ74には、後述する有線コントローラNo登録テーブル(図5に示す)、無線コントローラNo登録テーブル(図6に示す)が予め設定されており、メインメモリ65には後述する仮想コントローラNo対応テーブル(図7に示す)が予め設定されている。メインCPU64は、USB通信モジュール78またはBT通信モジュール79がコントローラ20との間で通信を開始した際、後述する未登録コントローラの登録及び対応付け(有線)処理(図8に示す)または有線及び無線共に既登録及び対応付け済のコントローラによる通信開始時の処理(図9に示す)を実行する。なお、上記各テーブルの設定先は、他の記憶部であってもよく、また上記各処理の実行主体は、サブCPU73であってもよい。
さらに、メインCPU64は、バッテリ監視処理(図10に示す)及びBT通信中におけるRSSIの監視処理(図11に示す)を実行する。ここで、RSSIとは、無線通信時の装置本体10とコントローラ20との間の接続環境としての電界強度を意味し、電界強度が強い(数値が大きい)ほど安定したBT通信が可能となる。なお、電界強度の検出は、BT通信モジュール79が行う。
〔コントローラの内部構成〕
次に、図4に、コントローラ20の主要な内部構成を示す。
図4において、コントローラ20は、CPU81と、DRAMで構成される揮発性のメインメモリ82と、バッテリ83と、振動検出素子84と、振動素子85と、スピーカ86と、キーボード87と、表示部(セグメント表示器またはLED)21と、USB通信モジュール88と、BT通信モジュール89と、フラッシュメモリ等で構成される不揮発性のサブメモリ91とを有し、これらはバス90を介して接続されている。キーボード87とは、コントローラ20に設けられた上記各種の入力ボタン33,34,35〜38,41〜48,51,52の総称である。
CPU81は、コントローラ20の起動時にサブメモリ91から起動プログラムを読み込み、その起動プログラムを実行する。また、CPU81は、表示部21を所定の発光状態に制御する表示制御や、スピーカ86への音声出力を制御する音声制御や、振動素子85を駆動させてコントローラ20に振動を与える振動制御を実行する。さらに、メインCPU64は、バッテリ83に対する充電及び放電の電流を積算し、バッテリ83の蓄電量を演算により求める。
USB通信モジュール88は、USB接続ケーブルを介して装置本体10との間で有線による情報の送受信を行い、BT通信モジュール89は、BT通信を介して装置本体10との間で無線による情報の送受信を行う。USB通信モジュール88は、接続ポート15(図1に示す)を含み、BT通信モジュール89は、無線送受信部17(図1に示す)を含む。
また、サブメモリ91には、各コントローラ20に固有に付された端末識別情報としての固有IDが予め記憶されている。CPU81は、所定のタイミングでサブメモリ91から固有IDを読み出し、読み出した固有IDをUSB通信モジュール88またはBT通信モジュール89から装置本体10へ送信させる。
また、CPU81は、キーボード87に対するプレイヤーからの操作入力に応じて予め設定された指示信号を生成し、生成した指示信号をUSB通信モジュール88またはBT通信モジュール89から装置本体10へ送信させる。特に、第2操作部として機能するホームボタン52と、第1操作部として機能する他の入力ボタン33,34,35〜38,41〜48のうち少なくとも一つとが同時に押下されると、CPU81は、ボタンの組み合わせに応じた特定処理実行指示信号を、装置本体10へ送信させる。本実施形態では、ホームボタン52と「×」ボタン46とが同時に押下されることにより、後述する仮想コントローラNoの画面表示処理の開始を指示する特定処理実行指示信号が生成され、ホームボタン52と「○」ボタン45とが同時に押下されることにより、後述するバッテリ残量の表示処理の実行を指示する特定処理実行指示信号が生成され、ホームボタン52と「△」ボタン48とが同時に押下されることにより、後述する電界強度の表示処理の実行を指示する特定処理実行指示信号が生成される。
なお、コントローラ20と装置本体10との間を接続するUSBケーブル13A,13B(図1に示す)は電源供給線を含み、USB接続状態において、装置本体10は、電源供給線を介してコントローラ20の電源を供給すると共に、バッテリ83の充電を行う。
また、振動素子85とは、例えばモータの回転軸に対し偏心した状態で固定された重りであり、モータの駆動時に回転する重りがコントローラ20を振動させる。ゲームの進行状態等に応じてモータを駆動させることにより、所望のタイミングでプレイヤーの手に振動が伝達される。また、振動検出素子84とは、プレイヤーからコントローラ20に加えられた振動を検出するセンサであり、例えば、振動の検出によりオフ状態のコントローラ20をオン状態とする等、プレイヤーからの振動の入力を所定の処理の契機として用いる。
〔コントローラ接続管理プログラムの説明〕
複数のコントローラとの有線及び無線による任意で且つ良好な接続を実現するために、本実施の形態の装置本体10は、図8〜図11のタイムチャートに示すアルゴリズム(以下、コントローラ接続管理プログラムと呼ぶ)により、それぞれ接続されているコントローラ20の認識及び管理や、各コントローラ20の表示部21へ表示させるための表示情報(対応情報)の送信や、BT通信中のバッテリ83の監視や、RSSIの監視などを行う。
なお、図8〜図11の処理は、ゲームアプリケーションプログラム若しくはデバイスドライバプログラム内に設けられたコントローラ接続管理プログラムが、主として装置本体10のメインCPU64上で動作することにより実現されるものである。
〔各テーブルの説明〕
サブメモリ74には、図5に示す有線コントローラNo登録テーブル、図6に示す無線コントローラNo登録テーブルが予め設定されており、メインメモリ65には図7に示す仮想コントローラNo対応テーブルが予め設定されている。
有線コントローラNo登録テーブルでは、有線コントローラNoが記憶される複数のセルと、各コントローラ20の固有IDが記憶される複数のセルとが、1対1で対応している。USB接続により新規のコントローラ20が登録される度に、先頭側(図中上方)の空欄のセルから有線コントローラNo(「W−01」,「W−02」,「W−03」,「W−04」)と固有ID(「C−02」,「C−03」,「C−04」,「C−01」)とが順次記憶される。例えば、固有IDがそれぞれ「C−02」,「C−03」,「C−04」,及び「C−01」であるコントローラ20が、この順序で新規に登録されると、図5に示すように、最初に固有ID「C−02」と有線コントローラNo「W−01」とが対応付けて登録され、次に固有ID「C−03」と有線コントローラNo「W−02」とが対応付けて登録され、次に固有ID「C−04」と有線コントローラNo「W−03」とが対応付けて登録され、最後に固有ID「C−01」と有線コントローラNo「W−04」とが対応付けて登録される。
無線コントローラNo登録テーブルでは、無線コントローラNoが記憶される複数のセルと、各コントローラ20の固有IDが記憶される複数のセルとが、1対1で対応している。USB接続により既に有線コントローラNo登録テーブルに登録されたコントローラ20が装置本体10にBT通信により最初に接続される度に、先頭側(図中上方)の空欄のセルから無線コントローラNo(「R−01」,「R−02」,「R−03」)と固有ID(「C−03」,「C−02」,「C−01」)とが順次記憶される。例えば、固有IDが「C−01」,「C−02」,「C−03」,及び「C−04」である4つのコントローラ20が上述のように既に有線コントローラNo登録テーブルに登録されており、これらのうち、固有IDが「C−03」,「C−02」,「C−01」であるコントローラ20が、この順序で新規にBT通信により装置本体10に接続されると、図6に示すように、最初に固有ID「C−03」と無線コントローラNo「R−01」とが対応付けて登録され、次に固有ID「C−02」と無線コントローラNo「R−02」とが対応付けて登録され、最後に固有ID「C−01」と無線コントローラNo「R−03」とが対応付けて登録される。なお、固有IDが「C−04」であるコントローラ20は、未だBT通信により装置本体10に接続されていないため、無線コントローラNo登録テーブルには登録されておらず、この固有IDが「C−04」であるコントローラ20がBT通信により装置本体10に最初に接続された際に、この固有ID「C−04」と無線コントローラNoとが対応付けて登録される。なお、図6及び図7は、固有ID「C−04」と無線コントローラNoとが対応付けて登録される前の状態を示しているため、これら固有ID及び無線コントローラNoを「(R−04)」及び「(C−04)」と表記している。一方で、各コントローラ20のサブメモリ91にも、接続された装置本体10の固有IDが登録される。サブメモリ74、サブメモリ91は上述のように不揮発性なので、装置本体10または各コントローラ20が電源オフされても、登録(記憶)された固有IDは解消(消去)されない。これにより、再度、電源オンされた場合にも固有IDのチェックを介して、互いに登録されていない装置本体10とコントローラ20との間の誤動作を防止できる。
仮想コントローラNo対応テーブルでは、複数の仮想コントローラNoが予め設定され記憶された複数のセルと、有線コントローラNo及び無線コントローラNo(以下、両者を物理コントローラNoと称する)が記憶される複数のセルと、固有IDが記憶される複数のセルとが、1対1対1で対応している。また、各仮想コントローラNoに対応する発光色が予め記憶されたセルが、仮想コントローラNoに対応して設定されている。有線コントローラNo登録テーブルに新規のコントローラ20が登録される度に、物理コントローラNoを記憶するセルのうち先頭側(図中上方)の空欄のセルから有線コントローラNo(「W−01」,「W−02」,「W−03」,「W−04」)が順次記憶される。例えば、上述の例では、図7に示すように、仮想コントローラNo「V−01」に対して有線コントローラNo「W−01」が対応付けられ、仮想コントローラNo「V−02」に対して有線コントローラNo「W−02」が対応付けられ、仮想コントローラNo「V−03」に対して有線コントローラNo「W−03」が対応付けられ、仮想コントローラNo「V−04」に対して有線コントローラNo「W−04」が対応付けられる。また、仮想コントローラNo「V−01」に対して無線コントローラNo「R−02」が対応付けられ、仮想コントローラNo「V−02」に対して無線コントローラNo「R−01」が対応付けられ、仮想コントローラNo「V−04」に対して無線コントローラNo「R−03」が対応付けられる。なお、仮想コントローラNo「V−03」に対応する無線コントローラNoは、固有IDが「C−04」であるコントローラ20が無線コントローラNo登録テーブルに登録された際に、仮想コントローラNo対応テーブルに対応付けられる。さらに、各コントローラ20の固有IDも対応付けられる。
仮想コントローラNo対応テーブルは揮発性のメインメモリ65に記憶されるので、仮想コントローラNo対応テーブルに対応付けられた対応関係は装置本体10が電源オフされると解消されるが、ユーザ操作による当該対応関係の解消または変更も可能である。そして、装置本体10で実行されるアプリケーションプログラムは、実行時に当該仮想コントローラNo対応テーブルをチェックし、有線、無線コントローラNoおよび固有IDと有効に対応付けられた仮想コントローラNoの一つとアプリケーションプログラムのキャラクタの一つとを対応付ける。有効な仮想コントローラNoおよびキャラクタが複数ある場合も、1対1に対応付ける。
〔コントローラと装置本体との接続開始処理の説明〕
オフ状態の装置本体10は、電源が投入されることによりオン状態となる。オフ状態のコントローラ20は、オン/オフボタン51が押下されることによりオン状態となる。なお、装置本体10及びコントローラ20が共にオン状態であり、両者がBT通信により接続された状態において、コントローラ20のオン/オフボタン51が押下されると、コントローラ20がオフ状態になると共に装置本体10が待機状態(スリープ状態)となる。
USB接続による通信は、装置本体10及びコントローラ20が共にオン状態であり、両者がUSB接続された後、コントローラ20のホームボタン52が押下されることによって開始される。USB接続が開始されると、装置本体10及びコントローラ20はUSB接続による情報の送受信を行うための通信準備処理を実行した後、コントローラ20は、サブメモリ91に記憶された固有IDを読み出して、装置本体10へ送信する。なお、装置本体10は、USBケーブルが適正な状態で接続されているか否かを検出することによって、USB接続か否かを判定する。
BT通信は、装置本体10及びコントローラ20が共にオン状態であり、両者がUSB接続されていない状態において、コントローラ20のホームボタン52が押下されることによって開始される。この場合、コントローラ20が装置本体10の通信範囲内に位置することが必要である。BT接続が開始されると、装置本体10及びコントローラ20はBT通信による情報の送受信を行うための通信準備処理を実行した後、コントローラ20は、サブメモリ91に記憶された固有IDを読み出して、装置本体10へ送信する。なお、装置本体10が待機状態でコントローラ20がオフ状態であり、両者がUSB接続されていない状態において、コントローラ20のホームボタン52が押下されると、装置本体10は待機状態からオン状態となり、両者のBT通信が開始される。
すなわち、コントローラ20との接続が開始すると、装置本体10のメインCPU64は、図12に示すように、USB接続かBT通信かを判定する(ステップS51)。USB接続の場合は、USB接続による情報の送受信を行うための通信準備処理を実行し(ステップS52)、USB接続を介してコントローラ20から固有IDを取得する(ステップS53)。一方BT通信の場合は、BT通信による情報の送受信を行うための通信準備処理を実行し(ステップS54)、BT通信によりコントローラ20から固有IDを取得する(ステップS55)。
そして、USB接続による通信の場合、装置本体10のメインCPU64は、USB通信モジュール78が受信した固有IDが有線コントローラNo登録テーブルに登録されているか否かを判定し(ステップS56)、既に登録されている場合には既登録対応関係設定処理を実行し(ステップS57)、未だ登録されていない場合には新規登録及び対応関係設定処理を実行する(ステップS58)。
USB接続時での既登録対応関係設定処理(ステップS57)では、メインCPU64は、上記受信した固有IDと対応関係を有する有線コントローラNoを有線コントローラNo登録テーブルから読み出す。そして、仮想コントローラNo対応テーブルにおいて、物理コントローラNo(有線コントローラNo)を記憶するセルのうち最も先頭の空欄のセルに当該有線コントローラNoと固有IDを記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと有線コントローラNoと固有IDとが対応付けられた状態で記憶される。
USB接続時での新規登録及び対応関係設定処理(ステップS58)では、メインCPU64は、未だ対応関係が設定されていない任意の一つの有線コントローラNoと固有IDとを対応付けて有線コントローラNo登録テーブルに登録する。次に、固有IDに対応付けた有線コントローラNoと未だ対応関係が設定されていない任意の一つの仮想コントローラNoとを対応付けると共に、この仮想コントローラNoと有線コントローラNoと固有IDとの対応関係を仮想コントローラNo対応テーブルに対応付ける。
一方、BT通信の場合、メインCPU64は、BT通信モジュール79が受信した固有IDが有線コントローラNo登録テーブルに登録されており、且つ仮想コントローラNo対応テーブルにおいて仮想コントローラNo及び有線コントローラNoと対応付けられているか否かを判定し(ステップS59)、既に登録され、対応付けられている場合には既登録対応関係設定処理(ステップS60)を実行する。しかし、未だ登録されていないかまたは対応付けられていない場合には、新規登録及び対応関係設定処理を実行しない。すなわち、BT通信の場合の新規登録及び対応関係設定処理は、有線コントローラNo登録テーブルへの登録及び仮想コントローラNo対応テーブルにおける対応付けを条件に実行される。
BT接続時での既登録対応関係設定処理(ステップS60)では、メインCPU64は、BT通信モジュール79が受信した固有IDが無線コントローラNo登録テーブルに登録されているか否かを判定する。既に登録されている場合には、上記固有IDと対応関係を有する無線コントローラNoを無線コントローラNo登録テーブルから読み出す。そして、仮想コントローラNo対応テーブルにおいて、読み出した無線コントローラNoを、上記固有IDに対応する空欄の無線コントローラNoのセルに記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと物理コントローラNo(有線コントローラNo及び無線コントローラNo)と固有IDとが対応付けられた状態で記憶される。反対に、BT通信モジュール79が受信した固有IDが無線コントローラNo登録テーブルに未だ登録されていない場合には、未だ対応関係が設定されていない一つの無線コントローラNoと上記固有IDとを対応させて無線コントローラNo登録テーブルに登録する。そして、上記固有IDと対応関係を有する無線コントローラNoを無線コントローラNo登録テーブルから読み出す。さらに、仮想コントローラNo対応テーブルにおいて、読み出した無線コントローラNoを、上記固有IDに対応する空欄の無線コントローラNoのセルに記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと物理コントローラNo(有線コントローラNo及び無線コントローラNo)と固有IDとが対応付けられた状態で記憶される。すなわち、仮想コントローラNo対応テーブルにおいて、各仮想コントローラNoに対応付けられた有線コントローラNoと無線コントローラNoがそれぞれ示すコントローラ20は同一のものであり、固有IDも1つということになる。
そして、メインCPU64は、上記既登録対応関係設定処理または新規登録及び対応関係設定処理が完了したことを条件に、固有IDに対応付けた一つの仮想コントローラIDを、ゲーム等のアプリケーションプログラムの実行処理に関連付ける。具体的には、プレイヤーからコントローラ20への入力操作に従って、例えばゲーム上のキャラクタと、そのキャラクタを操作するコントローラ20との対応関係を設定する。
このように、装置本体10とコントローラ20との対応関係を仮想コントローラNoと固有IDとを対応付けることによって設定しているので、有線や無線という接続形式の影響を受けることなく、両者を対応付けることができる。
従って、例えば、ゲームを実行している途中で、有線から無線へ、または無線から有線へ接続形式を変更した場合であっても、実行中のゲームのキャラクタとコントローラ20との対応関係を特に変更することなく、そのままゲームを続けることができる。さらに、有線接続されたコントローラ20でゲームを実行している場合、装置本体10の複数あるコントローラポート11の一つに差し込まれた差込コネクタ12を他のコントローラポートに差し替えたとしても、同様にそのままゲームを続けることができる。
また、未登録のコントローラ20に対する新規登録及び対応関係設定処理は、有線接続(USB接続)時のみ許容され、無線通信(BT通信)時には禁止されるので、装置本体10に対してBT通信が可能な領域に無関係な第三者のコントローラが存在し、この無関係なコントローラからBT通信によって装置本体10が情報を受信した場合であっても、この装置本体10において新規登録及び対応関係設定処理は実行されず、意図しない無関係なコントローラが誤って登録されてしまうことを防止することができる。
また、未登録のコントローラ20であっても、装置本体10に対して有線または無線の新規登録処理を一度行うことにより、当該コントローラ20の固有IDと有線または無線コントロールNoとの対応関係が不揮発性のサブメモリ74に記憶されるので、コントローラ20を使用する際に装置本体10との間で有線または無線の登録処理を再度行う必要がない。
また、アプリケーションプログラムの開発者にとっては、プログラムの作成に際し、接続形式を考慮することなく、仮想コントローラNoとの対応付けのみを考慮すればよいので、プログラムの作成作業の煩雑化を招くこともない。
さらに、有線接続を前提とした従来のアプリケーションプログラムに対しても、コントローラポートにポート番号に代えて仮想コントローラNoを使用することにより、上記従来のアプリケーションプログラムにおいてもコントローラ20の対応付けを行うことができる。
〔未登録コントローラの登録及び対応付け(有線)処理の説明〕
装置本体10に対して未だ一度も使用されていないコントローラ20(以下、未登録のコントローラ20と称する)により通信を行う場合(例えば、コントローラ20を購入後、初めて使用する場合など)、プレイヤーは、まずコントローラ20の登録及び対応付け(有線)処理を行う必要がある。
この登録及び対応付け(有線)処理は、上述のように、有線接続(USB接続)を条件として実行される。すなわち、装置本体10と未登録のコントローラ20とがUSB接続されると、図8に示すように、通信準備処理が完了した後、コントローラ20から装置本体10へ当該コントローラ20の固有IDが送信される。同様に装置本体10からコントローラ20へも当該装置本体10の固有IDが送信される。
装置本体10は、受信した固有IDが有線コントローラNo登録テーブルに既に登録されているか否かを判定する(図12のステップS56)。ここでは、未登録のコントローラ20であるため、有線コントローラNo登録テーブルに未だ登録されてないと判定され、装置本体10は、有線コントローラNoを固有IDに割り当てる登録処理を実行する(ステップS10)。具体的には、図12のステップS58の新規登録及び対応関係設定処理を実行し、固有IDに有線コントローラNoを割り当て、有線コントローラNo登録テーブルに、これら有線コントローラNoと固有IDとを登録する。同様に、コントローラ20は、受信した装置本体10の固有IDをサブメモリ91に登録する(ステップS12)。
次に、装置本体10は、仮想コントローラNoと有線コントローラNoと固有IDとを対応付ける処理(ステップS11)を実行する。具体的には、仮想コントローラNo対応テーブルにおいて、物理コントローラNo(有線コントローラNo)を記憶するセルのうち最も先頭の空欄のセルに当該有線コントローラNoと固有IDを記憶させる。これにより、仮想コントローラNo対応テーブルには、仮想コントローラNoと有線コントローラNoと固有IDとが対応付けられた状態で記憶される。
これにより、コントローラ20の登録及び対応付け(有線)処理が完了する。そして、装置本体10またはコントローラ20が電源オフされると仮想コントローラ対応Noテーブルに対応付けられた対応関係は解消されるが、物理コントローラNo登録テーブルの記憶内容は解消されない。また、ユーザ操作による解消は当該対応関係及び当該記憶内容いずれも可能である。
なお、USB接続を維持したまま、ゲーム等のアプリケーションプログラムを実行する場合には、後述する次の処理(固有ID及び物理コントローラNoに対応付けた一つの仮想コントローラNoを、ゲーム等のアプリケーションプログラムの実行処理に関連付ける処理)へ移行する。
〔有線及び無線共に既登録及び対応付け済のコントローラによる通信開始時の処理の説明〕
装置本体10に対して既に有線及び無線共に登録処理及び対応付け処理が行われたコントローラ20(以下、有線及び無線共に既登録及び対応付け済のコントローラ20と称する)により通信を開始すると、図9に示すように、USB接続による通信またはBT通信が開始し、所定の通信準備処理が完了した後、コントローラ20から装置本体10へ当該コントローラ20の固有IDが送信される。同様に装置本体10からコントローラ20へも当該装置本体10の固有IDが送信される。装置本体10は、受信した固有IDの登録状態及び対応付け状態を有線及び無線共に判定し(ステップS21−1)、有線及び無線共に登録及び対応付けが完全に終了しているときは、固有IDに対応する物理コントローラNoと仮想コントローラNoとの対応関係、及び対応する発光色を示す情報を、仮想コントローラNo対応テーブルから読み出す(ステップS21−2)。ここでは、有線及び無線共に既登録及び対応付け済のコントローラ20であるため、このステップS21−2の処理が実行される。同様にコントローラ20も、受信した装置本体10の固有IDがサブメモリ91に登録されているか否かを判定する(ステップS21−2)。この判定についても、既登録の装置本体10であるため、処理を継続する。
具体的には、USB接続及びBT通信の双方において、装置本体10は、受信したコントローラ20の固有IDが有線コントローラNo登録テーブルに登録されているか否か、及び仮想コントローラ対応テーブルにおいて対応付けられているか否かを判定する。
次に、装置本体10は、受信した固有IDに対応する仮想コントローラNoまたは仮想コントローラNoに対応する発光色の情報を仮想コントローラNo対応テーブルから読み出し、読み出した仮想コントローラNoまたは発光色の情報をコントローラ20へ送信する。コントローラ20は、受信した仮想コントローラNoまたは発光色の情報をメインメモリ82に記憶させる。仮想コントローラNoまたは発光色の情報はコントローラ20が電源オフされると解消されるが、ユーザ操作による解消または変更も可能である。
コントローラ20では、装置本体10から受信した仮想コントローラNoまたは発光色の情報に基づいて、CPU81が表示部(セグメント表示器またはLED)21の制御を行う(ステップS22)。セグメント表示器の場合は、コントローラ20の表示部21が、上記仮想コントローラNoを数値データとして表示する。またLEDの場合は、コントローラ20の表示部21が、上記仮想コントローラNoに対応する色で発光する。例えば、図5〜図7に示すように各テーブルが設定されている場合、固有ID「C−02」を有するコントローラ20の表示部21は「赤」に、固有ID「C−03」を有するコントローラ20の表示部21は「黄」に、固有ID「C−04」を有するコントローラ20の表示部21は「青」に、固有ID「C−01」を有するコントローラ20の表示部21は「黒」に、それぞれ発光する。
なお、本実施形態では、表示部21がLEDの場合は、装置本体10の仮想コントローラNo対応テーブルに発光色の情報を対応付けておき、仮想コントローラNoに対応する発光色の情報を装置本体10からコントローラ20へ送信しているが、仮想コントローラNoとこれに対応する発光色の情報をコントローラ20のサブメモリ91に予め対応付けておき、仮想コントローラNoを装置本体10からコントローラ20へ送信してもよい。
また、別の実施形態として、コントローラ20に対して所定の入力が行われた際に、コントローラ20のUSB通信モジュール88またはBT通信モジュール89が装置本体10へ画面表示要求信号を送信してもよい。この所定の入力の一例として、当該別の実施形態では、ホームボタン52と他の一つのキー(例えば、「×」ボタン46)とを同時に押下する操作が設定されている。
その後、装置本体10では、USB通信モジュール78またはBT通信モジュール79が上記特定処理実行指示信号を受信すると、メインCPU64がGPU68へ画像表示出力指示信号を出力し、GPU68は、上記発光色及び仮想コントローラNoをモニタ装置100の画像表示部101へ表示させる処理を実行する(ステップS23)。例えば、図5〜図7に示すように各テーブルが設定されている場合、固有ID「C−02」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「赤」色で仮想コントローラNo「V−01」を表示し、固有ID「C−03」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「黄」色で仮想コントローラNo「V−02」を表示し、固有ID「C−04」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「青」色で仮想コントローラNo「V−03」を表示し、固有ID「C−01」を有するコントローラ20に対し上記所定の入力が行われた場合には画像表示部101に「黒」色で仮想コントローラNo「V−04」を表示する。
また、上記発光色及び仮想コントローラNoをモニタ装置100の画像表示部101へ表示させる処理は、通信開始時に限定して実行されるものではない。すなわち、仮想コントローラNoが関連付けられたアプリケーションプログラムの実行中に、当該仮コントローラNoを保持するコントローラ20のホームボタン52と「×」ボタン46とが同時に押下され、このボタン操作に応じた特定処理実行指示信号を装置本体10が受信したときにも、上記処理が実行される。この場合、発光色及び仮想コントローラNoは、実行中のアプリケーションプログラムの画面に重ねて表示することが好ましい。
これにより、プレイヤーは、自己が使用しているコントローラ20の仮想コントローラNoを、任意のタイミングでモニタ装置100の画像表示部101に表示させて視ることができる。
そして、メインCPU64は、有線及び無線共に受信した固有IDの登録及び対応付けが完了していることを条件に、プレイヤーからコントローラ20への入力操作に従って、固有ID及び物理コントローラNoに対応付けた一つの仮想コントローラNoを、ゲーム等のアプリケーションプログラムの実行処理に関連付ける。このとき、プレイヤーは、自己が操作するコントローラ20の表示部21の仮想コントローラNoまたは発光色やモニタ装置100の画像表示部101に表示された発光色及び仮想コントローラNoを視認しながら、例えばゲーム上のキャラクタにコントローラ20を対応付けることができるので、コントローラ20とアプリケーションプログラムとの関連付け(例えば、コントローラ20とキャラクタとの対応付け)を容易且つ確実に行うことができる。
なお、図8に示す未登録コントローラの登録及び対応付け(有線)処理においても、新規登録及び対応関係設定処理の後に、上記仮想コントローラNoを報知するためのコントローラ20の表示部21の発光制御処理や、モニタ装置100の画像表示部101への表示制御を実行してもよい。以上のように、装置本体10と各コントローラ20との間の互いの固有IDの登録については不揮発性のサブメモリ74、サブメモリ91に記憶させ、仮想コントローラNoと物理コントローラNoとの対応付けについては揮発性のメインメモリ65、82に記憶させる。これにより、例えば、自分が持つコントローラ20を友人宅に持ち出した場合、友人が持つ装置本体10との間で互いに固有IDを登録し、仮想コントローラNoと物理コントローラNoとの対応付けを行うことにより、次回から固有IDの登録が不要になる。
〔BT通信中のバッテリ監視処理の説明〕
図10に示すように、BT通信中において、コントローラ20では、CPU81がバッテリ83の蓄電量を定期的に算出し、この蓄電量を示す情報(蓄電量情報)をBT通信モジュール89が装置本体10へ都度送信する。なお、ここでは、BT通信中におけるバッテリ監視処理について説明しているが、CPU81は、接続形式によらずバッテリ83の蓄電量を定期的に算出しており、USB接続の場合、蓄電量情報はUSB通信モジュール88によって装置本体10へ都度送信される。
そして、例えば仮想コントローラNoが関連付けられたアプリケーションプログラムの実行中などに、当該仮コントローラNoを保持するコントローラ20のホームボタン52と「○」ボタン45とが同時に押下され、このボタン操作に応じた特定処理実行指示信号を装置本体10が受信すると、装置本体10はバッテリ残量の表示処理を開始する。
このバッテリ残量の表示処理において、装置本体10では、BT通信モジュール79が受信した蓄電量情報に基づいて、メインCPU64がGPU68へ蓄電量表示出力指示信号を出力し、GPU68は、上記蓄電量情報に基づき、バッテリ83の蓄電量を数値表示やグラフ表示やキャラクタ表示等によりモニタ装置100の画像表示部101へ表示させる処理を実行する(ステップS31)。また、バッテリ残量に関する表示は、蓄電量が所定の閾値以下であるときに限って実行される充電不足の警告表示であってもよい。なお、上記バッテリ残量に関する表示は、実行中のアプリケーションプログラムの画面に重ねて表示することが好ましい。この場合、バッテリ残量に関する情報をアプリケーションプログラム側に提供することにより、アプリケーションプログラムによってバッテリ残量に関する表示を行わせることもできる。また、バッテリ残量の表示処理を、予め設定された条件の成立(例えば、所定の入力や所定時間の経過など)によって終了させてもよい。
これにより、プレイヤーは、バッテリ83の蓄電量に関する表示を、任意のタイミングでモニタ装置100の画像表示部101に表示させて視ることができる。すなわち、プレイヤーは、蓄電量が低下してBT通信による情報の送受信が困難となる可能性があることを、任意に且つ容易に認識することができる。
そして、このような場合、プレイヤーはUSB接続を行う。USB接続が行われると、所定の通信準備処理が完了した後、コントローラ20と装置本体10との間で固有IDが互いに送信され、装置本体10は、図9のステップS21−1と同様の処理を実行する(ステップS32−1)。すなわち、有線及び無線共に受信した固有IDの登録及び対応付けが完了していることを条件に、BT通信からUSB接続による通信へ切り替える。この切り替えの前後において、固有IDと仮想コントローラNoとの対応関係は維持されるため、プレイヤーは同じコントローラ20をそのまま使用して、アプリケーションプログラムの実行を継続して行うことができる。また、USB接続前にモニタ装置100の画像表示部101に表示されていた表示が充電不足の警告表示であった場合には、USB接続後に当該表示は消去される。同様にコントローラ20も、受信した装置本体10の固有IDがサブメモリ91に登録されているか否かを判定する(ステップS32−2)。
USB接続時には、装置本体10は、コントローラ20へ駆動電源を供給すると共に、バッテリ83を充電する(ステップS33)。このバッテリ83の充電時においても、コントローラ20では、CPU81がバッテリ83の蓄電量を定期的に算出し、蓄電量情報をUSB通信モジュール88が装置本体10へ都度送信する。
装置本体10では、USB通信モジュール78が受信した蓄電量情報に基づいて、GPU68がバッテリ83の蓄電量を数値表示等を更新して表示させる(ステップS34)。
プレイヤーは、モニタ装置100の画像表示部101に表示されたバッテリ83の蓄電量に関する表示を視ることによって、蓄電量が増大してBT通信による情報の送受信が長時間可能となったことを容易に認識することができる。
そして、プレイヤーは必要に応じてUSB接続を解除することにより、BT通信状態に復帰させることができる。
なお、本実施形態では、コントローラ20のホームボタン52と「○」ボタン45とが同時に押下されるという所定の入力を条件としてバッテリ残量の表示処理を実行しているが、このような所定の入力を条件とせずに、バッテリ残量の表示処理を行ってもよい。一例として、バッテリ残量が予め定めた閾値以下となったことを条件にバッテリ残量の表示処理を実行することが挙げられる。
〔BT通信中のRSSIの監視処理の説明〕
図11に示すように、装置本体10は、RSSIの監視処理を定期的に実行し、無線通信時の装置本体10とコントローラ20との間の電界強度を定期的に検出する。
そして、例えば仮想コントローラNoが関連付けられたアプリケーションプログラムの実行中などに、当該仮コントローラNoを保持するコントローラ20のホームボタン52と「△」ボタン48とが同時に押下され、このボタン操作に応じた特定処理実行指示信号を装置本体10が受信すると、装置本体10は電界強度の表示処理を開始する。
電界強度の表示処理において、GPU68は、上記検出された電界強度を、数値表示やグラフ表示やキャラクタ表示等によりモニタ装置100の画像表示部101へ表示させる処理を実行する(ステップS41)。また、電界強度に関する表示は、電界強度が所定の閾値以下であるときに限って実行されるBT通信不良の警告表示であってもよい。なお、上記電界強度に関する表示は、実行中のアプリケーションプログラムの画面に重ねて表示することが好ましい。この場合、電界強度に関する情報をアプリケーションプログラム側に提供することにより、アプリケーションプログラムによって電界強度に関する表示を行わせることもできる。また、電界強度の表示処理を、予め設定された条件の成立(例えば、所定の入力や所定時間の経過など)によって終了させてもよい。
プレイヤーは、電界強度に関する表示を、任意のタイミングでモニタ装置100の画像表示部101に表示させて視ることができる。すなわち、プレイヤーは、電界強度が低下してBT通信による情報の送受信が困難となっていることを、任意に且つ容易に認識することができる。
上記不都合は、プレイヤーがコントローラ20を装置本体10に近づけることによって解消される。このような対処により、画像表示部101における電界表示に関する表示が更新され、プレイヤーは、BT通信が適正に行われ得る電界強度であることを容易に視認することができる。
なお、本実施形態では、コントローラ20のホームボタン52と「△」ボタン48とが同時に押下されるという所定の入力を条件として電界強度の表示処理を実行しているが、このような所定の入力を条件とせずに、電界強度の表示処理を行ってもよい。一例として、電界強度が予め定めた閾値以下となったことを条件に電界強度の表示処理を実行することが挙げられる。
また、上述の実施の形態の説明では、本発明を装置本体とそのコントローラに適用することとしたが、これは装置本体とそのコントローラ以外に適用してもよい。
最後に、上述の各実施の形態の説明は本発明の一例である。このため、本発明は上述の各実施の形態に限定されることはなく、本発明の技術的思想を逸脱しない範囲であれば、上述の実施の形態以外であっても種々の変更が可能であることは勿論である。
本発明は、ユーザから操作される操作端末と、この操作端末と情報処理装置との間の有線及び無線通信を実現する様々な情報通信システムに適用することができる。
10 装置本体
20 コントローラ
21 表示部
64 メインCPU
65 メインメモリ