From ca20495ce6d99012a0c687f4402958be05bad5bb Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Fri, 1 May 2015 14:19:16 +0200 Subject: [PATCH] darkseal.c: readded flipscreen support, enabled save state support (nw) --- src/mame/drivers/darkseal.c | 22 +++++++++--------- src/mame/includes/darkseal.h | 45 ++++++++++++++++++------------------ src/mame/video/darkseal.c | 10 ++++---- 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/src/mame/drivers/darkseal.c b/src/mame/drivers/darkseal.c index 7c6bd773c51..5667defa5bc 100644 --- a/src/mame/drivers/darkseal.c +++ b/src/mame/drivers/darkseal.c @@ -23,7 +23,7 @@ /******************************************************************************/ -WRITE16_MEMBER(darkseal_state::darkseal_control_w) +WRITE16_MEMBER(darkseal_state::control_w) { switch (offset<<1) { case 6: /* DMA flag */ @@ -38,7 +38,7 @@ WRITE16_MEMBER(darkseal_state::darkseal_control_w) } } -READ16_MEMBER(darkseal_state::darkseal_control_r) +READ16_MEMBER(darkseal_state::control_r) { switch (offset<<1) { @@ -61,9 +61,9 @@ static ADDRESS_MAP_START( darkseal_map, AS_PROGRAM, 16, darkseal_state ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x100000, 0x103fff) AM_RAM AM_SHARE("ram") AM_RANGE(0x120000, 0x1207ff) AM_RAM AM_SHARE("spriteram") - AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(darkseal_palette_24bit_rg_w) AM_SHARE("paletteram") - AM_RANGE(0x141000, 0x141fff) AM_RAM_WRITE(darkseal_palette_24bit_b_w) AM_SHARE("paletteram2") - AM_RANGE(0x180000, 0x18000f) AM_READWRITE(darkseal_control_r, darkseal_control_w) + AM_RANGE(0x140000, 0x140fff) AM_RAM_WRITE(palette_24bit_rg_w) AM_SHARE("paletteram") + AM_RANGE(0x141000, 0x141fff) AM_RAM_WRITE(palette_24bit_b_w) AM_SHARE("paletteram2") + AM_RANGE(0x180000, 0x18000f) AM_READWRITE(control_r, control_w) AM_RANGE(0x200000, 0x201fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf1_data_r, pf1_data_w) AM_RANGE(0x202000, 0x203fff) AM_DEVREADWRITE("tilegen2", deco16ic_device, pf2_data_r, pf2_data_w) @@ -236,7 +236,7 @@ static MACHINE_CONFIG_START( darkseal, darkseal_state ) MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(529)) MCFG_SCREEN_SIZE(32*8, 32*8) MCFG_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 1*8, 31*8-1) - MCFG_SCREEN_UPDATE_DRIVER(darkseal_state, screen_update_darkseal) + MCFG_SCREEN_UPDATE_DRIVER(darkseal_state, screen_update) MCFG_SCREEN_PALETTE("palette") MCFG_GFXDECODE_ADD("gfxdecode", "palette", darkseal) @@ -467,8 +467,8 @@ DRIVER_INIT_MEMBER(darkseal_state,darkseal) /******************************************************************************/ -GAME( 1990, darkseal, 0, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 3)", 0 ) -GAME( 1990, darkseal1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 1)", 0 ) -GAME( 1990, darksealj, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (Japan revision 4)", 0 ) -GAME( 1990, gatedoom, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 4)", 0 ) -GAME( 1990, gatedoom1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 1)", 0 ) +GAME( 1990, darkseal, 0, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 3)", GAME_SUPPORTS_SAVE ) +GAME( 1990, darkseal1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (World revision 1)", GAME_SUPPORTS_SAVE ) +GAME( 1990, darksealj, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Dark Seal (Japan revision 4)", GAME_SUPPORTS_SAVE ) +GAME( 1990, gatedoom, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 4)", GAME_SUPPORTS_SAVE ) +GAME( 1990, gatedoom1, darkseal, darkseal, darkseal, darkseal_state, darkseal, ROT0, "Data East Corporation", "Gate of Doom (US revision 1)", GAME_SUPPORTS_SAVE ) diff --git a/src/mame/includes/darkseal.h b/src/mame/includes/darkseal.h index fab8b8fee0b..8ebb638605d 100644 --- a/src/mame/includes/darkseal.h +++ b/src/mame/includes/darkseal.h @@ -7,42 +7,43 @@ class darkseal_state : public driver_device public: darkseal_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), - m_deco_tilegen1(*this, "tilegen1"), - m_deco_tilegen2(*this, "tilegen2"), - m_spriteram(*this, "spriteram") , - m_ram(*this, "ram"), - m_pf1_rowscroll(*this, "pf1_rowscroll"), - m_pf3_rowscroll(*this, "pf3_rowscroll"), - m_sprgen(*this, "spritegen"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), m_palette(*this, "palette"), + m_deco_tilegen1(*this, "tilegen1"), + m_deco_tilegen2(*this, "tilegen2"), + m_sprgen(*this, "spritegen"), + m_spriteram(*this, "spriteram"), + m_ram(*this, "ram"), + m_pf1_rowscroll(*this, "pf1_rowscroll"), + m_pf3_rowscroll(*this, "pf3_rowscroll"), m_generic_paletteram_16(*this, "paletteram"), m_generic_paletteram2_16(*this, "paletteram2") { } + required_device m_maincpu; + required_device m_audiocpu; + required_device m_palette; required_device m_deco_tilegen1; required_device m_deco_tilegen2; + required_device m_sprgen; required_device m_spriteram; + required_shared_ptr m_ram; required_shared_ptr m_pf1_rowscroll; //UINT16 *m_pf2_rowscroll; required_shared_ptr m_pf3_rowscroll; //UINT16 *m_pf4_rowscroll; - optional_device m_sprgen; - - - int m_flipscreen; - DECLARE_WRITE16_MEMBER(darkseal_control_w); - DECLARE_READ16_MEMBER(darkseal_control_r); - DECLARE_WRITE16_MEMBER(darkseal_palette_24bit_rg_w); - DECLARE_WRITE16_MEMBER(darkseal_palette_24bit_b_w); - DECLARE_DRIVER_INIT(darkseal); - virtual void video_start(); - UINT32 screen_update_darkseal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void update_24bitcol(int offset); - required_device m_maincpu; - required_device m_audiocpu; - required_device m_palette; required_shared_ptr m_generic_paletteram_16; required_shared_ptr m_generic_paletteram2_16; + + DECLARE_WRITE16_MEMBER(control_w); + DECLARE_READ16_MEMBER(control_r); + DECLARE_WRITE16_MEMBER(palette_24bit_rg_w); + DECLARE_WRITE16_MEMBER(palette_24bit_b_w); + + DECLARE_DRIVER_INIT(darkseal); + virtual void video_start(); + + UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void update_24bitcol(int offset); }; diff --git a/src/mame/video/darkseal.c b/src/mame/video/darkseal.c index 1100aa479ab..ab8b941da02 100644 --- a/src/mame/video/darkseal.c +++ b/src/mame/video/darkseal.c @@ -36,13 +36,13 @@ void darkseal_state::update_24bitcol(int offset) m_palette->set_pen_color(offset,rgb_t(r,g,b)); } -WRITE16_MEMBER(darkseal_state::darkseal_palette_24bit_rg_w) +WRITE16_MEMBER(darkseal_state::palette_24bit_rg_w) { COMBINE_DATA(&m_generic_paletteram_16[offset]); update_24bitcol(offset); } -WRITE16_MEMBER(darkseal_state::darkseal_palette_24bit_b_w) +WRITE16_MEMBER(darkseal_state::palette_24bit_b_w) { COMBINE_DATA(&m_generic_paletteram2_16[offset]); update_24bitcol(offset); @@ -56,9 +56,11 @@ void darkseal_state::video_start() /******************************************************************************/ -UINT32 darkseal_state::screen_update_darkseal(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +UINT32 darkseal_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - machine().tilemap().set_flip_all(m_flipscreen ? (TILEMAP_FLIPY | TILEMAP_FLIPX) : 0); + address_space &space = machine().driver_data()->generic_space(); + UINT16 flip = m_deco_tilegen2->pf_control_r(space, 0, 0xffff); + flip_screen_set(!BIT(flip, 7)); bitmap.fill(m_palette->black_pen(), cliprect);