Skip to content

Ver.261021-2

Choose a tag to compare

@Imaha486 Imaha486 released this 21 Oct 12:12
· 2 commits to main since this release

変更履歴

バージョンはリリースした日付(YYMMDD)です。新しいものが上です。

ver 261021

追加したこと

  • Trace=2(止まる・落ちるときの詳しい記録)。 終わったとき(ウインドウを閉じる・リセット)に、ゲームのフォルダへ次の 2 つを書き出します。
    • PC98PLAYER.DEBUG(テキスト): 終わったときの CPU のレジスタ・フラグ・コード・スタック・BP の鎖、PIC / PIT、起動の直後から変わった割込みベクタ(入った回数つき)、MCB の鎖、終わる前 10 秒の 1 秒ごとの様子(レジスタ・スタック・PIC・その 1 秒に入った割込みの回数)、割込みの長い記録(同じ割込みが続くものはまとめて回数を書く)、直近 8192 回の割込みと INT 21h の結果、直近 4096 回の I/O ポート、直近 16384 個の命令(実行する前のレジスタつき)。
    • PC98PLAYER.MEM: 1MB のメモリの中身そのまま。
    • Trace=2 の間は命令を 1 つずつ記録するので、少し重くなります。
  • 設定INI作成.html の「記録」で、Trace=2 を選べるようにしました。

直したこと

  • 割込みの入る位置によって、常駐するサウンドドライバのスタックが別のプログラムのコードを壊し、ゲームが止まったり未定義命令で落ちたりしていた不具合を直した。 スタックを元に戻すときに「SP を戻してから SS を戻す」順で書いている常駐プログラムがあり、その 2 命令の間に割込みが入ると、割込みの記録がまったく別の場所(あとから読み込まれたプログラムのコード)に積まれます。実機でもその 1 命令の間に割込みが入れば壊れますが、ほとんど当たりません。PC98PLAYER では割込みの入る位置が偏っていて何度も当たっていたので、SS を書き換える命令(MOV SS・POP SS)の直前では、割込みを 1 命令だけ待たせるようにしました。
  • Trace=1 の [stall] の記録に、割込みが禁止されたまま止まっているときは、最後に禁止した命令の場所も書くようにしました。