現在MAMEを改造してVectrexエミュの描画再現度を上げるために色々頑張ってるのだが、どうにもうまく行かない。実機の写真や動画を撮って比較しても良く分からない。
実機で様々な描画パラメータを指定できるテストプログラムが欲しいなと思いClaude Codeにお願いする。Vectrexにはサービス用にキャリブレーションパターンなどを表示する「Test Cart」ってソフトがあるので、これを参考にして作ってもらう。
Claude Codeに書いてもらうのは6809アセンブラニーモニック、LWTOOLSという6809開発ツールがあるのでサクッとビルドしてクロスアセンブラの実行ファイルのパスをClaude Codeに渡すとアセンブルからROMサイズチェックを通すための4KBバウンダリに整える処理までやってくれた。
「Test Cart」の一部画面で描画パラメータを色々と変えられるソフトを作るために試行錯誤して、なんとかMAME上で動作した。これをVecMultiに書き込んで実機に持っていくも動かない、ううむ。
またClaude Codeに相談して、一個ずつ実験コードを書いて実機で検証を繰り返してなんとか実機で動作するところまで持っていけた。ここまで結構大変だったけどちゃんと動く、凄い。
作った画面は固定画面で、蛍光面での残像チェックもやっておきたいので追加で新規ソフトを作ってもらった。Claude Codeに指示したプロンプトは下記の通り
実機での蛍光面の表示残光をチェックするソフトを作りたい、案は下記の通り。プランを提案してください
・ボールが一個直線に動き、画面端にぶつかると跳ね返る。角度はさほど細かくなくてもいいが最低でも30度以下にはしたい
・軌跡をランダムにするため跳ね返り角度はある程度の乱数要素を加味
・ボタン1でボールのIntensityを調整($0f->$7fまで段階)
・ボタン2でボールのSCALEを調整($0f->$ffまで段階)
・ボタン3でボールの速度を調整
・ボタン4でボールの大きさを調整、最小でドット、それ以外は直線で構成された菱形とする
・跳ね返る時に音が欲しい
・Intensity,SCALE,Speed,Sizeの数値を表示、数値のみでOK
他に案があるか、または実現が難しい要素があればその都度相談
コレ一発で実機で動く奴が出てきた。ボールが想定よりずっとデカかったのでサイズだけ調整してもらって、それを実機で動かして撮影したのが下の動画。
ボタン1と2でボールの輝度・描画スケールを調整、3と4で速度と大きさを調整。Claude Codeマジすごいね、パラメータによってはモニタが焼けそうなくらい眩しく光るけど動画じゃ伝わらない。
改めてVectrexの内部構造を把握したけどコレをプログラミングするのは相当しんどい。コストを抑えるには仕方がないんだけど、ベクターRAMから描画するサブプロセッサがあれば全然違っただろうに。
今回はVecMultiがあるから実機で動かすにはmicroSDにコピーするだけで楽だったけど、STARWARS基板+カラーベクターモニタでも同じような事がやりたいんだよな、でもROM交換はすごいめんどくさい。こういう時にラズパイPicoで書き込みできるROMシミュレータが便利なのだろうか、調べるか?