M468: Cleanups and bugfixes
This commit is contained in:
@@ -1,19 +1,19 @@
|
||||
#define MMC3_reg regByte
|
||||
#define MMC3_index regByte[8]
|
||||
#define MMC3_reg regByte
|
||||
#define MMC3_index regByte[8]
|
||||
#define MMC3_mirroring regByte[9]
|
||||
#define MMC3_wram regByte[10]
|
||||
#define MMC3_reload regByte[11]
|
||||
#define MMC3_count regByte[12]
|
||||
#define MMC3_irq regByte[13]
|
||||
#define MMC3_lastReg regByte[14]
|
||||
#define MMC3_wram regByte[10]
|
||||
#define MMC3_reload regByte[11]
|
||||
#define MMC3_count regByte[12]
|
||||
#define MMC3_irq regByte[13]
|
||||
#define MMC3_lastReg regByte[14]
|
||||
|
||||
static void MMC3_sync () {
|
||||
int chrAND =mapper &0x01? 0xFF: 0x7F;
|
||||
int OR =prgOR | (misc2 &1? 12: 0);
|
||||
setprg8(0x8000 ^(MMC3_index <<8 &0x4000), MMC3_reg[6] &prgAND | prgOR &~prgAND);
|
||||
setprg8(0xA000, MMC3_reg[7] &prgAND | prgOR &~prgAND);
|
||||
setprg8(0xC000 ^(MMC3_index <<8 &0x4000), 0xFE &prgAND | prgOR &~prgAND);
|
||||
setprg8(0xE000, 0xFF &prgAND | prgOR &~prgAND);
|
||||
setprg8(0x8000 ^(MMC3_index <<8 &0x4000), MMC3_reg[6] &prgAND | OR &~prgAND);
|
||||
setprg8(0xA000, MMC3_reg[7] &prgAND | OR &~prgAND);
|
||||
setprg8(0xC000 ^(MMC3_index <<8 &0x4000), 0xFE &prgAND | OR &~prgAND);
|
||||
setprg8(0xE000, 0xFF &prgAND | OR &~prgAND);
|
||||
setchr1(0x0000 ^(MMC3_index <<5 &0x1000),(MMC3_reg[0] &0xFE)&chrAND);
|
||||
setchr1(0x0400 ^(MMC3_index <<5 &0x1000),(MMC3_reg[0] |0x01)&chrAND);
|
||||
setchr1(0x0800 ^(MMC3_index <<5 &0x1000),(MMC3_reg[1] &0xFE)&chrAND);
|
||||
@@ -29,7 +29,7 @@ static void MMC3_sync () {
|
||||
case 2: setmirror(MMC3_reg[MMC3_lastReg] &0x80? MI_1: MI_0); break;
|
||||
case 3: setmirror(MI_1); break;
|
||||
} else
|
||||
setmirror(MMC3_mirroring &1 ^1);
|
||||
setmirror(MMC3_mirroring &1? MI_H: MI_V);
|
||||
}
|
||||
|
||||
static DECLFW(MMC3_writeReg) {
|
||||
@@ -66,6 +66,7 @@ void MMC3_reset(uint8 clearRegs) {
|
||||
if (mapper &2) PPU_hook =MMC3_ppuHook;
|
||||
prgAND =mapperFlags &8? (mapperFlags &4? (mapperFlags &2? (misc2 &2? 0x07: 0x0F): 0x1F): 0x3F): 0x7F;
|
||||
SetWriteHandler(0x8000, 0xFFFF, MMC3_writeReg);
|
||||
MMC3_mirroring =1; /* "Legendary Games of NES' 509-in-1"'s menu runs as MMC3 with H mirroring and expects that setting to stay when running a mapper 206 game such as Legend of Valkyrie. */
|
||||
sync();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user