From add098b7db32b17fdf6e3febba0c6862705c4637 Mon Sep 17 00:00:00 2001 From: cam900 Date: Sat, 25 Jan 2020 19:35:31 +0900 Subject: armedf.cpp : Use pdrawgfx for sprite drawing, Minor cleanups Fix namings, Make text VRAM into shared_ptr, Reduce duplicates, Move install_handler into address map, Fix naming, Fix terraf_io without NB1414M4, Simplify handlers, Simplify gfxdecode, Use shorter/correct type values, Add notes --- src/mame/drivers/armedf.cpp | 472 ++++++++++++++++++++------------------------ src/mame/includes/armedf.h | 134 +++++++------ src/mame/video/armedf.cpp | 166 +++++++--------- 3 files changed, 355 insertions(+), 417 deletions(-) diff --git a/src/mame/drivers/armedf.cpp b/src/mame/drivers/armedf.cpp index 9c9e99b382a..1752e49f5f8 100644 --- a/src/mame/drivers/armedf.cpp +++ b/src/mame/drivers/armedf.cpp @@ -346,11 +346,10 @@ Notes: ---- ---- ---- --x- coin counter 1 ---- ---- ---- ---x coin counter 0 */ -WRITE16_MEMBER(armedf_state::terraf_io_w) +void armedf_state::terraf_io_w(offs_t offset, u16 data, u16 mem_mask) { - if(data & 0x4000 && ((m_vreg & 0x4000) == 0)) //0 -> 1 transition - m_nb1414m4->exec((m_text_videoram[0] << 8) | (m_text_videoram[1] & 0xff),m_text_videoram.get(),m_fg_scrollx,m_fg_scrolly,m_tx_tilemap); - + if (data & 0x4000 && ((m_vreg & 0x4000) == 0)) //0 -> 1 transition + m_nb1414m4->exec((m_text_videoram[0] << 8) | (m_text_videoram[1] & 0xff),m_text_videoram.target(),m_fg_scrollx,m_fg_scrolly,m_tx_tilemap); COMBINE_DATA(&m_vreg); @@ -360,9 +359,9 @@ WRITE16_MEMBER(armedf_state::terraf_io_w) flip_screen_set(m_vreg & 0x1000); } -WRITE16_MEMBER(armedf_state::terrafjb_io_w) +void armedf_state::terrafjb_io_w(offs_t offset, u16 data, u16 mem_mask) { - if(data & 0x4000 && ((m_vreg & 0x4000) == 0)) //0 -> 1 transition + if (data & 0x4000 && ((m_vreg & 0x4000) == 0)) //0 -> 1 transition m_extra->set_input_line(0, HOLD_LINE); COMBINE_DATA(&m_vreg); @@ -373,13 +372,9 @@ WRITE16_MEMBER(armedf_state::terrafjb_io_w) flip_screen_set(m_vreg & 0x1000); } -WRITE16_MEMBER(armedf_state::bootleg_io_w) +void armedf_state::armedf_io_w(offs_t offset, u16 data, u16 mem_mask) { - if(data & 0x4000 && ((m_vreg & 0x4000) == 0)) //0 -> 1 transition - { - // NOP - } - + // no NB1414M4 present COMBINE_DATA(&m_vreg); machine().bookkeeping().coin_counter_w(0, (data & 1) >> 0); @@ -388,26 +383,26 @@ WRITE16_MEMBER(armedf_state::bootleg_io_w) flip_screen_set(m_vreg & 0x1000); } -WRITE16_MEMBER(armedf_state::sound_command_w) +void armedf_state::sound_command_w(u8 data) { - if (ACCESSING_BITS_0_7) - m_soundlatch->write(((data & 0x7f) << 1) | 1); + m_soundlatch->write(((data & 0x7f) << 1) | 1); } -READ8_MEMBER(armedf_state::soundlatch_clear_r) +u8 armedf_state::soundlatch_clear_r() { - m_soundlatch->clear_w(); + if (!machine().side_effects_disabled()) + m_soundlatch->clear_w(); return 0; } -WRITE16_MEMBER(armedf_state::irq_lv1_ack_w) +void armedf_state::irq_lv1_ack_w(u16 data) { if (m_nb1414m4 != nullptr) m_nb1414m4->vblank_trigger(); m_maincpu->set_input_line(1, CLEAR_LINE); } -WRITE16_MEMBER(armedf_state::irq_lv2_ack_w) +void armedf_state::irq_lv2_ack_w(u16 data) { if (m_nb1414m4 != nullptr) m_nb1414m4->vblank_trigger(); @@ -415,7 +410,6 @@ WRITE16_MEMBER(armedf_state::irq_lv2_ack_w) } - /************************************* * * Address maps @@ -426,36 +420,57 @@ void armedf_state::common_map(address_map &map) { map(0x000000, 0x05ffff).rom(); map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - map(0x068000, 0x069fff).rw(FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff); + map(0x068000, 0x069fff).rw(FUNC(armedf_state::text_videoram_r), FUNC(armedf_state::text_videoram_w)).umask16(0x00ff).share("text_videoram"); map(0x06a000, 0x06a9ff).ram(); map(0x06c000, 0x06cfff).ram().share("spr_pal_clut"); - map(0x070000, 0x070fff).ram().w(FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); - map(0x074000, 0x074fff).ram().w(FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x070000, 0x070fff).ram().w(FUNC(armedf_state::fg_videoram_w)).share("fg_videoram"); + map(0x074000, 0x074fff).ram().w(FUNC(armedf_state::bg_videoram_w)).share("bg_videoram"); map(0x078000, 0x078001).portr("P1"); map(0x078002, 0x078003).portr("P2"); map(0x078004, 0x078005).portr("DSW1"); map(0x078006, 0x078007).portr("DSW2"); // map(0x07c000, 0x07c001).w(FUNC(armedf_state::terraf_io_w)); handled in DRIVER_INIT - map(0x07c002, 0x07c003).w(FUNC(armedf_state::armedf_bg_scrollx_w)); - map(0x07c004, 0x07c005).w(FUNC(armedf_state::armedf_bg_scrolly_w)); - map(0x07c00a, 0x07c00b).w(FUNC(armedf_state::sound_command_w)); + map(0x07c002, 0x07c003).w(FUNC(armedf_state::bg_scrollx_w)); + map(0x07c004, 0x07c005).w(FUNC(armedf_state::bg_scrolly_w)); + map(0x07c00b, 0x07c00b).w(FUNC(armedf_state::sound_command_w)); map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ map(0x07c00e, 0x07c00f).w(FUNC(armedf_state::irq_lv1_ack_w)); } -void armedf_state::terraf_map(address_map &map) +void armedf_state::terraf_common_map(address_map &map) { common_map(map); map(0x060000, 0x0603ff).ram().share("spriteram"); map(0x060400, 0x063fff).ram(); } +void armedf_state::terraf_map(address_map &map) +{ + terraf_common_map(map); + map(0x07c000, 0x07c001).w(FUNC(armedf_state::terraf_io_w)); +} + +void armedf_state::terrafb_map(address_map &map) +{ + terraf_common_map(map); + map(0x07c000, 0x07c001).w(FUNC(armedf_state::armedf_io_w)); + map(0x07c006, 0x07c006).w(FUNC(armedf_state::terrafb_fg_scrolly_w)); + map(0x07c008, 0x07c008).w(FUNC(armedf_state::terrafb_fg_scrollx_w)); + map(0x0c0000, 0x0c0000).w(FUNC(armedf_state::terrafb_fg_scroll_msb_arm_w)); +} + +void armedf_state::terrafjb_map(address_map &map) +{ + terraf_common_map(map); + map(0x07c000, 0x07c001).w(FUNC(armedf_state::terrafjb_io_w)); +} + void armedf_state::kozure_map(address_map &map) { common_map(map); map(0x060000, 0x060fff).ram().share("spriteram"); map(0x061000, 0x063fff).ram(); -// map(0x07c000, 0x07c001).w(FUNC(armedf_state::kozure_io_w)); + map(0x07c000, 0x07c001).w(FUNC(armedf_state::terraf_io_w)); // map(0x0c0000, 0x0c0001).nopw(); /* watchdog? */ // map(0xffd000, 0xffd001).nopw(); /* passes crc ROM information to MCU, I guess */ } @@ -466,19 +481,19 @@ void armedf_state::cclimbr2_map(address_map &map) map(0x060000, 0x060fff).ram().share("spriteram"); map(0x061000, 0x063fff).ram(); map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); - map(0x068000, 0x069fff).rw(FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff); + map(0x068000, 0x069fff).rw(FUNC(armedf_state::text_videoram_r), FUNC(armedf_state::text_videoram_w)).umask16(0x00ff).share("text_videoram"); map(0x06a000, 0x06a9ff).ram(); map(0x06c000, 0x06cfff).ram().share("spr_pal_clut"); - map(0x070000, 0x070fff).ram().w(FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); - map(0x074000, 0x074fff).ram().w(FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x070000, 0x070fff).ram().w(FUNC(armedf_state::fg_videoram_w)).share("fg_videoram"); + map(0x074000, 0x074fff).ram().w(FUNC(armedf_state::bg_videoram_w)).share("bg_videoram"); map(0x078000, 0x078001).portr("P1"); map(0x078002, 0x078003).portr("P2"); map(0x078004, 0x078005).portr("DSW1"); map(0x078006, 0x078007).portr("DSW2"); -// map(0x07c000, 0x07c001).w(FUNC(armedf_state::io_w)); - map(0x07c002, 0x07c003).w(FUNC(armedf_state::armedf_bg_scrollx_w)); - map(0x07c004, 0x07c005).w(FUNC(armedf_state::armedf_bg_scrolly_w)); - map(0x07c00a, 0x07c00b).w(FUNC(armedf_state::sound_command_w)); + map(0x07c000, 0x07c001).w(FUNC(armedf_state::terraf_io_w)); + map(0x07c002, 0x07c003).w(FUNC(armedf_state::bg_scrollx_w)); + map(0x07c004, 0x07c005).w(FUNC(armedf_state::bg_scrolly_w)); + map(0x07c00b, 0x07c00b).w(FUNC(armedf_state::sound_command_w)); map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ map(0x07c00e, 0x07c00f).w(FUNC(armedf_state::irq_lv2_ack_w)); } @@ -491,15 +506,15 @@ void armedf_state::legion_common_map(address_map &map) map(0x064000, 0x064fff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x06a000, 0x06a9ff).ram(); map(0x06c000, 0x06cfff).ram().share("spr_pal_clut"); - map(0x070000, 0x070fff).ram().w(FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); - map(0x074000, 0x074fff).ram().w(FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); + map(0x070000, 0x070fff).ram().w(FUNC(armedf_state::fg_videoram_w)).share("fg_videoram"); + map(0x074000, 0x074fff).ram().w(FUNC(armedf_state::bg_videoram_w)).share("bg_videoram"); map(0x078000, 0x078001).portr("P1"); map(0x078002, 0x078003).portr("P2"); map(0x078004, 0x078005).portr("DSW1"); map(0x078006, 0x078007).portr("DSW2"); - map(0x07c002, 0x07c003).w(FUNC(armedf_state::armedf_bg_scrollx_w)); - map(0x07c004, 0x07c005).w(FUNC(armedf_state::armedf_bg_scrolly_w)); - map(0x07c00a, 0x07c00b).w(FUNC(armedf_state::sound_command_w)); + map(0x07c002, 0x07c003).w(FUNC(armedf_state::bg_scrollx_w)); + map(0x07c004, 0x07c005).w(FUNC(armedf_state::bg_scrolly_w)); + map(0x07c00b, 0x07c00b).w(FUNC(armedf_state::sound_command_w)); map(0x07c00c, 0x07c00d).nopw(); /* Watchdog ? cycle 0000 -> 0100 -> 0200 back to 0000 */ map(0x07c00e, 0x07c00f).w(FUNC(armedf_state::irq_lv2_ack_w)); } @@ -508,13 +523,13 @@ void armedf_state::legion_map(address_map &map) { legion_common_map(map); - map(0x068000, 0x069fff).rw(FUNC(armedf_state::nb1414m4_text_videoram_r), FUNC(armedf_state::nb1414m4_text_videoram_w)).umask16(0x00ff); + map(0x068000, 0x069fff).rw(FUNC(armedf_state::text_videoram_r), FUNC(armedf_state::text_videoram_w)).umask16(0x00ff).share("text_videoram"); map(0x07c000, 0x07c001).w(FUNC(armedf_state::terraf_io_w)); } -WRITE8_MEMBER(armedf_state::legionjb_fg_scroll_w) +void armedf_state::legionjb_fg_scroll_w(offs_t offset, u8 data) { - if(offset >= 0xb && offset < 0xf) + if (offset >= 0xb && offset < 0xf) m_legion_cmd[offset-0xb] = data & 0xff; m_fg_scrollx = (m_legion_cmd[0x02] & 0xff) | ((m_legion_cmd[0x03] & 0x3) << 8); @@ -526,8 +541,8 @@ void armedf_state::legionjb_map(address_map &map) legion_common_map(map); map(0x040000, 0x04003f).w(FUNC(armedf_state::legionjb_fg_scroll_w)).umask16(0x00ff); - map(0x068000, 0x069fff).rw(FUNC(armedf_state::armedf_text_videoram_r), FUNC(armedf_state::armedf_text_videoram_w)).umask16(0x00ff); - map(0x07c000, 0x07c001).w(FUNC(armedf_state::bootleg_io_w)); + map(0x068000, 0x069fff).rw(FUNC(armedf_state::text_videoram_r), FUNC(armedf_state::text_videoram_w)).umask16(0x00ff).share("text_videoram"); + map(0x07c000, 0x07c001).w(FUNC(armedf_state::armedf_io_w)); } void armedf_state::legionjb2_map(address_map &map) @@ -535,8 +550,8 @@ void armedf_state::legionjb2_map(address_map &map) legion_common_map(map); map(0x000000, 0x00003f).w(FUNC(armedf_state::legionjb_fg_scroll_w)).umask16(0x00ff); - map(0x068000, 0x069fff).rw(FUNC(armedf_state::armedf_text_videoram_r), FUNC(armedf_state::armedf_text_videoram_w)).umask16(0x00ff); - map(0x07c000, 0x07c001).w(FUNC(armedf_state::bootleg_io_w)); + map(0x068000, 0x069fff).rw(FUNC(armedf_state::text_videoram_r), FUNC(armedf_state::text_videoram_w)).umask16(0x00ff).share("text_videoram"); + map(0x07c000, 0x07c001).w(FUNC(armedf_state::armedf_io_w)); //also writes to 7c0010 / 70c020 / 70c030. These could possibly be the scroll registers on this bootleg and the writes to 000000 - 00003f could just be leftovers. } @@ -545,9 +560,9 @@ void armedf_state::armedf_map(address_map &map) map(0x000000, 0x05ffff).rom(); map(0x060000, 0x060fff).ram().share("spriteram"); map(0x061000, 0x065fff).ram(); - map(0x066000, 0x066fff).ram().w(FUNC(armedf_state::armedf_bg_videoram_w)).share("bg_videoram"); - map(0x067000, 0x067fff).ram().w(FUNC(armedf_state::armedf_fg_videoram_w)).share("fg_videoram"); - map(0x068000, 0x069fff).rw(FUNC(armedf_state::armedf_text_videoram_r), FUNC(armedf_state::armedf_text_videoram_w)).umask16(0x00ff); + map(0x066000, 0x066fff).ram().w(FUNC(armedf_state::bg_videoram_w)).share("bg_videoram"); + map(0x067000, 0x067fff).ram().w(FUNC(armedf_state::fg_videoram_w)).share("fg_videoram"); + map(0x068000, 0x069fff).rw(FUNC(armedf_state::text_videoram_r), FUNC(armedf_state::text_videoram_w)).umask16(0x00ff).share("text_videoram"); map(0x06a000, 0x06afff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x06b000, 0x06bfff).ram().share("spr_pal_clut"); map(0x06c000, 0x06c7ff).ram(); @@ -555,33 +570,34 @@ void armedf_state::armedf_map(address_map &map) map(0x06c002, 0x06c003).portr("P2"); map(0x06c004, 0x06c005).portr("DSW1"); map(0x06c006, 0x06c007).portr("DSW2"); - map(0x06d000, 0x06d001).w(FUNC(armedf_state::terraf_io_w)); - map(0x06d002, 0x06d003).w(FUNC(armedf_state::armedf_bg_scrollx_w)); - map(0x06d004, 0x06d005).w(FUNC(armedf_state::armedf_bg_scrolly_w)); - map(0x06d006, 0x06d007).w(FUNC(armedf_state::armedf_fg_scrollx_w)); - map(0x06d008, 0x06d009).w(FUNC(armedf_state::armedf_fg_scrolly_w)); - map(0x06d00a, 0x06d00b).w(FUNC(armedf_state::sound_command_w)); + map(0x06d000, 0x06d001).w(FUNC(armedf_state::armedf_io_w)); + map(0x06d002, 0x06d003).w(FUNC(armedf_state::bg_scrollx_w)); + map(0x06d004, 0x06d005).w(FUNC(armedf_state::bg_scrolly_w)); + map(0x06d006, 0x06d007).w(FUNC(armedf_state::fg_scrollx_w)); + map(0x06d008, 0x06d009).w(FUNC(armedf_state::fg_scrolly_w)); + map(0x06d00b, 0x06d00b).w(FUNC(armedf_state::sound_command_w)); map(0x06d00c, 0x06d00d).nopw(); //watchdog? map(0x06d00e, 0x06d00f).w(FUNC(armedf_state::irq_lv1_ack_w)); } -READ16_MEMBER(bigfghtr_state::latch_r) +u16 bigfghtr_state::latch_r() { - m_mcu->set_input_line(MCS51_INT0_LINE, HOLD_LINE); + if (!machine().side_effects_disabled()) + m_mcu->set_input_line(MCS51_INT0_LINE, HOLD_LINE); return 0; } -READ8_MEMBER(bigfghtr_state::main_sharedram_r) +u8 bigfghtr_state::main_sharedram_r(offs_t offset) { return m_sharedram[offset]; } -WRITE8_MEMBER(bigfghtr_state::main_sharedram_w) +void bigfghtr_state::main_sharedram_w(offs_t offset, u8 data) { m_sharedram[offset] = data; } -WRITE8_MEMBER(bigfghtr_state::mcu_spritelist_w) +void bigfghtr_state::mcu_spritelist_w(offs_t offset, u8 data) { // add a warning in case it happens for now. popmessage("MCU access spritelist %04x = %02x, contact MAMEdev",offset,data); @@ -593,21 +609,21 @@ void bigfghtr_state::bigfghtr_map(address_map &map) map(0x080000, 0x0805ff).ram().share("spriteram"); map(0x080600, 0x083fff).rw(FUNC(bigfghtr_state::main_sharedram_r), FUNC(bigfghtr_state::main_sharedram_w)); map(0x084000, 0x085fff).ram(); //work ram - map(0x086000, 0x086fff).ram().w(FUNC(bigfghtr_state::armedf_bg_videoram_w)).share("bg_videoram"); - map(0x087000, 0x087fff).ram().w(FUNC(bigfghtr_state::armedf_fg_videoram_w)).share("fg_videoram"); - map(0x088000, 0x089fff).rw(FUNC(bigfghtr_state::armedf_text_videoram_r), FUNC(bigfghtr_state::armedf_text_videoram_w)).umask16(0x00ff); + map(0x086000, 0x086fff).ram().w(FUNC(bigfghtr_state::bg_videoram_w)).share("bg_videoram"); + map(0x087000, 0x087fff).ram().w(FUNC(bigfghtr_state::fg_videoram_w)).share("fg_videoram"); + map(0x088000, 0x089fff).rw(FUNC(bigfghtr_state::text_videoram_r), FUNC(bigfghtr_state::text_videoram_w)).umask16(0x00ff).share("text_videoram"); map(0x08a000, 0x08afff).ram().w(m_palette, FUNC(palette_device::write16)).share("palette"); map(0x08b000, 0x08bfff).ram().share("spr_pal_clut"); map(0x08c000, 0x08c001).portr("P1"); map(0x08c002, 0x08c003).portr("P2"); map(0x08c004, 0x08c005).portr("DSW0"); map(0x08c006, 0x08c007).portr("DSW1"); - map(0x08d000, 0x08d001).w(FUNC(bigfghtr_state::terraf_io_w)); //807b0 - map(0x08d002, 0x08d003).w(FUNC(bigfghtr_state::armedf_bg_scrollx_w)); - map(0x08d004, 0x08d005).w(FUNC(bigfghtr_state::armedf_bg_scrolly_w)); - map(0x08d006, 0x08d007).w(FUNC(bigfghtr_state::armedf_fg_scrollx_w)); - map(0x08d008, 0x08d009).w(FUNC(bigfghtr_state::armedf_fg_scrolly_w)); - map(0x08d00a, 0x08d00b).w(FUNC(bigfghtr_state::sound_command_w)); + map(0x08d000, 0x08d001).w(FUNC(bigfghtr_state::armedf_io_w)); //807b0 + map(0x08d002, 0x08d003).w(FUNC(bigfghtr_state::bg_scrollx_w)); + map(0x08d004, 0x08d005).w(FUNC(bigfghtr_state::bg_scrolly_w)); + map(0x08d006, 0x08d007).w(FUNC(bigfghtr_state::fg_scrollx_w)); + map(0x08d008, 0x08d009).w(FUNC(bigfghtr_state::fg_scrolly_w)); + map(0x08d00b, 0x08d00b).w(FUNC(bigfghtr_state::sound_command_w)); map(0x08d00c, 0x08d00d).nopw(); //watchdog map(0x08d00e, 0x08d00f).w(FUNC(bigfghtr_state::irq_lv1_ack_w)); @@ -637,28 +653,24 @@ void armedf_state::cclimbr2_soundmap(address_map &map) map(0xc000, 0xffff).ram(); } -READ8_MEMBER(armedf_state::blitter_txram_r) -{ - return m_text_videoram[offset]; -} - -WRITE8_MEMBER(armedf_state::blitter_txram_w) +void armedf_state::blitter_txram_w(offs_t offset, u8 data) { m_text_videoram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset); + if (offset < 0x1000) + m_tx_tilemap->mark_tile_dirty(offset & 0x7ff); } -WRITE8_MEMBER(armedf_state::fg_scrollx_w) +void armedf_state::terrafjb_fg_scrollx_w(u8 data) { m_fg_scrollx = (data & 0xff) | (m_fg_scrollx & 0x300); } -WRITE8_MEMBER(armedf_state::fg_scrolly_w) +void armedf_state::terrafjb_fg_scrolly_w(u8 data) { m_fg_scrolly = (data & 0xff) | (m_fg_scrolly & 0x300); } -WRITE8_MEMBER(armedf_state::fg_scroll_msb_w) +void armedf_state::terrafjb_fg_scroll_msb_w(u8 data) { m_fg_scrolly = (((data & 0x03) >> 0) << 8) | (m_fg_scrolly & 0xff); m_fg_scrollx = (((data & 0x0c) >> 2) << 8) | (m_fg_scrollx & 0xff); @@ -668,16 +680,16 @@ WRITE8_MEMBER(armedf_state::fg_scroll_msb_w) void armedf_state::terrafjb_extraz80_map(address_map &map) { map(0x0000, 0x3fff).rom(); - map(0x4000, 0x5fff).rw(FUNC(armedf_state::blitter_txram_r), FUNC(armedf_state::blitter_txram_w)); + map(0x4000, 0x5fff).ram().w(FUNC(armedf_state::blitter_txram_w)).share("text_videoram"); map(0x8000, 0x87ff).ram(); } void armedf_state::terrafjb_extraz80_portmap(address_map &map) { map.global_mask(0xff); - map(0x00, 0x00).w(FUNC(armedf_state::fg_scrollx_w)); - map(0x01, 0x01).w(FUNC(armedf_state::fg_scrolly_w)); - map(0x02, 0x02).w(FUNC(armedf_state::fg_scroll_msb_w)); + map(0x00, 0x00).w(FUNC(armedf_state::terrafjb_fg_scrollx_w)); + map(0x01, 0x01).w(FUNC(armedf_state::terrafjb_fg_scrolly_w)); + map(0x02, 0x02).w(FUNC(armedf_state::terrafjb_fg_scroll_msb_w)); } void armedf_state::sound_portmap(address_map &map) @@ -1037,52 +1049,14 @@ INPUT_PORTS_END * *************************************/ -static const gfx_layout char_layout = -{ - 8,8, - RGN_FRAC(1,1), - 4, - { 0, 1, 2, 3 }, - { 4, 0, 12, 8, 20, 16, 28, 24}, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, - 32*8 -}; - -static const gfx_layout tile_layout = -{ - 16,16, - RGN_FRAC(1,1), - 4, - { 0, 1, 2, 3 }, - { 4, 0, 12, 8, 20, 16, 28, 24, - 32+4, 32+0, 32+12, 32+8, 32+20, 32+16, 32+28, 32+24 }, - { 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, - 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 }, - 128*8 -}; - -static const gfx_layout sprite_layout = -{ - 16,16, - RGN_FRAC(1,2), - 4, - { 0, 1, 2, 3 }, - { 4, 0, RGN_FRAC(1,2)+4, RGN_FRAC(1,2)+0, 12, 8, RGN_FRAC(1,2)+12, RGN_FRAC(1,2)+8, - 20, 16, RGN_FRAC(1,2)+20, RGN_FRAC(1,2)+16, 28, 24, RGN_FRAC(1,2)+28, RGN_FRAC(1,2)+24 }, - { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, - 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 }, - 64*8 -}; - static GFXDECODE_START( gfx_armedf ) - GFXDECODE_ENTRY( "gfx1", 0, char_layout, 0*16, 32 ) - GFXDECODE_ENTRY( "gfx2", 0, tile_layout, 64*16, 32 ) - GFXDECODE_ENTRY( "gfx3", 0, tile_layout, 96*16, 32 ) - GFXDECODE_ENTRY( "gfx4", 0, sprite_layout, 32*16, 32 ) + GFXDECODE_ENTRY( "text", 0, gfx_8x8x4_packed_lsb, 0*16, 32 ) + GFXDECODE_ENTRY( "foreground", 0, gfx_16x16x4_packed_lsb, 64*16, 32 ) + GFXDECODE_ENTRY( "background", 0, gfx_16x16x4_packed_lsb, 96*16, 32 ) + GFXDECODE_ENTRY( "sprite", 0, gfx_16x16x4_packed_lsb, 32*16, 32 ) GFXDECODE_END - /************************************* * * Machine driver @@ -1121,7 +1095,7 @@ void armedf_state::video_config(machine_config &config, int hchar_start, int vst // TODO: bootlegs may not run at this speed m_screen->set_raw(XTAL(16'000'000)/2,531,hchar_start*8,(64-hchar_start)*8, 255, vstart, vend); m_screen->set_palette(m_palette); - m_screen->set_screen_update(FUNC(armedf_state::screen_update_armedf)); + m_screen->set_screen_update(FUNC(armedf_state::screen_update)); m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); GFXDECODE(config, m_gfxdecode, m_palette, gfx_armedf); @@ -1168,7 +1142,7 @@ void armedf_state::terraf(machine_config &config) void armedf_state::terrafjb(machine_config &config) { M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8mhz - m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::terraf_map); + m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::terrafjb_map); m_maincpu->set_vblank_int("screen", FUNC(armedf_state::irq1_line_assert)); z80_device &audiocpu(Z80(config, "audiocpu", XTAL(24'000'000)/6)); // 4mhz @@ -1200,6 +1174,7 @@ void armedf_state::terrafjb(machine_config &config) void armedf_state::terrafb(machine_config &config) { terraf(config); + m_maincpu->set_addrmap(AS_PROGRAM, &armedf_state::terrafb_map); config.device_remove("nb1414m4"); } @@ -1344,7 +1319,7 @@ void bigfghtr_state::bigfghtr(machine_config &config) mcu.port_in_cb<1>().set_constant(0xdf); // bit 5: bus contention related? video_config(config, 12, 8, 248); - MCFG_VIDEO_START_OVERRIDE(armedf_state,armedf) + MCFG_VIDEO_START_OVERRIDE(bigfghtr_state,armedf) sound_config(config); } @@ -1366,19 +1341,19 @@ ROM_START( legion ) ROM_LOAD( "legion.1h", 0x00000, 0x04000, CRC(2ca4f7f0) SHA1(7cf997af9dd74ced9d28c047069ccfb67d72e257) ) // lg9 ROM_LOAD( "legion.1i", 0x04000, 0x08000, CRC(79f4a827) SHA1(25e4c1b5b8466627244b7226310e67e4261333b6) ) // lg10 - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "lg8.bin", 0x00000, 0x08000, CRC(e0596570) SHA1(68ddc950efc55a16e6abc699e3bad18ea19d579f) ) - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "legion.1e", 0x00000, 0x10000, CRC(a9d70faf) SHA1(8b8b60ae49c55e931d6838e863463f6b2bf7adb0) ) // lg5 ROM_LOAD( "legion.1f", 0x18000, 0x08000, CRC(f018313b) SHA1(860bc9937202dc3a40c9fa7caad11c2c2aa19f5c) ) // lg6 - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "legion.1l", 0x00000, 0x10000, CRC(29b8adaa) SHA1(10338ebe7324960683de1f796dd311ed662e42b4) ) // lg13 - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) // lg12 - ROM_LOAD( "legion.1j", 0x010000, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) // lg11 + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) // lg12 + ROM_LOAD16_BYTE( "legion.1j", 0x000001, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) // lg11 ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD ( "lg7.bin", 0x0000, 0x4000, CRC(533e2b58) SHA1(a13ea4a530038760ffa87713903c59a932452717) ) @@ -1395,19 +1370,19 @@ ROM_START( legionj ) ROM_LOAD( "legion.1h", 0x00000, 0x04000, CRC(2ca4f7f0) SHA1(7cf997af9dd74ced9d28c047069ccfb67d72e257) ) ROM_LOAD( "legion.1i", 0x04000, 0x08000, CRC(79f4a827) SHA1(25e4c1b5b8466627244b7226310e67e4261333b6) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "legion.1g", 0x00000, 0x08000, CRC(c50b0125) SHA1(83b5e9707152d97777fb65fa8820ba34ec2fac8d) ) - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "legion.1e", 0x00000, 0x10000, CRC(a9d70faf) SHA1(8b8b60ae49c55e931d6838e863463f6b2bf7adb0) ) ROM_LOAD( "legion.1f", 0x18000, 0x08000, CRC(f018313b) SHA1(860bc9937202dc3a40c9fa7caad11c2c2aa19f5c) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "legion.1l", 0x00000, 0x10000, CRC(29b8adaa) SHA1(10338ebe7324960683de1f796dd311ed662e42b4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) - ROM_LOAD( "legion.1j", 0x010000, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) + ROM_LOAD16_BYTE( "legion.1j", 0x000001, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD ( "lg7.bin", 0x0000, 0x4000, CRC(533e2b58) SHA1(a13ea4a530038760ffa87713903c59a932452717) ) @@ -1424,19 +1399,19 @@ ROM_START( legionjb ) ROM_LOAD( "legion.1h", 0x00000, 0x04000, CRC(2ca4f7f0) SHA1(7cf997af9dd74ced9d28c047069ccfb67d72e257) ) ROM_LOAD( "legion.1i", 0x04000, 0x08000, CRC(79f4a827) SHA1(25e4c1b5b8466627244b7226310e67e4261333b6) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "legion.1g", 0x00000, 0x08000, CRC(c50b0125) SHA1(83b5e9707152d97777fb65fa8820ba34ec2fac8d) ) - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "legion.1e", 0x00000, 0x10000, CRC(a9d70faf) SHA1(8b8b60ae49c55e931d6838e863463f6b2bf7adb0) ) ROM_LOAD( "legion.1f", 0x18000, 0x08000, CRC(f018313b) SHA1(860bc9937202dc3a40c9fa7caad11c2c2aa19f5c) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "legion.1l", 0x00000, 0x10000, CRC(29b8adaa) SHA1(10338ebe7324960683de1f796dd311ed662e42b4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) - ROM_LOAD( "legion.1j", 0x010000, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "legion.1k", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) + ROM_LOAD16_BYTE( "legion.1j", 0x000001, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) ROM_END ROM_START( legionjb2 ) @@ -1450,19 +1425,19 @@ ROM_START( legionjb2 ) ROM_LOAD( "9-legion-24128.h15", 0x00000, 0x04000, CRC(2ca4f7f0) SHA1(7cf997af9dd74ced9d28c047069ccfb67d72e257) ) ROM_LOAD( "8-legion-24256.h17", 0x04000, 0x08000, CRC(79f4a827) SHA1(25e4c1b5b8466627244b7226310e67e4261333b6) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "7-legion-24256.c9", 0x00000, 0x08000, CRC(c50b0125) SHA1(83b5e9707152d97777fb65fa8820ba34ec2fac8d) ) - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "2-legion-27512.e12", 0x00000, 0x10000, CRC(a9d70faf) SHA1(8b8b60ae49c55e931d6838e863463f6b2bf7adb0) ) ROM_LOAD( "1-legion-24256.e14", 0x18000, 0x08000, CRC(f018313b) SHA1(860bc9937202dc3a40c9fa7caad11c2c2aa19f5c) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "10-legion-27512.e15", 0x00000, 0x10000, CRC(29b8adaa) SHA1(10338ebe7324960683de1f796dd311ed662e42b4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "11-legion-27512.e10", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) - ROM_LOAD( "12-legion-27512.e7", 0x010000, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "11-legion-27512.e10", 0x000000, 0x010000, CRC(ff5a0db9) SHA1(9308deb363d3b7686cc69485ec14201dd68f9a97) ) + ROM_LOAD16_BYTE( "12-legion-27512.e7", 0x000001, 0x010000, CRC(bae220c8) SHA1(392ae0fb0351dcad7b0e8e0ed4a1dc6e07f493df) ) ROM_END ROM_START( terraf ) @@ -1477,20 +1452,20 @@ ROM_START( terraf ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ ROM_LOAD( "11.17k", 0x00000, 0x10000, CRC(4407d475) SHA1(96e86c7ef4dc997812436f7d0ddea332b4e6cb2b) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "9.11e", 0x00000, 0x08000, CRC(bc6f7cbc) SHA1(20b8a34de4bfa0c2fdcd2f7743a0ab35141f4bf9) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "5.15h", 0x00000, 0x10000, CRC(25d23dfd) SHA1(da32895c1aca403209b7fb181fa4fa23a8e74d32) ) /* foreground tiles */ ROM_LOAD( "4.13h", 0x10000, 0x10000, CRC(b9b0fe27) SHA1(983c48239ba1524b517f89f281f2b70564bea1e9) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "15.8a", 0x00000, 0x10000, CRC(2144d8e0) SHA1(ed89da11abf3d79753b478603009970c2600ab60) ) /* background tiles */ ROM_LOAD( "14.6a", 0x10000, 0x10000, CRC(744f5c9e) SHA1(696223a087bb575c7cfaba11e682b221ada461e4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "12.7d", 0x00000, 0x10000, CRC(2d1f2ceb) SHA1(77544e1c4bda06feac135a96bb76af7c79278dc0) ) /* sprites */ - ROM_LOAD( "13.9d", 0x10000, 0x10000, CRC(1d2f92d6) SHA1(e842c6bf95a5958a6ca2c85e68b9bc3cc15211a4) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "12.7d", 0x00000, 0x10000, CRC(2d1f2ceb) SHA1(77544e1c4bda06feac135a96bb76af7c79278dc0) ) /* sprites */ + ROM_LOAD16_BYTE( "13.9d", 0x00001, 0x10000, CRC(1d2f92d6) SHA1(e842c6bf95a5958a6ca2c85e68b9bc3cc15211a4) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD( "10.11c", 0x0000, 0x4000, CRC(ac705812) SHA1(65be46ee959d8478cb6dffb25e61f7742276997b) ) @@ -1511,20 +1486,20 @@ ROM_START( terrafu ) /* Bootleg of the USA version?, uses some roms common to bo ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ ROM_LOAD( "tf-001.17k", 0x00000, 0x10000, CRC(eb6b4138) SHA1(04c53bf46d87a156d3fad86f051985d0df79bd20) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "9.11e", 0x00000, 0x08000, CRC(bc6f7cbc) SHA1(20b8a34de4bfa0c2fdcd2f7743a0ab35141f4bf9) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "5.15h", 0x00000, 0x10000, CRC(25d23dfd) SHA1(da32895c1aca403209b7fb181fa4fa23a8e74d32) ) /* foreground tiles */ ROM_LOAD( "4.13h", 0x10000, 0x10000, CRC(b9b0fe27) SHA1(983c48239ba1524b517f89f281f2b70564bea1e9) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "15.8a", 0x00000, 0x10000, CRC(2144d8e0) SHA1(ed89da11abf3d79753b478603009970c2600ab60) ) /* background tiles */ ROM_LOAD( "14.6a", 0x10000, 0x10000, CRC(744f5c9e) SHA1(696223a087bb575c7cfaba11e682b221ada461e4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "tf-003.7d", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ - ROM_LOAD( "tf-002.9d", 0x10000, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "tf-003.7d", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ + ROM_LOAD16_BYTE( "tf-002.9d", 0x00001, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD( "10.11c", 0x0000, 0x4000, CRC(ac705812) SHA1(65be46ee959d8478cb6dffb25e61f7742276997b) ) @@ -1545,20 +1520,20 @@ ROM_START( terrafj ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ ROM_LOAD( "11.17k", 0x00000, 0x10000, CRC(4407d475) SHA1(96e86c7ef4dc997812436f7d0ddea332b4e6cb2b) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "9.11e", 0x00000, 0x08000, CRC(bc6f7cbc) SHA1(20b8a34de4bfa0c2fdcd2f7743a0ab35141f4bf9) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "5.15h", 0x00000, 0x10000, CRC(25d23dfd) SHA1(da32895c1aca403209b7fb181fa4fa23a8e74d32) ) /* foreground tiles */ ROM_LOAD( "4.13h", 0x10000, 0x10000, CRC(b9b0fe27) SHA1(983c48239ba1524b517f89f281f2b70564bea1e9) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "15.8a", 0x00000, 0x10000, CRC(2144d8e0) SHA1(ed89da11abf3d79753b478603009970c2600ab60) ) /* background tiles */ ROM_LOAD( "14.6a", 0x10000, 0x10000, CRC(744f5c9e) SHA1(696223a087bb575c7cfaba11e682b221ada461e4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "tfj-12.7d", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ - ROM_LOAD( "tfj-13.9d", 0x10000, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "tfj-12.7d", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ + ROM_LOAD16_BYTE( "tfj-13.9d", 0x00001, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD( "10.11c", 0x0000, 0x4000, CRC(ac705812) SHA1(65be46ee959d8478cb6dffb25e61f7742276997b) ) @@ -1612,20 +1587,20 @@ ROM_START( terrafjb ) ROM_REGION( 0x4000, "extra", 0 ) /* z80 program (replacement mcu/blitter) */ ROM_LOAD( "tfb-10.bin", 0x0000, 0x4000, CRC(3f9aa367) SHA1(8278fb357b2d68869e39efa01ff19005807b41f8) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "9.11e", 0x00000, 0x08000, CRC(bc6f7cbc) SHA1(20b8a34de4bfa0c2fdcd2f7743a0ab35141f4bf9) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "5.15h", 0x00000, 0x10000, CRC(25d23dfd) SHA1(da32895c1aca403209b7fb181fa4fa23a8e74d32) ) /* foreground tiles */ ROM_LOAD( "4.13h", 0x10000, 0x10000, CRC(b9b0fe27) SHA1(983c48239ba1524b517f89f281f2b70564bea1e9) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "15.8a", 0x00000, 0x10000, CRC(2144d8e0) SHA1(ed89da11abf3d79753b478603009970c2600ab60) ) /* background tiles */ ROM_LOAD( "14.6a", 0x10000, 0x10000, CRC(744f5c9e) SHA1(696223a087bb575c7cfaba11e682b221ada461e4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "tfj-12.7d", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ - ROM_LOAD( "tfj-13.9d", 0x10000, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "tfj-12.7d", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ + ROM_LOAD16_BYTE( "tfj-13.9d", 0x00001, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) ROM_REGION( 0x0100, "proms", 0 ) /* Unknown use */ ROM_LOAD( "n82s129an.11j", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) ) /* N82S129AN or compatible labled "TF" */ @@ -1659,20 +1634,20 @@ ROM_START( terrafb ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ ROM_LOAD( "f-1.1a", 0x00000, 0x10000, CRC(eb6b4138) SHA1(04c53bf46d87a156d3fad86f051985d0df79bd20) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "f-11.4g", 0x00000, 0x08000, CRC(bc6f7cbc) SHA1(20b8a34de4bfa0c2fdcd2f7743a0ab35141f4bf9) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "f-6.3c", 0x00000, 0x10000, CRC(25d23dfd) SHA1(da32895c1aca403209b7fb181fa4fa23a8e74d32) ) /* foreground tiles */ ROM_LOAD( "f-7.3e", 0x10000, 0x10000, CRC(b9b0fe27) SHA1(983c48239ba1524b517f89f281f2b70564bea1e9) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "f-4.9k", 0x00000, 0x10000, CRC(2144d8e0) SHA1(ed89da11abf3d79753b478603009970c2600ab60) ) /* background tiles */ ROM_LOAD( "f-5.9m", 0x10000, 0x10000, CRC(744f5c9e) SHA1(696223a087bb575c7cfaba11e682b221ada461e4) ) - ROM_REGION( 0x20000, "gfx4", 0 ) - ROM_LOAD( "f-3.6l", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ - ROM_LOAD( "f-2.6j", 0x10000, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) + ROM_REGION( 0x20000, "sprite", 0 ) + ROM_LOAD16_BYTE( "f-3.6l", 0x00000, 0x10000, CRC(d74085a1) SHA1(3f6ba85dbd6e48a502c115b2d322a586fc4f56c9) ) /* sprites */ + ROM_LOAD16_BYTE( "f-2.6j", 0x00001, 0x10000, CRC(148aa0c5) SHA1(8d8a565540e91b384a9c154522501921b7da4d4e) ) ROM_END ROM_START( kozure ) @@ -1687,19 +1662,19 @@ ROM_START( kozure ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ ROM_LOAD( "kozure11.17k", 0x00000, 0x10000, CRC(dba51e2d) SHA1(49e799d39d298cd3e01602ae5a2d123dfbfa9134) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "kozure9.11e", 0x00000, 0x08000, CRC(e041356e) SHA1(3e4c8564e7a8c940bbe72db11759903aa295287f) ) /* characters */ - ROM_REGION( 0x40000, "gfx2", 0 ) + ROM_REGION( 0x40000, "foreground", 0 ) ROM_LOAD( "kozure5.15h", 0x00000, 0x20000, CRC(0b510258) SHA1(e7ec89faa574b755605ddb67d6c908a9f5f2d6ac) ) /* foreground tiles */ ROM_LOAD( "kozure4.14h", 0x20000, 0x10000, CRC(fb8e13e6) SHA1(f2eafcf6d7362dc62e808f582a7bd2970e5e1ad1) ) - ROM_REGION( 0x10000, "gfx3", 0 ) + ROM_REGION( 0x10000, "background", 0 ) ROM_LOAD( "kozure14.8a", 0x00000, 0x10000, CRC(94a9c3d0) SHA1(7a5d810ea370d158b2099c17f4d656fbd3deeac8) ) /* background tiles */ - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "kozure12.8d", 0x00000, 0x20000, CRC(15f4021d) SHA1(b2ba6fda1a7bdaae97de4b0157b9b656b4385e08) ) /* sprites */ - ROM_LOAD( "kozure13.9d", 0x20000, 0x20000, CRC(b3b6c753) SHA1(9ad061cac9558320b5cfd1ac1ac8d7f1788270cc) ) + ROM_REGION( 0x40000, "sprite", 0 ) + ROM_LOAD16_BYTE( "kozure12.8d", 0x00000, 0x20000, CRC(15f4021d) SHA1(b2ba6fda1a7bdaae97de4b0157b9b656b4385e08) ) /* sprites */ + ROM_LOAD16_BYTE( "kozure13.9d", 0x00001, 0x20000, CRC(b3b6c753) SHA1(9ad061cac9558320b5cfd1ac1ac8d7f1788270cc) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD( "kozure10.11c", 0x0000, 0x4000, CRC(f48be21d) SHA1(5d6db049f30cab98f672814a86a06609c1fa8fb4) ) @@ -1721,22 +1696,22 @@ ROM_START( cclimbr2 ) ROM_LOAD( "11.bin", 0x00000, 0x04000, CRC(fe0175be) SHA1(5c50fa07d8fa61d58a825bbc2cc5a7b85ff3e42e) ) ROM_LOAD( "12.bin", 0x04000, 0x08000, CRC(5ddf18f2) SHA1(b66da5ad400d00b07160986e4841a309a3572bd1) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "10.bin", 0x00000, 0x08000, CRC(7f475266) SHA1(73d544731fcfd7266bca451880120c555d19ea5d) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "7.bin", 0x00000, 0x10000, CRC(cbdd3906) SHA1(0525599a5981f1e25ec6faf008e547da7a9ee2cb) ) /* foreground tiles */ ROM_LOAD( "8.bin", 0x10000, 0x10000, CRC(b2a613c0) SHA1(1d92b85a0dd4b7e533677c454ec23359867defda) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "17.bin", 0x00000, 0x10000, CRC(e24bb2d7) SHA1(8f4b8410b77a50ae735d72f2f37e63784ebc10d9) ) /* background tiles */ ROM_LOAD( "18.bin", 0x10000, 0x10000, CRC(56834554) SHA1(6d579c32fb57eb4eddc062cb2cc78b546f6607b2) ) - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "15.bin", 0x00000, 0x10000, CRC(4bf838be) SHA1(6b1d7448caf406e47268a1276225bb0619b80cc9) ) /* sprites */ - ROM_LOAD( "16.bin", 0x10000, 0x10000, CRC(21a265c5) SHA1(a2b3a1e5aa545030d933c0f058f4f9a18e1af1c9) ) - ROM_LOAD( "13.bin", 0x20000, 0x10000, CRC(6b6ec999) SHA1(7749ce435f497732bd1b6958974cd95e960fc9fe) ) - ROM_LOAD( "14.bin", 0x30000, 0x10000, CRC(f426a4ad) SHA1(facccb21ca73c560d3a38e05e677782516d5b0c0) ) + ROM_REGION( 0x40000, "sprite", 0 ) + ROM_LOAD16_BYTE( "15.bin", 0x00000, 0x10000, CRC(4bf838be) SHA1(6b1d7448caf406e47268a1276225bb0619b80cc9) ) /* sprites */ + ROM_LOAD16_BYTE( "13.bin", 0x00001, 0x10000, CRC(6b6ec999) SHA1(7749ce435f497732bd1b6958974cd95e960fc9fe) ) + ROM_LOAD16_BYTE( "16.bin", 0x20000, 0x10000, CRC(21a265c5) SHA1(a2b3a1e5aa545030d933c0f058f4f9a18e1af1c9) ) + ROM_LOAD16_BYTE( "14.bin", 0x20001, 0x10000, CRC(f426a4ad) SHA1(facccb21ca73c560d3a38e05e677782516d5b0c0) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD( "9.bin", 0x0000, 0x4000, CRC(740d260f) SHA1(5b4487930c7a1fb0a796aec2243bec631b1b5104) ) @@ -1755,22 +1730,22 @@ ROM_START( cclimbr2a ) ROM_LOAD( "11.bin", 0x00000, 0x04000, CRC(fe0175be) SHA1(5c50fa07d8fa61d58a825bbc2cc5a7b85ff3e42e) ) ROM_LOAD( "12.bin", 0x04000, 0x08000, CRC(5ddf18f2) SHA1(b66da5ad400d00b07160986e4841a309a3572bd1) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "10.bin", 0x00000, 0x08000, CRC(7f475266) SHA1(73d544731fcfd7266bca451880120c555d19ea5d) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "7.bin", 0x00000, 0x10000, CRC(cbdd3906) SHA1(0525599a5981f1e25ec6faf008e547da7a9ee2cb) ) /* foreground tiles */ ROM_LOAD( "8.bin", 0x10000, 0x10000, CRC(b2a613c0) SHA1(1d92b85a0dd4b7e533677c454ec23359867defda) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "17.bin", 0x00000, 0x10000, CRC(e24bb2d7) SHA1(8f4b8410b77a50ae735d72f2f37e63784ebc10d9) ) /* background tiles */ ROM_LOAD( "18.bin", 0x10000, 0x10000, CRC(56834554) SHA1(6d579c32fb57eb4eddc062cb2cc78b546f6607b2) ) - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "15.bin", 0x00000, 0x10000, CRC(4bf838be) SHA1(6b1d7448caf406e47268a1276225bb0619b80cc9) ) /* sprites */ - ROM_LOAD( "16.bin", 0x10000, 0x10000, CRC(21a265c5) SHA1(a2b3a1e5aa545030d933c0f058f4f9a18e1af1c9) ) - ROM_LOAD( "13.bin", 0x20000, 0x10000, CRC(6b6ec999) SHA1(7749ce435f497732bd1b6958974cd95e960fc9fe) ) - ROM_LOAD( "14.bin", 0x30000, 0x10000, CRC(f426a4ad) SHA1(facccb21ca73c560d3a38e05e677782516d5b0c0) ) + ROM_REGION( 0x40000, "sprite", 0 ) + ROM_LOAD16_BYTE( "15.bin", 0x00000, 0x10000, CRC(4bf838be) SHA1(6b1d7448caf406e47268a1276225bb0619b80cc9) ) /* sprites */ + ROM_LOAD16_BYTE( "13.bin", 0x00001, 0x10000, CRC(6b6ec999) SHA1(7749ce435f497732bd1b6958974cd95e960fc9fe) ) + ROM_LOAD16_BYTE( "16.bin", 0x20000, 0x10000, CRC(21a265c5) SHA1(a2b3a1e5aa545030d933c0f058f4f9a18e1af1c9) ) + ROM_LOAD16_BYTE( "14.bin", 0x20001, 0x10000, CRC(f426a4ad) SHA1(facccb21ca73c560d3a38e05e677782516d5b0c0) ) ROM_REGION( 0x4000, "nb1414m4", 0 ) /* data for mcu/blitter */ ROM_LOAD( "9.bin", 0x0000, 0x4000, CRC(740d260f) SHA1(5b4487930c7a1fb0a796aec2243bec631b1b5104) ) @@ -1788,20 +1763,20 @@ ROM_START( armedf ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ ROM_LOAD( "af_10.rom", 0x00000, 0x10000, CRC(c5eacb87) SHA1(33af84b48fbda26729975b02cfb70f23c0bce6a2) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "09.11c", 0x00000, 0x08000, CRC(5c6993d5) SHA1(3991851e5c4d2b3d72c372afdfbb710796874c15) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "af_04.rom", 0x00000, 0x10000, CRC(44d3af4f) SHA1(0c2cb54357c314e43cec6f959fe9d4a2c8bc8834) ) /* foreground tiles */ ROM_LOAD( "af_05.rom", 0x10000, 0x10000, CRC(92076cab) SHA1(f47424817373a6735da2b2049b53da5b38178cec) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "af_14.rom", 0x00000, 0x10000, CRC(8c5dc5a7) SHA1(758140ddb9e60fb3950fe58bf53c7aea769a1a94) ) /* background tiles */ ROM_LOAD( "af_13.rom", 0x10000, 0x10000, CRC(136a58a3) SHA1(5481e3ce404881a0470f8740f0de6e42283bedf2) ) - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "af_11.rom", 0x00000, 0x20000, CRC(b46c473c) SHA1(d8573225e2d8b133b3bdd4fa5a12d445c71d5e0e) ) /* sprites */ - ROM_LOAD( "af_12.rom", 0x20000, 0x20000, CRC(23cb6bfe) SHA1(34cb013827206bea71f5336b308ba92bee688506) ) + ROM_REGION( 0x40000, "sprite", 0 ) + ROM_LOAD16_BYTE( "af_11.rom", 0x00000, 0x20000, CRC(b46c473c) SHA1(d8573225e2d8b133b3bdd4fa5a12d445c71d5e0e) ) /* sprites */ + ROM_LOAD16_BYTE( "af_12.rom", 0x00001, 0x20000, CRC(23cb6bfe) SHA1(34cb013827206bea71f5336b308ba92bee688506) ) ROM_END ROM_START( armedff ) @@ -1816,20 +1791,20 @@ ROM_START( armedff ) ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ ROM_LOAD( "af_10.rom", 0x00000, 0x10000, CRC(c5eacb87) SHA1(33af84b48fbda26729975b02cfb70f23c0bce6a2) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "af_09.rom", 0x00000, 0x08000, CRC(7025e92d) SHA1(e590682092c25bbfb674afeccbfc0e613c51d188) ) /* characters */ - ROM_REGION( 0x20000, "gfx2", 0 ) + ROM_REGION( 0x20000, "foreground", 0 ) ROM_LOAD( "af_04.rom", 0x00000, 0x10000, CRC(44d3af4f) SHA1(0c2cb54357c314e43cec6f959fe9d4a2c8bc8834) ) /* foreground tiles */ ROM_LOAD( "af_05.rom", 0x10000, 0x10000, CRC(92076cab) SHA1(f47424817373a6735da2b2049b53da5b38178cec) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "af_14.rom", 0x00000, 0x10000, CRC(8c5dc5a7) SHA1(758140ddb9e60fb3950fe58bf53c7aea769a1a94) ) /* background tiles */ ROM_LOAD( "af_13.rom", 0x10000, 0x10000, CRC(136a58a3) SHA1(5481e3ce404881a0470f8740f0de6e42283bedf2) ) - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "af_11.rom", 0x00000, 0x20000, CRC(b46c473c) SHA1(d8573225e2d8b133b3bdd4fa5a12d445c71d5e0e) ) /* sprites */ - ROM_LOAD( "af_12.rom", 0x20000, 0x20000, CRC(23cb6bfe) SHA1(34cb013827206bea71f5336b308ba92bee688506) ) + ROM_REGION( 0x40000, "sprite", 0 ) + ROM_LOAD16_BYTE( "af_11.rom", 0x00000, 0x20000, CRC(b46c473c) SHA1(d8573225e2d8b133b3bdd4fa5a12d445c71d5e0e) ) /* sprites */ + ROM_LOAD16_BYTE( "af_12.rom", 0x00001, 0x20000, CRC(23cb6bfe) SHA1(34cb013827206bea71f5336b308ba92bee688506) ) ROM_END ROM_START( skyrobo ) @@ -1846,20 +1821,20 @@ ROM_START( skyrobo ) // coming from Tatakae Big Fighter, might or might not be correct for this version ROM_LOAD( "i8751.bin", 0x00000, 0x1000, BAD_DUMP CRC(64a0d225) SHA1(ccc5c33c0c412bf9e3a4f7de5e39b042e00c41dd) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "7", 0x00000, 0x08000, CRC(f556ef28) SHA1(2acb83cdf23356091056f2cfbbc2b9828ee25b6f) ) /* Rom location 11C */ - ROM_REGION( 0x30000, "gfx2", 0 ) + ROM_REGION( 0x30000, "foreground", 0 ) ROM_LOAD( "5.13f", 0x00000, 0x20000, CRC(d440a29f) SHA1(9e6ea7c9903e5e3e8e10ac7680c6120e1aa27250) ) ROM_LOAD( "6.15f", 0x20000, 0x10000, CRC(27469a76) SHA1(ebf2c60e1f70a589680c05adf10771ac2097b9d0) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "12.8a", 0x00000, 0x10000, CRC(a5694ea9) SHA1(ea94174495b3a65b3797932074a94df3b55fa0a2) ) ROM_LOAD( "11.6a", 0x10000, 0x10000, CRC(10b74e2c) SHA1(e3ec68726e7f277dc2043424f2e4d863eb01b3dc) ) - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) - ROM_LOAD( "10.9d", 0x20000, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) + ROM_REGION( 0x40000, "sprite", 0 ) + ROM_LOAD16_BYTE( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) + ROM_LOAD16_BYTE( "10.9d", 0x00001, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) ROM_REGION( 0x0100, "proms", 0 ) ROM_LOAD( "tf.13h", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) ) /* Prom is a N82S129AN type */ @@ -1878,20 +1853,20 @@ ROM_START( bigfghtr ) ROM_REGION( 0x10000, "mcu", 0 ) /* Intel C8751 read protected MCU */ ROM_LOAD( "i8751.bin", 0x00000, 0x1000, CRC(64a0d225) SHA1(ccc5c33c0c412bf9e3a4f7de5e39b042e00c41dd) ) - ROM_REGION( 0x08000, "gfx1", 0 ) + ROM_REGION( 0x08000, "text", 0 ) ROM_LOAD( "7.11c", 0x00000, 0x08000, CRC(1809e79f) SHA1(730547771f803857acb552a84a8bc21bd3bda33f) ) - ROM_REGION( 0x30000, "gfx2", 0 ) + ROM_REGION( 0x30000, "foreground", 0 ) ROM_LOAD( "5.13f", 0x00000, 0x20000, CRC(d440a29f) SHA1(9e6ea7c9903e5e3e8e10ac7680c6120e1aa27250) ) ROM_LOAD( "6.15f", 0x20000, 0x10000, CRC(27469a76) SHA1(ebf2c60e1f70a589680c05adf10771ac2097b9d0) ) - ROM_REGION( 0x20000, "gfx3", 0 ) + ROM_REGION( 0x20000, "background", 0 ) ROM_LOAD( "12.8a", 0x00000, 0x10000, CRC(a5694ea9) SHA1(ea94174495b3a65b3797932074a94df3b55fa0a2) ) ROM_LOAD( "11.6a", 0x10000, 0x10000, CRC(10b74e2c) SHA1(e3ec68726e7f277dc2043424f2e4d863eb01b3dc) ) - ROM_REGION( 0x40000, "gfx4", 0 ) - ROM_LOAD( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) - ROM_LOAD( "10.9d", 0x20000, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) + ROM_REGION( 0x40000, "sprite", 0 ) + ROM_LOAD16_BYTE( "9.8d", 0x00000, 0x20000, CRC(fe67800e) SHA1(0d3c4c3cb185270260fa691a97cddf082d6a056e) ) + ROM_LOAD16_BYTE( "10.9d", 0x00001, 0x20000, CRC(dcb828c4) SHA1(607bc86580a6fe6e15e91131532b0eecd8b7a0cb) ) ROM_REGION( 0x0100, "proms", 0 ) ROM_LOAD( "tf.13h", 0x0000, 0x0100, CRC(81244757) SHA1(6324f63e571f0f7a0bb9eb97f9994809db79493f) ) /* Prom is a N82S129AN type */ @@ -1906,25 +1881,6 @@ ROM_END void armedf_state::init_terraf() { m_scroll_type = 0; - - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::bootleg_io_w))); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c006, 0x07c007, write16_delegate(*this, FUNC(armedf_state::terraf_fg_scrolly_w))); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c008, 0x07c009, write16_delegate(*this, FUNC(armedf_state::terraf_fg_scrollx_w))); - m_maincpu->space(AS_PROGRAM).install_write_handler(0x0c0000, 0x0c0001, write16_delegate(*this, FUNC(armedf_state::terraf_fg_scroll_msb_arm_w))); -} - -void armedf_state::init_terrafu() -{ - m_scroll_type = 0; - - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terraf_io_w))); -} - -void armedf_state::init_terrafjb() -{ - m_scroll_type = 0; - - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terrafjb_io_w))); } void armedf_state::init_armedf() @@ -1932,19 +1888,15 @@ void armedf_state::init_armedf() m_scroll_type = 1; } - void armedf_state::init_kozure() { - uint16_t *ROM = (uint16_t *)memregion("maincpu")->base(); + u16 *ROM = (u16 *)memregion("maincpu")->base(); /* patch "time over" bug, see notes on top. */ ROM[0x1016c/2] = 0x4e71; /* ROM check at POST. */ ROM[0x04fc6/2] = 0x4e71; m_scroll_type = 0; - - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terraf_io_w))); - } void armedf_state::init_legion() @@ -1952,7 +1904,7 @@ void armedf_state::init_legion() #if LEGION_HACK /* This is a hack to allow you to use the extra features of 3 of the "Unused" Dip Switches (see notes above). */ - uint16_t *ROM = (uint16_t *)memregion("maincpu")->base(); + u16 *ROM = (u16 *)memregion("maincpu")->base(); RAM[0x0001d6 / 2] = 0x0001; /* To avoid checksum error */ RAM[0x000488 / 2] = 0x4e71; @@ -1966,7 +1918,7 @@ void armedf_state::init_legionjb() #if LEGION_HACK /* This is a hack to allow you to use the extra features of 3 of the "Unused" Dip Switches (see notes above). */ - uint16_t *RAM = (uint16_t *)memregion("maincpu")->base(); + u16 *RAM = (u16 *)memregion("maincpu")->base(); RAM[0x0001d6/2] = 0x0001; /* No need to patch the checksum routine (see notes) ! */ #endif @@ -1978,8 +1930,6 @@ void armedf_state::init_legionjb() void armedf_state::init_cclimbr2() { - m_maincpu->space(AS_PROGRAM).install_write_handler(0x07c000, 0x07c001, write16_delegate(*this, FUNC(armedf_state::terraf_io_w))); - m_scroll_type = 3; } @@ -1995,10 +1945,10 @@ GAME( 1987, legionj, legion, legion, legion, armedf_state, init_legio GAME( 1987, legionjb, legion, legionjb, legion, armedf_state, init_legionjb, ROT270, "bootleg", "Chouji Meikyuu Legion (Japan ver 1.05, bootleg set 1)", MACHINE_SUPPORTS_SAVE) /* blitter protection removed */ GAME( 1987, legionjb2, legion, legionjb2, legion, armedf_state, init_legionjb, ROT270, "bootleg", "Chouji Meikyuu Legion (Japan ver 1.05, bootleg set 2)", MACHINE_SUPPORTS_SAVE) -GAME( 1987, terraf, 0, terraf, terraf, armedf_state, init_terrafu, ROT0, "Nichibutsu", "Terra Force", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, terrafu, terraf, terraf, terraf, armedf_state, init_terrafu, ROT0, "Nichibutsu USA", "Terra Force (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, terrafj, terraf, terraf, terraf, armedf_state, init_terrafu, ROT0, "Nichibutsu Japan", "Terra Force (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, terrafjb, terraf, terrafjb, terraf, armedf_state, init_terrafjb, ROT0, "bootleg", "Terra Force (Japan, bootleg with additional Z80)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, terraf, 0, terraf, terraf, armedf_state, init_terraf, ROT0, "Nichibutsu", "Terra Force", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, terrafu, terraf, terraf, terraf, armedf_state, init_terraf, ROT0, "Nichibutsu USA", "Terra Force (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, terrafj, terraf, terraf, terraf, armedf_state, init_terraf, ROT0, "Nichibutsu Japan", "Terra Force (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, terrafjb, terraf, terrafjb, terraf, armedf_state, init_terraf, ROT0, "bootleg", "Terra Force (Japan, bootleg with additional Z80)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, terrafb, terraf, terrafb, terraf, armedf_state, init_terraf, ROT0, "bootleg", "Terra Force (Japan, bootleg set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1987, kozure, 0, kozure, kozure, armedf_state, init_kozure, ROT0, "Nichibutsu", "Kozure Ookami (Japan)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/includes/armedf.h b/src/mame/includes/armedf.h index 143acd6a944..f75ba45cbac 100644 --- a/src/mame/includes/armedf.h +++ b/src/mame/includes/armedf.h @@ -15,8 +15,8 @@ class armedf_state : public driver_device { public: - armedf_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag) + armedf_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) , m_maincpu(*this, "maincpu") , m_extra(*this, "extra") , m_nb1414m4(*this, "nb1414m4") @@ -25,6 +25,7 @@ public: , m_palette(*this, "palette") , m_spriteram(*this, "spriteram") , m_soundlatch(*this, "soundlatch") + , m_text_videoram(*this, "text_videoram", 0) , m_spr_pal_clut(*this, "spr_pal_clut") , m_fg_videoram(*this, "fg_videoram") , m_bg_videoram(*this, "bg_videoram") @@ -33,11 +34,9 @@ public: void init_cclimbr2(); void init_armedf(); void init_legion(); - void init_terrafu(); + void init_terraf(); void init_legionjb(); void init_kozure(); - void init_terraf(); - void init_terrafjb(); void terraf(machine_config &config); void terrafb(machine_config &config); @@ -50,9 +49,6 @@ public: void armedf(machine_config &config); void kozure(machine_config &config); - uint32_t screen_update_armedf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - DECLARE_VIDEO_START(armedf); - protected: virtual void machine_start() override; virtual void machine_reset() override; @@ -70,65 +66,72 @@ protected: required_device m_soundlatch; // memory pointers - std::unique_ptr m_text_videoram; - required_shared_ptr m_spr_pal_clut; - required_shared_ptr m_fg_videoram; - required_shared_ptr m_bg_videoram; - uint16_t m_legion_cmd[4]; // legionjb only! + required_shared_ptr m_text_videoram; + required_shared_ptr m_spr_pal_clut; + required_shared_ptr m_fg_videoram; + required_shared_ptr m_bg_videoram; + u16 m_legion_cmd[4]; // legionjb only! // video-related tilemap_t *m_bg_tilemap; tilemap_t *m_fg_tilemap; tilemap_t *m_tx_tilemap; - uint16_t m_scroll_msb; - uint16_t m_vreg; - uint16_t m_fg_scrollx; - uint16_t m_fg_scrolly; - uint16_t m_bg_scrollx; - uint16_t m_bg_scrolly; - int m_scroll_type; - int m_sprite_offy; - int m_old_mcu_mode; - int m_waiting_msb; - - DECLARE_WRITE16_MEMBER(terraf_io_w); - DECLARE_WRITE16_MEMBER(terrafjb_io_w); - DECLARE_WRITE16_MEMBER(bootleg_io_w); - DECLARE_WRITE16_MEMBER(sound_command_w); - DECLARE_READ8_MEMBER(soundlatch_clear_r); - DECLARE_WRITE16_MEMBER(irq_lv1_ack_w); - DECLARE_WRITE16_MEMBER(irq_lv2_ack_w); - DECLARE_WRITE8_MEMBER(legionjb_fg_scroll_w); - DECLARE_READ8_MEMBER(blitter_txram_r); - DECLARE_WRITE8_MEMBER(blitter_txram_w); - DECLARE_WRITE8_MEMBER(fg_scrollx_w); - DECLARE_WRITE8_MEMBER(fg_scrolly_w); - DECLARE_WRITE8_MEMBER(fg_scroll_msb_w); - DECLARE_READ8_MEMBER(nb1414m4_text_videoram_r); - DECLARE_WRITE8_MEMBER(nb1414m4_text_videoram_w); - DECLARE_READ8_MEMBER(armedf_text_videoram_r); - DECLARE_WRITE8_MEMBER(armedf_text_videoram_w); - DECLARE_WRITE16_MEMBER(armedf_fg_videoram_w); - DECLARE_WRITE16_MEMBER(armedf_bg_videoram_w); - DECLARE_WRITE16_MEMBER(terraf_fg_scrolly_w); - DECLARE_WRITE16_MEMBER(terraf_fg_scrollx_w); - DECLARE_WRITE16_MEMBER(terraf_fg_scroll_msb_arm_w); - DECLARE_WRITE16_MEMBER(armedf_fg_scrollx_w); - DECLARE_WRITE16_MEMBER(armedf_fg_scrolly_w); - DECLARE_WRITE16_MEMBER(armedf_bg_scrollx_w); - DECLARE_WRITE16_MEMBER(armedf_bg_scrolly_w); + u16 m_scroll_msb; + u16 m_vreg; + u16 m_fg_scrollx; + u16 m_fg_scrolly; + u16 m_bg_scrollx; + u16 m_bg_scrolly; + int m_scroll_type; + int m_sprite_offy; + int m_old_mcu_mode; + int m_waiting_msb; + + // read/write handlers + void terraf_io_w(offs_t offset, u16 data, u16 mem_mask); + void terrafjb_io_w(offs_t offset, u16 data, u16 mem_mask); + void armedf_io_w(offs_t offset, u16 data, u16 mem_mask); + void sound_command_w(u8 data); + u8 soundlatch_clear_r(); + void irq_lv1_ack_w(u16 data); + void irq_lv2_ack_w(u16 data); + + // video handlers + void legionjb_fg_scroll_w(offs_t offset, u8 data); + void blitter_txram_w(offs_t offset, u8 data); + void terrafjb_fg_scrollx_w(u8 data); + void terrafjb_fg_scrolly_w(u8 data); + void terrafjb_fg_scroll_msb_w(u8 data); + u8 text_videoram_r(offs_t offset); + void text_videoram_w(offs_t offset, u8 data); + void fg_videoram_w(offs_t offset, u16 data, u16 mem_mask); + void bg_videoram_w(offs_t offset, u16 data, u16 mem_mask); + void terrafb_fg_scrolly_w(u8 data); + void terrafb_fg_scrollx_w(u8 data); + void terrafb_fg_scroll_msb_arm_w(u8 data); + void fg_scrollx_w(offs_t offset, u16 data, u16 mem_mask); + void fg_scrolly_w(offs_t offset, u16 data, u16 mem_mask); + void bg_scrollx_w(offs_t offset, u16 data, u16 mem_mask); + void bg_scrolly_w(offs_t offset, u16 data, u16 mem_mask); + TILEMAP_MAPPER_MEMBER(armedf_scan_type1); TILEMAP_MAPPER_MEMBER(armedf_scan_type2); TILEMAP_MAPPER_MEMBER(armedf_scan_type3); + TILE_GET_INFO_MEMBER(get_nb1414m4_tx_tile_info); TILE_GET_INFO_MEMBER(get_armedf_tx_tile_info); TILE_GET_INFO_MEMBER(get_fg_tile_info); TILE_GET_INFO_MEMBER(get_bg_tile_info); + DECLARE_VIDEO_START(terraf); - void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority ); - void armedf_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx, - uint32_t code,uint32_t color, uint32_t clut,int flipx,int flipy,int offsx,int offsy, - int transparent_color); + DECLARE_VIDEO_START(armedf); + + u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &primap); + void armedf_drawgfx(bitmap_ind16 &dest_bmp, const rectangle &clip, gfx_element *gfx, + u32 code, u32 color, u32 clut, int flipx, int flipy, int offsx, int offsy, + bitmap_ind8 &primap, u32 pmask, int transparent_color); void common_map(address_map &map); void armedf_map(address_map &map); void cclimbr2_map(address_map &map); @@ -141,7 +144,10 @@ protected: void sound_3526_portmap(address_map &map); void sound_map(address_map &map); void sound_portmap(address_map &map); + void terraf_common_map(address_map &map); void terraf_map(address_map &map); + void terrafb_map(address_map &map); + void terrafjb_map(address_map &map); void terrafjb_extraz80_map(address_map &map); void terrafjb_extraz80_portmap(address_map &map); }; @@ -149,22 +155,24 @@ protected: class bigfghtr_state : public armedf_state { public: - bigfghtr_state(const machine_config &mconfig, device_type type, const char *tag) : - armedf_state(mconfig, type, tag), - m_mcu(*this, "mcu"), - m_sharedram(*this, "sharedram") + bigfghtr_state(const machine_config &mconfig, device_type type, const char *tag) + : armedf_state(mconfig, type, tag) + , m_mcu(*this, "mcu") + , m_sharedram(*this, "sharedram") { } void bigfghtr(machine_config &config); private: required_device m_mcu; - required_shared_ptr m_sharedram; + required_shared_ptr m_sharedram; + + // mcu interfaces + u16 latch_r(); + void main_sharedram_w(offs_t offset, u8 data); + u8 main_sharedram_r(offs_t offset); + void mcu_spritelist_w(offs_t offset, u8 data); - DECLARE_READ16_MEMBER(latch_r); - DECLARE_WRITE8_MEMBER(main_sharedram_w); - DECLARE_READ8_MEMBER(main_sharedram_r); - DECLARE_WRITE8_MEMBER(mcu_spritelist_w); void bigfghtr_map(address_map &map); void bigfghtr_mcu_io_map(address_map &map); void bigfghtr_mcu_map(address_map &map); diff --git a/src/mame/video/armedf.cpp b/src/mame/video/armedf.cpp index d89789a9d31..868014e9eb4 100644 --- a/src/mame/video/armedf.cpp +++ b/src/mame/video/armedf.cpp @@ -35,8 +35,8 @@ TILEMAP_MAPPER_MEMBER(armedf_state::armedf_scan_type3) TILE_GET_INFO_MEMBER(armedf_state::get_nb1414m4_tx_tile_info) { - int tile_number = m_text_videoram[tile_index] & 0xff; - int attributes; + u8 tile_number = m_text_videoram[tile_index] & 0xff; + u8 attributes; /* TODO: Armed F doesn't seem to use the NB1414M4! */ //if (m_scroll_type == 1) @@ -46,7 +46,7 @@ TILE_GET_INFO_MEMBER(armedf_state::get_nb1414m4_tx_tile_info) attributes = m_text_videoram[tile_index + 0x400] & 0xff; // TODO: skip drawing the NB1414M4 params, how the HW actually handles this? - if(tile_index < 0x12) + if (tile_index < 0x12) tile_number = attributes = 0x00; } @@ -61,8 +61,8 @@ TILE_GET_INFO_MEMBER(armedf_state::get_nb1414m4_tx_tile_info) TILE_GET_INFO_MEMBER(armedf_state::get_armedf_tx_tile_info) { - int tile_number = m_text_videoram[tile_index] & 0xff; - int attributes; + u8 tile_number = m_text_videoram[tile_index] & 0xff; + u8 attributes; /* TODO: Armed F doesn't seem to use the NB1414M4! */ //if (m_scroll_type == 1) @@ -71,7 +71,7 @@ TILE_GET_INFO_MEMBER(armedf_state::get_armedf_tx_tile_info) //{ // attributes = m_text_videoram[tile_index + 0x400] & 0xff; // - // if(tile_index < 0x12) /* don't draw the NB1414M4 params! TODO: could be a better fix */ + // if (tile_index < 0x12) /* don't draw the NB1414M4 params! TODO: could be a better fix */ // tile_number = attributes = 0x00; //} @@ -87,7 +87,7 @@ TILE_GET_INFO_MEMBER(armedf_state::get_armedf_tx_tile_info) TILE_GET_INFO_MEMBER(armedf_state::get_fg_tile_info) { - int data = m_fg_videoram[tile_index]; + const u16 data = m_fg_videoram[tile_index]; SET_TILE_INFO_MEMBER(1, data&0x7ff, data>>11, @@ -97,7 +97,7 @@ TILE_GET_INFO_MEMBER(armedf_state::get_fg_tile_info) TILE_GET_INFO_MEMBER(armedf_state::get_bg_tile_info) { - int data = m_bg_videoram[tile_index]; + const u16 data = m_bg_videoram[tile_index]; SET_TILE_INFO_MEMBER(2, data & 0x3ff, data >> 11, @@ -128,11 +128,6 @@ VIDEO_START_MEMBER(armedf_state,terraf) if (m_scroll_type != 1) m_tx_tilemap->set_scrollx(0, -128); - - m_text_videoram = std::make_unique(0x1000); - memset(m_text_videoram.get(), 0x00, 0x1000); - - save_pointer(NAME(m_text_videoram), 0x1000); } VIDEO_START_MEMBER(armedf_state,armedf) @@ -150,11 +145,6 @@ VIDEO_START_MEMBER(armedf_state,armedf) if (m_scroll_type != 1) m_tx_tilemap->set_scrollx(0, -128); - - m_text_videoram = std::make_unique(0x1000); - memset(m_text_videoram.get(), 0x00, 0x1000); - - save_pointer(NAME(m_text_videoram), 0x1000); } /*************************************************************************** @@ -163,88 +153,70 @@ VIDEO_START_MEMBER(armedf_state,armedf) ***************************************************************************/ -READ8_MEMBER(armedf_state::nb1414m4_text_videoram_r) -{ - return m_text_videoram[offset]; -} - -WRITE8_MEMBER(armedf_state::nb1414m4_text_videoram_w) -{ - m_text_videoram[offset] = data; - m_tx_tilemap->mark_tile_dirty(offset & 0x7ff); -} - -READ8_MEMBER(armedf_state::armedf_text_videoram_r) +u8 armedf_state::text_videoram_r(offs_t offset) { return m_text_videoram[offset]; } -WRITE8_MEMBER(armedf_state::armedf_text_videoram_w) +void armedf_state::text_videoram_w(offs_t offset, u8 data) { m_text_videoram[offset] = data; m_tx_tilemap->mark_tile_dirty(offset & 0x7ff); } -WRITE16_MEMBER(armedf_state::armedf_fg_videoram_w) +void armedf_state::fg_videoram_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_fg_videoram[offset]); m_fg_tilemap->mark_tile_dirty(offset); } -WRITE16_MEMBER(armedf_state::armedf_bg_videoram_w) +void armedf_state::bg_videoram_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_bg_videoram[offset]); m_bg_tilemap->mark_tile_dirty(offset); } -WRITE16_MEMBER(armedf_state::terraf_fg_scrolly_w) +void armedf_state::terrafb_fg_scrolly_w(u8 data) { - if (ACCESSING_BITS_8_15) - { - m_fg_scrolly = ((data >> 8) & 0xff) | (m_fg_scrolly & 0x300); - m_waiting_msb = 1; - } + m_fg_scrolly = (data & 0xff) | (m_fg_scrolly & 0x300); + m_waiting_msb = 1; } -WRITE16_MEMBER(armedf_state::terraf_fg_scrollx_w) +void armedf_state::terrafb_fg_scrollx_w(u8 data) { - if (ACCESSING_BITS_8_15) + if (m_waiting_msb) { - if (m_waiting_msb) - { - m_scroll_msb = data >> 8; - m_fg_scrollx = (m_fg_scrollx & 0xff) | (((m_scroll_msb >> 4) & 3) << 8); - m_fg_scrolly = (m_fg_scrolly & 0xff) | (((m_scroll_msb >> 0) & 3) << 8); - //popmessage("%04X %04X %04X",data,m_fg_scrollx,m_fg_scrolly); - } - else - m_fg_scrollx = ((data >> 8) & 0xff) | (m_fg_scrollx & 0x300); + m_scroll_msb = data; + m_fg_scrollx = (m_fg_scrollx & 0xff) | (((m_scroll_msb >> 4) & 3) << 8); + m_fg_scrolly = (m_fg_scrolly & 0xff) | (((m_scroll_msb >> 0) & 3) << 8); + //popmessage("%04X %04X %04X",data,m_fg_scrollx,m_fg_scrolly); } + else + m_fg_scrollx = (data & 0xff) | (m_fg_scrollx & 0x300); } -WRITE16_MEMBER(armedf_state::terraf_fg_scroll_msb_arm_w) +void armedf_state::terrafb_fg_scroll_msb_arm_w(u8 data) { - if (ACCESSING_BITS_8_15) - m_waiting_msb = 0; + m_waiting_msb = 0; } -WRITE16_MEMBER(armedf_state::armedf_fg_scrollx_w) +void armedf_state::fg_scrollx_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_fg_scrollx); } -WRITE16_MEMBER(armedf_state::armedf_fg_scrolly_w) +void armedf_state::fg_scrolly_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_fg_scrolly); } -WRITE16_MEMBER(armedf_state::armedf_bg_scrollx_w) +void armedf_state::bg_scrollx_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_bg_scrollx); m_bg_tilemap->set_scrollx(0, m_bg_scrollx); } -WRITE16_MEMBER(armedf_state::armedf_bg_scrolly_w) +void armedf_state::bg_scrolly_w(offs_t offset, u16 data, u16 mem_mask) { COMBINE_DATA(&m_bg_scrolly); m_bg_tilemap->set_scrolly(0, m_bg_scrolly); @@ -260,11 +232,14 @@ WRITE16_MEMBER(armedf_state::armedf_bg_scrolly_w) /* custom code to handle color cycling effect, handled by m_spr_pal_clut */ void armedf_state::armedf_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,gfx_element *gfx, - uint32_t code,uint32_t color, uint32_t clut,int flipx,int flipy,int offsx,int offsy, - int transparent_color) + u32 code,u32 color, u32 clut,int flipx,int flipy,int offsx,int offsy, + bitmap_ind8 &primap, u32 pmask, int transparent_color) { + // high bit of the mask is implicitly on + pmask |= 1 << 31; + const pen_t *pal = &m_palette->pen(gfx->colorbase() + gfx->granularity() * (color % gfx->colors())); - const uint8_t *source_base = gfx->get_data(code % gfx->elements()); + const u8 *source_base = gfx->get_data(code % gfx->elements()); int x_index_base, y_index, sx, sy, ex, ey; int xinc, yinc; @@ -311,15 +286,19 @@ void armedf_state::armedf_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,g { for (y = sy; y < ey; y++) { - const uint8_t *source = source_base + y_index*gfx->rowbytes(); - uint16_t *dest = &dest_bmp.pix16(y); + const u8 *source = source_base + y_index*gfx->rowbytes(); + u16 *dest = &dest_bmp.pix16(y); + u8 *destpri = &primap.pix8(y); int x_index = x_index_base; for (x = sx; x < ex; x++) { int c = (source[x_index] & ~0xf) | ((m_spr_pal_clut[clut*0x10+(source[x_index] & 0xf)]) & 0xf); if (c != transparent_color) - dest[x] = pal[c]; - + { + if (((1 << (destpri[x] & 0x1f)) & pmask) == 0) + dest[x] = pal[c]; + destpri[x] = 0x1f; + } x_index += xinc; } y_index += yinc; @@ -329,13 +308,13 @@ void armedf_state::armedf_drawgfx(bitmap_ind16 &dest_bmp,const rectangle &clip,g } -void armedf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, int priority ) +void armedf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect, bitmap_ind8 &primap ) { - uint16_t *buffered_spriteram = m_spriteram->buffer(); - int offs; + u16 *buffered_spriteram = m_spriteram->buffer(); - for (offs = 0; offs < m_spriteram->bytes() / 2; offs += 4) + for (int offs = (m_spriteram->bytes() / 2) - 4; offs >= 0; offs -= 4) { + u32 pmask = 0; int code = buffered_spriteram[offs + 1]; /* ??YX?TTTTTTTTTTT */ int flipx = code & 0x2000; int flipy = code & 0x1000; @@ -343,6 +322,18 @@ void armedf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect int clut = (buffered_spriteram[offs + 2]) & 0x7f; int sx = buffered_spriteram[offs + 3]; int sy = m_sprite_offy + 240 - (buffered_spriteram[offs + 0] & 0x1ff); + int pri = ((buffered_spriteram[offs + 0] & 0x3000) >> 12); + if (pri == 3) // mimic previous driver behavior, correct? + continue; + + if (pri >= 1) + pmask |= GFX_PMASK_4; + if (pri >= 2) + pmask |= GFX_PMASK_2; + /* + if (pri >= 3) + pmask |= GFX_PMASK_1; + */ if (flip_screen()) { @@ -352,18 +343,15 @@ void armedf_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect flipy = !flipy; /* in all the games supported by this driver */ } - if (((buffered_spriteram[offs + 0] & 0x3000) >> 12) == priority) - { - armedf_drawgfx(bitmap,cliprect,m_gfxdecode->gfx(3), - code & 0xfff, - color,clut, - flipx,flipy, - sx,sy,15); - } + armedf_drawgfx(bitmap,cliprect,m_gfxdecode->gfx(3), + code & 0xfff, + color,clut, + flipx,flipy, + sx,sy,primap,pmask,15); } } -uint32_t armedf_state::screen_update_armedf(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +u32 armedf_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { int sprite_enable = m_vreg & 0x200; @@ -375,7 +363,7 @@ uint32_t armedf_state::screen_update_armedf(screen_device &screen, bitmap_ind16 { case 0: /* terra force, kozure ookami */ case 2: /* legion */ - case 3: /* crazy climber */ + case 3: /* crazy climber 2 */ m_fg_tilemap->set_scrollx(0, (m_fg_scrollx & 0x3ff)); m_fg_tilemap->set_scrolly(0, (m_fg_scrolly & 0x3ff)); break; @@ -387,24 +375,16 @@ uint32_t armedf_state::screen_update_armedf(screen_device &screen, bitmap_ind16 } - bitmap.fill(0xff, cliprect ); - - m_tx_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_CATEGORY(1), 0); - - m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - - if (sprite_enable) - draw_sprites(bitmap, cliprect, 2); - - m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); - - if (sprite_enable) - draw_sprites(bitmap, cliprect, 1); + screen.priority().fill(0, cliprect); + bitmap.fill(0xff, cliprect); - m_tx_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_CATEGORY(0), 0); + m_tx_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_CATEGORY(1), 1); + m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 1); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 2); + m_tx_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_CATEGORY(0), 4); if (sprite_enable) - draw_sprites(bitmap, cliprect, 0); + draw_sprites(bitmap, cliprect, screen.priority()); return 0; } -- cgit v1.2.3