diff options
| author | 2015-05-26 18:45:14 +0200 | |
|---|---|---|
| committer | 2015-05-26 18:45:14 +0200 | |
| commit | 611df1f74bfcb4c83512038756ce6153cc07d8ac (patch) | |
| tree | d09a5864bec23942ded4a4b4ac27fc94496a88d5 | |
| parent | 50243c0d1bc2f41e4baf910bbabd366bb4203dee (diff) | |
namcos1.c: some work towards save state support. Got stuck trying to move mcu_bankswitch_w to configured banking (nw)
| -rw-r--r-- | src/mame/drivers/namcos1.c | 42 | ||||
| -rw-r--r-- | src/mame/includes/namcos1.h | 57 | ||||
| -rw-r--r-- | src/mame/machine/namcos1.c | 103 | ||||
| -rw-r--r-- | src/mame/video/namcos1.c | 10 |
4 files changed, 127 insertions, 85 deletions
diff --git a/src/mame/drivers/namcos1.c b/src/mame/drivers/namcos1.c index c63f55fc422..05471a6373d 100644 --- a/src/mame/drivers/namcos1.c +++ b/src/mame/drivers/namcos1.c @@ -218,7 +218,7 @@ Notes: TODO: - There is still a big mystery about the first location of tri port ram, which is - shared among all four CPUs. See namcos1_mcu_patch_w() for the kludge: essentially, + shared among all four CPUs. See mcu_patch_w() for the kludge: essentially, this location has to be 0xA6 for the games to work. However, the MCU first sets it to 0xA6, then zeroes it - and there doesn't seem to be any code anywhere for any CPU that would set it back to 0xA6. Se, we ignore the zeroing write. @@ -358,19 +358,19 @@ READ8_MEMBER(namcos1_state::dsw_r) return 0xf0 | ret; } -WRITE8_MEMBER(namcos1_state::namcos1_coin_w) +WRITE8_MEMBER(namcos1_state::coin_w) { coin_lockout_global_w(machine(), ~data & 1); coin_counter_w(machine(), 0, data & 2); coin_counter_w(machine(), 1, data & 4); } -void namcos1_state::namcos1_update_DACs() +void namcos1_state::update_DACs() { m_dac->write_signed16(0x8000 + (m_dac0_value * m_dac0_gain) + (m_dac1_value * m_dac1_gain)); } -void namcos1_state::namcos1_init_DACs() +void namcos1_state::init_DACs() { m_dac0_value = 0; m_dac1_value = 0; @@ -378,7 +378,7 @@ void namcos1_state::namcos1_init_DACs() m_dac1_gain = 0x80; } -WRITE8_MEMBER(namcos1_state::namcos1_dac_gain_w) +WRITE8_MEMBER(namcos1_state::dac_gain_w) { int value; @@ -390,19 +390,19 @@ WRITE8_MEMBER(namcos1_state::namcos1_dac_gain_w) value = (data >> 3) & 3; /* GAIN2,GAIN3 */ m_dac1_gain = 0x20 * (value+1); - namcos1_update_DACs(); + update_DACs(); } -WRITE8_MEMBER(namcos1_state::namcos1_dac0_w) +WRITE8_MEMBER(namcos1_state::dac0_w) { m_dac0_value = data - 0x80; /* shift zero point */ - namcos1_update_DACs(); + update_DACs(); } -WRITE8_MEMBER(namcos1_state::namcos1_dac1_w) +WRITE8_MEMBER(namcos1_state::dac1_w) { m_dac1_value = data - 0x80; /* shift zero point */ - namcos1_update_DACs(); + update_DACs(); } @@ -416,11 +416,11 @@ static ADDRESS_MAP_START( sub_map, AS_PROGRAM, 8, namcos1_state ) ADDRESS_MAP_END static ADDRESS_MAP_START( virtual_map, AS_PROGRAM, 8, namcos1_state ) - AM_RANGE(0x2c0000, 0x2c1fff) AM_WRITE(namcos1_3dcs_w) + AM_RANGE(0x2c0000, 0x2c1fff) AM_WRITE(_3dcs_w) AM_RANGE(0x2e0000, 0x2e7fff) AM_DEVREADWRITE("c116", namco_c116_device, read, write) - AM_RANGE(0x2f0000, 0x2f7fff) AM_RAM_WRITE(namcos1_videoram_w) AM_SHARE("videoram") + AM_RANGE(0x2f0000, 0x2f7fff) AM_RAM_WRITE(videoram_w) AM_SHARE("videoram") AM_RANGE(0x2f8000, 0x2f9fff) AM_READWRITE(no_key_r, no_key_w) - AM_RANGE(0x2fc000, 0x2fcfff) AM_RAM_WRITE(namcos1_spriteram_w) AM_SHARE("spriteram") + AM_RANGE(0x2fc000, 0x2fcfff) AM_RAM_WRITE(spriteram_w) AM_SHARE("spriteram") AM_RANGE(0x2fd000, 0x2fd01f) AM_RAM AM_SHARE("pfcontrol") AM_MIRROR(0xfe0) AM_RANGE(0x2fe000, 0x2fe3ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0xc00) /* PSG ( Shared ) */ AM_RANGE(0x2ff000, 0x2ff7ff) AM_RAM AM_SHARE("triram") AM_MIRROR(0x800) @@ -436,7 +436,7 @@ static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, namcos1_state ) AM_RANGE(0x5000, 0x53ff) AM_DEVREADWRITE("namco", namco_cus30_device, namcos1_cus30_r, namcos1_cus30_w) AM_MIRROR(0x400) /* PSG ( Shared ) */ AM_RANGE(0x7000, 0x77ff) AM_RAM AM_SHARE("triram") AM_RANGE(0x8000, 0x9fff) AM_RAM /* Sound RAM 3 */ - AM_RANGE(0xc000, 0xc001) AM_WRITE(namcos1_sound_bankswitch_w) /* ROM bank selector */ + AM_RANGE(0xc000, 0xc001) AM_WRITE(sound_bankswitch_w) /* ROM bank selector */ AM_RANGE(0xd001, 0xd001) AM_DEVWRITE("c117", namco_c117_device, sound_watchdog_w) AM_RANGE(0xe000, 0xe000) AM_WRITE(irq_ack_w) AM_RANGE(0xc000, 0xffff) AM_ROM @@ -452,16 +452,16 @@ static ADDRESS_MAP_START( mcu_map, AS_PROGRAM, 8, namcos1_state ) AM_RANGE(0x4000, 0xbfff) AM_ROMBANK("mcubank") /* banked ROM */ AM_RANGE(0xc000, 0xc7ff) AM_RAM AM_SHARE("triram") AM_RANGE(0xc800, 0xcfff) AM_RAM AM_SHARE("nvram") /* EEPROM */ - AM_RANGE(0xd000, 0xd000) AM_WRITE(namcos1_dac0_w) - AM_RANGE(0xd400, 0xd400) AM_WRITE(namcos1_dac1_w) - AM_RANGE(0xd800, 0xd800) AM_WRITE(namcos1_mcu_bankswitch_w) /* ROM bank selector */ + AM_RANGE(0xd000, 0xd000) AM_WRITE(dac0_w) + AM_RANGE(0xd400, 0xd400) AM_WRITE(dac1_w) + AM_RANGE(0xd800, 0xd800) AM_WRITE(mcu_bankswitch_w) /* ROM bank selector */ AM_RANGE(0xf000, 0xf000) AM_WRITE(irq_ack_w) AM_RANGE(0xf000, 0xffff) AM_ROM ADDRESS_MAP_END static ADDRESS_MAP_START( mcu_port_map, AS_IO, 8, namcos1_state ) - AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("COIN") AM_WRITE(namcos1_coin_w) - AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READNOP AM_WRITE(namcos1_dac_gain_w) + AM_RANGE(M6801_PORT1, M6801_PORT1) AM_READ_PORT("COIN") AM_WRITE(coin_w) + AM_RANGE(M6801_PORT2, M6801_PORT2) AM_READNOP AM_WRITE(dac_gain_w) ADDRESS_MAP_END @@ -1063,8 +1063,8 @@ static MACHINE_CONFIG_START( ns1, namcos1_state ) /* video hardware */ MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_RAW_PARAMS(XTAL_49_152MHz/8, 384, 9+8*8, 9+44*8, 264, 2*8, 30*8) - MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update_namcos1) - MCFG_SCREEN_VBLANK_DRIVER(namcos1_state, screen_eof_namcos1) + MCFG_SCREEN_UPDATE_DRIVER(namcos1_state, screen_update) + MCFG_SCREEN_VBLANK_DRIVER(namcos1_state, screen_eof) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", namcos1) diff --git a/src/mame/includes/namcos1.h b/src/mame/includes/namcos1.h index ba1e80e73f2..bd7b320bdb8 100644 --- a/src/mame/includes/namcos1.h +++ b/src/mame/includes/namcos1.h @@ -67,21 +67,35 @@ public: UINT8 *m_tilemap_maskdata; int m_copy_sprites; UINT8 m_drawmode_table[16]; + DECLARE_DIRECT_UPDATE_MEMBER(direct_handler_main); DECLARE_DIRECT_UPDATE_MEMBER(direct_handler_sub); + DECLARE_WRITE_LINE_MEMBER(subres_w); DECLARE_WRITE8_MEMBER(irq_ack_w); DECLARE_READ8_MEMBER(dsw_r); - DECLARE_WRITE8_MEMBER(namcos1_coin_w); - DECLARE_WRITE8_MEMBER(namcos1_dac_gain_w); - DECLARE_WRITE8_MEMBER(namcos1_dac0_w); - DECLARE_WRITE8_MEMBER(namcos1_dac1_w); - DECLARE_WRITE8_MEMBER(namcos1_sound_bankswitch_w); - DECLARE_WRITE8_MEMBER(namcos1_mcu_bankswitch_w); - DECLARE_WRITE8_MEMBER(namcos1_mcu_patch_w); + DECLARE_WRITE8_MEMBER(coin_w); + DECLARE_WRITE8_MEMBER(dac_gain_w); + DECLARE_WRITE8_MEMBER(dac0_w); + DECLARE_WRITE8_MEMBER(dac1_w); + DECLARE_WRITE8_MEMBER(sound_bankswitch_w); + DECLARE_WRITE8_MEMBER(mcu_bankswitch_w); + DECLARE_WRITE8_MEMBER(mcu_patch_w); DECLARE_READ8_MEMBER(quester_paddle_r); DECLARE_READ8_MEMBER(berabohm_buttons_r); DECLARE_READ8_MEMBER(faceoff_inputs_r); + DECLARE_WRITE8_MEMBER(videoram_w); + DECLARE_WRITE8_MEMBER(spriteram_w); + DECLARE_WRITE8_MEMBER(_3dcs_w); + DECLARE_READ8_MEMBER(no_key_r); + DECLARE_WRITE8_MEMBER(no_key_w); + DECLARE_READ8_MEMBER(key_type1_r); + DECLARE_WRITE8_MEMBER(key_type1_w); + DECLARE_READ8_MEMBER(key_type2_r); + DECLARE_WRITE8_MEMBER(key_type2_w); + DECLARE_READ8_MEMBER(key_type3_r); + DECLARE_WRITE8_MEMBER(key_type3_w); + DECLARE_DRIVER_INIT(pacmania); DECLARE_DRIVER_INIT(ws); DECLARE_DRIVER_INIT(wldcourt); @@ -105,31 +119,24 @@ public: DECLARE_DRIVER_INIT(ws89); DECLARE_DRIVER_INIT(dspirit); DECLARE_DRIVER_INIT(pistoldm); + virtual void machine_start(); + virtual void machine_reset(); + virtual void video_start(); + void driver_init(); + TILE_GET_INFO_MEMBER(bg_get_info0); TILE_GET_INFO_MEMBER(bg_get_info1); TILE_GET_INFO_MEMBER(bg_get_info2); TILE_GET_INFO_MEMBER(bg_get_info3); TILE_GET_INFO_MEMBER(fg_get_info4); TILE_GET_INFO_MEMBER(fg_get_info5); - virtual void machine_reset(); - virtual void video_start(); + void draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - UINT32 screen_update_namcos1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void screen_eof_namcos1(screen_device &screen, bool state); - void namcos1_update_DACs(); - void namcos1_init_DACs(); - DECLARE_WRITE8_MEMBER( namcos1_videoram_w ); - DECLARE_WRITE8_MEMBER( namcos1_spriteram_w ); - WRITE8_MEMBER( namcos1_3dcs_w ); - READ8_MEMBER( no_key_r ); - WRITE8_MEMBER( no_key_w ); - READ8_MEMBER( key_type1_r ); - WRITE8_MEMBER( key_type1_w ); - READ8_MEMBER( key_type2_r ); - WRITE8_MEMBER( key_type2_w ); - READ8_MEMBER( key_type3_r ); - WRITE8_MEMBER( key_type3_w ); - void namcos1_driver_init(); + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void screen_eof(screen_device &screen, bool state); + void update_DACs(); + void init_DACs(); + private: inline offs_t direct_handler(int whichcpu, direct_read_data &direct, offs_t address); inline void get_tile_info(tile_data &tileinfo,int tile_index,UINT8 *info_vram); diff --git a/src/mame/machine/namcos1.c b/src/mame/machine/namcos1.c index 6bdb596fa3e..d08487ec6a8 100644 --- a/src/mame/machine/namcos1.c +++ b/src/mame/machine/namcos1.c @@ -10,7 +10,7 @@ * * *******************************************************************************/ -WRITE8_MEMBER( namcos1_state::namcos1_3dcs_w ) +WRITE8_MEMBER( namcos1_state::_3dcs_w ) { if (offset & 1) popmessage("LEFT"); else popmessage("RIGHT"); @@ -475,12 +475,9 @@ WRITE8_MEMBER( namcos1_state::key_type3_w ) * * *******************************************************************************/ -WRITE8_MEMBER(namcos1_state::namcos1_sound_bankswitch_w) +WRITE8_MEMBER(namcos1_state::sound_bankswitch_w) { - UINT8 *rom = memregion("audiocpu")->base() + 0xc000; - - int bank = (data & 0x70) >> 4; - membank("soundbank")->set_base(rom + 0x4000 * bank); + membank("soundbank")->set_entry((data & 0x70) >> 4); } @@ -539,12 +536,25 @@ WRITE_LINE_MEMBER(namcos1_state::subres_w) * * *******************************************************************************/ +void namcos1_state::machine_start() +{ + membank("soundbank")->configure_entries(0, 8, memregion("audiocpu")->base() + 0xc000, 0x4000); + + save_item(NAME(m_dac0_value)); + save_item(NAME(m_dac1_value)); + save_item(NAME(m_dac0_gain)); + save_item(NAME(m_dac1_gain)); + save_item(NAME(m_key)); + save_item(NAME(m_mcu_patch_data)); + save_item(NAME(m_reset)); +} + void namcos1_state::machine_reset() { /* mcu patch data clear */ m_mcu_patch_data = 0; - namcos1_init_DACs(); + init_DACs(); memset(m_key, 0, sizeof(m_key)); m_key_quotient = 0; m_key_reminder = 0; @@ -566,7 +576,7 @@ void namcos1_state::machine_reset() *******************************************************************************/ /* mcu banked rom area select */ -WRITE8_MEMBER(namcos1_state::namcos1_mcu_bankswitch_w) +WRITE8_MEMBER(namcos1_state::mcu_bankswitch_w) { int addr; @@ -590,8 +600,8 @@ WRITE8_MEMBER(namcos1_state::namcos1_mcu_bankswitch_w) -/* This point is very obscure, but i havent found any better way yet. */ -/* Works with all games so far. */ +/* This point is very obscure, but I haven't found any better way yet. */ +/* Works with all games so far. */ /* patch points of memory address */ /* CPU0/1 bank[17f][1000] */ @@ -602,7 +612,7 @@ WRITE8_MEMBER(namcos1_state::namcos1_mcu_bankswitch_w) /* I found set $A6 only initialize in MCU */ /* This patch kill write this data by MCU case $A6 to xx(clear) */ -WRITE8_MEMBER(namcos1_state::namcos1_mcu_patch_w) +WRITE8_MEMBER(namcos1_state::mcu_patch_w) { //logerror("mcu C000 write pc=%04x data=%02x\n",space.device().safe_pc(),data); if (m_mcu_patch_data == 0xa6) return; @@ -617,7 +627,7 @@ WRITE8_MEMBER(namcos1_state::namcos1_mcu_patch_w) * driver specific initialize routine * * * *******************************************************************************/ -void namcos1_state::namcos1_driver_init() +void namcos1_state::driver_init() { // bit 16 of the address is inverted for PRG7 (and bits 17,18 just not connected) for (int i = 0x380000;i < 0x400000;i++) @@ -634,7 +644,7 @@ void namcos1_state::namcos1_driver_init() m_subcpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(namcos1_state::direct_handler_sub), this)); // kludge! see notes - m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8_delegate(FUNC(namcos1_state::namcos1_mcu_patch_w), this)); + m_mcu->space(AS_PROGRAM).install_write_handler(0xc000, 0xc000, write8_delegate(FUNC(namcos1_state::mcu_patch_w), this)); // these are overridden as needed in the specific DRIVER_INIT_MEMBERs m_key_id = 0; @@ -652,7 +662,7 @@ void namcos1_state::namcos1_driver_init() *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,shadowld) { - namcos1_driver_init(); + driver_init(); } /******************************************************************************* @@ -660,7 +670,7 @@ DRIVER_INIT_MEMBER(namcos1_state,shadowld) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,dspirit) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type1_r),this), write8_delegate(FUNC(namcos1_state::key_type1_w),this)); @@ -672,7 +682,7 @@ DRIVER_INIT_MEMBER(namcos1_state,dspirit) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,wldcourt) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type1_r),this), write8_delegate(FUNC(namcos1_state::key_type1_w),this)); @@ -684,7 +694,7 @@ DRIVER_INIT_MEMBER(namcos1_state,wldcourt) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,blazer) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type1_r),this), write8_delegate(FUNC(namcos1_state::key_type1_w),this)); @@ -696,7 +706,7 @@ DRIVER_INIT_MEMBER(namcos1_state,blazer) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,puzlclub) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type1_r),this), write8_delegate(FUNC(namcos1_state::key_type1_w),this)); @@ -708,11 +718,14 @@ DRIVER_INIT_MEMBER(namcos1_state,puzlclub) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,pacmania) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type2_r),this), write8_delegate(FUNC(namcos1_state::key_type2_w),this)); m_key_id = 0x12; + save_item(NAME(m_key_quotient)); + save_item(NAME(m_key_reminder)); + save_item(NAME(m_key_numerator_high_word)); } /******************************************************************************* @@ -720,11 +733,14 @@ DRIVER_INIT_MEMBER(namcos1_state,pacmania) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,alice) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type2_r),this), write8_delegate(FUNC(namcos1_state::key_type2_w),this)); m_key_id = 0x25; + save_item(NAME(m_key_quotient)); + save_item(NAME(m_key_reminder)); + save_item(NAME(m_key_numerator_high_word)); } /******************************************************************************* @@ -732,11 +748,14 @@ DRIVER_INIT_MEMBER(namcos1_state,alice) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,galaga88) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type2_r),this), write8_delegate(FUNC(namcos1_state::key_type2_w),this)); m_key_id = 0x31; + save_item(NAME(m_key_quotient)); + save_item(NAME(m_key_reminder)); + save_item(NAME(m_key_numerator_high_word)); } /******************************************************************************* @@ -744,11 +763,14 @@ DRIVER_INIT_MEMBER(namcos1_state,galaga88) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,ws) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type2_r),this), write8_delegate(FUNC(namcos1_state::key_type2_w),this)); m_key_id = 0x07; + save_item(NAME(m_key_quotient)); + save_item(NAME(m_key_reminder)); + save_item(NAME(m_key_numerator_high_word)); } /******************************************************************************* @@ -756,11 +778,14 @@ DRIVER_INIT_MEMBER(namcos1_state,ws) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,bakutotu) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type2_r),this), write8_delegate(FUNC(namcos1_state::key_type2_w),this)); m_key_id = 0x22; + save_item(NAME(m_key_quotient)); + save_item(NAME(m_key_reminder)); + save_item(NAME(m_key_numerator_high_word)); } /******************************************************************************* @@ -768,7 +793,7 @@ DRIVER_INIT_MEMBER(namcos1_state,bakutotu) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,splatter) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -786,7 +811,7 @@ DRIVER_INIT_MEMBER(namcos1_state,splatter) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,rompers) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -804,7 +829,7 @@ DRIVER_INIT_MEMBER(namcos1_state,rompers) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,blastoff) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -822,7 +847,7 @@ DRIVER_INIT_MEMBER(namcos1_state,blastoff) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,ws89) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -840,7 +865,7 @@ DRIVER_INIT_MEMBER(namcos1_state,ws89) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,tankfrce) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -863,6 +888,8 @@ DRIVER_INIT_MEMBER(namcos1_state,tankfrc4) m_stored_input[1] = 0; m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this)); + save_item(NAME(m_input_count)); + save_item(NAME(m_stored_input)); } /******************************************************************************* @@ -870,7 +897,7 @@ DRIVER_INIT_MEMBER(namcos1_state,tankfrc4) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,dangseed) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -888,7 +915,7 @@ DRIVER_INIT_MEMBER(namcos1_state,dangseed) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,pistoldm) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -906,7 +933,7 @@ DRIVER_INIT_MEMBER(namcos1_state,pistoldm) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,ws90) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -924,7 +951,7 @@ DRIVER_INIT_MEMBER(namcos1_state,ws90) *******************************************************************************/ DRIVER_INIT_MEMBER(namcos1_state,soukobdx) { - namcos1_driver_init(); + driver_init(); m_c117->space(AS_PROGRAM).install_readwrite_handler(0x2f8000, 0x2f9fff, read8_delegate(FUNC(namcos1_state::key_type3_r),this), write8_delegate(FUNC(namcos1_state::key_type3_w),this)); @@ -975,8 +1002,9 @@ READ8_MEMBER( namcos1_state::quester_paddle_r ) DRIVER_INIT_MEMBER(namcos1_state,quester) { m_strobe = 0; - namcos1_driver_init(); + driver_init(); m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::quester_paddle_r), this)); + save_item(NAME(m_strobe)); } @@ -1065,8 +1093,11 @@ DRIVER_INIT_MEMBER(namcos1_state,berabohm) m_input_count = 0; m_strobe = 0; m_strobe_count = 0; - namcos1_driver_init(); + driver_init(); m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::berabohm_buttons_r), this)); + save_item(NAME(m_input_count)); + save_item(NAME(m_strobe)); + save_item(NAME(m_strobe_count)); } @@ -1141,6 +1172,8 @@ DRIVER_INIT_MEMBER(namcos1_state,faceoff) m_stored_input[0] = 0; m_stored_input[1] = 0; - namcos1_driver_init(); + driver_init(); m_mcu->space(AS_PROGRAM).install_read_handler(0x1400, 0x1401, read8_delegate(FUNC(namcos1_state::faceoff_inputs_r), this)); + save_item(NAME(m_input_count)); + save_item(NAME(m_stored_input)); } diff --git a/src/mame/video/namcos1.c b/src/mame/video/namcos1.c index ac83ee99535..c518e998cba 100644 --- a/src/mame/video/namcos1.c +++ b/src/mame/video/namcos1.c @@ -141,6 +141,8 @@ void namcos1_state::video_start() memset(m_playfield_control, 0, sizeof(m_playfield_control)); m_copy_sprites = 0; + + save_item(NAME(m_copy_sprites)); } @@ -151,7 +153,7 @@ void namcos1_state::video_start() ***************************************************************************/ -WRITE8_MEMBER( namcos1_state::namcos1_videoram_w ) +WRITE8_MEMBER( namcos1_state::videoram_w ) { m_videoram[offset] = data; if (offset < 0x7000) @@ -170,7 +172,7 @@ WRITE8_MEMBER( namcos1_state::namcos1_videoram_w ) } -WRITE8_MEMBER( namcos1_state::namcos1_spriteram_w ) +WRITE8_MEMBER( namcos1_state::spriteram_w ) { /* 0000-07ff work ram */ /* 0800-0fff sprite ram */ @@ -280,7 +282,7 @@ void namcos1_state::draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, co -UINT32 namcos1_state::screen_update_namcos1(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 namcos1_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int i, j, scrollx, scrolly, priority; rectangle new_clip = cliprect; @@ -344,7 +346,7 @@ UINT32 namcos1_state::screen_update_namcos1(screen_device &screen, bitmap_ind16 } -void namcos1_state::screen_eof_namcos1(screen_device &screen, bool state) +void namcos1_state::screen_eof(screen_device &screen, bool state) { // rising edge if (state) |
