Are there any special memory locations that are reserved between $0000 to $0800, besides the normal 6502 stuff? (zero page between $00-$FF, and the stack at $100-$1FF) I'm running my code on Michal Kowalski's 6502 simulator, and it runs fine, but when I try to run it on the "real thing" I get mixed results. I'm not using the PPU at all, just reading/writing to a memory location for I/O.
No there is no reserved location.
If you don't use PPU at all be sure to write at least once #$00 to $2000 and $2001 to proprely turn it off.
Once you turn it off, can it be turned back on again?
If so,
how?
Thanks
???
Writing $1e for example to $2001 will turn it on.
Well, actually turn if off is wrong, I mean disable it, you don't actually turn the thing off, if it makes things clearer.
if both BG and Sprite rendering are disabled, the PPU enters an inactive state (which is referred to as its "off" state, even though it is technically still on). To turn it back on... just re-enable BG or Sprite rendering (or both) via $2001.
To elaborate more, the PPU is never turned off or disabled. It always responds to basic CPU requests. What can be turned on/off is graphic rendering. When on, many PPU operations are only available during the short vertical blanking interval when the video display is preparing to display a new frame (about 8% of the length of a frame for the NTSC PPU). When off, these operations are available at any time. This to allows a game to more quickly load its graphics as almost 12 times the amount of work can be done with PPU rendering off.