| STUDIO KAMADA | Japanese to English by Excite |
| X68000 Emulator in Java | 2004-04-30(Fri) 17:45 |
X68000 Emulator in Javaはその名の通りJava仮想マシンの中でX68000をエミュレートするソフトウェアです。アプレットとして動作するので、下記の実際に動かしてみるで動かしたいものを選んでクリックするだけでウェブブラウザ上でX68000が起動します。
X68000 Emulator in Javaは既存のエミュレータを移植したものではなく、ソースコードはオリジナルです。既存のエミュレータのような完成度には程遠いですが、頑張って更新を続けています。
現在発売中のゲームラボ(三才ブックス)5月号の特集『エミュレータ完全活用マニュアル』の中でX68000 Emulator in Javaを紹介していただきました。X68000のエミュレータがJava仮想マシン上で動作することの意味などについて解説されています。筆者は舩本昇竜さんです。→関連:4月16日の日記
不定期に更新しています。Javaアプレットは更新される度にインストールしなおす必要がないので、頻繁に更新することがあります。
これ以前の更新履歴
大雑把な実装状況です。「○…ほぼ実装、△…部分的に実装、×…未実装」と分類していますが、わりとてきとうなので、大きな変化がなくても作者の独断と偏見によって△から○に格上げしたり○から△に格下げしたりするかも知れません。
| デバイス | 実装状況 | メモ |
|---|---|---|
| バスコントローラ | ○ | ページサイズは8KB。ROMのライトプロテクトやエリアセットによるスーパーバイザ保護に対応。 |
| MC68000 | ○ | 未実装命令の処理を省略している箇所がある。所要クロック数を正確に再現していない命令がある。 |
| グラフィック画面 | ○ | 高速クリアが表示領域外に及ぶ。 |
| テキスト画面 | ○ | |
| CRTC | ○ | 対応範囲外のパラメータが指定された場合は描画停止。ラスタ割り込みに対応しているのでスプライトダブラやラスタスクロールの類も動作する。インタレースモードなども動くが、アプレットのサイズが固定されているのでアプレットに入り切らないモードは使えない。 |
| ビデオコントローラ | △ | 基本的な組み合わせは動作するが半透明と特殊プライオリティの実装が不十分(REIQAが動く程度)。 |
| DMAC | △ | XRM=3、PCL=1/2/3、BTD=1、REQG=0およびCPが未実装。 |
| エリアセットポート | ○ | |
| MFP | ○ | |
| RTC | △ | バンク0の時計とカレンダーを実装。時刻の設定はできない。 |
| プリンタポート | × | |
| システムポート | △ | コントラスト調整、ドットクロック切り替え、SRAM WRITE ENABLEを実装。 |
| FM音源 | × | タイマーA、BとADPCMの原発振周波数の設定のみ実装。 |
| ADPCM | △ | 再生のみ実装。 |
| FDC | × | IOCSレベルで実装。 |
| HDC | × | IOCSレベルで実装。 |
| SCC | △ | ポートAはモニタに直結。ポートBはマウス専用。 |
| PPI | △ | ジョイスティック入力はキーボードから受信。ポートCはADPCMに繋がっている。 |
| INT1 | × | |
| スプライト画面 | ○ | |
| SRAM | ○ | 初期値なし。 |
| CGROM | ○ | 起動時に読み込む。読み込めなければ自動生成を試みるが、生成には時間がかかるのでファイルを用意するべき。 |
| IPLROM | ○ | 起動時に読み込む。SRAM初期化データ(メモリ容量など)を書き換えてから使う。 |
| コントロールパネル | 仮想キーボード、モニタ、コンフィグを切り替えて表示する。 | |
| 仮想キーボード | フルキーボード仕様。X68000に特有のキーも含めてすべてのキーをマウスで操作できる。SHIFTとCTRLは次に押したキーが離されるまでロックする。すべてのキーについて右クリックするともう一度クリックするまで押し下げられた状態を保持する。一般的なキーについてはPCのキー操作にも反応する。MFPから送られてくるコマンドによってLEDやリピート速度を制御できる。なお、PCのF12キーがNMIスイッチになっている。 | |
| モニタ | エミュレータ自身のメッセージ表示とRS-232Cのターミナルとして使用。ターミナルから入力するときはモニタをクリックしてフォーカスをモニタへ移すこと。 | |
| コンフィグ | MC68000の動作周波数を2MHzから24MHzまで、CRTCの描画フレーム数を1/10からフルフレーム表示まで選択できる。デフォルトは20MHz、1/3フレーム。 | |
| マウス | マウスから送信されるマウスカーソルの移動量はPCのマウスカーソルの移動量とは無関係で、PCのマウスカーソルの位置にX68000のマウスカーソルがぴったり重なるように誘導するデータを生成している。単なる相対位置ではなくてアクセラレーションを逆算しているので、離れていても瞬時に誘導される。 | |
| カスタムカーソル | アプレットの上ではPCのマウスカーソルがX68000のマウスカーソルと同じサイズに変化する。X68000のマウスカーソルが表示されているときはPCのマウスカーソルを透明にしているので、X68000のマウスカーソルが表示されている状態でPCのマウスカーソルがアプレットの上に差し掛かるとマウスカーソルがエミュレータの中に入ったように見える。 | |
| サウンド | 1.3から導入されたjavax.sound.sampledのSourceDataLineを使う。負荷軽減のために出力サンプリング周波数は11025Hz、バッファレートは25Hz÷3、モノラル再生のみに仮設定している。実機の速度を維持できないとき出力周波数を下げてバッファアンダーランの回避を試みる。 | |
2GHz以上のPentium 4を搭載したPCまたはそれに匹敵する性能のPCで動作させることを推奨します。
J2SE v1.4のAPIを使用しています。Java仮想マシンとしてJava 2 Runtime Environment, Standard Edition v1.4.0以上を導入されていない場合は、http://java.sun.com/j2se/1.4.2/ja/download.htmlで最新版のJREを入手してください。なお、J2SE v1.5.0 Beta 1では動作確認を行っていません。
Pentium 4 3.06GHz + 1GB + NVIDIA GeForce4 Ti 4200 + Windows XP Home Edition SP1 + Internet Explorer 6 SP1 + J2SE v1.4.2_04 という環境で開発しています。この環境では描画の負荷が少ないとき実機の17MHz前後に相当する速度で動きます。
バージョン53TOWからアプレットの右下に5桁の英数字でバージョンを表示するようにしました。動作状況を報告していただく際にバージョンとノーウェイト版かどうかを書き添えてください。
ウェブブラウザ上で動作します。ノーウェイト版は音が出ません。
Human68k version 3.02のシステムディスク(ノーウェイト版) (1.29MB) 無償公開された『Human68k version 3.02のシステムディスク』です。とりあえずコマンドプロンプトが表示されるところを見たい人とX-BASICを動かしてみたい人向け。 |
じょんぐ(ノーウェイト版) (1.17MB) 『X68000マシン語プログラミング』でおなじみの村田敏幸さんによる質実剛健な麻雀ソフト『じょんぐ』です。マウスで遊びます。コンピュータの捨て牌を見てポン/チー/カン/ロンするときは右クリックですが、ノーウェイト版は速すぎて操作が間に合わないことがあります。速いマシンで動かすときはノーウェイト版ではないほうを試してみてください。効果音はありません。 |
男弾(オトコダマ)(ノーウェイト版) (1.40MB) Mitsukyさんによる縦スクロールシューティングゲーム『男弾(オトコダマ)』です。DSHELLのメニューで「◎遊ぶ(10MHz機用)」と「◎遊ぶ(高クロック機用)」を選べるようになっているので、速いマシンを持っている人は是非高クロック機用を試してみてください。スプライト管理システムXSPによって繰り出されるハードウェアの限界を超えた数のスプライトが画面狭しと飛び散る様子がJavaの箱庭で再現されます。操作はテンキーの2,4,6,8/カーソルキー/M,J,L,Iが移動、XキーがBボタン(ショット)、ZキーがAボタン(ボンバー)です。ひらがなキーのLEDを点灯させるとショットが自動連射になります。 |
ごーじゃすリバーシ(ノーウェイト版) (3.26MB) 拙作の『ごーじゃすリバーシ』です。ボードの上で石が裏返る様子を512×512ドット65536色モードのグラフィック画面でフルフレームでアニメーション表示させるという無茶なことをしていますが、それを除けばただのリバーシです。効果音はありません。 |
Windows+IE6の環境で、アプレットの領域が灰色のまま何事も起こらず、アプレットの領域に×印がなくて、マウスカーソルをアプレットの領域に重ねるとステータスバーに「load: class x68000 not found」というメッセージが一瞬だけ表示される場合は、動作環境に記載したJava 2 Runtime Environment, Standard Edition v1.4.0以上がインストールされていないか、インストールされていても有効になっていません。
Java 2 Runtime Environment, Standard Edition v1.4.0以上をインストールしていない場合は、http://java.sun.com/j2se/1.4.2/ja/download.htmlで最新版のJREを入手してインストールしてください。
Java 2 Runtime Environment, Standard Edition v1.4.0以上をインストール済みの場合は、IE6の「ツール」→「インターネットオプション」→「詳細設定」にある
Java (Sun)
□ <applet> に Java 2 v1.4.2_04 を使用 (再起動が必要)
という項目の□にチェックを入れて「OK」をクリックし、一旦IEのウインドウをすべて閉じてから、もう一度このページを開いてください。
X68000 Emulator in Javaはインストール作業を必要としないアプレットとして公開されており、常に最新版を試していただけるように本体を頻繁に更新しています。わざわざハードディスク等にインストールしてもすぐに古くなってしまうと思いますし、可能な限り新しいバージョンについての感想をいただきたいので、現在のところX68000 Emulator in Javaをダウンロードしてローカルで動かすことをお勧めしていません。しかし、インターネット接続環境の都合でどうしてもダウンロードしたい場合(例えば、自宅にインターネット接続環境がないので職場でダウンロードして持ち帰って試したい場合など)もあると思いますので、このページで使用しているファイルの一覧を書いておきます。すべて同じフォルダに入れて「入り口」のHTMLファイルをブラウザまたはappletviewerで表示すればX68000 Emulator in Javaが動作するはずです。
なお、アプレットのパラメータを変更することでこのページで紹介していないソフトウェアが動く場合がありますが、現在の完成度では動かなくてがっかりすることのほうが多いと思います。
エミュレータの動作の仕組みを知りたい人の参考のためにソースコードを公開しています。未熟者ゆえに優秀なJava開発者の方の手にかかれば改良の余地は山ほど発見されることと思いますが、開発を継続している今の段階で他の人の手で改造されたものが別バージョンとして派生することを作者は望んでいません。改良の成果が得られた場合はそれがこのページに反映されるように作者へ直接ご指導ください。
皆さん、ありがとうございます。
| E-mail: m_kamada at nifty dot com | Mirror | Copyright (C) 1999-2004 M.Kamada All Rights Reserved. |