summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Ivan Vangelista <mesgnet@yahoo.it>2015-02-18 18:26:00 +0100
committer Ivan Vangelista <mesgnet@yahoo.it>2015-02-18 18:26:00 +0100
commit655c4b55bdf77de1522712b5c2530bf0d515ff01 (patch)
tree8112beb408f29ac4c881e79dd8eb5374ad260507
parent5b67cc1b24181f2a381693663b3deb72b60a6aa5 (diff)
iqblock.c: added save state support (nw)
-rw-r--r--src/mame/drivers/iqblock.c22
-rw-r--r--src/mame/includes/iqblock.h19
-rw-r--r--src/mame/video/iqblock.c10
3 files changed, 29 insertions, 22 deletions
diff --git a/src/mame/drivers/iqblock.c b/src/mame/drivers/iqblock.c
index 982b33225ac..7b7250b086a 100644
--- a/src/mame/drivers/iqblock.c
+++ b/src/mame/drivers/iqblock.c
@@ -25,7 +25,7 @@ TODO:
Stephh's notes :
- Coin 2 as well as buttons 2 to 4 for each player are only read in "test mode".
- Same issue for Dip Siwtches 0-7 and 1-2 to 1-6.
+ Same issue for Dip Switches 0-7 and 1-2 to 1-6.
Some other games on the same hardware might use them.
- Dip Switch 0 is stored at 0xf0ac and Dip Switch 1 is stored at 0xf0ad.
However they are both read back at the same time with "ld hl,($F0AC)" instructions.
@@ -73,7 +73,7 @@ WRITE8_MEMBER(iqblock_state::grndtour_prot_w)
}
-TIMER_DEVICE_CALLBACK_MEMBER(iqblock_state::iqblock_irq)
+TIMER_DEVICE_CALLBACK_MEMBER(iqblock_state::irq)
{
int scanline = param;
@@ -87,7 +87,7 @@ TIMER_DEVICE_CALLBACK_MEMBER(iqblock_state::iqblock_irq)
}
-WRITE8_MEMBER(iqblock_state::iqblock_irqack_w)
+WRITE8_MEMBER(iqblock_state::irqack_w)
{
m_maincpu->set_input_line(0, CLEAR_LINE);
}
@@ -119,10 +119,10 @@ static ADDRESS_MAP_START( main_portmap, AS_IO, 8, iqblock_state )
AM_RANGE(0x5090, 0x5090) AM_READ_PORT("SW0")
AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("SW1")
AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) // UM3567_data_port_0_w
- AM_RANGE(0x50c0, 0x50c0) AM_WRITE(iqblock_irqack_w)
- AM_RANGE(0x6000, 0x603f) AM_WRITE(iqblock_fgscroll_w)
- AM_RANGE(0x6800, 0x69ff) AM_WRITE(iqblock_fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */
- AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(iqblock_bgvideoram_w) AM_SHARE("bgvideoram")
+ AM_RANGE(0x50c0, 0x50c0) AM_WRITE(irqack_w)
+ AM_RANGE(0x6000, 0x603f) AM_WRITE(fgscroll_w)
+ AM_RANGE(0x6800, 0x69ff) AM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") /* initialized up to 6fff... bug or larger tilemap? */
+ AM_RANGE(0x7000, 0x7fff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram")
AM_RANGE(0x8000, 0xffff) AM_ROM AM_REGION("user1", 0)
ADDRESS_MAP_END
@@ -340,7 +340,7 @@ static MACHINE_CONFIG_START( iqblock, iqblock_state )
MCFG_CPU_ADD("maincpu", Z80,12000000/2) /* 6 MHz */
MCFG_CPU_PROGRAM_MAP(main_map)
MCFG_CPU_IO_MAP(main_portmap)
- MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, iqblock_irq, "screen", 0, 1)
+ MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", iqblock_state, irq, "screen", 0, 1)
MCFG_DEVICE_ADD("ppi8255", I8255A, 0)
MCFG_I8255_IN_PORTA_CB(IOPORT("P1"))
@@ -354,7 +354,7 @@ static MACHINE_CONFIG_START( iqblock, iqblock_state )
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0))
MCFG_SCREEN_SIZE(64*8, 32*8)
MCFG_SCREEN_VISIBLE_AREA(0*8, 64*8-1, 0*8, 30*8-1)
- MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update_iqblock)
+ MCFG_SCREEN_UPDATE_DRIVER(iqblock_state, screen_update)
MCFG_SCREEN_PALETTE("palette")
MCFG_GFXDECODE_ADD("gfxdecode", "palette", iqblock)
@@ -531,5 +531,5 @@ DRIVER_INIT_MEMBER(iqblock_state,grndtour)
-GAME( 1993, iqblock, 0, iqblock, iqblock, iqblock_state, iqblock, ROT0, "IGS", "IQ-Block", 0 )
-GAME( 1993, grndtour, 0, iqblock, grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", 0 )
+GAME( 1993, iqblock, 0, iqblock, iqblock, iqblock_state, iqblock, ROT0, "IGS", "IQ-Block", GAME_SUPPORTS_SAVE )
+GAME( 1993, grndtour, 0, iqblock, grndtour,iqblock_state, grndtour, ROT0, "IGS", "Grand Tour", GAME_SUPPORTS_SAVE )
diff --git a/src/mame/includes/iqblock.h b/src/mame/includes/iqblock.h
index f072368c217..de0e3d53275 100644
--- a/src/mame/includes/iqblock.h
+++ b/src/mame/includes/iqblock.h
@@ -11,6 +11,7 @@ public:
required_device<cpu_device> m_maincpu;
required_device<gfxdecode_device> m_gfxdecode;
+
required_shared_ptr<UINT8> m_rambase;
required_shared_ptr<UINT8> m_bgvideoram;
required_shared_ptr<UINT8> m_fgvideoram;
@@ -22,16 +23,20 @@ public:
DECLARE_WRITE8_MEMBER(iqblock_prot_w);
DECLARE_WRITE8_MEMBER(grndtour_prot_w);
- DECLARE_WRITE8_MEMBER(iqblock_irqack_w);
- DECLARE_WRITE8_MEMBER(iqblock_fgvideoram_w);
- DECLARE_WRITE8_MEMBER(iqblock_bgvideoram_w);
- DECLARE_WRITE8_MEMBER(iqblock_fgscroll_w);
+ DECLARE_WRITE8_MEMBER(irqack_w);
+ DECLARE_WRITE8_MEMBER(fgvideoram_w);
+ DECLARE_WRITE8_MEMBER(bgvideoram_w);
+ DECLARE_WRITE8_MEMBER(fgscroll_w);
DECLARE_WRITE8_MEMBER(port_C_w);
+
+ TIMER_DEVICE_CALLBACK_MEMBER(irq);
+
DECLARE_DRIVER_INIT(grndtour);
DECLARE_DRIVER_INIT(iqblock);
+ virtual void video_start();
+
TILE_GET_INFO_MEMBER(get_bg_tile_info);
TILE_GET_INFO_MEMBER(get_fg_tile_info);
- virtual void video_start();
- UINT32 screen_update_iqblock(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
- TIMER_DEVICE_CALLBACK_MEMBER(iqblock_irq);
+
+ UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
};
diff --git a/src/mame/video/iqblock.c b/src/mame/video/iqblock.c
index e88605cbe2b..7333ceac171 100644
--- a/src/mame/video/iqblock.c
+++ b/src/mame/video/iqblock.c
@@ -41,6 +41,8 @@ void iqblock_state::video_start()
m_bg_tilemap->set_transparent_pen(0);
m_fg_tilemap->set_scroll_cols(64);
+
+ save_item(NAME(m_videoenable));
}
@@ -51,19 +53,19 @@ void iqblock_state::video_start()
***************************************************************************/
-WRITE8_MEMBER(iqblock_state::iqblock_fgvideoram_w)
+WRITE8_MEMBER(iqblock_state::fgvideoram_w)
{
m_fgvideoram[offset] = data;
m_fg_tilemap->mark_tile_dirty(offset);
}
-WRITE8_MEMBER(iqblock_state::iqblock_bgvideoram_w)
+WRITE8_MEMBER(iqblock_state::bgvideoram_w)
{
m_bgvideoram[offset] = data;
m_bg_tilemap->mark_tile_dirty(offset & 0x7ff);
}
-WRITE8_MEMBER(iqblock_state::iqblock_fgscroll_w)
+WRITE8_MEMBER(iqblock_state::fgscroll_w)
{
m_fg_tilemap->set_scrolly(offset,data);
}
@@ -76,7 +78,7 @@ WRITE8_MEMBER(iqblock_state::iqblock_fgscroll_w)
***************************************************************************/
-UINT32 iqblock_state::screen_update_iqblock(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
+UINT32 iqblock_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
{
if (!m_videoenable) return 0;
m_fg_tilemap->draw(screen, bitmap, cliprect, 0,0);