https://github.com/suzukiplan/M6502
そのテストをするためにファミコンエミュレータを開発中です。
https://github.com/suzukiplan/OpenNES
NesDev Wikiで公開されているテストコードを全部通すことが当面の目標。
https://wiki.nesdev.com/w/index.php/Emulator_tests
とりあえず、branch_timing_testsは無事全部通りました。
この勢いで、cpu_dummy_readsも通そうとしたのですが、失敗...
CPU Dummy Readsってそもそも何?と思い、スレッドを確認。
https://forums.nesdev.com/viewtopic.php?p=31629
absolute X、indirect Yでページがクロスオーバーするとpenalty clockが発生するのですが、その時、
ldx #$22 lda $20E0,x ; dummy read from $2002 ldx #$22 lda $20E2,x ; dummy read from $2004 ldx #$22 lda $3FE0,x ; dummy read from $3F02
という感じでdummy readが発生するらしい。
という訳で対策
https://github.com/suzukiplan/M6502/commit/ff19b729a7132554ea4be5a714ca894fade489d2
absolute Yの時についてはスレッドで言及されていなかったのですが、一応absolute Yの時にもdummy readする感じにしてみました。(これが正しいかは不明)
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。