【レポート】
PlayStationは、いわずと知れたソニーコンピュータエンターティメントの家庭向けゲーム機である。米サンフランシスコで16日(現地時間)より4日間にわたって開催された2006 JavaOne Conferenceにおいて、「Writing a PlayStation Emulator Using Java Technology」という興味深いタイトルのテクニカルセッションが行われた。スピーカーはGraham Sanderson氏とMatt Howitt氏。両氏はJavaプログラムでPayStationのエミュレータを実装することに成功したとのことである。
Sony PlayStationはすでに一世代以上前のゲーム機であるとはいえ、非常に高性能なマシンであったことは間違いない。Javaを用いてそのエミュレータを実装するためには、Javaの性能を最大限まで引き出す必要がある。セッションでは、エミュレータを実装するにあたって用いたいくつかのテクニックが紹介された。これはハイパフォーマンスなJavaプログラムを作成するためのテクニックとして参考になるだろう。
まず最初にSony PlayStation本体の大まかな性能が次のように紹介された。
今回エミュレータを実装するにあたっては、アーキテクチャの目標を次のように定めたという。
技術的な話題に入る前に、両氏は実際に作成したエミュレータのデモを行いJavaプログラム上でPlayStationのソフトをいくつか動かして見せた。図.1はエミュレータを起動した直後の状態である。右下のプロンプトからコマンドで起動しており、画面には「PlayStation」の文字がお馴染みの音とともに表示された。図.2はゲームをプレイしているところ。非常に滑らかな動きだった。図.3はエミュレータを3つ同時に起動し、それぞれ別のソフトを実行した例。
続いて、高性能なゲーム機のエミュレーションを実現するために用いたいくつかのテクニックが、簡単なサンプルコードとともに紹介された。まず紹介されたのは、命令をデコードするためのハンドラ関数を命令毎に個別に用意したということである。これによって、各命令に対してそれぞれ最適化を行うことができる。
次にコンパイラだが、コンパイラはR3000のコードユニットをJavaプログラムに変換する役割を持ち、2つのステージに分かれた構成になっているという。ひとつ目のステージはインタプリタから呼び出され、簡潔な変換を行う。ふたつ目のステージはもっと大きなメソッドで使用され、フロー分析などが行われるようになっている。セッションでは各ステージのコードユニットのサンプルコードなども示された。
PlayStationエミュレータには、上記以外にも多数の興味深いテクニックが使用されているという。例えばオブジェクト指向での実装によりRAM上のR3000コードをオーバーライドできたり、コンパイラを独自に置き換えることなどが可能なことなどである。また、ビジーウェイトを防止する手段を駆使している点などについても触れた。
両氏はセッションの中で次のように述べている。「PlayStationのエミュレータを作っても当然それ自身がビジネスになるわけではない。しかし、問題を解決するために習得した多くの技術が他の場面で活かされることになる」。
最後に聴講者より、PlayStation 2のエミュレータも実装するのかという質問が出たが、その予定は全くないとのことである。
| 超新星残骸中にないはずの多量の一酸化炭素 - 天文衛星「あかり」が発見 [21:42 2/9] |
| 【レポート】ROBO-ONE委員会 - 第20回大会でのROBO-ONE Lightの開催を決定 [20:27 2/9] |
| 火星に海の存在を示す有力な証拠が発見される - ESAが発表 [18:48 2/9] |
| iOS向けSPDYライブラリが登場、普及はじまるSPDY [11:57 2/9] |
| GitHubのアクティブプロジェクト、もっとも多いのはMITライセンス [11:42 2/9] |
|
大東駿介、改名後初の写真集発売--名前を変えたのは「自分の決意表明です」 [00:30 2/10] エンタメ |
|
悲しいけれど超ウマい!極貧芸能人が編み出した奇跡のアイデアレシピベストテン! [00:06 2/10] キャリア |
|
みんなが聴きたい女性アーティスト・ラブソングベスト30を思い出の映像と共に発表! [00:05 2/10] キャリア |
|
でかっ!体長12mもあるジンベイザメが水揚げされる(動画) [00:04 2/10] キャリア |
|
間違って送ったFacebookの友達リクエストを取り消す方法 [00:03 2/10] キャリア |