4 ポイント 投稿者 namyunwoo 2 시간 전 | まだコメントはありません。 | WhatsAppで共有

Forgotten Saga(1997年の韓国製DOS RPG)をソースポートする

動機

  • 30年前、小学生のときに初めて買ったパッケージゲームがForgotten Saga
  • 人生初のRPGで、自然とのめり込んだ
  • 20年以上忘れていたが、今でも多くの人が遊んでいることを知った
  • 「これをマルチプラットフォームのゲームにできないか?」
  • 残っていたのは1997年のPE32実行ファイルとデータファイルだけ(当然ソースコードはない)

アプローチ

  • オリジナルゲームを再現する方法は大きく2つ
    • 仕様ベースの再解釈 — ゲームプレイを見て似たように作り直す
    • オリジナルの関数単位で忠実に復元 — デコンパイルしたコードをそのまま移植する
  • 後者を選択。推測ではなく、検証済みのオリジナル動作に従うため
  • オリジナルは1997年のWindows MSVC

解析した内容

オリジナルbinaryのデコンパイル

  • 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フレーム。0xA4 header + 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を検証
  • 以前の誤ったマッピング(0x3C ATK→STR, 0x40 INT→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.sh test 実行(100+ test mode, 1,000+ assertion)
  • ブラウザ環境デバッグ(IDBFS / IME / SharedArrayBuffer など)
  • ユーザー報告を受けたら デバッグ → fix → dev配信 → 検証 → live配信 のサイクル

作業期間

  • 約1〜3か月

どんな成果物か

  • Play(ブラウザ): https://forgottensaga-classic.blogspot.com/2026/05/…
  • PC / モバイルの両方で動作。モバイルは仮想ジョイスティック + 韓国語IMEを独自実装
  • オリジナルのゲームプレイを忠実再現 — Zソート、パレットサイクル、NPCステートマシン、SCP VM などオリジナル動作を1:1で再現

まだコメントはありません。

まだコメントはありません。