diff options
Diffstat (limited to 'src/mame/capcom/lwings.cpp')
-rw-r--r-- | src/mame/capcom/lwings.cpp | 1323 |
1 files changed, 871 insertions, 452 deletions
diff --git a/src/mame/capcom/lwings.cpp b/src/mame/capcom/lwings.cpp index db50bd394ae..60730ab9ac8 100644 --- a/src/mame/capcom/lwings.cpp +++ b/src/mame/capcom/lwings.cpp @@ -12,11 +12,6 @@ To Do: - sectionz does "false contacts" on the coin counters, causing them to increment twice per coin. -- clean up Avengers protection; it currently checks against hard-coded program - counter rather than behaving as a memory-mapped black box. -- Avengers had a protection chip underneath the sound module. Needs dumping. - The protection is extensive: palette data, calculates player movement, - even a hand in the sound. The angle/movement stuff isn't 100% accurate either. - accurate music tempo (audiocpu irq freq) - accurate video timing, raw params @@ -33,6 +28,10 @@ FEB-2003 (AT) Notes: + Avengers has a protection chip underneath the sound module. + The protection is extensive: palette data, calculates player movement, + even a hand in the sound. + avengers061gre2: corrupted graphics in Avengers' ending not fixed. This bug is not in the Japanese set "Buraiken". It might just be a bug in the original: the tiles for the character @@ -58,14 +57,147 @@ Notes: ***************************************************************************/ #include "emu.h" -#include "lwings.h" +#include "cpu/mcs51/mcs51.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" #include "machine/watchdog.h" +#include "sound/msm5205.h" #include "sound/okim6295.h" #include "sound/ymopn.h" +#include "video/bufsprite.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + +namespace { + +class lwings_state : public driver_device +{ +public: + lwings_state(const machine_config &mconfig, device_type type, const char *tag) : + driver_device(mconfig, type, tag), + m_maincpu(*this, "maincpu"), + m_soundcpu(*this, "soundcpu"), + m_adpcmcpu(*this, "adpcmcpu"), + m_mcu(*this, "mcu"), + m_mculatch(*this, "mculatch%u", 0U), + m_msm(*this, "5205"), + m_gfxdecode(*this, "gfxdecode"), + m_palette(*this, "palette"), + m_screen(*this, "screen"), + m_soundlatch(*this, "soundlatch"), + m_spriteram(*this, "spriteram"), + m_fgvideoram(*this, "fgvideoram"), + m_bg1videoram(*this, "bg1videoram"), + m_bank1(*this, "bank1"), + m_bank2(*this, "bank2"), + m_samplebank(*this, "samplebank") + { } + + void lwings(machine_config &config); + void sectionz(machine_config &config); + void trojan(machine_config &config); + void fball(machine_config &config); + void avengers(machine_config &config); + void buraikenb(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + virtual void video_start() override; + +private: + // devices + required_device<cpu_device> m_maincpu; + required_device<cpu_device> m_soundcpu; + optional_device<cpu_device> m_adpcmcpu; + optional_device<i8751_device> m_mcu; + optional_device_array<generic_latch_8_device, 3> m_mculatch; + optional_device<msm5205_device> m_msm; + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; + required_device<screen_device> m_screen; + required_device<generic_latch_8_device> m_soundlatch; + + // memory pointers + required_device<buffered_spriteram8_device> m_spriteram; + required_shared_ptr<uint8_t> m_fgvideoram; + required_shared_ptr<uint8_t> m_bg1videoram; + required_memory_bank m_bank1; + optional_memory_bank m_bank2; + optional_memory_bank m_samplebank; + memory_access<16, 0, 0, ENDIANNESS_LITTLE>::specific m_maincpu_program; + + // video-related + tilemap_t *m_fg_tilemap = nullptr; + tilemap_t *m_bg1_tilemap = nullptr; + tilemap_t *m_bg2_tilemap = nullptr; + uint8_t m_bg2_image = 0U; + int m_spr_avenger_hw = 0; + uint8_t m_scroll_x[2]{}; + uint8_t m_scroll_y[2]{}; + + // misc + uint8_t m_adpcm = 0U; + uint8_t m_nmi_mask = 0U; + int m_sprbank = 0; + + // MCU-related (avengers) + uint8_t m_mcu_data[2]{}; + uint8_t m_mcu_control = 0xff; + + void avengers_adpcm_w(uint8_t data); + uint8_t avengers_adpcm_r(); + void lwings_bankswitch_w(uint8_t data); + uint8_t avengers_m1_r(offs_t offset); + uint8_t avengers_soundlatch_ack_r(); + void lwings_fgvideoram_w(offs_t offset, uint8_t data); + void lwings_bg1videoram_w(offs_t offset, uint8_t data); + void lwings_bg1_scrollx_w(offs_t offset, uint8_t data); + void lwings_bg1_scrolly_w(offs_t offset, uint8_t data); + void trojan_bg2_scrollx_w(uint8_t data); + void trojan_bg2_image_w(uint8_t data); + void msm5205_w(uint8_t data); + void fball_oki_bank_w(uint8_t data); + + uint8_t mcu_p0_r(); + uint8_t mcu_p1_r(); + uint8_t mcu_p2_r(); + void mcu_p0_w(uint8_t data); + void mcu_p2_w(uint8_t data); + void mcu_control_w(uint8_t data); + + TILEMAP_MAPPER_MEMBER(get_bg2_memory_offset); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + TILE_GET_INFO_MEMBER(lwings_get_bg1_tile_info); + TILE_GET_INFO_MEMBER(trojan_get_bg1_tile_info); + TILE_GET_INFO_MEMBER(get_bg2_tile_info); + DECLARE_VIDEO_START(trojan); + DECLARE_VIDEO_START(avengers); + uint32_t screen_update_lwings(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_trojan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void lwings_interrupt(int state); + void avengers_interrupt(int state); + bool is_sprite_on(uint8_t const *buffered_spriteram, int offs); + void lwings_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); + void trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); + + void avengers_adpcm_io_map(address_map &map); + void avengers_map(address_map &map); + void avengers_m1_map(address_map &map); + void buraikenb_map(address_map &map); + void fball_map(address_map &map); + void fball_oki_map(address_map &map); + void fball_sound_map(address_map &map); + void lwings_map(address_map &map); + void lwings_sound_map(address_map &map); + void trojan_adpcm_io_map(address_map &map); + void trojan_adpcm_map(address_map &map); + void trojan_map(address_map &map); +}; /* Avengers runs on hardware almost identical to Trojan, but with a protection * device and some small changes to the memory map and video hardware. @@ -96,7 +228,7 @@ void lwings_state::lwings_bankswitch_w(uint8_t data) flip_screen_set(~data & 0x01); /* bits 1 and 2 select ROM bank */ - membank("bank1")->set_entry((data & 0x06) >> 1); + m_bank1->set_entry((data & 0x06) >> 1); /* bit 3 enables NMI */ m_nmi_mask = data & 8; @@ -106,183 +238,82 @@ void lwings_state::lwings_bankswitch_w(uint8_t data) machine().bookkeeping().coin_counter_w(0, data & 0x80); } -WRITE_LINE_MEMBER(lwings_state::lwings_interrupt) +void lwings_state::lwings_interrupt(int state) { if (state && m_nmi_mask) m_maincpu->set_input_line_and_vector(0, HOLD_LINE, 0xd7); /* Z80 - RST 10h */ } -WRITE_LINE_MEMBER(lwings_state::avengers_interrupt) +void lwings_state::avengers_interrupt(int state) { if (state && m_nmi_mask) m_maincpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); } -void lwings_state::avengers_protection_w(uint8_t data) +uint8_t lwings_state::mcu_p0_r() { - int pc = m_maincpu->pc(); - - if (pc == 0x2eeb) - { - m_param[0] = data; - } - else if (pc == 0x2f09) - { - m_param[1] = data; - } - else if(pc == 0x2f26) - { - m_param[2] = data; - } - else if (pc == 0x2f43) - { - m_param[3] = data; - } - else if (pc == 0x0445) - { - m_soundstate = 0x80; - m_soundlatch->write(data); - } + if (!BIT(m_mcu_control, 7)) + return m_mculatch[0]->read(); + else + return 0xff; } -void lwings_state::avengers_prot_bank_w(uint8_t data) +uint8_t lwings_state::mcu_p1_r() { - m_palette_pen = data * 64; + // this is used to decide if we're sending angle params or a sound write? compares against 0xf0, vpos like 1943? + return m_screen->vpos(); } -int lwings_state::avengers_fetch_paldata( ) +uint8_t lwings_state::mcu_p2_r() { - static const char pal_data[] = - /* page 1: 0x03,0x02,0x01,0x00 */ - "0000000000000000" "A65486A6364676D6" "C764C777676778A7" "A574E5E5C5756AE5" - "0000000000000000" "F51785D505159405" "A637B6A636269636" "F45744E424348824" - "0000000000000000" "A33263B303330203" "4454848454440454" "A27242C232523632" - "0000000000000000" "1253327202421102" "3386437373631373" "41A331A161715461" - "0000000000000000" "1341715000711203" "4442635191622293" "5143D48383D37186" - "0000000000000000" "2432423000412305" "6633343302333305" "7234A565A5A4A2A8" - "0000000000000000" "46232422A02234A7" "88241624A21454A7" "A3256747A665D3AA" - "0000000000000000" "070406020003050B" "0A05090504050508" "05060A090806040C" - - /* page2: 0x07,0x06,0x05,0x04 */ - "0000000000000000" "2472030503230534" "6392633B23433B53" "0392846454346423" - "0000000000000000" "1313052405050423" "3223754805354832" "323346A38686A332" - "0000000000000000" "72190723070723D2" "81394776070776D1" "A15929F25959F2F1" - "0000000000000000" "650706411A2A1168" "770737C43A3A3466" "87071F013C0C3175" - "0000000000000000" "2001402727302020" "4403048F4A484344" "4A050B074E0E4440" - "0000000000000000" "3003800C35683130" "5304035C587C5453" "5607080C5B265550" - "0000000000000000" "4801D00043854245" "6C020038669A6569" "6604050A69446764" - "0000000000000000" "0504000001030504" "0A05090504060307" "04090D0507010403" - - /* page3: 0x0b,0x0a,0x09,0x08 */ - "0000000000000000" "685A586937F777F7" "988A797A67A7A7A7" "B8CA898DC737F787" - "0000000000000000" "4738A61705150505" "8797672835250535" "7777072A25350525" - "0000000000000000" "3525642404340404" "6554453554440454" "5544053634540434" - "0000000000000000" "2301923203430303" "4333834383630373" "3324034473730363" - "0000000000000000" "3130304000762005" "5352525291614193" "6463635483D06581" - "0000000000000000" "4241415100483107" "6463631302335304" "76757415A5A077A3" - "0000000000000000" "53525282A02A43AA" "76747424A31565A5" "88888536A66089A4" - "0000000000000000" "05040304000D050C" "0806050604070707" "0A0A060808000C06" - - /* page4: 0x0f,0x0e,0x0d,0x0c */ - "0000000000000000" "3470365956342935" "5590578997554958" "73C078A8C573687A" - "0000000000000000" "5355650685030604" "2427362686042607" "010A070584010508" - "0000000000000000" "0208432454022403" "737A243455733406" "000D050353000307" - "0000000000000000" "000A023233003202" "424C134234424204" "000F241132001105" - "0000000000000000" "3031113030300030" "5152215252512051" "7273337374723272" - "0000000000000000" "4141214041411041" "6263326363623162" "8385448585834383" - "0000000000000000" "5153225152512051" "7375437475734273" "9598559697946495" - "0000000000000000" "0205020303020102" "0407040606040304" "060A060809060506" - - /* page5: 0x13,0x12,0x11,0x10 */ - "0000000000000000" "4151D141D3D177F7" "5454C44482C4A7A7" "0404D45491D4F787" - "0000000000000000" "0303032374230505" "9696962673560535" "0505054502850525" - "0000000000000000" "0303030355030404" "7777770754470454" "0606060603760434" - "0000000000000000" "0505053547050303" "4949492945390373" "0808083804580363" - "0000000000000000" "0B0C444023442005" "3D3F333433334193" "0000043504046581" - "0000000000000000" "0809565085863107" "0B6A352374455304" "00700644050677A3" - "0000000000000000" "06073879C8C843AA" "09492739A58765A5" "0050084A060889A4" - "0000000000000000" "05060B070B0B050C" "0707090707090707" "00000B08070B0C06" - - /* page6: 0x17,0x16,0x15,0x14 */ - "0000000000000000" "0034308021620053" "0034417042512542" "0034526064502E31" - "0000000000000000" "0106412032733060" "11A6522053628350" "22A6632072620D42" - "0000000000000000" "1308223052242080" "2478233071235170" "3578243090230960" - "0000000000000000" "2111334333331404" "3353324232324807" "45B5314131310837" - "0000000000000000" "3232445444445302" "445443534343B725" "567642524242B745" - "0000000000000000" "4343556555550201" "5575546454540524" "6787536353537554" - "0000000000000000" "6474667676660100" "7696657575650423" "88A8647474645473" - "0000000000000000" "0001070701050004" "0003060603040303" "0005050505040302"; - - int bank = m_palette_pen / 64; - int offs = m_palette_pen % 64; - int page = bank / 4; /* 0..7 */ - int base = (3 - (bank & 3)); /* 0..3 */ - int row = offs & 0xf; /* 0..15 */ - int col = offs / 16 + base * 4; /* 0..15 */ - int digit0 = pal_data[page * 256 * 2 + (31 - row * 2) * 16 + col]; - int digit1 = pal_data[page * 256 * 2 + (30 - row * 2) * 16 + col]; - int result; - - if (digit0 >= 'A') - digit0 += 10 - 'A'; - else - digit0 -= '0'; - - if (digit1 >= 'A') - digit1 += 10 - 'A'; + if (!BIT(m_mcu_control, 7)) + return m_mculatch[1]->read(); else - digit1 -= '0'; - - result = digit0 * 16 + digit1; + return 0xff; +} - if ((m_palette_pen & 0x3f) != 0x3f) - m_palette_pen++; +void lwings_state::mcu_p0_w(uint8_t data) +{ + m_mcu_data[0] = data; +} - return result; +void lwings_state::mcu_p2_w(uint8_t data) +{ + m_mcu_data[1] = data; } -uint8_t lwings_state::avengers_protection_r() +void lwings_state::mcu_control_w(uint8_t data) { - static const int xpos[8] = { 10, 7, 0, -7, -10, -7, 0, 7 }; - static const int ypos[8] = { 0, 7, 10, 7, 0, -7, -10, -7 }; - int best_dist = 0; - int best_dir = 0; - int x, y; - int dx, dy, dist, dir; - - if (m_maincpu->pc() == 0x7c7) + if (!BIT(m_mcu_control, 6) && BIT(data, 6)) { - /* palette data */ - return avengers_fetch_paldata(); + //logerror("%s: MCU writes %02X back to main CPU\n", machine().time().to_string(), m_mcu_data[0]); + m_mculatch[2]->write(m_mcu_data[0]); + m_soundlatch->write(m_mcu_data[1]); + machine().scheduler().perfect_quantum(attotime::from_usec(60)); } - /* Point to Angle Function + if (BIT(m_mcu_control, 7) != BIT(data, 7)) + m_mculatch[0]->acknowledge_w(); - Input: two cartesian points - Output: direction code (north, northeast, east, ...) - */ - x = m_param[0] - m_param[2]; - y = m_param[1] - m_param[3]; - for (dir = 0; dir < 8; dir++) - { - dx = xpos[dir] - x; - dy = ypos[dir] - y; - dist = dx * dx + dy * dy; - if (dist < best_dist || dir == 0) - { - best_dir = dir; - best_dist = dist; - } - } - return best_dir << 5; + m_mcu_control = data; } -uint8_t lwings_state::avengers_soundlatch2_r() +uint8_t lwings_state::avengers_m1_r(offs_t offset) { - uint8_t data = *m_soundlatch2 | m_soundstate; - m_soundstate = 0; - return(data); + // 2 wait states on each M1 access (needed to keep in sync with MCU) + if (!machine().side_effects_disabled()) + m_maincpu->adjust_icount(-2); + return m_maincpu_program.read_byte(offset); +} + +uint8_t lwings_state::avengers_soundlatch_ack_r() +{ + uint8_t data = m_soundlatch->read() | (m_soundlatch->pending_r() ? 0x80 : 0); + if (!machine().side_effects_disabled()) + m_soundlatch->acknowledge_w(); + + return data; } void lwings_state::msm5205_w(uint8_t data) @@ -293,7 +324,7 @@ void lwings_state::msm5205_w(uint8_t data) m_msm->vclk_w(0); } -void lwings_state::avengers_map(address_map &map) +void lwings_state::buraikenb_map(address_map &map) { map(0x0000, 0x7fff).rom(); map(0x8000, 0xbfff).bankr("bank1"); @@ -309,15 +340,29 @@ void lwings_state::avengers_map(address_map &map) map(0xf804, 0xf804).w(FUNC(lwings_state::trojan_bg2_scrollx_w)); map(0xf805, 0xf805).w(FUNC(lwings_state::trojan_bg2_image_w)); - map(0xf808, 0xf808).portr("SERVICE").nopw(); /* ? */ - map(0xf809, 0xf809).portr("P1").w(FUNC(lwings_state::avengers_protection_w)); + map(0xf808, 0xf808).portr("SERVICE").nopw(); // ? + map(0xf809, 0xf809).portr("P1"); map(0xf80a, 0xf80a).portr("P2"); map(0xf80b, 0xf80b).portr("DSWB"); - map(0xf80c, 0xf80c).portr("DSWA").w(FUNC(lwings_state::avengers_prot_bank_w)); - map(0xf80d, 0xf80d).rw(FUNC(lwings_state::avengers_protection_r), FUNC(lwings_state::avengers_adpcm_w)); + map(0xf80c, 0xf80c).portr("DSWA").w(m_soundlatch, FUNC(generic_latch_8_device::write)); + map(0xf80d, 0xf80d).w(FUNC(lwings_state::avengers_adpcm_w)); map(0xf80e, 0xf80e).w(FUNC(lwings_state::lwings_bankswitch_w)); } +void lwings_state::avengers_map(address_map &map) +{ + buraikenb_map(map); + + map(0xf809, 0xf809).w(m_mculatch[0], FUNC(generic_latch_8_device::write)); + map(0xf80c, 0xf80c).w(m_mculatch[1], FUNC(generic_latch_8_device::write)); + map(0xf80d, 0xf80d).r(m_mculatch[2], FUNC(generic_latch_8_device::read)); +} + +void lwings_state::avengers_m1_map(address_map &map) +{ + map(0x0000, 0xffff).r(FUNC(lwings_state::avengers_m1_r)); +} + void lwings_state::lwings_map(address_map &map) { map(0x0000, 0x7fff).rom(); @@ -356,7 +401,7 @@ void lwings_state::trojan_map(address_map &map) map(0xf802, 0xf803).w(FUNC(lwings_state::lwings_bg1_scrolly_w)); map(0xf804, 0xf804).w(FUNC(lwings_state::trojan_bg2_scrollx_w)); map(0xf805, 0xf805).w(FUNC(lwings_state::trojan_bg2_image_w)); - map(0xf808, 0xf808).portr("SERVICE").nopw(); //watchdog + map(0xf808, 0xf808).portr("SERVICE").nopw(); // watchdog map(0xf809, 0xf809).portr("P1"); map(0xf80a, 0xf80a).portr("P2"); map(0xf80b, 0xf80b).portr("DSWA"); @@ -372,12 +417,10 @@ void lwings_state::lwings_sound_map(address_map &map) map(0xc800, 0xc800).r(m_soundlatch, FUNC(generic_latch_8_device::read)); map(0xe000, 0xe001).w("2203a", FUNC(ym2203_device::write)); map(0xe002, 0xe003).w("2203b", FUNC(ym2203_device::write)); - map(0xe006, 0xe006).r(FUNC(lwings_state::avengers_soundlatch2_r)); //AT: (avengers061gre) - map(0xe006, 0xe006).writeonly().share("soundlatch_2"); + map(0xe006, 0xe006).r(FUNC(lwings_state::avengers_soundlatch_ack_r)).nopw(); } - void lwings_state::fball_map(address_map &map) { map(0x0000, 0x7fff).bankr("bank2"); @@ -403,12 +446,10 @@ void lwings_state::fball_map(address_map &map) } - - void lwings_state::fball_oki_bank_w(uint8_t data) { //printf("fball_oki_bank_w %02x\n", data); - membank("samplebank")->set_entry((data >> 1) & 0x7); + m_samplebank->set_entry((data >> 1) & 0x7); } void lwings_state::fball_oki_map(address_map &map) @@ -421,13 +462,9 @@ void lwings_state::fball_oki_map(address_map &map) void lwings_state::fball_sound_map(address_map &map) { map(0x0000, 0x0fff).rom(); - map(0x8000, 0x8000).r(m_soundlatch, FUNC(generic_latch_8_device::read)); - - map(0xA000, 0xA000).w(FUNC(lwings_state::fball_oki_bank_w)); - + map(0xa000, 0xa000).w(FUNC(lwings_state::fball_oki_bank_w)); map(0xc000, 0xc7ff).ram(); - map(0xe000, 0xe000).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); } @@ -451,6 +488,261 @@ void lwings_state::trojan_adpcm_io_map(address_map &map) map(0x01, 0x01).w(FUNC(lwings_state::msm5205_w)); } + +/*************************************************************************** + + Callbacks for the TileMap code + +***************************************************************************/ + +TILEMAP_MAPPER_MEMBER(lwings_state::get_bg2_memory_offset) +{ + return (row * 0x800) | (col * 2); +} + +TILE_GET_INFO_MEMBER(lwings_state::get_fg_tile_info) +{ + int code = m_fgvideoram[tile_index]; + int color = m_fgvideoram[tile_index + 0x400]; + tileinfo.set(0, + code + ((color & 0xc0) << 2), + color & 0x0f, + TILE_FLIPYX((color & 0x30) >> 4)); +} + +TILE_GET_INFO_MEMBER(lwings_state::lwings_get_bg1_tile_info) +{ + int code = m_bg1videoram[tile_index]; + int color = m_bg1videoram[tile_index + 0x400]; + tileinfo.set(1, + code + ((color & 0xe0) << 3), + color & 0x07, + TILE_FLIPYX((color & 0x18) >> 3)); +} + +TILE_GET_INFO_MEMBER(lwings_state::trojan_get_bg1_tile_info) +{ + int code = m_bg1videoram[tile_index]; + int color = m_bg1videoram[tile_index + 0x400]; + code += (color & 0xe0)<<3; + tileinfo.set(1, + code, + (color & 7), + ((color & 0x10) ? TILE_FLIPX : 0)); + + tileinfo.group = (color & 0x08) >> 3; +} + +TILE_GET_INFO_MEMBER(lwings_state::get_bg2_tile_info) +{ + int code, color; + uint8_t *rom = memregion("gfx5")->base(); + int mask = memregion("gfx5")->bytes() - 1; + + tile_index = (tile_index + m_bg2_image * 0x20) & mask; + code = rom[tile_index]; + color = rom[tile_index + 1]; + tileinfo.set(3, + code + ((color & 0x80) << 1), + color & 0x07, + TILE_FLIPYX((color & 0x30) >> 4)); +} + + +/*************************************************************************** + + Start the video hardware emulation. + +***************************************************************************/ + +void lwings_state::video_start() +{ + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::lwings_get_bg1_tile_info)), TILEMAP_SCAN_COLS, 16, 16, 32, 32); + + m_fg_tilemap->set_transparent_pen(3); +} + +VIDEO_START_MEMBER(lwings_state,trojan) +{ + m_fg_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::get_fg_tile_info)), TILEMAP_SCAN_ROWS, 8, 8, 32, 32); + m_bg1_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::trojan_get_bg1_tile_info)),TILEMAP_SCAN_COLS, 16, 16, 32, 32); + m_bg2_tilemap = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(lwings_state::get_bg2_tile_info)), tilemap_mapper_delegate(*this, FUNC(lwings_state::get_bg2_memory_offset)), 16, 16, 32, 16); + + m_fg_tilemap->set_transparent_pen(3); + m_bg1_tilemap->set_transmask(0, 0xffff, 0x0001); // split type 0 is totally transparent in front half + m_bg1_tilemap->set_transmask(1, 0xf07f, 0x0f81); // split type 1 has pens 7-11 opaque in front half + + m_spr_avenger_hw = 0; +} + +VIDEO_START_MEMBER(lwings_state,avengers) +{ + VIDEO_START_CALL_MEMBER(trojan); + m_spr_avenger_hw = 1; +} + + +/*************************************************************************** + + Memory handlers + +***************************************************************************/ + +void lwings_state::lwings_fgvideoram_w(offs_t offset, uint8_t data) +{ + m_fgvideoram[offset] = data; + m_fg_tilemap->mark_tile_dirty(offset & 0x3ff); +} + +void lwings_state::lwings_bg1videoram_w(offs_t offset, uint8_t data) +{ + m_bg1videoram[offset] = data; + m_bg1_tilemap->mark_tile_dirty(offset & 0x3ff); +} + + +void lwings_state::lwings_bg1_scrollx_w(offs_t offset, uint8_t data) +{ + m_scroll_x[offset] = data; + m_bg1_tilemap->set_scrollx(0, m_scroll_x[0] | (m_scroll_x[1] << 8)); +} + +void lwings_state::lwings_bg1_scrolly_w(offs_t offset, uint8_t data) +{ + m_scroll_y[offset] = data; + m_bg1_tilemap->set_scrolly(0, m_scroll_y[0] | (m_scroll_y[1] << 8)); +} + +void lwings_state::trojan_bg2_scrollx_w(uint8_t data) +{ + m_bg2_tilemap->set_scrollx(0, data); +} + +void lwings_state::trojan_bg2_image_w(uint8_t data) +{ + if (m_bg2_image != data) + { + m_bg2_image = data; + m_bg2_tilemap->mark_all_dirty(); + } +} + + +/*************************************************************************** + + Display refresh + +***************************************************************************/ + +inline bool lwings_state::is_sprite_on(uint8_t const *buffered_spriteram, int offs) +{ + int const sx = buffered_spriteram[offs + 3] - 0x100 * (buffered_spriteram[offs + 1] & 0x01); + int const sy = buffered_spriteram[offs + 2]; + + return sx || sy; +} + +void lwings_state::lwings_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) +{ + uint8_t const *const buffered_spriteram = m_spriteram->buffer(); + + for (int offs = m_spriteram->bytes() - 4; offs >= 0; offs -= 4) + { + if (is_sprite_on(buffered_spriteram, offs)) + { + int sx = buffered_spriteram[offs + 3] - 0x100 * (buffered_spriteram[offs + 1] & 0x01); + int sy = buffered_spriteram[offs + 2]; + if (sy > 0xf8) + sy -= 0x100; + int code = buffered_spriteram[offs] | (buffered_spriteram[offs + 1] & 0xc0) << 2; + int color = (buffered_spriteram[offs + 1] & 0x38) >> 3; + int flipx = buffered_spriteram[offs + 1] & 0x02; + int flipy = buffered_spriteram[offs + 1] & 0x04; + + if (flip_screen()) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + flipy = !flipy; + } + + m_gfxdecode->gfx(2)->transpen( + bitmap, cliprect, + code + (m_sprbank * 0x400), color, + flipx, flipy, sx, sy, + 15); + } + } +} + +void lwings_state::trojan_draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ) +{ + uint8_t const *const buffered_spriteram = m_spriteram->buffer(); + + for (int offs = m_spriteram->bytes() - 4; offs >= 0; offs -= 4) + { + if (is_sprite_on(buffered_spriteram, offs)) + { + int sx = buffered_spriteram[offs + 3] - 0x100 * (buffered_spriteram[offs + 1] & 0x01); + int sy = buffered_spriteram[offs + 2]; + if (sy > 0xf8) + sy -= 0x100; + int code = buffered_spriteram[offs] | + ((buffered_spriteram[offs + 1] & 0x20) << 4) | + ((buffered_spriteram[offs + 1] & 0x40) << 2) | + ((buffered_spriteram[offs + 1] & 0x80) << 3); + int color = (buffered_spriteram[offs + 1] & 0x0e) >> 1; + + int flipx, flipy; + if (m_spr_avenger_hw) + { + flipx = 0; /* Avengers */ + flipy = ~buffered_spriteram[offs + 1] & 0x10; + } + else + { + flipx = buffered_spriteram[offs + 1] & 0x10; /* Trojan */ + flipy = 1; + } + + if (flip_screen()) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + flipy = !flipy; + } + + m_gfxdecode->gfx(2)->transpen( + bitmap, cliprect, + code, color, + flipx, flipy, sx, sy, + 15); + } + } +} + +uint32_t lwings_state::screen_update_lwings(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg1_tilemap->draw(screen, bitmap, cliprect, 0, 0); + lwings_draw_sprites(bitmap, cliprect); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + +uint32_t lwings_state::screen_update_trojan(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + m_bg2_tilemap->draw(screen, bitmap, cliprect, 0, 0); + m_bg1_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER1, 0); + trojan_draw_sprites(bitmap, cliprect); + m_bg1_tilemap->draw(screen, bitmap, cliprect, TILEMAP_DRAW_LAYER0, 0); + m_fg_tilemap->draw(screen, bitmap, cliprect, 0, 0); + return 0; +} + + /************************************* * * Generic port definitions @@ -489,6 +781,7 @@ static INPUT_PORTS_START( lwings_generic ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) /* probably unused */ INPUT_PORTS_END + /************************************* * * Game-specific port definitions @@ -498,6 +791,10 @@ INPUT_PORTS_END static INPUT_PORTS_START( sectionz ) PORT_INCLUDE( lwings_generic ) + PORT_MODIFY("SERVICE") + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_MODIFY("P2") PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL @@ -516,12 +813,12 @@ static INPUT_PORTS_START( sectionz ) PORT_DIPSETTING( 0x0c, "3" ) PORT_DIPSETTING( 0x08, "4" ) PORT_DIPSETTING( 0x00, "5" ) - PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:4,3") + PORT_DIPNAME( 0x30, 0x30, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWA:4,3") PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) PORT_DIPSETTING( 0x20, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x30, DEF_STR( 1C_1C ) ) - PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("SWA:2,1") + PORT_DIPNAME( 0xc0, 0xc0, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("SWA:2,1") PORT_DIPSETTING( 0x00, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0xc0, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x40, DEF_STR( 1C_2C ) ) @@ -619,7 +916,6 @@ static INPUT_PORTS_START( fball ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_START3 ) PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_START4 ) - PORT_START("DSWA") // only one set of dipswitches PORT_DIPNAME( 0x01, 0x01, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("SWA:1") PORT_DIPSETTING( 0x01, DEF_STR( Easy ) ) @@ -784,6 +1080,7 @@ static INPUT_PORTS_START( avengers ) PORT_DIPSETTING( 0x00, "6" ) INPUT_PORTS_END + /************************************* * * Graphics definitions @@ -854,6 +1151,7 @@ static GFXDECODE_START( gfx_trojan ) GFXDECODE_ENTRY( "gfx4", 0, bg2_tilelayout, 0, 8 ) /* colors 0-127 */ GFXDECODE_END + /************************************* * * Machine driver @@ -864,22 +1162,21 @@ void lwings_state::machine_start() { uint8_t *ROM = memregion("maincpu")->base(); - membank("bank1")->configure_entries(0, 4, &ROM[0x10000], 0x4000); + m_bank1->configure_entries(0, 4, &ROM[0x10000], 0x4000); + + m_maincpu->space(AS_PROGRAM).specific(m_maincpu_program); save_item(NAME(m_bg2_image)); save_item(NAME(m_scroll_x)); save_item(NAME(m_scroll_y)); - save_item(NAME(m_param)); - save_item(NAME(m_palette_pen)); - save_item(NAME(m_soundstate)); save_item(NAME(m_adpcm)); save_item(NAME(m_nmi_mask)); save_item(NAME(m_sprbank)); /* - Fireball has 2 copies of the 'fixed' code in the main program rom, with only slight changes. - it might be possible the hardware can bank that whole area or alternatively only see one version of the program - the only difference is 2 pieces of code have been swapped around. It is unknown when this code is called. + Fireball has 2 copies of the 'fixed' code in the main program ROM, with only slight changes. + It might be possible the hardware can bank that whole area or alternatively only see one version of the program + The only difference is 2 pieces of code have been swapped around. It is unknown when this code is called. 3822: CD 73 3823: 00 23 @@ -904,18 +1201,23 @@ void lwings_state::machine_start() */ - if (membank("bank2")) + if (m_bank2.found()) { - membank("bank2")->configure_entries(0, 2, &ROM[0x0000], 0x8000); - membank("bank2")->set_entry(0); + m_bank2->configure_entries(0, 2, &ROM[0x0000], 0x8000); + m_bank2->set_entry(0); } - if (membank("samplebank")) + if (m_samplebank.found()) { uint8_t *OKIROM = memregion("oki")->base(); - membank("samplebank")->configure_entries(0, 8, OKIROM, 0x20000); + m_samplebank->configure_entries(0, 8, OKIROM, 0x20000); } + if (m_mcu.found()) + { + save_item(NAME(m_mcu_data)); + save_item(NAME(m_mcu_control)); + } } void lwings_state::machine_reset() @@ -925,56 +1227,50 @@ void lwings_state::machine_reset() m_scroll_x[1] = 0; m_scroll_y[0] = 0; m_scroll_y[1] = 0; - m_param[0] = 0; - m_param[1] = 0; - m_param[2] = 0; - m_param[3] = 0; - m_palette_pen = 0; - m_soundstate = 0; m_adpcm = 0; } void lwings_state::lwings(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(12'000'000)/2); /* verified on PCB */ + // basic machine hardware + Z80(config, m_maincpu, 12_MHz_XTAL/2); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_map); - Z80(config, m_soundcpu, XTAL(12'000'000)/4); /* verified on PCB */ + Z80(config, m_soundcpu, 12_MHz_XTAL/4); // verified on PCB m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::lwings_sound_map); m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); // above frequency is an approximation from PCB music recording - where is the frequency actually derived from? WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware BUFFERED_SPRITERAM8(config, m_spriteram); - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); - screen.set_screen_update(FUNC(lwings_state::screen_update_lwings)); - screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); - screen.screen_vblank().append(FUNC(lwings_state::lwings_interrupt)); - screen.set_palette(m_palette); + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); + m_screen->set_screen_update(FUNC(lwings_state::screen_update_lwings)); + m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); + m_screen->screen_vblank().append(FUNC(lwings_state::lwings_interrupt)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); - ym2203_device &ym2203a(YM2203(config, "2203a", XTAL(12'000'000)/8)); /* verified on PCB */ + ym2203_device &ym2203a(YM2203(config, "2203a", 12_MHz_XTAL/8)); // verified on PCB ym2203a.add_route(0, "mono", 0.20); ym2203a.add_route(1, "mono", 0.20); ym2203a.add_route(2, "mono", 0.20); ym2203a.add_route(3, "mono", 0.10); - ym2203_device &ym2203b(YM2203(config, "2203b", XTAL(12'000'000)/8)); /* verified on PCB */ + ym2203_device &ym2203b(YM2203(config, "2203b", 12_MHz_XTAL/8)); // verified on PCB ym2203b.add_route(0, "mono", 0.20); ym2203b.add_route(1, "mono", 0.20); ym2203b.add_route(2, "mono", 0.20); @@ -985,45 +1281,46 @@ void lwings_state::sectionz(machine_config &config) { lwings(config); - m_maincpu->set_clock(XTAL(12'000'000)/4); // XTAL and clock verified on an original PCB and on a bootleg with ROMs matching those of sectionza + m_maincpu->set_clock(12_MHz_XTAL/4); // XTAL and clock verified on an original PCB and on a bootleg with ROMs matching those of sectionza - subdevice<screen_device>("screen")->set_refresh_hz(55.37); // verified on an original PCB + m_screen->set_refresh_hz(55.37); // verified on an original PCB } void lwings_state::fball(machine_config &config) { - /* basic machine hardware */ - Z80(config, m_maincpu, XTAL(12'000'000)/2); + // basic machine hardware + Z80(config, m_maincpu, 12_MHz_XTAL/2); m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_map); - Z80(config, m_soundcpu, XTAL(12'000'000)/4); // ? + Z80(config, m_soundcpu, 12_MHz_XTAL/4); // ? m_soundcpu->set_addrmap(AS_PROGRAM, &lwings_state::fball_sound_map); -// m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); + //m_soundcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(222)); WATCHDOG_TIMER(config, "watchdog"); - /* video hardware */ + // video hardware BUFFERED_SPRITERAM8(config, m_spriteram); - screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); - screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(0)); - screen.set_size(32*8, 32*8); - screen.set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // the 16-pixel black border on left edge is correct, test mode actually uses that area - screen.set_screen_update(FUNC(lwings_state::screen_update_lwings)); - screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); - screen.screen_vblank().append(FUNC(lwings_state::avengers_interrupt)); - screen.set_palette(m_palette); + SCREEN(config, m_screen, SCREEN_TYPE_RASTER); + m_screen->set_refresh_hz(60); + m_screen->set_vblank_time(ATTOSECONDS_IN_USEC(0)); + m_screen->set_size(32*8, 32*8); + m_screen->set_visarea(0*8, 32*8-1, 1*8, 31*8-1); // the 16-pixel black border on left edge is correct, test mode actually uses that area + m_screen->set_screen_update(FUNC(lwings_state::screen_update_lwings)); + m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); + m_screen->screen_vblank().append(FUNC(lwings_state::avengers_interrupt)); + m_screen->set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_lwings); PALETTE(config, m_palette).set_format(palette_device::RGBx_444, 1024); - /* sound hardware */ + // sound hardware SPEAKER(config, "mono").front_center(); GENERIC_LATCH_8(config, m_soundlatch); + m_soundlatch->set_separate_acknowledge(true); - okim6295_device &oki(OKIM6295(config, "oki", XTAL(12'000'000)/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified + okim6295_device &oki(OKIM6295(config, "oki", 12_MHz_XTAL/12, okim6295_device::PIN7_HIGH)); // clock frequency & pin 7 not verified oki.add_route(ALL_OUTPUTS, "mono", 1.0); oki.set_addrmap(0, &lwings_state::fball_oki_map); } @@ -1032,28 +1329,28 @@ void lwings_state::trojan(machine_config &config) { lwings(config); - /* basic machine hardware */ - m_maincpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */ + // basic machine hardware + m_maincpu->set_clock(12_MHz_XTAL/4); // verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_map); - m_soundcpu->set_clock(XTAL(12'000'000)/4); /* verified on PCB */ + m_soundcpu->set_clock(12_MHz_XTAL/4); // verified on PCB - z80_device &adpcm(Z80(config, "adpcm", XTAL(12'000'000)/4)); /* verified on PCB */ - adpcm.set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map); - adpcm.set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map); - adpcm.set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000)); + Z80(config, m_adpcmcpu, 12_MHz_XTAL/4); // verified on PCB + m_adpcmcpu->set_addrmap(AS_PROGRAM, &lwings_state::trojan_adpcm_map); + m_adpcmcpu->set_addrmap(AS_IO, &lwings_state::trojan_adpcm_io_map); + m_adpcmcpu->set_periodic_int(FUNC(lwings_state::irq0_line_hold), attotime::from_hz(4000)); - /* video hardware */ + // video hardware m_gfxdecode->set_info(gfx_trojan); MCFG_VIDEO_START_OVERRIDE(lwings_state,trojan) - subdevice<screen_device>("screen")->set_screen_update(FUNC(lwings_state::screen_update_trojan)); + m_screen->set_screen_update(FUNC(lwings_state::screen_update_trojan)); - /* sound hardware */ + // sound hardware GENERIC_LATCH_8(config, "soundlatch2"); - MSM5205(config, m_msm, XTAL(384'000)); /* verified on PCB */ - m_msm->set_prescaler_selector(msm5205_device::SEX_4B); /* slave mode */ + MSM5205(config, m_msm, 384_kHz_XTAL); // verified on PCB + m_msm->set_prescaler_selector(msm5205_device::SEX_4B); // slave mode m_msm->add_route(ALL_OUTPUTS, "mono", 0.50); } @@ -1061,24 +1358,48 @@ void lwings_state::avengers(machine_config &config) { trojan(config); - /* basic machine hardware */ + // basic machine hardware + m_maincpu->set_clock(12_MHz_XTAL/2); m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::avengers_map); + m_maincpu->set_addrmap(AS_OPCODES, &lwings_state::avengers_m1_map); + + I8751(config, m_mcu, 12_MHz_XTAL/2); + m_mcu->port_in_cb<0>().set(FUNC(lwings_state::mcu_p0_r)); + m_mcu->port_out_cb<0>().set(FUNC(lwings_state::mcu_p0_w)); + m_mcu->port_in_cb<1>().set(FUNC(lwings_state::mcu_p1_r)); + m_mcu->port_in_cb<2>().set(FUNC(lwings_state::mcu_p2_r)); + m_mcu->port_out_cb<2>().set(FUNC(lwings_state::mcu_p2_w)); + m_mcu->port_out_cb<3>().set(FUNC(lwings_state::mcu_control_w)); - screen_device &screen(*subdevice<screen_device>("screen")); - screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); - screen.screen_vblank().append(FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software + config.set_maximum_quantum(attotime::from_hz(10000)); - subdevice<cpu_device>("adpcm")->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map); + GENERIC_LATCH_8(config, m_mculatch[0]); + m_mculatch[0]->data_pending_callback().set_inputline(m_mcu, MCS51_INT0_LINE); + m_mculatch[0]->data_pending_callback().append([this] (int state) { if (state) machine().scheduler().perfect_quantum(attotime::from_usec(192)); }); + m_mculatch[0]->set_separate_acknowledge(true); - /* video hardware */ + GENERIC_LATCH_8(config, m_mculatch[1]); + GENERIC_LATCH_8(config, m_mculatch[2]); + + m_screen->screen_vblank().set(m_spriteram, FUNC(buffered_spriteram8_device::vblank_copy_rising)); + m_screen->screen_vblank().append(FUNC(lwings_state::avengers_interrupt)); // RST 38h triggered by software + + m_adpcmcpu->set_addrmap(AS_IO, &lwings_state::avengers_adpcm_io_map); + + // video hardware MCFG_VIDEO_START_OVERRIDE(lwings_state,avengers) } -void lwings_state::avengersb(machine_config &config) +void lwings_state::buraikenb(machine_config &config) { avengers(config); - /* video hardware */ - MCFG_VIDEO_START_OVERRIDE(lwings_state,avengersb) + + // basic machine hardware + m_maincpu->set_addrmap(AS_PROGRAM, &lwings_state::buraikenb_map); + config.device_remove("mcu"); + config.device_remove("mculatch0"); + config.device_remove("mculatch1"); + config.device_remove("mculatch2"); } @@ -1154,34 +1475,34 @@ ROM_END ROM_START( lwingsj ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "a_06c.rom", 0x00000, 0x8000, CRC(2068a738) SHA1(1bbceee8138cdc3832a9330b967561b78b03933e) ) - ROM_LOAD( "a_07c.rom", 0x10000, 0x8000, CRC(d6a2edc4) SHA1(ce7eef643b1570cab241355bfd7c2d7adb1e74b6) ) - ROM_LOAD( "9c_lw03.bin", 0x18000, 0x8000, CRC(ec5cc201) SHA1(1043c6a9678c18fef920be91b0796c93b83e0f73) ) + ROM_LOAD( "at_01b.6c", 0x00000, 0x8000, CRC(2068a738) SHA1(1bbceee8138cdc3832a9330b967561b78b03933e) ) + ROM_LOAD( "at_02.7c", 0x10000, 0x8000, CRC(d6a2edc4) SHA1(ce7eef643b1570cab241355bfd7c2d7adb1e74b6) ) + ROM_LOAD( "at_03.9c", 0x18000, 0x8000, CRC(ec5cc201) SHA1(1043c6a9678c18fef920be91b0796c93b83e0f73) ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "11e_lw04.bin", 0x0000, 0x8000, CRC(a20337a2) SHA1(649e13a69ad9154657894fa7bf7c6e49b029a506) ) + ROM_LOAD( "at_03.11e", 0x0000, 0x8000, CRC(a20337a2) SHA1(649e13a69ad9154657894fa7bf7c6e49b029a506) ) ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "9h_lw05.bin", 0x00000, 0x4000, CRC(091d923c) SHA1(d686c860f147c4749ac1ee23cde5a7b570312622) ) /* characters */ + ROM_LOAD( "at_05.9h", 0x00000, 0x4000, CRC(091d923c) SHA1(d686c860f147c4749ac1ee23cde5a7b570312622) ) /* characters */ ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "b_03e.rom", 0x00000, 0x8000, CRC(176e3027) SHA1(31947205c7a28d25b5982a9e6c079112c404d6b4) ) /* tiles */ - ROM_LOAD( "b_01e.rom", 0x08000, 0x8000, CRC(f5d25623) SHA1(ff520df50011af5688be7e88712faa8f8436b462) ) - ROM_LOAD( "b_03d.rom", 0x10000, 0x8000, CRC(001caa35) SHA1(2042136c592ce124a321fc6d05447b13a612b6b9) ) - ROM_LOAD( "b_01d.rom", 0x18000, 0x8000, CRC(0ba008c3) SHA1(ed5c0d7191d021d6445f8f31a61eb99172fd2dc1) ) - ROM_LOAD( "b_03b.rom", 0x20000, 0x8000, CRC(4f8182e9) SHA1(d0db174995be3937f5e5fe62ffe2112583dd78d7) ) - ROM_LOAD( "b_01b.rom", 0x28000, 0x8000, CRC(f1617374) SHA1(01b77bc16c1e7d669f62adf759f820bc0241d959) ) - ROM_LOAD( "b_03f.rom", 0x30000, 0x8000, CRC(9b374dcc) SHA1(3cb4243c304579536880ced86f0118c43413c1b4) ) - ROM_LOAD( "b_01f.rom", 0x38000, 0x8000, CRC(23654e0a) SHA1(d97689b348ac4e1b380ad65133ede4bdd5ecaaee) ) + ROM_LOAD( "at_14.3e", 0x00000, 0x8000, CRC(176e3027) SHA1(31947205c7a28d25b5982a9e6c079112c404d6b4) ) /* tiles */ + ROM_LOAD( "at_08.1e", 0x08000, 0x8000, CRC(f5d25623) SHA1(ff520df50011af5688be7e88712faa8f8436b462) ) + ROM_LOAD( "at_13.3d", 0x10000, 0x8000, CRC(001caa35) SHA1(2042136c592ce124a321fc6d05447b13a612b6b9) ) + ROM_LOAD( "at_07.1d", 0x18000, 0x8000, CRC(0ba008c3) SHA1(ed5c0d7191d021d6445f8f31a61eb99172fd2dc1) ) + ROM_LOAD( "at_12.3b", 0x20000, 0x8000, CRC(4f8182e9) SHA1(d0db174995be3937f5e5fe62ffe2112583dd78d7) ) + ROM_LOAD( "at_06.1b", 0x28000, 0x8000, CRC(f1617374) SHA1(01b77bc16c1e7d669f62adf759f820bc0241d959) ) + ROM_LOAD( "at_15.3f", 0x30000, 0x8000, CRC(9b374dcc) SHA1(3cb4243c304579536880ced86f0118c43413c1b4) ) + ROM_LOAD( "at_09.1f", 0x38000, 0x8000, CRC(23654e0a) SHA1(d97689b348ac4e1b380ad65133ede4bdd5ecaaee) ) ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "b_03j.rom", 0x00000, 0x8000, CRC(8f3c763a) SHA1(b34e62ab6652a2e9783351dde6a60af38a6ba084) ) /* sprites */ - ROM_LOAD( "b_01j.rom", 0x08000, 0x8000, CRC(7cc90a1d) SHA1(ff194749397f06ad054917664bd4583b0e4e8d92) ) - ROM_LOAD( "b_03h.rom", 0x10000, 0x8000, CRC(7d58f532) SHA1(debfb14cd1cefa1f61a8650cbc9f6e0fff3abe8b) ) - ROM_LOAD( "b_01h.rom", 0x18000, 0x8000, CRC(3e396eda) SHA1(a736f108e0ed5fab6177f0d8a21feab8b686ee85) ) + ROM_LOAD( "at_17.3j", 0x00000, 0x8000, CRC(8f3c763a) SHA1(b34e62ab6652a2e9783351dde6a60af38a6ba084) ) /* sprites */ + ROM_LOAD( "at_11.1j", 0x08000, 0x8000, CRC(7cc90a1d) SHA1(ff194749397f06ad054917664bd4583b0e4e8d92) ) + ROM_LOAD( "at_16.3h", 0x10000, 0x8000, CRC(7d58f532) SHA1(debfb14cd1cefa1f61a8650cbc9f6e0fff3abe8b) ) + ROM_LOAD( "at_10.1h", 0x18000, 0x8000, CRC(3e396eda) SHA1(a736f108e0ed5fab6177f0d8a21feab8b686ee85) ) ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "63s141.15g", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "szb01.15g", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* 63s141, timing (not used) */ ROM_END @@ -1290,253 +1611,347 @@ ROM_END ROM_START( sectionz ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ ROM_LOAD( "6c_sz01.bin", 0x00000, 0x8000, CRC(69585125) SHA1(a341e3a5507e961d5763be6acf420695bb32709e) ) - ROM_LOAD( "7c_sz02.bin", 0x10000, 0x8000, CRC(22f161b8) SHA1(094ee6b6c8750de682c1ba4e387b31d58f734604) ) + ROM_LOAD( "sz_02.7c", 0x10000, 0x8000, CRC(22f161b8) SHA1(094ee6b6c8750de682c1ba4e387b31d58f734604) ) ROM_LOAD( "9c_sz03.bin", 0x18000, 0x8000, CRC(4c7111ed) SHA1(57c6ad6a86c64ffb17ec8f584c5e003440390344) ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "11e_sz04.bin", 0x0000, 0x8000, CRC(a6073566) SHA1(d7dc382ba780cc4f25f7d7e7630cff1090488843) ) + ROM_LOAD( "sz_04.11e", 0x0000, 0x8000, CRC(a6073566) SHA1(d7dc382ba780cc4f25f7d7e7630cff1090488843) ) ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "9h_sz05.bin", 0x00000, 0x4000, CRC(3173ba2e) SHA1(4e0b4fc1efd7b5eb598fe5d5d7f1de01ba52dbdc) ) /* characters */ + ROM_LOAD( "sz_05.9h", 0x00000, 0x4000, CRC(3173ba2e) SHA1(4e0b4fc1efd7b5eb598fe5d5d7f1de01ba52dbdc) ) /* characters */ ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "3e_sz14.bin", 0x00000, 0x8000, CRC(63782e30) SHA1(9a23b4849ff210bd4482e4e8c57e578387d19c46) ) /* tiles */ - ROM_LOAD( "1e_sz08.bin", 0x08000, 0x8000, CRC(d57d9f13) SHA1(1d07b9eca588985a5e0cec27394ad5b3191c8dc4) ) - ROM_LOAD( "3d_sz13.bin", 0x10000, 0x8000, CRC(1b3d4d7f) SHA1(66eed80865b2a480762cc8d9fda9e82c9c463e71) ) - ROM_LOAD( "1d_sz07.bin", 0x18000, 0x8000, CRC(f5b3a29f) SHA1(0dbf8caf09e319fb2303e7e865f55effa59c761c) ) - ROM_LOAD( "3b_sz12.bin", 0x20000, 0x8000, CRC(11d47dfd) SHA1(bc8a7369ed671ef714472ead2d17228de2567865) ) - ROM_LOAD( "1b_sz06.bin", 0x28000, 0x8000, CRC(df703b68) SHA1(ae98a718dab96f3c0e4827e78938c3984a6641d6) ) - ROM_LOAD( "3f_sz15.bin", 0x30000, 0x8000, CRC(36bb9bf7) SHA1(53f6d375947f9fb28f295935a0fe27f826234765) ) - ROM_LOAD( "1f_sz09.bin", 0x38000, 0x8000, CRC(da8f06c9) SHA1(c0eb4406cdf0d5f25bab28de8222b28da9a97943) ) + ROM_LOAD( "sz_14.3e", 0x00000, 0x8000, CRC(63782e30) SHA1(9a23b4849ff210bd4482e4e8c57e578387d19c46) ) /* tiles */ + ROM_LOAD( "sz_08.1e", 0x08000, 0x8000, CRC(d57d9f13) SHA1(1d07b9eca588985a5e0cec27394ad5b3191c8dc4) ) + ROM_LOAD( "sz_13.3d", 0x10000, 0x8000, CRC(1b3d4d7f) SHA1(66eed80865b2a480762cc8d9fda9e82c9c463e71) ) + ROM_LOAD( "sz_07.1d", 0x18000, 0x8000, CRC(f5b3a29f) SHA1(0dbf8caf09e319fb2303e7e865f55effa59c761c) ) + ROM_LOAD( "sz_12.3b", 0x20000, 0x8000, CRC(11d47dfd) SHA1(bc8a7369ed671ef714472ead2d17228de2567865) ) + ROM_LOAD( "sz_06.1b", 0x28000, 0x8000, CRC(df703b68) SHA1(ae98a718dab96f3c0e4827e78938c3984a6641d6) ) + ROM_LOAD( "sz_15.3f", 0x30000, 0x8000, CRC(36bb9bf7) SHA1(53f6d375947f9fb28f295935a0fe27f826234765) ) + ROM_LOAD( "sz_09.1f", 0x38000, 0x8000, CRC(da8f06c9) SHA1(c0eb4406cdf0d5f25bab28de8222b28da9a97943) ) ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "3j_sz17.bin", 0x00000, 0x8000, CRC(8df7b24a) SHA1(078789d0912010fa96b6f267de3ebec9beca6681) ) /* sprites */ - ROM_LOAD( "1j_sz11.bin", 0x08000, 0x8000, CRC(685d4c54) SHA1(ef580e04b6dcb0b65f12c519a4085c98ac0bc261) ) - ROM_LOAD( "3h_sz16.bin", 0x10000, 0x8000, CRC(500ff2bb) SHA1(eb20148388e5271b1fed23a536035e8490474489) ) - ROM_LOAD( "1h_sz10.bin", 0x18000, 0x8000, CRC(00b3d244) SHA1(ed923bd5371f4665744344b94df3547c5db5058c) ) + ROM_LOAD( "sz_17.3j", 0x00000, 0x8000, CRC(8df7b24a) SHA1(078789d0912010fa96b6f267de3ebec9beca6681) ) /* sprites */ + ROM_LOAD( "sz_11.1j", 0x08000, 0x8000, CRC(685d4c54) SHA1(ef580e04b6dcb0b65f12c519a4085c98ac0bc261) ) + ROM_LOAD( "sz_16.3h", 0x10000, 0x8000, CRC(500ff2bb) SHA1(eb20148388e5271b1fed23a536035e8490474489) ) + ROM_LOAD( "sz_10.1h", 0x18000, 0x8000, CRC(00b3d244) SHA1(ed923bd5371f4665744344b94df3547c5db5058c) ) ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "mb7114e.15g", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "szb01.15g", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ ROM_END ROM_START( sectionza ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "sz-01a.bin", 0x00000, 0x8000, CRC(98df49fd) SHA1(80d7d9f83ea2f606e48606dbfe69cf347aadf079) ) - ROM_LOAD( "7c_sz02.bin", 0x10000, 0x8000, CRC(22f161b8) SHA1(094ee6b6c8750de682c1ba4e387b31d58f734604) ) - ROM_LOAD( "sz-03j.bin", 0x18000, 0x8000, CRC(94547abf) SHA1(9af9e76e6657d7fd742630cfe2f2eb76d231dec4) ) + ROM_LOAD( "sz_01a.6c", 0x00000, 0x8000, CRC(98df49fd) SHA1(80d7d9f83ea2f606e48606dbfe69cf347aadf079) ) + ROM_LOAD( "sz_02.7c", 0x10000, 0x8000, CRC(22f161b8) SHA1(094ee6b6c8750de682c1ba4e387b31d58f734604) ) + ROM_LOAD( "sz_03.9c", 0x18000, 0x8000, CRC(94547abf) SHA1(9af9e76e6657d7fd742630cfe2f2eb76d231dec4) ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "11e_sz04.bin", 0x0000, 0x8000, CRC(a6073566) SHA1(d7dc382ba780cc4f25f7d7e7630cff1090488843) ) + ROM_LOAD( "sz_04.11e", 0x0000, 0x8000, CRC(a6073566) SHA1(d7dc382ba780cc4f25f7d7e7630cff1090488843) ) ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "9h_sz05.bin", 0x00000, 0x4000, CRC(3173ba2e) SHA1(4e0b4fc1efd7b5eb598fe5d5d7f1de01ba52dbdc) ) /* characters */ + ROM_LOAD( "sz_05.9h", 0x00000, 0x4000, CRC(3173ba2e) SHA1(4e0b4fc1efd7b5eb598fe5d5d7f1de01ba52dbdc) ) /* characters */ ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "3e_sz14.bin", 0x00000, 0x8000, CRC(63782e30) SHA1(9a23b4849ff210bd4482e4e8c57e578387d19c46) ) /* tiles */ - ROM_LOAD( "1e_sz08.bin", 0x08000, 0x8000, CRC(d57d9f13) SHA1(1d07b9eca588985a5e0cec27394ad5b3191c8dc4) ) - ROM_LOAD( "3d_sz13.bin", 0x10000, 0x8000, CRC(1b3d4d7f) SHA1(66eed80865b2a480762cc8d9fda9e82c9c463e71) ) - ROM_LOAD( "1d_sz07.bin", 0x18000, 0x8000, CRC(f5b3a29f) SHA1(0dbf8caf09e319fb2303e7e865f55effa59c761c) ) - ROM_LOAD( "3b_sz12.bin", 0x20000, 0x8000, CRC(11d47dfd) SHA1(bc8a7369ed671ef714472ead2d17228de2567865) ) - ROM_LOAD( "1b_sz06.bin", 0x28000, 0x8000, CRC(df703b68) SHA1(ae98a718dab96f3c0e4827e78938c3984a6641d6) ) - ROM_LOAD( "3f_sz15.bin", 0x30000, 0x8000, CRC(36bb9bf7) SHA1(53f6d375947f9fb28f295935a0fe27f826234765) ) - ROM_LOAD( "1f_sz09.bin", 0x38000, 0x8000, CRC(da8f06c9) SHA1(c0eb4406cdf0d5f25bab28de8222b28da9a97943) ) + ROM_LOAD( "sz_14.3e", 0x00000, 0x8000, CRC(63782e30) SHA1(9a23b4849ff210bd4482e4e8c57e578387d19c46) ) /* tiles */ + ROM_LOAD( "sz_08.1e", 0x08000, 0x8000, CRC(d57d9f13) SHA1(1d07b9eca588985a5e0cec27394ad5b3191c8dc4) ) + ROM_LOAD( "sz_13.3d", 0x10000, 0x8000, CRC(1b3d4d7f) SHA1(66eed80865b2a480762cc8d9fda9e82c9c463e71) ) + ROM_LOAD( "sz_07.1d", 0x18000, 0x8000, CRC(f5b3a29f) SHA1(0dbf8caf09e319fb2303e7e865f55effa59c761c) ) + ROM_LOAD( "sz_12.3b", 0x20000, 0x8000, CRC(11d47dfd) SHA1(bc8a7369ed671ef714472ead2d17228de2567865) ) + ROM_LOAD( "sz_06.1b", 0x28000, 0x8000, CRC(df703b68) SHA1(ae98a718dab96f3c0e4827e78938c3984a6641d6) ) + ROM_LOAD( "sz_15.3f", 0x30000, 0x8000, CRC(36bb9bf7) SHA1(53f6d375947f9fb28f295935a0fe27f826234765) ) + ROM_LOAD( "sz_09.1f", 0x38000, 0x8000, CRC(da8f06c9) SHA1(c0eb4406cdf0d5f25bab28de8222b28da9a97943) ) ROM_REGION( 0x20000, "gfx3", 0 ) - ROM_LOAD( "3j_sz17.bin", 0x00000, 0x8000, CRC(8df7b24a) SHA1(078789d0912010fa96b6f267de3ebec9beca6681) ) /* sprites */ - ROM_LOAD( "1j_sz11.bin", 0x08000, 0x8000, CRC(685d4c54) SHA1(ef580e04b6dcb0b65f12c519a4085c98ac0bc261) ) - ROM_LOAD( "3h_sz16.bin", 0x10000, 0x8000, CRC(500ff2bb) SHA1(eb20148388e5271b1fed23a536035e8490474489) ) - ROM_LOAD( "1h_sz10.bin", 0x18000, 0x8000, CRC(00b3d244) SHA1(ed923bd5371f4665744344b94df3547c5db5058c) ) + ROM_LOAD( "sz_17.3j", 0x00000, 0x8000, CRC(8df7b24a) SHA1(078789d0912010fa96b6f267de3ebec9beca6681) ) /* sprites */ + ROM_LOAD( "sz_11.1j", 0x08000, 0x8000, CRC(685d4c54) SHA1(ef580e04b6dcb0b65f12c519a4085c98ac0bc261) ) + ROM_LOAD( "sz_16.3h", 0x10000, 0x8000, CRC(500ff2bb) SHA1(eb20148388e5271b1fed23a536035e8490474489) ) + ROM_LOAD( "sz_10.1h", 0x18000, 0x8000, CRC(00b3d244) SHA1(ed923bd5371f4665744344b94df3547c5db5058c) ) ROM_REGION( 0x0100, "proms", 0 ) - ROM_LOAD( "mb7114e.15g", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "szb01.15g", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ ROM_END ROM_START( trojan ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ ROM_LOAD( "t4.10n", 0x00000, 0x8000, CRC(c1bbeb4e) SHA1(248ae4184d25b642b282ef44ac729c0f7952834d) ) ROM_LOAD( "t6.13n", 0x10000, 0x8000, CRC(d49592ef) SHA1(b538bac3c73f35474cc6745a4e4dc3ab6217eaac) ) - ROM_LOAD( "tb05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) + ROM_LOAD( "tb_05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) + ROM_LOAD( "tb_02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ - ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ + ROM_LOAD( "tb_01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "tb03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ + ROM_LOAD( "tb_03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "tb13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ - ROM_LOAD( "tb09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) - ROM_LOAD( "tb12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) - ROM_LOAD( "tb08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) - ROM_LOAD( "tb11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) - ROM_LOAD( "tb07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) - ROM_LOAD( "tb14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) - ROM_LOAD( "tb10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) + ROM_LOAD( "tb_13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ + ROM_LOAD( "tb_09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) + ROM_LOAD( "tb_12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) + ROM_LOAD( "tb_08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) + ROM_LOAD( "tb_11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) + ROM_LOAD( "tb_07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) + ROM_LOAD( "tb_14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) + ROM_LOAD( "tb_10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) ROM_REGION( 0x40000, "gfx3", 0 ) - ROM_LOAD( "tb18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ - ROM_LOAD( "tb16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) - ROM_LOAD( "tb17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) - ROM_LOAD( "tb15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) - ROM_LOAD( "tb22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) - ROM_LOAD( "tb20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) - ROM_LOAD( "tb21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) - ROM_LOAD( "tb19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) + ROM_LOAD( "tb_18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ + ROM_LOAD( "tb_16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) + ROM_LOAD( "tb_17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) + ROM_LOAD( "tb_15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) + ROM_LOAD( "tb_22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) + ROM_LOAD( "tb_20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) + ROM_LOAD( "tb_21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) + ROM_LOAD( "tb_19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) ROM_REGION( 0x10000, "gfx4", 0 ) - ROM_LOAD( "tb25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ - ROM_LOAD( "tb24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) + ROM_LOAD( "tb_25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ + ROM_LOAD( "tb_24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) ROM_REGION( 0x08000, "gfx5", 0 ) - ROM_LOAD( "tb23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map (had a RED strip across label) */ + ROM_LOAD( "tb_23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map */ ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ - ROM_LOAD( "mb7114e.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ + ROM_LOAD( "tbb-2.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "tbb-1.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ ROM_END ROM_START( trojana ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ ROM_LOAD( "tb4.10n", 0x00000, 0x8000, CRC(0113a551) SHA1(933ebaf73fb70772fc2cf2b9143bf00757505772) ) ROM_LOAD( "tb6.13n", 0x10000, 0x8000, CRC(aa127a5b) SHA1(0b7115c2ffe8456ef463e22d68e03a2e396abf92) ) - ROM_LOAD( "tb05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) + ROM_LOAD( "tb_05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) + ROM_LOAD( "tb_02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ - ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ + ROM_LOAD( "tb_01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "tb03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ + ROM_LOAD( "tb_03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "tb13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ - ROM_LOAD( "tb09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) - ROM_LOAD( "tb12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) - ROM_LOAD( "tb08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) - ROM_LOAD( "tb11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) - ROM_LOAD( "tb07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) - ROM_LOAD( "tb14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) - ROM_LOAD( "tb10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) + ROM_LOAD( "tb_13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ + ROM_LOAD( "tb_09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) + ROM_LOAD( "tb_12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) + ROM_LOAD( "tb_08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) + ROM_LOAD( "tb_11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) + ROM_LOAD( "tb_07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) + ROM_LOAD( "tb_14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) + ROM_LOAD( "tb_10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) ROM_REGION( 0x40000, "gfx3", 0 ) - ROM_LOAD( "tb18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ - ROM_LOAD( "tb16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) - ROM_LOAD( "tb17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) - ROM_LOAD( "tb15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) - ROM_LOAD( "tb22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) - ROM_LOAD( "tb20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) - ROM_LOAD( "tb21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) - ROM_LOAD( "tb19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) + ROM_LOAD( "tb_18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ + ROM_LOAD( "tb_16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) + ROM_LOAD( "tb_17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) + ROM_LOAD( "tb_15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) + ROM_LOAD( "tb_22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) + ROM_LOAD( "tb_20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) + ROM_LOAD( "tb_21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) + ROM_LOAD( "tb_19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) ROM_REGION( 0x10000, "gfx4", 0 ) - ROM_LOAD( "tb25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ - ROM_LOAD( "tb24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) + ROM_LOAD( "tb_25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ + ROM_LOAD( "tb_24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) ROM_REGION( 0x08000, "gfx5", 0 ) - ROM_LOAD( "tb23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map (had a RED strip across label) */ + ROM_LOAD( "tb_23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map */ ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ - ROM_LOAD( "mb7114e.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ + ROM_LOAD( "tbb-2.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "tbb-1.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ ROM_END ROM_START( trojanr ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ ROM_LOAD( "tb04.10n", 0x00000, 0x8000, CRC(92670f27) SHA1(d2cb35a9fade971770db1a58e961bc03cc3de6ff) ) ROM_LOAD( "tb06.13n", 0x10000, 0x8000, CRC(a4951173) SHA1(2d3db0ee3a1680f2cce21cf15f8bd434325d8648) ) - ROM_LOAD( "tb05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) + ROM_LOAD( "tb_05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) + ROM_LOAD( "tb_02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ - ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ + ROM_LOAD( "tb_01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "tb03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ + ROM_LOAD( "tb_03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "tb13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ - ROM_LOAD( "tb09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) - ROM_LOAD( "tb12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) - ROM_LOAD( "tb08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) - ROM_LOAD( "tb11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) - ROM_LOAD( "tb07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) - ROM_LOAD( "tb14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) - ROM_LOAD( "tb10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) + ROM_LOAD( "tb_13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ + ROM_LOAD( "tb_09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) + ROM_LOAD( "tb_12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) + ROM_LOAD( "tb_08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) + ROM_LOAD( "tb_11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) + ROM_LOAD( "tb_07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) + ROM_LOAD( "tb_14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) + ROM_LOAD( "tb_10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) ROM_REGION( 0x40000, "gfx3", 0 ) - ROM_LOAD( "tb18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ - ROM_LOAD( "tb16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) - ROM_LOAD( "tb17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) - ROM_LOAD( "tb15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) - ROM_LOAD( "tb22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) - ROM_LOAD( "tb20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) - ROM_LOAD( "tb21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) - ROM_LOAD( "tb19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) + ROM_LOAD( "tb_18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ + ROM_LOAD( "tb_16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) + ROM_LOAD( "tb_17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) + ROM_LOAD( "tb_15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) + ROM_LOAD( "tb_22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) + ROM_LOAD( "tb_20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) + ROM_LOAD( "tb_21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) + ROM_LOAD( "tb_19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) ROM_REGION( 0x10000, "gfx4", 0 ) - ROM_LOAD( "tb25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ - ROM_LOAD( "tb24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) + ROM_LOAD( "tb_25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ + ROM_LOAD( "tb_24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) ROM_REGION( 0x08000, "gfx5", 0 ) - ROM_LOAD( "tb23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map (had a RED strip across label) */ + ROM_LOAD( "tb_23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map */ ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ - ROM_LOAD( "mb7114e.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ + ROM_LOAD( "tbb-2.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "tbb-1.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ ROM_END ROM_START( trojanj ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "troj-04.10n", 0x00000, 0x8000, CRC(0b5a7f49) SHA1(eebdfaf905a2b7ac8a0f0f9a7ae4a0daf130a5ea) ) - ROM_LOAD( "troj-06.13n", 0x10000, 0x8000, CRC(dee6ed92) SHA1(80aa16f2ae23581d00f4d58a2075993e7171ed0c) ) - ROM_LOAD( "tb05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) + ROM_LOAD( "tb_04.10n", 0x00000, 0x8000, CRC(0b5a7f49) SHA1(eebdfaf905a2b7ac8a0f0f9a7ae4a0daf130a5ea) ) + ROM_LOAD( "tb_06.13n", 0x10000, 0x8000, CRC(dee6ed92) SHA1(80aa16f2ae23581d00f4d58a2075993e7171ed0c) ) + ROM_LOAD( "tb_05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "tb_02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) + + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ + ROM_LOAD( "tb_01.6d", 0x0000, 0x8000, CRC(83c715b2) SHA1(0c69c086657f91828a639ff7c72c703a27ade710) ) // Real board is use 27c256 + + ROM_REGION( 0x04000, "gfx1", 0 ) + ROM_LOAD( "tb_03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ + + ROM_REGION( 0x40000, "gfx2", 0 ) + ROM_LOAD( "tb_13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ + ROM_LOAD( "tb_09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) + ROM_LOAD( "tb_12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) + ROM_LOAD( "tb_08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) + ROM_LOAD( "tb_11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) + ROM_LOAD( "tb_07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) + ROM_LOAD( "tb_14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) + ROM_LOAD( "tb_10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) + + ROM_REGION( 0x40000, "gfx3", 0 ) + ROM_LOAD( "tb_18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ + ROM_LOAD( "tb_16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) + ROM_LOAD( "tb_17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) + ROM_LOAD( "tb_15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) + ROM_LOAD( "tb_22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) + ROM_LOAD( "tb_20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) + ROM_LOAD( "tb_21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) + ROM_LOAD( "tb_19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) + + ROM_REGION( 0x10000, "gfx4", 0 ) + ROM_LOAD( "tb_25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ + ROM_LOAD( "tb_24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) + + ROM_REGION( 0x08000, "gfx5", 0 ) + ROM_LOAD( "tb_23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map */ + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "tbb-2.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "tbb-1.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ +ROM_END + +ROM_START( trojanjo ) + ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ + ROM_LOAD( "tb_04.10n", 0x00000, 0x8000, CRC(134dc35b) SHA1(6360c1efa7c4e1d6d817a97ca43dd4af8ed6afe5) ) + ROM_LOAD( "tb_06.13n", 0x10000, 0x8000, CRC(fdda9d55) SHA1(5c2b84418ada1b9bfd548ca23939a6b20613a63a) ) + ROM_LOAD( "tb_05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) + + ROM_REGION( 0x10000, "soundcpu", 0 ) + ROM_LOAD( "tb_02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) + + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ + ROM_LOAD( "tb_01.6d", 0x0000, 0x8000, CRC(83c715b2) SHA1(0c69c086657f91828a639ff7c72c703a27ade710) ) // Real board is use 27c256 + + ROM_REGION( 0x04000, "gfx1", 0 ) + ROM_LOAD( "tb_03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ + + ROM_REGION( 0x40000, "gfx2", 0 ) + ROM_LOAD( "tb_13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ + ROM_LOAD( "tb_09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) + ROM_LOAD( "tb_12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) + ROM_LOAD( "tb_08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) + ROM_LOAD( "tb_11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) + ROM_LOAD( "tb_07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) + ROM_LOAD( "tb_14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) + ROM_LOAD( "tb_10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) + + ROM_REGION( 0x40000, "gfx3", 0 ) + ROM_LOAD( "tb_18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ + ROM_LOAD( "tb_16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) + ROM_LOAD( "tb_17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) + ROM_LOAD( "tb_15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) + ROM_LOAD( "tb_22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) + ROM_LOAD( "tb_20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) + ROM_LOAD( "tb_21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) + ROM_LOAD( "tb_19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) + + ROM_REGION( 0x10000, "gfx4", 0 ) + ROM_LOAD( "tb_25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ + ROM_LOAD( "tb_24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) + + ROM_REGION( 0x08000, "gfx5", 0 ) + ROM_LOAD( "tb_23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map */ + + ROM_REGION( 0x0200, "proms", 0 ) + ROM_LOAD( "tbb-2.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "tbb-1.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ +ROM_END + +ROM_START( trojanlt ) // titled Trojan but only shows Capcom like the Japanese version, instead of Capcom USA like the other US sets + ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ + ROM_LOAD( "tb04.10n", 0x00000, 0x8000, CRC(52a4f8a1) SHA1(169097096189bc9ee54e1504cd16256adbd447f9) ) // SLDH + ROM_LOAD( "tb06.13n", 0x10000, 0x8000, CRC(ef182e53) SHA1(20e65763ca18b1431e903dd41716a157ef1be28a) ) // SLDH + ROM_LOAD( "tb_05.12n", 0x18000, 0x8000, CRC(9273b264) SHA1(ab23b16bf53b5baf106ea0cac50754aa967300cf) ) ROM_REGION( 0x10000, "soundcpu", 0 ) - ROM_LOAD( "tb02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) + ROM_LOAD( "tb_02.15h", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ - ROM_LOAD( "tb01.6d", 0x0000, 0x4000, CRC(1c0f91b2) SHA1(163bf6aa1936994659661653eabdc368199b0070) ) + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ + ROM_LOAD( "tb01.3f", 0x0000, 0x8000, CRC(83c715b2) SHA1(0c69c086657f91828a639ff7c72c703a27ade710) ) // 1xxxxxxxxxxxxxx = 0xFF ROM_REGION( 0x04000, "gfx1", 0 ) - ROM_LOAD( "tb03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ + ROM_LOAD( "tb_03.8k", 0x00000, 0x4000, CRC(581a2b4c) SHA1(705b499da5d01a946f06234a4bab72a291c79034) ) /* characters */ ROM_REGION( 0x40000, "gfx2", 0 ) - ROM_LOAD( "tb13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ - ROM_LOAD( "tb09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) - ROM_LOAD( "tb12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) - ROM_LOAD( "tb08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) - ROM_LOAD( "tb11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) - ROM_LOAD( "tb07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) - ROM_LOAD( "tb14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) - ROM_LOAD( "tb10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) + ROM_LOAD( "tb_13.6b", 0x00000, 0x8000, CRC(285a052b) SHA1(8ce055c7ac9ce1560552fc7f857f60e7a5af0779) ) /* tiles */ + ROM_LOAD( "tb_09.6a", 0x08000, 0x8000, CRC(aeb693f7) SHA1(a811ea67abdd4adfc68224257973802e2a36fc36) ) + ROM_LOAD( "tb_12.4b", 0x10000, 0x8000, CRC(dfb0fe5c) SHA1(82542692ab71b9126e6c301ed0803db58734273c) ) + ROM_LOAD( "tb_08.4a", 0x18000, 0x8000, CRC(d3a4c9d1) SHA1(3d787f6a4583b80f2d254947890f676cda17b242) ) + ROM_LOAD( "tb_11.3b", 0x20000, 0x8000, CRC(00f0f4fd) SHA1(3a862360a26ae1c3a945949d6d47f88aa4b728a4) ) + ROM_LOAD( "tb_07.3a", 0x28000, 0x8000, CRC(dff2ee02) SHA1(4877c52f2a0e24a95bcda1d8636ea993c2c3c240) ) + ROM_LOAD( "tb_14.8b", 0x30000, 0x8000, CRC(14bfac18) SHA1(84266140e9679912dbbb185fd3b9b497297dcb16) ) + ROM_LOAD( "tb_10.8a", 0x38000, 0x8000, CRC(71ba8a6d) SHA1(53ff6850f9f8a19c57c19ef56fd45975f0ec133e) ) ROM_REGION( 0x40000, "gfx3", 0 ) - ROM_LOAD( "tb18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ - ROM_LOAD( "tb16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) - ROM_LOAD( "tb17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) - ROM_LOAD( "tb15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) - ROM_LOAD( "tb22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) - ROM_LOAD( "tb20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) - ROM_LOAD( "tb21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) - ROM_LOAD( "tb19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) + ROM_LOAD( "tb_18.7l", 0x00000, 0x8000, CRC(862c4713) SHA1(a3707d950f4f5de5208e64207016ef2256eb8c5b) ) /* sprites */ + ROM_LOAD( "tb_16.3l", 0x08000, 0x8000, CRC(d86f8cbd) SHA1(8a16130632e20ad3cae8e817da7b661c3ac60f30) ) + ROM_LOAD( "tb_17.5l", 0x10000, 0x8000, CRC(12a73b3f) SHA1(6bb54d4fdf01fd2cdd76a0b47be4d8cae8a1e19b) ) + ROM_LOAD( "tb_15.2l", 0x18000, 0x8000, CRC(bb1a2769) SHA1(9884dceb00e6d88908a1c107b83cc1711b0cf1f7) ) + ROM_LOAD( "tb_22.7n", 0x20000, 0x8000, CRC(39daafd4) SHA1(1e49a273f51cccec3141d540032fd9a3041a3cbd) ) + ROM_LOAD( "tb_20.3n", 0x28000, 0x8000, CRC(94615d2a) SHA1(112a299ff1bb878cf7e24c2ad337440c3df0a6d5) ) + ROM_LOAD( "tb_21.5n", 0x30000, 0x8000, CRC(66c642bd) SHA1(b57f0f8d8e21c9f94ffc0e9f9304b5ab5d4ed3fc) ) + ROM_LOAD( "tb_19.2n", 0x38000, 0x8000, CRC(81d5ab36) SHA1(31103759676a8d1badaf7bde79e7f28d69486106) ) ROM_REGION( 0x10000, "gfx4", 0 ) - ROM_LOAD( "tb25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ - ROM_LOAD( "tb24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) + ROM_LOAD( "tb_25.15n", 0x00000, 0x8000, CRC(6e38c6fa) SHA1(c51228d5d063dcf4361c76fa49dbe18db80c50a0) ) /* Bk Tiles */ + ROM_LOAD( "tb_24.13n", 0x08000, 0x8000, CRC(14fc6cf2) SHA1(080a2d845cb36c637f76d8e062725bd13dd1aed0) ) ROM_REGION( 0x08000, "gfx5", 0 ) - ROM_LOAD( "tb23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map */ + ROM_LOAD( "tb_23.9n", 0x00000, 0x08000, CRC(eda13c0e) SHA1(806f0819af8b25c2b46de3d1fd95bc9c0e883bd9) ) /* Tile Map */ ROM_REGION( 0x0200, "proms", 0 ) - ROM_LOAD( "tbp24s10.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ - ROM_LOAD( "mb7114e.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ + ROM_LOAD( "tbb-2.7j", 0x0000, 0x0100, CRC(d96bcc98) SHA1(99e69a624d5586e5eedacd2083fa68b36e7b5e40) ) /* timing (not used) */ + ROM_LOAD( "tbb-1.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ ROM_END ROM_START( trojanb ) @@ -1548,7 +1963,7 @@ ROM_START( trojanb ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "2.6q", 0x0000, 0x8000, CRC(21154797) SHA1(e1a3006746cc2d692ecd4369cc0a77c596abd60b) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* 64k for ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* 64k for ADPCM CPU */ ROM_LOAD( "1.3f", 0x0000, 0x8000, CRC(83c715b2) SHA1(0c69c086657f91828a639ff7c72c703a27ade710) ) // different ROM_REGION( 0x04000, "gfx1", 0 ) @@ -1597,6 +2012,18 @@ It was common for Capcom to use the same ROM label across regional sets but add with and without the "U" being stamped. */ + +// there is definitely at least one bad opcode in this dump, there could be others affecting enemy movement +#define AVENGERS_MCU \ + ROM_REGION( 0x1000, "mcu", 0 ) /* Intel C8751H - 88 */ \ + ROM_LOAD( "av.13k", 0x0000, 0x1000, BAD_DUMP CRC(505a0987) SHA1(ea1d855a9870d79d0e00eaa88a23038355a1203a) ) \ + ROM_FILL(0x0b84, 0x01, 0x02) /* bad code! bit 0x80 was flipped */ \ + /* these palette entries look wrong, but the low bit is unused, so could just be like that */ \ + ROM_FILL(0x0481, 0x01, 0x00) \ + ROM_FILL(0x04e0, 0x01, 0x00) \ + ROM_FILL(0x0483, 0x01, 0xa0) \ + ROM_FILL(0x04c3, 0x01, 0x30) + ROM_START( avengers ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ ROM_LOAD( "avu_04c.10n", 0x00000, 0x8000, CRC(4555b925) SHA1(49829272b23a39798bcaeb6d847a4091031b3dec) ) /* Red stripe across label for US region */ @@ -1606,11 +2033,10 @@ ROM_START( avengers ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ - ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + AVENGERS_MCU ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1656,11 +2082,10 @@ ROM_START( avengersa ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ - ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + AVENGERS_MCU ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1706,11 +2131,10 @@ ROM_START( avengersb ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ - ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + AVENGERS_MCU ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1756,11 +2180,10 @@ ROM_START( avengersc ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ - ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + AVENGERS_MCU ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1806,11 +2229,10 @@ ROM_START( buraiken ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "av_02.15h", 0x0000, 0x8000, CRC(107a2e17) SHA1(5aae2f4ac9f15ccb4122f3ba9fba588438d62f4f) ) /* ?? */ - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ - ROM_REGION( 0x1000, "mcu", 0 ) // Intel C8751H-88 - ROM_LOAD( "av.13k", 0x0000, 0x1000, NO_DUMP ) + AVENGERS_MCU ROM_REGION( 0x08000, "gfx1", 0 ) ROM_LOAD( "av_03.8k", 0x00000, 0x8000, CRC(efb5883e) SHA1(08aebf579f2c5ff472db66597cde1c6871d7d757) ) /* characters */ @@ -1849,14 +2271,14 @@ ROM_END ROM_START( buraikenb ) ROM_REGION( 0x20000, "maincpu", 0 ) /* 64k for code + 3*16k for the banked ROMs images */ - ROM_LOAD( "a4", 0x00000, 0x8000, CRC(b4ac7928) SHA1(4a525532f634dd9e800dc3dbd1230a5c431f869a) ) - ROM_LOAD( "a6", 0x10000, 0x8000, CRC(b1c6d40d) SHA1(d150adace829130ebf99b8beeedde0e673124984) ) - ROM_LOAD( "av_05.12n", 0x18000, 0x8000, CRC(9a214b42) SHA1(e13d47dcf9fa055fef467a10751badffcc3b8734) ) + ROM_LOAD( "a4", 0x00000, 0x8000, CRC(b4ac7928) SHA1(4a525532f634dd9e800dc3dbd1230a5c431f869a) ) + ROM_LOAD( "a6", 0x10000, 0x8000, CRC(b1c6d40d) SHA1(d150adace829130ebf99b8beeedde0e673124984) ) + ROM_LOAD( "av_05.12n", 0x18000, 0x8000, CRC(9a214b42) SHA1(e13d47dcf9fa055fef467a10751badffcc3b8734) ) ROM_REGION( 0x10000, "soundcpu", 0 ) ROM_LOAD( "a2", 0x0000, 0x8000, CRC(5e991c96) SHA1(1866f38043f61244b65213544fa5ec5d6d82f96f) ) - ROM_REGION( 0x10000, "adpcm", 0 ) /* ADPCM CPU */ + ROM_REGION( 0x10000, "adpcmcpu", 0 ) /* ADPCM CPU */ ROM_LOAD( "av_01.6d", 0x0000, 0x8000, CRC(c1e5d258) SHA1(88ed978e6df72ce22f9371930360aa9cde73abe9) ) /* adpcm player - "Talker" ROM */ ROM_REGION( 0x08000, "gfx1", 0 ) @@ -1894,12 +2316,7 @@ ROM_START( buraikenb ) ROM_LOAD( "tbb_1bpr.1e", 0x0100, 0x0100, CRC(5052fa9d) SHA1(8cd240f4795a7ae76499573c09069dba37182be2) ) /* priority (not used) */ ROM_END - -void lwings_state::init_avengersb() -{ - // set up protection handlers - m_maincpu->space(AS_PROGRAM).install_write_handler(0xf80c, 0xf80c, write8smo_delegate(*m_soundlatch, FUNC(generic_latch_8_device::write))); -} +} // anonymous namespace /************************************* @@ -1908,27 +2325,29 @@ void lwings_state::init_avengersb() * *************************************/ -GAME( 1985, sectionz, 0, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, sectionza, sectionz, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 2)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1986, lwings, 0, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwings2, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsj, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsja, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan, rev. A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, lwingsb, lwings, lwings, lwingsb, lwings_state, empty_init, ROT90, "bootleg", "Legendary Wings (bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1986, trojan, 0, trojan, trojanls, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojana, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanr, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom (Romstar license)", "Trojan (Romstar)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanj, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Tatakai no Banka (Japan)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, trojanb, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "bootleg", "Trojan (bootleg)", MACHINE_SUPPORTS_SAVE ) - -GAME( 1987, avengers, 0, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision C)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengersa, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengersb, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, avengersc, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, unknown revision)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, buraiken, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Hissatsu Buraiken (Japan, revision A)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, buraikenb, avengers, avengersb, avengers, lwings_state, init_avengersb, ROT90, "Capcom", "Hissatsu Buraiken (Japan, bootleg?)", MACHINE_SUPPORTS_SAVE ) // unprotected at least +GAME( 1985, sectionz, 0, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, sectionza, sectionz, sectionz, sectionz, lwings_state, empty_init, ROT0, "Capcom", "Section Z (set 2 rev. A)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1986, lwings, 0, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwings2, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Legendary Wings (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsj, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan, rev. B)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsja, lwings, lwings, lwings, lwings_state, empty_init, ROT90, "Capcom", "Ares no Tsubasa (Japan, rev. A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, lwingsb, lwings, lwings, lwingsb, lwings_state, empty_init, ROT90, "bootleg", "Legendary Wings (bootleg)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1986, trojan, 0, trojan, trojanls, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojana, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Trojan (US set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanr, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom (Romstar license)", "Trojan (Romstar)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanj, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Tatakai no Banka (Japan)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanjo, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Tatakai no Banka (Japan, old ver.)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanb, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "bootleg", "Trojan (bootleg)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, trojanlt, trojan, trojan, trojan, lwings_state, empty_init, ROT0, "Capcom", "Trojan (location test)", MACHINE_SUPPORTS_SAVE ) + +GAME( 1987, avengers, 0, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengersa, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, revision A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengersb, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, avengersc, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Avengers (US, unknown revision)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, buraiken, avengers, avengers, avengers, lwings_state, empty_init, ROT90, "Capcom", "Hissatsu Buraiken (Japan, rev. A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, buraikenb, avengers, buraikenb, avengers, lwings_state, empty_init, ROT90, "bootleg", "Hissatsu Buraiken (Japan, bootleg)", MACHINE_SUPPORTS_SAVE ) // cloned lwings hardware -GAME( 1992, fball, 0, fball, fball, lwings_state, empty_init, ROT0, "FM Work", "Fire Ball (FM Work)", MACHINE_SUPPORTS_SAVE ) +GAME( 1992, fball, 0, fball, fball, lwings_state, empty_init, ROT0, "FM Work", "Fire Ball (FM Work)", MACHINE_SUPPORTS_SAVE ) |