【レポート】

JavaOne 2006 - PlayStationエミュレータをJavaで実装

 

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本体の大まかな性能が次のように紹介された。

  • 32bit RISC CPU @33.9MHz
  • Geometry co-processor
  • Graphics co-processor @33.9MHz
  • Decompression co-processor for video
  • 24 channel sound @44kHz

今回エミュレータを実装するにあたっては、アーキテクチャの目標を次のように定めたという。

  • オブジェクト指向で実装する
  • すべてJavaで記述する

技術的な話題に入る前に、両氏は実際に作成したエミュレータのデモを行いJavaプログラム上でPlayStationのソフトをいくつか動かして見せた。図.1はエミュレータを起動した直後の状態である。右下のプロンプトからコマンドで起動しており、画面には「PlayStation」の文字がお馴染みの音とともに表示された。図.2はゲームをプレイしているところ。非常に滑らかな動きだった。図.3はエミュレータを3つ同時に起動し、それぞれ別のソフトを実行した例。

図.1

図.2

図.3

続いて、高性能なゲーム機のエミュレーションを実現するために用いたいくつかのテクニックが、簡単なサンプルコードとともに紹介された。まず紹介されたのは、命令をデコードするためのハンドラ関数を命令毎に個別に用意したということである。これによって、各命令に対してそれぞれ最適化を行うことができる。

次にコンパイラだが、コンパイラはR3000のコードユニットをJavaプログラムに変換する役割を持ち、2つのステージに分かれた構成になっているという。ひとつ目のステージはインタプリタから呼び出され、簡潔な変換を行う。ふたつ目のステージはもっと大きなメソッドで使用され、フロー分析などが行われるようになっている。セッションでは各ステージのコードユニットのサンプルコードなども示された。

PlayStationエミュレータには、上記以外にも多数の興味深いテクニックが使用されているという。例えばオブジェクト指向での実装によりRAM上のR3000コードをオーバーライドできたり、コンパイラを独自に置き換えることなどが可能なことなどである。また、ビジーウェイトを防止する手段を駆使している点などについても触れた。

両氏はセッションの中で次のように述べている。「PlayStationのエミュレータを作っても当然それ自身がビジネスになるわけではない。しかし、問題を解決するために習得した多くの技術が他の場面で活かされることになる」。

最後に聴講者より、PlayStation 2のエミュレータも実装するのかという質問が出たが、その予定は全くないとのことである。



転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

イラッとされている後輩社員の特徴
[07:00 8/28] シゴト
外国人に母国のゴキブリ退治法を聞いた - 「ハンマーだと一撃で殺せます」
[07:00 8/28] ライフスタイル
ドラマ「逃げ恥」百合ちゃん役は石田ゆり子!風見は大谷亮平、沼田は古田新太
[06:00 8/28] ホビー
小島瑠璃子、ついにドラマ初挑戦!主演の柄本佑と“グルメ”で事件解決
[06:00 8/28] エンタメ
寺尾聰主演『仰げば尊し』すい臓がん、元問題児の留学…揺れる吹奏楽部の行方は
[06:00 8/28] エンタメ

求人情報