Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

English

VMU BIOS DUMPER

ドリームキャスト ビジュアルメモリ(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を抽出するツール(ブラウザ版)

必要なもの

使い方

1. BIOSバージョンの確認

お使いの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の自動探索を使用してください。 正しくないバージョンを選択した場合、フリーズすることがあります。その際はリセットボタンを押す、または電池を抜くなどして再起動してください。

2. BIOSDMP.VMSをVMUに転送

  • DreamShell等を使用して BIOSDMP.VMS をVMUに転送します。
  • VMUProやVM2を使って対象のVMUへ転送することも可能です。
    • VMUProの場合
      • BiosDumper-1.vmuをmicroSDのsd:\Dreamcast\BiosDumper\に配置しマウント(詳細
        • VMUProの接続機能を使う場合
          • 対象のVMUと接続してVMU BIOS Dumpを転送(詳細
        • ドリームキャスト本体経由で転送する場合(未確認)
          • ドリームキャストのメニュー画面のファイル管理画面からVMUProにあるVMU BIOS Dumpを対象のVMUにコピー

3. アドレスの検証

VMUでBIOSDMPを起動します。

dumper_00_title.png

BIOS DUMP
> PRESET    ← 既知のアドレスから選択
  CUSTOM    ← 任意のアドレスを手動入力
  PROBE     ← 自動探索(未知のBIOS用)

PRESET(既知のBIOSバージョン)

dumper_01_ver_select.png dumper_02a_addr_test_ok.png dumper_02b_addr_test_ng.png

  1. PRESET を選択
  2. お使いのBIOSバージョンを選択(JP1/JP2/JP3/EU/US)
  3. Aボタンで検証実行
  4. RSLT 04 が表示されれば成功 → Aボタンでダンプに進む
  5. RSLT NG の場合は別のバージョンを試す

CUSTOM(アドレス手動入力)

dumper_10_custom.png

  1. CUSTOM を選択
  2. D-padでアドレスを入力(上下で値変更、左右で桁移動)
  3. Aボタンで検証実行
  4. RSLT 04 になるアドレスを探す

ヒント: PROBE(自動探索)で見つかったアドレスの前後を試してください。RSLT 04 が正しいダンプ用入口です。なお、RSLT 04 でも誤検出の可能性があります。PROBEで確認済みのアドレスの近傍を使用してください。

PROBE(自動探索)

未知のBIOSバージョンの場合、自動探索でハイジャックルーチンのおおよそのアドレスを検出できます。

注意: PROBEによる自動探索は不完全です。既知のアドレスでしかデバッグできていないため誤検知や発見できない可能性もあります。また、探索作業はフリーズ・リセット・ツール起動の繰り返しの手作業となるので大変な時間を要します。

dumper_20_probe.png

  1. PROBE を選択
  2. 開始アドレスを設定(デフォルト: $0F00、D-padで変更可能)
  3. Aボタンで探索開始
  4. 画面に PROBING... ADDR XXXX と表示され、アドレスが自動的に変化していきます
  5. アドレスの変化が止まった場合 → フリーズです。電池を抜いて再起動してください。自動的に次のアドレスから探索を再開します
  6. FOUND XXXX と表示されたらルーチンの近傍アドレスが見つかりました

重要: FOUNDで見つかったアドレスはルーチン内の安全な位置であり、ダンプ用の正確な入口ではない場合があります。CUSTOMモードでFOUNDアドレスの前後(-30〜+0の範囲)を試し、RSLT 04 になるアドレスを見つけてください。

4. ダンプ領域の選択

検証成功(RSLT 04)後、Aボタンを押すとダンプ領域の選択画面に移ります。

dumper_03_area_selct.png

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 を使用

5. BIOSのダンプ

Aボタンでダンプが開始されます。

dumper_04_dumping.png dumper_05_done.png

  1. DUMPING ADDR XXXX と表示され、アドレスが進行します
  2. DONE が表示されたらダンプ完了
  3. Bボタンでツールを終了します

ALLモードの書き込み先

ROM範囲 Flash書き込み先
$0000-$BFFF Bank 0 $4000-$FFFF
$C000-$FFFF Bank 1 $0000-$3FFF

ファイルシステム領域(Bank 1 $4000以降)は上書きされません。

DUMP 1/2 + 2/2 の書き込み先

モード 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を実行してください。

6. データの転送・抽出

ダンプ完了後、VMUのデータをPCに転送します。

2. BIOSDMP.VMSをVMUに転送」の逆の手順でPCに転送。

1/2 + 2/2 モードの場合: 前半と後半のファイルを上書きしないように注意してください。

tools/bios_extractor.html をブラウザで開き、転送したデータからBIOSファイルを抽出します。

ALLモードでダンプした場合

  1. ALL タブを選択
  2. 128KBフラッシュダンプファイルをドラッグ&ドロップ
  3. Extract & Save をクリック

1/2 + 2/2 モードでダンプした場合

  1. 1/2 + 2/2 タブを選択
  2. 前半ファイル(DUMP 1/2)をドラッグ&ドロップ
  3. 後半ファイル(DUMP 2/2)をドラッグ&ドロップ
  4. Extract & Save をクリック
  5. ダウンロードフォルダに自動付与されたファイル名で保存されていることを確認

自動識別機能

抽出ツールはCRC32 + SHA1で既知のBIOSバージョンを自動識別します。

  • 既知のBIOS: 対応するファイル名を自動付与(例: jp1001-19980528-315-6124-02.bin
  • 未知のBIOS: BIOS内のバージョン文字列からファイル名を自動付与(例: vmu_bios_v1006_20010315_315-6300-01.bin

トラブルシューティング

アドレスの検証やPROBEでフリーズする

  • 正常な動作です。間違ったアドレスので実行するとフリーズします。
  • リセットボタンを押すか電池を抜いて再起動してください。
  • PROBEモードでは再起動後、次のアドレスから自動的に探索を再開します。

RSLT 04にならない

  • 別のPRESETアドレスを試してください
  • CUSTOMで前後のアドレスを1ずつ変えて試してください

ダンプデータが全て0x00/0xFF

  • アドレスが正しくない可能性があります
  • 検証で RSLT 04 が出るアドレスを使用しているか確認してください

抽出したBIOSファイルのサイズが64KBにならない

  • ALLモード: 入力ファイルが128KBであることを確認してください
  • 1/2 + 2/2モード: 入力ファイルが64KBまたは128KBであることを確認してください

既知のBIOS一覧

本ツールが自動識別する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 を参照してください。

About

Dreamcast VMU BIOS ROM dumper

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages