From a214550373e059f09e2ef9a60ccdd6663c83b8e2 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Thu, 9 Apr 2015 18:05:23 +0200 Subject: [PATCH] jackie.c, lwings.c, pitnrun.c, splash.c, spoker.c, ssfindo.c: added / completed save state support (nw) --- src/mame/drivers/jackie.c | 140 +++++++++++++----------- src/mame/drivers/lwings.c | 1 + src/mame/drivers/pitnrun.c | 46 ++++---- src/mame/drivers/splash.c | 206 ++++++++++++++++++++---------------- src/mame/drivers/spoker.c | 100 +++++++++-------- src/mame/drivers/ssfindo.c | 89 ++++++++++------ src/mame/includes/pitnrun.h | 78 ++++++++------ src/mame/includes/splash.h | 169 ++++++++++++++++------------- src/mame/machine/pitnrun.c | 44 +++++--- src/mame/video/pitnrun.c | 39 +++---- src/mame/video/splash.c | 18 ++-- 11 files changed, 530 insertions(+), 400 deletions(-) diff --git a/src/mame/drivers/jackie.c b/src/mame/drivers/jackie.c index 5f21d38be05..10c6dcd46df 100644 --- a/src/mame/drivers/jackie.c +++ b/src/mame/drivers/jackie.c @@ -54,18 +54,22 @@ public: jackie_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this,"maincpu"), + m_gfxdecode(*this, "gfxdecode"), + m_screen(*this, "screen"), + m_palette(*this, "palette"), m_bg_scroll2(*this, "bg_scroll2"), m_bg_scroll(*this, "bg_scroll"), m_reel1_ram(*this, "reel1_ram"), m_reel2_ram(*this, "reel2_ram"), m_reel3_ram(*this, "reel3_ram"), m_fg_tile_ram(*this, "fg_tile_ram"), - m_fg_color_ram(*this, "fg_color_ram"), - m_gfxdecode(*this, "gfxdecode"), - m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_fg_color_ram(*this, "fg_color_ram") { } required_device m_maincpu; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; + required_shared_ptr m_bg_scroll2; required_shared_ptr m_bg_scroll; required_shared_ptr m_reel1_ram; @@ -73,9 +77,6 @@ public: required_shared_ptr m_reel3_ram; required_shared_ptr m_fg_tile_ram; required_shared_ptr m_fg_color_ram; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; int m_exp_bank; tilemap_t *m_fg_tilemap; @@ -92,33 +93,39 @@ public: DECLARE_WRITE8_MEMBER(fg_tile_w); DECLARE_WRITE8_MEMBER(fg_color_w); DECLARE_WRITE8_MEMBER(bg_scroll_w); - DECLARE_WRITE8_MEMBER(jackie_reel1_ram_w); - DECLARE_WRITE8_MEMBER(jackie_reel2_ram_w); - DECLARE_WRITE8_MEMBER(jackie_reel3_ram_w); - DECLARE_WRITE8_MEMBER(jackie_unk_reg1_lo_w); - DECLARE_WRITE8_MEMBER(jackie_unk_reg2_lo_w); - DECLARE_WRITE8_MEMBER(jackie_unk_reg3_lo_w); - DECLARE_WRITE8_MEMBER(jackie_unk_reg1_hi_w); - DECLARE_WRITE8_MEMBER(jackie_unk_reg2_hi_w); - DECLARE_WRITE8_MEMBER(jackie_unk_reg3_hi_w); - DECLARE_WRITE8_MEMBER(jackie_nmi_and_coins_w); - DECLARE_WRITE8_MEMBER(jackie_lamps_w); + DECLARE_WRITE8_MEMBER(reel1_ram_w); + DECLARE_WRITE8_MEMBER(reel2_ram_w); + DECLARE_WRITE8_MEMBER(reel3_ram_w); + DECLARE_WRITE8_MEMBER(unk_reg1_lo_w); + DECLARE_WRITE8_MEMBER(unk_reg2_lo_w); + DECLARE_WRITE8_MEMBER(unk_reg3_lo_w); + DECLARE_WRITE8_MEMBER(unk_reg1_hi_w); + DECLARE_WRITE8_MEMBER(unk_reg2_hi_w); + DECLARE_WRITE8_MEMBER(unk_reg3_hi_w); + DECLARE_WRITE8_MEMBER(nmi_and_coins_w); + DECLARE_WRITE8_MEMBER(lamps_w); DECLARE_READ8_MEMBER(igs_irqack_r); DECLARE_WRITE8_MEMBER(igs_irqack_w); DECLARE_READ8_MEMBER(expram_r); - void jackie_unk_reg_lo_w( int offset, UINT8 data, int reg ); - void jackie_unk_reg_hi_w( int offset, UINT8 data, int reg ); + + void unk_reg_lo_w( int offset, UINT8 data, int reg ); + void unk_reg_hi_w( int offset, UINT8 data, int reg ); void show_out(); + DECLARE_CUSTOM_INPUT_MEMBER(hopper_r); - DECLARE_DRIVER_INIT(jackie); + TILE_GET_INFO_MEMBER(get_fg_tile_info); - TILE_GET_INFO_MEMBER(get_jackie_reel1_tile_info); - TILE_GET_INFO_MEMBER(get_jackie_reel2_tile_info); - TILE_GET_INFO_MEMBER(get_jackie_reel3_tile_info); + TILE_GET_INFO_MEMBER(get_reel1_tile_info); + TILE_GET_INFO_MEMBER(get_reel2_tile_info); + TILE_GET_INFO_MEMBER(get_reel3_tile_info); + + DECLARE_DRIVER_INIT(jackie); + virtual void machine_start(); virtual void machine_reset(); virtual void video_start(); - UINT32 screen_update_jackie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - TIMER_DEVICE_CALLBACK_MEMBER(jackie_irq); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + TIMER_DEVICE_CALLBACK_MEMBER(irq); }; @@ -152,13 +159,13 @@ WRITE8_MEMBER(jackie_state::bg_scroll_w) } -WRITE8_MEMBER(jackie_state::jackie_reel1_ram_w) +WRITE8_MEMBER(jackie_state::reel1_ram_w) { m_reel1_ram[offset] = data; m_reel1_tilemap->mark_tile_dirty(offset); } -TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel1_tile_info) +TILE_GET_INFO_MEMBER(jackie_state::get_reel1_tile_info) { int code = m_reel1_ram[tile_index]; SET_TILE_INFO_MEMBER(1, code, 0, 0); @@ -166,26 +173,26 @@ TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel1_tile_info) -WRITE8_MEMBER(jackie_state::jackie_reel2_ram_w) +WRITE8_MEMBER(jackie_state::reel2_ram_w) { m_reel2_ram[offset] = data; m_reel2_tilemap->mark_tile_dirty(offset); } -TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel2_tile_info) +TILE_GET_INFO_MEMBER(jackie_state::get_reel2_tile_info) { int code = m_reel2_ram[tile_index]; SET_TILE_INFO_MEMBER(1, code, 0, 0); } -WRITE8_MEMBER(jackie_state::jackie_reel3_ram_w) +WRITE8_MEMBER(jackie_state::reel3_ram_w) { m_reel3_ram[offset] = data; m_reel3_tilemap->mark_tile_dirty(offset); } -TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel3_tile_info) +TILE_GET_INFO_MEMBER(jackie_state::get_reel3_tile_info) { int code = m_reel3_ram[tile_index]; SET_TILE_INFO_MEMBER(1, code, 0, 0); @@ -193,9 +200,9 @@ TILE_GET_INFO_MEMBER(jackie_state::get_jackie_reel3_tile_info) void jackie_state::video_start() { - m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_jackie_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_jackie_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); - m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_jackie_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel1_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel1_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel2_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel2_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); + m_reel3_tilemap = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(jackie_state::get_reel3_tile_info),this),TILEMAP_SCAN_ROWS,8,32, 64, 8); m_reel1_tilemap->set_scroll_cols(64); m_reel2_tilemap->set_scroll_cols(64); @@ -206,7 +213,7 @@ void jackie_state::video_start() } -UINT32 jackie_state::screen_update_jackie(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 jackie_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i,j; int startclipmin = 0; @@ -253,7 +260,16 @@ UINT32 jackie_state::screen_update_jackie(screen_device &screen, bitmap_ind16 &b return 0; } - +void jackie_state::machine_start() +{ + save_item(NAME(m_exp_bank)); + // save_item(NAME(m_irq_enable)); //always 1? + save_item(NAME(m_nmi_enable)); + // save_item(NAME(m_bg_enable)); //always 1? + save_item(NAME(m_hopper)); + save_item(NAME(m_out)); + save_item(NAME(m_unk_reg)); +} void jackie_state::machine_reset() { @@ -276,29 +292,29 @@ void jackie_state::show_out() #endif } -void jackie_state::jackie_unk_reg_lo_w( int offset, UINT8 data, int reg ) +void jackie_state::unk_reg_lo_w( int offset, UINT8 data, int reg ) { m_unk_reg[reg][offset] &= 0xff00; m_unk_reg[reg][offset] |= data; show_out(); } -WRITE8_MEMBER(jackie_state::jackie_unk_reg1_lo_w){ jackie_unk_reg_lo_w( offset, data, 0 ); } -WRITE8_MEMBER(jackie_state::jackie_unk_reg2_lo_w){ jackie_unk_reg_lo_w( offset, data, 1 ); } -WRITE8_MEMBER(jackie_state::jackie_unk_reg3_lo_w){ jackie_unk_reg_lo_w( offset, data, 2 ); } +WRITE8_MEMBER(jackie_state::unk_reg1_lo_w){ unk_reg_lo_w( offset, data, 0 ); } +WRITE8_MEMBER(jackie_state::unk_reg2_lo_w){ unk_reg_lo_w( offset, data, 1 ); } +WRITE8_MEMBER(jackie_state::unk_reg3_lo_w){ unk_reg_lo_w( offset, data, 2 ); } -void jackie_state::jackie_unk_reg_hi_w( int offset, UINT8 data, int reg ) +void jackie_state::unk_reg_hi_w( int offset, UINT8 data, int reg ) { m_unk_reg[reg][offset] &= 0xff; m_unk_reg[reg][offset] |= data << 8; show_out(); } -WRITE8_MEMBER(jackie_state::jackie_unk_reg1_hi_w){ jackie_unk_reg_hi_w( offset, data, 0 ); } -WRITE8_MEMBER(jackie_state::jackie_unk_reg2_hi_w){ jackie_unk_reg_hi_w( offset, data, 1 ); } -WRITE8_MEMBER(jackie_state::jackie_unk_reg3_hi_w){ jackie_unk_reg_hi_w( offset, data, 2 ); } +WRITE8_MEMBER(jackie_state::unk_reg1_hi_w){ unk_reg_hi_w( offset, data, 0 ); } +WRITE8_MEMBER(jackie_state::unk_reg2_hi_w){ unk_reg_hi_w( offset, data, 1 ); } +WRITE8_MEMBER(jackie_state::unk_reg3_hi_w){ unk_reg_hi_w( offset, data, 2 ); } -WRITE8_MEMBER(jackie_state::jackie_nmi_and_coins_w) +WRITE8_MEMBER(jackie_state::nmi_and_coins_w) { coin_counter_w(machine(), 0, data & 0x01); // coin_a coin_counter_w(machine(), 1, data & 0x04); // coin_c @@ -314,7 +330,7 @@ WRITE8_MEMBER(jackie_state::jackie_nmi_and_coins_w) show_out(); } -WRITE8_MEMBER(jackie_state::jackie_lamps_w) +WRITE8_MEMBER(jackie_state::lamps_w) { /* - Lbits - @@ -369,12 +385,12 @@ static ADDRESS_MAP_START( jackie_prg_map, AS_PROGRAM, 8, jackie_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( jackie_io_map, AS_IO, 8, jackie_state ) - AM_RANGE(0x0520, 0x0524) AM_WRITE(jackie_unk_reg1_lo_w) - AM_RANGE(0x0d20, 0x0d24) AM_WRITE(jackie_unk_reg1_hi_w) - AM_RANGE(0x0560, 0x0564) AM_WRITE(jackie_unk_reg2_lo_w) - AM_RANGE(0x0d60, 0x0d64) AM_WRITE(jackie_unk_reg2_hi_w) - AM_RANGE(0x05a0, 0x05a4) AM_WRITE(jackie_unk_reg3_lo_w) - AM_RANGE(0x0da0, 0x0da4) AM_WRITE(jackie_unk_reg3_hi_w) + AM_RANGE(0x0520, 0x0524) AM_WRITE(unk_reg1_lo_w) + AM_RANGE(0x0d20, 0x0d24) AM_WRITE(unk_reg1_hi_w) + AM_RANGE(0x0560, 0x0564) AM_WRITE(unk_reg2_lo_w) + AM_RANGE(0x0d60, 0x0d64) AM_WRITE(unk_reg2_hi_w) + AM_RANGE(0x05a0, 0x05a4) AM_WRITE(unk_reg3_lo_w) + AM_RANGE(0x0da0, 0x0da4) AM_WRITE(unk_reg3_hi_w) AM_RANGE(0x1000, 0x1107) AM_RAM AM_SHARE("bg_scroll2") AM_RANGE(0x2000, 0x27ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x2800, 0x2fff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext") @@ -383,18 +399,18 @@ static ADDRESS_MAP_START( jackie_io_map, AS_IO, 8, jackie_state ) AM_RANGE(0x4002, 0x4002) AM_READ_PORT("DSW3") /* DSW3 */ AM_RANGE(0x4003, 0x4003) AM_READ_PORT("DSW4") /* DSW4 */ AM_RANGE(0x4004, 0x4004) AM_READ_PORT("DSW5") /* DSW5 */ - AM_RANGE(0x5080, 0x5080) AM_WRITE(jackie_nmi_and_coins_w) + AM_RANGE(0x5080, 0x5080) AM_WRITE(nmi_and_coins_w) AM_RANGE(0x5081, 0x5081) AM_READ_PORT("SERVICE") AM_RANGE(0x5082, 0x5082) AM_READ_PORT("COINS") AM_RANGE(0x5090, 0x5090) AM_READ_PORT("BUTTONS1") - AM_RANGE(0x5091, 0x5091) AM_WRITE(jackie_lamps_w ) + AM_RANGE(0x5091, 0x5091) AM_WRITE(lamps_w ) AM_RANGE(0x50a0, 0x50a0) AM_READ_PORT("BUTTONS2") AM_RANGE(0x50b0, 0x50b1) AM_DEVWRITE("ymsnd", ym2413_device, write) AM_RANGE(0x50c0, 0x50c0) AM_READ(igs_irqack_r) AM_WRITE(igs_irqack_w) AM_RANGE(0x6000, 0x60ff) AM_RAM_WRITE(bg_scroll_w ) AM_SHARE("bg_scroll") - AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE(jackie_reel1_ram_w ) AM_SHARE("reel1_ram") - AM_RANGE(0x6a00, 0x6bff) AM_RAM_WRITE(jackie_reel2_ram_w ) AM_SHARE("reel2_ram") - AM_RANGE(0x6c00, 0x6dff) AM_RAM_WRITE(jackie_reel3_ram_w ) AM_SHARE("reel3_ram") + AM_RANGE(0x6800, 0x69ff) AM_RAM_WRITE(reel1_ram_w ) AM_SHARE("reel1_ram") + AM_RANGE(0x6a00, 0x6bff) AM_RAM_WRITE(reel2_ram_w ) AM_SHARE("reel2_ram") + AM_RANGE(0x6c00, 0x6dff) AM_RAM_WRITE(reel3_ram_w ) AM_SHARE("reel3_ram") AM_RANGE(0x7000, 0x77ff) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") AM_RANGE(0x7800, 0x7fff) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") AM_RANGE(0x8000, 0xffff) AM_READ(expram_r) @@ -564,7 +580,7 @@ DRIVER_INIT_MEMBER(jackie_state,jackie) rom[0x7e86] = 0xc3; } -TIMER_DEVICE_CALLBACK_MEMBER(jackie_state::jackie_irq) +TIMER_DEVICE_CALLBACK_MEMBER(jackie_state::irq) { int scanline = param; @@ -583,7 +599,7 @@ static MACHINE_CONFIG_START( jackie, jackie_state ) MCFG_CPU_ADD("maincpu", Z80, XTAL_12MHz / 2) MCFG_CPU_PROGRAM_MAP(jackie_prg_map) MCFG_CPU_IO_MAP(jackie_io_map) - MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", jackie_state, jackie_irq, "screen", 0, 1) + MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", jackie_state, irq, "screen", 0, 1) /* video hardware */ @@ -592,7 +608,7 @@ static MACHINE_CONFIG_START( jackie, jackie_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, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(jackie_state, screen_update_jackie) + MCFG_SCREEN_UPDATE_DRIVER(jackie_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", jackie) @@ -632,4 +648,4 @@ ROM_START( jackie ) ROM_END -GAME( 1993, jackie, 0, jackie, jackie, jackie_state, jackie, ROT0, "IGS", "Happy Jackie (v110U)", 0 ) +GAME( 1993, jackie, 0, jackie, jackie, jackie_state, jackie, ROT0, "IGS", "Happy Jackie (v110U)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/lwings.c b/src/mame/drivers/lwings.c index 64b86e50dc2..139c01448fa 100644 --- a/src/mame/drivers/lwings.c +++ b/src/mame/drivers/lwings.c @@ -740,6 +740,7 @@ void lwings_state::machine_start() save_item(NAME(m_palette_pen)); save_item(NAME(m_soundstate)); save_item(NAME(m_adpcm)); + save_item(NAME(m_nmi_mask)); } void lwings_state::machine_reset() diff --git a/src/mame/drivers/pitnrun.c b/src/mame/drivers/pitnrun.c index 656fb03c633..b782cc2497e 100644 --- a/src/mame/drivers/pitnrun.c +++ b/src/mame/drivers/pitnrun.c @@ -70,7 +70,7 @@ K1000233A #include "includes/pitnrun.h" -INTERRUPT_GEN_MEMBER(pitnrun_state::pitnrun_nmi_source) +INTERRUPT_GEN_MEMBER(pitnrun_state::nmi_source) { if(m_nmi) device.execute().set_input_line(INPUT_LINE_NMI, PULSE_LINE); } @@ -80,12 +80,12 @@ WRITE8_MEMBER(pitnrun_state::nmi_enable_w) m_nmi = data & 1; } -WRITE8_MEMBER(pitnrun_state::pitnrun_hflip_w) +WRITE8_MEMBER(pitnrun_state::hflip_w) { flip_screen_x_set(data); } -WRITE8_MEMBER(pitnrun_state::pitnrun_vflip_w) +WRITE8_MEMBER(pitnrun_state::vflip_w) { flip_screen_y_set(data); } @@ -93,26 +93,26 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_vflip_w) static ADDRESS_MAP_START( pitnrun_map, AS_PROGRAM, 8, pitnrun_state ) AM_RANGE(0x0000, 0x7fff) AM_ROM AM_RANGE(0x8000, 0x87ff) AM_RAM - AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(pitnrun_videoram_w) AM_SHARE("videoram") - AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(pitnrun_videoram2_w) AM_SHARE("videoram2") + AM_RANGE(0x8800, 0x8fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") + AM_RANGE(0x9000, 0x9fff) AM_RAM_WRITE(videoram2_w) AM_SHARE("videoram2") AM_RANGE(0xa000, 0xa0ff) AM_RAM AM_SHARE("spriteram") AM_RANGE(0xa800, 0xa800) AM_READ_PORT("SYSTEM") AM_RANGE(0xa800, 0xa807) AM_WRITENOP /* Analog Sound */ AM_RANGE(0xb000, 0xb000) AM_READ_PORT("DSW") AM_WRITE(nmi_enable_w) - AM_RANGE(0xb001, 0xb001) AM_WRITE(pitnrun_color_select_w) + AM_RANGE(0xb001, 0xb001) AM_WRITE(color_select_w) AM_RANGE(0xb004, 0xb004) AM_WRITENOP/* COLOR SEL 2 - not used ?*/ - AM_RANGE(0xb005, 0xb005) AM_WRITE(pitnrun_char_bank_select) - AM_RANGE(0xb006, 0xb006) AM_WRITE(pitnrun_hflip_w) - AM_RANGE(0xb007, 0xb007) AM_WRITE(pitnrun_vflip_w) + AM_RANGE(0xb005, 0xb005) AM_WRITE(char_bank_select) + AM_RANGE(0xb006, 0xb006) AM_WRITE(hflip_w) + AM_RANGE(0xb007, 0xb007) AM_WRITE(vflip_w) AM_RANGE(0xb800, 0xb800) AM_READ_PORT("INPUTS") AM_WRITE(soundlatch_byte_w) - AM_RANGE(0xc800, 0xc801) AM_WRITE(pitnrun_scroll_w) + AM_RANGE(0xc800, 0xc801) AM_WRITE(scroll_w) AM_RANGE(0xc802, 0xc802) AM_WRITENOP/* VP(VF?)MCV - not used ?*/ - AM_RANGE(0xc804, 0xc804) AM_WRITE(pitnrun_mcu_data_w) - AM_RANGE(0xc805, 0xc805) AM_WRITE(pitnrun_h_heed_w) - AM_RANGE(0xc806, 0xc806) AM_WRITE(pitnrun_v_heed_w) - AM_RANGE(0xc807, 0xc807) AM_WRITE(pitnrun_ha_w) - AM_RANGE(0xd800, 0xd800) AM_READ(pitnrun_mcu_status_r) - AM_RANGE(0xd000, 0xd000) AM_READ(pitnrun_mcu_data_r) + AM_RANGE(0xc804, 0xc804) AM_WRITE(mcu_data_w) + AM_RANGE(0xc805, 0xc805) AM_WRITE(h_heed_w) + AM_RANGE(0xc806, 0xc806) AM_WRITE(v_heed_w) + AM_RANGE(0xc807, 0xc807) AM_WRITE(ha_w) + AM_RANGE(0xd800, 0xd800) AM_READ(mcu_status_r) + AM_RANGE(0xd000, 0xd000) AM_READ(mcu_data_r) AM_RANGE(0xf000, 0xf000) AM_READ(watchdog_reset_r) ADDRESS_MAP_END @@ -134,9 +134,9 @@ ADDRESS_MAP_END static ADDRESS_MAP_START( pitnrun_mcu_map, AS_PROGRAM, 8, pitnrun_state ) ADDRESS_MAP_GLOBAL_MASK(0x7ff) - AM_RANGE(0x0000, 0x0000) AM_READWRITE(pitnrun_68705_portA_r,pitnrun_68705_portA_w) - AM_RANGE(0x0001, 0x0001) AM_READWRITE(pitnrun_68705_portB_r,pitnrun_68705_portB_w) - AM_RANGE(0x0002, 0x0002) AM_READ(pitnrun_68705_portC_r) + AM_RANGE(0x0000, 0x0000) AM_READWRITE(m68705_portA_r,m68705_portA_w) + AM_RANGE(0x0001, 0x0001) AM_READWRITE(m68705_portB_r,m68705_portB_w) + AM_RANGE(0x0002, 0x0002) AM_READ(m68705_portC_r) AM_RANGE(0x0003, 0x007f) AM_RAM AM_RANGE(0x0080, 0x07ff) AM_ROM ADDRESS_MAP_END @@ -220,7 +220,7 @@ GFXDECODE_END static MACHINE_CONFIG_START( pitnrun, pitnrun_state ) MCFG_CPU_ADD("maincpu", Z80,XTAL_18_432MHz/6) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(pitnrun_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", pitnrun_state, pitnrun_nmi_source) + MCFG_CPU_VBLANK_INT_DRIVER("screen", pitnrun_state, nmi_source) MCFG_CPU_ADD("audiocpu", Z80, XTAL_5MHz/2) /* verified on pcb */ MCFG_CPU_PROGRAM_MAP(pitnrun_sound_map) @@ -239,7 +239,7 @@ static MACHINE_CONFIG_START( pitnrun, pitnrun_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(256, 256) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) - MCFG_SCREEN_UPDATE_DRIVER(pitnrun_state, screen_update_pitnrun) + MCFG_SCREEN_UPDATE_DRIVER(pitnrun_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", pitnrun) @@ -331,5 +331,5 @@ ROM_START( pitnruna ) ROM_LOAD( "clr.3", 0x0040, 0x0020, CRC(25e70e5e) SHA1(fdb9c69e9568a725dd0e3ac25835270fb4f49280) ) ROM_END -GAME( 1984, pitnrun, 0, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", GAME_IMPERFECT_SOUND ) -GAME( 1984, pitnruna, pitnrun, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", GAME_IMPERFECT_SOUND ) +GAME( 1984, pitnrun, 0, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 1)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1984, pitnruna, pitnrun, pitnrun, pitnrun, driver_device, 0, ROT90, "Taito Corporation", "Pit & Run - F-1 Race (set 2)", GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/splash.c b/src/mame/drivers/splash.c index 335953d9572..4b7cbdcd2b9 100644 --- a/src/mame/drivers/splash.c +++ b/src/mame/drivers/splash.c @@ -31,13 +31,13 @@ Sound not working on Return of Lady Frog TS 2006.12.22: - Funny Strip is runing on pSOS RTOS ( http://en.wikipedia.org/wiki/PSOS and http://dr-linux.net/newbase/reference/psosCD/ ) . - There's copyrigth text at $480 + There's copyright text at $480 Also Rebus and TRoLF are running on it (the same internal code structure - traps, interrupt vectors), but copyright messages are removed. - Rebus protection patch sits at the end of trap $b (rtos call) and in some cases returns 0 in D0. It's not a real protection check i think. -More notes about Funny Strip protection issus at the boottom of source file (DRIVER INIT) +More notes about Funny Strip protection issues at the bottom of source file (DRIVER INIT) ***************************************************************************/ @@ -46,7 +46,6 @@ More notes about Funny Strip protection issus at the boottom of source file (DRI #include "cpu/m68000/m68000.h" #include "sound/2203intf.h" #include "sound/3812intf.h" -#include "sound/msm5205.h" #include "includes/splash.h" WRITE16_MEMBER(splash_state::splash_sh_irqtrigger_w) @@ -70,7 +69,7 @@ WRITE16_MEMBER(splash_state::roldf_sh_irqtrigger_w) space.device().execute().spin_until_time(attotime::from_usec(40)); } -WRITE16_MEMBER(splash_state::splash_coin_w) +WRITE16_MEMBER(splash_state::coin_w) { if (ACCESSING_BITS_8_15) { @@ -96,8 +95,8 @@ static ADDRESS_MAP_START( splash_map, AS_PROGRAM, 16, splash_state ) AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1") AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2") AM_RANGE(0x84000e, 0x84000f) AM_WRITE(splash_sh_irqtrigger_w) /* Sound command */ - AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w) /* Coin Counters + Coin Lockout */ - AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */ + AM_RANGE(0x84000a, 0x84003b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */ + AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */ AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */ AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */ @@ -169,8 +168,8 @@ static ADDRESS_MAP_START( roldfrog_map, AS_PROGRAM, 16, splash_state ) AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1") AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2") AM_RANGE(0x84000e, 0x84000f) AM_WRITE(roldf_sh_irqtrigger_w) /* Sound command */ - AM_RANGE(0x84000a, 0x84003b) AM_WRITE(splash_coin_w) /* Coin Counters + Coin Lockout */ - AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */ + AM_RANGE(0x84000a, 0x84003b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */ + AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */ AM_RANGE(0x881804, 0x881fff) AM_RAM /* Work RAM */ AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */ @@ -224,14 +223,14 @@ static ADDRESS_MAP_START( funystrp_map, AS_PROGRAM, 16, splash_state ) AM_RANGE(0x000000, 0x01ffff) AM_ROM /* ROM */ AM_RANGE(0x100000, 0x1fffff) AM_RAM /* protection? RAM */ AM_RANGE(0x800000, 0x83ffff) AM_RAM AM_SHARE("pixelram") /* Pixel Layer */ - AM_RANGE(0x84000a, 0x84000b) AM_WRITE(splash_coin_w) /* Coin Counters + Coin Lockout */ + AM_RANGE(0x84000a, 0x84000b) AM_WRITE(coin_w) /* Coin Counters + Coin Lockout */ AM_RANGE(0x84000e, 0x84000f) AM_WRITE(funystrp_sh_irqtrigger_w) /* Sound command */ AM_RANGE(0x840000, 0x840001) AM_READ_PORT("DSW1") AM_RANGE(0x840002, 0x840003) AM_READ_PORT("DSW2") AM_RANGE(0x840004, 0x840005) AM_READ_PORT("P1") AM_RANGE(0x840006, 0x840007) AM_READ_PORT("P2") AM_RANGE(0x840008, 0x840009) AM_READ_PORT("SYSTEM") - AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(splash_vram_w) AM_SHARE("videoram") /* Video RAM */ + AM_RANGE(0x880000, 0x8817ff) AM_RAM_WRITE(vram_w) AM_SHARE("videoram") /* Video RAM */ AM_RANGE(0x881800, 0x881803) AM_RAM AM_SHARE("vregs") /* Scroll registers */ AM_RANGE(0x881804, 0x881fff) AM_WRITENOP AM_RANGE(0x8c0000, 0x8c0fff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")/* Palette is xRRRRxGGGGxBBBBx */ @@ -472,6 +471,11 @@ static GFXDECODE_START( splash ) GFXDECODE_END +MACHINE_START_MEMBER(splash_state,splash) +{ + save_item(NAME(m_adpcm_data)); +} + MACHINE_RESET_MEMBER(splash_state,splash) { m_adpcm_data = 0; @@ -495,13 +499,14 @@ static MACHINE_CONFIG_START( splash, splash_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(64*8, 64*8) MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash) + MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", splash) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_MACHINE_START_OVERRIDE(splash_state, splash ) MCFG_MACHINE_RESET_OVERRIDE(splash_state, splash ) /* sound hardware */ @@ -517,6 +522,13 @@ static MACHINE_CONFIG_START( splash, splash_state ) MACHINE_CONFIG_END +MACHINE_START_MEMBER(splash_state, roldfrog) +{ + save_item(NAME(m_ret)); + save_item(NAME(m_vblank_irq)); + save_item(NAME(m_sound_irq)); +} + INTERRUPT_GEN_MEMBER(splash_state::roldfrog_interrupt) { m_vblank_irq = 1; @@ -541,14 +553,14 @@ static MACHINE_CONFIG_START( roldfrog, splash_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(64*8, 64*8) MCFG_SCREEN_VISIBLE_AREA(2*8, 48*8-1, 2*8, 32*8-1) - MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update_splash) + MCFG_SCREEN_UPDATE_DRIVER(splash_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", splash) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) - + MCFG_MACHINE_START_OVERRIDE(splash_state, roldfrog ) MCFG_MACHINE_RESET_OVERRIDE(splash_state, splash ) /* sound hardware */ @@ -592,6 +604,21 @@ WRITE_LINE_MEMBER(splash_state::adpcm_int2) } } + +MACHINE_START_MEMBER(splash_state, funystrp) +{ + save_item(NAME(m_funystrp_val)); + save_item(NAME(m_funystrp_ff3cc7_val)); + save_item(NAME(m_funystrp_ff3cc8_val)); + save_item(NAME(m_msm_data1)); + save_item(NAME(m_msm_data2)); + save_item(NAME(m_msm_toggle1)); + save_item(NAME(m_msm_toggle2)); + save_item(NAME(m_msm_source)); + save_item(NAME(m_snd_interrupt_enable1)); + save_item(NAME(m_snd_interrupt_enable2)); +} + static MACHINE_CONFIG_START( funystrp, splash_state ) /* basic machine hardware */ @@ -616,6 +643,7 @@ static MACHINE_CONFIG_START( funystrp, splash_state ) MCFG_PALETTE_ADD("palette", 2048) MCFG_PALETTE_FORMAT(xRRRRRGGGGGBBBBB) + MCFG_MACHINE_START_OVERRIDE(splash_state, funystrp ) MCFG_MACHINE_RESET_OVERRIDE(splash_state, funystrp ) /* sound hardware */ @@ -1035,222 +1063,222 @@ READ16_MEMBER(splash_state::funystrp_protection_r) // sub $7ACC, $C7EE, subtractions, original value from 68k case ((0x107001 / 2) + 0x0030): // $7ACE - funystrp_val = funystrp_ff3cc7_val & 0x7f; + m_funystrp_val = m_funystrp_ff3cc7_val & 0x7f; return 0; case ((0x107001 / 2) + 0x013e): // $7AFC - return (funystrp_val + 0x13) & 0xff; + return (m_funystrp_val + 0x13) & 0xff; case ((0x107001 / 2) + 0x0279): // $7B38 - return (funystrp_val + 0x22) & 0xff; + return (m_funystrp_val + 0x22) & 0xff; case ((0x107001 / 2) + 0x0357): // $7B6E - return (funystrp_val + 0x44) & 0xff; + return (m_funystrp_val + 0x44) & 0xff; case ((0x107001 / 2) + 0x03b1): // $7BA4 - return (funystrp_val + 0x6a) & 0xff; + return (m_funystrp_val + 0x6a) & 0xff; //----------------------------------------------------------------- // sub $7E76, subtractions, original value from protection device case ((0x110001 / 2) + 0x0013): // $7E80 - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x110001 / 2) + 0x0125): // $7E96 - return (funystrp_val + 0x03) & 0xff; + return (m_funystrp_val + 0x03) & 0xff; case ((0x110001 / 2) + 0x0261): // $7ECE - return (funystrp_val + 0x08) & 0xff; + return (m_funystrp_val + 0x08) & 0xff; case ((0x110001 / 2) + 0x0322): // $7F00 - return (funystrp_val + 0x12) & 0xff; + return (m_funystrp_val + 0x12) & 0xff; case ((0x110001 / 2) + 0x039b): // $7F36 - return (funystrp_val + 0x70) & 0xff; + return (m_funystrp_val + 0x70) & 0xff; //----------------------------------------------------------------- // sub $7F70, $8038, $116E2, no subtractions, straight compare!, original value from 68k // increase ff3cc8 value in sub $116e2 case ((0x100001 / 2) + 0x0010): // $7F72 - funystrp_val = funystrp_ff3cc8_val; + m_funystrp_val = m_funystrp_ff3cc8_val; return 0; case ((0x100001 / 2) + 0x0123): // $7F9A - return (funystrp_val + 0x00) & 0xff; + return (m_funystrp_val + 0x00) & 0xff; case ((0x100001 / 2) + 0x0257): // $7FC4 - return (funystrp_val + 0x00) & 0xff; + return (m_funystrp_val + 0x00) & 0xff; case ((0x100001 / 2) + 0x0312): // $7FEA - return (funystrp_val + 0x00) & 0xff; + return (m_funystrp_val + 0x00) & 0xff; case ((0x100001 / 2) + 0x0395): // $8010 // increment $ff3cc8 in $117A8 - return (funystrp_val + 0x00) & 0xff; + return (m_funystrp_val + 0x00) & 0xff; //----------------------------------------------------------------- // sub $8522, subtractions, original value from protection device, weird cases case ((0x104801 / 2) + 0x013A): // $8524 - funystrp_val = 0; + m_funystrp_val = 0; return 0; // this and above usually swapped... fooling the lazy bootlegger? case ((0x104801 / 2) + 0x0017): // $8542 - return (funystrp_val + 0x12) & 0xff; + return (m_funystrp_val + 0x12) & 0xff; // first case... weird? // case ((0x104801 / 2) + 0x013A): // $857E - // return (funystrp_val + 0x00) & 0xff; + // return (m_funystrp_val + 0x00) & 0xff; case ((0x104801 / 2) + 0x0277): // $85A4 - return (funystrp_val + 0x04) & 0xff; + return (m_funystrp_val + 0x04) & 0xff; case ((0x104801 / 2) + 0x034b): // $85D6 - return (funystrp_val + 0x37) & 0xff; + return (m_funystrp_val + 0x37) & 0xff; case ((0x104801 / 2) + 0x03ac): // $860E - return (funystrp_val + 0x77) & 0xff; + return (m_funystrp_val + 0x77) & 0xff; //----------------------------------------------------------------- // sub $88F8, subtractions, original value from protection device // verified as working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! case ((0x127001 / 2) + 0x0045): // $88FA - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x127001 / 2) + 0x0145): // $8918 - return (funystrp_val + 0x01) & 0xff; + return (m_funystrp_val + 0x01) & 0xff; case ((0x127001 / 2) + 0x028B): // $894A - return (funystrp_val + 0x02) & 0xff; + return (m_funystrp_val + 0x02) & 0xff; case ((0x127001 / 2) + 0x0363): // $8982 - return (funystrp_val + 0x03) & 0xff; + return (m_funystrp_val + 0x03) & 0xff; case ((0x127001 / 2) + 0x03BA): // $89B4 - return (funystrp_val + 0x00) & 0xff; + return (m_funystrp_val + 0x00) & 0xff; //----------------------------------------------------------------- // sub $9DD2, subtractions, original value from protection device case ((0x170001 / 2) + 0x006B): // $9DD4 - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x170001 / 2) + 0x0162): // $9DF2 - return (funystrp_val + 0x00) & 0xff; + return (m_funystrp_val + 0x00) & 0xff; case ((0x170001 / 2) + 0x02A7): // $9E1E - return (funystrp_val + 0x7c) & 0xff; + return (m_funystrp_val + 0x7c) & 0xff; case ((0x170001 / 2) + 0x0381): // $9E54 - return (funystrp_val + 0x30) & 0xff; + return (m_funystrp_val + 0x30) & 0xff; case ((0x170001 / 2) + 0x03C7): // $9E8A - return (funystrp_val + 0x28) & 0xff; + return (m_funystrp_val + 0x28) & 0xff; //----------------------------------------------------------------- // sub $A944, subtractions, original value from protection device // verified as working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! case ((0x177001 / 2) + 0x0079): // $A946 - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x177001 / 2) + 0x01A0): // $A964 - return (funystrp_val + 0x02) & 0xff; + return (m_funystrp_val + 0x02) & 0xff; case ((0x177001 / 2) + 0x02B2): // $A99C - return (funystrp_val + 0x04) & 0xff; + return (m_funystrp_val + 0x04) & 0xff; case ((0x177001 / 2) + 0x039A): // $A9CE - return (funystrp_val + 0x25) & 0xff; + return (m_funystrp_val + 0x25) & 0xff; case ((0x177001 / 2) + 0x03D3): // $AA04 - return (funystrp_val + 0x16) & 0xff; + return (m_funystrp_val + 0x16) & 0xff; //----------------------------------------------------------------- // sub $C5E4, subtractions, original value from 68k // these cases are already in sub $7ACC, last one is new!! // case ((0x107001 / 2) + 0x0030): // $7ACE - // funystrp_val = funystrp_ff3cc7_val & 0x7f; + // m_funystrp_val = m_funystrp_ff3cc7_val & 0x7f; // return 0; // case ((0x107001 / 2) + 0x013e): // $7AFC - // return (funystrp_val + 0x13) & 0xff; + // return (m_funystrp_val + 0x13) & 0xff; // case ((0x107001 / 2) + 0x0279): // $7B38 - // return (funystrp_val + 0x22) & 0xff; + // return (m_funystrp_val + 0x22) & 0xff; // case ((0x107001 / 2) + 0x0357): // $7B6E - // return (funystrp_val + 0x44) & 0xff; + // return (m_funystrp_val + 0x44) & 0xff; case ((0x107001 / 2) + 0x0381): // $7BA4 - return (funystrp_val + 0x6a) & 0xff; + return (m_funystrp_val + 0x6a) & 0xff; //----------------------------------------------------------------- // sub $DBCE, subtractions, original value from protection device case ((0x140001 / 2) + 0x0052): // $DBD0 - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x140001 / 2) + 0x015C): // $DBEE - return (funystrp_val + 0x15) & 0xff; + return (m_funystrp_val + 0x15) & 0xff; case ((0x140001 / 2) + 0x0293): // $DC2A - return (funystrp_val + 0x03) & 0xff; + return (m_funystrp_val + 0x03) & 0xff; case ((0x140001 / 2) + 0x0374): // $DC5C - return (funystrp_val + 0x55) & 0xff; + return (m_funystrp_val + 0x55) & 0xff; case ((0x140001 / 2) + 0x03C0): // $DC92 - return (funystrp_val + 0x44) & 0xff; + return (m_funystrp_val + 0x44) & 0xff; //----------------------------------------------------------------- // sub $F72C, subtractions, original value from protection device, // routine verified working!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! case ((0x100001 / 2) + 0x0017): // $F72E - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x100001 / 2) + 0x0127): // $F74C - return (funystrp_val + 0x17) & 0xff; + return (m_funystrp_val + 0x17) & 0xff; case ((0x110001 / 2) + 0x0263): // $F788 - return (funystrp_val + 0x0f) & 0xff; + return (m_funystrp_val + 0x0f) & 0xff; case ((0x110001 / 2) + 0x0324): // $F7BE - return (funystrp_val + 0x12) & 0xff; + return (m_funystrp_val + 0x12) & 0xff; case ((0x110001 / 2) + 0x0399): // $F7F4 - return (funystrp_val + 0x70) & 0xff; + return (m_funystrp_val + 0x70) & 0xff; //----------------------------------------------------------------- // sub $F82E, subtractions, original value from protection device, case ((0x100001 / 2) + 0x0013): // $F830 - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x100001 / 2) + 0x0125): // $F84E - return (funystrp_val + 0x17) & 0xff; + return (m_funystrp_val + 0x17) & 0xff; // used in sub $7E76 // case ((0x110001 / 2) + 0x0261): // $F88A - // return (funystrp_val + 0x0f) & 0xff; + // return (m_funystrp_val + 0x0f) & 0xff; // case ((0x110001 / 2) + 0x0322): // $F8C0 - // return (funystrp_val + 0x12) & 0xff; + // return (m_funystrp_val + 0x12) & 0xff; // case ((0x110001 / 2) + 0x039B): // $F8F6 - // return (funystrp_val + 0x70) & 0xff; + // return (m_funystrp_val + 0x70) & 0xff; //----------------------------------------------------------------- // sub $10FE2, subtractions, original value from protection device @@ -1258,20 +1286,20 @@ READ16_MEMBER(splash_state::funystrp_protection_r) // examine later to verify this is right case ((0x105001 / 2) + 0x0021): // $10FF6 - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x105001 / 2) + 0x0131): // $1100C - return (funystrp_val + 0x51) & 0xff; + return (m_funystrp_val + 0x51) & 0xff; case ((0x105001 / 2) + 0x026a): // $11038 - return (funystrp_val + 0x22) & 0xff; + return (m_funystrp_val + 0x22) & 0xff; case ((0x105001 / 2) + 0x0331): // $11060 - return (funystrp_val + 0x00) & 0xff; + return (m_funystrp_val + 0x00) & 0xff; case ((0x105001 / 2) + 0x03ab): // $11078 - return (funystrp_val + 0x03) & 0xff; + return (m_funystrp_val + 0x03) & 0xff; //----------------------------------------------------------------- // sub $11F2C, subtractions, original value from protection device, @@ -1279,20 +1307,20 @@ READ16_MEMBER(splash_state::funystrp_protection_r) // examine later to verify this is right case ((0x183001 / 2) + 0x0088): // $11F3C - funystrp_val = 0; + m_funystrp_val = 0; return 0; case ((0x183001 / 2) + 0x01A7): // $11F5A - return (funystrp_val + 0x09) & 0xff; + return (m_funystrp_val + 0x09) & 0xff; case ((0x183001 / 2) + 0x02C4): // $11F86 - return (funystrp_val + 0x01) & 0xff; + return (m_funystrp_val + 0x01) & 0xff; case ((0x183001 / 2) + 0x03B3): // $11FAA - return (funystrp_val + 0x63) & 0xff; + return (m_funystrp_val + 0x63) & 0xff; case ((0x183001 / 2) + 0x03E9): // $11FD2 - return (funystrp_val + 0x65) & 0xff; + return (m_funystrp_val + 0x65) & 0xff; } return 0; @@ -1318,11 +1346,11 @@ WRITE16_MEMBER(splash_state::funystrp_protection_w) return; case (0x1007e5/2): - funystrp_ff3cc8_val = data; + m_funystrp_ff3cc8_val = data; return; case (0x1007e7/2): - funystrp_ff3cc7_val = data; + m_funystrp_ff3cc7_val = data; return; } } @@ -1341,12 +1369,12 @@ DRIVER_INIT_MEMBER(splash_state,funystrp) m_maincpu->space(AS_PROGRAM).install_read_handler(0x100000, 0x1fffff, read16_delegate(FUNC(splash_state::funystrp_protection_r),this)); } -GAME( 1992, splash, 0, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.2 World)", 0 ) -GAME( 1992, splash10, splash, splash, splash, splash_state, splash10, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.0 World)", 0 ) -GAME( 1992, paintlad, splash, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Painted Lady (Splash) (Ver. 1.3 US)", 0 ) +GAME( 1992, splash, 0, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.2 World)", GAME_SUPPORTS_SAVE ) +GAME( 1992, splash10, splash, splash, splash, splash_state, splash10, ROT0, "Gaelco / OMK Software", "Splash! (Ver. 1.0 World)", GAME_SUPPORTS_SAVE ) +GAME( 1992, paintlad, splash, splash, splash, splash_state, splash, ROT0, "Gaelco / OMK Software", "Painted Lady (Splash) (Ver. 1.3 US)", GAME_SUPPORTS_SAVE ) -GAME( 1993, roldfrog, 0, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 1)", 0) -GAME( 1993, roldfroga,roldfrog, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 2)", 0 ) -GAME( 1995, rebus, 0, roldfrog, splash, splash_state, rebus, ROT0, "Microhard", "Rebus", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND ) -GAME( 199?, funystrp, 0, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard / MagicGames", "Funny Strip", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) -GAME( 199?, puckpepl, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Puck People", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION ) +GAME( 1993, roldfrog, 0, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 1)", GAME_SUPPORTS_SAVE ) +GAME( 1993, roldfroga,roldfrog, roldfrog, splash, splash_state, roldfrog, ROT0, "Microhard", "The Return of Lady Frog (set 2)", GAME_SUPPORTS_SAVE ) +GAME( 1995, rebus, 0, roldfrog, splash, splash_state, rebus, ROT0, "Microhard", "Rebus", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 199?, funystrp, 0, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard / MagicGames", "Funny Strip", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) +GAME( 199?, puckpepl, funystrp, funystrp, funystrp, splash_state, funystrp, ROT0, "Microhard", "Puck People", GAME_NOT_WORKING | GAME_UNEMULATED_PROTECTION | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/drivers/spoker.c b/src/mame/drivers/spoker.c index f79d95fbc49..3d8eb5c3489 100644 --- a/src/mame/drivers/spoker.c +++ b/src/mame/drivers/spoker.c @@ -27,14 +27,19 @@ class spoker_state : public driver_device public: spoker_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_bg_tile_ram(*this, "bg_tile_ram"), - m_fg_tile_ram(*this, "fg_tile_ram"), - m_fg_color_ram(*this, "fg_color_ram"), m_maincpu(*this, "maincpu"), m_gfxdecode(*this, "gfxdecode"), m_screen(*this, "screen"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_bg_tile_ram(*this, "bg_tile_ram"), + m_fg_tile_ram(*this, "fg_tile_ram"), + m_fg_color_ram(*this, "fg_color_ram") { } + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_screen; + required_device m_palette; + required_shared_ptr m_bg_tile_ram; tilemap_t *m_bg_tilemap; @@ -42,32 +47,39 @@ public: required_shared_ptr m_fg_color_ram; tilemap_t *m_fg_tilemap; - int m_video_enable; + // common int m_nmi_ack; + UINT8 m_out[3]; + + // spk116it and spk115it specific + int m_video_enable; int m_hopper; UINT8 m_igs_magic[2]; - UINT8 m_out[3]; + + // common DECLARE_WRITE8_MEMBER(bg_tile_w); DECLARE_WRITE8_MEMBER(fg_tile_w); DECLARE_WRITE8_MEMBER(fg_color_w); - DECLARE_WRITE8_MEMBER(spoker_nmi_and_coins_w); - DECLARE_WRITE8_MEMBER(spoker_video_and_leds_w); - DECLARE_WRITE8_MEMBER(spoker_leds_w); - DECLARE_WRITE8_MEMBER(spoker_magic_w); - DECLARE_READ8_MEMBER(spoker_magic_r); + DECLARE_WRITE8_MEMBER(nmi_and_coins_w); + DECLARE_WRITE8_MEMBER(leds_w); + + // spk116it and spk115it specific + DECLARE_WRITE8_MEMBER(video_and_leds_w); + DECLARE_WRITE8_MEMBER(magic_w); + DECLARE_READ8_MEMBER(magic_r); + DECLARE_CUSTOM_INPUT_MEMBER(hopper_r); + DECLARE_DRIVER_INIT(spk116it); DECLARE_DRIVER_INIT(3super8); - TILE_GET_INFO_MEMBER(get_bg_tile_info); - TILE_GET_INFO_MEMBER(get_fg_tile_info); + virtual void machine_start(); virtual void machine_reset(); virtual void video_start(); - UINT32 screen_update_spoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(spoker_interrupt); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_screen; - required_device m_palette; + + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); }; WRITE8_MEMBER(spoker_state::bg_tile_w) @@ -107,7 +119,7 @@ void spoker_state::video_start() m_fg_tilemap->set_transparent_pen(0); } -UINT32 spoker_state::screen_update_spoker(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 spoker_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { bitmap.fill(m_palette->black_pen(), cliprect); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); @@ -132,7 +144,7 @@ static void show_out(UINT8 *out) #endif } -WRITE8_MEMBER(spoker_state::spoker_nmi_and_coins_w) +WRITE8_MEMBER(spoker_state::nmi_and_coins_w) { if ((data) & (0x22)) { @@ -156,7 +168,7 @@ WRITE8_MEMBER(spoker_state::spoker_nmi_and_coins_w) show_out(m_out); } -WRITE8_MEMBER(spoker_state::spoker_video_and_leds_w) +WRITE8_MEMBER(spoker_state::video_and_leds_w) { set_led_status(machine(), 4, data & 0x01); // start? set_led_status(machine(), 5, data & 0x04); // l_bet? @@ -168,7 +180,7 @@ WRITE8_MEMBER(spoker_state::spoker_video_and_leds_w) show_out(m_out); } -WRITE8_MEMBER(spoker_state::spoker_leds_w) +WRITE8_MEMBER(spoker_state::leds_w) { set_led_status(machine(), 0, data & 0x01); // stop_1 set_led_status(machine(), 1, data & 0x02); // stop_2 @@ -180,7 +192,7 @@ WRITE8_MEMBER(spoker_state::spoker_leds_w) show_out(m_out); } -WRITE8_MEMBER(spoker_state::spoker_magic_w) +WRITE8_MEMBER(spoker_state::magic_w) { m_igs_magic[offset] = data; @@ -198,7 +210,7 @@ WRITE8_MEMBER(spoker_state::spoker_magic_w) } } -READ8_MEMBER(spoker_state::spoker_magic_r) +READ8_MEMBER(spoker_state::magic_r) { switch(m_igs_magic[0]) { @@ -237,14 +249,14 @@ static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8, spoker_state ) AM_RANGE( 0x5000, 0x5fff ) AM_RAM_WRITE(fg_tile_w ) AM_SHARE("fg_tile_ram") /* TODO: ppi #1 */ - AM_RANGE( 0x6480, 0x6480 ) AM_WRITE(spoker_nmi_and_coins_w ) + AM_RANGE( 0x6480, 0x6480 ) AM_WRITE(nmi_and_coins_w ) AM_RANGE( 0x6481, 0x6481 ) AM_READ_PORT( "SERVICE" ) AM_RANGE( 0x6482, 0x6482 ) AM_READ_PORT( "COINS" ) /* TODO: ppi #2 */ AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "BUTTONS1" ) - AM_RANGE( 0x6491, 0x6491 ) AM_WRITE(spoker_video_and_leds_w ) - AM_RANGE( 0x6492, 0x6492 ) AM_WRITE(spoker_leds_w ) + AM_RANGE( 0x6491, 0x6491 ) AM_WRITE(video_and_leds_w ) + AM_RANGE( 0x6492, 0x6492 ) AM_WRITE(leds_w ) AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "BUTTONS2" ) @@ -252,7 +264,7 @@ static ADDRESS_MAP_START( spoker_portmap, AS_IO, 8, spoker_state ) AM_RANGE( 0x64c0, 0x64c0 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) - AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(spoker_magic_r, spoker_magic_w ) // DSW1-5 + AM_RANGE( 0x64d0, 0x64d1 ) AM_READWRITE(magic_r, magic_w ) // DSW1-5 AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") ADDRESS_MAP_END @@ -279,10 +291,10 @@ static ADDRESS_MAP_START( 3super8_portmap, AS_IO, 8, spoker_state ) AM_RANGE( 0x6490, 0x6490 ) AM_READ_PORT( "IN1" ) AM_RANGE( 0x6491, 0x6491 ) AM_DEVREADWRITE("oki", okim6295_device, read, write) AM_RANGE( 0x64a0, 0x64a0 ) AM_READ_PORT( "IN2" ) - AM_RANGE( 0x64b0, 0x64b0 ) AM_WRITE(spoker_leds_w ) + AM_RANGE( 0x64b0, 0x64b0 ) AM_WRITE(leds_w ) AM_RANGE( 0x64c0, 0x64c0 ) AM_READNOP //irq ack? - AM_RANGE( 0x64f0, 0x64f0 ) AM_WRITE(spoker_nmi_and_coins_w ) + AM_RANGE( 0x64f0, 0x64f0 ) AM_WRITE(nmi_and_coins_w ) AM_RANGE( 0x7000, 0x7fff ) AM_RAM_WRITE(fg_color_w ) AM_SHARE("fg_color_ram") ADDRESS_MAP_END @@ -510,6 +522,15 @@ GFXDECODE_END Machine Drivers ***************************************************************************/ +void spoker_state::machine_start() +{ + save_item(NAME(m_nmi_ack)); + save_item(NAME(m_out)); + save_item(NAME(m_video_enable)); + save_item(NAME(m_hopper)); + save_item(NAME(m_igs_magic)); +} + void spoker_state::machine_reset() { m_nmi_ack = 0; @@ -517,18 +538,13 @@ void spoker_state::machine_reset() m_video_enable = 1; } -INTERRUPT_GEN_MEMBER(spoker_state::spoker_interrupt) -{ - device.execute().set_input_line(INPUT_LINE_NMI, ASSERT_LINE); -} - static MACHINE_CONFIG_START( spoker, spoker_state ) /* basic machine hardware */ MCFG_CPU_ADD("maincpu", Z180, XTAL_12MHz / 2) /* HD64180RP8, 8 MHz? */ MCFG_CPU_PROGRAM_MAP(spoker_map) MCFG_CPU_IO_MAP(spoker_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, spoker_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, nmi_line_assert) MCFG_NVRAM_ADD_0FILL("nvram") @@ -539,7 +555,7 @@ static MACHINE_CONFIG_START( spoker, spoker_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) MCFG_SCREEN_SIZE(512, 256) MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 256-16-1) - MCFG_SCREEN_UPDATE_DRIVER(spoker_state, screen_update_spoker) + MCFG_SCREEN_UPDATE_DRIVER(spoker_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", spoker) @@ -561,7 +577,7 @@ static MACHINE_CONFIG_DERIVED( 3super8, spoker ) MCFG_CPU_MODIFY("maincpu") MCFG_CPU_PROGRAM_MAP(spoker_map) MCFG_CPU_IO_MAP(3super8_portmap) - MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, spoker_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", spoker_state, nmi_line_assert) MCFG_CPU_PERIODIC_INT_DRIVER(spoker_state, irq0_line_hold, 120) // this signal comes from the PIC MCFG_GFXDECODE_MODIFY("gfxdecode", 3super8) @@ -714,6 +730,6 @@ DRIVER_INIT_MEMBER(spoker_state,3super8) } } -GAME( 1993?, spk116it, 0, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v116IT)", 0 ) -GAME( 1993?, spk115it, spk116it, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v115IT)", 0 ) -GAME( 1993?, 3super8, spk116it, 3super8,3super8, spoker_state, 3super8, ROT0, "", "3 Super 8 (Italy)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND ) //roms are badly dumped +GAME( 1993?, spk116it, 0, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v116IT)", GAME_SUPPORTS_SAVE ) +GAME( 1993?, spk115it, spk116it, spoker, spoker, spoker_state, spk116it, ROT0, "IGS", "Super Poker (v115IT)", GAME_SUPPORTS_SAVE ) +GAME( 1993?, 3super8, spk116it, 3super8,3super8, spoker_state, 3super8, ROT0, "", "3 Super 8 (Italy)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS | GAME_IMPERFECT_SOUND | GAME_SUPPORTS_SAVE ) //roms are badly dumped diff --git a/src/mame/drivers/ssfindo.c b/src/mame/drivers/ssfindo.c index e2270a929ed..70d609bb88e 100644 --- a/src/mame/drivers/ssfindo.c +++ b/src/mame/drivers/ssfindo.c @@ -217,51 +217,72 @@ class ssfindo_state : public driver_device public: ssfindo_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_vram(*this, "vram"), m_maincpu(*this, "maincpu"), + m_palette(*this, "palette"), + m_vram(*this, "vram"), m_flashrom(*this, "flash"), - m_io_ps7500(*this, "PS7500"), - m_palette(*this, "palette") { } + m_io_ps7500(*this, "PS7500") { } + required_device m_maincpu; + required_device m_palette; + + required_shared_ptr m_vram; + + required_region_ptr m_flashrom; + + required_ioport m_io_ps7500; + + // driver init configuration + UINT32 m_flashType; + int m_iocr_hack; + + // common UINT32 m_PS7500_IO[MAXIO]; UINT32 m_PS7500_FIFO[256]; - required_shared_ptr m_vram; + emu_timer *m_PS7500timer0; + emu_timer *m_PS7500timer1; + + // ssfindo and ppcar UINT32 m_flashAdr; UINT32 m_flashOffset; UINT32 m_adrLatch; - UINT32 m_flashType; UINT32 m_flashN; - emu_timer *m_PS7500timer0; - emu_timer *m_PS7500timer1; - int m_iocr_hack; + + // common DECLARE_WRITE32_MEMBER(FIFO_w); DECLARE_READ32_MEMBER(PS7500_IO_r); DECLARE_WRITE32_MEMBER(PS7500_IO_w); + + // ssfindo and ppcar DECLARE_READ32_MEMBER(io_r); DECLARE_WRITE32_MEMBER(io_w); + + // ssfindo DECLARE_WRITE32_MEMBER(debug_w); DECLARE_READ32_MEMBER(ff4_r); DECLARE_READ32_MEMBER(SIMPLEIO_r); + + // ppcar DECLARE_READ32_MEMBER(randomized_r); + + // tetfight DECLARE_READ32_MEMBER(tetfight_unk_r); DECLARE_WRITE32_MEMBER(tetfight_unk_w); + DECLARE_DRIVER_INIT(common); DECLARE_DRIVER_INIT(ssfindo); DECLARE_DRIVER_INIT(ppcar); DECLARE_DRIVER_INIT(tetfight); virtual void machine_reset(); - UINT32 screen_update_ssfindo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(ssfindo_interrupt); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + INTERRUPT_GEN_MEMBER(interrupt); TIMER_CALLBACK_MEMBER(PS7500_Timer0_callback); TIMER_CALLBACK_MEMBER(PS7500_Timer1_callback); - required_device m_maincpu; - required_region_ptr m_flashrom; - required_ioport m_io_ps7500; - required_device m_palette; - - typedef void (ssfindo_state::*ssfindo_speedup_func)(address_space &space); - ssfindo_speedup_func ssfindo_speedup; + typedef void (ssfindo_state::*speedup_func)(address_space &space); + speedup_func m_speedup; void PS7500_startTimer0(); void PS7500_startTimer1(); @@ -271,7 +292,7 @@ public: }; -UINT32 ssfindo_state::screen_update_ssfindo(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 ssfindo_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int s,x,y; @@ -343,7 +364,7 @@ void ssfindo_state::PS7500_startTimer1() m_PS7500timer1->adjust(attotime::from_usec(val ), 0, attotime::from_usec(val )); } -INTERRUPT_GEN_MEMBER(ssfindo_state::ssfindo_interrupt) +INTERRUPT_GEN_MEMBER(ssfindo_state::interrupt) { m_PS7500_IO[IRQSTA]|=0x08; if(m_PS7500_IO[IRQMSKA]&0x08) @@ -403,7 +424,7 @@ READ32_MEMBER(ssfindo_state::PS7500_IO_r) return (m_PS7500_IO[IRQSTA] & m_PS7500_IO[IRQMSKA]) | 0x80; case IOCR: //TODO: nINT1, OD[n] p.81 - if (ssfindo_speedup) (this->*ssfindo_speedup)(space); + if (m_speedup) (this->*m_speedup)(space); if( m_iocr_hack) { @@ -764,7 +785,7 @@ static MACHINE_CONFIG_START( ssfindo, ssfindo_state ) MCFG_CPU_ADD("maincpu", ARM7, 54000000) // guess... MCFG_CPU_PROGRAM_MAP(ssfindo_map) - MCFG_CPU_VBLANK_INT_DRIVER("screen", ssfindo_state, ssfindo_interrupt) + MCFG_CPU_VBLANK_INT_DRIVER("screen", ssfindo_state, interrupt) MCFG_SCREEN_ADD("screen", RASTER) @@ -772,7 +793,7 @@ static MACHINE_CONFIG_START( ssfindo, ssfindo_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500) /* not accurate */) MCFG_SCREEN_SIZE(320, 256) MCFG_SCREEN_VISIBLE_AREA(0, 319, 0, 239) - MCFG_SCREEN_UPDATE_DRIVER(ssfindo_state, screen_update_ssfindo) + MCFG_SCREEN_UPDATE_DRIVER(ssfindo_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_PALETTE_ADD("palette", 256) @@ -864,26 +885,32 @@ ROM_END DRIVER_INIT_MEMBER(ssfindo_state,common) { - ssfindo_speedup = 0; + m_speedup = 0; m_PS7500timer0 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ssfindo_state::PS7500_Timer0_callback),this)); m_PS7500timer1 = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(ssfindo_state::PS7500_Timer1_callback),this)); - + + save_item(NAME(m_PS7500_IO)); + save_item(NAME(m_PS7500_FIFO)); } DRIVER_INIT_MEMBER(ssfindo_state,ssfindo) { DRIVER_INIT_CALL(common); m_flashType=0; - ssfindo_speedup = &ssfindo_state::ssfindo_speedups; + m_speedup = &ssfindo_state::ssfindo_speedups; m_iocr_hack=0; + + save_item(NAME(m_flashAdr)); + save_item(NAME(m_flashOffset)); + save_item(NAME(m_adrLatch)); + save_item(NAME(m_flashN)); } DRIVER_INIT_MEMBER(ssfindo_state,ppcar) { - DRIVER_INIT_CALL(common); + DRIVER_INIT_CALL(ssfindo); m_flashType=1; - ssfindo_speedup = &ssfindo_state::ppcar_speedups; - m_iocr_hack=0; + m_speedup = &ssfindo_state::ppcar_speedups; } DRIVER_INIT_MEMBER(ssfindo_state,tetfight) @@ -893,6 +920,6 @@ DRIVER_INIT_MEMBER(ssfindo_state,tetfight) m_iocr_hack=1; } -GAME( 1999, ssfindo, 0, ssfindo, ssfindo, ssfindo_state, ssfindo, ROT0, "Icarus", "See See Find Out", GAME_NO_SOUND ) -GAME( 1999, ppcar, 0, ppcar, ppcar, ssfindo_state, ppcar, ROT0, "Icarus", "Pang Pang Car", GAME_NO_SOUND ) -GAME( 2001, tetfight,0, tetfight, tetfight, ssfindo_state, tetfight,ROT0, "Sego", "Tetris Fighters", GAME_NO_SOUND|GAME_NOT_WORKING ) +GAME( 1999, ssfindo, 0, ssfindo, ssfindo, ssfindo_state, ssfindo, ROT0, "Icarus", "See See Find Out", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1999, ppcar, 0, ppcar, ppcar, ssfindo_state, ppcar, ROT0, "Icarus", "Pang Pang Car", GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 2001, tetfight,0, tetfight, tetfight, ssfindo_state, tetfight,ROT0, "Sego", "Tetris Fighters", GAME_NO_SOUND | GAME_NOT_WORKING | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/pitnrun.h b/src/mame/includes/pitnrun.h index 744149f8abb..5f1cc06c470 100644 --- a/src/mame/includes/pitnrun.h +++ b/src/mame/includes/pitnrun.h @@ -3,17 +3,24 @@ class pitnrun_state : public driver_device public: pitnrun_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_videoram(*this, "videoram"), - m_videoram2(*this, "videoram2"), - m_spriteram(*this, "spriteram"), m_maincpu(*this, "maincpu"), m_mcu(*this, "mcu"), m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_palette(*this, "palette"), + m_videoram(*this, "videoram"), + m_videoram2(*this, "videoram2"), + m_spriteram(*this, "spriteram") { } + + required_device m_maincpu; + required_device m_mcu; + required_device m_gfxdecode; + required_device m_palette; required_shared_ptr m_videoram; - int m_nmi; required_shared_ptr m_videoram2; + required_shared_ptr m_spriteram; + + int m_nmi; UINT8 m_fromz80; UINT8 m_toz80; int m_zaccept; @@ -30,41 +37,42 @@ public: bitmap_ind16 *m_tmp_bitmap[4]; tilemap_t *m_bg; tilemap_t *m_fg; - required_shared_ptr m_spriteram; + DECLARE_WRITE8_MEMBER(nmi_enable_w); - DECLARE_WRITE8_MEMBER(pitnrun_hflip_w); - DECLARE_WRITE8_MEMBER(pitnrun_vflip_w); - DECLARE_READ8_MEMBER(pitnrun_mcu_data_r); - DECLARE_WRITE8_MEMBER(pitnrun_mcu_data_w); - DECLARE_READ8_MEMBER(pitnrun_mcu_status_r); - DECLARE_READ8_MEMBER(pitnrun_68705_portA_r); - DECLARE_WRITE8_MEMBER(pitnrun_68705_portA_w); - DECLARE_READ8_MEMBER(pitnrun_68705_portB_r); - DECLARE_WRITE8_MEMBER(pitnrun_68705_portB_w); - DECLARE_READ8_MEMBER(pitnrun_68705_portC_r); - DECLARE_WRITE8_MEMBER(pitnrun_videoram_w); - DECLARE_WRITE8_MEMBER(pitnrun_videoram2_w); - DECLARE_WRITE8_MEMBER(pitnrun_char_bank_select); - DECLARE_WRITE8_MEMBER(pitnrun_scroll_w); - DECLARE_WRITE8_MEMBER(pitnrun_ha_w); - DECLARE_WRITE8_MEMBER(pitnrun_h_heed_w); - DECLARE_WRITE8_MEMBER(pitnrun_v_heed_w); - DECLARE_WRITE8_MEMBER(pitnrun_color_select_w); + DECLARE_WRITE8_MEMBER(hflip_w); + DECLARE_WRITE8_MEMBER(vflip_w); + DECLARE_READ8_MEMBER(mcu_data_r); + DECLARE_WRITE8_MEMBER(mcu_data_w); + DECLARE_READ8_MEMBER(mcu_status_r); + DECLARE_READ8_MEMBER(m68705_portA_r); + DECLARE_WRITE8_MEMBER(m68705_portA_w); + DECLARE_READ8_MEMBER(m68705_portB_r); + DECLARE_WRITE8_MEMBER(m68705_portB_w); + DECLARE_READ8_MEMBER(m68705_portC_r); + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE8_MEMBER(videoram2_w); + DECLARE_WRITE8_MEMBER(char_bank_select); + DECLARE_WRITE8_MEMBER(scroll_w); + DECLARE_WRITE8_MEMBER(ha_w); + DECLARE_WRITE8_MEMBER(h_heed_w); + DECLARE_WRITE8_MEMBER(v_heed_w); + DECLARE_WRITE8_MEMBER(color_select_w); + TILE_GET_INFO_MEMBER(get_tile_info1); TILE_GET_INFO_MEMBER(get_tile_info2); + + INTERRUPT_GEN_MEMBER(nmi_source); + TIMER_CALLBACK_MEMBER(mcu_real_data_r); + TIMER_CALLBACK_MEMBER(mcu_real_data_w); + TIMER_CALLBACK_MEMBER(mcu_data_real_r); + TIMER_CALLBACK_MEMBER(mcu_status_real_w); + + virtual void machine_start(); virtual void machine_reset(); virtual void video_start(); DECLARE_PALETTE_INIT(pitnrun); - UINT32 screen_update_pitnrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(pitnrun_nmi_source); - TIMER_CALLBACK_MEMBER(pitnrun_mcu_real_data_r); - TIMER_CALLBACK_MEMBER(pitnrun_mcu_real_data_w); - TIMER_CALLBACK_MEMBER(pitnrun_mcu_data_real_r); - TIMER_CALLBACK_MEMBER(pitnrun_mcu_status_real_w); - void pitnrun_spotlights(); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void spotlights(); void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ); - required_device m_maincpu; - required_device m_mcu; - required_device m_gfxdecode; - required_device m_palette; }; diff --git a/src/mame/includes/splash.h b/src/mame/includes/splash.h index 94be4a7069c..2f5344e411f 100644 --- a/src/mame/includes/splash.h +++ b/src/mame/includes/splash.h @@ -5,12 +5,6 @@ class splash_state : public driver_device public: splash_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_pixelram(*this, "pixelram"), - m_videoram(*this, "videoram"), - m_vregs(*this, "vregs"), - m_spriteram(*this, "spriteram"), - m_protdata(*this, "protdata"), - m_bitmap_mode(*this, "bitmap_mode"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_msm(*this, "msm"), @@ -18,70 +12,18 @@ public: m_msm2(*this, "msm2"), m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette"), + m_pixelram(*this, "pixelram"), + m_videoram(*this, "videoram"), + m_vregs(*this, "vregs"), + m_spriteram(*this, "spriteram"), + m_protdata(*this, "protdata"), + m_bitmap_mode(*this, "bitmap_mode"), - funystrp_val(0), - funystrp_ff3cc7_val(0), - funystrp_ff3cc8_val(0) + m_funystrp_val(0), + m_funystrp_ff3cc7_val(0), + m_funystrp_ff3cc8_val(0) { } - required_shared_ptr m_pixelram; - required_shared_ptr m_videoram; - required_shared_ptr m_vregs; - required_shared_ptr m_spriteram; - optional_shared_ptr m_protdata; - optional_shared_ptr m_bitmap_mode; - - int m_bitmap_type; - int m_sprite_attr2_shift; - tilemap_t *m_bg_tilemap[2]; - - int m_adpcm_data; - int m_ret; - - int m_vblank_irq; - int m_sound_irq; - - int m_msm_data1; - int m_msm_data2; - int m_msm_toggle1; - int m_msm_toggle2; - int m_msm_source; - int m_snd_interrupt_enable1; - int m_snd_interrupt_enable2; - - DECLARE_WRITE16_MEMBER(splash_sh_irqtrigger_w); - DECLARE_WRITE16_MEMBER(roldf_sh_irqtrigger_w); - DECLARE_WRITE16_MEMBER(splash_coin_w); - DECLARE_WRITE8_MEMBER(splash_adpcm_data_w); - DECLARE_READ16_MEMBER(roldfrog_bombs_r); - DECLARE_WRITE8_MEMBER(sound_bank_w); - DECLARE_WRITE8_MEMBER(roldfrog_vblank_ack_w); - DECLARE_READ8_MEMBER(roldfrog_unk_r); - DECLARE_READ16_MEMBER(spr_read); - DECLARE_WRITE16_MEMBER(spr_write); - DECLARE_READ8_MEMBER(int_source_r); - DECLARE_WRITE8_MEMBER(msm1_data_w); - DECLARE_WRITE8_MEMBER(msm1_interrupt_w); - DECLARE_WRITE8_MEMBER(msm2_interrupt_w); - DECLARE_WRITE8_MEMBER(msm2_data_w); - DECLARE_WRITE16_MEMBER(splash_vram_w); - DECLARE_DRIVER_INIT(splash10); - DECLARE_DRIVER_INIT(roldfrog); - DECLARE_DRIVER_INIT(splash); - DECLARE_DRIVER_INIT(rebus); - TILE_GET_INFO_MEMBER(get_tile_info_splash_tilemap0); - TILE_GET_INFO_MEMBER(get_tile_info_splash_tilemap1); - virtual void video_start(); - DECLARE_MACHINE_RESET(splash); - UINT32 screen_update_splash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - INTERRUPT_GEN_MEMBER(roldfrog_interrupt); - void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect); - void splash_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); - void roldfrog_update_irq( ); - DECLARE_WRITE_LINE_MEMBER(splash_msm5205_int); - DECLARE_WRITE_LINE_MEMBER(ym_irq); - DECLARE_WRITE_LINE_MEMBER(adpcm_int1); - DECLARE_WRITE_LINE_MEMBER(adpcm_int2); required_device m_maincpu; required_device m_audiocpu; optional_device m_msm; @@ -90,16 +32,93 @@ public: required_device m_gfxdecode; required_device m_palette; - // Funny Strip - DECLARE_MACHINE_RESET(funystrp); + required_shared_ptr m_pixelram; + required_shared_ptr m_videoram; + required_shared_ptr m_vregs; + required_shared_ptr m_spriteram; + optional_shared_ptr m_protdata; + optional_shared_ptr m_bitmap_mode; + + // driver init configuration + int m_bitmap_type; + int m_sprite_attr2_shift; + + tilemap_t *m_bg_tilemap[2]; + + // splash specific + int m_adpcm_data; + + //roldfrog specific + int m_ret; + int m_vblank_irq; + int m_sound_irq; + + // funystrp specific + UINT8 m_funystrp_val; + UINT8 m_funystrp_ff3cc7_val; + UINT8 m_funystrp_ff3cc8_val; + int m_msm_data1; + int m_msm_data2; + int m_msm_toggle1; + int m_msm_toggle2; + int m_msm_source; + int m_snd_interrupt_enable1; + int m_snd_interrupt_enable2; + + // common + DECLARE_WRITE16_MEMBER(vram_w); + DECLARE_WRITE16_MEMBER(coin_w); + + // splash specific + DECLARE_WRITE_LINE_MEMBER(splash_msm5205_int); + DECLARE_WRITE16_MEMBER(splash_sh_irqtrigger_w); + DECLARE_WRITE8_MEMBER(splash_adpcm_data_w); + + // roldfrog specific + DECLARE_WRITE16_MEMBER(roldf_sh_irqtrigger_w); + DECLARE_READ16_MEMBER(roldfrog_bombs_r); + DECLARE_WRITE8_MEMBER(roldfrog_vblank_ack_w); + DECLARE_READ8_MEMBER(roldfrog_unk_r); + DECLARE_WRITE_LINE_MEMBER(ym_irq); + + // funystrp specific + DECLARE_READ16_MEMBER(spr_read); + DECLARE_WRITE16_MEMBER(spr_write); + DECLARE_READ8_MEMBER(int_source_r); + DECLARE_WRITE8_MEMBER(msm1_data_w); + DECLARE_WRITE8_MEMBER(msm1_interrupt_w); + DECLARE_WRITE8_MEMBER(msm2_interrupt_w); + DECLARE_WRITE8_MEMBER(msm2_data_w); + DECLARE_WRITE_LINE_MEMBER(adpcm_int1); + DECLARE_WRITE_LINE_MEMBER(adpcm_int2); DECLARE_WRITE16_MEMBER(funystrp_protection_w); DECLARE_READ16_MEMBER(funystrp_protection_r); DECLARE_WRITE16_MEMBER(funystrp_sh_irqtrigger_w); - DECLARE_DRIVER_INIT(funystrp); - UINT32 screen_update_funystrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void funystrp_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); - UINT8 funystrp_val; - UINT8 funystrp_ff3cc7_val; - UINT8 funystrp_ff3cc8_val; + //roldfrog and funystrp specific + DECLARE_WRITE8_MEMBER(sound_bank_w); + + DECLARE_DRIVER_INIT(splash10); + DECLARE_DRIVER_INIT(roldfrog); + DECLARE_DRIVER_INIT(splash); + DECLARE_DRIVER_INIT(rebus); + DECLARE_DRIVER_INIT(funystrp); + virtual void video_start(); + DECLARE_MACHINE_START(splash); + DECLARE_MACHINE_START(roldfrog); + DECLARE_MACHINE_START(funystrp); + DECLARE_MACHINE_RESET(splash); + DECLARE_MACHINE_RESET(funystrp); + + TILE_GET_INFO_MEMBER(get_tile_info_tilemap0); + TILE_GET_INFO_MEMBER(get_tile_info_tilemap1); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + UINT32 screen_update_funystrp(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); + void funystrp_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect); + + INTERRUPT_GEN_MEMBER(roldfrog_interrupt); + void roldfrog_update_irq( ); }; diff --git a/src/mame/machine/pitnrun.c b/src/mame/machine/pitnrun.c index da7d8353194..9574ed4774b 100644 --- a/src/mame/machine/pitnrun.c +++ b/src/mame/machine/pitnrun.c @@ -12,6 +12,18 @@ #include "includes/pitnrun.h" +void pitnrun_state::machine_start() +{ + save_item(NAME(m_nmi)); + save_item(NAME(m_fromz80)); + save_item(NAME(m_toz80)); + save_item(NAME(m_zaccept)); + save_item(NAME(m_zready)); + save_item(NAME(m_portA_in)); + save_item(NAME(m_portA_out)); + save_item(NAME(m_address)); +} + void pitnrun_state::machine_reset() { m_zaccept = 1; @@ -19,31 +31,31 @@ void pitnrun_state::machine_reset() m_mcu->set_input_line(0, CLEAR_LINE); } -TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_real_data_r) +TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_real_data_r) { m_zaccept = 1; } -READ8_MEMBER(pitnrun_state::pitnrun_mcu_data_r) +READ8_MEMBER(pitnrun_state::mcu_data_r) { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_real_data_r),this)); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_real_data_r),this)); return m_toz80; } -TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_real_data_w) +TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_real_data_w) { m_zready = 1; m_mcu->set_input_line(0, ASSERT_LINE); m_fromz80 = param; } -WRITE8_MEMBER(pitnrun_state::pitnrun_mcu_data_w) +WRITE8_MEMBER(pitnrun_state::mcu_data_w) { - machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_real_data_w),this), data); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_real_data_w),this), data); machine().scheduler().boost_interleave(attotime::zero, attotime::from_usec(5)); } -READ8_MEMBER(pitnrun_state::pitnrun_mcu_status_r) +READ8_MEMBER(pitnrun_state::mcu_status_r) { /* mcu synchronization */ /* bit 0 = the 68705 has read data from the Z80 */ @@ -52,12 +64,12 @@ READ8_MEMBER(pitnrun_state::pitnrun_mcu_status_r) } -READ8_MEMBER(pitnrun_state::pitnrun_68705_portA_r) +READ8_MEMBER(pitnrun_state::m68705_portA_r) { return m_portA_in; } -WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portA_w) +WRITE8_MEMBER(pitnrun_state::m68705_portA_w) { m_portA_out = data; } @@ -82,37 +94,37 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portA_w) * the main Z80 memory location to access) */ -READ8_MEMBER(pitnrun_state::pitnrun_68705_portB_r) +READ8_MEMBER(pitnrun_state::m68705_portB_r) { return 0xff; } -TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_data_real_r) +TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_data_real_r) { m_zready = 0; } -TIMER_CALLBACK_MEMBER(pitnrun_state::pitnrun_mcu_status_real_w) +TIMER_CALLBACK_MEMBER(pitnrun_state::mcu_status_real_w) { m_toz80 = param; m_zaccept = 0; } -WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portB_w) +WRITE8_MEMBER(pitnrun_state::m68705_portB_w) { address_space &cpu0space = m_maincpu->space(AS_PROGRAM); if (~data & 0x02) { /* 68705 is going to read data from the Z80 */ - machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_data_real_r),this)); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_data_real_r),this)); m_mcu->set_input_line(0,CLEAR_LINE); m_portA_in = m_fromz80; } if (~data & 0x04) { /* 68705 is writing data for the Z80 */ - machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::pitnrun_mcu_status_real_w),this), m_portA_out); + machine().scheduler().synchronize(timer_expired_delegate(FUNC(pitnrun_state::mcu_status_real_w),this), m_portA_out); } if (~data & 0x10) { @@ -142,7 +154,7 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_68705_portB_w) * passes through) */ -READ8_MEMBER(pitnrun_state::pitnrun_68705_portC_r) +READ8_MEMBER(pitnrun_state::m68705_portC_r) { return (m_zready << 0) | (m_zaccept << 1); } diff --git a/src/mame/video/pitnrun.c b/src/mame/video/pitnrun.c index 266eedbc434..078e177b3aa 100644 --- a/src/mame/video/pitnrun.c +++ b/src/mame/video/pitnrun.c @@ -23,9 +23,7 @@ In debug build press 'w' for spotlight and 'e' for lightning TILE_GET_INFO_MEMBER(pitnrun_state::get_tile_info1) { - UINT8 *videoram = m_videoram; - int code; - code = videoram[tile_index]; + int code = m_videoram[tile_index]; SET_TILE_INFO_MEMBER(0, code, 0, @@ -34,28 +32,26 @@ TILE_GET_INFO_MEMBER(pitnrun_state::get_tile_info1) TILE_GET_INFO_MEMBER(pitnrun_state::get_tile_info2) { - int code; - code = m_videoram2[tile_index]; + int code = m_videoram2[tile_index]; SET_TILE_INFO_MEMBER(1, code + (m_char_bank<<8), m_color_select&1, 0); } -WRITE8_MEMBER(pitnrun_state::pitnrun_videoram_w) +WRITE8_MEMBER(pitnrun_state::videoram_w) { - UINT8 *videoram = m_videoram; - videoram[offset] = data; + m_videoram[offset] = data; m_fg ->mark_all_dirty(); } -WRITE8_MEMBER(pitnrun_state::pitnrun_videoram2_w) +WRITE8_MEMBER(pitnrun_state::videoram2_w) { m_videoram2[offset] = data; m_bg ->mark_all_dirty(); } -WRITE8_MEMBER(pitnrun_state::pitnrun_char_bank_select) +WRITE8_MEMBER(pitnrun_state::char_bank_select) { if(m_char_bank!=data) { @@ -65,34 +61,34 @@ WRITE8_MEMBER(pitnrun_state::pitnrun_char_bank_select) } -WRITE8_MEMBER(pitnrun_state::pitnrun_scroll_w) +WRITE8_MEMBER(pitnrun_state::scroll_w) { m_scroll = (m_scroll & (0xff<<((offset)?0:8))) |( data<<((offset)?8:0)); m_bg->set_scrollx(0, m_scroll); } -WRITE8_MEMBER(pitnrun_state::pitnrun_ha_w) +WRITE8_MEMBER(pitnrun_state::ha_w) { m_ha=data; } -WRITE8_MEMBER(pitnrun_state::pitnrun_h_heed_w) +WRITE8_MEMBER(pitnrun_state::h_heed_w) { m_h_heed=data; } -WRITE8_MEMBER(pitnrun_state::pitnrun_v_heed_w) +WRITE8_MEMBER(pitnrun_state::v_heed_w) { m_v_heed=data; } -WRITE8_MEMBER(pitnrun_state::pitnrun_color_select_w) +WRITE8_MEMBER(pitnrun_state::color_select_w) { m_color_select=data; machine().tilemap().mark_all_dirty(); } -void pitnrun_state::pitnrun_spotlights() +void pitnrun_state::spotlights() { int x,y,i,b,datapix; UINT8 *ROM = memregion("user1")->base(); @@ -166,7 +162,14 @@ void pitnrun_state::video_start() m_tmp_bitmap[1] = auto_bitmap_ind16_alloc(machine(),128,128); m_tmp_bitmap[2] = auto_bitmap_ind16_alloc(machine(),128,128); m_tmp_bitmap[3] = auto_bitmap_ind16_alloc(machine(),128,128); - pitnrun_spotlights(); + spotlights(); + + save_item(NAME(m_h_heed)); + save_item(NAME(m_v_heed)); + save_item(NAME(m_ha)); + save_item(NAME(m_scroll)); + save_item(NAME(m_char_bank)); + save_item(NAME(m_color_select)); } void pitnrun_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect ) @@ -202,7 +205,7 @@ void pitnrun_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect } } -UINT32 pitnrun_state::screen_update_pitnrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 pitnrun_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int dx=0,dy=0; rectangle myclip=cliprect; diff --git a/src/mame/video/splash.c b/src/mame/video/splash.c index a3a9bd43df5..6a0e3fd07b8 100644 --- a/src/mame/video/splash.c +++ b/src/mame/video/splash.c @@ -1,6 +1,6 @@ /*************************************************************************** - video.c + splash.c Functions to emulate the video hardware of the machine. @@ -38,7 +38,7 @@ 0 | xxxx---- -------- | color */ -TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap0) +TILE_GET_INFO_MEMBER(splash_state::get_tile_info_tilemap0) { int data = m_videoram[tile_index]; int attr = data >> 8; @@ -50,7 +50,7 @@ TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap0) 0); } -TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap1) +TILE_GET_INFO_MEMBER(splash_state::get_tile_info_tilemap1) { int data = m_videoram[(0x1000/2) + tile_index]; int attr = data >> 8; @@ -68,7 +68,7 @@ TILE_GET_INFO_MEMBER(splash_state::get_tile_info_splash_tilemap1) ***************************************************************************/ -WRITE16_MEMBER(splash_state::splash_vram_w) +WRITE16_MEMBER(splash_state::vram_w) { COMBINE_DATA(&m_videoram[offset]); m_bg_tilemap[offset >> 11]->mark_tile_dirty(((offset << 1) & 0x0fff) >> 1); @@ -163,8 +163,8 @@ void splash_state::draw_bitmap(bitmap_ind16 &bitmap, const rectangle &cliprect) void splash_state::video_start() { - m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_splash_tilemap0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); - m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_splash_tilemap1),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); + m_bg_tilemap[0] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_tilemap0),this), TILEMAP_SCAN_ROWS, 8, 8, 64, 32); + m_bg_tilemap[1] = &machine().tilemap().create(m_gfxdecode, tilemap_get_info_delegate(FUNC(splash_state::get_tile_info_tilemap1),this), TILEMAP_SCAN_ROWS, 16, 16, 32, 32); m_bg_tilemap[0]->set_transparent_pen(0); m_bg_tilemap[1]->set_transparent_pen(0); @@ -201,7 +201,7 @@ void splash_state::video_start() 400| xxxxxxxx -------- | unused */ -void splash_state::splash_draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) +void splash_state::draw_sprites(bitmap_ind16 &bitmap,const rectangle &cliprect) { int i; gfx_element *gfx = m_gfxdecode->gfx(1); @@ -247,7 +247,7 @@ void splash_state::funystrp_draw_sprites(bitmap_ind16 &bitmap,const rectangle &c ***************************************************************************/ -UINT32 splash_state::screen_update_splash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 splash_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { /* set scroll registers */ m_bg_tilemap[0]->set_scrolly(0, m_vregs[0]); @@ -256,7 +256,7 @@ UINT32 splash_state::screen_update_splash(screen_device &screen, bitmap_ind16 &b draw_bitmap(bitmap, cliprect); m_bg_tilemap[1]->draw(screen, bitmap, cliprect, 0, 0); - splash_draw_sprites(bitmap, cliprect); + draw_sprites(bitmap, cliprect); m_bg_tilemap[0]->draw(screen, bitmap, cliprect, 0, 0); return 0; }