ワンダースワンのIPLを吸い出す

「BootFriend」の登場によりワンダースワンカラー/スワンクリスタルのIPLを簡単に吸い出すことができるようになりましたが、モノクロのワンダースワンのIPLには対応していません。ワンダースワンのIPLを吸い出すには少し手間がかかりますがup-n-atom氏が公開する「IPL Dumper」を使用します。

IPL Dumper
https://github.com/up-n-atom/wwsoft
https://github.com/up-n-atom/wwsoft/wiki/IPL-Dumper

こちらの方法はワンダースワンの互換機であるポケットチャレンジV2が起動画面をすっ飛ばして(IPLへのアクセスをロックする前に)カートリッジのプログラムを実行してしまうのを利用し、基板上をワイヤーでショートさせることで同じ状況を再現しIPLを吸い出すことを可能にしています。

必要なもの

・ワンダースワン本体
・ワンダーウイッチのカートリッジ
・シリアル通信ケーブル
・シリアルポートのあるパソコン
・ショートさせるワイヤーなど

モノクロのワンダースワン以外でも吸い出し可能ですがワンダースワンカラー、スワンクリスタルについては「BootFriend」を使った方が楽です。
またポケットチャレンジV2をお持ちなら本体をバラバラにしなくてもできるのでおススメです。

wwsoftの準備

IPL Dumperですがアセンブラのソースコードしか配布されていないため自身でコンパイルする必要があります。MSYS2などにnasmとperlがインストールされていればmakeするだけで必要となるファイル「wwsoft」が出来上がりますし下記を打ち込んでも大丈夫です。

nasm -f bin dumpipl.asm
perl -e ‘binmode STDIN; $/ = \1; while (<>) { print chr($b = ($. – 1) & 127 ? ord($_) ^ $b : ord($_) ^ 255); }’ < dumpipl > wwsoft

カートリッジの準備

「wwsoft」ができたらワンダーウイッチのカートリッジに書き込みます。ワンダーウイッチ専用にTransMagicというソフトもありますがここではTeraTermを使用します。

TeraTerm
https://ttssh2.osdn.jp

TeraTermを起動しSerialで適切なCOMを設定し起動、メニューのSetup→Serial Port…からシリアルポートの設定をしてください。おそらく通信速度が9600になっているので38400にしてください。

シリアル通信ケーブルでパソコンとワンダースワン本体とを接続、ワンダーウイッチのカートリッジを本体に差し込みBボタンを押しながら起動、「Freya Monitor」の画面が出たら「Recv Soft」を選択し待機状態にしておきます。

TeraTermのメニューからFile→Transfer→XMODEM→Send…から「wwsoft」を選択し転送します。

転送完了したらカートリッジの準備は完了です。

本体の準備

ワンダースワン本体の基板を1か所ショートさせる必要があるため分解、ディスプレイのフレキを取り外した状態にします。

この状態で電池とワンダーウイッチカートリッジを挿入し、電源が入る状態します。電源をONにして「ギュイーーン」と音がすればOK

IPLの吸い出し

ここから本題のIPLの吸い出しに入ります。
TeraTermのメニューからFile→Log…を選択し保存するIPLファイルの名前を入力します。Optionのバイナリに必ずチェックを入れてください。

次に分解したワンダースワン本体をシリアル通信ケーブルで接続し、このページを参考にワイヤーなどを使ってショートさせつつワンダースワン本体の電源を入れます。

するとTeraTermがデータを受信、しばらくしてデータの転送が止まれば成功です。もし起動音が鳴ったり転送が止まらない場合はTeraTermのログのあたりからもう一度やり直してください。

TeraTermのウィンドウにバグったような文字列が表示されているがこれでOK

吸い出しがうまくいったのならTera Term: Logのウィンドウを閉じる。

モノクロワンダースワンなら4KB、カラー、クリスタルなら8KBのファイルができるはず。

ポケットチャレンジV2からIPLを吸い出す場合はワイヤーでショートさせる必要がないため本体の分解がいりませんがカートリッジが刺さる状態にする必要があります。また吸い出したIPLはモノクロワンダースワンと同じ内容になります。

おまけ

ポケットチャレンジV2は
ワンダースワン

CPUであるASWANの84ピンを上げるとワンダースワンの起動画面を表示するようになりました。

N64Digital再販予告、アナログRGB出力機能搭載は最後のロット

3度目のN64Digitalの販売が予告されました。

「this Friday (10th) at 1PM ET」なので日本時間だと3月11日(土)のAM3時になります。
使用しているDACが廃盤になるためアナログRGB出力機能があるのはこのロットまでとなります。

ワンダースワンのカスタムファームウェア?「BootFriend」リリース

※起動画面が特殊な限定版本体へのインストールは推奨しません

これがどういうものがまだ把握していない上、一週間ほど出張で家を離れてしまうため簡単にですが、ワンダースワンカラー/クリスタル向けに「BootFriend」というカスタムファームウェアがリリースされました。

BootFriend for WS
https://wonderful.asie.pl/ws/bootfriend/

BootFriendとは

「BootFriend」はワンダースワンカラー/クリスタル向けのというカスタムファームウェアで、これを導入することで
– 起動時のロゴを変更可能
– “マルチブート” (シリアルケーブルを接続してソフトを転送、GBAのマルチブートみたいなもの)
– IPL(boot ROM)のバックアップ
– ゲームデータ、セーブの管理
– 外部の書き込み機(フラッシャー)なしにフラッシュカートリッジへの書き込み
ができるようになります!!

ワンダースワンのIPLとは、起動時に表示される画面や誕生日などの個人データの画面を表示するプログラムのことで、2019年になってやっと吸い出しができましたが本体に配線を繋げたり外部機器が必要だったりととても敷居の高い方法でした。

この「BootFriend」を導入することである程度機材は必要になるもののIPLを楽に吸い出しできるようになります。

用意するもの

とりあえずIPLを吸い出すことを目的に用意するものは
・ワンダースワンカラーまたはクリスタル本体
・フラッシュカートまたはワンダーウィッチのカートリッジ
・シリアル通信ケーブル
・シリアルポート(DSUB9ピン)の使えるPC

モノクロのワンダースワン本体は対応していません。今回はワンダーウィッチのカートリッジを使ってチャレンジしましたがフラッシュカートでもできるようです(古のWonder Magicのフラッシュカートが見つからないため未確認)。またワンダーウィッチ付属のシリアルケーブルまたは同等品を持っていないため、あやすけさんのHPを参考にシリアルケーブルを自作しました。

ワンダースワン その3
https://ayasuke2.exblog.jp/24852043/

dsub9ピンのケーブルは家にあったものをぶった切って、接続コネクタはワンダーウェーブに犠牲になってもらいました。

ざっくり
「BootFriend」転送、インストール→WS Backup Tool転送→IPL吸い出し
って感じです。

やり方

やり方についてはスクラップAさん (@scrap_a_) がわかりやすくまとめてくださっています。
インストール前にIEEPROMの内容をバックアップすることを忘れないでください!
とくに限定本体へインストールしたい場合は必ずバックアップしておいてください。

かんたん、簡単、超簡単、どっちかというとシリアルケーブル作ることと通信できる環境作る方がよっぽど大変でした。

また今回初めて知ったのですが、特殊な機材を使わなくともIPLを吸い出す方法がすでに確立されていたそうでこちらの方法を使えば1箇所配線が必要なもののモノクロからクリスタルまですべての本体のIPLを吸い出しできるそうです。

IPL Dumper · up-n-atom/wwsoft Wiki
https://github.com/up-n-atom/wwsoft/wiki/IPL-Dumper

追記 「BootFriend」の動作について

※2023/3/15 追記
「BootFriend」がどういう風に動いているのかなんとなくわかりました。起動時の画面を変更できることがサブの機能ではなくこれがメインというか本体でした。

ワンダースワン(モノクロ)は本体にユーザー情報を保存できる1kbit(128バイト)の内蔵EEPROM(Internal EEPROM、IEEPROMと呼ばれる)を持っていて、ワンダースワンカラー、スワンクリスタルではこれが16kbit(2048バイト)に拡張されています。

ところでワンダースワンカラー、スワンクリスタルの本体にはファイナルファンタジー、ガンダム、ワンピースなどの限定版があり、その中の一部は起動画面が特別なものに変更されている本体があります。単純に表示される画像を差し替えているわけではなく、ガンダムの頭やワンピースのどくろマークが表示されたり、ザクの目がぎょろっとうごいたりと専用の凝った起動画面を表示するようなプログラムが追加されています。

そのプログラムがどこに格納されているのかというと前述したIEEPROMの中で、IPL起動時に特定のフラグが立っていると通常の起動画面ではなくIEEPROMに保存された(起動画面を表示する)プログラムを実行する機能がワンダースワン本体にもともと組み込まれているのです。

「BootFriend」はこの本体側にもともと存在する機能を利用して起動画面を変えるついでに自作プログラムを実行できるようにしているのです。また、IPLがIPLへのアクセスをロックしカートリッジのゲームを実行する前に「BootFriend」へ制御が移るので、IPLを吸い出したりカートリッジロムを吸い出したりすることを可能にしています。

おそらくモノクロ本体が「BootFriend」に対応していないのは、モノクロのIPLが起動画面の変更に対応していないか、IEEPROMの容量が足りないためプログラムを配置できないためと思われます。
また起動画面が特殊な限定版本体へのインストールはIEEPROMのバックアップを忘れると起動画面を二度と戻せない可能性があるため推奨しません

「64HD」発表、もうすぐ予約開始

UltraHDMIやN64DigitalのようなN64をHDMI出力化&高画質化してくれるキットに新たに「64HD」というものが追加されそうです。

予約開始が12/13、自分で組み立てるキットが$109.99という情報のみで組み立て済みがいくらか、どんな機能を有しているのかはまだ発表がないため続報がまたれるところです。

2022/12/13
12/16に延期になりました

64DD Dump Tool v1.0-beta3 リリース

64DDの吸出しツール「64DD Dump Tool v1.0-beta3」が更新、公開されました。

64DD Dump Tool
https://github.com/LuigiBlood/64dddump

このバージョンでスキップダンプ時に発生していた不具合が修正されF-ZERO X エクスパンションキット等が正しく吸い出しできるようになりました。もし過去のバージョンで吸い出しをしていた場合はv1.0-beta3で吸い出しし直すことを推奨します。

また、マルチシステムエミュレーター「ares」で64DDのサポートが追加されました。Nightly Build版で64DDが動作することを確認しています。

Everdrive対応の64DDダンプツール開発中

N64の下に取り付ける、現在かなり高騰している64DD。そのディスクを吸い出すには「64DD Disk Dumper」というソフトを「64drive」という現在入手困難なハード上で動かすことが必要で、試すことができるユーザーは極端に少ないと思います。

そんな状況の中で64DD Disk Dumperの作者が不具合修正やEverDrive64にも対応すべく、新たに開発を始めたのが「64DD Dump Tool」です。

64DD Dump Tool
https://github.com/LuigiBlood/64dddump

64DD Dump Toolは、「64DD Disk Dumper」が64drive専用だったのに対しEverDrive64にも対応、64DDのディスクの吸い出し以外にもIPLロム、H8コントローラーロム、EEPROM、64DDレジスタ情報を吸い出しできるようになりました。

また「64DD Disk Dumper」は吸い出しに不具合があったらしく、ディスクを正しく吸い出しできるように修正されています。過去に吸い出しをしたことがある方は明らかにデータが違ってるのでこのツールを使ってもう一度吸い出しなおしたほうがいいかもしれません。

現在はまだベータ版扱いで必ずCRC算出するために吸い出しに時間がかかりますが64driveとEverDrive64 x7で動作することを確認しています。

64driveがなく試すことができなかった人はぜひディスク吸い出しにチャレンジしてみてください。

N64 PIFROMをダンプする

N64本体にはPIFROMやPIF Boot ROMと呼ばれる起動時にカートリッジ等のプログラムより前に実行され初期化等をするプログラムがあります。

CEN64やLarper64など一部のエミュではこれをダンプしたファイルが必要なのですが、自前でダンプするにはヒントはあるものの簡単にできる方法が公開されていませんでした。

私も吸い出してみようと試みましたが、割り当てられている0xBFC00000からの領域は通常アクセスできないようになっているらしくゲームシャークで吸い出しできず、海外のフォーラムを探しても(VR4300 COP0の適切なウォッチレジスタ??を使用して、PIFROMの実行中に読み取られたアドレスにウォッチポイントを配置、ウォッチポイントによって呼び出されたコード内のブートコードで使用されていないRDRAMの一部にPIFROMをコピー???)というヒントがあるもののさっぱりでした。

PIF-NUSを引っぺがしてどうにかならないか試している様子

Twitterでつぶやいても情報はありませんでした。

先日なんとなく「PIFROM dump」等検索してみると、
「N64 PIF ROM dumper」なるものが公開されているではありませんか!!!!!!

作者はhcs64氏、Neon64やN64のサウンドフォーマットUSF等で有名です。2020-06-01頃には公開されていたようです。気が付かなかった…

一応EverDrive64 X7と64drive(HW1)でPIFROMを吸い出しできることを確認しました。また64driveはCICチップの関係で起動できませんでしたがPAL版(ヨーロッパ地域向け)N64本体でも確認済みです。

N64 PIF ROM dumperを起動して下の画面になったらリセットボタンを押す。

「SAVING TO SRAM… OK」と出れば完了
もしED64等の画面に戻ってしまう場合はもう一度N64 PIF ROM dumperを起動する

保存された「pif_rom_dumper.srm」の0x0~0x7BFまでがPIFROMになりますが、エミュで使用する場合はPIFRAMを含む0x0~0x7FFまでの2048バイトをファイルに保存しておくといいようです。
CEN64やLarper64で動作することを確認しています。

なおPIFROMは正確なエミュレーションを行うにはあった方がいいですが、PIFROMがどんな動作をしているかは判明しており、動作をシミュレーションできるためProject64やmupen64plusなどほとんどのエミュでは必要ありません。必要な方、もの好きな方はやってみてください。

N64ポケモンスナップのプリントサービス

1999年に発売されたN64のポケモンスナップ。
野生のポケモンの様子を写真に収め集めていくゲームで、当時コンビニのローソンにポケモンスナップのカセットを持っていき、数週間ほど預けるとゲーム内のギャラリーに登録した写真をプリクラ風のシールにプリントしてくれるサービスを行っていました。

アメリカでも同じようなサービスが実施されており、日本とは違いスナップステーションと呼ばれる専用の端末がブロックバスターというレンタルチェーン店の店頭に設置され、ユーザーが持ち込んだカセットをスナップステーションで操作してプリントしたい写真を選択、その場でプリントするという内容でした。

おそらく日本でもスナップステーションと同じようなシステムでプリントを行っていたと思われますが詳しい情報がないためアメリカではどうだったのか、「Pokemon Snap Station 」の中身がどうなっていたのか調べてみると

  • Nick’s Pokemon Fan Site: Pokemon Snap Station
  • Using Pokemon Snap Station For First Time In 20 Years!
  • ざっくり説明すると、コントローラーの4Pコネクタに専用のハードを接続しているとギャラリーの写真表示モードになり、その表示画面をキャプチャボードで取り込み、プリンターで印刷する、というアナログなシステムだったようです。

    この4Pコネクタに接続する専用ハードについて何か情報がないか調べると、まさしくこれを解析している情報がありました。

  • Reversing the Pokémon Snap Station without a Snap Station
  • 上記サイトでは解析の内容とProject64に実装したforkや実機で使用できるFPGAなどが公開されています。日本語版ポケモンスナップではギャラリーからプリントできる機能はもともと存在せず、起動時にスナップステーションが接続されていればプリントモードになりました。


    ※追記
    A-ONEの写真シール(品 番29621)に印刷するとそれっぽくなる
    https://www.a-one.co.jp/product/search/detail.php?id=29621