Mapper 092

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Mapper 092
by on (#147107)
Mapper 092 is related to Mapper 072 as the wiki suggests, but it is not as simple as a different PRG setup. Per FCEUX:

Code:
//------------------ Map 092 ---------------------------
// Another two-in-one mapper, two Jaleco carts uses similar
// hardware, but with different wiring.
// Original code provided by LULU
// Additionally, PCB contains DSP extra sound chip, used for voice samples (unemulated)

static void M92Sync(void) {
   uint8 reg = latche & 0xF0;
   setprg16(0x8000, 0);
   if (latche >= 0x9000) {
      switch (reg) {
      case 0xD0: setprg16(0xc000, latche & 15); break;
      case 0xE0: setchr8(latche & 15); break;
      }
   } else {
      switch (reg) {
      case 0xB0: setprg16(0xc000, latche & 15); break;
      case 0x70: setchr8(latche & 15); break;
      }
   }
}

void Mapper92_Init(CartInfo *info) {
   Latch_Init(info, M92Sync, NULL, 0x80B0, 0x8000, 0xFFFF, 0);
}


Bits 4 and 5 are used to select the appropriate PRG or CHR bank. In addition, all lower 4 bits are used for both the PRG and CHR bank.

FCEUX's implementation maybe incomplete, but we should add this to the wiki.
Re: Mapper 092
by on (#147129)
The big difference in FCEUX's source here is that it claims that ALL bankswitching accesses use the address bus, not the data bus. This is suspicious; we don't know of any non-pirate games that do that. Additionally, Nestopia's implementation disagrees.

The magic numbers in FCUEX's source do not contradict the description in mapper 72; for both Soccer (unknown board) and Yakyuu'88 (JF-19) PRG bank is updated when the byte written has its 128s bit set and CHR bank is updated when the byte written has its 64s bit set.