CLIツール
bryanthaboi/gen1recomp avatar
bryanthaboi/gen1recomp

Gen1Recomp:LÖVE2D で ROM から初代ポケモンを再現する

bryanthaboi/gen1recompは実運用向けに使える実用的なオープンソース実装で、再利用可能な導入ルートを持つプロジェクトです。

スター 3,646フォーク 317CMIT
GitHub

ひと目でわかる

これは何?
Gen1Recomp は正規の米国版 ROM を SHA-1 で検証して読み込み、Lua エンジンと Mod 基盤で赤・青・ピカチュウほかを動かすプロジェクトです。エミュレーターではなく、ROM をデータソースとして扱います。
誰に向いている?
Gen1Recomp は ROM を同梱せず、正規カートリッジの SHA-1 が一致するファイルだけを受け付ける再現環境です。LÖVE 11.x と love . または配布ビルドで試し、gen1_faithful と modern_clean の差を options.lua に保存して比較する用途に向きます。
商用利用できる?
できます。MIT は寛容なライセンスで、著作権表示とライセンス表示を残せば、使用・改変・販売が可能です。
今もメンテナンスされている?
されています。直近 1 日以内に新しいコミットがあります。
何の言語で書かれている?
主に C です(GitHub の言語統計による)。

回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。

オープンソース詳細解説

エミュレーターではなく ROM を検証してデコードする

Gen1Recomp は LÖVE2D 上の初代ポケモン再現で、エンジンとマップ挙動は手書き Lua、グラフィックとゲームデータはプレイヤー提供 ROM からデコードされます。README は ROM 同梱なし、Game Boy エミュレーションなし、アセンブリ transpile なし、逆アセンブリ自動取得なし、と明記しています。

対象は正規米国版 Red、Blue、Yellow、Gold、Silver、Crystal です。ROM は import 時に検証され、メモリ上で使ったあと解放され、キャッシュへコピーされません。2 回目以降は生成キャッシュだけを読み、ROM を再要求しません。Gold/Silver/Crystal は Gen 2 Phase 1(import とランチャー)段階で、Crystal は README 上 Beta 表示です。

README は pret の pokered 逆アセンブリへの謝意を載せ、元コード理解の参照先として挙げています。Recomp は README 上「Reverse Engineering Causes Obsessive Mental Problems」の頭字語と説明されています。

Gen 2 の Gold、Silver、Crystal は docs/gold-phase1.md が参照先です。README は Gen 2 エンジンがまだ構築中で、Crystal が三つのなかで最も新しいためランチャー表示が Crystal (Beta) になると書いています。Red と Blue と同じ完成度で Gen 2 を遊べると読まない方がよいです。複数 ROM は並列 import でき、キャッシュは ROM 本体を保持しません。

gen1recomp[.]com なりすましサイトへの警告

README 冒頭の CAUTION は、gen1recomp[.]com が本プロジェクトと無関係で承認もされていない、と明記しています。運営者不明のサイトからのダウンロードは信頼しないよう求め、公式ソースは GitHub リポジトリ、Discord、https://gen1re.com のみ、としています。

README は当該サイトが広告入りになった、とも述べています。リンクが一時的に本リポジトリを指していても内容はいつでも変わり得る、という理由付けです。Gen1Recomp を試すなら GitHub Releases の sha256sums.txt で配布物を照合し、Windows Defender の Wacatac 誤検知について README が説明する VirusTotal 確認手順を参照するのが安全です。

SHA-1 ハッシュと初回 import の流れ

デスクトップアプリ初回起動では .gb / .gbc を選択するかウィンドウへドロップします。import は数秒で終わり自動的にゲーム開始、と README があります。受け付けるのは正規 1MiB(Gen1)または 2MiB(Gen2)米国版 ROM で、ゲームデータ作成前に SHA-1 を検証します。

README 記載のハッシュ例:Red `ea9bcae617fdf159b045185467ae58b2e4a48b9a`、Blue `d7037c83e1ae5b39bde3c30787637ba1d4c48ce2`、Yellow `cc7d03262ebfaf2f06772c1a480c7d9d5f4a38e1`、Gold `d8b8a3600a465308c9953dfa04f0081c05bdcb94`、Silver `49b163f7e57702bc939d642a18f591de55d92dae`、Crystal 1.0 `f4cd194bdee0d04ca4eac29e09b8e4e9d818c133`、Crystal 1.1 `f2f52230b536214ef7c9924f483392993e226cfb` です。

Gen1Recomp で import を試すときは、上記いずれかと sha256sum が README のリリース checksum と一致するビルドを使い、拒否された ROM のログと、2 回目起動で ROM 再要求が出ないことを記録すると README の説明と突き合わせできます。

gen1_faithful と modern_clean のバトル差

OPTIONS → RULESET で Gen1 バトル挙動セットを選びます。既定 gen1_faithful はカートリッジの癖を再現し、1/256 ミス、急所率が基礎素早さ参照、FOCUS ENERGY バグ、敵 PP 無限、HYPER BEAM が倒した相手でチャージ省略など README に表があります。modern_clean は同じダメージ式を保ちつつこれらを除去し、100% 命中技は必中、敵 PP 消費、能力段階が急所率へ影響します。

設定は options.lua に永続化され、Mod が独自 ruleset を登録できます。Gen1Recomp 上で同じセーブを gen1_faithful と modern_clean に切り替え、MISS 率や PP 減少をバトルログで比較すれば README の差分説明を実機で確認できます。

操作、性能段階、portable.txt

移動は矢印/WASD と D-pad、A/B/Start/Select は README の表どおりで OPTIONS → CONTROLS で再割り当てできます。ホットキーには `-`/`=` ズーム、`1` GAME SPEED、`2` COLORS、`3` TILT、`4` ZOOM、F1 セーブ、F2 ロード、F10 Mod マネージャーがあります。

OPTIONS → PERFORMANCE の HIGH/BALANCED/LOW/AUTO は演出だけを変え、固定ステップのゲームロジックは全 tier で同一、と README があります。AUTO は ARM handheld → LOW、phone → BALANCED、desktop → HIGH と説明されています。

デスクトップ portable モードは実行ファイル横に空の portable.txt を置くと、セーブ・options.lua・ROM 由来キャッシュが OS 既定ディレクトリではなくそのフォルダへ保存されます。USB 持ち運びを試すなら portable.txt 作成前後でセーブパスが変わることを確認してください。

LÖVE 11.x、Switch、Mod プラットフォーム

ソース実行には LÖVE 11.x が必要で、README は scripts/setup.sh、scripts/run.sh、love . を示し、Windows PowerShell 手順は Wiki へ委譲しています。リリースには iOS .ipa、Anbernic RG34XXSP 向け PortMaster 風ビルド、love-nx 11.5-nx1 固定の Switch zip があります。Switch はホームブルー対応 HW が必要で、作者 OLED とコミュニティ V1 実績が README にあります。

Mod プラットフォームはコンテンツレジストリ、イベント/フック、Mod 別セーブ/オプション、ゲーム内マネージャーを含み、Wiki に 12 段階チュートリアルと Tiled マップ export 手順があります。F10 で Mod マネージャーを開き、Mod 無効時に通常マップへ戻るかを v0.2.36 など対象リリースで記録すると README の機能表と一致するか確認できます。

ソースから動かす最短経路は scripts/setup.sh のあと scripts/run.sh、または love . です。Windows の PowerShell 手順は Wiki 側です。handheld 向けに PERFORMANCE を LOW へ固定すると 3D tilt と survey zoom が落ち、FPS 上限が掛かりますが、固定ステップのゲームロジックは変わりません。AUTO が選んだ tier と、options.lua に残る tilt/zoom 好みは別物で、低い tier は表示を隠すだけで設定を忘れません。

音楽合成とライセンス記載の空白

パッケージアプリに ROM も事前抽出データも含まれず、音楽・効果音・鳴き声は実行中に ROM からコピーした compact な audio channel プログラムから合成される、と README があります。エミュレーターの音源コアを丸ごと載せる方式ではなく、検証済み ROM から取り出した短いプログラムを再生時に使う、という説明です。ROM を渡さない限り音は出ません。

AI Use Disclosure は AIDisclosure.md へリンクされています。README 本文にはライセンス全文がなく、リポジトリメタデータは MIT です。Mod 公開や再配布の前に GitHub 上の LICENSE ファイルを直接読む必要があります。保証、有償サポート、セキュリティ監査の記述はありません。

Windows 版が Trojan:Win32/Wacatac!ml のようなヒューリスティックで弾かれる件は、未署名 exe に LÖVE のゲームアーカイブを末尾結合している配布形式が原因だと README が説明しています。各リリースに sha256sums.txt があり、VirusTotal では Defender 以外はクリーンと書かれています。除外設定をする前に、実行ファイルの SHA-256 が GitHub Releases の表と一致するかを先に見てください。

Gen1Recomp 導入チェックリスト(README 記載コマンドのみ)

1) GitHub Releases から取得した exe/AppImage の SHA-256 を sha256sums.txt と照合する。2) 手元 ROM の SHA-1 を README 表と突き合わせ、Gen1Recomp import を実行する。3) options.lua に gen1_faithful が書き込まれることを確認し、modern_clean へ切り替えて同一セーブで 1 戦記録する。4) portable.txt を置いたフォルダで F1 セーブ後、ファイルが隣接ディレクトリに現れるか見る。5) Mod マネージャー F10 を開き、Wiki の Tiled export Mod を 1 つだけ有効化してマップ差分を確認する。

Switch zip を試す場合は love-nx 11.5-nx1 固定と README の HW 要件をメモし、desktop 版とセーブ互換が README に無い限り共有しない方がよいです。Windows Defender が Wacatac を出したら README が案内する VirusTotal で同一バイナリを確認してから除外判断します。

編集部の結論

Gen1Recomp は ROM を同梱せず、正規カートリッジの SHA-1 が一致するファイルだけを受け付ける再現環境です。LÖVE 11.x と love . または配布ビルドで試し、gen1_faithful と modern_clean の差を options.lua に保存して比較する用途に向きます。gen1recomp[.]com など非公式サイトからの取得や、README にライセンス本文が無いまま再配布する用途には向きません。

公式情報源

  1. Official README
  2. Project repository
  3. Release notes
コミュニティノート

コミュニティノート