Something that sounds really counterintuitive to me is the following scenario:
Consider PPU RAM: [0x2F00] 12 34 00 00 00 ...
Now loot at log:
E066 AD 07 20 LDA $2007 = FF A:00 X:00 Y:00 P:27 SP:FA CYC:307 SL:241 VRAM ADDR: 0x2F00
E069 AD 07 20 LDA $2007 = FF A:00 X:00 Y:00 P:27 SP:FA CYC:319 SL:241 VRAM ADDR: 0x2F01
E06C C9 34 CMP #$34 A:12 X:00 Y:00 P:25 SP:FA CYC:331 SL:241 VRAM ADDR: 0x2F02
What I expect imediatelly after the first LDA is: A = 12; then after the second LDA: A = 34. But it's completely weird to me
In my mind; It should works in this way:
E066 AD 07 20 LDA $2007 = FF A:00 X:00 Y:00 P:27 SP:FA CYC:307 SL:241 VRAM ADDR: 0x2F00
E069 AD 07 20 LDA $2007 = FF A:12 X:00 Y:00 P:27 SP:FA CYC:319 SL:241 VRAM ADDR: 0x2F01
E06C C9 34 CMP #$34 A:34 X:00 Y:00 P:25 SP:FA CYC:331 SL:241 VRAM ADDR: 0x2F02
Can you gimme a tip how understand this behavior? I already read Nesdev Wiki about VRAMADRESS and PPUDATA registers, but I can't understand what could be the reason for this behavior.
Thank you.
Consider PPU RAM: [0x2F00] 12 34 00 00 00 ...
Now loot at log:
E066 AD 07 20 LDA $2007 = FF A:00 X:00 Y:00 P:27 SP:FA CYC:307 SL:241 VRAM ADDR: 0x2F00
E069 AD 07 20 LDA $2007 = FF A:00 X:00 Y:00 P:27 SP:FA CYC:319 SL:241 VRAM ADDR: 0x2F01
E06C C9 34 CMP #$34 A:12 X:00 Y:00 P:25 SP:FA CYC:331 SL:241 VRAM ADDR: 0x2F02
What I expect imediatelly after the first LDA is: A = 12; then after the second LDA: A = 34. But it's completely weird to me
In my mind; It should works in this way:
E066 AD 07 20 LDA $2007 = FF A:00 X:00 Y:00 P:27 SP:FA CYC:307 SL:241 VRAM ADDR: 0x2F00
E069 AD 07 20 LDA $2007 = FF A:12 X:00 Y:00 P:27 SP:FA CYC:319 SL:241 VRAM ADDR: 0x2F01
E06C C9 34 CMP #$34 A:34 X:00 Y:00 P:25 SP:FA CYC:331 SL:241 VRAM ADDR: 0x2F02
Can you gimme a tip how understand this behavior? I already read Nesdev Wiki about VRAMADRESS and PPUDATA registers, but I can't understand what could be the reason for this behavior.
Thank you.