エミュレータ開発必勝本
〜君もエミュレータ製作者になれる!?〜
|
私が PC-8801 エミュレータ「QUASI88」を作ろうと思い立ったのは、1997年の秋頃です。当時はまだメジャーな
PC-8801
エミュレータも存在せず(P88SR.EXEがこの頃にブレイクし始めた)、エミュレータ作成にはどのような知識・情報が必要かもわからないまま、手探り
でエミュレータを作り始めました。とりあえずは、fMSX
のソースを解読してエミュレータのプログラミング技法を覚えました。そして、古い雑誌や書籍から PC-8801
のハード情報を探し出しては、コツコツとコーディングをしていったものです。
あれから数年が経ちましたが、今でもエミュレータ製作全般に関する情報はあまり無いように思います。インターネットで検索してもほとんど見当たらないよう
です。 (私の探し方が悪いだけでしょうか? エミュレータの使い方についての情報なら、それこそ吐いて棄てるほどあるんですけどね……)
そこで僭越ながら、エミュレータを作る際に得た知識をもとに、エミュレータの作り方を書いてみることにしました。とはいえ、私が作ったことがあるエミュ
レータは前述の QUASI88
だけですので、たいしたことが書けるわけでもありません。本気でエミュレータを作ろうと思っている人なら当たり前すぎる情報かもしれません。でも中にはか
つての私のように、どんな情報でも知りたい、と思っている人がおられるかもしれません。そういった人の手助けにでもなってくれればと思います。
いきなり最初から参考文献です。以下は私がインターネット上で見つけた、エミュレータの作り方についての文献です。(これらが理解できるのでしたら、もう
この文書は不要ですね・・・ ^^; )
Imran Nazar氏の、「DSemu: The Nintendo
DS/GBA emulator」のページ(
http://www.dsemu.org/
)にある、エミュレータの書き方の紹介のようですが、英語なのでなにが書いてあるのかよくわかりません。
ここに書いてある事柄は、私個人の経験に基づくものです。私自身コンピュータやエミュレータについて深い知識や造詣があるわけでもないので、思いっきり勘
違いしたことを書いているかもしれません。特に、新旧問わずゲーム機の機能(スプライトなど)や、最近のパソコン・ゲーム機の機能などについての知識は素
人レベルに近いです。
なにか間違いに気付かれましたら、ご指摘頂けたらさいわいです。
はじめに
参考文献
免責事項
エミュレータって何?
用語の定義
エミュレータを作るために必要なもの
メモリの種類
セーブ用のメモリ
CPU のエミュレート
I/O ポートのエミュレート
メモリマップド I/O のエミュレート
クロックとは
実行速度をエミュレートする
割り込みとは
外部割り込みと内部割り込み
マスカブル割り込みとノンマスカブル割り込み(NMI)
割り込み禁止状態
割り込みの優先順位
割り込みのエミュレート
ドット単位で表示を制御するVRAM
キャラクタ単位で表示を制御するVRAM
ゲーム機の表示機能
その他の表示機能
エミュレータ上での表現
ターゲットのサウンド機能
サウンド機能のエミュレート
ブラウン管の表示のしくみ
HBLANK と VBLANK
タイマとしての VBLANK
エミュレータにおける VBLANK・VSYNC
HBLANK と HSYNC
エンディアンネス
リセット信号
複数のCPU
エミュレータならではの機能
高速化
実践編・エミュレータを作ろう
まだ書いてません。どんなことを書こうかな…。
とりあえずは PC-8801 の情報をまとめて、PC-8801 エミュレータを作る方法を書いてみたいですね。
この文章全体
をテキストにしたものは、こちらからどうぞ。 → make-emu.txt
(Shift-JIS, CRLF)
ホームページに戻る
メールはこちら………
fukuchan@mh1.117.ne.jp