基本的なNESエミュレーション理論 - 私は立ち往生しています
質問
事前に、私はこの問題の正直であることが非常に斑状であるため、私はこの質問の開放的な最善の恐れをお詫び申し上げます。私は本当に投稿したくなかったが、私は完全にそして完全に頑張りました。
NESエミュレータを開始しました。解釈されています(したがって、動的レシゴットなし)。
ATM ROM(Mapper 0 ROM)をロードしてマッピングし、割り込みやPPUを扱う必要がある場所までinitコードを実行できます。それは私が立ち往生しているところです。
私のEMU ATMからの出力例です。実行は8000で始まり、私はそこからの進歩方法がわからない800Aで無限ループを打ちました。
8002: LDA #$10 ; read immediate value to set PPU control registers
8004: STA $2000 ; store value
8007: LDX #$FF ; load immediate value into X register
8009: TXS ; store X register into stack
800a: LDA $2002 ; read PPU flags into accumulator (set N flag based on bit 7)
800d: BPL ; test N flag, branch to 800a if not positive, (N is set)
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
800a: LDA $2002
800d: BPL
etc, etc etc (inf loop)
.
私の質問は、サイクル数、割り込みなどのようなものを含む、PPUレンダリングを通して1回の反復の基本の基本を教えてください。次の)。
解決
eMULETOTETERがあり、あなたは彼らの答えの原因を見ましたか?通常、それらはパフォーマンスのために書かれていて、それほど読みやすくされていませんが、あなたはあなたが行くためのTIDBITを見つけるかもしれません。割り込みが実行されるのを待っているコードはその割り込みを実行しましたか?割り込みが戻りアドレスを変更し、プログラムが続行できることがありますか?無限ループはレジスタのビットをポーリングしますか?それとも、それは自己に無条件の枝ですか?
所属していません StackOverflow