PONOS Advent Calendar 2022 8日目です。
昨日は@e73ryoさんの記事でした。
はじめに
RubyでNESエミュレータを作ってみました(現在進行系)。
作ってみて理解できたところ・ハマったところなどを書いていこうと思います。
これからエミュレータ作りをしてみようと思っている方の助けになれたら幸いです。
今回は準備編です。
用意するもの
使い慣れたプログラミング言語(重要)
なるべく慣れた言語で書きましょう。
僕は最初まったく分からないエミュレータをまったく分からないRustで書き始めて全然進まない状態になってました。
結局ある程度まではRustで作れたのですが現在Rubyで書き直しています。
言語によってはfpsが出ない場合もありますが良しとします。
Rustは何もわからないです。
ROM
NESのロムを用意します。
今回はこちらのサイトで提供されているサンプルロムを使用します。
Hellow, Worldを表示するだけのロムですがこれを動かせるように次回の記事で実装していきます。
市販のゲームを動かしたい場合は別途用意する必要があります。
ファミコンのカセット(任意)
ゲームカセットは買っておくとスプライトを見て楽しめたり、これを動かすぞというモチベーションになって良いです。
駿河屋などで買いましょう。
エミュレータを作るだけならテスト用のロムもあるので必須ではありません。
中身の基盤を見たい場合は殻割りに挑戦しましょう。
爪を折らないように開ける方法が色々公開されています(僕は全部折りました)。
ROMダンパー(任意)
こちらも必須ではないですがゲームカセットからROMイメージを吸い出すのに必要です。
Amazonで買えますが結構お値段は高いです。
僕が買ったFC用のダンパーはUSBでPCに繋ぐだけでROMイメージを取り出せるので便利です。Macでも使えます。
いろんなハードの吸い出しをしたい場合はベース吸い出し機+各ハード用の別売り吸い出し機を買いましょう。
参考にしたサイト
-
ファミコンエミュレータの創り方 - Hello, World!編 -
一番見た記事 -
NES研究室
CPUを実装するときに参考にしました -
NES Emulator from Scratch
画面作りの参考にしました