heh... Sounds good to me. Explains a few suspicions I've had about the state of the console universe.
Doesn't the SNES also have to pause when pulling data from the cartridge?
That's only for slow ROMs.
Load a 16bit value into a register from rom (given in master cycles - 21mhz):
lda #$1234 ;load accumulator with 16bit value $1234. This is a 3 byte instruction.
PC <opcode> fetch 6+2 cycles ;byte 1
PC+1 <operand> low fetch 6+2cycles ;byte 2
PC+2 <operand> high fetch 6+2 cycles ;byte 3
<internal operation> - happens on the same cycle as fetching the next opcode
PC+3 grab next <opcode>...
24 master clock cycles. The +2 are wait states and add 6 more cycles. This would be 3 CPU cycles at 2.68mhz
For fast rom and in the processor set to fast mode, it would be 18 master cycles or 3 CPU cycles at 3.57mhz. A 25% increase in speed.
It's easier to display this in master cycles otherwise you get fractional numbers for cpu cycles.
If you have the processor in 3.57mhz mode and you access WRAM:
lda <$00 ;load accumulator register with 16bit value from ZP register 00
PC <opcode> 6 cycles
PC+1 <operand> 6 cycles
<internal> fetch low byte 6+2 cycles
<internal> fetch high byte 6+2 cycles
that's 28 master cycles or 4.667 cpu cycles @ 3.57mhz because the work ram. Normally the instruction would take only 4 cycles if there were no wait states on WRAM. The instruction is now 14% slower or 3.06mhz.
The 65x based CPU requires a master clock higher than the clock rate of the chip. This is because the processor has a series of internal cycles that correspond to one clock cycle. Both the SNES and the PCE use a 21mhz master clock. The PCE divides this down by 3 to get 7.16mhz. The SNES divides this by 6 for 3.57mhz. It's always running at 3.57mhz but by default it boots with wait states on for ROM thus lowering cycle count down to 2.68mhz. On the PCE you rarely, if ever, see the instructions listed in master cycles. This is because there are no wait states like with the SNES.