mirror of
https://github.com/holub/mame
synced 2025-06-14 16:37:00 +03:00
taito/flstory.cpp: Use single-pass sprite drawing, and moved games with MCU to a derived class. (#11858)
This commit is contained in:
parent
27aa4f6409
commit
273cb34436
@ -43,7 +43,6 @@ public:
|
|||||||
m_workram(*this, "workram"),
|
m_workram(*this, "workram"),
|
||||||
m_maincpu(*this, "maincpu"),
|
m_maincpu(*this, "maincpu"),
|
||||||
m_audiocpu(*this, "audiocpu"),
|
m_audiocpu(*this, "audiocpu"),
|
||||||
m_bmcu(*this, "bmcu"),
|
|
||||||
m_msm(*this, "msm"),
|
m_msm(*this, "msm"),
|
||||||
m_ay(*this, "aysnd"),
|
m_ay(*this, "aysnd"),
|
||||||
m_ta7630(*this, "ta7630"),
|
m_ta7630(*this, "ta7630"),
|
||||||
@ -55,17 +54,12 @@ public:
|
|||||||
m_extraio1(*this, "EXTRA_P1")
|
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 onna34ro(machine_config &config) ATTR_COLD;
|
||||||
void victnine(machine_config &config) ATTR_COLD;
|
|
||||||
void onna34ro_mcu(machine_config &config) ATTR_COLD;
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual void machine_start() override ATTR_COLD;
|
virtual void machine_start() override ATTR_COLD;
|
||||||
virtual void machine_reset() override ATTR_COLD;
|
virtual void machine_reset() override ATTR_COLD;
|
||||||
|
|
||||||
private:
|
|
||||||
// memory pointers
|
// memory pointers
|
||||||
required_shared_ptr<uint8_t> m_videoram;
|
required_shared_ptr<uint8_t> m_videoram;
|
||||||
required_shared_ptr<uint8_t> m_spriteram;
|
required_shared_ptr<uint8_t> m_spriteram;
|
||||||
@ -75,7 +69,6 @@ private:
|
|||||||
// devices
|
// devices
|
||||||
required_device<cpu_device> m_maincpu;
|
required_device<cpu_device> m_maincpu;
|
||||||
required_device<cpu_device> m_audiocpu;
|
required_device<cpu_device> m_audiocpu;
|
||||||
optional_device<taito68705_mcu_device> m_bmcu;
|
|
||||||
required_device<msm5232_device> m_msm;
|
required_device<msm5232_device> m_msm;
|
||||||
required_device<ay8910_device> m_ay;
|
required_device<ay8910_device> m_ay;
|
||||||
required_device<ta7630_device> m_ta7630;
|
required_device<ta7630_device> m_ta7630;
|
||||||
@ -103,39 +96,62 @@ private:
|
|||||||
|
|
||||||
uint8_t snd_flag_r();
|
uint8_t snd_flag_r();
|
||||||
void snd_reset_w(uint8_t data);
|
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_videoram_w(offs_t offset, uint8_t data);
|
||||||
void flstory_palette_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);
|
uint8_t flstory_palette_r(offs_t offset);
|
||||||
void flstory_gfxctrl_w(uint8_t data);
|
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 flstory_scrlram_w(offs_t offset, uint8_t data);
|
||||||
void sound_control_0_w(uint8_t data);
|
void sound_control_0_w(uint8_t data);
|
||||||
void sound_control_1_w(uint8_t data);
|
void sound_control_1_w(uint8_t data);
|
||||||
void sound_control_2_w(uint8_t data);
|
void sound_control_2_w(uint8_t data);
|
||||||
void sound_control_3_w(uint8_t data);
|
void sound_control_3_w(uint8_t data);
|
||||||
TILE_GET_INFO_MEMBER(get_tile_info);
|
TILE_GET_INFO_MEMBER(get_tile_info);
|
||||||
TILE_GET_INFO_MEMBER(victnine_get_tile_info);
|
|
||||||
TILE_GET_INFO_MEMBER(get_rumba_tile_info);
|
|
||||||
DECLARE_VIDEO_START(flstory);
|
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_flstory(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
uint32_t screen_update_victnine(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
void flstory_draw_sprites(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 common(machine_config &config) ATTR_COLD;
|
||||||
|
|
||||||
void base_map(address_map &map) 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_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<taito68705_mcu_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(victnine);
|
||||||
|
DECLARE_VIDEO_START(rumba);
|
||||||
|
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 victnine_draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||||
|
|
||||||
|
void flstory_map(address_map &map) ATTR_COLD;
|
||||||
void onna34ro_mcu_map(address_map &map) ATTR_COLD;
|
void onna34ro_mcu_map(address_map &map) ATTR_COLD;
|
||||||
void rumba_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;
|
void victnine_map(address_map &map) ATTR_COLD;
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -146,32 +162,32 @@ private:
|
|||||||
|
|
||||||
TILE_GET_INFO_MEMBER(flstory_state::get_tile_info)
|
TILE_GET_INFO_MEMBER(flstory_state::get_tile_info)
|
||||||
{
|
{
|
||||||
int const code = m_videoram[tile_index * 2];
|
uint8_t const code = m_videoram[tile_index * 2];
|
||||||
int const attr = m_videoram[tile_index * 2 + 1];
|
uint8_t const attr = m_videoram[tile_index * 2 + 1];
|
||||||
int const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank;
|
uint32_t const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank;
|
||||||
int const flags = TILE_FLIPYX((attr & 0x18) >> 3);
|
uint8_t const flags = TILE_FLIPYX((attr & 0x18) >> 3);
|
||||||
|
|
||||||
tileinfo.category = BIT(attr, 5);
|
tileinfo.category = BIT(attr, 5);
|
||||||
tileinfo.group = BIT(attr, 5);
|
tileinfo.group = BIT(attr, 5);
|
||||||
tileinfo.set(0, tile_number, attr & 0x0f, flags);
|
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];
|
uint8_t const code = m_videoram[tile_index * 2];
|
||||||
int const attr = m_videoram[tile_index * 2 + 1];
|
uint8_t const attr = m_videoram[tile_index * 2 + 1];
|
||||||
int const tile_number = ((attr & 0x38) << 5) + code;
|
uint32_t const tile_number = ((attr & 0x38) << 5) + code;
|
||||||
int const flags = ((attr & 0x40) ? TILE_FLIPX : 0) | ((attr & 0x80) ? TILE_FLIPY : 0);
|
uint8_t const flags = (BIT(attr, 6) ? TILE_FLIPX : 0) | (BIT(attr, 7) ? TILE_FLIPY : 0);
|
||||||
|
|
||||||
tileinfo.set(0, tile_number, attr & 0x07, flags);
|
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];
|
uint8_t const code = m_videoram[tile_index * 2];
|
||||||
int const attr = m_videoram[tile_index * 2 + 1];
|
uint8_t const attr = m_videoram[tile_index * 2 + 1];
|
||||||
int const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank;
|
uint32_t const tile_number = code + ((attr & 0xc0) << 2) + 0x400 + 0x800 * m_char_bank;
|
||||||
int const col = (attr & 0x0f);
|
uint32_t const col = (attr & 0x0f);
|
||||||
|
|
||||||
tileinfo.category = BIT(attr, 5);
|
tileinfo.category = BIT(attr, 5);
|
||||||
tileinfo.group = 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());
|
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_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(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 */
|
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());
|
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_bg_tilemap->set_scroll_cols(32);
|
||||||
|
|
||||||
m_paletteram = make_unique_clear<uint8_t []>(m_palette->entries());
|
m_paletteram = make_unique_clear<uint8_t []>(m_palette->entries());
|
||||||
@ -252,7 +268,7 @@ void flstory_state::flstory_gfxctrl_w(uint8_t data)
|
|||||||
{
|
{
|
||||||
m_gfxctrl = data;
|
m_gfxctrl = data;
|
||||||
|
|
||||||
flip_screen_set(~data & 0x01);
|
flip_screen_set(BIT(~data, 0));
|
||||||
if (m_char_bank != ((data & 0x10) >> 4))
|
if (m_char_bank != ((data & 0x10) >> 4))
|
||||||
{
|
{
|
||||||
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;
|
m_palette_bank = (data & 0x20) >> 5;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t flstory_state::victnine_gfxctrl_r()
|
uint8_t flstory_mcu_state::victnine_gfxctrl_r()
|
||||||
{
|
{
|
||||||
return m_gfxctrl;
|
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_gfxctrl = data;
|
||||||
|
|
||||||
m_palette_bank = (data & 0x20) >> 5;
|
m_palette_bank = (data & 0x20) >> 5;
|
||||||
|
|
||||||
if (data & 0x04)
|
if (BIT(data, 2))
|
||||||
flip_screen_set(data & 0x01);
|
flip_screen_set(BIT(data, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void flstory_state::flstory_scrlram_w(offs_t offset, uint8_t data)
|
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];
|
uint8_t const pr = m_spriteram[m_spriteram.bytes() - 1 - i];
|
||||||
int offs = (pr & 0x1f) * 4;
|
uint32_t const offs = (pr & 0x1f) * 4;
|
||||||
|
|
||||||
if ((pr & 0x80) == pri)
|
uint32_t const pri_mask = BIT(pr, 7) ? GFX_PMASK_8 : (GFX_PMASK_8 | GFX_PMASK_4);
|
||||||
|
|
||||||
|
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];
|
||||||
|
|
||||||
|
bool flipx = BIT(m_spriteram[offs + 1], 6);
|
||||||
|
bool flipy = BIT(m_spriteram[offs + 1], 7);
|
||||||
|
|
||||||
|
if (flip)
|
||||||
{
|
{
|
||||||
int code, sx, sy, flipx, flipy;
|
sx = (240 - sx) & 0xff;
|
||||||
|
sy = sy - 1;
|
||||||
|
flipx = !flipx;
|
||||||
|
flipy = !flipy;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
sy = 240 - sy - 1;
|
||||||
|
|
||||||
code = m_spriteram[offs + 2] + ((m_spriteram[offs + 1] & 0x30) << 4);
|
m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect,
|
||||||
sx = m_spriteram[offs + 3];
|
code,
|
||||||
sy = m_spriteram[offs + 0];
|
m_spriteram[offs + 1] & 0x0f,
|
||||||
|
flipx, flipy,
|
||||||
flipx = ((m_spriteram[offs + 1] & 0x40) >> 6);
|
sx, sy,
|
||||||
flipy = ((m_spriteram[offs + 1] & 0x80) >> 7);
|
screen.priority(), pri_mask, 15);
|
||||||
|
/* wrap around */
|
||||||
if (flip)
|
if (sx > 240)
|
||||||
{
|
m_gfxdecode->gfx(1)->prio_transpen(bitmap, cliprect,
|
||||||
sx = (240 - sx) & 0xff ;
|
|
||||||
sy = sy - 1 ;
|
|
||||||
flipx = !flipx;
|
|
||||||
flipy = !flipy;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
sy = 240 - sy - 1 ;
|
|
||||||
|
|
||||||
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
|
|
||||||
code,
|
code,
|
||||||
m_spriteram[offs + 1] & 0x0f,
|
m_spriteram[offs + 1] & 0x0f,
|
||||||
flipx,flipy,
|
flipx, flipy,
|
||||||
sx,sy,15);
|
sx-256, sy,
|
||||||
/* wrap around */
|
screen.priority(), pri_mask, 15);
|
||||||
if (sx > 240)
|
|
||||||
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
|
|
||||||
code,
|
|
||||||
m_spriteram[offs + 1] & 0x0f,
|
|
||||||
flipx,flipy,
|
|
||||||
sx-256,sy,15);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t flstory_state::screen_update_flstory(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
|
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);
|
screen.priority().fill(0, cliprect);
|
||||||
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_LAYER1, 1);
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER0, 0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER1, 2);
|
||||||
flstory_draw_sprites(bitmap, cliprect, 0x80);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0 | TILEMAP_DRAW_LAYER0, 4);
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER0, 0);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | TILEMAP_DRAW_LAYER0, 8);
|
||||||
|
flstory_draw_sprites(screen, bitmap, cliprect);
|
||||||
|
|
||||||
return 0;
|
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++)
|
for (int i = 0; i < 0x20; i++)
|
||||||
{
|
{
|
||||||
int pr = m_spriteram[m_spriteram.bytes() - 1 - i];
|
uint8_t const pr = m_spriteram[m_spriteram.bytes() - 1 - i];
|
||||||
int offs = (pr & 0x1f) * 4;
|
uint32_t const offs = (pr & 0x1f) * 4;
|
||||||
|
|
||||||
//if ((pr & 0x80) == pri)
|
//if ((pr & 0x80) == pri)
|
||||||
{
|
{
|
||||||
int code, sx, sy, flipx, flipy;
|
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];
|
||||||
|
|
||||||
code = m_spriteram[offs + 2] + ((m_spriteram[offs + 1] & 0x20) << 3);
|
bool flipx = BIT(m_spriteram[offs + 1], 6);
|
||||||
sx = m_spriteram[offs + 3];
|
bool flipy = BIT(m_spriteram[offs + 1], 7);
|
||||||
sy = m_spriteram[offs + 0];
|
|
||||||
|
|
||||||
flipx = ((m_spriteram[offs + 1] & 0x40) >> 6);
|
|
||||||
flipy = ((m_spriteram[offs + 1] & 0x80) >> 7);
|
|
||||||
|
|
||||||
if (flip)
|
if (flip)
|
||||||
{
|
{
|
||||||
sx = (240 - sx + 1) & 0xff ;
|
sx = (240 - sx + 1) & 0xff;
|
||||||
sy = sy + 1 ;
|
sy = sy + 1;
|
||||||
flipx = !flipx;
|
flipx = !flipx;
|
||||||
flipy = !flipy;
|
flipy = !flipy;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sy = 240 - sy + 1 ;
|
sy = 240 - sy + 1;
|
||||||
|
|
||||||
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
|
m_gfxdecode->gfx(1)->transpen(bitmap, cliprect,
|
||||||
code,
|
code,
|
||||||
m_spriteram[offs + 1] & 0x0f,
|
m_spriteram[offs + 1] & 0x0f,
|
||||||
flipx,flipy,
|
flipx, flipy,
|
||||||
sx,sy,15);
|
sx, sy, 15);
|
||||||
/* wrap around */
|
/* wrap around */
|
||||||
if (sx > 240)
|
if (sx > 240)
|
||||||
m_gfxdecode->gfx(1)->transpen(bitmap,cliprect,
|
m_gfxdecode->gfx(1)->transpen(bitmap, cliprect,
|
||||||
code,
|
code,
|
||||||
m_spriteram[offs + 1] & 0x0f,
|
m_spriteram[offs + 1] & 0x0f,
|
||||||
flipx,flipy,
|
flipx, flipy,
|
||||||
sx-256,sy,15);
|
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);
|
m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0);
|
||||||
victnine_draw_sprites(bitmap, cliprect);
|
victnine_draw_sprites(bitmap, cliprect);
|
||||||
return 0;
|
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, 0 | TILEMAP_DRAW_LAYER1, 0);
|
||||||
m_bg_tilemap->draw(screen, bitmap, cliprect, 1 | 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);
|
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 0 = when 1, MCU is ready to receive data from main CPU
|
||||||
// bit 1 = when 1, MCU has sent data to the 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;
|
uint8_t ret = flstory_mcu_status_r() & 0x03;
|
||||||
ret |= m_extraio1->read() & 0xfc;
|
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);
|
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);
|
base_map(map);
|
||||||
map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
|
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(0xda00, 0xda00).writeonly();
|
||||||
map(0xdcc0, 0xdcff).ram(); // unknown
|
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)
|
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));
|
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);
|
onna34ro_map(map);
|
||||||
map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
|
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);
|
base_map(map);
|
||||||
map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
|
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(0xd807, 0xd807).portr("EXTRA_P2");
|
||||||
// map(0xda00, 0xda00).writeonly();
|
// 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
|
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);
|
base_map(map);
|
||||||
map(0xd000, 0xd000).rw(m_bmcu, FUNC(taito68705_mcu_device::data_r), FUNC(taito68705_mcu_device::data_w));
|
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(0xd807, 0xd807).portr("EXTRA_P2");
|
||||||
// map(0xda00, 0xda00).writeonly();
|
// 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
|
// map(0xdce1, 0xdce1).nopw(); // unknown
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1083,8 +1098,8 @@ static const gfx_layout spritelayout =
|
|||||||
};
|
};
|
||||||
|
|
||||||
static GFXDECODE_START( gfx_flstory )
|
static GFXDECODE_START( gfx_flstory )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, charlayout, 0, 16 )
|
GFXDECODE_ENTRY( "tiles", 0, charlayout, 0, 16 )
|
||||||
GFXDECODE_ENTRY( "gfx1", 0, spritelayout, 256, 16 )
|
GFXDECODE_ENTRY( "tiles", 0, spritelayout, 256, 16 )
|
||||||
GFXDECODE_END
|
GFXDECODE_END
|
||||||
|
|
||||||
|
|
||||||
@ -1147,9 +1162,9 @@ void flstory_state::common(machine_config &config)
|
|||||||
SPEAKER(config, "speaker").front_center();
|
SPEAKER(config, "speaker").front_center();
|
||||||
|
|
||||||
GENERIC_LATCH_8(config, m_soundlatch);
|
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);
|
GENERIC_LATCH_8(config, m_soundlatch2);
|
||||||
TA7630(config, m_ta7630);
|
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
|
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);
|
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
|
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)
|
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)
|
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);
|
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); // ?
|
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);
|
common(config);
|
||||||
|
|
||||||
// basic machine hardware
|
// basic machine hardware
|
||||||
m_maincpu->set_clock(XTAL(8'000'000)/2); // 4 MHz
|
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);
|
TAITO68705_MCU(config, m_bmcu, XTAL(18'432'000)/6);
|
||||||
|
|
||||||
// video hardware
|
// video hardware
|
||||||
subdevice<screen_device>("screen")->set_screen_update(FUNC(flstory_state::screen_update_victnine));
|
subdevice<screen_device>("screen")->set_screen_update(FUNC(flstory_mcu_state::screen_update_victnine));
|
||||||
MCFG_VIDEO_START_OVERRIDE(flstory_state,victnine)
|
MCFG_VIDEO_START_OVERRIDE(flstory_mcu_state,victnine)
|
||||||
|
|
||||||
// sound hardware
|
// sound hardware
|
||||||
m_ay->reset_routes();
|
m_ay->reset_routes();
|
||||||
m_ay->add_route(ALL_OUTPUTS, "speaker", 0.5);
|
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);
|
common(config);
|
||||||
|
|
||||||
// basic machine hardware
|
// 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
|
m_maincpu->set_clock(XTAL(8'000'000) / 2); // verified on PCB
|
||||||
|
|
||||||
TAITO68705_MCU(config, m_bmcu, XTAL(18'432'000)/6); // ?
|
TAITO68705_MCU(config, m_bmcu, XTAL(18'432'000)/6); // ?
|
||||||
|
|
||||||
// video hardware
|
// video hardware
|
||||||
subdevice<screen_device>("screen")->set_screen_update(FUNC(flstory_state::screen_update_rumba));
|
subdevice<screen_device>("screen")->set_screen_update(FUNC(flstory_mcu_state::screen_update_rumba));
|
||||||
MCFG_VIDEO_START_OVERRIDE(flstory_state,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_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||||
ROM_LOAD( "a45-20.mcu", 0x0000, 0x0800, CRC(7d2cdd9b) SHA1(b9a7b4c7d9d58b4b7cab1304beaa9d17f9559419) )
|
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.18", 0x00000, 0x4000, CRC(6f08f69e) SHA1(8f1b7e63a38f855cf26d57aed678da7cf1378fdf) )
|
||||||
ROM_LOAD( "vid-a45.06", 0x04000, 0x4000, CRC(dc856a75) SHA1(6eedbf6b027c884502b6e7329f13829787138165) )
|
ROM_LOAD( "vid-a45.06", 0x04000, 0x4000, CRC(dc856a75) SHA1(6eedbf6b027c884502b6e7329f13829787138165) )
|
||||||
ROM_LOAD( "vid-a45.08", 0x08000, 0x4000, CRC(d0b028ca) SHA1(c8bd9136ad3180002961ecfe600fc91a3c891539) )
|
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_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||||
ROM_LOAD( "a45-20.mcu", 0x0000, 0x0800, CRC(7d2cdd9b) SHA1(b9a7b4c7d9d58b4b7cab1304beaa9d17f9559419) )
|
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.18", 0x00000, 0x4000, CRC(6f08f69e) SHA1(8f1b7e63a38f855cf26d57aed678da7cf1378fdf) )
|
||||||
ROM_LOAD( "vid-a45.06", 0x04000, 0x4000, CRC(dc856a75) SHA1(6eedbf6b027c884502b6e7329f13829787138165) )
|
ROM_LOAD( "vid-a45.06", 0x04000, 0x4000, CRC(dc856a75) SHA1(6eedbf6b027c884502b6e7329f13829787138165) )
|
||||||
ROM_LOAD( "vid-a45.08", 0x08000, 0x4000, CRC(d0b028ca) SHA1(c8bd9136ad3180002961ecfe600fc91a3c891539) )
|
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_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||||
ROM_LOAD( "a52_17.54c", 0x0000, 0x0800, CRC(0ab2612e) SHA1(2bc74e9ef5b9dd51d733dc62902d92c269f7d6a7) )
|
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-04.11v", 0x00000, 0x4000, CRC(5b126294) SHA1(fc31e062e665f7313f923e84d6497716f0658ac0) )
|
||||||
ROM_LOAD( "a52-06.10v", 0x04000, 0x4000, CRC(78114721) SHA1(d0e52544e05ab4fd1b131ed49beb252048bcbe31) )
|
ROM_LOAD( "a52-06.10v", 0x04000, 0x4000, CRC(78114721) SHA1(d0e52544e05ab4fd1b131ed49beb252048bcbe31) )
|
||||||
ROM_LOAD( "a52-08.09v", 0x08000, 0x4000, CRC(4a293745) SHA1(a54c1cfced63306db0ba7ee635dce41134c91dc8) )
|
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-15.37s", 0x6000, 0x2000, CRC(5afc21d0) SHA1(317d5fb3a48ce5e13e02c5c6431fa08ada115d27) )
|
||||||
ROM_LOAD( "a52-16.38s", 0x8000, 0x2000, CRC(ccf42aee) SHA1(a6eb01c5384724999631b55700dade430b71ca95) )
|
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-04.11v", 0x00000, 0x4000, CRC(5b126294) SHA1(fc31e062e665f7313f923e84d6497716f0658ac0) )
|
||||||
ROM_LOAD( "a52-06.10v", 0x04000, 0x4000, CRC(78114721) SHA1(d0e52544e05ab4fd1b131ed49beb252048bcbe31) )
|
ROM_LOAD( "a52-06.10v", 0x04000, 0x4000, CRC(78114721) SHA1(d0e52544e05ab4fd1b131ed49beb252048bcbe31) )
|
||||||
ROM_LOAD( "a52-08.09v", 0x08000, 0x4000, CRC(4a293745) SHA1(a54c1cfced63306db0ba7ee635dce41134c91dc8) )
|
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_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_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-06-1.7", 0x00000, 0x2000, CRC(b708134d) SHA1(9732be463cfbbe81ea0ad06da5a48b660ca429d0) )
|
||||||
ROM_LOAD( "a16-07-2.8", 0x02000, 0x2000, CRC(cdaf7f83) SHA1(cf83af1655cb3ffce26c1b015b1e2249f7b12e3f) )
|
ROM_LOAD( "a16-07-2.8", 0x02000, 0x2000, CRC(cdaf7f83) SHA1(cf83af1655cb3ffce26c1b015b1e2249f7b12e3f) )
|
||||||
ROM_LOAD( "a16-10.90", 0x04000, 0x2000, CRC(e8e42454) SHA1(c4923d4adfc0a48cf5a7d0145de5c9389495cac2) )
|
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_REGION( 0x0800, "bmcu:mcu", 0 ) /* 2k for the microcontroller */
|
||||||
ROM_LOAD( "a23_11.bin", 0x0000, 0x0800, CRC(fddc99ce) SHA1(a9c7f76752ce74a780ca74004106c969d78ba931) )
|
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_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_06.bin", 0x00000, 0x2000, CRC(bf1e3a7f) SHA1(1258be10739cee6e6a8b2ce4d39f89bff1ea7f16) ) // should be a good read
|
||||||
ROM_LOAD( "a23_05.bin", 0x06000, 0x2000, CRC(b40db231) SHA1(85204efc05e95334576807e4dab866f4f40081e6) )
|
ROM_LOAD( "a23_05.bin", 0x06000, 0x2000, CRC(b40db231) SHA1(85204efc05e95334576807e4dab866f4f40081e6) )
|
||||||
@ -1532,9 +1547,9 @@ ROM_END
|
|||||||
} // anonymous namespace
|
} // 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, 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_state, empty_init, ROT180, "Taito", "The FairyLand Story (earlier)", 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_state, empty_init, ROT0, "Taito", "Onna Sanshirou - Typhoon Gal", 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( 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, 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_state, empty_init, ROT270, "Taito", "Rumba Lumber", 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 )
|
||||||
|
Loading…
Reference in New Issue
Block a user