It may very well be a dumb one, I know.. Is the 2KB RAM (WRAM?) packed inside the Ricoh RP2A03 chip or is it onboard?
It's a separate 2KB static RAM chip.
So, would this be the complete list of "units" inside a 2A03?
- MOS Technology 6502
- Low frequency timer
- 2 rectangle wave generators
- Triangle wave generator
- Noise generator
- DMC
- DMA controller
By the way, I don't see where the term APU fits on. I mean, is it a grouping term for those audio oriented units (and their registers) inside a 2A03?
Thx.
More precisely, there should be internal adress decoding to audio register, and quite a handfull of hardware from those registers and from the audio timer to two separate 4-bit DACs (one for SQ1 and SQ2, the second for TRI, NOISE and DPCM/RAW).
Standard 6502 but without decimal mode.
I stand corrected.
Just one more thing. Why are zero page accesses faster than others? Just cause of them being one byte/fetch less?
Thx.
Yeah, they are faster just because there is one less byte to fetch, but this is the same memory.
Zero page instructions are 2 bytes long, so only 2 cycles are needed to read the full instruction. Instructions using absolute addressing are 3 bytes long, so 3 cycles are needed to read them. That's where the time is saved - the actual zero page access itself is no faster than any other memory access.
More evidence about zero page being just as fast internally is that on the 65816 you can set zero page anywhere in memory, and it's just as fast (as long as you put it on a 256-byte boundary).
And.. a little off topic, but I'm just curious. At blargg's PPU test "7.nmi_timing", error 8.. it says "NMI should occur if enabled when VBL already set". My question is, even if NMI is already enabled or just in the case the flag goes from 0 to 1?
Enabling NMIs from a disabled state ($2000.7 goes from 0->1) when $2002.7 is set triggers an NMI.
Just like $2002.7 going from 0->1 when $2000.7 triggers one.
I don't know if any games rely on this behavior.
Disch wrote:
Enabling NMIs from a disabled state ($2000.7 goes from 0->1) when $2002.7 is set triggers an NMI.
Just like $2002.7 going from 0->1 when $2000.7 triggers one.
I don't know if any games rely on this behavior.
Bases Loaded II does. If you don't implement this behavior, it'll glitch after a pitch is thrown.
Sorry for the necropost, but I just spent a bunch of time tracking this down and thought it might be helpful to someone else in the future.
James