So far all of our programs have been using a slowrom model. However, ROM
access can be increased from 2.56 Mhz to 3.58 Mhz. There is more to it
than just telling the SNES to run faster though..
There are several steps involved in getting your rom to work correctly
with FastRom enabled. I've only done this in a LoRom model so this is
what I'm going to teach for now. We'll cover HiRom some other time..
1) Set bit 0 of $420d
2) Set Programming and Data banks to $80
It's pretty simple. In the SNES, rom bank $80 onwards is a mirror of $00 onwards
(w/ some exceptions). You just have to set the bank to $80 on Reset and on every interrupt
since they automatically use bank $00. There are 2 steps to this:
1) do a long jump to the next instruction with the bank = $80
2) Push the program bank onto the stack and pull it into the data bank
In WLA DX, the .BASE directive is used to set the value that used as the bank when doing
Long Jumps to Labels. We'll set it to $80 and do a long jump. Here's an example for doing it
in the NMI routine:
; Somewhere in the source
.base $80
; NMI routine
VBlank:
jml FastVBlank
FastVBlank:
rep #$30
lda $4210 ; Clear NMI flag
;.
;..
;...That's it! Do it for all of the vectors/interrupts and you'll be running faster!