0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

kazuedaの活動記録2024Advent Calendar 2024

Day 25

M5Stackでつくる初代プレイステーション用ファイル転送サーバー

Last updated at Posted at 2024-12-24

はじめに

 初代プレステ(以降、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のボタンを使って、アップロードするファイルを選びます。
image.png
 転送用ボタンを押すと、プレステ側の画面が変わって「DOWNLOADING .EXE…」が表示され、転送が始まります
image.png
 ブロックごとにファイルが転送されているのが、M5StackのLCDに表示されます。
image.png
 ファイル転送が完了すると、プレステ上でuCLinuxが動作します。
image.png
 画面が流れているので、NTSC表示ではないようです。
image.png
 ドン・キホーテTV-171-BKだと、文字がずれてるけど静止して、表示されます。

おわりに

 M5Stack上のファイルをPS1に転送することができました。画面表示に修正の余地がありますが、目的の機能を実現することができました。
 ファイル転送後に、シリアルターミナルとしてPS1の起動の様子が表示されたり、M5Stackに接続したキーボードから入力できたりするとよいかもしれません。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?