(57)【要約】【課題】ソフトウェアが更新されなかった入力装置に対しては、ユーザがメニューなどを操作して改めて更新を行なう必要があり、ユーザビリティを低下させる可能性がある。【解決手段】入力装置が有線または無線で接続される情報処理装置が提供される。情報処理装置は、入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行する実行手段と、ネットワークを介してサーバから入力装置のファームウェアの更新データを取得する取得手段と、アプリケーションプログラムの実行中に、アプリケーションプログラムからの要求に応じて、入力装置のファームウェアを更新させる処理を実行する更新手段とを含む。実行手段は、更新手段によるファームウェアの更新前にアプリケーションプログラムの実行を中断するとともに、更新手段によるファームウェアの更新が完了したことに応じてアプリケーションプログラムの実行を再開する。【選択図】図１０
2019003557.tif 000002
【特許請求の範囲】
【請求項１】
入力装置が有線または無線で接続される情報処理装置であって、
前記入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行する実行手段と、
ネットワークを介してサーバから前記入力装置のファームウェアの更新データを取得する取得手段と、
前記アプリケーションプログラムの実行中に、前記アプリケーションプログラムからの要求に応じて、前記入力装置のファームウェアを更新させる処理を実行する更新手段とを備え、
前記実行手段は、前記更新手段によるファームウェアの更新前に前記アプリケーションプログラムの実行を中断するとともに、前記更新手段によるファームウェアの更新が完了したことに応じて前記アプリケーションプログラムの実行を再開する、情報処理装置。
【請求項２】
前記更新手段は、前記アプリケーションプログラムからの要求に応じて、前記入力装置のファームウェアのバージョン情報を取得する、請求項１に記載の情報処理装置。
【請求項３】
前記更新手段は、前記入力装置のファームウェアのバージョン情報が前記アプリケーションプログラムから要求される条件を満たしているか否かを判定する、請求項２に記載の情報処理装置。
【請求項４】
前記入力装置のファームウェアのバージョン情報を応答するＡＰＩ（Application Programming Interface）をさらに備える、請求項２または３に記載の情報処理装置。
【請求項５】
前記取得手段は、前記情報処理装置のシステムプログラムの更新データとともに、前記入力装置のファームウェアの更新データを取得する、請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記更新手段は、前記情報処理装置のシステムプログラムを更新させる処理を実行するときに、前記情報処理装置に接続されている入力装置のファームウェアを更新させる処理も実行する、請求項５に記載の情報処理装置。
【請求項７】
前記更新手段は、前記実行手段での前記アプリケーションプログラムの実行に応じて、前記情報処理装置のシステムプログラムのバージョン情報を取得するとともに、前記情報処理装置のシステムプログラムのバージョン情報が前記アプリケーションプログラムの実行に必要な条件を満たしていない場合には、前記情報処理装置のシステムプログラムを更新させる処理を実行する、請求項６に記載の情報処理装置。
【請求項８】
前記情報処理装置は、他の情報処理装置と無線で通信するための無線通信手段をさらに備えており、
前記更新手段は、前記情報処理装置が前記他の情報処理装置と無線で通信していない場合に、ファームウェアを更新させる処理を実行する、請求項１〜７のいずれか１項に記載の情報処理装置。
【請求項９】
前記更新手段は、前記情報処理装置のバッテリの残量が予め定められた条件を満たしており、かつ、前記入力装置のバッテリの残量が予め定められた条件を満たしている場合に、前記入力装置のファームウェアを更新させる処理を実行する、請求項１〜８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記情報処理装置には、複数の前記入力装置が有線または無線で接続可能になっており、
前記更新手段は、前記アプリケーションプログラムで使用される入力装置のファームウェアを更新させる処理を実行するとともに、前記アプリケーションプログラムでの使用の有無とは独立して、前記情報処理装置に接続されている他の入力装置のファームウェアも更新させる処理を実行する、請求項１〜９のいずれか１項に記載の情報処理装置。
【請求項１１】
前記実行手段は、前記アプリケーションプログラムとして、ゲームのアプリケーションプログラムを実行する、請求項１〜１０のいずれか１項に記載の情報処理装置。
【請求項１２】
入力装置と、
前記入力装置が有線または無線で接続される情報処理装置とを備え、
前記情報処理装置は、
前記入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行する実行手段と、
ネットワークを介してサーバから前記入力装置のファームウェアの更新データを取得する取得手段と、
前記アプリケーションプログラムの実行中に、前記アプリケーションプログラムからの要求に応じて、前記入力装置のファームウェアを更新させる処理を実行する更新手段とを備え、
前記実行手段は、前記更新手段によるファームウェアの更新前に前記アプリケーションプログラムの実行を中断するとともに、前記更新手段によるファームウェアの更新が完了したことに応じて前記アプリケーションプログラムの実行を再開する、情報処理システム。
【請求項１３】
入力装置が有線または無線で接続される情報処理装置において実行される情報処理方法であって、
前記入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行するステップと、
ネットワークを介してサーバから前記入力装置のファームウェアの更新データを取得するステップと、
前記アプリケーションプログラムの実行中に、前記アプリケーションプログラムからの要求に応じて、前記入力装置のファームウェアを更新させる処理を実行するステップと、
前記入力装置のファームウェアの更新前に前記アプリケーションプログラムの実行を中断するステップと、
前記入力装置のファームウェアの更新が完了したことに応じて前記アプリケーションプログラムの実行を再開するステップとを備える、情報処理方法。
【請求項１４】
入力装置が有線または無線で接続されるコンピュータで実行される情報処理プログラムであって、前記情報処理プログラムは前記コンピュータに
ネットワークを介してサーバから前記入力装置のファームウェアの更新データを取得するステップと、
前記入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行している状態において、前記アプリケーションプログラムからの要求に応じて、前記入力装置のファームウェアを更新させる処理を実行するステップと、
前記入力装置のファームウェアの更新前に前記アプリケーションプログラムの実行を中断するステップと、
前記入力装置のファームウェアの更新が完了したことに応じて前記アプリケーションプログラムの実行を再開するステップとを実行させる、情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理装置、情報処理システム、情報処理方法、および、情報処理プログラムに関する。
【背景技術】
【０００２】
一般的に、各種の情報処理装置で実行されるソフトウェアは、必要に応じて更新できるようになっている。例えば、特開２０１６−００１３９１号公報（特許文献１）は、効率的にソフトウェアをアップデートできる環境を実現するための構成を開示する。より具体的には、端末装置がソフトウェアをアップデート可能な状態にあることがユーザに通信され、ユーザの確認を受けて、ソフトウェアアップデートの実行指示が送信される情報処理装置を開示する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−００１３９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
１または複数の入力装置が有線または無線で接続される情報処理装置などを想定されると、ソフトウェアが更新可能な状態であったとしても、その更新は必ずしも実行されるとは限らない。例えば、更新可能な状態になったときに接続されていなかった入力装置、更新可能な状態になったときに十分なバッテリの残量を有していなかった入力装置、および、更新可能な状態になった後に新たに購入した入力装置などについては、更新対象とはならない。
【０００５】
このような場合において、ソフトウェアが更新されなかった入力装置に対しては、ユーザがメニューなどを操作して改めて更新を行なう必要があり、ユーザビリティを低下させる可能性があった。本技術は、上述したような課題を解決することを一つの目的とする。
【課題を解決するための手段】
【０００６】
ある実施の形態に従えば、入力装置が有線または無線で接続される情報処理装置が提供される。情報処理装置は、入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行する実行手段と、ネットワークを介してサーバから入力装置のファームウェアの更新データを取得する取得手段と、アプリケーションプログラムの実行中に、アプリケーションプログラムからの要求に応じて、入力装置のファームウェアを更新させる処理を実行する更新手段とを含む。実行手段は、更新手段によるファームウェアの更新前にアプリケーションプログラムの実行を中断するとともに、更新手段によるファームウェアの更新が完了したことに応じてアプリケーションプログラムの実行を再開する。
【０００７】
この実施の形態によれば、情報処理装置とともに入力装置が使用されている場合に、実行されるアプリケーションから必要に応じて、ファームウェアの更新が実行されるので、ユーザが手動でファームウェアを更新する必要がない。そのため、ユーザから見れば、情報処理装置以外の入力装置などの周辺装置に対するファームウェアのバージョン管理の手間を削減できる。
【０００８】
また、この実施の形態によれば、入力装置のファームウェアの更新前に実行中のアプリケーションプログラムが中断され、入力装置のファームウェアの更新後に中断されたアプリケーションプログラムが再開される。そのため、ユーザから見れば、入力装置のファームウェアを更新するために、実行中のアプリケーションプログラムを終了する必要がなく、ファームウェアの更新に係る不便性が生じない。
【０００９】
更新手段は、入力装置がアプリケーションプログラムの実行に必要な条件を満たしていない場合に、入力装置のファームウェアを更新させる処理を実行してもよい。このような構成を採用することで、アプリケーションプログラムの実行毎に、入力装置のファームウェアを更新するような処理が実行されることを回避でき、必要なときに限って、入力装置のファームウェアの更新処理を実行できる。
【００１０】
更新手段は、アプリケーションプログラムからの要求に応じて、入力装置のファームウェアのバージョン情報を取得してもよい。このような構成を採用することで、実行されるアプリケーションの内容などに応じて異なる、入力装置に要求される条件に応じて、入力装置のファームウェアの更新処理を合理的に実行できる。
【００１１】
更新手段は、入力装置のファームウェアのバージョン情報がアプリケーションプログラムから要求される条件を満たしているか否かを判定してもよい。このような構成を採用することで、バージョン情報という共通の指標で要求される条件が満たされているか否かを判定でき、更新要否の判定処理を簡素化できる。
【００１２】
情報処理装置は、入力装置のファームウェアのバージョン情報を応答するＡＰＩ（Application Programming Interface）をさらに含んでいてもよい。このような構成を採用することで、情報処理装置で実行されるアプリケーションの各々は、共通的にＡＰＩを呼び出すことで、入力装置のファームウェアのバージョン情報を取得でき、この取得したバージョン情報に基づいて、適切な実行環境であるか否かを判定できる。
【００１３】
取得手段は、情報処理装置のシステムプログラムの更新データとともに、入力装置のファームウェアの更新データを取得してもよい。このような構成を採用することで、それぞれの更新データを別々に取得する場合に比較して、バージョン管理などをより容易に実現できる。
【００１４】
更新手段は、情報処理装置のシステムプログラムを更新させる処理を実行するときに、情報処理装置に接続されている入力装置のファームウェアを更新させる処理も実行してもよい。このような構成を採用することで、何らかの原因でファームウェアを更新できていない入力装置に対しても、ファームウェアを更新できる。
【００１５】
更新手段は、実行手段でのアプリケーションプログラムの実行に応じて、情報処理装置のシステムプログラムのバージョン情報を取得するとともに、情報処理装置のシステムプログラムのバージョン情報がアプリケーションプログラムの実行に必要な条件を満たしていない場合には、情報処理装置のシステムプログラムを更新させる処理を実行してもよい。このような構成を採用することで、実行されるアプリケーションの内容などに応じて異なる条件に応じて、情報処理装置のシステムプログラムの更新処理を合理的に実行できる。
【００１６】
情報処理装置は、他の情報処理装置と無線で通信するための無線通信手段をさらに有していてもよい。更新手段は、情報処理装置が他の情報処理装置と無線で通信していない場合に、ファームウェアの更新をさせる処理を実行するようにしてもよい。このような構成を採用することで、入力装置のファームウェアを更新するにあたって、当該更新が失敗する可能性を低減させることができ、これによって、入力装置のファームウェアをより確実に更新できる。
【００１７】
更新手段は、情報処理装置のバッテリの残量が予め定められた条件を満たしており、かつ、入力装置のバッテリの残量が予め定められた条件を満たしている場合に、入力装置のファームウェアを更新させる処理を実行してもよい。このような構成を採用することで、情報処理装置側および入力装置側のそれぞれについて、当該更新が失敗する可能性を低減させることができ、これによって、入力装置のファームウェアをより確実に更新できる。
【００１８】
情報処理装置には、複数の入力装置が有線または無線で接続可能になっていてもよい。更新手段は、アプリケーションプログラムで使用される入力装置のファームウェアを更新させる処理を実行するとともに、アプリケーションプログラムでの使用の有無とは独立して、情報処理装置に接続されている他の入力装置のファームウェアも更新させる処理を実行してもよい。このような構成を採用することで、情報処理装置に接続されているすべての入力装置のファームウェアを一括して更新できる。
【００１９】
実行手段は、アプリケーションプログラムとして、ゲームのアプリケーションプログラムを実行してもよい。ゲームのアプリケーションプログラムは、ゲーム内容に応じて、要求される条件が大きく異なることがあるが、このような構成を採用することで、このような要求にも応えることができる。
【００２０】
別の実施の形態に従う情報処理システムは、入力装置と、入力装置が有線または無線で接続される情報処理装置とを含む。情報処理装置は、入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行する実行手段と、ネットワークを介してサーバから入力装置のファームウェアの更新データを取得する取得手段と、アプリケーションプログラムの実行中に、アプリケーションプログラムからの要求に応じて、入力装置のファームウェアを更新させる処理を実行する更新手段とを含む。実行手段は、更新手段によるファームウェアの更新前にアプリケーションプログラムの実行を中断するとともに、更新手段によるファームウェアの更新が完了したことに応じてアプリケーションプログラムの実行を再開する。この構成によれば、上述の情報処理装置と同様の利点が得られる。
【００２１】
別の実施の形態に従えば、入力装置が有線または無線で接続される情報処理装置において実行される情報処理方法が提供される。情報処理方法は、入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行するステップと、ネットワークを介してサーバから入力装置のファームウェアの更新データを取得するステップと、アプリケーションプログラムの実行中に、アプリケーションプログラムからの要求に応じて、入力装置のファームウェアを更新させる処理を実行するステップと、入力装置のファームウェアの更新前にアプリケーションプログラムの実行を中断するステップと、入力装置のファームウェアの更新が完了したことに応じてアプリケーションプログラムの実行を再開するステップとを含む。この構成によれば、上述の情報処理装置と同様の利点が得られる。
【００２２】
別の実施の形態に従えば、入力装置が有線または無線で接続されるコンピュータで実行される情報処理プログラムが提供される。情報処理プログラムはコンピュータに、ネットワークを介してサーバから入力装置のファームウェアの更新データを取得するステップと、入力装置が受付けたユーザ操作に基づいてアプリケーションプログラムを実行している状態において、アプリケーションプログラムからの要求に応じて、入力装置のファームウェアを更新させる処理を実行するステップと、入力装置のファームウェアの更新前にアプリケーションプログラムの実行を中断するステップと、入力装置のファームウェアの更新が完了したことに応じてアプリケーションプログラムの実行を再開するステップとを実行させる。この構成によれば、上述の情報処理装置と同様の利点が得られる。
【発明の効果】
【００２３】
本技術によれば、有線または無線で接続される入力装置のファームウェアの更新についてのユーザビリティを向上させることができる。
【図面の簡単な説明】
【００２４】
【図１】本実施の形態に従うシステムの全体構成を示す模式図である。
【図２】本実施の形態に従う本体装置のハードウェア構成の一例を示すブロック図である。
【図３】本実施の形態に従う入力装置のハードウェア構成の一例を示すブロック図である。
【図４】本実施の形態に従うシステムにおいてサーバから提供される更新データセットの一例を示す模式図である。
【図５】図４に示す更新データセットを用いた更新状態の一例を説明するための図である。
【図６】本実施の形態に従うシステムにおける入力装置のファームウェアの更新処理に係る状態遷移の一例を示す模式図である。
【図７】本実施の形態に従う本体装置がアプリケーションプログラムの実行中に入力装置のファームウェアを更新する場合の処理手順を示すフローチャートである。
【図８】本実施の形態に従う本体装置がＨＯＭＥメニュー画面を表示している状態において入力装置のファームウェアの更新処理を実行する場合の処理手順を示すフローチャートである。
【図９】図７および図８に示す更新処理の詳細の処理手順を示すフローチャートである。
【図１０】本実施の形態に従う本体装置において実現される機能的構成の一例を示す模式図である。
【図１１】本実施の形態に従う本体装置におけるソフトウェア実装の一例を示す模式図である。
【図１２】本実施の形態に従う本体装置がシステムプログラムを更新する場合の処理手順を示すフローチャートである。
【図１３】本実施の形態に従うゲーム装置が提供するコントローラ使用の設定支援画面の一例を示す模式図である。
【発明を実施するための形態】
【００２５】
本実施の形態について、図面を参照しながら詳細に説明する。なお、図中の同一または相当部分については、同一符号を付してその説明は繰り返さない。
【００２６】
［Ａ．システム構成］
まず、本実施の形態に従う情報処理装置を含むシステムの全体構成について説明する。図１は、本実施の形態に従うシステム１の全体構成を示す模式図である。図１を参照して、システム１は、１または複数のゲーム装置２と、サーバ２００とを含む。
【００２７】
以下の説明においては、情報処理装置としてゲーム装置（ゲーム専用機）を例に説明するが、これに限らず、例えば、パーソナルコンピュータ、スマートフォン、タブレット、携帯電話、その他のスマートデバイスといった、ゲームを実行可能な任意の情報処理装置に適用可能である。
【００２８】
図１には、説明の便宜上、２つのゲーム装置２Ａ，２Ｂを例示するが、システム１は、１つのゲーム装置２だけで構成されてもよいし、より多くのゲーム装置２を含んでいてもよい。
【００２９】
ゲーム装置２の各々には、１または複数の入力装置が有線または無線で接続される。図１に示す例においては、ゲーム装置２は、本体装置４と、左コントローラ６と、右コントローラ８とを含む。本体装置４は、コンピュータの一種であり、表示部の一例としてのディスプレイ１２を有している。
【００３０】
本体装置４が情報処理装置の一例に相当し、左コントローラ６および右コントローラ８が入力装置の一例に相当する。本体装置４と左コントローラ６および／または右コントローラ８とを組み合わせたゲーム装置２は、情報処理システムとみなすこともできる。
【００３１】
左コントローラ６および右コントローラ８は、ユーザ操作を受付け、その受付けたユーザ操作を示す情報を本体装置４へ送信する。なお、本体装置４から左コントローラ６および右コントローラ８へデータが送信されることもある。
【００３２】
図１に示すゲーム装置２Ａにおいては、左コントローラ６および右コントローラ８は、本体装置４に装着された状態（以下、「装着状態」とも称す。）にある。装着状態においては、基本的には、本体装置４と左コントローラ６との間、および、本体装置４と右コントローラ８との間は、有線で接続される。
【００３３】
一方、ゲーム装置２Ｂにおいては、左コントローラ６および右コントローラ８は、本体装置４から外された状態（以下、「離脱状態」とも称す。）にある。離脱状態においては、本体装置４と左コントローラ６との間、および、本体装置４と右コントローラ８との間は、無線で接続される。
【００３４】
さらに、本体装置４には、別の入力装置として補助コントローラ１０が有線または無線で接続されてもよい。図１には、補助コントローラ１０が無線で本体装置４に接続される例を示す。
【００３５】
本体装置４は、入力装置である、左コントローラ６、右コントローラ８、および補助コントローラ１０のいずれかに対するユーザ操作に従って、システムプログラムおよび各種のアプリケーションプログラムを実行する。典型的には、本体装置４は、アプリケーションプログラムとして、ゲームのアプリケーションプログラムなどを実行する。
【００３６】
なお、ゲーム装置２の本体装置４と他のゲーム装置２の本体装置４との間で通信を可能にしてもよい。例えば、ゲーム装置２Ａの本体装置４とゲーム装置２Ｂの本体装置４との間を無線で接続してもよい。このような本体装置４同士の接続を「ローカル通信」とも称す。このようなローカル通信は、対戦ゲームや複数人でプレイするゲームなどに有効である。
【００３７】
本体装置４の各々は、さらに、ネットワーク２０を介してサーバ２００へアクセスが可能になっている。図１に示す例では、ネットワーク２０に接続されたアクセスポイント２２を介して、サーバ２００へアクセスする構成を示すが、これに限らず、任意の接続形態を採用できる。例えば、有線接続により、本体装置４とサーバ２００とを接続してもよいし、ＬＴＥ（Long Term Evolution）やＷｉＭＡＸといったモバイル通信を用いて、本体装置４とサーバ２００とを接続してもよい。
【００３８】
サーバ２００は、１または複数のプログラムをダウンロード可能に保持しており、本体装置４からの要求に応じて、あるいは、予め定められた条件が成立することに応じて、対象となるプログラムを本体装置４へ提供する。すなわち、本体装置４の各々は、サーバ２００から任意のプログラムをダウンロードすることができる。あるいは、サーバ２００が任意のプログラムを任意の本体装置４へプッシュ送信できるようにしてもよい。
【００３９】
以下の説明においては、一例として、本体装置４で利用されるプログラムを更新するためのデータ（以下、「更新データ」とも称す。）をサーバ２００が提供する構成について説明する。プログラムを更新する方法としては、現在のプログラムコードと更新後のプログラムコードとの差分のみを提供する形態、および、更新後のプログラムコード全体を提供する形態、などが存在する。本明細書において、「更新データ」との用語は、更新の形態によらず、プログラムの更新に必要な任意のデータを包含する。
【００４０】
以下の説明においては、更新対象となる本体装置４で利用されるプログラムの一例として、本体装置４の基本的な機能を提供するシステムプログラム（本体装置４で実行される）と、入力装置（左コントローラ６、右コントローラ８、補助コントローラ１０など）のファームウェアを想定する。なお、システムプログラムおよび入力装置のファームウェアに限定されることなく、任意のプログラムを更新対象にできる。
【００４１】
本明細書において、「ファームウェア」との用語は、入力装置を構成するハードウェアコンポーネントなどを制御するためのプログラムを包含する概念であり、特定のコード形態に限定されるものではない。例えば、「ファームウェア」は、アセンブリ言語で記述されたコードであってもよいし、ＢＩＯＳ（Basic Input/Output System）のようなプログラムであってもよいし、さらに、より高級な言語で記述されたプログラムであってもよい。
【００４２】
本明細書において、「アプリケーションプログラム」との用語は、情報処理装置のプロセッサで実行されるプログラムコードを包含する概念であり、「ファームウェア」とは区別される。「アプリケーションプログラム」は、大別して、「ユーザアプリケーションプログラム」（以下、「ユーザアプリケーション」とも略称する。）および「システムアプリケーションプログラム」（以下、「システムプログラム」とも略称する。）を含み得る。
【００４３】
「ユーザアプリケーション」は、ゲームアプリケーションや設定アプリケーションなどの個別に実行されるプログラムを包含する概念である。一方、「システムプログラム」は、ユーザが情報処理装置を操作するための基本的な機能を提供するとともに、「ユーザアプリケーション」の実行環境を提供するプログラムを包含する概念である。以下では、主として、「アプリケーションプログラム」として、「ユーザアプリケーション」（特に、ゲームのアプリケーションプログラム）を一例に説明するが、「ユーザアプリケーション」に限定されることなく、「システムプログラム」の実行過程においても、本願発明の技術的範囲に含まれ得る。
【００４４】
以下では、本体装置と入力装置との構成に着目して説明するが、本発明の技術思想は、本体装置と分離して使用可能な周辺装置に適用可能である。このような周辺装置としては、上述したコントローラなどの入力装置に加えて、スピーカやディスプレイなどの出力装置に及び得る。
【００４５】
［Ｂ．システム１を構成する各装置のハードウェア構成］
次に、本実施の形態に従うシステム１を構成する各装置のハードウェア構成の一例について説明する。
【００４６】
（ｂ１：本体装置４）
図２は、本実施の形態に従う本体装置４のハードウェア構成の一例を示すブロック図である。図２に示すコンポーネントは、例えば、電子部品として電子回路基板上に実装されてハウジング内に収納される。
【００４７】
本体装置４は、ゲーム処理を含めて各種処理を実行する実行モジュールに相当するＣＰＵ（Central Processing Unit）８１を有している。ＣＰＵ８１は、プロセッサの一例であり、アクセス可能な記憶部（具体的には、フラッシュメモリ８４などの内部記憶媒体、または、第１スロット２３もしくは第２スロット２４に装着される外部記憶媒体など）に格納されるプログラムを読み出して実行する。
【００４８】
本体装置４は、内蔵される記憶媒体の一例として、フラッシュメモリ８４およびＤＲＡＭ（Dynamic Random Access Memory）８５を有している。フラッシュメモリ８４は、主に、本体装置４で利用される各種のプログラムおよびデータを不揮発的に格納する。フラッシュメモリ８４が格納するプログラムおよびデータの一例として、システムプログラム１５０、ユーザアプリケーション１６０、および更新データセット２１０が含まれる。ＤＲＡＭ８５は、ＣＰＵ８１でのプログラム実行において用いられる各種のデータを一時的に格納する。
【００４９】
システムプログラム１５０は、一種のＯＳ（Operating System）のような役割を果たし、本体装置４における基本的な機能を提供するとともに、ユーザアプリケーションなどの実行環境を提供する。すなわち、システムプログラム１５０は、本体装置４が情報処理方法を実行するための情報処理プログラムに相当する。
【００５０】
本体装置４は、第１スロットインターフェイス（Ｉ／Ｆ）９１および第２スロットインターフェイス９２を有している。第１スロットインターフェイスは、第１スロット２３に接続され、ＣＰＵ８１の指示に応じて、第１スロット２３に装着された第１の種類の記憶媒体（例えば、ＳＤカード）に対するデータの読み出しおよび書込みを行なう。第２スロットインターフェイス９２は、第２スロット２４に接続され、ＣＰＵ８１の指示に応じて、第２スロット２４に装着された第２の種類の記憶媒体（例えば、専用メモリカード）に対するデータの読み出しおよび書込みを行なう。
【００５１】
本体装置４は、ネットワーク２０を介してサーバ２００などの外部装置（いずれも図１参照）と通信（具体的には、無線通信）するためのネットワーク通信部８２を有している。例えば、ネットワーク通信部８２は、Ｗｉ−Ｆｉの認証を受けた通信モジュールが用いられ、無線ＬＡＮを介して外部装置と通信を行なう。また、ネットワーク通信部８２は、他の本体装置４との通信（ローカル通信）を担当することもある。すなわち、ネットワーク通信部８２は、他の本体装置４と無線で通信するための無線通信機能を提供する。
【００５２】
別の実施形態として、本体装置４は、無線ＬＡＮに接続して通信を行なう機能に加えて（または、それに代えて）、モバイル通信網（すなわち、携帯電話通信網）に接続して通信を行なう機能を有していてもよい。
【００５３】
本体装置４は、左コントローラ６および／または右コントローラ８と無線通信を行なうためのコントローラ通信部８３を有している。本体装置４と各コントローラとの通信方式は任意であるが、例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）の規格に従った通信方式を採用できる。
【００５４】
ＣＰＵ８１は、左側端子１７、右側端子２１、および下側端子２７に接続される。ＣＰＵ８１は、左コントローラ６と有線通信を行なう場合、左側端子１７を介して左コントローラ６と間でデータを送受信する。また、ＣＰＵ８１は、右コントローラ８と有線通信を行なう場合、右側端子２１を介して右コントローラ８と間でデータを送受信する。ＣＰＵ８１は、図示しないクレードルと通信を行なう場合、下側端子２７を介してクレードルとの間でデータを送受信する。
【００５５】
本体装置４は、タッチパネル１３の制御を行なうためのタッチパネルコントローラ８６を有している。タッチパネルコントローラ８６は、タッチパネル１３からの信号に応じて、タッチ入力が行なわれた位置を示すデータを生成してＣＰＵ８１へ出力する。
【００５６】
ディスプレイ１２は、ＣＰＵ８１が各種処理の実行することで生成された画像、および／または、外部から取得した画像を表示する。
【００５７】
本体装置４は、コーデック回路８７およびスピーカ８８（具体的には、左スピーカおよび右スピーカ）を有している。コーデック回路８７は、スピーカ８８および音声入出力端子２５に対する音声データの入出力を制御する。
【００５８】
本体装置４は、電力制御部９７およびバッテリ９８を有している。電力制御部９７は、ＣＰＵ８１からの指令に基づいて、バッテリ９８から各コンポーネントへの電力供給を制御する。電力制御部９７は、電源ボタン２８に対する入力に応じて電力供給を制御する。
【００５９】
外部の充電装置（例えば、クレードル）が下側端子２７に接続され、下側端子２７を介して本体装置４に電力が供給される場合、バッテリ９８はその供給される電力により充電される。なお、本体装置４のバッテリ９８の充電容量は、左コントローラ６および右コントローラ８が有しているバッテリよりも充電容量が大きいことが好ましい。
【００６０】
（ｂ２：左コントローラ６および右コントローラ８（入力装置））
図３は、本実施の形態に従う入力装置のハードウェア構成の一例を示すブロック図である。図３には、左コントローラ６および右コントローラ８に関連する本体装置４のコンポーネントについても描いている。図２に示すコンポーネントは、例えば、電子部品として電子回路基板上に実装されてハウジング内に収納される。
【００６１】
左コントローラ６は、左コントローラ６の全体を制御する通信制御部１０１を有している。通信制御部１０１は、典型的には、マイクロプロセッサおよび通信モジュールを含んで構成される。通信制御部１０１は、端子４２を介した有線通信と、端子４２を介さない無線通信との両方をサポートする。
【００６２】
左コントローラ６は、フラッシュメモリ１０２を有している。フラッシュメモリ１０２にはファームウェア１０８が格納されており、通信制御部１０１のマイクロプロセッサがファームウェア１０８を実行することによって、左コントローラ６における各種処理を実行する。
【００６３】
左コントローラ６は、操作ボタン群１０３およびアナログスティック１０４を有している。操作ボタン群１０３およびアナログスティック１０４に対して行なわれたユーザ操作を示す情報は、所定周期で通信制御部１０１へ繰り返し送信される。
【００６４】
左コントローラ６には、さらに、各種のセンサ（例えば、加速度センサおよび角速度センサなど）が配置されていてもよい。この場合には、各センサにて検出された検出値を示す情報についても、所定周期で通信制御部１０１へ繰り返し送信される。
【００６５】
左コントローラ６には、さらに、付加機能部１０９を有している。付加機能部１０９は、左コントローラ６において、ユーザ操作の受付けに加えて、各種のセンシング機能、通信機能、およびその他の付加機能を提供するデバイスを含む。
【００６６】
付加機能部１０９は、例えば、静止画像または動画像を取得するためのカメラ、赤外線画像を取得するＩＲ（infrared）カメラ、スピーカ、マイク、非接触通信を行なうＮＦＣ（Near field radio communication）モジュール、ユーザに振動を与える振動子、感熱デバイス、発熱デバイスなどが挙げられる。付加機能部１０９としては、これらのデバイスに限らず、任意のデバイスを採用することができる。さらに、付加機能部１０９を事後的に装着するような形態であってもよい。
【００６７】
付加機能部１０９が提供する機能を十分に利用したい場合には、ファームウェア１０８を適宜更新することが想定されている。
【００６８】
左コントローラ６は、バッテリ１０６を含む電力供給部１０５を有している。電力供給部１０５は、左コントローラ６の各コンポーネントへの電力供給を制御する。バッテリ１０６は、左コントローラ６が本体装置４に装着されている場合において、端子１０７を介して本体装置４からの電力によって充電される。
【００６９】
右コントローラ８は、基本的には、上述した左コントローラ６と同様の構成を有している。すなわち、右コントローラ８は、通信制御部１１１と、ファームウェア１１８などを格納するフラッシュメモリ１１２と、操作ボタン群１１３と、アナログスティック１１４と、付加機能部１１９と、バッテリ１１６を含む電力供給部１１５とを有している。右コントローラ８の各コンポーネントについては、左コントローラ６に関して説明した対応するコンポーネントと同様の構成および機能を有しているので、詳細な説明は繰り返さない。
【００７０】
但し、操作ボタン群１１３および／またはアナログスティック１１４に対するユーザ操作に応じて出力されるデータの内容は、左コントローラ６の操作ボタン群１０３および／またはアナログスティック１０４に対する同一のユーザ操作に応じて出力されるデータの内容とは異なっていることもある。また、左コントローラ６の付加機能部１０９および右コントローラ８の付加機能部１１９には、互いに異なる機能が割当てられる場合もある。そのため、基本的には、右コントローラ８の各コンポーネントを制御するためのファームウェア１０８、および、左コントローラ６の各コンポーネントを制御するためのファームウェア１１８は、それぞれのコントローラに固有なものとして提供される。それに伴って、ファームウェア用の更新データもコントローラ毎に提供されることになる。
【００７１】
（ｂ３：補助コントローラ１０（入力装置））
補助コントローラ１０は、端子を介して本体装置４と通信する以外の機能は、左コントローラ６および右コントローラ８と同様の構成および機能を有しているので、詳細な説明は繰り返さない。
【００７２】
（ｂ４：サーバ２００）
サーバ２００は、任意のコンピュータを用いて実現される。サーバ２００は、例えば、本体装置４の種類やバージョンなどに応じた更新データを保持するとともに、必要に応じて、本体装置４へ提供するようなストレージを有している。
【００７３】
［Ｃ．更新データ］
次に、本実施の形態に従うシステム１において、サーバ２００から提供される更新データについて説明する。
【００７４】
図４は、本実施の形態に従うシステム１においてサーバ２００から提供される更新データセット２１０の一例を示す模式図である。図４を参照して、更新データセット２１０は、本体装置４で実行されるシステムプログラム１５０の更新データである、システムプログラム用更新データ２１１を含む。
【００７５】
更新データセット２１０は、入力装置のファームウェアの更新データをさらに含む。すなわち、更新データセット２１０は、左コントローラ６のファームウェア用更新データ２１２と、右コントローラ８のファームウェア用更新データ２１３と、補助コントローラ１０のファームウェア用更新データ２１４とを含む。
【００７６】
さらに、更新データセット２１０は、他の入力装置のファームウェア用更新データ２１５を含んでいてもよい。
【００７７】
このように、本実施の形態に従うシステム１においては、本体装置４で実行されるシステムプログラム１５０の更新データとともに、本体装置４に接続される各入力装置で実行されるファームウェアの更新データが一括して提供される。
【００７８】
後述するように、本体装置４のシステムプログラム１５０の更新と、各入力装置のファームウェアの更新とは併せて実行されるとは限らず、同一の更新データセット２１０に含まれる一部の更新データのみが適用され、残りの更新データは適用されない場合もある。
【００７９】
図５は、図４に示す更新データセット２１０を用いた更新状態の一例を説明するための図である。図５（Ａ）に示すように、例えば、いずれも「Ｖｅｒ．２．０」の更新データからなる更新データセット２１０が配信されたとする。
【００８０】
図５（Ｂ）に示すように、本体装置４ならびに左コントローラ６および右コントローラ８（入力装置）に対して、更新データセット２１０に含まれるそれぞれの更新データが反映されて、いずれも「Ｖｅｒ．２．０」まで更新されている場合もある。一方、図５（Ｃ）に示すように、本体装置４に対してのみ更新データが反映されたものの、左コントローラ６および右コントローラ８（入力装置）に対しては更新データが反映されない場合もある。このような場合には、本体装置４のみが「Ｖｅｒ．２．０」まで更新されているものの、左コントローラ６および右コントローラ８（入力装置）は従来のバージョンである「Ｖｅｒ．１．０」に留まっている場合もある。
【００８１】
図５（Ｃ）に示す場合には、本体装置４においては、最新のシステムプログラム１５０が実行される一方で、入力装置においては、古いバージョンのファームウェアが実行されることになる。このような更新状態のばらつきがあっても、基本的な処理が継続できるように、更新データセット２１０に含まれるそれぞれの更新データが用意される。
【００８２】
本実施の形態に従うシステム１においては、入力装置のファームウェアのみを更新することが可能である。入力装置のファームウェアの更新は、本体装置４でユーザアプリケーション１６０が実行される際に、必要に応じて実行することも可能である。
【００８３】
本実施の形態においては、主として、サーバ２００から更新データセット２１０を取得する方法について例示するが、この方法に限られるものではない。例えば、第１スロット２３もしくは第２スロット２４（図２参照）に装着される外部記憶媒体などを介して、更新データセット２１０を取得するようにしてもよい。この場合、外部記憶媒体には、任意のユーザアプリケーション１６０と、当該ユーザアプリケーション１６０の実行に必要な更新データセット２１０とがセットで格納されていてもよい。
【００８４】
図４には、本体装置４のシステムプログラム用の更新データ、および、入力装置のファームウェアの更新データが一体化された更新データセット２１０を示すが、これに限らず、各更新データを都度ダウンロードするようにしてもよい。このような都度ダウンロードすることで、ダウンロードの負荷を低減できるとともに、本体装置４の記憶領域が過剰に大きくなることを防止できる。
【００８５】
［Ｄ．入力装置のファームウェア更新処理の概要］
次に、本実施の形態に従うシステム１における入力装置のファームウェア更新処理の概要について説明する。
【００８６】
本実施の形態に従うシステム１においては、入力装置のファームウェアの更新は、（１）本体装置４でのユーザアプリケーション１６０の実行中において、入力装置に必要な条件が満たされていないと判定された場合、（２）システムプログラム１５０が入力装置のファームウェアの更新が必要であると判定した場合、（３）ユーザが明示的に入力装置のファームウェアの更新を指示した場合、などに実行される。
【００８７】
本体装置４のシステムプログラム１５０の更新が実行された際に、入力装置のファームウェアの更新も併せて実行されてもよい。この場合の処理については、後述する。
【００８８】
図６は、本実施の形態に従うシステム１における入力装置のファームウェアの更新処理に係る状態遷移の一例を示す模式図である。図６を参照して、ユーザアプリケーション１６０の実行中（状態ＳＴ１）に、入力装置のファームウェアを更新する必要があると判定されると、実行中のユーザアプリケーション１６０の実行が中断されるとともに、入力装置のファームウェアの更新処理が開始される（状態ＳＴ４）。そして、入力装置のファームウェアの更新処理が完了すると、ユーザアプリケーション１６０の実行は再開される（状態ＳＴ１）。
【００８９】
ここで、本明細書において、「（アプリケーションプログラムの）実行の中断」は、アプリケーションプログラム自体の処理が止まる場合だけではなく、ユーザの視点から見て進行が一時的に停止する場合を含み得る。例えば、いずれかのアプリケーションプログラムを実行して、いずれかの処理を選択した場合、入力装置のファームウェアを更新しなければ、当該選択した処理がそれ以上進まないような状態を含み得る。
【００９０】
また、ＨＯＭＥメニューなどが表示されている状態（状態ＳＴ２）において、システムプログラム１５０が接続されている入力装置のファームウェアの更新が必要であると判定すると、ユーザの承諾を受けて、入力装置のファームウェアの更新処理が開始される（状態ＳＴ４）。そして、入力装置のファームウェアの更新処理が完了すると、元の画面に戻る。
【００９１】
接続されている入力装置のファームウェアの更新が必要である場合としては、例えば、いずれかの入力装置のファームウェアの更新処理が失敗したとの履歴が残っている場合、および、システムプログラム１５０が必要とする条件を接続されている入力装置のファームウェアが満たしていない場合などが想定される。
【００９２】
また、ＨＯＭＥメニューなどからユーザ操作によって手動更新画面へ遷移した後（状態ＳＴ３）、ユーザ操作を受けて、入力装置のファームウェアの更新処理が開始される（状態ＳＴ４）。そして、入力装置のファームウェアの更新処理が完了すると、ＨＯＭＥメニューなどに戻る。
【００９３】
［Ｅ．入力装置のファームウェア更新の処理手順］
次に、本実施の形態に従うシステム１における入力装置のファームウェア更新の処理手順について説明する。
【００９４】
（ｅ１：ユーザアプリケーション１６０の実行中）
まず、図６に示す状態ＳＴ１に対応する処理手順について説明する。
【００９５】
図７は、本実施の形態に従う本体装置４がユーザアプリケーション１６０の実行中に入力装置のファームウェアを更新する場合の処理手順を示すフローチャートである。図７に示す各ステップは、本体装置４のＣＰＵ８１（図２参照）がシステムプログラム１５０およびユーザアプリケーション１６０を実行することで実現される。
【００９６】
図７を参照して、まず、本体装置４の電源が投入されると、本体装置４は、システムプログラム１５０を実行して、ＨＯＭＥメニューを表示する（ステップＳ１００）。ＨＯＭＥメニューにおいて、いずれかのユーザアプリケーション１６０の実行が指示されると（ステップＳ１０２においてＹＥＳの場合）、本体装置４は、指示されたユーザアプリケーション１６０を起動し（ステップＳ１０４）、ユーザ操作に応じてユーザアプリケーション１６０を実行する（ステップＳ１０６）。いずれのユーザアプリケーション１６０の実行も指示されなければ（ステップＳ１０２においてＮＯの場合）、ステップＳ１０２の処理が繰り返される。
【００９７】
ユーザアプリケーション１６０の実行中において、入力装置のファームウェアが必要な条件を満たしているか否かの判定が必要でなければ（ステップＳ１０８においてＮＯの場合）、処理はステップＳ１２２へ進む。
【００９８】
これに対して、ユーザアプリケーション１６０の実行中において、入力装置のファームウェアが必要な条件を満たしているか否かの判定が必要になると（ステップＳ１０８においてＹＥＳの場合）、本体装置４は、接続されている入力装置のファームウェアの状態情報（典型的には、バージョン情報）を取得する（ステップＳ１１０）。すなわち、ユーザアプリケーション１６０からの要求に応じて、入力装置のファームウェアのバージョン情報が取得される。
【００９９】
接続されている入力装置のファームウェアの状態情報を取得する典型的な実装形態としては、本体装置４と各入力装置（左コントローラ６、右コントローラ８、補助コントローラ１０など）とが接続を確立する際に、本体装置４がそれぞれのファームウェアの状態情報を予め取得しておく方法と、本体装置４から各入力装置に対してファームウェアの状態情報を都度問い合わせる方法とが想定される。本実施の形態においては、いずれの方法を採用してもよい。
【０１００】
続いて、本体装置４は、取得したファームウェアの状態情報が、実行中のユーザアプリケーション１６０の実行に必要な条件を満たしているか否かを判定する（ステップＳ１１２）。すなわち、入力装置のファームウェアのバージョン情報がユーザアプリケーション１６０から要求される条件を満たしているか否かが判定される。
【０１０１】
取得したファームウェアの状態情報が、実行中のユーザアプリケーション１６０の実行に必要な条件を満たしていなければ（ステップＳ１１２においてＮＯの場合）、本体装置４は、実行中のユーザアプリケーション１６０の実行を中断し（ステップＳ１１４）、入力装置のファームウェアの更新処理を実行する（ステップＳ２００）。すなわち、入力装置がユーザアプリケーション１６０の実行に必要な条件を満たしていない場合に、入力装置のファームウェアが更新される。入力装置のファームウェアの更新処理（ステップＳ２００）に係る詳細については、後述する。
【０１０２】
入力装置のファームウェアの更新処理が成功裏に終了すると（ステップＳ１１６においてＹＥＳの場合）、本体装置４は、中断したユーザアプリケーション１６０の実行を再開する（ステップＳ１１８）。そして、ステップＳ１０６以下の処理が繰り返される。
【０１０３】
入力装置のファームウェアの更新処理が成功裏に終了しなければ（ステップＳ１１６においてＮＯの場合）、本体装置４は、ユーザから入力装置のファームウェア更新処理の再実行が指示されたか否かを判定する（ステップＳ１２０）。
【０１０４】
ユーザから入力装置のファームウェア更新処理の再実行が指示されると（ステップＳ１２０においてＹＥＳの場合）、本体装置４は、ステップＳ２００以下の処理を再実行する。
【０１０５】
これに対して、ユーザから入力装置のファームウェア更新処理の再実行が指示されなければ（ステップＳ１２０においてＮＯの場合）、本体装置４は、ステップＳ１２２以下の処理を実行する。
【０１０６】
ステップＳ１２２において、本体装置４は、ユーザアプリケーション１６０の終了が指示されたか否かを判定する（ステップＳ１２２）。ユーザアプリケーション１６０の終了が指示されると（ステップＳ１２２においてＹＥＳの場合）、ユーザアプリケーション１６０の実行を終了する（ステップＳ１２４）。
【０１０７】
ユーザアプリケーション１６０の終了が指示されなければ（ステップＳ１２２においてＮＯの場合）、ステップＳ１０６以下の処理が繰り返される。
【０１０８】
以上のような処理によって、ユーザアプリケーション１６０の実行中において、入力装置のファームウェアが必要に応じて更新される。
【０１０９】
なお、上述の処理手順においては、取得したファームウェアの状態情報が、実行中のユーザアプリケーション１６０の実行に必要な条件を満たしていなければ、入力装置のファームウェアの更新処理が自動的に実行される例を示したが、入力装置のファームウェアの更新処理は、ユーザの承諾を受けなければ開始されないようにしてもよい。あるいは、入力装置のファームウェア更新処理の開始前に、更新処理が開始される旨をユーザに通知するようにしてもよい。
【０１１０】
上述の処理手順においては、取得したファームウェアの状態情報が、実行中のユーザアプリケーション１６０の実行に必要な条件を満たしていない場合に、ユーザアプリケーション１６０の実行を中断する処理（ステップＳ１１２およびＳ１１４）を例示したが、これに限らず、先に実行中のユーザアプリケーション１６０の実行を中断した上で、入力装置のファームウェアの状態情報を取得するようにしてもよい。
【０１１１】
（ｅ２：ＨＯＭＥメニューからの実行）
次に、図６に示す状態ＳＴ２および状態ＳＴ３に対応する処理手順について説明する。
【０１１２】
図８は、本実施の形態に従う本体装置４がＨＯＭＥメニュー画面を表示している状態において入力装置のファームウェアの更新処理を実行する場合の処理手順を示すフローチャートである。図８に示す各ステップは、本体装置４のＣＰＵ８１（図２参照）がシステムプログラム１５０およびユーザアプリケーション１６０を実行することで実現される。
【０１１３】
図８を参照して、まず、本体装置４の電源が投入されると、本体装置４は、システムプログラム１５０を実行して、ＨＯＭＥメニューを表示する（ステップＳ１５０）。
【０１１４】
続いて、本体装置４は、いずれかの入力装置のファームウェアの更新処理が失敗したとの履歴が存在するか否かを判定する（ステップＳ１５２）。いずれかの入力装置のファームウェアの更新処理が失敗したとの履歴が存在していれば（ステップＳ１５２においてＹＥＳの場合）、本体装置４は、入力装置のファームウェアの更新処理を実行する（ステップＳ２００）。入力装置のファームウェアの更新処理（ステップＳ２００）に係る詳細については、後述する。
【０１１５】
入力装置のファームウェアの更新処理が成功裏に終了すると（ステップＳ１５４においてＹＥＳの場合）、本体装置４は、ＨＯＭＥメニューを再表示する（ステップＳ１６２）。これに対して、入力装置のファームウェアの更新処理が成功裏に終了しなければ（ステップＳ１５４においてＮＯの場合）、ステップＳ１５２以下の処理が実行される。
【０１１６】
これに対して、いずれかの入力装置のファームウェアの更新処理が失敗したとの履歴が存在していなければ（ステップＳ１５２においてＮＯの場合）、ステップＳ１５６以下の処理が実行される。
【０１１７】
具体的には、本体装置４は、接続されている入力装置のファームウェアの状態情報（典型的には、バージョン情報）を取得する（ステップＳ１５６）。そして、本体装置４は、取得したファームウェアの状態情報が、システムプログラム１５０が必要とする条件を満たしているか否かを判定する（ステップＳ１５８）。
【０１１８】
取得したファームウェアの状態情報が、システムプログラム１５０が必要とする条件を満たしていなければ（ステップＳ１５８においてＮＯの場合）、本体装置４は、入力装置のファームウェアの更新処理を実行する（ステップＳ２００）。入力装置のファームウェアの更新処理（ステップＳ２００）に係る詳細については、後述する。
【０１１９】
入力装置のファームウェアの更新処理が成功裏に終了すると（ステップＳ１６０においてＹＥＳの場合）、本体装置４は、ＨＯＭＥメニューを再表示する（ステップＳ１６２）。これに対して、入力装置のファームウェアの更新処理が成功裏に終了しなければ（ステップＳ１６０においてＮＯの場合）、ステップＳ１５８以下の処理が実行される。
【０１２０】
なお、ステップＳ１５６，Ｓ１５８，Ｓ２００，Ｓ１６０の処理は、接続されている入力装置毎に実行されてもよい。
【０１２１】
続いて、本体装置４は、ユーザが手動更新画面の表示を指示したか否かを判定する（ステップＳ１６４）。ユーザが手動更新画面の表示を指示していなければ（ステップＳ１６４においてＮＯの場合）、本体装置４は、ユーザが行なった操作に応じた処理を実行する（ステップＳ１７６）。
【０１２２】
ユーザが手動更新画面の表示を指示していれば（ステップＳ１６４においてＹＥＳの場合）、本体装置４は、接続されているそれぞれの入力装置からファームウェアの状態情報（典型的には、バージョン情報）を取得する（ステップＳ１６６）。そして、本体装置４は、取得したファームウェアの状態情報と、予め取得されている更新データセット２１０に含まれる各ファームウェア用更新データの状態情報とを比較して、ファームウェアを更新可能な入力装置を一覧表示する（ステップＳ１６８）。なお、同一の入力装置に対して異なるバージョンの更新データが提供されている場合であっても、最新の更新データのみを使用することが好ましい。但し、状況に応じて、入力装置毎に利用可能な更新データのバージョンを一覧表示するようにしてもよい。
【０１２３】
そして、本体装置４は、ファームウェアを更新可能ないずれかの入力装置が選択されると（ステップＳ１７０においてＹＥＳの場合）、本体装置４は、選択された入力装置のファームウェアの更新処理を実行する（ステップＳ２００）。入力装置のファームウェアの更新処理（ステップＳ２００）に係る詳細については、後述する。
【０１２４】
選択された入力装置のファームウェアの更新処理が成功裏に終了すると（ステップＳ１７２においてＹＥＳの場合）、本体装置４は、ＨＯＭＥメニューを再表示する（ステップＳ１７４）。これに対して、選択された入力装置のファームウェアの更新処理が成功裏に終了しなければ（ステップＳ１７２においてＮＯの場合）、ステップＳ１６６以下の処理が実行される。
【０１２５】
ファームウェアを更新可能ないずれの入力装置も選択されなければ（ステップＳ１７０においてＮＯの場合）、処理はステップＳ１７４へ進む。ステップＳ１６８において、ファームウェアを更新可能な入力装置が存在しない場合にも、処理はステップＳ１７４へ進む。
【０１２６】
以上のような処理によって、ＨＯＭＥメニュー画面の起動時または表示中において、入力装置のファームウェアが必要に応じて更新される。
【０１２７】
なお、上述の処理手順においては、入力装置のファームウェアの更新処理が必要であると判定されると、更新処理が自動的に開始される例を示したが、この更新処理は、ユーザの承諾を受けなければ開始されないようにしてもよい。あるいは、更新処理の開始前に、更新処理が開始される旨をユーザに通知するようにしてもよい。
【０１２８】
（ｅ３：更新処理の詳細）
図９は、図７および図８に示す更新処理の詳細の処理手順を示すフローチャートである。図９に示す各ステップは、本体装置４のＣＰＵ８１（図２参照）がシステムプログラム１５０およびユーザアプリケーション１６０を実行することで実現される。
【０１２９】
図９を参照して、まず、本体装置４は、本体装置４自体の電源状態の適否を判定する（ステップＳ２０２）。例えば、本体装置４のバッテリ９８の残量が予め定められた下限値（例えば、１５％）以上である場合、または、本体装置４のバッテリ９８が充電中である場合に、電源状態が適切であると判定される。
【０１３０】
本体装置４自体の電源状態が適切でなければ（ステップＳ２０２においてＮＯの場合）、本体装置４は、ユーザに対して、本体装置４を外部の充電装置に接続してバッテリを充電するように通知する（ステップＳ２０４）。そして、ステップＳ２０２以下の処理が繰り返される。なお、ステップＳ２０４において、ユーザから更新処理の中止の指示を受けた場合には、以後の処理を中止してもよい。
【０１３１】
本体装置４自体の電源状態が適切であれば（ステップＳ２０２においてＹＥＳの場合）、本体装置４は、ローカル通信中であるか否かを判定する（ステップＳ２０６）。
【０１３２】
ローカル通信中であれば（ステップＳ２０６においてＹＥＳの場合）、本体装置４は、ユーザに対して、ローカル通信を中止するように通知する（ステップＳ２０８）。そして、ステップＳ２０６以下の処理が繰り返される。なお、ステップＳ２０８において、ユーザから更新処理の中止の指示を受けた場合には、以後の処理を中止してもよい。
【０１３３】
このように、本体装置４が他の本体装置４と無線で通信していない場合に、ファームウェアの更新処理が実行される。以上の処理によって、本体装置４における更新処理の実行条件の判定が終了する。
【０１３４】
続いて、本体装置４は、本体装置４に接続されている入力装置のうち更新対象となる入力装置を選択する（ステップＳ２１０）。更新対象となる入力装置が複数存在する場合には、本体装置４に接続された順やバージョンが古い順などに従って、更新対象を順次選択するようにしてもよい。あるいは、更新対象となる入力装置をユーザが都度選択するようにしてもよい。
【０１３５】
まず、本体装置４は、更新対象となる入力装置の電源状態の適否を判定する（ステップＳ２１２）。例えば、入力装置のバッテリ（図３に示すバッテリ１０６またはバッテリ１１６など）の残量が予め定められた下限値（例えば、１５％）以上である場合、または、入力装置のバッテリが充電中である場合に、電源状態が適切であると判定される。
【０１３６】
入力装置の電源状態が適切でなければ（ステップＳ２１２においてＮＯの場合）、本体装置４は、対象の入力装置のファームウェア更新処理を中止する（ステップＳ２１４）。そして、ステップＳ２２４の処理が実行される。
【０１３７】
なお、対象の入力装置のファームウェア更新処理を中止するのではなく、ユーザに対して、対象の入力装置を外部の充電装置に接続してバッテリを充電するように通知するとともに、ファームウェアの更新処理を継続するようにしてもよい。
【０１３８】
入力装置の電源状態が適切であれば（ステップＳ２１２においてＹＥＳの場合）、本体装置４は、対象の入力装置用の更新データとともに、当該更新データを用いたファームウェアの更新を行なう指令を、対象の入力装置へ送信する（ステップＳ２１６）。そして、本体装置４は、対象の入力装置との間の通信が継続しているか否かを判定する（ステップＳ２１８）。
【０１３９】
本体装置４と対象の入力装置との間の通信が切断されると（ステップＳ２１８においてＮＯの場合）、本体装置４は、対象の入力装置のファームウェア更新処理を中止する（ステップＳ２２０）。そして、ステップＳ２２４の処理が実行される。
【０１４０】
なお、いずれかの入力装置のファームウェア更新処理が失敗した場合（ステップＳ２１４に到達した場合、または、ステップＳ２２０に到達した場合）には、入力装置のファームウェアの更新処理自体をその時点で終了してもよい。このような実装を採用した場合には、ステップＳ２１４またはステップＳ２２０の後、ステップＳ２３２が実行される。
【０１４１】
これに対して、本体装置４と対象の入力装置との間の通信が継続していれば（ステップＳ２１８においてＹＥＳの場合）、本体装置４は、対象の入力装置から更新処理の結果が成功裏に終了した旨の通知を受信したか否かを判定する（ステップＳ２２２）。
【０１４２】
対象の入力装置から更新処理の結果が成功裏に終了した旨の通知を受信すれば（ステップＳ２２２においてＹＥＳの場合）、本体装置４は、ステップＳ２２４の処理を実行する。
【０１４３】
なお、入力装置のファームウェアの更新処理が完了すると、当該入力装置は、再起動する場合もある。
【０１４４】
これに対して、対象の入力装置から更新処理の結果が成功裏に終了した旨の通知を受信しなければ（ステップＳ２２２においてＮＯの場合）、本体装置４は、ファームウェアの更新が失敗したと判定して、ステップＳ２１２以下の処理を繰り返す。なお、ステップＳ２２２において、ユーザから更新処理の中止の指示を受けた場合には、対象の入力装置のファームウェア更新処理を中止してもよい。
【０１４５】
ステップＳ２２４において、本体装置４は、本体装置４に接続されている入力装置のうち、更新対象として選択されていない入力装置が存在するか否かを判定する（ステップＳ２２４）。
【０１４６】
更新対象として選択されていない入力装置が存在していれば（ステップＳ２２４においてＹＥＳの場合）、本体装置４は、本体装置４に接続されている入力装置のうち別の入力装置を新たな更新対象として選択する（ステップＳ２２６）。そして、ステップＳ２１２以下の処理が繰り返される。
【０１４７】
これに対して、本体装置４に接続されている入力装置のすべてが更新対象として選択済であれば（ステップＳ２２４においてＮＯの場合）、本体装置４は、本体装置４に接続されているいずれかの入力装置のファームウェアを更新できたか否かを判定する（ステップＳ２２８）。
【０１４８】
本体装置４に接続されているいずれかの入力装置のファームウェアを更新できれば（ステップＳ２２８においてＹＥＳの場合）、本体装置４は、ファームウェアを更新できた入力装置を特定するための情報とともに、更新処理が成功した旨を結果として応答し、処理を終了する（ステップＳ２３０）。なお、ファームウェアの更新に失敗した入力装置が存在する場合には、当該ファームウェアの更新に失敗した入力装置を特定するための情報を併せて通知してもよい。
【０１４９】
これに対して、本体装置４に接続されているいずれの入力装置のファームウェアも更新できなければ（ステップＳ２２８においてＮＯの場合）、本体装置４は、入力装置の更新処理が失敗した旨を結果として応答し、処理を終了する（ステップＳ２３２）。
【０１５０】
以上のような処理手順によって、入力装置のファームウェアの更新処理が実行される。
図９に示す更新処理の処理手順において、本体装置４のバッテリの残量が予め定められた条件を満たしており（ステップＳ２０２）、かつ、入力装置のバッテリの残量が予め定められた条件を満たしている（ステップＳ２１２）場合に、入力装置のファームウェアが更新される。
【０１５１】
また、図９に示す更新処理の処理手順において、ステップＳ２１０〜Ｓ２２６の処理は、本体装置４に接続されているすべての入力装置を対象に実行される。そのため、実行中のユーザアプリケーション１６０において利用されない入力装置であっても、ファームウェアの更新対象となり得る。すなわち、図９に示す更新処理においては、ユーザアプリケーション１６０で利用される入力装置のファームウェアを更新させる処理を実行するとともに、アプリケーションプログラムでの使用の有無とは独立して、本体装置４に接続されている他の入力装置のファームウェアを更新させる処理も実行する。例えば、本体装置４に無線で接続されたコントローラと本体装置４に有線で接続されたコントローラとが存在する状況において、ユーザが、実行中のユーザアプリケーション１６０を無線接続のコントローラを利用してプレイし、有線接続のコントローラは利用されない場合がある。このような場合であっても、無線接続のコントローラだけではなく、有線接続のコントローラについても、ファームウェアが更新されてもよい。
【０１５２】
このような更新処理を採用することで、実行中のユーザアプリケーション１６０で利用されるか否かにかかわらず、本体装置４に接続されているすべての入力装置がファームウェアの更新対象となるので、例えば、過去の更新処理において十分なバッテリの残量を有していなかった入力装置や、新規購入などによって新たに追加された入力装置などについても、ファームウェアを更新できる。
【０１５３】
［Ｆ．本体装置の機能的構成］
次に、本実施の形態に従う本体装置４において実現される機能的構成の一例について説明する。図１０は、本実施の形態に従う本体装置４において実現される機能的構成の一例を示す模式図である。図１０を参照して、ＣＰＵ８１がシステムプログラム１５０を実行することで、プログラム実行モジュール１７０と、更新モジュール１７２と、更新データ取得モジュール１７４とが実現される。
【０１５４】
プログラム実行モジュール１７０は、入力装置が受付けたユーザ操作に基づいてプログラムを実行する。より具体的には、プログラム実行モジュール１７０は、ユーザ操作に応じて、システムプログラム１５０により提供されるメニュー表示や各種設定などの処理を実行するとともに、ユーザアプリケーション１６０を実行する。
【０１５５】
更新データ取得モジュール１７４は、ネットワーク通信部８２（図２参照）に指示を与えるなどして、ネットワーク２０を介してサーバ２００から更新データセット２１０を取得する。なお、更新データ取得モジュール１７４は、記憶媒体を介して更新データセット２１０を取得してもよい。
【０１５６】
更新データセット２１０は、入力装置のファームウェアの更新データ（図４に示す、左コントローラ６のファームウェア用更新データ２１２、右コントローラ８のファームウェア用更新データ２１３、補助コントローラ１０のファームウェア用更新データ２１４など）を含む。
【０１５７】
更新モジュール１７２は、プログラム実行モジュール１７０によるプログラムの実行中に、プログラムからの要求に応じて、入力装置のファームウェアを更新させる処理を実行する。プログラム実行モジュール１７０は、更新モジュール１７２による入力装置のファームウェアの更新前にプログラムの実行を中断するとともに、更新モジュール１７２による入力装置のファームウェアの更新が完了したことに応じて、中断していたプログラムの実行を再開する。
【０１５８】
［Ｇ．本体装置のソフトウェア実装］
次に、本実施の形態に従う本体装置４におけるソフトウェア実装の一例について説明する。図１１は、本実施の形態に従う本体装置４におけるソフトウェア実装の一例を示す模式図である。図１１には、ユーザアプリケーション１６０からの要求に応じて、入力装置のファームウェアを更新させる処理を実行する場合のいくつかの実装例を示す。
【０１５９】
図１１（Ａ）には、システムプログラム１５０が、入力装置ファームウェア状態情報取得モジュール１５１および入力装置ファームウェア更新モジュール１５２を含む実装例を示す。この実装例においては、ユーザアプリケーション１６０が入力装置のファームウェアを更新させる処理を直接要求する。より具体的には、ユーザアプリケーション１６０は、入力装置のファームウェアが必要な条件が満たしていることを前提とする処理の実行前に、入力装置ファームウェア状態情報取得モジュール１５１を呼び出して、更新対象となる入力装置のファームウェアの状態情報を取得する。そして、実行に必要な条件を満たしていなければ、ユーザアプリケーション１６０は、入力装置ファームウェア更新モジュール１５２を呼び出す。このとき、ユーザアプリケーション１６０は、入力装置ファームウェア更新モジュール１５２からの結果が応答されるまでは、処理の実行を中断する。入力装置ファームウェア更新モジュール１５２は、入力装置のファームウェアの更新処理を実行する。
【０１６０】
この実装例においては、上述の図７に示すステップＳ１１０，Ｓ１１２などの処理は、入力装置ファームウェア状態情報取得モジュール１５１を呼び出すことによって実行される。また、上述の図７に示すステップＳ２００などの処理は、入力装置ファームウェア更新モジュール１５２を呼び出すことによって実行される。
【０１６１】
図１１（Ｂ）に示す実装例においては、ユーザアプリケーション１６０が入力装置のファームウェアを更新させる処理を間接的に要求する。より具体的には、システムプログラム１５０が、左コントローラ６の付加機能部１０９、および／または、右コントローラ８の付加機能部１１９が提供する機能を利用するための、付加機能利用モジュール１５３を含む例を示す。この場合、ユーザアプリケーション１６０において、左コントローラ６の付加機能部１０９、および／または、右コントローラ８の付加機能部１１９を利用したい場合には、付加機能利用モジュール１５３が呼び出される。
【０１６２】
付加機能利用モジュール１５３は、ユーザアプリケーション１６０に呼び出されると、入力装置ファームウェア状態情報取得モジュール１５１をさらに呼び出して、接続されている入力装置のファームウェアの状態情報を取得する。そして、付加機能利用モジュール１５３は、取得したファームウェアの状態情報が、実行に必要な条件を満たしていなければ、入力装置ファームウェア更新モジュール１５２を呼び出す。これによって、入力装置のファームウェアの更新処理が実行される。
【０１６３】
図１１（Ｃ）に示す実装例においては、ユーザアプリケーション１６０の内部で要求を発行することで、入力装置ファームウェア状態情報取得モジュール１５１を利用して、入力装置のファームウェアを更新させる処理を実行する。より具体的には、システムプログラム１５０が、ユーザアプリケーション１６０が入力装置ファームウェア更新コード１６２を有している例を示す。入力装置ファームウェア更新コード１６２は、図１１（Ａ）および図１１（Ｂ）に示す入力装置ファームウェア更新モジュール１５２と同様の処理を実行するための命令を含む。
【０１６４】
この実装例においては、上述の図７に示す各ステップの処理は、ユーザアプリケーション１６０によって実行される。但し、接続されている入力装置のファームウェアの状態情報を取得する処理（ステップＳ１１０）は、入力装置ファームウェア状態情報取得モジュール１５１がさらに呼び出されることによって実行される。
【０１６５】
図１１に示す、入力装置ファームウェア状態情報取得モジュール１５１、入力装置ファームウェア更新モジュール１５２、および、付加機能利用モジュール１５３を呼び出すために、ＡＰＩ（Application Programming Interface）が用意されてもよい。この場合には、ユーザアプリケーション１６０および付加機能利用モジュール１５３は、ＡＰＩを介して、任意のモジュールを呼び出すことができる。
【０１６６】
このように、入力装置ファームウェア状態情報取得モジュール１５１を独立して実装することで、ユーザアプリケーション１６０および付加機能利用モジュール１５３のいずれからも呼び出して利用することができる。すなわち、本体装置４には、入力装置のファームウェアのバージョン情報を応答するＡＰＩが用意される。これにより、本実施の形態に従う入力装置のファームウェアの更新処理を利用するユーザアプリケーション１６０の実装の自由度を高めることができる。
【０１６７】
なお、図１１（Ａ）には、入力装置ファームウェア状態情報取得モジュール１５１と入力装置ファームウェア更新モジュール１５２とがそれぞれ独立して実装される例を示すが、これらのモジュールを一体化してもよい。
【０１６８】
また、図１１に示す入力装置ファームウェア状態情報取得モジュール１５１は、取得したファームウェアの状態情報が必要な条件を満たしていない場合には、入力装置ファームウェア更新モジュール１５２をさらに呼び出すようにしてもよい。
【０１６９】
上述したように、ユーザアプリケーション１６０から、入力装置のファームウェアを更新させる処理を実行するための要求を行なう実装例としては、任意の構成を採用できる。
【０１７０】
［Ｈ．本体装置４のシステムプログラム更新の処理手順］
次に、本体装置４におけるシステムプログラム更新の処理手順の一例について説明する。
【０１７１】
図１２は、本実施の形態に従う本体装置４がシステムプログラムを更新する場合の処理手順を示すフローチャートである。図１２に示す各ステップは、本体装置４のＣＰＵ８１（図２参照）がシステムプログラム１５０を実行することで実現される。
【０１７２】
図１２を参照して、例えば、ＨＯＭＥメニューにおいて、いずれかのユーザアプリケーション１６０の実行が指示されると（ステップＳ３００においてＹＥＳの場合）、本体装置４は、システムプログラム１５０の状態情報（典型的には、バージョン情報）を取得し（ステップＳ３０２）、取得したファームウェアの状態情報が、指示されたユーザアプリケーション１６０が必要とする条件を満たしているか否かを判定する（ステップＳ３０４）。
【０１７３】
取得したファームウェアの状態情報が、指示されたユーザアプリケーション１６０が必要とする条件を満たしていれば（ステップＳ３０４においてＹＥＳの場合）、本体装置４は、指示されたユーザアプリケーション１６０を起動し（ステップＳ３０６）、ユーザ操作に応じてユーザアプリケーション１６０を実行する（ステップＳ３０８）。そして、処理は終了する。
【０１７４】
これに対して、取得したファームウェアの状態情報が、指示されたユーザアプリケーション１６０が必要とする条件を満たしていなければ（ステップＳ３０４においてＮＯの場合）、本体装置４は、条件を満たす更新データセット２１０がフラッシュメモリ８４に既に格納されているか否かを判定する（ステップＳ３１０）。
【０１７５】
条件を満たす更新データセット２１０がフラッシュメモリ８４に格納されていなければ（ステップＳ３１０においてＮＯの場合）、本体装置４は、サーバ２００から最新の更新データセット２１０を取得してフラッシュメモリ８４に格納する（ステップＳ３１２）。
【０１７６】
続いて、本体装置４は、更新データセット２１０に含まれるシステムプログラム用更新データ２１１を用いて、システムプログラム１５０を更新する（ステップＳ３１４）。なお、本体装置４のシステムプログラム１５０の更新処理が完了すると、本体装置４は再起動する場合もある。
【０１７７】
このように、本体装置４においては、ユーザアプリケーション１６０の実行に応じて、本体装置４のシステムプログラム１５０のバージョン情報を取得するとともに、本体装置４のシステムプログラム１５０のバージョン情報がユーザアプリケーション１６０の実行に必要な条件を満たしていない場合には、本体装置４のシステムプログラム１５０が更新される。なお、上述の説明においては、ユーザアプリケーション１６０の実行前にシステムプログラム１５０のバージョン情報を取得する処理例を示すが、これに限らず、ユーザアプリケーション１６０を実行し、例えば、ユーザアプリケーション１６０の初期化処理中などに、システムプログラム１５０のバージョン情報を確認するようにしてもよい。
【０１７８】
さらに、本体装置４は、入力装置のファームウェアの更新処理を実行する（ステップＳ２００）。これは、入力装置のファームウェアについても、更新が必要である場合が多いことを想定したものである。入力装置のファームウェアの更新処理が完了すると、ステップＳ３０６以下の処理が実行される。
【０１７９】
このように、本体装置４においては、本体装置４のシステムプログラム１５０を更新するときに、本体装置４に接続されている入力装置のファームウェアも更新される。但し、本体装置４のシステムプログラム１５０の更新処理と、本体装置４に接続されている入力装置のファームウェアの更新処理とは、それぞれ独立に実行させてもよい。すなわち、本体装置４のシステムプログラム１５０を更新した場合であっても、入力装置のファームウェアの更新は行なわないようにしてもよい。
【０１８０】
なお、図１２に示す処理手順は一例であり、別の条件が満たされた場合にも、本体装置４におけるシステムプログラムの更新処理を実行するようにしてもよい。この場合においても、入力装置のファームウェアの更新処理を併せて実行するようにしてもよい。
【０１８１】
［Ｉ．その他の実施の形態］
上述したような実施の形態に加えて、以下のような構成を採用してもよい。
【０１８２】
（ｉ１：更新時のメモリバンク）
上述したようなファームウェアの更新処理においては、万が一、更新が失敗したとしても、装置の機能を維持する必要がある。そこで、例えば、フラッシュメモリ内にファームウェア全体を格納可能な領域（バンク）を少なくとも２つ用意しておき、更新時には、一方のバンクに更新前のファームウェアを維持するとともに、他方のバンクに更新後のファームウェアを格納する。そして、他方のバンクへの更新後のファームウェアの格納が成功すると、再起動時にファームウェアを読出すバンクを切替えることで、更新後のファームウェアを実行させることができる。
【０１８３】
なお、フラッシュメモリの容量が制限されており、２つのバンクを用意できない場合には、例えば、ファームウェアを基本的な機能の部分と拡張的な機能の部分とに分割し、前者についてのみ２つのバンクを用意するようにしてもよい。
【０１８４】
上述のコントローラの場合においては、例えば、ユーザからの操作を受付ける機能、および、受付けたユーザ操作を本体装置４へ伝送する機能などは基本的な機能に相当する。一方、付加機能部１０９，１１９を利用するための機能などは拡張的な機能に相当する。
【０１８５】
このようにしておけば、万が一、ファームウェアの更新が失敗したとしても、基本的な機能は維持されるため、ファームウェアの更新処理を再実行できる。
【０１８６】
（ｉ２：更新失敗防止）
上述したようなファームウェアの更新処理の失敗を防止するために、更新処理に影響を与える他の処理を制約してもよい。
【０１８７】
例えば、本体装置４がスリープモードに移行することを禁止してもよいし、電源メニューまたは電源ボタン２８を無効化してもよい。また、機内モードなどの無線通信を無効化する処理を禁止してもよい。
【０１８８】
上述したような処理に限らず、ユーザの操作によって、入力装置のファームウェアおよび本体装置４のシステムプログラムの更新が失敗する可能性を低減することが好ましい。
【０１８９】
（ｉ３：コントローラ使用の設定支援機能）
本実施の形態に従うゲーム装置２においては、複数のコントローラを異なる態様で利用できる。そのため、任意のアプリケーションプログラムが実行される際には、ユーザに対して、利用可能なコントローラの種類や態様を通知するような設定支援機能が提供されることもある。このようなコントローラ使用の設定支援機能を実行する際に、上述したような、入力装置のファームウェア更新処理を実行するようにしてもよい。
【０１９０】
図１３は、本実施の形態に従うゲーム装置２が提供するコントローラ使用の設定支援画面の一例を示す模式図である。図１３に示す設定支援画面は、実行中のアプリケーションプログラムから呼び出される。このような設定支援画面において、ユーザは、いずれかのコントローラをどのような態様で使用するのかを決定する。さらに、選択可能なコントローラの使用形態を視覚的に表示するようにしてもよい。
【０１９１】
このような設定支援画面に対してユーザが使用するコントローラおよび使用態様などを決定すると、接続されている入力装置のファームウェアの状態情報が確認されて、必要に応じて、入力装置のファームウェアの更新処理（図９参照）が実行されてもよい。
【０１９２】
上述の図９において説明したように、実行中のアプリケーションプログラムにおいて実際に使用される入力装置（コントローラ）だけではなく、本体装置４に接続されているすべての入力装置に対して、ファームウェアの更新処理が試みられる。これによって、利用可能な入力装置のファームウェアをより適切な状態に維持できる。
【０１９３】
［Ｊ．利点］
本実施の形態に従う本体装置４および１または複数のコントローラを含むゲーム装置２によれば、ユーザがゲームのアプリケーションプログラムをプレイ中に、コントローラのファームウェアの更新が必要であるか否かがアプリケーションプログラム側の要求に応じて判定される。そのため、例えば、本体装置４のシステムプログラム１５０は更新されているものの、コントローラのファームウェアが更新されていないような状況であっても、ユーザは、個々のコントローラについてファームウェアの更新要否を判定する必要がない。すなわち、実際にプレイするゲームに応じて、適宜更新処理が実行されるので、ユーザは、自身が使用するコントローラのファームウェアが十分に新しいか否かを意識する必要がない。
【０１９４】
また、本実施の形態に従う本体装置４および１または複数のコントローラを含むゲーム装置２によれば、ゲームのアプリケーションプログラムから要求された時点において、アプリケーションプログラムの実行を一旦中断した上で、コントローラのファームウェアを更新する。そして、コントローラのファームウェアの更新が完了すると、先に中断したところから、ゲームを再開できるので、煩わしさを感じることなく、ユーザビリティを高めることができる。
【０１９５】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は、上記した説明ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１９６】
１  システム、２，２Ａ，２Ｂ  ゲーム装置、４  本体装置、６  左コントローラ、８  右コントローラ、１０  補助コントローラ、１２  ディスプレイ、１３  タッチパネル、１７  左側端子、２０  ネットワーク、２１  右側端子、２２  アクセスポイント、２３  第１スロット、２４  第２スロット、２５  音声入出力端子、２７  下側端子、２８  電源ボタン、４２，１０７  端子、８１  ＣＰＵ、８２  ネットワーク通信部、８３  コントローラ通信部、８４，１０２，１１２  フラッシュメモリ、８５  ＤＲＡＭ、８６  タッチパネルコントローラ、８７  コーデック回路、８８  スピーカ、９１  第１スロットインターフェイス（Ｉ／Ｆ）、９２  第２スロットインターフェイス（Ｉ／Ｆ）、９７  電力制御部、９８，１０６，１１６  バッテリ、１０１，１１１  通信制御部、１０３，１１３  操作ボタン群、１０４，１１４  アナログスティック、１０５，１１５  電力供給部、１０８，１１８  ファームウェア、１０９，１１９  付加機能部、１５０  システムプログラム、１５１  入力装置ファームウェア状態情報取得モジュール、１５２  入力装置ファームウェア更新モジュール、１５３  付加機能利用モジュール、１６０  ユーザアプリケーション、１６２  入力装置ファームウェア更新コード、１７０  プログラム実行モジュール、１７２  更新モジュール、１７４  更新データ取得モジュール、２００  サーバ、２１０  更新データセット、２１１  システムプログラム用更新データ、２１２，２１３，２１４，２１５  ファームウェア用更新データ。
【図１】
2019003557.tif 000003
【図２】
2019003557.tif 000004
【図３】
2019003557.tif 000005
【図４】
2019003557.tif 000006
【図５】
2019003557.tif 000007
【図６】
2019003557.tif 000008
【図７】
2019003557.tif 000009
【図８】
2019003557.tif 000010
【図９】
2019003557.tif 000011
【図１０】
2019003557.tif 000012
【図１１】
2019003557.tif 000013
【図１２】
2019003557.tif 000014
【図１３】
2019003557.tif 000015