メガドライブで DOOM を動かした
メガドライブ(海外名 Sega Genesis)の実機制約で DOOM を動かしてみました。NeoGeo向けDoom移植である Doom64KB をベースにした、AI エージェントでの移植です。タイトル画面から E1M1 の 3D 描画、BGM、効果音まで動いています。まずはデモ動画をどうぞ。
▶ YouTube
目次
きっかけは連邦さんのツイート
きっかけは、連邦の吉野さん(@yoshinokentarou)のこの投稿でした。

その前に、GBADoom からの移植で苦労していた
実はこれ以前に、GBADoom をベースにしたメガドライブ移植を、AI エージェントを使って進めていました。
ただ GBADoom はピクセルベースの描画で、タイルしか並べられないメガドライブの VDP とは相性が悪く、0.8〜3fps くらいしか出せずに苦労していました。
また、GBADoomはヒープメモリだけで200KB以上を必要としていてメガドラ64KBに収めるのに苦労したり、gcc-68k-elfを使わずにgcc-68k-linuxを使ってしまったことによるドハマり(根本原因に気づかずgccのソースまで辿ってしまった)したことや、ARM系CPUによるエンディアン違い問題の解消で無限にビルド&テストの繰り返しが起きるなど、3D画面が出る以前でした。こちらはまだ公開していません(いつか供養したい)。
Doom64KB ベースなら約1日で動いた
そんな折に知ったのが、ネオジオ版で使われていた Doom64KB です。
Doom64KB は「RAM 64KB しかない代わりに ROM はたっぷり使える機械」向けに作られた DOOM 移植です。ネオジオもメガドライブも CPU は同じ Motorola 68000・ビッグエンディアン。プラットフォーム非依存のコードはほぼ無修正で動き、書き換えるのは I/O 層だけ——という見込みが立ち、GBADoom であれだけ苦労したのが嘘のように、約1日でタイトルから 3D 描画まで動いてしまいました。低解像度のチャンキー表示に振り切った設計のおかげで、フレームレートも port from GBADoom 版より現実的です。
移植作業そのものは AI エージェントがやった
正直に書くと、ここの移植エンジニアリングはほぼ AI エージェントの仕事です。
- 画面を 38×28 のチャンキーなフレームバッファとして VDP のタイルへ流し込む描画
- DOOM の 256 色をメガドライブの 64 色(4 パレット×16 色)へ減色
- 68000 で必須の偶数アドレス整列に合わせた WAD ランプの再配置
- HUD・メニューの文字描画、BGM/効果音、FPS 表示
このあたりを、メイン RAM 64KB に収めながら詰めていく作業は、全部 AI に任せました(ビルドは SGDK + marsdev)。私はゴールと不具合を伝えていただけ、という感じです。
動作や音の微妙な点は人間の判断が必要でしたが、ハングアップ系の不具合はAIがヘッドレスエミュレータでイテレーションしてくれるので基本的には直るのを待つだけでした。ただ、ビルド環境起因でエミュがうまく起動しなかったり、録画録音に失敗しているとAIは迷走しつづけるので、そういった様子になったら止めたりはしました。
自分の手でやったのは「ファン MIDI → VGM 変換」
逆に、私がはっきり手を動かしたのは BGM まわりです。E1M1 のテーマ「At Doom's Gate」のファン制作 MIDI を、メガドライブの YM2612 FM 音源向けの VGM に変換して鳴らしています。
- MIDI 元: https://www.vgmusic.com/file/f4135d253bec49497cb3323be35a0cce.html
- MIDI → VGM 変換: 自作の akiyan/midi2vgm
……とはいえ、その変換スクリプト midi2vgm 自体も AI で作り込んだものなので、結局どこまでが自分の手柄なのかは怪しいところです。FM音色パッチの出来栄えはかなり往復しました。が、まだ満足する出来ではないです。YM2612のことを知らなさすぎです。ここはもっとがんばりたい。
ROMイメージとソースを公開しています
リポジトリはこちらです。Doom64KB からの fork として公開しています。
BGMと効果音無し版ですがビルドしたROMイメージも公開しているので、お手元で動作させることができます。
- ROMイメージダウンロード : https://github.com/akiyan/genesis-DOOM64KB/releases
連邦さん経由でネオジオ版を知らなければ作っていなかったので、改めて感謝です。
コメント / トラックバック