summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/multigam.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/multigam.cpp')
-rw-r--r--src/mame/drivers/multigam.cpp98
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 )