This is my custom chr engine asm i wrote up, which is to preserve the original mmc1
chr values loaded by Fester's Quest, and then converted to the proper mmc3 chr values.
I've done this was about 5 mmc1 roms with no issues, it's just that this rom is set up
specificly for vertical mirroring for the pre-title screen, and 1 screen mirroring
for the rest of the game. A brief explanation of some registers/addresses.
$D8 = contains the the Y value to read the $A000-$BFFF mmc1 chr page from B990BF
B99AC9 = represents the value to be loaded by $D8's Y, for the chr page for $A000-$BFFF
B990BF = represents the value to be loaded by $D8's Y, for the chr page for $C000-$DFFF
I changed my A900,A901,A902,A903,A904,A905's to A280,A281,A282,A283,A284,A285's
Here is my asm...
Code: Select all
$BF00:A4 D8 LDY $00D8 = #$05
$BF02:B9 9A C9 LDA $C99A,Y @ $C99F = #$07
$BF05:48 PHA
$BF06:A2 80 LDX #$80
$BF08:8E 00 80 STX $8000 = #$38
$BF0B:68 PLA
$BF0C:A8 TAY
$BF0D:B9 90 BF LDA $BF90,Y @ $BF97 = #$9C
$BF10:8D 01 80 STA $8001 = #$39
$BF13:A2 81 LDX #$81
$BF15:8E 00 80 STX $8000 = #$38
$BF18:B9 90 BF LDA $BF90,Y @ $BF97 = #$9C
$BF1B:38 SEC
$BF1C:69 01 ADC #$01
$BF1E:8D 01 80 STA $8001 = #$39
$BF21:A4 D8 LDY $00D8 = #$05
$BF23:B9 AC C9 LDA $C9AC,Y @ $C9B1 = #$06
$BF26:48 PHA
$BF27:A2 82 LDX #$82
$BF29:8E 00 80 STX $8000 = #$38
$BF2C:68 PLA
$BF2D:A8 TAY
$BF2E:B9 90 BF LDA $BF90,Y @ $BF96 = #$98
$BF31:8D 01 80 STA $8001 = #$39
$BF34:A2 83 LDX #$83
$BF36:8E 00 80 STX $8000 = #$38
$BF39:B9 90 BF LDA $BF90,Y @ $BF96 = #$98
$BF3C:38 SEC
$BF3D:69 00 ADC #$00
$BF3F:8D 01 80 STA $8001 = #$39
$BF42:A2 84 LDX #$84
$BF44:8E 00 80 STX $8000 = #$38
$BF47:B9 90 BF LDA $BF90,Y @ $BF96 = #$98
$BF4A:38 SEC
$BF4B:69 01 ADC #$01
$BF4D:8D 01 80 STA $8001 = #$39
$BF50:A2 85 LDX #$85
$BF52:8E 00 80 STX $8000 = #$38
$BF55:B9 90 BF LDA $BF90,Y @ $BF96 = #$98
$BF58:38 SEC
$BF59:69 02 ADC #$02
$BF5B:8D 01 80 STA $8001 = #$39
END
With the +80 changes to $8000 & $8001, i only get Single Screen (Table 1), not
Vertical mirroring which is what i need.