はじめに
公開されているFreePSXBootのメモリーカードイメージには、unirom8とよばれるツールが搭載されています。
unirom8は、ディスクの起動、PARなどのカートのファームウェアの入れ替え、リージョンの変更、メモリカードの操作やデバッガーを搭載しています。
本稿では、「unirom8 Home」を参考に、初代プレステで自作プログラムを起動する環境について、調べました。
メモリカードの操作
FreePSXBootと併用すると、メモリカードのフォーマットが可能です。また、マルチカードの場合、カードイメージの切り替えをすることが可能です。
ボタン操作
unirom8が起動しているときに、特定のボタンを押すと以下の操作が可能です。
・R1ボタンを押すと、カート内のプログラムを起動可能
・□ボタンを押すたびに、シリアルポートの転送速度を切り替えることが可能
・L1ボタンと□ボタンを同時に押すと、デバッグモードに移行可能
コンピュータとの間のシリアル接続関連
初代プレステのシリアルポートを介して、コンピュータとシリアル通信が可能です。unirom8では、Windowsで動作するNOTPSXSerial、略して、nopsを使用して、シリアル通信を行います。LinuxとMacではmonoを使うと、nopsを起動することが可能です。
・コンピュータ側から、exeファイルを初代プレステに転送して起動可能
・様々なバイナリファイルを転送可能
・カート内のROMにROMファイルを書き込むことが可能
・メモリーカードへのファイルの書き込みが可能
・メモリーカードの内容をダンプ可能
・RAMの内容をダンプ可能
・RAMの状態の監視
・RAMのPokeが可能
・ブレークポイントでの読み書きが可能
・特定のアドレスを呼び出しや移動が可能
・カーネルのデバッグモードへの入退が可能。
HEXエディタ
HEXエディタを利用可能です。
・L1 / R1:1ページ次あるいは前に移動
・L1 / R1 + Triangle:少し早く前後に移動
・L1 / R1 + Square:さらに早く前後に移動
・R2:RAM、EEPROM、BIOS等の1サイクル
・X: バイトごとの編集
・L2:あるアドレスに手動で移動(ヒント:R2を使って、最初に保存してから移動)
・Start / Sel:カーソルのある所からコードを実行
・Circle:エディタ終了
NOPSを使って、デバッグします。
おわりに
unirom8の機能は、github.ioに掲載のもの以外にもあるようです。そのような機能は、検索エンジンで直接、psxdev内の検索から、探す必要があります。