PHPカンファレンス沖縄
レギュラートーク(30分)

ファミコンエミュレータづくりの魅力

tomzoh 長谷川智希 tomzoh

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

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

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

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

  • エミュレータでのCPU実装例
  • ハードウェア仕様のソフトウェアとしての表現

エミュレータは決して難しいものではなく新しい言語の学習や設計の練習にちょうどよいテーマでもあります。このトークを聞けばきっと一度エミュレータを書いてみたくなるでしょう。