2019年10月2日の日記の1番目の記事へのコメント
■基板
IONA-JSでは、サービススイッチのピン(基板上のTXD)をシリアルのデバッグ出力に使えるようなので、クレジットの処理がおかしなコナミ80'sアーケードギャラリーで何が起きているのか、デバッグメッセージを出力させるようにして調べてみることに。
デバッグメッセージ出力自体は、MakefileのCFLAGSから「-DNO_DEBUG」を消してmakeし直せば有効になるようです。また、シリアル出力は、Arduino Unoで受けて表示することができます。こちらで紹介されているArduino Uno同士のシリアル通信の受信側のプログラムを下記のようにいじって、PCからArduino Uno側に書き込み、そのままArduino IDEのシリアルモニタを開いておきます。
void setup(){ Serial.begin(115200); Serial.println("Start reading."); } void loop(){ while(Serial.available()){ char inChar = char(Serial.read()); Serial.print(inChar); } }
で、IONA-JSとArduino UnoのGNDを繋いだ上で、IONA-JSのTXDをArduino UnoのRXに接続。
これで、IONA-JSのデバッグ出力が、PCのシリアルモニタに出てきます。さて、気になる基板側の挙動はと言うと・・・。何と、起動直後、リセットを打ち込んだ後で「コインスロットのindexに0を指定してクレジットを0減らす」という、謎の空コマンドを打ち込んで来ていることが判明。
ということは、これをトリガとして、indexに0を指定してくる規格違反(?)の基板ということを検出 → この基板は「コインスロットのindexが0ベースの変な基板」として扱う・・・ということをやってやれば、今回の問題はシンプルに解決できそうですね。
ちなみに、実際、1P側のクレジットを叩くとindex = 0のコイン減算コマンドが、2P側のクレジットを叩くとindex = 1のコイン減算コマンドが、それぞれ基板から送られてくることは確認済みです (「SubCoin」の次の行に表示されている3文字の1文字目がindexで3文字目が減算するコイン数)。
しかしこの挙動、何なんでしょうね。ソフトが悪いのか、マザーボードのBIOS (?) が悪いのか、あるいは単に初期のJVS規格だとこれが普通だったのか・・・。後で、他の573のソフトと入れ替えるとか、他の573マザーにコナミ80'sギャラリーを入れてみるとかして、調べてみましょう。
ちなみに、IONA-JSのシリアル出力、あっさり認識できたように書いていますが、実は当初、何も考えずにDsub9ピン経由でPCのUSB-シリアル変換アダプタを通してPCに接続してしまい、全然データが拾えずに超ハマっていたりしますw (信号レベルがRS232Cと全然違うはずなんで、拾えるわけないんですよね・・・恥ずかしい・・・)
2019年10月2日の日記の1番目の記事へのコメント
[コメントを書く]