NES on FPGA 2004/11/28

その他

 デバッグ用のインタフェースを記述しています。

_
▼ IRトレース

 内部ブロックRAMが余ったので、 CPUの命令レジスタをトレースする部分をくっつけました。 過去256命令を記録したものをシリアルポートから取得できます。

 現在は確認できていませんが、 ハードウエアエラーや未定義命令などでトレース結果が役に立ちそうです。

! すくねえ…
すくねえ…

_
▼ 7セグメントLED

 _
|_|  ←こいつ
|_|.

 8セグメントとは言わないんでしょうか。 評価キットの取り扱い説明書にあるピン配置で表示してみてもサッパリだったので調べなおしました。

CQ出版社 Spartan-IIE300評価キット向け

instruct seg7_set any{
   seg_data==0x0 : seg7 = 0b00111111;
   seg_data==0x1 : seg7 = 0b00000110;
   seg_data==0x2 : seg7 = 0b01011011;
   seg_data==0x3 : seg7 = 0b01001111;
   seg_data==0x4 : seg7 = 0b01100110;
   seg_data==0x5 : seg7 = 0b01101101;
   seg_data==0x6 : seg7 = 0b01111101;
   seg_data==0x7 : seg7 = 0b00000111;
   seg_data==0x8 : seg7 = 0b01111111;
   seg_data==0x9 : seg7 = 0b01100111;
   seg_data==0xA : seg7 = 0b01110111;
   seg_data==0xB : seg7 = 0b01111100;
   seg_data==0xC : seg7 = 0b00111001;
   seg_data==0xD : seg7 = 0b01011110;
   seg_data==0xE : seg7 = 0b01111001;
   seg_data==0xF : seg7 = 0b01110001;
}

_
▼ FPGAボードと楽にデータ送受信したい

VirtualJTAGを使ってUSB-Blaster経由でデータ送受信できるようになりました。 解説はこちら

_
▼ TASさんのプレイって見るの楽しいよね 2024/03/15

ゲームプレイで動作確認しようにも、 FPGAボードに容易にゲームパッドが接続できないことも多い。 ただデモ画面を見つめるのは侘しいので、 キー入力情報をSDカードから入力できればいいのでは!?と考えた。 そして自動キー入力と言えばTASである。

TAS(Tool-Assisted Superplay(Speedrun))の記録は [TASVideos] にまとまっていて、それぞれのゲームに対するキー入力ファイルや実行動画が公開されている。 TAS成果のファイルフォーマットとして .fm2 と .bk2 が扱いやすい。 .fm2はテキストファイルとしてそのままキー入力が記録されている。 .bk2は展開すると Input Log.txt が含まれていて、これがキー入力となっている。 それぞれテキストベースで、各行がそのフレームで入力するキー情報となっている。 以下は Input Log.txt の一部で、マリオがBダッシュしながらジャンプしているところ。

|..|...R..B.|
|..|...R..B.|
|..|...R..B.|
|..|...R..B.|
|..|...R..B.|
|..|...R..BA|
|..|...R..BA|
|..|...R..BA|
|..|...R..BA|
|..|...R..BA|
|..|...R..BA|
|..|...R..B.|
|..|...R..B.|

まずは自作エミュで実行してみて問題なし。 FPGAの方にもロジックを追加してみた。 一行を読み込みつつキー入力文字があればキー入力バッファの該当ビットに1を立てる。 これをVSyncのタイミングでバッファからキー入力レジスタに更新する。 コードはこのあたり

キー入力情報は約数百kByteほどあり、どうFPGA内にバッファしようかと思ったけど、 60fpsで1フレームが約16.6msecに対し、SDカードからの1行の最大読み込み時間が約3.3msecほどのため、 全てをバッファする必要はなく、毎フレーム Input Log ファイルから1行分読み込んでいる。

SNES on FPGAの方にも同様に実装してみたけど、 どうもフレームタイミングが合わず正常に動作しない。 DMAやAPUとの通信あたりでTASリファレンスエミュとの違いがあるのか何なのか調査中。


Copyright(C) pgate1 All Rights Reserved.