2023年09月07日
バグ発見A
連続バグ報告でスイマセン…。
Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」その@のロジック中にバグを発見しました。
「3Dロールプレイングゲーム」の制作中、プレイヤー移動用にジョイスティック入力処理追加したとたんに暴走しました。(フリーズ)
キーボード操作では、問題ありません。
原因は、ジョイスティックのボタン操作判定用のBIOS「GTTRIG」(&H00D8)。
メッセージ表示速度調整用の時間稼ぎループをBレジスタでループさせていて、そのループ中にボタン判定(WAIT飛ばし)しているため、Bレジスタの内容が壊れフリーズしたものと思われます。
「MSXテクニカルハンドブック」には、「GTTRIG」の使用レジスタは「AF」のみとなっているので、これを信じて他レジスタの退避していなかったのですが、よく考えたらジョイスティックを使うとなぜかBレジスタが壊れるんです。
このことは経験則で知っていたのですが、あまりに久しぶりだったので「MSXテクニカルハンドブック」を信じてしまいました…。
と、言う事で「GTTRIG」使う際には必要ならBレジスタを退避しなければなりません。(調べてないけど他のレジスタも?)
うーん、ブランクって怖いですね…。
2023年8月29日の記事、Laboratoryテーマ21「指定座標に指定サイズのメッセージウィンドウを開きたい」その@を再度改訂しました。
(サンプル自体はキーボード入力固定なので問題はありませんが、バグ有ロジック放置するのも嫌なので…。)
サンプルプログラムの再ダウンロードをお願いします。
ご迷惑おかけし申し訳ありません。
…ん?今回は私のせいなのか…?