From af3895e1a55c8b62f82c4b530505313339798e9e Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 4 Feb 2015 18:02:55 +0100 Subject: [PATCH 1/2] bloodbro.c: added save state support (nw) --- src/mame/drivers/bloodbro.c | 22 +++++++++++----------- src/mame/includes/bloodbro.h | 25 +++++++++++++++---------- src/mame/video/bloodbro.c | 9 ++++++--- 3 files changed, 32 insertions(+), 24 deletions(-) diff --git a/src/mame/drivers/bloodbro.c b/src/mame/drivers/bloodbro.c index 1dd41ca3e63..350ef8a414c 100644 --- a/src/mame/drivers/bloodbro.c +++ b/src/mame/drivers/bloodbro.c @@ -131,11 +131,11 @@ static ADDRESS_MAP_START( common_map, AS_PROGRAM, 16, bloodbro_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x08afff) AM_RAM AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x08c000, 0x08c3ff) AM_RAM_WRITE(bloodbro_bgvideoram_w) AM_SHARE("bgvideoram") + AM_RANGE(0x08c000, 0x08c3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") AM_RANGE(0x08c400, 0x08cfff) AM_RAM - AM_RANGE(0x08d000, 0x08d3ff) AM_RAM_WRITE(bloodbro_fgvideoram_w) AM_SHARE("fgvideoram") + AM_RANGE(0x08d000, 0x08d3ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") AM_RANGE(0x08d400, 0x08d7ff) AM_RAM - AM_RANGE(0x08d800, 0x08dfff) AM_RAM_WRITE(bloodbro_txvideoram_w) AM_SHARE("txvideoram") + AM_RANGE(0x08d800, 0x08dfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") AM_RANGE(0x08e000, 0x08e7ff) AM_RAM AM_RANGE(0x08e800, 0x08f7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x08f800, 0x08ffff) AM_RAM @@ -163,11 +163,11 @@ static ADDRESS_MAP_START( weststry_map, AS_PROGRAM, 16, bloodbro_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x08afff) AM_RAM AM_RANGE(0x08b000, 0x08bfff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x08c000, 0x08c3ff) AM_RAM_WRITE(bloodbro_bgvideoram_w) AM_SHARE("bgvideoram") + AM_RANGE(0x08c000, 0x08c3ff) AM_RAM_WRITE(bgvideoram_w) AM_SHARE("bgvideoram") AM_RANGE(0x08c400, 0x08cfff) AM_RAM - AM_RANGE(0x08d000, 0x08d3ff) AM_RAM_WRITE(bloodbro_fgvideoram_w) AM_SHARE("fgvideoram") + AM_RANGE(0x08d000, 0x08d3ff) AM_RAM_WRITE(fgvideoram_w) AM_SHARE("fgvideoram") AM_RANGE(0x08d400, 0x08d7ff) AM_RAM - AM_RANGE(0x08d800, 0x08dfff) AM_RAM_WRITE(bloodbro_txvideoram_w) AM_SHARE("txvideoram") + AM_RANGE(0x08d800, 0x08dfff) AM_RAM_WRITE(txvideoram_w) AM_SHARE("txvideoram") AM_RANGE(0x08e000, 0x08ffff) AM_RAM AM_RANGE(0x0c1000, 0x0c1001) AM_READ_PORT("DSW") AM_RANGE(0x0c1002, 0x0c1003) AM_READ_PORT("IN0") @@ -663,8 +663,8 @@ ROM_END /* Game Drivers */ -GAME( 1990, bloodbro, 0, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 1)", GAME_NO_COCKTAIL ) -GAME( 1990, bloodbroa,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 2)", GAME_NO_COCKTAIL ) -GAME( 1990, bloodbrob,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 3)", GAME_NO_COCKTAIL ) -GAME( 1990, weststry, bloodbro, weststry, weststry, driver_device, 0, ROT0, "bootleg (Datsu)", "West Story (bootleg of Blood Bros.)", GAME_NO_COCKTAIL | GAME_NO_SOUND ) -GAME( 1990, skysmash, 0, skysmash, skysmash, driver_device, 0, ROT270, "Nihon System", "Sky Smasher", 0 ) +GAME( 1990, bloodbro, 0, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 1)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1990, bloodbroa,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 2)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1990, bloodbrob,bloodbro, bloodbro, bloodbro, driver_device, 0, ROT0, "TAD Corporation", "Blood Bros. (set 3)", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1990, weststry, bloodbro, weststry, weststry, driver_device, 0, ROT0, "bootleg (Datsu)", "West Story (bootleg of Blood Bros.)", GAME_NO_COCKTAIL | GAME_NO_SOUND | GAME_SUPPORTS_SAVE ) +GAME( 1990, skysmash, 0, skysmash, skysmash, driver_device, 0, ROT270, "Nihon System", "Sky Smasher", 0 | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/bloodbro.h b/src/mame/includes/bloodbro.h index 5832fe3cfc3..3287986704b 100644 --- a/src/mame/includes/bloodbro.h +++ b/src/mame/includes/bloodbro.h @@ -3,14 +3,18 @@ class bloodbro_state : public driver_device public: bloodbro_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_palette(*this, "palette"), m_spriteram(*this, "spriteram"), m_bgvideoram(*this, "bgvideoram"), m_fgvideoram(*this, "fgvideoram"), - m_txvideoram(*this, "txvideoram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_txvideoram(*this, "txvideoram") { } + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; + required_shared_ptr m_spriteram; required_shared_ptr m_bgvideoram; required_shared_ptr m_fgvideoram; @@ -18,25 +22,26 @@ public: UINT16 m_scrollram[6]; UINT16 m_layer_en; + tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; tilemap_t *m_tx_tilemap; - DECLARE_WRITE16_MEMBER(bloodbro_bgvideoram_w); - DECLARE_WRITE16_MEMBER(bloodbro_fgvideoram_w); - DECLARE_WRITE16_MEMBER(bloodbro_txvideoram_w); + DECLARE_WRITE16_MEMBER(bgvideoram_w); + DECLARE_WRITE16_MEMBER(fgvideoram_w); + DECLARE_WRITE16_MEMBER(txvideoram_w); DECLARE_WRITE16_MEMBER(layer_en_w); DECLARE_WRITE16_MEMBER(layer_scroll_w); + TILE_GET_INFO_MEMBER(get_bg_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(get_tx_tile_info); + virtual void video_start(); + UINT32 screen_update_bloodbro(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_weststry(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_skysmash(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void bloodbro_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void weststry_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; }; diff --git a/src/mame/video/bloodbro.c b/src/mame/video/bloodbro.c index d8cbf566f04..0676cd22f05 100644 --- a/src/mame/video/bloodbro.c +++ b/src/mame/video/bloodbro.c @@ -61,6 +61,9 @@ void bloodbro_state::video_start() m_fg_tilemap->set_transparent_pen(15); m_tx_tilemap->set_transparent_pen(15); + + save_item(NAME(m_scrollram)); + save_item(NAME(m_layer_en)); } @@ -71,19 +74,19 @@ void bloodbro_state::video_start() ***************************************************************************/ -WRITE16_MEMBER(bloodbro_state::bloodbro_bgvideoram_w) +WRITE16_MEMBER(bloodbro_state::bgvideoram_w) { COMBINE_DATA(&m_bgvideoram[offset]); m_bg_tilemap->mark_tile_dirty(offset); } -WRITE16_MEMBER(bloodbro_state::bloodbro_fgvideoram_w) +WRITE16_MEMBER(bloodbro_state::fgvideoram_w) { COMBINE_DATA(&m_fgvideoram[offset]); m_fg_tilemap->mark_tile_dirty(offset); } -WRITE16_MEMBER(bloodbro_state::bloodbro_txvideoram_w) +WRITE16_MEMBER(bloodbro_state::txvideoram_w) { COMBINE_DATA(&m_txvideoram[offset]); m_tx_tilemap->mark_tile_dirty(offset); From ffa3b0299f61cae4b7e3bab6b150296412f35418 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 4 Feb 2015 18:16:48 +0100 Subject: [PATCH 2/2] dcon.c: added save state support (nw) --- src/mame/drivers/dcon.c | 14 +++++++------- src/mame/includes/dcon.h | 37 +++++++++++++++++++++---------------- src/mame/video/dcon.c | 15 ++++++++++----- 3 files changed, 38 insertions(+), 28 deletions(-) diff --git a/src/mame/drivers/dcon.c b/src/mame/drivers/dcon.c index 16eb5e8c470..8ec7fb8aa0a 100644 --- a/src/mame/drivers/dcon.c +++ b/src/mame/drivers/dcon.c @@ -26,13 +26,13 @@ static ADDRESS_MAP_START( dcon_map, AS_PROGRAM, 16, dcon_state ) AM_RANGE(0x00000, 0x7ffff) AM_ROM AM_RANGE(0x80000, 0x8bfff) AM_RAM - AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(dcon_background_w) AM_SHARE("back_data") - AM_RANGE(0x8c800, 0x8cfff) AM_RAM_WRITE(dcon_foreground_w) AM_SHARE("fore_data") - AM_RANGE(0x8d000, 0x8d7ff) AM_RAM_WRITE(dcon_midground_w) AM_SHARE("mid_data") - AM_RANGE(0x8d800, 0x8e7ff) AM_RAM_WRITE(dcon_text_w) AM_SHARE("textram") + AM_RANGE(0x8c000, 0x8c7ff) AM_RAM_WRITE(background_w) AM_SHARE("back_data") + AM_RANGE(0x8c800, 0x8cfff) AM_RAM_WRITE(foreground_w) AM_SHARE("fore_data") + AM_RANGE(0x8d000, 0x8d7ff) AM_RAM_WRITE(midground_w) AM_SHARE("mid_data") + AM_RANGE(0x8d800, 0x8e7ff) AM_RAM_WRITE(text_w) AM_SHARE("textram") AM_RANGE(0x8e800, 0x8f7ff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette") AM_RANGE(0x8f800, 0x8ffff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x9d000, 0x9d7ff) AM_WRITE(dcon_gfxbank_w) + AM_RANGE(0x9d000, 0x9d7ff) AM_WRITE(gfxbank_w) AM_RANGE(0xa0000, 0xa000d) AM_DEVREADWRITE("seibu_sound", seibu_sound_device, main_word_r, main_word_w) AM_RANGE(0xc0000, 0xc004f) AM_DEVREADWRITE("crtc", seibu_crtc_device, read, write) @@ -403,5 +403,5 @@ DRIVER_INIT_MEMBER(dcon_state,sdgndmps) } -GAME( 1991, sdgndmps, 0, sdgndmps, sdgndmps, dcon_state, sdgndmps, ROT0, "Banpresto / Bandai", "SD Gundam Psycho Salamander no Kyoui", GAME_NO_COCKTAIL ) -GAME( 1992, dcon, 0, dcon, dcon, driver_device, 0, ROT0, "Success", "D-Con", GAME_NO_COCKTAIL ) +GAME( 1991, sdgndmps, 0, sdgndmps, sdgndmps, dcon_state, sdgndmps, ROT0, "Banpresto / Bandai", "SD Gundam Psycho Salamander no Kyoui", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) +GAME( 1992, dcon, 0, dcon, dcon, driver_device, 0, ROT0, "Success", "D-Con", GAME_NO_COCKTAIL | GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/dcon.h b/src/mame/includes/dcon.h index 4ca9baa210b..70481429399 100644 --- a/src/mame/includes/dcon.h +++ b/src/mame/includes/dcon.h @@ -3,47 +3,52 @@ class dcon_state : public driver_device public: dcon_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_palette(*this, "palette"), m_back_data(*this, "back_data"), m_fore_data(*this, "fore_data"), m_mid_data(*this, "mid_data"), m_textram(*this, "textram"), - m_spriteram(*this, "spriteram"), - m_maincpu(*this, "maincpu"), - m_gfxdecode(*this, "gfxdecode"), - m_palette(*this, "palette") { } + m_spriteram(*this, "spriteram") { } + + required_device m_maincpu; + required_device m_gfxdecode; + required_device m_palette; required_shared_ptr m_back_data; required_shared_ptr m_fore_data; required_shared_ptr m_mid_data; required_shared_ptr m_textram; required_shared_ptr m_spriteram; + tilemap_t *m_background_layer; tilemap_t *m_foreground_layer; tilemap_t *m_midground_layer; tilemap_t *m_text_layer; - UINT16 m_enable; + int m_gfx_bank_select; int m_last_gfx_bank; UINT16 m_scroll_ram[6]; - DECLARE_WRITE16_MEMBER(layer_en_w); - DECLARE_WRITE16_MEMBER(layer_scroll_w); UINT16 m_layer_en; - DECLARE_WRITE16_MEMBER(dcon_gfxbank_w); - DECLARE_WRITE16_MEMBER(dcon_background_w); - DECLARE_WRITE16_MEMBER(dcon_foreground_w); - DECLARE_WRITE16_MEMBER(dcon_midground_w); - DECLARE_WRITE16_MEMBER(dcon_text_w); - DECLARE_DRIVER_INIT(sdgndmps); + DECLARE_WRITE16_MEMBER(layer_en_w); + DECLARE_WRITE16_MEMBER(layer_scroll_w); + DECLARE_WRITE16_MEMBER(gfxbank_w); + DECLARE_WRITE16_MEMBER(background_w); + DECLARE_WRITE16_MEMBER(foreground_w); + DECLARE_WRITE16_MEMBER(midground_w); + DECLARE_WRITE16_MEMBER(text_w); + TILE_GET_INFO_MEMBER(get_back_tile_info); TILE_GET_INFO_MEMBER(get_fore_tile_info); TILE_GET_INFO_MEMBER(get_mid_tile_info); TILE_GET_INFO_MEMBER(get_text_tile_info); + + DECLARE_DRIVER_INIT(sdgndmps); virtual void video_start(); + UINT32 screen_update_dcon(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); UINT32 screen_update_sdgndmps(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); void draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect); - required_device m_maincpu; - required_device m_gfxdecode; - required_device m_palette; }; diff --git a/src/mame/video/dcon.c b/src/mame/video/dcon.c index ef6d385c9a3..78152626753 100644 --- a/src/mame/video/dcon.c +++ b/src/mame/video/dcon.c @@ -10,7 +10,7 @@ /******************************************************************************/ -WRITE16_MEMBER(dcon_state::dcon_gfxbank_w) +WRITE16_MEMBER(dcon_state::gfxbank_w) { if (data&1) m_gfx_bank_select=0x1000; @@ -18,25 +18,25 @@ WRITE16_MEMBER(dcon_state::dcon_gfxbank_w) m_gfx_bank_select=0; } -WRITE16_MEMBER(dcon_state::dcon_background_w) +WRITE16_MEMBER(dcon_state::background_w) { COMBINE_DATA(&m_back_data[offset]); m_background_layer->mark_tile_dirty(offset); } -WRITE16_MEMBER(dcon_state::dcon_foreground_w) +WRITE16_MEMBER(dcon_state::foreground_w) { COMBINE_DATA(&m_fore_data[offset]); m_foreground_layer->mark_tile_dirty(offset); } -WRITE16_MEMBER(dcon_state::dcon_midground_w) +WRITE16_MEMBER(dcon_state::midground_w) { COMBINE_DATA(&m_mid_data[offset]); m_midground_layer->mark_tile_dirty(offset); } -WRITE16_MEMBER(dcon_state::dcon_text_w) +WRITE16_MEMBER(dcon_state::text_w) { COMBINE_DATA(&m_textram[offset]); m_text_layer->mark_tile_dirty(offset); @@ -106,6 +106,11 @@ void dcon_state::video_start() m_text_layer->set_transparent_pen(15); m_gfx_bank_select = 0; + + save_item(NAME(m_gfx_bank_select)); + save_item(NAME(m_last_gfx_bank)); + save_item(NAME(m_scroll_ram)); + save_item(NAME(m_layer_en)); } void dcon_state::draw_sprites( screen_device &screen, bitmap_ind16 &bitmap,const rectangle &cliprect)