diff options
Diffstat (limited to 'src/mame/drivers/multigam.cpp')
-rw-r--r-- | src/mame/drivers/multigam.cpp | 98 |
1 files changed, 46 insertions, 52 deletions
diff --git a/src/mame/drivers/multigam.cpp b/src/mame/drivers/multigam.cpp index cac9ad1c0e8..1c451b4033f 100644 --- a/src/mame/drivers/multigam.cpp +++ b/src/mame/drivers/multigam.cpp @@ -184,23 +184,23 @@ private: uint8_t m_supergm3_prg_bank; uint8_t m_supergm3_chr_bank; - DECLARE_WRITE8_MEMBER(multigam_nt_w); - DECLARE_READ8_MEMBER(multigam_nt_r); - DECLARE_WRITE8_MEMBER(sprite_dma_w); - DECLARE_READ8_MEMBER(multigam_IN0_r); - DECLARE_WRITE8_MEMBER(multigam_IN0_w); - DECLARE_READ8_MEMBER(multigam_IN1_r); - DECLARE_WRITE8_MEMBER(multigam_switch_prg_rom); - DECLARE_WRITE8_MEMBER(multigam_switch_gfx_rom); - DECLARE_WRITE8_MEMBER(multigam_mapper2_w); - DECLARE_WRITE8_MEMBER(multigam3_mmc3_rom_switch_w); - DECLARE_WRITE8_MEMBER(multigm3_mapper2_w); - DECLARE_WRITE8_MEMBER(multigm3_switch_gfx_rom); - DECLARE_WRITE8_MEMBER(multigm3_switch_prg_rom); - DECLARE_WRITE8_MEMBER(multigam3_mapper02_rom_switch_w); - DECLARE_WRITE8_MEMBER(mmc1_rom_switch_w); - DECLARE_WRITE8_MEMBER(supergm3_prg_bank_w); - DECLARE_WRITE8_MEMBER(supergm3_chr_bank_w); + void multigam_nt_w(offs_t offset, uint8_t data); + uint8_t multigam_nt_r(offs_t offset); + void sprite_dma_w(address_space &space, uint8_t data); + uint8_t multigam_IN0_r(); + void multigam_IN0_w(uint8_t data); + uint8_t multigam_IN1_r(); + void multigam_switch_prg_rom(uint8_t data); + void multigam_switch_gfx_rom(uint8_t data); + void multigam_mapper2_w(offs_t offset, uint8_t data); + void multigam3_mmc3_rom_switch_w(offs_t offset, uint8_t data); + void multigm3_mapper2_w(offs_t offset, uint8_t data); + void multigm3_switch_gfx_rom(uint8_t data); + void multigm3_switch_prg_rom(address_space &space, uint8_t data); + void multigam3_mapper02_rom_switch_w(uint8_t data); + void mmc1_rom_switch_w(offs_t offset, uint8_t data); + void supergm3_prg_bank_w(uint8_t data); + void supergm3_chr_bank_w(uint8_t data); void set_mirroring(int mirroring); DECLARE_MACHINE_START(multigm3); DECLARE_MACHINE_RESET(multigm3); @@ -260,14 +260,14 @@ void multigam_state::set_mirroring(int mirroring) } } -WRITE8_MEMBER(multigam_state::multigam_nt_w) +void multigam_state::multigam_nt_w(offs_t offset, uint8_t data) { int page = ((offset & 0xc00) >> 10); m_nt_page[page][offset & 0x3ff] = data; } -READ8_MEMBER(multigam_state::multigam_nt_r) +uint8_t multigam_state::multigam_nt_r(offs_t offset) { int page = ((offset & 0xc00) >> 10); return m_nt_page[page][offset & 0x3ff]; @@ -305,7 +305,7 @@ void multigam_state::set_videoram_bank( int start, int count, int bank, int bank *******************************************************/ -WRITE8_MEMBER(multigam_state::sprite_dma_w) +void multigam_state::sprite_dma_w(address_space &space, uint8_t data) { int source = (data & 7); m_ppu->spriteram_dma(space, source); @@ -319,12 +319,12 @@ WRITE8_MEMBER(multigam_state::sprite_dma_w) *******************************************************/ -READ8_MEMBER(multigam_state::multigam_IN0_r) +uint8_t multigam_state::multigam_IN0_r() { return ((m_in_0 >> m_in_0_shift++) & 0x01) | 0x40; } -WRITE8_MEMBER(multigam_state::multigam_IN0_w) +void multigam_state::multigam_IN0_w(uint8_t data) { if (data & 0x01) { @@ -341,7 +341,7 @@ WRITE8_MEMBER(multigam_state::multigam_IN0_w) m_in_dsw = m_dsw.read_safe(0); } -READ8_MEMBER(multigam_state::multigam_IN1_r) +uint8_t multigam_state::multigam_IN1_r() { return ((m_in_1 >> m_in_1_shift++) & 0x01) | 0x40; } @@ -361,7 +361,7 @@ READ_LINE_MEMBER(multigam_state::multigam_inputs_r) *******************************************************/ -WRITE8_MEMBER(multigam_state::multigam_switch_prg_rom) +void multigam_state::multigam_switch_prg_rom(uint8_t data) { /* switch PRG rom */ uint8_t* dst = memregion("maincpu")->base(); @@ -382,7 +382,7 @@ WRITE8_MEMBER(multigam_state::multigam_switch_prg_rom) } } -WRITE8_MEMBER(multigam_state::multigam_switch_gfx_rom) +void multigam_state::multigam_switch_gfx_rom(uint8_t data) { membank("bank1")->set_base(memregion("gfx1")->base() + (0x2000 * (data & 0x3f))); set_mirroring(data & 0x40 ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); @@ -390,7 +390,7 @@ WRITE8_MEMBER(multigam_state::multigam_switch_gfx_rom) } -WRITE8_MEMBER(multigam_state::multigam_mapper2_w) +void multigam_state::multigam_mapper2_w(offs_t offset, uint8_t data) { if (m_game_gfx_bank & 0x80) { @@ -461,7 +461,7 @@ void multigam_state::multigam3_mmc3_scanline_cb( int scanline, int vblank, int b } } -WRITE8_MEMBER(multigam_state::multigam3_mmc3_rom_switch_w) +void multigam_state::multigam3_mmc3_rom_switch_w(offs_t offset, uint8_t data) { /* basically, a MMC3 mapper from the nes */ int bankmask = m_multigam3_mmc3_prg_size == 0x40000 ? 0x1f : 0x0f; @@ -619,7 +619,7 @@ void multigam_state::multigam_init_mmc3(uint8_t *prg_base, int prg_size, int chr memcpy(&dst[0x8000], prg_base + (prg_size - 0x4000), 0x4000); memcpy(&dst[0xc000], prg_base + (prg_size - 0x4000), 0x4000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::multigam3_mmc3_rom_switch_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8sm_delegate(*this, FUNC(multigam_state::multigam3_mmc3_rom_switch_w))); m_multigam3_mmc3_banks[0] = 0x1e; m_multigam3_mmc3_banks[1] = 0x1f; @@ -632,7 +632,7 @@ void multigam_state::multigam_init_mmc3(uint8_t *prg_base, int prg_size, int chr m_multigam3_mmc3_prg_size = prg_size; } -WRITE8_MEMBER(multigam_state::multigm3_mapper2_w) +void multigam_state::multigm3_mapper2_w(offs_t offset, uint8_t data) { if (m_game_gfx_bank & 0x80) { @@ -644,14 +644,14 @@ WRITE8_MEMBER(multigam_state::multigm3_mapper2_w) } } -WRITE8_MEMBER(multigam_state::multigm3_switch_gfx_rom) +void multigam_state::multigm3_switch_gfx_rom(uint8_t data) { set_videorom_bank(0, 8, data & 0x3f, 8); set_mirroring(data & 0x40 ? PPU_MIRROR_HORZ : PPU_MIRROR_VERT); m_game_gfx_bank = data; } -WRITE8_MEMBER(multigam_state::multigm3_switch_prg_rom) +void multigam_state::multigm3_switch_prg_rom(address_space &space, uint8_t data) { /* switch PRG rom */ uint8_t* dst = memregion("maincpu")->base(); @@ -664,7 +664,7 @@ WRITE8_MEMBER(multigam_state::multigm3_switch_prg_rom) } else { - space.install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::multigm3_mapper2_w)) ); + space.install_write_handler(0x8000, 0xffff, write8sm_delegate(*this, FUNC(multigam_state::multigm3_mapper2_w)) ); membank("bank10")->set_base(memregion("maincpu")->base() + 0x6000); } @@ -714,7 +714,7 @@ void multigam_state::multigm3_map(address_map &map) *******************************************************/ -WRITE8_MEMBER(multigam_state::multigam3_mapper02_rom_switch_w) +void multigam_state::multigam3_mapper02_rom_switch_w(uint8_t data) { uint8_t* mem = memregion("maincpu")->base(); int bankmask = (m_mapper02_prg_size/0x4000) - 1; @@ -725,7 +725,7 @@ void multigam_state::multigam_init_mapper02(uint8_t* prg_base, int prg_size) { uint8_t* mem = memregion("maincpu")->base(); memcpy(mem + 0x8000, prg_base + prg_size - 0x8000, 0x8000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::multigam3_mapper02_rom_switch_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8smo_delegate(*this, FUNC(multigam_state::multigam3_mapper02_rom_switch_w))); m_mapper02_prg_base = prg_base; m_mapper02_prg_size = prg_size; @@ -744,7 +744,7 @@ TIMER_CALLBACK_MEMBER(multigam_state::mmc1_resync_callback) m_mmc1_reg_write_enable = 1; } -WRITE8_MEMBER(multigam_state::mmc1_rom_switch_w) +void multigam_state::mmc1_rom_switch_w(offs_t offset, uint8_t data) { /* basically, a MMC1 mapper from the nes */ @@ -878,7 +878,7 @@ void multigam_state::multigam_init_mmc1(uint8_t *prg_base, int prg_size, int chr memcpy(&dst[0x8000], prg_base + (prg_size - 0x8000), 0x8000); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8_delegate(*this, FUNC(multigam_state::mmc1_rom_switch_w))); + m_maincpu->space(AS_PROGRAM).install_write_handler(0x8000, 0xffff, write8sm_delegate(*this, FUNC(multigam_state::mmc1_rom_switch_w))); m_mmc1_reg_write_enable = 1; m_mmc1_rom_mask = (prg_size / 0x4000) - 1; @@ -973,12 +973,12 @@ void multigam_state::supergm3_set_bank() } } -WRITE8_MEMBER(multigam_state::supergm3_prg_bank_w) +void multigam_state::supergm3_prg_bank_w(uint8_t data) { m_supergm3_prg_bank = data; } -WRITE8_MEMBER(multigam_state::supergm3_chr_bank_w) +void multigam_state::supergm3_chr_bank_w(uint8_t data) { m_supergm3_chr_bank = data; supergm3_set_bank(); @@ -1157,7 +1157,7 @@ MACHINE_RESET_MEMBER(multigam_state,multigm3) { address_space &space = m_maincpu->space(AS_PROGRAM); /* reset the ppu */ - multigm3_switch_prg_rom(space, 0, 0x01 ); + multigm3_switch_prg_rom(space, 0x01 ); } void multigam_state::machine_start() @@ -1168,7 +1168,7 @@ void multigam_state::machine_start() m_nt_page[2] = m_nt_ram.get() + 0x800; m_nt_page[3] = m_nt_ram.get() + 0xc00; - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8_delegate(*this, FUNC(multigam_state::multigam_nt_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8sm_delegate(*this, FUNC(multigam_state::multigam_nt_w))); m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x1fff, "bank1"); membank("bank1")->set_base(memregion("gfx1")->base()); } @@ -1181,7 +1181,7 @@ MACHINE_START_MEMBER(multigam_state,multigm3) m_nt_page[2] = m_nt_ram.get() + 0x800; m_nt_page[3] = m_nt_ram.get() + 0xc00; - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8_delegate(*this, FUNC(multigam_state::multigam_nt_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8sm_delegate(*this, FUNC(multigam_state::multigam_nt_w))); m_ppu->space(AS_PROGRAM).install_read_bank(0x0000, 0x03ff, "bank2"); m_ppu->space(AS_PROGRAM).install_read_bank(0x0400, 0x07ff, "bank3"); @@ -1203,7 +1203,7 @@ MACHINE_START_MEMBER(multigam_state,supergm3) m_nt_page[2] = m_nt_ram.get() + 0x800; m_nt_page[3] = m_nt_ram.get() + 0xc00; - m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8_delegate(*this, FUNC(multigam_state::multigam_nt_w))); + m_ppu->space(AS_PROGRAM).install_readwrite_handler(0x2000, 0x3eff, read8sm_delegate(*this, FUNC(multigam_state::multigam_nt_r)), write8sm_delegate(*this, FUNC(multigam_state::multigam_nt_w))); m_vram = std::make_unique<uint8_t[]>(0x2000); m_multigmc_mmc3_6000_ram = std::make_unique<uint8_t[]>(0x2000); @@ -1387,14 +1387,12 @@ ROM_END void multigam_state::init_multigam() { - address_space &space = m_maincpu->space(AS_PROGRAM); - multigam_switch_prg_rom(space, 0x0, 0x01); + multigam_switch_prg_rom(0x01); } void multigam_state::multigm3_decrypt(uint8_t* mem, int memsize, const uint8_t* decode_nibble) { - int i; - for (i = 0; i < memsize; i++) + for (int i = 0; i < memsize; i++) { mem[i] = decode_nibble[mem[i] & 0x0f] | (decode_nibble[mem[i] >> 4] << 4); } @@ -1402,8 +1400,6 @@ void multigam_state::multigm3_decrypt(uint8_t* mem, int memsize, const uint8_t* void multigam_state::init_multigm3() { - address_space &space = m_maincpu->space(AS_PROGRAM); - const uint8_t decode[16] = { 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a }; multigm3_decrypt(memregion("maincpu")->base(), memregion("maincpu")->bytes(), decode ); @@ -1411,13 +1407,11 @@ void multigam_state::init_multigm3() m_multigmc_mmc3_6000_ram = std::make_unique<uint8_t[]>(0x2000); - multigam_switch_prg_rom(space, 0x0, 0x01); + multigam_switch_prg_rom(0x01); } void multigam_state::init_multigmt() { - address_space &space = m_maincpu->space(AS_PROGRAM); - std::vector<uint8_t> buf(0x80000); uint8_t *rom = memregion("maincpu")->base(); @@ -1447,7 +1441,7 @@ void multigam_state::init_multigmt() rom[i] = bitswap<8>(buf[addr], 4, 7, 3, 2, 5, 1, 6, 0); } - multigam_switch_prg_rom(space, 0x0, 0x01); + multigam_switch_prg_rom(0x01); } GAME( 1992, multigam, 0, multigam, multigam, multigam_state, init_multigam, ROT0, "<unknown>", "Multi Game (set 1)", 0 ) |