The code below happens almost immediately (after waiting for PPU power-on/2 VBlanks).
The questions I have are:
1. What's with the INC $FC80? Won't this affect the PRG bank select later on (writes to $FFF0)?
2. What exactly is the mapper behaviour as a result of this? The CHR ROM page size selection makes sense, but the PRG setup doesn't. Basically I'm asking what gets swapped in/out PRG-wise and what is the PRG size chosen?
I'm going off of the information here:
http://wiki.nesdev.com/w/index.php/MMC1
Code: Select all
FC94 A2 FF LDX #$FF A:80 X:00 Y:00 P:A4 SP:FD CYC: 20 SL:241
FC96 9A TXS A:80 X:FF Y:00 P:A4 SP:FD CYC: 26 SL:241
FC97 EE 80 FC INC $FC80 = D8 A:80 X:FF Y:00 P:A4 SP:FF CYC: 32 SL:241 ; ?!?!?!?!?
FC9A A9 10 LDA #$10 A:80 X:FF Y:00 P:A4 SP:FF CYC: 50 SL:241 ; $10 = %00010000
FC9C 20 D5 B8 JSR $B8D5 A:10 X:FF Y:00 P:24 SP:FF CYC: 56 SL:241
B8D5 8D FF 9F STA $9FFF = 4F A:10 X:FF Y:00 P:24 SP:FD CYC: 74 SL:241 ; $9FFF = control reg
B8D8 4A LSR A A:10 X:FF Y:00 P:24 SP:FD CYC: 86 SL:241 ;
B8D9 8D FF 9F STA $9FFF = 4F A:08 X:FF Y:00 P:24 SP:FD CYC: 92 SL:241 ; Should result in CHR ROM
B8DC 4A LSR A A:08 X:FF Y:00 P:24 SP:FD CYC:104 SL:241 ; bank mode being set to 1
B8DD 8D FF 9F STA $9FFF = 4F A:04 X:FF Y:00 P:24 SP:FD CYC:110 SL:241 ; (4KByte CHR ROM swap)
B8E0 4A LSR A A:04 X:FF Y:00 P:24 SP:FD CYC:122 SL:241 ;
B8E1 8D FF 9F STA $9FFF = 4F A:02 X:FF Y:00 P:24 SP:FD CYC:128 SL:241 ;
B8E4 4A LSR A A:02 X:FF Y:00 P:24 SP:FD CYC:140 SL:241 ;
B8E5 8D FF 9F STA $9FFF = 4F A:01 X:FF Y:00 P:24 SP:FD CYC:146 SL:241 ;
B8E8 60 RTS A:01 X:FF Y:00 P:24 SP:FD CYC:158 SL:241
FC9F A9 02 LDA #$02 A:01 X:FF Y:00 P:24 SP:FF CYC:176 SL:241 ; $02 = %00000010
FCA1 20 E9 B8 JSR $B8E9 A:02 X:FF Y:00 P:24 SP:FF CYC:182 SL:241 ;
B8E9 8D FF BF STA $BFFF = FD A:02 X:FF Y:00 P:24 SP:FD CYC:200 SL:241 ; $BFFF = CHR bank 0 select
B8EC 4A LSR A A:02 X:FF Y:00 P:24 SP:FD CYC:212 SL:241 ;
B8ED 8D FF BF STA $BFFF = FD A:01 X:FF Y:00 P:24 SP:FD CYC:218 SL:241 ;
B8F0 4A LSR A A:01 X:FF Y:00 P:24 SP:FD CYC:230 SL:241 ;
B8F1 8D FF BF STA $BFFF = FD A:00 X:FF Y:00 P:27 SP:FD CYC:236 SL:241 ;
B8F4 4A LSR A A:00 X:FF Y:00 P:27 SP:FD CYC:248 SL:241 ;
B8F5 8D FF BF STA $BFFF = FD A:00 X:FF Y:00 P:26 SP:FD CYC:254 SL:241 ;
B8F8 4A LSR A A:00 X:FF Y:00 P:26 SP:FD CYC:266 SL:241 ;
B8F9 8D FF BF STA $BFFF = FD A:00 X:FF Y:00 P:26 SP:FD CYC:272 SL:241 ;
B8FC 60 RTS A:00 X:FF Y:00 P:26 SP:FD CYC:284 SL:241
FCA4 A9 03 LDA #$03 A:00 X:FF Y:00 P:26 SP:FF CYC:302 SL:241 ; $03 = %00000011
FCA6 20 FD B8 JSR $B8FD A:03 X:FF Y:00 P:24 SP:FF CYC:308 SL:241 ;
B8FD 8D FF DF STA $DFFF = 55 A:03 X:FF Y:00 P:24 SP:FD CYC:326 SL:241 ; $DFFF = CHR bank 1 select
B900 4A LSR A A:03 X:FF Y:00 P:24 SP:FD CYC:338 SL:241 ;
B901 8D FF DF STA $DFFF = 55 A:01 X:FF Y:00 P:25 SP:FD CYC: 3 SL:242 ;
B904 4A LSR A A:01 X:FF Y:00 P:25 SP:FD CYC: 15 SL:242 ;
B905 8D FF DF STA $DFFF = 55 A:00 X:FF Y:00 P:27 SP:FD CYC: 21 SL:242 ;
B908 4A LSR A A:00 X:FF Y:00 P:27 SP:FD CYC: 33 SL:242 ;
B909 8D FF DF STA $DFFF = 55 A:00 X:FF Y:00 P:26 SP:FD CYC: 39 SL:242 ;
B90C 4A LSR A A:00 X:FF Y:00 P:26 SP:FD CYC: 51 SL:242 ;
B90D 8D FF DF STA $DFFF = 55 A:00 X:FF Y:00 P:26 SP:FD CYC: 57 SL:242 ;
B910 60 RTS A:00 X:FF Y:00 P:26 SP:FD CYC: 69 SL:242
FCA9 A9 00 LDA #$00 A:00 X:FF Y:00 P:26 SP:FF CYC: 87 SL:242 ; $00 = %00000000
FCAB 20 11 B9 JSR $B911 A:00 X:FF Y:00 P:26 SP:FF CYC: 93 SL:242 ;
B911 8D F0 FF STA $FFF0 = 64 A:00 X:FF Y:00 P:26 SP:FD CYC:111 SL:242 ; $FFF0 = PRG bank select
B914 4A LSR A A:00 X:FF Y:00 P:26 SP:FD CYC:123 SL:242 ;
B915 8D F0 FF STA $FFF0 = 64 A:00 X:FF Y:00 P:26 SP:FD CYC:129 SL:242 ;
B918 4A LSR A A:00 X:FF Y:00 P:26 SP:FD CYC:141 SL:242 ;
B919 8D F0 FF STA $FFF0 = 64 A:00 X:FF Y:00 P:26 SP:FD CYC:147 SL:242 ;
B91C 4A LSR A A:00 X:FF Y:00 P:26 SP:FD CYC:159 SL:242 ;
B91D 8D F0 FF STA $FFF0 = 64 A:00 X:FF Y:00 P:26 SP:FD CYC:165 SL:242 ;
B920 4A LSR A A:00 X:FF Y:00 P:26 SP:FD CYC:177 SL:242 ;
B921 8D F0 FF STA $FFF0 = 64 A:00 X:FF Y:00 P:26 SP:FD CYC:183 SL:242 ;
B924 60 RTS A:00 X:FF Y:00 P:26 SP:FD CYC:195 SL:242
FCAE 4C 00 80 JMP $8000 A:00 X:FF Y:00 P:26 SP:FF CYC:213 SL:242