年末年始はRTA in JapanやらGDQやら大規模RTAイベント目白押しで大変楽しませてもらった。 ホットプレートでドラクエ3 Any%の世界記録だしたり、ファイナルソードがとにかくアレだったり、初見でもわかりやすく面白いRTA満載なのでぜひ見てみてほしい。
ぼく自身はRTA走者ではなくただ観戦するファンなのだが、ファン歴は結構長く、好きなGlitchなんてものがあったりする。
それが「メモリを編集する」系のGlitchだ。一般的になんて呼ぶのかわからないが、プログラミングにおけるバグのジャンルとしてはバッファオーバーランに相当するのだろうか。
実物を見てもらったほうが早いだろう。以下が「スーパーマリオランド2 6つの金貨」の例だ。
なんとメモリの内容をステージとして読み込み、その中をマリオのアクションで編集している。初めてみたときは本当に笑った。
こちらは初代ポケモン。道具欄をメモリエディタとしてフル活用し、マップの遷移先や出現ポケモン、発生するイベントなどをガンガン書き換えてる。
こういうプログラムやハードウェアが透けて見えるようなGlitchが好きだ。
この手のGlitchはゲームボーイのようなシンプルなアーキテクチャのハードウェアでないとなかなかお目にかかれない。逆に考えれば、シンプルなアーキテクチャだからこそメモリや命令の詳細な仕様まで把握でき、こういったテクニックにつながってくるとも言える。
ただ現時点でぼくはゲームボーイのアーキテクチャについて何も知らないし、プログラミングで飯を食ってるとはいえ文系出身の独学Web野郎なので雰囲気しか理解していない。
丁度いい機会なので、これを機にゲームボーイのエミュレータ作成にでもチャレンジしてみようと思う。
先駆者
とっかかりとしてとてもいい記事があった。
https://keichi.dev/post/write-yourself-a-game-boy-emulator/
代表的な資料と進め方がコンパクトにまとまっていてとても参考になる。Rustを採用してる。ちょうどぼくもRust触り中だったので一石二鳥だ。