summaryrefslogtreecommitdiffstats
path: root/src/mame/drivers/f1gp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/f1gp.cpp')
-rw-r--r--src/mame/drivers/f1gp.cpp217
1 files changed, 112 insertions, 105 deletions
diff --git a/src/mame/drivers/f1gp.cpp b/src/mame/drivers/f1gp.cpp
index ed900364a8e..0f6658a79cb 100644
--- a/src/mame/drivers/f1gp.cpp
+++ b/src/mame/drivers/f1gp.cpp
@@ -53,75 +53,80 @@ READ8_MEMBER(f1gp_state::command_pending_r)
}
-ADDRESS_MAP_START(f1gp_state::f1gp_cpu1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(f1gp_zoomdata_r, f1gp_zoomdata_w)
- AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram")
- AM_RANGE(0xd02000, 0xd03fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd04000, 0xd05fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd06000, 0xd07fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM AM_SHARE("spr1cgram") // SPR-1 CG RAM
- AM_RANGE(0xe04000, 0xe07fff) AM_RAM AM_SHARE("spr2cgram") // SPR-2 CG RAM
- AM_RANGE(0xf00000, 0xf003ff) AM_RAM AM_SHARE("spr1vram") // SPR-1 VRAM
- AM_RANGE(0xf10000, 0xf103ff) AM_RAM AM_SHARE("spr2vram") // SPR-2 VRAM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") // DUAL RAM
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // PALETTE
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
- AM_RANGE(0xfff000, 0xfff001) AM_WRITE(f1gp_gfxctrl_w)
+void f1gp_state::f1gp_cpu1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x2fffff).rom().region("user1", 0);
+ map(0xa00000, 0xbfffff).rom().region("user2", 0);
+ map(0xc00000, 0xc3ffff).rw(this, FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w));
+ map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram");
+ map(0xd02000, 0xd03fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd04000, 0xd05fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd06000, 0xd07fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xe00000, 0xe03fff).ram().share("spr1cgram"); // SPR-1 CG RAM
+ map(0xe04000, 0xe07fff).ram().share("spr2cgram"); // SPR-2 CG RAM
+ map(0xf00000, 0xf003ff).ram().share("spr1vram"); // SPR-1 VRAM
+ map(0xf10000, 0xf103ff).ram().share("spr2vram"); // SPR-2 VRAM
+ map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
+ map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
+ map(0xfff000, 0xfff001).portr("INPUTS");
+ map(0xfff000, 0xfff001).w(this, FUNC(f1gp_state::f1gp_gfxctrl_w));
// AM_RANGE(0xfff002, 0xfff003) analog wheel?
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff002, 0xfff005) AM_WRITE(f1gp_fgscroll_w)
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff008, 0xfff009) AM_READ8(command_pending_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff020, 0xfff023) AM_DEVWRITE8("gga", vsystem_gga_device, write, 0x00ff)
- AM_RANGE(0xfff040, 0xfff05f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::f1gp2_cpu1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xa00000, 0xa07fff) AM_RAM AM_SHARE("sprcgram") // SPR-1 CG RAM + SPR-2 CG RAM
- AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram") // BACK VRAM
- AM_RANGE(0xe00000, 0xe00fff) AM_RAM AM_SHARE("spritelist") // not checked + SPR-1 VRAM + SPR-2 VRAM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM // WORK RAM-1
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram") // DUAL RAM
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram") // CHARACTER
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette") // PALETTE
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS") AM_WRITE(f1gp2_gfxctrl_w)
+ map(0xfff004, 0xfff005).portr("DSW1");
+ map(0xfff002, 0xfff005).w(this, FUNC(f1gp_state::f1gp_fgscroll_w));
+ map(0xfff006, 0xfff007).portr("DSW2");
+ map(0xfff009, 0xfff009).r(this, FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff020, 0xfff023).w("gga", FUNC(vsystem_gga_device::write)).umask16(0x00ff);
+ map(0xfff040, 0xfff05f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0xfff050, 0xfff051).portr("DSW3");
+}
+
+void f1gp_state::f1gp2_cpu1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x2fffff).rom().region("user1", 0);
+ map(0xa00000, 0xa07fff).ram().share("sprcgram"); // SPR-1 CG RAM + SPR-2 CG RAM
+ map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram"); // BACK VRAM
+ map(0xe00000, 0xe00fff).ram().share("spritelist"); // not checked + SPR-1 VRAM + SPR-2 VRAM
+ map(0xff8000, 0xffbfff).ram(); // WORK RAM-1
+ map(0xffc000, 0xffcfff).ram().share("sharedram"); // DUAL RAM
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram"); // CHARACTER
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); // PALETTE
+ map(0xfff000, 0xfff001).portr("INPUTS").w(this, FUNC(f1gp_state::f1gp2_gfxctrl_w));
// AM_RANGE(0xfff002, 0xfff003) analog wheel?
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff008, 0xfff009) AM_READ8(command_pending_r, 0x00ff) AM_DEVWRITE8("soundlatch", generic_latch_8_device, write, 0x00ff)
- AM_RANGE(0xfff00a, 0xfff00b) AM_READ_PORT("DSW3")
- AM_RANGE(0xfff020, 0xfff03f) AM_DEVWRITE("k053936", k053936_device, ctrl_w)
- AM_RANGE(0xfff044, 0xfff047) AM_WRITE(f1gp_fgscroll_w)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::f1gp_cpu2_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff)
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::sound_map)
- AM_RANGE(0x0000, 0x77ff) AM_ROM
- AM_RANGE(0x7800, 0x7fff) AM_RAM
- AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::sound_io_map)
- ADDRESS_MAP_GLOBAL_MASK(0xff)
- AM_RANGE(0x00, 0x00) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp
- AM_RANGE(0x0c, 0x0c) AM_WRITE(f1gp_sh_bankswitch_w) // f1gp2
- AM_RANGE(0x14, 0x14) AM_DEVREADWRITE("soundlatch", generic_latch_8_device, read, acknowledge_w)
- AM_RANGE(0x18, 0x1b) AM_DEVREADWRITE("ymsnd", ym2610_device, read, write)
-ADDRESS_MAP_END
+ map(0xfff004, 0xfff005).portr("DSW1");
+ map(0xfff006, 0xfff007).portr("DSW2");
+ map(0xfff009, 0xfff009).r(this, FUNC(f1gp_state::command_pending_r)).w(m_soundlatch, FUNC(generic_latch_8_device::write)).umask16(0x00ff);
+ map(0xfff00a, 0xfff00b).portr("DSW3");
+ map(0xfff020, 0xfff03f).w(m_k053936, FUNC(k053936_device::ctrl_w));
+ map(0xfff044, 0xfff047).w(this, FUNC(f1gp_state::f1gp_fgscroll_w));
+}
+
+void f1gp_state::f1gp_cpu2_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0xff8000, 0xffbfff).ram();
+ map(0xffc000, 0xffcfff).ram().share("sharedram");
+ map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+}
+
+void f1gp_state::sound_map(address_map &map)
+{
+ map(0x0000, 0x77ff).rom();
+ map(0x7800, 0x7fff).ram();
+ map(0x8000, 0xffff).bankr("bank1");
+}
+
+void f1gp_state::sound_io_map(address_map &map)
+{
+ map.global_mask(0xff);
+ map(0x00, 0x00).w(this, FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp
+ map(0x0c, 0x0c).w(this, FUNC(f1gp_state::f1gp_sh_bankswitch_w)); // f1gp2
+ map(0x14, 0x14).rw(m_soundlatch, FUNC(generic_latch_8_device::read), FUNC(generic_latch_8_device::acknowledge_w));
+ map(0x18, 0x1b).rw("ymsnd", FUNC(ym2610_device::read), FUNC(ym2610_device::write));
+}
WRITE16_MEMBER(f1gp_state::f1gpb_misc_w)
{
@@ -148,44 +153,46 @@ WRITE16_MEMBER(f1gp_state::f1gpb_misc_w)
*/
}
-ADDRESS_MAP_START(f1gp_state::f1gpb_cpu1_map)
- AM_RANGE(0x000000, 0x03ffff) AM_ROM
- AM_RANGE(0x100000, 0x2fffff) AM_ROM AM_REGION("user1", 0)
- AM_RANGE(0xa00000, 0xbfffff) AM_ROM AM_REGION("user2", 0)
- AM_RANGE(0x800000, 0x801fff) AM_RAM AM_SHARE("spriteram")
- AM_RANGE(0xc00000, 0xc3ffff) AM_READWRITE(f1gp_zoomdata_r, f1gp_zoomdata_w)
- AM_RANGE(0xd00000, 0xd01fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) AM_SHARE("rozvideoram")
- AM_RANGE(0xd02000, 0xd03fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd04000, 0xd05fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xd06000, 0xd07fff) AM_READWRITE(f1gp_rozvideoram_r, f1gp_rozvideoram_w) /* mirror */
- AM_RANGE(0xe00000, 0xe03fff) AM_RAM //unused
- AM_RANGE(0xe04000, 0xe07fff) AM_RAM //unused
- AM_RANGE(0xf00000, 0xf003ff) AM_RAM //unused
- AM_RANGE(0xf10000, 0xf103ff) AM_RAM //unused
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xffd000, 0xffdfff) AM_RAM_WRITE(f1gp_fgvideoram_w) AM_SHARE("fgvideoram")
- AM_RANGE(0xffe000, 0xffefff) AM_RAM_DEVWRITE("palette", palette_device, write16) AM_SHARE("palette")
- AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("INPUTS")
- AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("DSW1")
- AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW2")
- AM_RANGE(0xfff008, 0xfff009) AM_READNOP //?
- AM_RANGE(0xfff006, 0xfff007) AM_WRITENOP
- AM_RANGE(0xfff00a, 0xfff00b) AM_RAM AM_SHARE("fgregs")
- AM_RANGE(0xfff00e, 0xfff00f) AM_DEVREADWRITE8("oki", okim6295_device, read, write, 0x00ff)
- AM_RANGE(0xfff00c, 0xfff00d) AM_WRITE(f1gpb_misc_w)
- AM_RANGE(0xfff010, 0xfff011) AM_WRITENOP
- AM_RANGE(0xfff020, 0xfff023) AM_WRITENOP // GGA access
- AM_RANGE(0xfff050, 0xfff051) AM_READ_PORT("DSW3")
- AM_RANGE(0xfff800, 0xfff809) AM_RAM AM_SHARE("rozregs")
-ADDRESS_MAP_END
-
-ADDRESS_MAP_START(f1gp_state::f1gpb_cpu2_map)
- AM_RANGE(0x000000, 0x01ffff) AM_ROM
- AM_RANGE(0xff8000, 0xffbfff) AM_RAM
- AM_RANGE(0xffc000, 0xffcfff) AM_RAM AM_SHARE("sharedram")
- AM_RANGE(0xfff030, 0xfff033) AM_DEVREADWRITE8("acia", acia6850_device, read, write, 0x00ff)
-ADDRESS_MAP_END
+void f1gp_state::f1gpb_cpu1_map(address_map &map)
+{
+ map(0x000000, 0x03ffff).rom();
+ map(0x100000, 0x2fffff).rom().region("user1", 0);
+ map(0xa00000, 0xbfffff).rom().region("user2", 0);
+ map(0x800000, 0x801fff).ram().share("spriteram");
+ map(0xc00000, 0xc3ffff).rw(this, FUNC(f1gp_state::f1gp_zoomdata_r), FUNC(f1gp_state::f1gp_zoomdata_w));
+ map(0xd00000, 0xd01fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)).share("rozvideoram");
+ map(0xd02000, 0xd03fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd04000, 0xd05fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xd06000, 0xd07fff).rw(this, FUNC(f1gp_state::f1gp_rozvideoram_r), FUNC(f1gp_state::f1gp_rozvideoram_w)); /* mirror */
+ map(0xe00000, 0xe03fff).ram(); //unused
+ map(0xe04000, 0xe07fff).ram(); //unused
+ map(0xf00000, 0xf003ff).ram(); //unused
+ map(0xf10000, 0xf103ff).ram(); //unused
+ map(0xff8000, 0xffbfff).ram();
+ map(0xffc000, 0xffcfff).ram().share("sharedram");
+ map(0xffd000, 0xffdfff).ram().w(this, FUNC(f1gp_state::f1gp_fgvideoram_w)).share("fgvideoram");
+ map(0xffe000, 0xffefff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette");
+ map(0xfff000, 0xfff001).portr("INPUTS");
+ map(0xfff004, 0xfff005).portr("DSW1");
+ map(0xfff006, 0xfff007).portr("DSW2");
+ map(0xfff008, 0xfff009).nopr(); //?
+ map(0xfff006, 0xfff007).nopw();
+ map(0xfff00a, 0xfff00b).ram().share("fgregs");
+ map(0xfff00f, 0xfff00f).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write));
+ map(0xfff00c, 0xfff00d).w(this, FUNC(f1gp_state::f1gpb_misc_w));
+ map(0xfff010, 0xfff011).nopw();
+ map(0xfff020, 0xfff023).nopw(); // GGA access
+ map(0xfff050, 0xfff051).portr("DSW3");
+ map(0xfff800, 0xfff809).ram().share("rozregs");
+}
+
+void f1gp_state::f1gpb_cpu2_map(address_map &map)
+{
+ map(0x000000, 0x01ffff).rom();
+ map(0xff8000, 0xffbfff).ram();
+ map(0xffc000, 0xffcfff).ram().share("sharedram");
+ map(0xfff030, 0xfff033).rw(m_acia, FUNC(acia6850_device::read), FUNC(acia6850_device::write)).umask16(0x00ff);
+}
static INPUT_PORTS_START( f1gp )
PORT_START("INPUTS")