diff options
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 |
commit | 655c4b55bdf77de1522712b5c2530bf0d515ff01 (patch) | |
tree | 8112beb408f29ac4c881e79dd8eb5374ad260507 | |
parent | 5b67cc1b24181f2a381693663b3deb72b60a6aa5 (diff) |
iqblock.c: added save state support (nw)
-rw-r--r-- | src/mame/drivers/iqblock.c | 22 | ||||
-rw-r--r-- | src/mame/includes/iqblock.h | 19 | ||||
-rw-r--r-- | src/mame/video/iqblock.c | 10 |
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); |