void gbusters_main_write(unsigned short address, unsigned char data) { switch (address) { case 0x1f80: set_ram_bank(data); return; case 0x1f84: *soundlatch = data; return; case 0x1f88: ZetSetVector(0xff); ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); return; case 0x1f8c: // watchdog return; case 0x1f98: K052109RMRDLine = data & 0x01; return; } if ((address & 0xc000) == 0x0000) { K052109_051960_w(address & 0x3fff, data); return; } }
// MBC3 static void mbc3_write(u16 address, u8 value) { switch (address >> 13) { case 0x0: // 0000-1FFF: RAM enable params.ram_enable = (value == 0x0a); break; case 0x1: // 2000-3FFF: ROM bank number - 7 bits if (value == 0) value = 1; set_rom_bank(value & 127); break; case 0x02: // 4000-5FFF: RAM bank number set_ram_bank(value & 3); break; } }
void aliens_main_write(UINT16 address, UINT8 data) { switch (address) { case 0x5f88: set_ram_bank(data & 0x20); K052109RMRDLine = data & 0x40; return; case 0x5f8c: *soundlatch = data; ZetSetVector(0xff); ZetSetIRQLine(0, ZET_IRQSTATUS_ACK); //ZetRaiseIrq(0xff); return; } if ((address & 0xc000) == 0x4000) { K052109_051960_w(address & 0x3fff, data); return; } }
static void mbc1_write(u16 address, u8 value) { switch (address >> 13) { case 0x0: // 0000-1FFF: RAM enable params.ram_enable = (value == 0x0a); break; case 0x1: // 2000-3FFF: ROM bank number - lower 5 bits if (value == 0) // cf pandocs value++; params.rom_bank &= ~31; // Remplace les bits du bas set_rom_bank(params.rom_bank | (value & 31)); break; case 0x2: // 4000-5FFF: ROM bank number - upper 2 bits if (params.bank_mode == 0) { // Sélection banque ROM params.rom_bank &= 31; // Garde les bits du bas set_rom_bank(params.rom_bank | (value & 3) << 5); } else // Sélection banque RAM set_ram_bank(value & 3); break; case 0x3: // 6000-7FFF: ROM/RAM bank select switch params.bank_mode = value & 1; break; } }