ドリームキャスト ビジュアルメモリ(VMU)のBIOS ROMをダンプするためのツールセットです。
- 本ツールの使用により生じたデータの破損等について、一切の責任を負いかねます。VMU内のデータは事前にバックアップの上、自己責任にてご利用ください。
- 本ツールは個人によるアーカイブ目的の技術ツールであり、VMUのBIOSそのものへの権利を付与するものではありません。VMUのBIOSはSEGAの著作物です。ユーザーによる違法な配布や利用を推奨・助長するものではなく、抽出したBIOSデータの取り扱いについてはユーザー自身の責任で適用される法令を遵守してください。
- 本プロジェクトはSEGAとは一切関係なく、公式の支援・承認・関連を受けたものではありません。
VMUのBIOS(64KB)はフラッシュメモリとは別の内部ROMに格納されており、通常のプログラムからは直接読み出せません。本ツールはVMUのスタンドアロンアプリとして起動し、強制的にROM内のBIOSデータを読み出しフラッシュメモリに書き込みます。
| ファイル | 説明 |
|---|---|
BIOSDMP.VMS / BIOSDMP.VMI |
VMU用のスタンドアロンアプリ |
BiosDumper-1.vmu |
上記VMS,VMI導入済みのVMUファイル(フラッシュメモリ) |
tools/bios_extractor.html |
ダンプ後のフラッシュメモリのデータからBIOSを抽出するツール(ブラウザ版) |
- VMU(ダンプ対象)
- 新品のCR2032x2
- 対象VMUとPC間のデータ転送手段(DreamShell + SDカード、DreamcastControllerUsbPico、VMUPro、VM2など)
お使いのVMUのBIOSバージョンに対応するハイジャックアドレスを確認します。
既知のアドレス一覧:
| バージョン | アドレス | 備考 |
|---|---|---|
| JP1 | $1963 |
日本版 初期 (v1.000/v1.001/v1.002) |
| JP2 | $1966 |
日本版 中期 (v1.004/v1.005) |
| JP3 | $0F78 |
日本版 後期 (v1.005, 2000年) |
| EU/US | $0F4F |
EU/US版 (v1.005) |
| Other | $0F4D |
E3 1999 Spring版 (v1.005) |
お使いのVMUがどのバージョンか不明な場合は、PRESETやCUSTOMから上記の各アドレスを試すか、PROBEの自動探索を使用してください。 正しくないバージョンを選択した場合、フリーズすることがあります。その際はリセットボタンを押す、または電池を抜くなどして再起動してください。
- DreamShell等を使用して
BIOSDMP.VMSをVMUに転送します。 - VMUProやVM2を使って対象のVMUへ転送することも可能です。
VMUでBIOSDMPを起動します。
BIOS DUMP
> PRESET ← 既知のアドレスから選択
CUSTOM ← 任意のアドレスを手動入力
PROBE ← 自動探索(未知のBIOS用)
PRESETを選択- お使いのBIOSバージョンを選択(JP1/JP2/JP3/EU/US)
- Aボタンで検証実行
RSLT 04が表示されれば成功 → Aボタンでダンプに進むRSLT NGの場合は別のバージョンを試す
CUSTOMを選択- D-padでアドレスを入力(上下で値変更、左右で桁移動)
- Aボタンで検証実行
RSLT 04になるアドレスを探す
ヒント: PROBE(自動探索)で見つかったアドレスの前後を試してください。
RSLT 04が正しいダンプ用入口です。なお、RSLT 04でも誤検出の可能性があります。PROBEで確認済みのアドレスの近傍を使用してください。
未知のBIOSバージョンの場合、自動探索でハイジャックルーチンのおおよそのアドレスを検出できます。
注意:
PROBEによる自動探索は不完全です。既知のアドレスでしかデバッグできていないため誤検知や発見できない可能性もあります。また、探索作業はフリーズ・リセット・ツール起動の繰り返しの手作業となるので大変な時間を要します。
PROBEを選択- 開始アドレスを設定(デフォルト:
$0F00、D-padで変更可能) - Aボタンで探索開始
- 画面に
PROBING... ADDR XXXXと表示され、アドレスが自動的に変化していきます - アドレスの変化が止まった場合 → フリーズです。電池を抜いて再起動してください。自動的に次のアドレスから探索を再開します
FOUND XXXXと表示されたらルーチンの近傍アドレスが見つかりました
重要: FOUNDで見つかったアドレスはルーチン内の安全な位置であり、ダンプ用の正確な入口ではない場合があります。CUSTOMモードでFOUNDアドレスの前後(-30〜+0の範囲)を試し、
RSLT 04になるアドレスを見つけてください。
検証成功(RSLT 04)後、Aボタンを押すとダンプ領域の選択画面に移ります。
AREA SELECT
> ALL ← 64KB一括ダンプ(推奨)
DUMP 1/2 ← 前半32KBのみ
DUMP 2/2 ← 後半32KBのみ
| モード | 用途 | 抽出方法 |
|---|---|---|
| ALL | 64KB一括ダンプ | 128KBフラッシュダンプで抽出 |
| DUMP 1/2 | 前半32KB | VMS(64KB)またはフラッシュダンプで抽出 |
| DUMP 2/2 | 後半32KB | VMS(64KB)またはフラッシュダンプで抽出 |
- 128KBフラッシュダンプが可能な場合(DreamShell等)→ ALLを使用
- VMS抽出のみの場合(VMUPro等)→ DUMP 1/2 + DUMP 2/2 を使用
Aボタンでダンプが開始されます。
DUMPING ADDR XXXXと表示され、アドレスが進行しますDONEが表示されたらダンプ完了- Bボタンでツールを終了します
| ROM範囲 | Flash書き込み先 |
|---|---|
| $0000-$BFFF | Bank 0 $4000-$FFFF |
| $C000-$FFFF | Bank 1 $0000-$3FFF |
ファイルシステム領域(Bank 1 $4000以降)は上書きされません。
| モード | ROM範囲 | Flash書き込み先 |
|---|---|---|
| DUMP 1/2 | $0000-$7FFF | Bank 0 $4000-$BFFF |
| DUMP 2/2 | $8000-$FFFF | Bank 0 $4000-$BFFF(上書き) |
同じフラッシュ領域に上書きされるため、DUMP 1/2のデータをPC等に転送した後に、DUMP 2/2を実行してください。
ダンプ完了後、VMUのデータをPCに転送します。
「2. BIOSDMP.VMSをVMUに転送」の逆の手順でPCに転送。
1/2 + 2/2 モードの場合: 前半と後半のファイルを上書きしないように注意してください。
tools/bios_extractor.html をブラウザで開き、転送したデータからBIOSファイルを抽出します。
ALLタブを選択- 128KBフラッシュダンプファイルをドラッグ&ドロップ
Extract & Saveをクリック
1/2 + 2/2タブを選択- 前半ファイル(DUMP 1/2)をドラッグ&ドロップ
- 後半ファイル(DUMP 2/2)をドラッグ&ドロップ
Extract & Saveをクリック- ダウンロードフォルダに自動付与されたファイル名で保存されていることを確認
抽出ツールはCRC32 + SHA1で既知のBIOSバージョンを自動識別します。
- 既知のBIOS: 対応するファイル名を自動付与(例:
jp1001-19980528-315-6124-02.bin) - 未知のBIOS: BIOS内のバージョン文字列からファイル名を自動付与(例:
vmu_bios_v1006_20010315_315-6300-01.bin)
- 正常な動作です。間違ったアドレスので実行するとフリーズします。
- リセットボタンを押すか電池を抜いて再起動してください。
- PROBEモードでは再起動後、次のアドレスから自動的に探索を再開します。
- 別のPRESETアドレスを試してください
- CUSTOMで前後のアドレスを1ずつ変えて試してください
- アドレスが正しくない可能性があります
- 検証で
RSLT 04が出るアドレスを使用しているか確認してください
- ALLモード: 入力ファイルが128KBであることを確認してください
- 1/2 + 2/2モード: 入力ファイルが64KBまたは128KBであることを確認してください
本ツールが自動識別するBIOSバージョンの一覧は KNOWN_BIOS.md を参照してください。
- VMUのCPU(LC868700)はROM空間とフラッシュ空間を
NOT1 EXT,0+JMPF(CHANGE命令)で切り替えます - ROM内のルーチンは
LDC命令でROMデータを読み、ST VTRBFでワークRAMに転送します - ROM
$E024の制限なしフラッシュ書き込み関数を使用し、Bank 0/1の任意の位置に書き込みます - 全BIOSバージョンで
$E024のジャンプテーブルと書き込み関数($E3CE)は共通です - 詳細は VMU Hacking (Dmitry.GR) および Visual Memory Madness (Kingizor's Blog) を参照
本ツールの開発にあたり、以下の方々の先行研究・技術資料を参考にさせていただきました。
- Marcus Comstedt — VMUのファイルフォーマット等の各種資料(Dreamcast Programming)
- dknute — BIOSハイジャック手法の考案(2008年のブログ記事)
- Kingizor — ハイジャックルーチンの探索最適化(22+4+4パターン)および複数BIOSバージョンのダンプ実績(Visual Memory Madness)
- Dmitry.GR — ROM
$E024制限なしフラッシュ書き込み関数の発見およびROP技術の応用(VMU hacks (&C-M23 emulator)) - Falco Girgis — 開発時の動作検証に活用(VMUエミュレータ ElysianVMU)
詳細は LICENSE を参照してください。