gpt4 book ai didi

assembly - 基本的 NES 仿真理论 - 我被卡住了

转载 作者:行者123 更新时间:2023-12-04 16:02:34 28 4
gpt4 key购买 nike

事先,我为这个问题的开放性和普遍的一厢情愿道歉,因为说实话,我对这个话题的了解非常零散,我发现甚至很难描述我的问题。我真的不想发帖,但我完全被卡住了。

我已经启动了一个 NES 模拟器。它被解释(所以没有动态重新压缩)。

Atm 它可以加载和映射 rom(映射器 0 rom)并执行初始化代码,直到我必须处理中断和 PPU 的位置。这就是我被困的地方。

这是我的 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 次迭代,包括循环计数、中断等(即绘制整个 240 扫描线屏幕并移动到下一个)。

最佳答案

那里有模拟器,你有没有查看他们的来源以获得答案?通常这些是为了性能而写的,可读性不是很强,但你可能会发现一些花絮让你继续前进。代码是否正在等待执行中断并且您是否执行了该中断?可能是中断修改了返回地址,让程序继续?无限循环是否在寄存器中轮询了一点?或者它是自我的无条件分支?

关于assembly - 基本的 NES 仿真理论 - 我被卡住了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3202221/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com