所持しているPSoneのBIOSを吸い出したかったもののテクニック的に大変そうで躊躇していたが、別の方法を試してみたらできたのでそれを書いておく。
PSP-3000を持っているのでPSPから初代PlayStationのBIOSは吸い出してあったのだけど、このBIOSはゲームの再生しかできないためメモリーカードの機能やCDプレイヤーの機能は使えない。それで十分といえば十分なのだけどせっかくPSoneを持っているのなら純正(?)のBIOSを吸い出しておきたかった。
手法としては以下のようになる:
- BIOSを吸い出したいPlayStationでunirom入りFreePSXBootをメモリーカードから起動
- 純正のPlayStationのゲームディスクを使いつつFreePSXBootからPS1 BIOS dumperを起動
- PicoMemcard+を使い1回の起動で5つに分割されたBIOSを吸い出す
- 書き込める空のCD-R
- CD-Rドライブ
- PS1 BIOS dumperのイメージ
- CDイメージを書き込むソフトウェア
unirom入りFreePSXBootを作成するのに必要なもの:
- PlayStation2(ここではSCPH-70000を使った)
- USBメモリー
- 自分は容量256MBとかいう大昔に買ったものを使った、容量が大きすぎるとPS2が認識しないらしくパーティションを切る必要があるらしい?
- メモリーカード(PS2)
- メモリーカード
- もしかするとサードパーティのメモリーカードやPicoMemcardでも代用できる?
メモリーカードにunirom入りFreePSXBootをインストールすることが目的になるのだけど、そもそもメモリーカードに(特殊な)データを書き込むのにメモリーカードソケットなどが必要となり大変なので、比較的簡単にそれができる上にツールがある程度は揃っているPS2を使うことになる。
手順としては以下の通り:
- FreeMcBootやFreeDVDBootやFortunaやFunTunaまたはOpenTunaなど、自作ソフトウェアを起動できる何かがインストールされたメモリーカード(PS2)をメモリーカードスロットに差し込む
- FreeDVDBootを駆使してFreeMcBoot(フォーク版のインストーラー)またはFortunaまたはFunTuna(非公式?インストーラー)またはOpenTunaをメモリーカード(PS2)に自前でインストールする
- AmazonなどでFreeMcBoot入りのメモリーカードを買う
- メモリーカードを空いたメモリーカードスロットに差し込む
- unirom入りFreePSXBootのデータを保存したUSBメモリーをUSB差し込み口に差し込む
- PS2を起動する
- uLaunchELF(またはwLaunchELF)でMemory Card Annihilatorを起動する
- Memory Card Annihilatorでメモリーカードにunirom入りFreePSXBootを書き込む
Memory Card Annihilatorを起動すると以下のような画面になる。ちなみに決定ボタンはXボタンでキャンセルはOボタンなので注意が必要。PS1向けメモリーカードに書き込みたいのでslot 2を選択する。
既に存在するイメージを書き込みたいのでRestore MC Imageを選択する。
mass0にはUSBメモリーが挿さっているので、選択してunirom入りFreePSXBootのイメージを探す。ちなみになぜか初期状態では表示されなくて、L2を押したらファイルマスクが「すべてのファイルを表示する」的なものになり目当てのファイルが表示されるようになった。対象のPlayStationはSCPH-100で、メモリーカードはSlot 2に挿して起動したいので freepsxboot-unirom-fastload-20220919-bios-4.3-2000-03-11-I-f2af798b-slot2.mcd をダウンロードしておいた。
書き込み中……
書き込めた。
PicoMemcard+の作り方は以下に書いた。
これで準備ができたので冒頭に書いた以下をする。
- BIOSを吸い出したいPlayStationでunirom入りFreePSXBootをメモリーカードから起動
- 純正のPlayStationのゲームディスクを使いつつFreePSXBootからPS1 BIOS dumperを起動
- PicoMemcard+を使い1回の起動で5つに分割されたBIOSを吸い出す
このあたりでlid(PlayStationのフタが閉められたと感知するセンサー、というかボタン)を何らかの形で押しておく(PS1 BIOS dumperを起動するまでlidを押しておく)。PSoneはlidが開くボタンの真下にありとても手では押せないのでつまようじでボタンを押していた(以降片手での操作になったので大変だった)。「BOOT CD->」のメニューに入ると「STOP DISC(MANUAL SWAP / NTSC-J)」というメニューがあるのでこれを選択して、ディスクの回転を止めたらPS1 BIOS dumperのディスクに入れ替えて「PLAY」メニューを選択する。
起動……
PS1 BIOS dumperが起動した。
1つずつ吸い出していく。
Part1を吸い出した。
というのを5回実行する。PicoMemcard+を使っているので、吸い出しが終わったらSTART+SELECT+TRIANGLEで新しいメモリカードを作成しつつ切り替え、となるので次のPartを順次吸い出していく。
吸い出し終わったらPS1 BIOS dumperに同梱されているBIOSmerge LinuxあるいはBIOSmerge Windowsで分割されているBIOSを結合する。
結合したBIOSのファイルが壊れていないかどうかはCRC32を出力させてみればわかる。macOSではcrc32 -file filenameを実行するとCRC32が出力されるのでuniromの「STATUS & SETTINGS」のメニューを選択した時に表示されるBIOS CRC32の値と比較してみて、合致すれば正常なファイルのはず。
BIOSが起動するかエミュレーターで試した。
動いている。
最初試した時にFreePSXBootからはPS1 BIOS dumperは起動できなかったので、起動できないものだと思い込んでいたのだけど以下の動画で同じことを考えて実行して起動しているのを見て、やはり原理的に問題ないはず、と改めて調査し直したらPS1 BIOS dumperのCD-Rが壊れていてきちんと書き込めていなかったことがわかった……
今思うとディスクスワップに何回かチャレンジした時でもチャレンジ自体は成功はしていて、単純にCD-Rが壊れていたせいでPS1 BIOS dumperが起動しなかったんだろうか。
昨今はストリーミングの時代になりCD-Rを調達するのがそもそも大変だったり、たまたま昔買っておいたDVDドライブがあったおかげでCD-Rが書き込めたけど、最近のマシンはディスクを入れるドライブが少なかったりするので旧世代のゲーム機に関連したなにかをやろうとすると、そもそも機材を揃えるところからになって大変だな……と思った。