From 273cb3443697c4d73f0324e6b3412e021e17eda4 Mon Sep 17 00:00:00 2001 From: cam900 Date: Thu, 21 Dec 2023 01:31:54 +0900 Subject: taito/flstory.cpp: Use single-pass sprite drawing, and moved games with MCU to a derived class. (#11858) --- src/mame/taito/flstory.cpp | 307 ++++++++++++++++++++++++--------------------- 1 file changed, 161 insertions(+), 146 deletions(-) diff --git a/src/mame/taito/flstory.cpp b/src/mame/taito/flstory.cpp index 9918cacf5b6..64a29d334f8 100644 --- a/src/mame/taito/flstory.cpp +++ b/src/mame/taito/flstory.cpp @@ -43,7 +43,6 @@ public: m_workram(*this, "workram"), m_maincpu(*this, "maincpu"), m_audiocpu(*this, "audiocpu"), - m_bmcu(*this, "bmcu"), m_msm(*this, "msm"), m_ay(*this, "aysnd"), m_ta7630(*this, "ta7630"), @@ -55,17 +54,12 @@ public: m_extraio1(*this, "EXTRA_P1") { } - void flstory(machine_config &config) ATTR_COLD; - void rumba(machine_config &config) ATTR_COLD; void onna34ro(machine_config &config) ATTR_COLD; - void victnine(machine_config &config) ATTR_COLD; - void onna34ro_mcu(machine_config &config) ATTR_COLD; protected: virtual void machine_start() override ATTR_COLD; virtual void machine_reset() override ATTR_COLD; -private: // memory pointers required_shared_ptr m_videoram; required_shared_ptr m_spriteram; @@ -75,7 +69,6 @@ private: // devices required_device m_maincpu; required_device m_audiocpu; - optional_device m_bmcu; required_device m_msm; required_device m_ay; required_device m_ta7630; @@ -103,39 +96,62 @@ private: uint8_t snd_flag_r(); void snd_reset_w(uint8_t data); - uint8_t flstory_mcu_status_r(); - uint8_t victnine_mcu_status_r(); void flstory_videoram_w(offs_t offset, uint8_t data); void flstory_palette_w(offs_t offset, uint8_t data); uint8_t flstory_palette_r(offs_t offset); void flstory_gfxctrl_w(uint8_t data); - uint8_t victnine_gfxctrl_r(); - void victnine_gfxctrl_w(uint8_t data); void flstory_scrlram_w(offs_t offset, uint8_t data); void sound_control_0_w(uint8_t data); void sound_control_1_w(uint8_t data); void sound_control_2_w(uint8_t data); void sound_control_3_w(uint8_t data); TILE_GET_INFO_MEMBER(get_tile_info); + DECLARE_VIDEO_START(flstory); + uint32_t screen_update_flstory(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void flstory_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void common(machine_config &config) ATTR_COLD; + + void base_map(address_map &map) ATTR_COLD; + void onna34ro_map(address_map &map) ATTR_COLD; + void sound_map(address_map &map) ATTR_COLD; +}; + + +class flstory_mcu_state : public flstory_state +{ +public: + flstory_mcu_state(const machine_config &mconfig, device_type type, const char *tag) : + flstory_state(mconfig, type, tag), + m_bmcu(*this, "bmcu") + { } + + void flstory(machine_config &config) ATTR_COLD; + void rumba(machine_config &config) ATTR_COLD; + void victnine(machine_config &config) ATTR_COLD; + void onna34ro_mcu(machine_config &config) ATTR_COLD; + +private: + // memory pointers + + // devices + required_device m_bmcu; + + uint8_t flstory_mcu_status_r(); + uint8_t victnine_mcu_status_r(); + uint8_t victnine_gfxctrl_r(); + void victnine_gfxctrl_w(uint8_t data); TILE_GET_INFO_MEMBER(victnine_get_tile_info); TILE_GET_INFO_MEMBER(get_rumba_tile_info); - DECLARE_VIDEO_START(flstory); DECLARE_VIDEO_START(victnine); DECLARE_VIDEO_START(rumba); - uint32_t screen_update_flstory(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_victnine(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_rumba(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - void flstory_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, int pri); void victnine_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); - void common(machine_config &config) ATTR_COLD; - - void base_map(address_map &map) ATTR_COLD; void flstory_map(address_map &map) ATTR_COLD; - void onna34ro_map(address_map &map) ATTR_COLD; void onna34ro_mcu_map(address_map &map) ATTR_COLD; void rumba_map(address_map &map) ATTR_COLD; - void sound_map(address_map &map) ATTR_COLD; void victnine_map(address_map &map) ATTR_COLD; }; @@ -146,32 +162,32 @@ private: TILE_GET_INFO_MEMBER(flstory_state::get_tile_info) { - int const code = m_videoram[tile_index * 2]; - int const attr = m_videoram[tile_index * 2 + 1]; - int const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank; - int const flags = TILE_FLIPYX((attr & 0x18) >> 3); + uint8_t const code = m_videoram[tile_index * 2]; + uint8_t const attr = m_videoram[tile_index * 2 + 1]; + uint32_t const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank; + uint8_t const flags = TILE_FLIPYX((attr & 0x18) >> 3); tileinfo.category = BIT(attr, 5); tileinfo.group = BIT(attr, 5); tileinfo.set(0, tile_number, attr & 0x0f, flags); } -TILE_GET_INFO_MEMBER(flstory_state::victnine_get_tile_info) +TILE_GET_INFO_MEMBER(flstory_mcu_state::victnine_get_tile_info) { - int const code = m_videoram[tile_index * 2]; - int const attr = m_videoram[tile_index * 2 + 1]; - int const tile_number = ((attr & 0x38) << 5) + code; - int const flags = ((attr & 0x40) ? TILE_FLIPX : 0) | ((attr & 0x80) ? TILE_FLIPY : 0); + uint8_t const code = m_videoram[tile_index * 2]; + uint8_t const attr = m_videoram[tile_index * 2 + 1]; + uint32_t const tile_number = ((attr & 0x38) << 5) + code; + uint8_t const flags = (BIT(attr, 6) ? TILE_FLIPX : 0) | (BIT(attr, 7) ? TILE_FLIPY : 0); tileinfo.set(0, tile_number, attr & 0x07, flags); } -TILE_GET_INFO_MEMBER(flstory_state::get_rumba_tile_info) +TILE_GET_INFO_MEMBER(flstory_mcu_state::get_rumba_tile_info) { - int const code = m_videoram[tile_index * 2]; - int const attr = m_videoram[tile_index * 2 + 1]; - int const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank; - int const col = (attr & 0x0f); + uint8_t const code = m_videoram[tile_index * 2]; + uint8_t const attr = m_videoram[tile_index * 2 + 1]; + uint32_t const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank; + uint32_t const col = (attr & 0x0f); tileinfo.category = BIT(attr, 5); tileinfo.group = BIT(attr, 5); @@ -195,9 +211,9 @@ VIDEO_START_MEMBER(flstory_state,flstory) save_pointer(NAME(m_paletteram_ext), m_palette->entries()); } -VIDEO_START_MEMBER(flstory_state,rumba) +VIDEO_START_MEMBER(flstory_mcu_state,rumba) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flstory_state::get_rumba_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flstory_mcu_state::get_rumba_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); // m_bg_tilemap->set_transparent_pen(15); m_bg_tilemap->set_transmask(0, 0x3fff, 0xc000); /* split type 0 has pens 0-13 transparent in front half */ m_bg_tilemap->set_transmask(1, 0x8000, 0x7fff); /* split type 1 has pen 15 transparent in front half */ @@ -212,9 +228,9 @@ VIDEO_START_MEMBER(flstory_state,rumba) save_pointer(NAME(m_paletteram_ext), m_palette->entries()); } -VIDEO_START_MEMBER(flstory_state,victnine) +VIDEO_START_MEMBER(flstory_mcu_state,victnine) { - m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flstory_state::victnine_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(flstory_mcu_state::victnine_get_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); m_bg_tilemap->set_scroll_cols(32); m_paletteram = make_unique_clear(m_palette->entries()); @@ -252,7 +268,7 @@ void flstory_state::flstory_gfxctrl_w(uint8_t data) { m_gfxctrl = data; - flip_screen_set(~data & 0x01); + flip_screen_set(BIT(~data, 0)); if (m_char_bank != ((data & 0x10) >> 4)) { m_char_bank = (data & 0x10) >> 4; @@ -261,19 +277,19 @@ void flstory_state::flstory_gfxctrl_w(uint8_t data) m_palette_bank = (data & 0x20) >> 5; } -uint8_t flstory_state::victnine_gfxctrl_r() +uint8_t flstory_mcu_state::victnine_gfxctrl_r() { return m_gfxctrl; } -void flstory_state::victnine_gfxctrl_w(uint8_t data) +void flstory_mcu_state::victnine_gfxctrl_w(uint8_t data) { m_gfxctrl = data; m_palette_bank = (data & 0x20) >> 5; - if (data & 0x04) - flip_screen_set(data & 0x01); + if (BIT(data, 2)) + flip_screen_set(BIT(data, 0)); } void flstory_state::flstory_scrlram_w(offs_t offset, uint8_t data) @@ -283,117 +299,116 @@ void flstory_state::flstory_scrlram_w(offs_t offset, uint8_t data) } -void flstory_state::flstory_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int pri ) +void flstory_state::flstory_draw_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int flip = flip_screen(); + bool const flip = flip_screen(); - for (int i = 0; i < 0x20; i++) + for (int i = 0x1f; i >= 0; i--) { - int pr = m_spriteram[m_spriteram.bytes() - 1 - i]; - int offs = (pr & 0x1f) * 4; + uint8_t const pr = m_spriteram[m_spriteram.bytes() - 1 - i]; + uint32_t const offs = (pr & 0x1f) * 4; - if ((pr & 0x80) == pri) - { - int code, sx, sy, flipx, flipy; + uint32_t const pri_mask = BIT(pr, 7) ? GFX_PMASK_8 : (GFX_PMASK_8 | GFX_PMASK_4); - code = m_spriteram[offs + 2] + ((m_spriteram[offs + 1] & 0x30) << 4); - sx = m_spriteram[offs + 3]; - sy = m_spriteram[offs + 0]; + uint32_t const code = m_spriteram[offs + 2] + ((m_spriteram[offs + 1] & 0x30) << 4); + int sx = m_spriteram[offs + 3]; + int sy = m_spriteram[offs + 0]; - flipx = ((m_spriteram[offs + 1] & 0x40) >> 6); - flipy = ((m_spriteram[offs + 1] & 0x80) >> 7); + bool flipx = BIT(m_spriteram[offs + 1], 6); + bool flipy = BIT(m_spriteram[offs + 1], 7); - if (flip) - { - sx = (240 - sx) & 0xff ; - sy = sy - 1 ; - flipx = !flipx; - flipy = !flipy; - } - else - sy = 240 - sy - 1 ; - - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, + if (flip) + { + sx = (240 - sx) & 0xff; + sy = sy - 1; + flipx = !flipx; + flipy = !flipy; + } + else + sy = 240 - sy - 1; + + m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, + code, + m_spriteram[offs + 1] & 0x0f, + flipx, flipy, + sx, sy, + screen.priority(), pri_mask, 15); + /* wrap around */ + if (sx > 240) + m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect, code, m_spriteram[offs + 1] & 0x0f, - flipx,flipy, - sx,sy,15); - /* wrap around */ - if (sx > 240) - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, - code, - m_spriteram[offs + 1] & 0x0f, - flipx,flipy, - sx-256,sy,15); - } + flipx, flipy, + sx-256, sy, + screen.priority(), pri_mask, 15); } } uint32_t flstory_state::screen_update_flstory(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - m_bg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER1, 0); - m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER1, 0); - flstory_draw_sprites(bitmap, cliprect, 0x00); - m_bg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER0, 0); - flstory_draw_sprites(bitmap, cliprect, 0x80); - m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER0, 0); + screen.priority().fill(0, cliprect); + + m_bg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER1, 1); + m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER1, 2); + m_bg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER0, 4); + m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER0, 8); + flstory_draw_sprites(screen, bitmap, cliprect); + return 0; } -void flstory_state::victnine_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) +void flstory_mcu_state::victnine_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) { - int flip = flip_screen(); + bool const flip = flip_screen(); for (int i = 0; i < 0x20; i++) { - int pr = m_spriteram[m_spriteram.bytes() - 1 - i]; - int offs = (pr & 0x1f) * 4; + uint8_t const pr = m_spriteram[m_spriteram.bytes() - 1 - i]; + uint32_t const offs = (pr & 0x1f) * 4; //if ((pr & 0x80) == pri) { - int code, sx, sy, flipx, flipy; - - code = m_spriteram[offs + 2] + ((m_spriteram[offs + 1] & 0x20) << 3); - sx = m_spriteram[offs + 3]; - sy = m_spriteram[offs + 0]; + uint32_t const code = m_spriteram[offs + 2] + ((m_spriteram[offs + 1] & 0x20) << 3); + int sx = m_spriteram[offs + 3]; + int sy = m_spriteram[offs + 0]; - flipx = ((m_spriteram[offs + 1] & 0x40) >> 6); - flipy = ((m_spriteram[offs + 1] & 0x80) >> 7); + bool flipx = BIT(m_spriteram[offs + 1], 6); + bool flipy = BIT(m_spriteram[offs + 1], 7); if (flip) { - sx = (240 - sx + 1) & 0xff ; - sy = sy + 1 ; + sx = (240 - sx + 1) & 0xff; + sy = sy + 1; flipx = !flipx; flipy = !flipy; } else - sy = 240 - sy + 1 ; + sy = 240 - sy + 1; - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, + m_gfxdecode->gfx(1)->transpen(bitmap, cliprect, code, m_spriteram[offs + 1] & 0x0f, - flipx,flipy, - sx,sy,15); + flipx, flipy, + sx, sy, 15); /* wrap around */ if (sx > 240) - m_gfxdecode->gfx(1)->transpen(bitmap,cliprect, + m_gfxdecode->gfx(1)->transpen(bitmap, cliprect, code, m_spriteram[offs + 1] & 0x0f, - flipx,flipy, - sx-256,sy,15); + flipx, flipy, + sx - 256, sy, 15); } } } -uint32_t flstory_state::screen_update_victnine(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t flstory_mcu_state::screen_update_victnine(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); victnine_draw_sprites(bitmap, cliprect); return 0; } -uint32_t flstory_state::screen_update_rumba(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t flstory_mcu_state::screen_update_rumba(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { m_bg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER1, 0); m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER1, 0); @@ -415,7 +430,7 @@ void flstory_state::snd_reset_w(uint8_t data) m_audiocpu->set_input_line(INPUT_LINE_RESET, (data & 1 ) ? ASSERT_LINE : CLEAR_LINE); } -uint8_t flstory_state::flstory_mcu_status_r() +uint8_t flstory_mcu_state::flstory_mcu_status_r() { // bit 0 = when 1, MCU is ready to receive data from main CPU // bit 1 = when 1, MCU has sent data to the main CPU @@ -425,7 +440,7 @@ uint8_t flstory_state::flstory_mcu_status_r() } -uint8_t flstory_state::victnine_mcu_status_r() +uint8_t flstory_mcu_state::victnine_mcu_status_r() { uint8_t ret = flstory_mcu_status_r() & 0x03; ret |= m_extraio1->read() & 0xfc; @@ -464,15 +479,15 @@ void flstory_state::base_map(address_map &map) map(0xe000, 0xe7ff).mirror(0x1800).ram().share(m_workram); } -void flstory_state::flstory_map(address_map &map) +void flstory_mcu_state::flstory_map(address_map &map) { base_map(map); map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); - map(0xd805, 0xd805).r(FUNC(flstory_state::flstory_mcu_status_r)); + map(0xd805, 0xd805).r(FUNC(flstory_mcu_state::flstory_mcu_status_r)); // map(0xda00, 0xda00).writeonly(); map(0xdcc0, 0xdcff).ram(); // unknown - map(0xdf03, 0xdf03).w(FUNC(flstory_state::flstory_gfxctrl_w)); + map(0xdf03, 0xdf03).w(FUNC(flstory_mcu_state::flstory_gfxctrl_w)); } void flstory_state::onna34ro_map(address_map &map) @@ -485,34 +500,34 @@ void flstory_state::onna34ro_map(address_map &map) map(0xdf03, 0xdf03).w(FUNC(flstory_state::flstory_gfxctrl_w)); } -void flstory_state::onna34ro_mcu_map(address_map &map) +void flstory_mcu_state::onna34ro_mcu_map(address_map &map) { onna34ro_map(map); map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); - map(0xd805, 0xd805).r(FUNC(flstory_state::flstory_mcu_status_r)); + map(0xd805, 0xd805).r(FUNC(flstory_mcu_state::flstory_mcu_status_r)); } -void flstory_state::victnine_map(address_map &map) +void flstory_mcu_state::victnine_map(address_map &map) { base_map(map); map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); - map(0xd805, 0xd805).r(FUNC(flstory_state::victnine_mcu_status_r)); + map(0xd805, 0xd805).r(FUNC(flstory_mcu_state::victnine_mcu_status_r)); map(0xd807, 0xd807).portr("EXTRA_P2"); // map(0xda00, 0xda00).writeonly(); - map(0xdce0, 0xdce0).rw(FUNC(flstory_state::victnine_gfxctrl_r), FUNC(flstory_state::victnine_gfxctrl_w)); + map(0xdce0, 0xdce0).rw(FUNC(flstory_mcu_state::victnine_gfxctrl_r), FUNC(flstory_mcu_state::victnine_gfxctrl_w)); map(0xdce1, 0xdce1).nopw(); // unknown } -void flstory_state::rumba_map(address_map &map) +void flstory_mcu_state::rumba_map(address_map &map) { base_map(map); map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w)); - map(0xd805, 0xd805).r(FUNC(flstory_state::flstory_mcu_status_r)); + map(0xd805, 0xd805).r(FUNC(flstory_mcu_state::flstory_mcu_status_r)); map(0xd807, 0xd807).portr("EXTRA_P2"); // map(0xda00, 0xda00).writeonly(); - map(0xdce0, 0xdce0).rw(FUNC(flstory_state::victnine_gfxctrl_r), FUNC(flstory_state::victnine_gfxctrl_w)); + map(0xdce0, 0xdce0).rw(FUNC(flstory_mcu_state::victnine_gfxctrl_r), FUNC(flstory_mcu_state::victnine_gfxctrl_w)); // map(0xdce1, 0xdce1).nopw(); // unknown } @@ -1083,8 +1098,8 @@ static const gfx_layout spritelayout = }; static GFXDECODE_START( gfx_flstory ) - GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 ) - GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 256, 16 ) + GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 16 ) + GFXDECODE_ENTRY( "tiles", 0, spritelayout, 256, 16 ) GFXDECODE_END @@ -1147,9 +1162,9 @@ void flstory_state::common(machine_config &config) SPEAKER(config, "speaker").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - m_soundlatch->data_pending_callback().set("soundnmi", FUNC(input_merger_device::in_w<0>)); + m_soundlatch->data_pending_callback().set(m_soundnmi, FUNC(input_merger_device::in_w<0>)); - INPUT_MERGER_ALL_HIGH(config, "soundnmi").output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); + INPUT_MERGER_ALL_HIGH(config, m_soundnmi).output_handler().set_inputline(m_audiocpu, INPUT_LINE_NMI); GENERIC_LATCH_8(config, m_soundlatch2); TA7630(config, m_ta7630); @@ -1176,15 +1191,15 @@ void flstory_state::common(machine_config &config) DAC_8BIT_R2R(config, "dac", 0).add_route(ALL_OUTPUTS, "speaker", 0.1); // unknown DAC } -void flstory_state::flstory(machine_config &config) +void flstory_mcu_state::flstory(machine_config &config) { common(config); - m_maincpu->set_addrmap(AS_PROGRAM, &flstory_state::flstory_map); + m_maincpu->set_addrmap(AS_PROGRAM, &flstory_mcu_state::flstory_map); TAITO68705_MCU(config, m_bmcu, XTAL(18'432'000)/6); // verified on PCB - MCFG_VIDEO_START_OVERRIDE(flstory_state,flstory) + MCFG_VIDEO_START_OVERRIDE(flstory_mcu_state,flstory) } void flstory_state::onna34ro(machine_config &config) @@ -1196,46 +1211,46 @@ void flstory_state::onna34ro(machine_config &config) MCFG_VIDEO_START_OVERRIDE(flstory_state,flstory) } -void flstory_state::onna34ro_mcu(machine_config &config) +void flstory_mcu_state::onna34ro_mcu(machine_config &config) { onna34ro(config); - m_maincpu->set_addrmap(AS_PROGRAM, &flstory_state::onna34ro_mcu_map); + m_maincpu->set_addrmap(AS_PROGRAM, &flstory_mcu_state::onna34ro_mcu_map); TAITO68705_MCU(config, m_bmcu, XTAL(18'432'000)/6); // ? } -void flstory_state::victnine(machine_config &config) +void flstory_mcu_state::victnine(machine_config &config) { common(config); // basic machine hardware m_maincpu->set_clock(XTAL(8'000'000)/2); // 4 MHz - m_maincpu->set_addrmap(AS_PROGRAM, &flstory_state::victnine_map); + m_maincpu->set_addrmap(AS_PROGRAM, &flstory_mcu_state::victnine_map); TAITO68705_MCU(config, m_bmcu, XTAL(18'432'000)/6); // video hardware - subdevice("screen")->set_screen_update(FUNC(flstory_state::screen_update_victnine)); - MCFG_VIDEO_START_OVERRIDE(flstory_state,victnine) + subdevice("screen")->set_screen_update(FUNC(flstory_mcu_state::screen_update_victnine)); + MCFG_VIDEO_START_OVERRIDE(flstory_mcu_state,victnine) // sound hardware m_ay->reset_routes(); m_ay->add_route(ALL_OUTPUTS, "speaker", 0.5); } -void flstory_state::rumba(machine_config &config) +void flstory_mcu_state::rumba(machine_config &config) { common(config); // basic machine hardware - m_maincpu->set_addrmap(AS_PROGRAM, &flstory_state::rumba_map); + m_maincpu->set_addrmap(AS_PROGRAM, &flstory_mcu_state::rumba_map); m_maincpu->set_clock(XTAL(8'000'000) / 2); // verified on PCB TAITO68705_MCU(config, m_bmcu, XTAL(18'432'000)/6); // ? // video hardware - subdevice("screen")->set_screen_update(FUNC(flstory_state::screen_update_rumba)); - MCFG_VIDEO_START_OVERRIDE(flstory_state,rumba) + subdevice("screen")->set_screen_update(FUNC(flstory_mcu_state::screen_update_rumba)); + MCFG_VIDEO_START_OVERRIDE(flstory_mcu_state,rumba) } /*************************************************************************** @@ -1257,7 +1272,7 @@ ROM_START( flstory ) ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ ROM_LOAD( "a45-20.mcu", 0x0000, 0x0800, CRC(7d2cdd9b) SHA1(b9a7b4c7d9d58b4b7cab1304beaa9d17f9559419) ) - ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x20000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "vid-a45.18", 0x00000, 0x4000, CRC(6f08f69e) SHA1(8f1b7e63a38f855cf26d57aed678da7cf1378fdf) ) ROM_LOAD( "vid-a45.06", 0x04000, 0x4000, CRC(dc856a75) SHA1(6eedbf6b027c884502b6e7329f13829787138165) ) ROM_LOAD( "vid-a45.08", 0x08000, 0x4000, CRC(d0b028ca) SHA1(c8bd9136ad3180002961ecfe600fc91a3c891539) ) @@ -1281,7 +1296,7 @@ ROM_START( flstoryo ) ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ ROM_LOAD( "a45-20.mcu", 0x0000, 0x0800, CRC(7d2cdd9b) SHA1(b9a7b4c7d9d58b4b7cab1304beaa9d17f9559419) ) - ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x20000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "vid-a45.18", 0x00000, 0x4000, CRC(6f08f69e) SHA1(8f1b7e63a38f855cf26d57aed678da7cf1378fdf) ) ROM_LOAD( "vid-a45.06", 0x04000, 0x4000, CRC(dc856a75) SHA1(6eedbf6b027c884502b6e7329f13829787138165) ) ROM_LOAD( "vid-a45.08", 0x08000, 0x4000, CRC(d0b028ca) SHA1(c8bd9136ad3180002961ecfe600fc91a3c891539) ) @@ -1313,7 +1328,7 @@ ROM_START( onna34ro ) ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ ROM_LOAD( "a52_17.54c", 0x0000, 0x0800, CRC(0ab2612e) SHA1(2bc74e9ef5b9dd51d733dc62902d92c269f7d6a7) ) - ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x20000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "a52-04.11v", 0x00000, 0x4000, CRC(5b126294) SHA1(fc31e062e665f7313f923e84d6497716f0658ac0) ) ROM_LOAD( "a52-06.10v", 0x04000, 0x4000, CRC(78114721) SHA1(d0e52544e05ab4fd1b131ed49beb252048bcbe31) ) ROM_LOAD( "a52-08.09v", 0x08000, 0x4000, CRC(4a293745) SHA1(a54c1cfced63306db0ba7ee635dce41134c91dc8) ) @@ -1337,7 +1352,7 @@ ROM_START( onna34roa ) ROM_LOAD( "a52-15.37s", 0x6000, 0x2000, CRC(5afc21d0) SHA1(317d5fb3a48ce5e13e02c5c6431fa08ada115d27) ) ROM_LOAD( "a52-16.38s", 0x8000, 0x2000, CRC(ccf42aee) SHA1(a6eb01c5384724999631b55700dade430b71ca95) ) - ROM_REGION( 0x20000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x20000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "a52-04.11v", 0x00000, 0x4000, CRC(5b126294) SHA1(fc31e062e665f7313f923e84d6497716f0658ac0) ) ROM_LOAD( "a52-06.10v", 0x04000, 0x4000, CRC(78114721) SHA1(d0e52544e05ab4fd1b131ed49beb252048bcbe31) ) ROM_LOAD( "a52-08.09v", 0x08000, 0x4000, CRC(4a293745) SHA1(a54c1cfced63306db0ba7ee635dce41134c91dc8) ) @@ -1452,7 +1467,7 @@ ROM_START( victnine ) ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ ROM_LOAD( "a16-18.54", 0x0000, 0x0800, BAD_DUMP CRC(5198ef59) SHA1(05bde731ff580984dcf5a66e8465377c6dc03ec0) ) // dumped via m68705 dumper and hand-verified. Might still be imperfect but confirmed working on real PCB. - ROM_REGION( 0x10000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x10000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "a16-06-1.7", 0x00000, 0x2000, CRC(b708134d) SHA1(9732be463cfbbe81ea0ad06da5a48b660ca429d0) ) ROM_LOAD( "a16-07-2.8", 0x02000, 0x2000, CRC(cdaf7f83) SHA1(cf83af1655cb3ffce26c1b015b1e2249f7b12e3f) ) ROM_LOAD( "a16-10.90", 0x04000, 0x2000, CRC(e8e42454) SHA1(c4923d4adfc0a48cf5a7d0145de5c9389495cac2) ) @@ -1522,7 +1537,7 @@ ROM_START( rumba ) ROM_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */ ROM_LOAD( "a23_11.bin", 0x0000, 0x0800, CRC(fddc99ce) SHA1(a9c7f76752ce74a780ca74004106c969d78ba931) ) - ROM_REGION( 0x8000, "gfx1", ROMREGION_INVERT ) + ROM_REGION( 0x8000, "tiles", ROMREGION_INVERT ) ROM_LOAD( "a23_07.bin", 0x02000, 0x2000, CRC(c98fbea6) SHA1(edd1e0b2551f726018ca6e0b2cf629046a482711) ) ROM_LOAD( "a23_06.bin", 0x00000, 0x2000, CRC(bf1e3a7f) SHA1(1258be10739cee6e6a8b2ce4d39f89bff1ea7f16) ) // should be a good read ROM_LOAD( "a23_05.bin", 0x06000, 0x2000, CRC(b40db231) SHA1(85204efc05e95334576807e4dab866f4f40081e6) ) @@ -1532,9 +1547,9 @@ ROM_END } // anonymous namespace -GAME( 1985, flstory, 0, flstory, flstory, flstory_state, empty_init, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, flstoryo, flstory, flstory, flstory, flstory_state, empty_init, ROT180, "Taito", "The FairyLand Story (earlier)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34ro, 0, onna34ro_mcu, onna34ro, flstory_state, empty_init, ROT0, "Taito", "Onna Sanshirou - Typhoon Gal", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, flstory_state, empty_init, ROT0, "Taito", "Onna Sanshirou - Typhoon Gal (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, victnine, 0, victnine, victnine, flstory_state, empty_init, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1984, rumba, 0, rumba, rumba, flstory_state, empty_init, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, flstory, 0, flstory, flstory, flstory_mcu_state, empty_init, ROT180, "Taito", "The FairyLand Story", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, flstoryo, flstory, flstory, flstory, flstory_mcu_state, empty_init, ROT180, "Taito", "The FairyLand Story (earlier)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34ro, 0, onna34ro_mcu, onna34ro, flstory_mcu_state, empty_init, ROT0, "Taito", "Onna Sanshirou - Typhoon Gal", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1985, onna34roa, onna34ro, onna34ro, onna34ro, flstory_state, empty_init, ROT0, "Taito", "Onna Sanshirou - Typhoon Gal (bootleg)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, victnine, 0, victnine, victnine, flstory_mcu_state, empty_init, ROT0, "Taito", "Victorious Nine", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1984, rumba, 0, rumba, rumba, flstory_mcu_state, empty_init, ROT270, "Taito", "Rumba Lumber", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -- cgit v1.2.3