jwdonal wrote:
No, mmc1 is mapper #001.
MMC3 is #004, but TQROM is #119 and TLSROM is #118. Nintendo World Cup is TLROM, a fairly standard MMC3 board (#004). I imagine that this is MMC3 with some sort of 74HC161 controlling the upper address lines.
EDIT: Here's the relevant code from NstBoardZz.cpp
Code:
void NST_FASTCALL Zz::UpdatePrg(uint address,uint bank)
{
prg.SwapBank<SIZE_8K>
(
address,
(exReg << 2 & 0x10) | ((exReg & 0x3) == 0x3 ? 0x08 : 0x00) | (bank & (exReg << 1 | 0x7))
);
}
void NST_FASTCALL Zz::UpdateChr(uint address,uint bank) const
{
chr.SwapBank<SIZE_1K>( address, (exReg << 5 & 0x80) | (bank & 0x7F) );
}
NES_POKE_D(Zz,6000)
{
data &= 0x7;
if (exReg != data)
{
exReg = data;
Mmc3::UpdatePrg();
Mmc3::UpdateChr();
}
}
"data &= 0x7;" means there are three valid bits.
"exReg << 5 & 0x80" means bit 2 controls the CHR bank.