PHPでも作れる「ファミコンエミュレータ」づくりの魅力 by 長谷川智希

iOSDC Japan 2022
レギュラートーク(20分)

PHPでも作れる「ファミコンエミュレータ」づくりの魅力

tomzoh 長谷川智希 tomzoh
1

「ファミコンエミュレータを作る」と聞いて何を思い浮かべますか?
多くの方は何をどうしたら良いのか全く想像が付かないと思いますし、私もそうでした。

2016年2月にPHPで書かれたゲームボーイエミュレータ php-terminal-gameboy-emulator が話題になりました。このとき、PHPならばということでコードを読んでみました。エミュレータのコードを読んだのは初めての経験だったのですが、大きな衝撃を受けました。私は以前からこの頃のゲーム機に共通する仕様や、CPUやメモリについての知識は持っていたのですが、php-terminal-gameboy-emulator のコードにはそんな仕様がそのままPHPのコードとして表現されていたのです!

そしてその2年後、あるカンファレンスでファミコンエミュレータに関するトークを聞いた時に、2度目の衝撃が私を襲いました。そこで紹介されたコードは初めて見るにもかかわらず、断片を見るだけで内容が理解できたのです。

このトークでは2度目の衝撃を受けて私がPHPで書いたファミコンエミュレータ php-terminal-nes-emulator を題材に、エミュレータのコードの特長や設計、そしてその魅力をお伝えします。

CPUの動作(メモリアクセス, I/O, …)
エミュレータでの実装
ハードウェア仕様のソフトウェアとしての表現
エミュレータは決して難しいものではなく新しい言語の学習や設計の練習にちょうどよいテーマでもあります。このトークを聞けばきっと一度エミュレータを書いてみたくなるでしょう。