30年前のRPG(フォーゴトゥンサーガ)をソースポーティングする
(forgottensaga-classic.blogspot.com)フォーゴトゥン サーガ(1997年の韓国製 DOS RPG)をソースポーティングする
動機
- 30年前、小学生のときに初めて買ったパッケージゲームがフォーゴトゥン サーガだった
- 人生初のRPGで、自然とのめり込んだ
- 20年以上忘れて過ごしていたが、今でも多くの人が遊んでいることを知った
- 「これをマルチプラットフォームのゲームにできないだろうか?」
- 残っていたのは1997年のPE32実行ファイルとデータファイルのみ(当然ソースコードはない)
アプローチ
- 原作ゲームを再現する方法は大きく2つある
- 仕様ベースの再解釈 — ゲームプレイを見て似たものを作り直す
- 原作の関数単位で忠実に復元 — 逆コンパイルしたコードをそのまま移植する
- 後者を選んだ。推測ではなく、検証済みの原作の挙動に従うため
- 原作は1997年のWindows MSVC製
分析した内容
原作バイナリの逆コンパイル
- Ghidra 12でPE32を処理。937関数を100%逆コンパイル成功
- 51,799行のpseudocode C
データフォーマットの解析(48種類、すべて検証済み)
- LZSS — 標準 + FAM派生形(ring init
0x00、ref_offsetのビット配置が異なる) - SPB — 256色 + RLE、1,155画像
- MOB — キャラクター/NPCアニメーション 2,699フレーム。
0xA4header + RLE pixel + frame stride 20B - SCP — バイトコードVM、128以上のopcode、6,026 entry、43,036件の会話文
- FAM — 292マップ、5 layer(base / overlay / collision / ...)
- DAT — CHAR / ITEM 290種 / MAGIC / ABILITY / MONSTER
- SAV — actor struct
0x2A4(676B)、party + inventory + global vars
ユーザー入力による直接検証
- セーブファイルを直接パースしてactor structのoffsetを検証
- 以前の誤ったマッピング(
0x3CATK→STR、0x40INT→TLT など)を修正
作り上げたもの
- Lua 263ファイル、157,277行
- アセット 3,760個
- LÖVE 2D 11.5 デスクトップビルド + love.js(emscripten)Webビルド
- モバイル向け仮想ジョイスティック + 韓国語IMEを独自実装
- SharedArrayBufferを有効化(COOP/COEP via coi-serviceworker)
- IndexedDBによるsav永続化(ブラウザ環境)
- 配布チャネル5種類 — Web / iOS / Android / Windows / macOS
再現範囲
- タイトル / キャラクター作成 / フィールド / 会話 / ショップ / インベントリ / 装備 / 罠 / DETECT・UNLOCK / セーブ — 完了
- 戦闘システム — 進行中
AIツール活用
- GPT 5.5 の
/goal機能中心、Claude Codeは補助 + リアルタイムデバッグ
GPT 5.5 /goal の役割 — 逆コンパイル解析 / 修正の蓄積
- 原作の関数cluster / call graph / opcode referenceの自動分析
- データフォーマットのdeep dive(sav format、actor offset、FAM構造など)
- 初期の自動デコード版でのmislabel修正を蓄積(51,799行の修正版)
Claude Codeの役割 — Lua移植 + 即時検証サイクル
- 原作関数をread → Luaへ移植 →
verify.shtest実行(100以上のtest mode、1,000以上のassertion) - ブラウザ環境のデバッグ(IDBFS / IME / SharedArrayBuffer など)
- ユーザー報告を受けたら debug → fix → devデプロイ → 検証 → liveデプロイのサイクル
作業期間
- 約1〜3か月
どんな成果物か
- Play(ブラウザ): https://forgottensaga-classic.blogspot.com/2026/05/…
- PC / モバイルの両方で動作。モバイルは仮想ジョイスティック + 韓国語IMEを独自実装
- 原作ゲームプレイを忠実に再現 — Zソート、パレットサイクル、NPCステートマシン、SCP VMなど原作の挙動を1:1で再現
24件のコメント
私が中学生の頃、当時は珍しかった「予約購入」をした友達がいたのですが、ポガトゥンサガが発売日をなかなか守れず、私にずっと愚痴をこぼしていたあいつのことを思い出しますね。笑
2年くらい?遅れてたんですよね(笑)
ロマンがあふれていますね。素敵なプロジェクトを応援します!
ありがとうございます。ロマンを見つけるのはなかなか難しいですね
名前を入れないとヒロ・エイミーに自動設定されていましたが、それはできないんですね。
バグだらけのゲームでしたが、移植しながらバグまで忠実に移植されたのか気になります
むしろさらにバグが多いかもしれません……。少しずつ改善していきます。
すごいですね.. わあ
ありがとうございます💪🏻
私も最近、小学生の頃に楽しく遊んだクラシックゲームをWebにポーティングしたいと思っていたのですが、こんな記事が上がってきましたね。動機や分析内容に関する文章をどこから持ってきてGeekNewsに載るのか気になります。
(笑)、私が投稿したので
https://github.com/NAMYUNWOO/forgottensaga_classic
リポジトリはこちらですね
❤️ありがとうございます
名前を間違えて入力してしまったのですが、どうやって消せますか? Esc の仮想ボタンが効かず、キーボードのバックスペースも効きません。ドキドキしますね
ありがとうございます(泣)
Backspaceが効かないバグは修正しましたが、全画面でescを押すと全画面が終了してしまう問題はまだ対応中です..
素晴らしいです!
ふふ、小さなファン心です..
素晴らしいです!
お褒めすぎです(笑) 😂
わあ、本当にすごいです。
ありがとうございます~~👍🏻👍🏻
うわ、本当にめちゃくちゃすごい
ありがとうございます。少しずつ完成度を高めていきます。
ありがとうございます。ありがとうございます。応援しています。
応援してくださってありがとうございます!