はじめに
初代プレステ(以降、PS1)でunirom8というユーティリティソフトを起動すると、シリアルポート経由で自作プログラムを転送可能です。
unirom8では、転送元でwindowsプログラムの「nops.exe」を使うことが推奨されています。
転送プログラムを動作するためだけに、windowsマシンを用意するのは大変です。マイクロコントローラのボードを活用できれば、PS1よりも小さくできますし、電源をPS1からとることも可能となります。
Pythonプログラムだとマイクロコントローラにも利用可能なので、「sioload.py」をunirom8対応に改良しました。詳細は、kazuedaの活動記録2024の12月23日の記事「ファイル転送プログラムsioload.pyをLLMを使ってunirom8対応にする」で紹介しています。
さらに、ESP32搭載のボタンと画面のついているM5StacGrayで動作すると、可搬性と操作性の両方が高まります。
本稿では、改良版sioload.pyを参考にM5StackGrayで動作するArduino IDE用CPPファイルを作成したので紹介します。
本稿の内容は、「東海道らぐの万鹿博覧会ライトニングトーク大会 in 大阪南港」での発表内容を含みます。
M5StackGray
320x240のTFTLCDが搭載されており、画面下に3つの物理ボタンがついています。マイクロコントローラとしてESP32を搭載しているので、Arduino IDEを使って開発が可能です。
LLMを使った移植
改良版sioload.pyをアップロードし、sioload.pyの動作の解説をLLMに行わせます。
次に、sioload.pyをM5StackGrayを対象としたCCPファイルへの移植をLLMに行わせます。その際に、追加機能として、SDカード上の指定したディレクトリに保存したファイル名の表示、指定したディレクトリ内のファイルをボタン操作で選択、ファイル選択後にボタンを押すことでのファイル転送、を付け加えるよう指示しました。
Arduino IDE上でコンパイルしたのち、M5Stackに書き込みます。特にエラーは出ませんでした。
実際の動作
初代プレステ用uCLinuxのカーネルを転送して、カーネルパニックになるのを確認します。
使用したカーネルは以下のサイトのものです。
M5Stackのボタンを使って、アップロードするファイルを選びます。
転送用ボタンを押すと、プレステ側の画面が変わって「DOWNLOADING .EXE…」が表示され、転送が始まります
ブロックごとにファイルが転送されているのが、M5StackのLCDに表示されます。
ファイル転送が完了すると、プレステ上でuCLinuxが動作します。
画面が流れているので、NTSC表示ではないようです。
ドン・キホーテTV-171-BKだと、文字がずれてるけど静止して、表示されます。
おわりに
M5Stack上のファイルをPS1に転送することができました。画面表示に修正の余地がありますが、目的の機能を実現することができました。
ファイル転送後に、シリアルターミナルとしてPS1の起動の様子が表示されたり、M5Stackに接続したキーボードから入力できたりするとよいかもしれません。