CleanRIPの改造版

Wii/GCのディスクイメージを作成できる「CleanRIP」という自作ソフトがあります。

Disc Backup Tool for GC/Wii Discs
https://github.com/emukidid/cleanrip

DATEL製ディスク(例:PARなど)の吸い出しを試行錯誤する中で、CleanRIPをあれこれいじっていたところ、自分好みに改良したバージョンが完成したので公開します。

CleanRIP改
https://github.com/Nekokabu/cleanrip

以下は、現時点(2024年12月10日)のオリジナル版CleanRIPのリポジトリからの変更点:

・Force Read Modeを追加(spycrabの「2.0.0-datel2」に相当)
・DATファイルをダウンロードしないように変更
・ハッシュ値の計算を常に実行するように変更
・wii/gc/datel.datの情報を元に、ファイル名を自動変更する機能を追加
・レイヤー設定をディスクサイズ設定に変更

CleanRIPは、ディスクIDのファイル名でディスクイメージを作成しますが、DATEL製ディスクはすべて同じディスクIDを使用しているため連続して読み込むとファイルが上書きされたり、どれがどのファイルか分からなくなる問題が発生します。この問題を解決するためwii/gc/datel.datの情報を元に、ハッシュ値が一致する場合には自動的にファイル名を変更するようにしました。またハッシュ値が一致しない場合でも、「datel_xxxxxxxx」というファイル名で保存されるようにしたため、ファイルが上書きされることはありません。

また、redump.orgで推奨されている「2.0.0-datel2」の機能を、Force Read Modeとして追加しました。この機能は、リードエラーが発生しても強制的にデータを読み込むっぽい名前をしていますが、読み取れなかった部分を0x55で埋める仕様になっています。一応、DATEL製ディスクの場合のみ、Force Read Modeを有効にするか確認するようにしています。

さらに、Wii用Freeloaderに対応するため、ディスクサイズ「1.4GB」を追加しました。Force Read ModeをONにすると、Wii用Freeloaderの吸い出しも可能ですが、なぜかredumpのハッシュ値と一致しないことがあります。

その他の改良点として、USB Geckoのデバッグ出力を追加しています。

wii向けのDOLファイルだけ公開していますが、ソースコードから「make -f Makefile.gc」と実行するとGC向けのDOLファイルを生成できます。ただ、Wii本体ではPARなどをx01F00000まで読み取れるはずが、GC本体では0x01EF0000までしか読み取れない問題が発生するため、Wiiで使用することを推奨します。

2024/12/18
※リネームが正しくできていなかったので修正しました。
※同梱の「datel.dat」以外のdatファイルは、redump.orgのサイトからダウンロードし「wii.dat」、「gc.dat」にリネームし、ディスクイメージ保存先のSDカードやUSBメモリのルートに保存してください。

USBGeckoを使ったデバッグ出力

Wii/GCのHomebrew関係を片付けている際にUSBGeckoが出てきたので色々調べなおしています。
自作プログラム作成において本体からのデバッグ出力をUSBGeckoを介して取得できる機能があるのですがメモとして残しておきます。

USBGeckoとはIan Callaghan氏によるWii/GCの開発/ハッキングツールで、コンピューターのUSBポートとWii/GCメモリーカードスロットとを接続することでゲームなどの本体とのデータのやり取りをしたり、デバッガ的な使い方をすることができました。オリジナル版はすでに販売されていませんが本体のPCB設計図、回路図などが公開されているためいくつかクローンが作られており、現在は接続端子をUSB TYPE-Cに変更したものが販売されています。
USB Gecko (Type-C) debugging tool for GameCube/Wii – webhdx’s retro store
https://store.webhdx.dev/products/usb-gecko-type-c-debugging-tool-for-gamecube-wii

ドライバはFTDIのサイトからFT245RL向けのD2XX Driversをダウンロードし、インストールするか、おそらくWin10/11ならUSBケーブルを指せば勝手に認識されると思います。もしCOMポートが追加で認識されない場合は、「デバイスマネージャー」→「ユニバーサルシリアルバスコントローラー」から「USB Serial Converter」のプロパティ→詳細にある「Load VCP」等書いてあるところにチェックを入れて設定を保存したあと、USBケーブルを接続しなおせばCOMポートが認識されるはずです。

この時認識されたCOMポートの番号でTeraTermProなどで接続すれば実行中のデバッグ出力を取得することができます。

具体的なプログラミングは既存のプログラムのソースを見てもらえればいいかともいますが、例えばCleanRipならprint_gecko()関数で文字列を表示させればよいようです。
https://github.com/emukidid/cleanrip/blob/master/source/main.c#L1327

また、wiiへプログラムを転送するwiiloadはUSBGeckoからプログラムを転送することも出るのですが、「set WIILOAD=COM6」と入力するか、環境変数の設定にWIILOAD、値を先ほどのCOMの値を追加しておくと使えるようになります。