Super Metroid Redesign を bsnes で動かすための完全手順
本ドキュメントは、Super Metroid Redesign が snes9x では動くが bsnes では起動しない問題を解決するための、
ROM選定・パッチ選択・ヘッダ削除・コマンド解説をまとめたものです。
1. どの ROM・どのパッチを選ぶか #
1.1 使用する ROM(最重要) #
以下の条件を すべて満たす ROM が必要です。
- Super Metroid USA版
- No Header(ヘッダなし)
- ファイルサイズ:3072KB(3,145,728 bytes)
❌ 使用してはいけない ROM #
- ダウンロードしたROM
- サイズが 3073KB のもの(= ヘッダ付き)
snes9x は不正な ROM でも起動することがありますが、
bsnes は実機基準のため正しい ROM でなければ起動しません。
1.2 使用する IPS パッチ #
Redesign には複数の IPS が含まれていますが、使うのは 1つだけ です。
| パッチ名 | 対象ROM | 使用可否 |
|---|---|---|
Metroid_Redesign.ips | ヘッダなし ROM | ✅ 使用する |
Metroid_Redesign_Headered.ips | ヘッダ付き ROM | ❌ 使用しない |
👉 ヘッダを削除した ROM には Metroid_Redesign.ips を使用します。
2. ヘッダの削除方法(WSL2 / Ubuntu) #
2.1 なぜヘッダを削除するのか #
.smcROM には 512バイトの余計なヘッダ が付いていることがある- IPS パッチは 実機アドレス前提
- ヘッダがあると、すべてのアドレスが 512Bずれる
結果:
- snes9x → 起動することがある
- bsnes → 起動しない(正常動作)
2.2 ヘッダ削除コマンド #
dd if="Super Metroid.smc" of="Super Metroid_noheader.smc" bs=512 skip=1 status=progress実行結果の確認 #
ls -lh Super Metroid_noheader.smc- 3072K になっていれば成功
3. dd コマンドの詳細解説 #
3.1 dd とは #
dd は バイト単位で生データをコピーする低レベルコピーコマンドです。
- ファイル構造や拡張子は一切無視
- 指定されたバイト数をそのまま読み書きする
3.2 各オプションの意味 #
dd if="Super Metroid.smc" of="Super Metroid_noheader.smc" bs=512 skip=1 status=progressif=Super Metroid.smc
#
- Input File(入力元)
- ヘッダ付きの元 ROM
of=Super Metroid_noheader.smc
#
- Output File(出力先)
- ヘッダを削除した新しい ROM
bs=512
#
- ブロックサイズ(512バイト単位)
- SNES の SMC ヘッダサイズと一致
skip=1
#
- 入力ファイルの最初の 1ブロック(512B)を読み飛ばす
- これが ヘッダ削除の正体
status=progress
#
- コピー進捗を表示(処理内容には影響なし)
3.3 処理内容を日本語で言うと #
「ROM を 512バイト単位で読み込み、
最初の 512バイト(ヘッダ)を捨て、
残りを新しい ROM ファイルとして保存する」
4. 正しい最終手順まとめ #
Super Metroid.smc(3073KB / ヘッダ付き)
↓ dd でヘッダ削除
Super Metroid_noheader.smc(3072KB)
↓ Metroid_Redesign.ips を適用
Metroid_Redesign.sfc(約4096KB)
↓
bsnes で起動5. 重要ポイントまとめ #
.smc / .sfcは拡張子であり中身は同じ- ヘッダは 実機には存在しない
- bsnes は「実機で動くか」を正確に判定する
- snes9xで動いたことは 正しさの証明ではない
6. 結論 #
- 問題の原因は ROMのヘッダとリージョン不一致
- bsnesは正しい挙動をしていた
- 正しい ROM + 正しい IPS + 正しい順序 で 必ず起動する