diff options
Diffstat (limited to 'src/mame/nichibutsu/terracre.cpp')
-rw-r--r-- | src/mame/nichibutsu/terracre.cpp | 715 |
1 files changed, 547 insertions, 168 deletions
diff --git a/src/mame/nichibutsu/terracre.cpp b/src/mame/nichibutsu/terracre.cpp index 66cbbd2519c..0e161f2bd3e 100644 --- a/src/mame/nichibutsu/terracre.cpp +++ b/src/mame/nichibutsu/terracre.cpp @@ -1,5 +1,6 @@ // license:BSD-3-Clause -// copyright-holders:Carlos A. Lozano +// copyright-holders: Carlos A. Lozano + /****************************************************************** Terra Cresta (preliminary) Nichibutsu 1985 @@ -81,18 +82,300 @@ AT-2 */ #include "emu.h" -#include "terracre.h" + +#include "nb1412m2.h" #include "cpu/m68000/m68000.h" #include "cpu/z80/z80.h" +#include "machine/gen_latch.h" +#include "machine/rescap.h" #include "sound/dac.h" +#include "sound/flt_biquad.h" +#include "sound/mixer.h" #include "sound/ymopn.h" #include "sound/ymopl.h" +#include "video/bufsprite.h" + +#include "emupal.h" #include "screen.h" #include "speaker.h" +#include "tilemap.h" + + +namespace { + +class terracre_state : public driver_device +{ +public: + terracre_state(const machine_config &mconfig, device_type type, const char *tag) + : driver_device(mconfig, type, tag) + , m_maincpu(*this, "maincpu") + , m_audiocpu(*this, "audiocpu") + , m_gfxdecode(*this, "gfxdecode") + , m_palette(*this, "palette") + , m_spriteram(*this, "spriteram") + , m_soundlatch(*this, "soundlatch") + , m_dacfilter1(*this, "dacfilter1") + , m_dacfilter2(*this, "dacfilter2") + , m_ymfilter(*this, "ymfilter") + , m_ssgmixer(*this, "ssgmixer") + , m_ssgfilter_abfilt(*this, "ssg_abfilt") + , m_ssgfilter_abgain(*this, "ssg_abgain") + , m_ssgfilter_cgain(*this, "ssg_cgain") + , m_bg_videoram(*this, "bg_videoram") + , m_fg_videoram(*this, "fg_videoram") + , m_coltable(*this, "palbank_prom") + { } + + void amazon_base(machine_config &config); + void horekidb2(machine_config &config); + void tc_base(machine_config &config); + void ym2203(machine_config &config); + void ym3526(machine_config &config); + +protected: + virtual void video_start() override; + + required_device<cpu_device> m_maincpu; + required_device<cpu_device> m_audiocpu; + + void amazon_base_map(address_map &map); + +private: + required_device<gfxdecode_device> m_gfxdecode; + required_device<palette_device> m_palette; + required_device<buffered_spriteram16_device> m_spriteram; + required_device<generic_latch_8_device> m_soundlatch; + required_device<filter_biquad_device> m_dacfilter1; + required_device<filter_biquad_device> m_dacfilter2; + required_device<filter_biquad_device> m_ymfilter; + optional_device<mixer_device> m_ssgmixer; + optional_device<filter_biquad_device> m_ssgfilter_abfilt; + optional_device<filter_biquad_device> m_ssgfilter_abgain; + optional_device<filter_biquad_device> m_ssgfilter_cgain; + + required_shared_ptr<uint16_t> m_bg_videoram; + required_shared_ptr<uint16_t> m_fg_videoram; + required_region_ptr<uint8_t> m_coltable; + + uint16_t m_xscroll = 0; + uint16_t m_yscroll = 0; + tilemap_t *m_background = nullptr; + tilemap_t *m_foreground = nullptr; + + void sound_w(uint16_t data); + uint8_t soundlatch_clear_r(); + void background_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void foreground_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void flipscreen_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void scrolly_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + void scrollx_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); + TILE_GET_INFO_MEMBER(get_bg_tile_info); + TILE_GET_INFO_MEMBER(get_fg_tile_info); + void palette(palette_device &palette) const; + uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + void draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect); + + void horekidb2_map(address_map &map); + void sound_2203_io_map(address_map &map); + void sound_3526_io_map(address_map &map); + void sound_map(address_map &map); + void terracre_map(address_map &map); +}; + +class amazon_state : public terracre_state +{ +public: + amazon_state(const machine_config &mconfig, device_type type, const char *tag) : + terracre_state(mconfig, type, tag), + m_prot(*this, "prot_chip") + { } + + void amazon_1412m2(machine_config &config); + +private: + required_device<nb1412m2_device> m_prot; + + void amazon_1412m2_map(address_map &map); +}; + + +TILE_GET_INFO_MEMBER(terracre_state::get_bg_tile_info) +{ + /* xxxx.----.----.---- + * ----.xx--.----.---- + * ----.--xx.xxxx.xxxx */ + const unsigned data = m_bg_videoram[tile_index]; + const unsigned color = data >> 11; + tileinfo.set(1, data & 0x3ff, color, 0); +} + +TILE_GET_INFO_MEMBER(terracre_state::get_fg_tile_info) +{ + const unsigned data = m_fg_videoram[tile_index]; + tileinfo.set(0, data & 0xff, 0, 0); +} + +void terracre_state::draw_sprites(bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + gfx_element *pGfx = m_gfxdecode->gfx(2); + const uint16_t *pSource = m_spriteram->buffer(); + const int flip = flip_screen(); + int transparent_pen; + + if (pGfx->elements() > 0x200) + transparent_pen = 0xf; // HORE HORE Kid + else + transparent_pen = 0x0; + + for (int i = 0; i < 0x200; i += 8) + { + int tile = pSource[1] & 0xff; + const int attrs = pSource[2]; + int flipx = attrs & 0x04; + int flipy = attrs & 0x08; + int color = (attrs & 0xf0) >> 4; + int sx = (pSource[3] & 0xff) - 0x80 + 256 * (attrs & 1); + int sy = 240 - (pSource[0] & 0xff); + + if (transparent_pen) + { + if (attrs & 0x02) tile |= 0x200; + if (attrs & 0x10) tile |= 0x100; + + int bank = (tile & 0xfc) >> 1; + if (tile & 0x200) bank |= 0x80; + if (tile & 0x100) bank |= 0x01; + + color &= 0xe; + color += 16 * (m_coltable[bank] & 0xf); + } + else + { + if (attrs & 0x02) tile|= 0x100; + color += 16 * (m_coltable[(tile >> 1) & 0xff] & 0x0f); + } + + if (flip) + { + sx = 240 - sx; + sy = 240 - sy; + flipx = !flipx; + flipy = !flipy; + } + + pGfx->transpen(bitmap, cliprect, tile, color, flipx, flipy, sx, sy, transparent_pen); + + pSource += 4; + } +} + +void terracre_state::palette(palette_device &palette) const +{ + const uint8_t *color_prom = memregion("proms")->base(); + + // create a lookup table for the palette + for (int i = 0; i < 0x100; i++) + { + int const r = pal4bit(color_prom[i + 0x000]); + int const g = pal4bit(color_prom[i + 0x100]); + int const b = pal4bit(color_prom[i + 0x200]); + + palette.set_indirect_color(i, rgb_t(r, g, b)); + } + + // color_prom now points to the beginning of the lookup table + color_prom += 0x300; + + // characters use colors 0-0x0f + for (int i = 0; i < 0x10; i++) + palette.set_pen_indirect(i, i); + + // background tiles use colors 0xc0-0xff in four banks + // the bottom two bits of the color code select the palette bank for pens 0-7; + // the top two bits for pens 8-0x0f. + for (int i = 0; i < 0x100; i++) + { + uint8_t const ctabentry = 0xc0 | (i & 0x0f) | ((i >> ((i & 0x08) ? 2 : 0)) & 0x30); + + palette.set_pen_indirect(0x10 + i, ctabentry); + } + + // sprites use colors 128-191 in four banks + // The lookup table tells which colors to pick from the selected bank + // the bank is selected by another PROM and depends on the top 8 bits of the sprite code. + // The PROM selects the bank *separately* for pens 0-7 and 8-15 (like for tiles). + for (int i = 0; i < 0x1000; i++) + { + uint8_t const ctabentry = 0x80 | ((i << ((i & 0x80) ? 2 : 4)) & 0x30) | (color_prom[i >> 4] & 0x0f); + int i_swapped = ((i & 0x0f) << 8) | ((i & 0xff0) >> 4); + + palette.set_pen_indirect(0x110 + i_swapped, ctabentry); + } +} + +void terracre_state::background_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_bg_videoram[offset]); + m_background->mark_tile_dirty(offset); +} + +void terracre_state::foreground_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_fg_videoram[offset]); + m_foreground->mark_tile_dirty(offset); +} + +void terracre_state::flipscreen_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + if (ACCESSING_BITS_0_7) + { + machine().bookkeeping().coin_counter_w(0, data & 0x01); + machine().bookkeeping().coin_counter_w(1, (data & 0x02) >> 1); + flip_screen_set(data & 0x04); + } +} + +void terracre_state::scrolly_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_yscroll); + m_background->set_scrolly(0, m_yscroll); +} + +void terracre_state::scrollx_w(offs_t offset, uint16_t data, uint16_t mem_mask) +{ + COMBINE_DATA(&m_xscroll); + m_background->set_scrollx(0, m_xscroll); +} + +void terracre_state::video_start() +{ + m_background = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(terracre_state::get_bg_tile_info)), TILEMAP_SCAN_COLS, 16,16, 64,32); + m_foreground = &machine().tilemap().create(*m_gfxdecode, tilemap_get_info_delegate(*this, FUNC(terracre_state::get_fg_tile_info)), TILEMAP_SCAN_COLS, 8, 8, 64,32); + m_foreground->set_transparent_pen(0xf); + + // register for saving + save_item(NAME(m_xscroll)); + save_item(NAME(m_yscroll)); +} + +uint32_t terracre_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +{ + if (m_xscroll & 0x2000) + bitmap.fill(m_palette->black_pen(), cliprect); + else + m_background->draw(screen, bitmap, cliprect, 0, 0); + + draw_sprites(bitmap, cliprect); + + if ((m_xscroll & 0x1000) == 0) + m_foreground->draw(screen, bitmap, cliprect, 0, 0); + + return 0; +} -void terracre_state::amazon_sound_w(uint16_t data) +void terracre_state::sound_w(uint16_t data) { m_soundlatch->write(((data & 0x7f) << 1) | 1); } @@ -108,19 +391,19 @@ void terracre_state::terracre_map(address_map &map) map(0x000000, 0x01ffff).rom(); map(0x020000, 0x0201ff).ram().share("spriteram"); map(0x020200, 0x021fff).ram(); - map(0x022000, 0x022fff).w(FUNC(terracre_state::amazon_background_w)).share("bg_videoram"); + map(0x022000, 0x022fff).w(FUNC(terracre_state::background_w)).share(m_bg_videoram); map(0x023000, 0x023fff).ram(); map(0x024000, 0x024001).portr("P1"); map(0x024002, 0x024003).portr("P2"); map(0x024004, 0x024005).portr("SYSTEM"); map(0x024006, 0x024007).portr("DSW"); - map(0x026000, 0x026001).w(FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */ - map(0x026002, 0x026003).w(FUNC(terracre_state::amazon_scrollx_w)); - map(0x026004, 0x026005).nopr().w(FUNC(terracre_state::amazon_scrolly_w)); + map(0x026000, 0x026001).w(FUNC(terracre_state::flipscreen_w)); // flip screen & coin counters + map(0x026002, 0x026003).w(FUNC(terracre_state::scrollx_w)); + map(0x026004, 0x026005).nopr().w(FUNC(terracre_state::scrolly_w)); map(0x02600a, 0x02600b).noprw(); // video related - map(0x02600c, 0x02600d).w(FUNC(terracre_state::amazon_sound_w)); + map(0x02600c, 0x02600d).w(FUNC(terracre_state::sound_w)); map(0x02600e, 0x02600f).noprw(); // video related - map(0x028000, 0x0287ff).ram().w(FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram"); + map(0x028000, 0x0287ff).ram().w(FUNC(terracre_state::foreground_w)).share(m_fg_videoram); } void terracre_state::amazon_base_map(address_map &map) @@ -128,18 +411,18 @@ void terracre_state::amazon_base_map(address_map &map) map(0x000000, 0x01ffff).rom(); map(0x040000, 0x0401ff).ram().share("spriteram"); map(0x040200, 0x040fff).ram(); - map(0x042000, 0x042fff).w(FUNC(terracre_state::amazon_background_w)).share("bg_videoram"); + map(0x042000, 0x042fff).w(FUNC(terracre_state::background_w)).share(m_bg_videoram); map(0x044000, 0x044001).portr("IN0"); map(0x044002, 0x044003).portr("IN1"); map(0x044004, 0x044005).portr("IN2"); map(0x044006, 0x044007).portr("IN3"); - map(0x046000, 0x046001).w(FUNC(terracre_state::amazon_flipscreen_w)); /* flip screen & coin counters */ - map(0x046002, 0x046003).w(FUNC(terracre_state::amazon_scrollx_w)); - map(0x046004, 0x046005).nopr().w(FUNC(terracre_state::amazon_scrolly_w)); + map(0x046000, 0x046001).w(FUNC(terracre_state::flipscreen_w)); // flip screen & coin counters + map(0x046002, 0x046003).w(FUNC(terracre_state::scrollx_w)); + map(0x046004, 0x046005).nopr().w(FUNC(terracre_state::scrolly_w)); map(0x04600a, 0x04600b).noprw(); // video related - map(0x04600c, 0x04600d).w(FUNC(terracre_state::amazon_sound_w)); + map(0x04600c, 0x04600d).w(FUNC(terracre_state::sound_w)); map(0x04600e, 0x04600f).noprw(); // video related - map(0x050000, 0x050fff).ram().w(FUNC(terracre_state::amazon_foreground_w)).share("fg_videoram"); + map(0x050000, 0x050fff).ram().w(FUNC(terracre_state::foreground_w)).share(m_fg_videoram); map(0x070000, 0x070003).noprw(); // protection (nop for bootlegs) } @@ -268,7 +551,8 @@ static INPUT_PORTS_START( amazon ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CONDITION("IN3", 0x80, EQUALS, 0x80) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("2 Players Start / Fast Forward") PORT_CONDITION("IN3", 0x80, EQUALS, 0x00) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) @@ -293,12 +577,12 @@ static INPUT_PORTS_START( amazon ) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) PORT_START("IN3") - PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW1:1,2") + PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) PORT_DIPLOCATION("DSW1:1,2") PORT_DIPSETTING( 0x0003, "3" ) PORT_DIPSETTING( 0x0002, "4" ) PORT_DIPSETTING( 0x0001, "5" ) PORT_DIPSETTING( 0x0000, "6" ) - PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("DSW1:3,4") + PORT_DIPNAME( 0x000c, 0x000c, DEF_STR( Bonus_Life ) ) PORT_DIPLOCATION("DSW1:3,4") PORT_DIPSETTING( 0x000c, "20k then every 40k" ) // "20000 40000" in the "test mode" PORT_DIPSETTING( 0x0008, "50k then every 40k" ) // "50000 40000" in the "test mode" PORT_DIPSETTING( 0x0004, "20k then every 70k" ) // "20000 70000" in the "test mode" @@ -306,31 +590,33 @@ static INPUT_PORTS_START( amazon ) PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("DSW1:5") PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0010, DEF_STR( On ) ) - PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW1:6") + PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Cabinet ) ) PORT_DIPLOCATION("DSW1:6") PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) ) PORT_DIPSETTING( 0x0020, DEF_STR( Cocktail ) ) PORT_DIPUNUSED_DIPLOC( 0x0040, 0x0040, "DSW1:7" ) - PORT_DIPUNUSED_DIPLOC( 0x0080, 0x0080, "DSW1:8" ) - PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW2:1,2") + PORT_DIPNAME( 0x0080, 0x0080, "Debug Mode" ) PORT_DIPLOCATION("DSW1:8") // makes player invulnerable, and 2P start for fast forward + PORT_DIPSETTING( 0x0080, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coin_A ) ) PORT_DIPLOCATION("DSW2:1,2") PORT_DIPSETTING( 0x0100, DEF_STR( 2C_1C ) ) PORT_DIPSETTING( 0x0300, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0200, DEF_STR( 1C_2C ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Free_Play ) ) - PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW2:3,4") + PORT_DIPNAME( 0x0c00, 0x0c00, DEF_STR( Coin_B ) ) PORT_DIPLOCATION("DSW2:3,4") PORT_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) ) PORT_DIPSETTING( 0x0800, DEF_STR( 1C_1C ) ) PORT_DIPSETTING( 0x0400, DEF_STR( 2C_3C ) ) PORT_DIPSETTING( 0x0c00, DEF_STR( 1C_3C ) ) - PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:5") + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Difficulty ) ) PORT_DIPLOCATION("DSW2:5") PORT_DIPSETTING( 0x1000, DEF_STR( Easy ) ) PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) ) PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("DSW2:6") // not in the "test mode" PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) - PORT_DIPNAME( 0x4000, 0x4000, "Level" ) PORT_DIPLOCATION("DSW2:7") + PORT_DIPNAME( 0x4000, 0x4000, "Level" ) PORT_DIPLOCATION("DSW2:7") PORT_DIPSETTING( 0x4000, DEF_STR( Low ) ) PORT_DIPSETTING( 0x0000, DEF_STR( High ) ) - PORT_DIPNAME( 0x8000, 0x8000, "Sprite Test" ) PORT_DIPLOCATION("DSW2:8") + PORT_DIPNAME( 0x8000, 0x8000, "Sprite Test" ) PORT_DIPLOCATION("DSW2:8") PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) INPUT_PORTS_END @@ -438,59 +724,151 @@ static const gfx_layout sprite_layout = }; static GFXDECODE_START( gfx_terracre ) - GFXDECODE_ENTRY( "gfx1", 0, gfx_8x8x4_packed_lsb, 0, 1 ) - GFXDECODE_ENTRY( "gfx2", 0, gfx_16x16x4_packed_lsb, 1*16, 16 ) - GFXDECODE_ENTRY( "gfx3", 0, sprite_layout, 1*16+16*16, 256 ) + GFXDECODE_ENTRY( "fgtiles", 0, gfx_8x8x4_packed_lsb, 0, 1 ) + GFXDECODE_ENTRY( "bgtiles", 0, gfx_16x16x4_packed_lsb, 1*16, 16 ) + GFXDECODE_ENTRY( "sprites", 0, sprite_layout, 1*16+16*16, 256 ) GFXDECODE_END - -void terracre_state::ym3526(machine_config &config) +void terracre_state::tc_base(machine_config &config) { - M68000(config, m_maincpu, XTAL(16'000'000)/2); // 8MHz verified on PCB + M68000(config, m_maincpu, XTAL(16'000'000) / 2); // 8MHz verified on PCB m_maincpu->set_addrmap(AS_PROGRAM, &terracre_state::terracre_map); m_maincpu->set_vblank_int("screen", FUNC(terracre_state::irq1_line_hold)); - z80_device &audiocpu(Z80(config, "audiocpu", XTAL(16'000'000)/4)); // 4MHz verified on PCB - audiocpu.set_addrmap(AS_PROGRAM, &terracre_state::sound_map); - audiocpu.set_addrmap(AS_IO, &terracre_state::sound_3526_io_map); - audiocpu.set_periodic_int(FUNC(terracre_state::irq0_line_hold), attotime::from_hz(XTAL(16'000'000)/4/512)); // ? + Z80(config, m_audiocpu, XTAL(16'000'000) / 4); // 4MHz verified on PCB + m_audiocpu->set_addrmap(AS_PROGRAM, &terracre_state::sound_map); + // z80 io map set in 2203 or 3526 configs below + m_audiocpu->set_periodic_int(FUNC(terracre_state::irq0_line_hold), attotime::from_hz(XTAL(16'000'000) / 4 / 512)); // ? BUFFERED_SPRITERAM16(config, m_spriteram); screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER)); screen.set_refresh_hz(60); - screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500) /* not accurate */); + screen.set_vblank_time(ATTOSECONDS_IN_USEC(2500)); // not accurate screen.set_size(32*8, 32*8); screen.set_visarea(0*8, 32*8-1, 2*8, 30*8-1); - screen.set_screen_update(FUNC(terracre_state::screen_update_amazon)); + screen.set_screen_update(FUNC(terracre_state::screen_update)); screen.screen_vblank().set(m_spriteram, FUNC(buffered_spriteram16_device::vblank_copy_rising)); screen.set_palette(m_palette); GFXDECODE(config, m_gfxdecode, m_palette, gfx_terracre); - PALETTE(config, m_palette, FUNC(terracre_state::terracre_palette), 1*16+16*16+16*256, 256); + PALETTE(config, m_palette, FUNC(terracre_state::palette), 1*16+16*16+16*256, 256); SPEAKER(config, "speaker").front_center(); GENERIC_LATCH_8(config, m_soundlatch); +} - YM3526(config, "ymsnd", XTAL(16'000'000)/4).add_route(ALL_OUTPUTS, "speaker", 0.5); // 4MHz verified on PCB +void terracre_state::ym3526(machine_config &config) +{ + tc_base(config); + m_audiocpu->set_addrmap(AS_IO, &terracre_state::sound_3526_io_map); + + // Note: The terra cresta filters are not identical to the later Nichibutsu filters(galivan.cpp, armedf.cpp) + // While the yamaha (ym2203/ym3526 digital/FM portion) filter is the same, the dac filters are not, + // and (if present) the ym2203 (analog/SSG section only) filter is entirely new. + // Mixing resistor calculations for ym3526 set: + // R9 - Yamaha (digital/FM) - 1kohm = 0.4074 of total + // R12 - DAC1 - 2.2kohm = 0.1852 of total + // R8 - DAC2 - 1kohm = 0.4074 of total + // However, the actual volume output by the ym3014 dac and the r2r resistors + // is not the same range on each! + // The YM3014 dac has a DC offset of 1/2 VDD, then +- 1/4 VDD of signal, + // so min of 1.25v and max of 3.75v, vpp of 2.5v + // The R2R dacs are full range, min of 0v and max of (almost) 5v, vpp of ~5.0v + // Because of this, we have to compensate as MAME's ymfm core outputs full range. + // Math:: + // YMFM: 0.407407 * 0.5 = 0.203704 + // DAC1: 0.185185 * 1.0 = 0.185185 + // DAC2: 0.407407 * 1.0 = 0.407407 + // Sum: 0.796296 + // Multiply all 3 values by 1 / 0.796296 (i.e. 1.255814): + // Final values are: ym: 0.255814; dac1: 0.232558; dac2: 0.511628) + + FILTER_BIQUAD(config, m_ymfilter).opamp_sk_lowpass_setup(RES_K(4.7), RES_K(4.7), RES_M(999.99), RES_R(0.001), CAP_N(3.3), CAP_N(1.0)); // R10, R11, nothing(infinite resistance), wire(short), C11, C12 + m_ymfilter->add_route(ALL_OUTPUTS, "speaker", 1.0); + FILTER_BIQUAD(config, m_dacfilter1).opamp_sk_lowpass_setup(RES_K(22), RES_K(22), RES_M(999.99), RES_R(0.001), CAP_N(10), CAP_N(4.7)); // R17, R18, nothing(infinite resistance), wire(short), C19, C17 + m_dacfilter1->add_route(ALL_OUTPUTS, "speaker", 1.0); + FILTER_BIQUAD(config, m_dacfilter2).opamp_sk_lowpass_setup(RES_K(22), RES_K(22), RES_M(999.99), RES_R(0.001), CAP_N(10), CAP_N(4.7)); // R16, R15, nothing(infinite resistance), wire(short), C18, C21 + m_dacfilter2->add_route(ALL_OUTPUTS, "speaker", 1.0); + + YM3526(config, "ymsnd", XTAL(16'000'000) / 4).add_route(ALL_OUTPUTS, m_ymfilter, 0.2558); // 4MHz verified on PCB + + DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, m_dacfilter1, 0.2326); // SIP R2R DAC @ RA-1 with 74HC374P latch + DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, m_dacfilter2, 0.5116); // SIP R2R DAC @ RA-2 with 74HC374P latch - DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC - DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, "speaker", 0.25); // unknown DAC } void terracre_state::ym2203(machine_config &config) { - ym3526(config); - subdevice<z80_device>("audiocpu")->set_addrmap(AS_IO, &terracre_state::sound_2203_io_map); - - config.device_remove("ymsnd"); - - ym2203_device &ym1(YM2203(config, "ym1", XTAL(16'000'000)/4)); // 4MHz verified on PCB - ym1.add_route(0, "speaker", 0.1); - ym1.add_route(1, "speaker", 0.1); - ym1.add_route(2, "speaker", 0.1); - ym1.add_route(3, "speaker", 0.2); + tc_base(config); + m_audiocpu->set_addrmap(AS_IO, &terracre_state::sound_2203_io_map); + //subdevice<z80_device>("audiocpu")->set_addrmap(AS_IO, &terracre_state::sound_2203_io_map); + + // Note: The Terra Cresta filters are not identical to the later Nichibutsu filters(galivan.cpp, armedf.cpp) + // While the yamaha (ym2203/ym3526 digital/FM portion) filter is the same, the dac filters are not, + // and (if present) the ym2203 (analog/SSG section only) filter is entirely new. + // Mixing resistor calculations for ym2203 set: + // R9 - Yamaha (digital/FM) - 1kohm = 0.3500 of total + // R12 - DAC1 - 2.2kohm = 0.1590 of total + // R8 - DAC2 - 1kohm = 0.3500 of total + // Yamaha (analog/SSG, channels A and B) - 3.3k = 0.1060 + // Yamaha (analog/SSG, channel C) - 10k = 0.0350 + // However, the actual volume output by the ym3014 dac and the r2r resistors + // is not the same range on each! + // The YM3014 dac has a DC offset of 1/2 VDD, then +- 1/4 VDD of signal, + // so min of 1.25v and max of 3.75v, vpp of 2.5v + // The YM2203's 3 SSG analog channels each have a vpp of about 1.15v + // (i.e. midway between 0.95 and 1.35v on datasheet), before mixing. + // (we assume mixing is perfectly additive, which probably isn't 100% true) + // The R2R dacs are full range, min of 0v and max of (almost) 5v, vpp of ~5.0v + // Because of this, we have to compensate as MAME's ymfm core outputs full range. + // Math: (assuming a constant current for each component) + // YMFM: 0.350000 * 0.5 = 0.175 + // DAC1: 0.159000 * 1.0 = 0.159 + // DAC2: 0.350000 * 1.0 = 0.350 + // SSGA+B:0.106000 * 0.46 = 0.04876 + // SSGC: 0.035000 * 0.23 = 0.00805 + // Sum: 0.74081 + // Multiply all 5 values by 1 / 0.74081 (i.e. 1.349873): + // ym: 0.236228; dac1: 0.21463; dac2: 0.472456, ssgA+B: 0.06582; ssg3: 0.010866) + + FILTER_BIQUAD(config, m_ymfilter).opamp_sk_lowpass_setup(RES_K(4.7), RES_K(4.7), RES_M(999.99), RES_R(0.001), CAP_N(3.3), CAP_N(1.0)); // R10, R11, nothing(infinite resistance), wire(short), C11, C12 + m_ymfilter->add_route(ALL_OUTPUTS, "speaker", 1.0); + FILTER_BIQUAD(config, m_dacfilter1).opamp_sk_lowpass_setup(RES_K(22), RES_K(22), RES_M(999.99), RES_R(0.001), CAP_N(10), CAP_N(4.7)); // R17, R18, nothing(infinite resistance), wire(short), C19, C17 + m_dacfilter1->add_route(ALL_OUTPUTS, "speaker", 1.0); + FILTER_BIQUAD(config, m_dacfilter2).opamp_sk_lowpass_setup(RES_K(22), RES_K(22), RES_M(999.99), RES_R(0.001), CAP_N(10), CAP_N(4.7)); // R16, R15, nothing(infinite resistance), wire(short), C18, C21 + m_dacfilter2->add_route(ALL_OUTPUTS, "speaker", 1.0); + + // This filter is a simple first order inverting op-amp lowpass circuit with a gain of + // -4.54545 and a cutoff at effectively infinity, as it has nothing but parasitic + // capacitance as the capacitor part of said circuit. (YR12, YR15). + // Technically there may be some capacitance from YC3, although that is intended to be part of the SK filter below. + FILTER_BIQUAD(config, m_ssgfilter_abgain).opamp_mfb_lowpass_setup(RES_K(4.7), 0.0, RES_K(10), 0.0, CAP_N(22)/100.0); // YR12, N/A(short), YR15, N/A(unpopulated), (parasitic capacitance from YC3) + m_ssgfilter_abgain->add_route(ALL_OUTPUTS, "speaker", 1.0); + // This filter is a 2nd order sallen-key lowpass, unity gain. + FILTER_BIQUAD(config, m_ssgfilter_abfilt).opamp_sk_lowpass_setup(RES_K(10), RES_K(10), RES_M(999.99), RES_R(0.001), CAP_N(22), CAP_N(10)); // YR3, YR5, nothing(infinite resistance), wire(short), YC3, YC6 + m_ssgfilter_abfilt->add_route(ALL_OUTPUTS, m_ssgfilter_abgain, 1.0); + // This filter is a first order inverting op-amp lowpass circuit with a gain of -4.54545 and a + // cutoff at 10.1hz (YR8, YR7, YC1). + // Technically it was probably intended as first order MFB lowpass, but the cap ("YC0") + // near/bypassing YR7 was left unpopulated. + // It turns out this cap is mathematically redundant vs the cap at YC1, and serves the + // exact same purpose for calculating the cutoff. + FILTER_BIQUAD(config, m_ssgfilter_cgain).opamp_mfb_lowpass_setup(RES_K(33), 0.0, RES_K(150), 0.0, CAP_N(100)); // YR8, N/A(short), YR7, N/A(unpopulated), YC1 + m_ssgfilter_cgain->add_route(ALL_OUTPUTS, "speaker", 1.0); + + MIXER(config, m_ssgmixer); + m_ssgmixer->add_route(0, m_ssgfilter_abfilt, 0.06582); + + ym2203_device &ym1(YM2203(config, "ym1", XTAL(16'000'000) / 4)); // 4MHz verified on PCB + ym1.add_route(0, m_ssgmixer, 1.0); + ym1.add_route(1, m_ssgmixer, 1.0); + ym1.add_route(2, m_ssgfilter_cgain, 0.010866); + ym1.add_route(3, m_ymfilter, 0.2362); + + DAC_8BIT_R2R(config, "dac1", 0).add_route(ALL_OUTPUTS, m_dacfilter1, 0.2146); // SIP R2R DAC @ RA-1 with 74HC374P latch + DAC_8BIT_R2R(config, "dac2", 0).add_route(ALL_OUTPUTS, m_dacfilter2, 0.4725); // SIP R2R DAC @ RA-2 with 74HC374P latch } void terracre_state::amazon_base(machine_config &config) @@ -504,7 +882,7 @@ void amazon_state::amazon_1412m2(machine_config &config) amazon_base(config); m_maincpu->set_addrmap(AS_PROGRAM, &amazon_state::amazon_1412m2_map); - NB1412M2(config, m_prot, XTAL(16'000'000)/4); // divided by 4 maybe + NB1412M2(config, m_prot, XTAL(16'000'000) / 4); // divided by 4 maybe } void terracre_state::horekidb2(machine_config &config) @@ -525,25 +903,25 @@ void terracre_state::horekidb2(machine_config &config) bottom board: BK-2 (1502), 22MHz XTAL, Z80, YM3526 */ ROM_START( terracre ) - ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code (main CPU) on BK-1 PCB + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code on BK-1 PCB ROM_LOAD16_BYTE( "1.4b", 0x00001, 0x8000, CRC(60932770) SHA1(887be7a44cb7bf30d11274d34896217cc87ae158) ) ROM_LOAD16_BYTE( "3.4d", 0x00000, 0x8000, CRC(cb36240e) SHA1(24696503d9720ced869bb96ec64f336679726668) ) ROM_LOAD16_BYTE( "2.6b", 0x10001, 0x8000, CRC(539352f2) SHA1(b960f75d12ebdcd6781a073a66b8e503a8f55186) ) ROM_LOAD16_BYTE( "4.6d", 0x10000, 0x8000, CRC(19387586) SHA1(76473493d173efde83ded52ad721d2c532f590e2) ) - ROM_REGION( 0x10000, "audiocpu", 0 )// Z80 code (sound) on BK-2 PCB, with intro fill-in in the main theme + ROM_REGION( 0x10000, "audiocpu", 0 )// Z80 code on BK-2 PCB, with intro fill-in in the main theme ROM_LOAD( "11.15b", 0x0000, 0x4000, CRC(604c3b11) SHA1(c01d1ddae40fa8b65dfc72f959942cb9664a548b) ) ROM_LOAD( "12.17b", 0x4000, 0x4000, CRC(affc898d) SHA1(a78f06fa125de16fcdb8f4dc1629eb775aad913a) ) ROM_LOAD( "13.18b", 0x8000, 0x4000, CRC(302dc0ab) SHA1(4db8f12e70f9adf1eb993c6a8af68b5edbf79773) ) - ROM_REGION( 0x02000, "gfx1", 0 ) // tiles on BK-2 PCB + ROM_REGION( 0x02000, "fgtiles", 0 ) // on BK-2 PCB ROM_LOAD( "14.16g", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) ) - ROM_REGION( 0x10000, "gfx2", 0 ) // background on BK-1 PCB + ROM_REGION( 0x10000, "bgtiles", 0 ) // on BK-1 PCB ROM_LOAD( "5.15f", 0x00000, 0x8000, CRC(984a597f) SHA1(1f33892f160691c44872b37f0f6cb1493c9f7fb1) ) ROM_LOAD( "6.17f", 0x08000, 0x8000, CRC(30e297ff) SHA1(9843826ae63039d6693c8a0b30af721d70f40056) ) - ROM_REGION( 0x10000, "gfx3", 0 ) // sprites on BK-2 PCB + ROM_REGION( 0x10000, "sprites", 0 ) // on BK-2 PCB ROM_LOAD( "7.6e", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) ) ROM_LOAD( "8.7e", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) ) ROM_LOAD( "9.6g", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) ) @@ -553,10 +931,10 @@ ROM_START( terracre ) ROM_LOAD( "3.10f", 0x0000, 0x0100, CRC(ce07c544) SHA1(c3691cb420c88f1887a55e3035b5d017decbc17a) ) // red component on BK-1 PCB ROM_LOAD( "2.11f", 0x0100, 0x0100, CRC(566d323a) SHA1(fe83585a0d9c7f942a5e54620b627a5a17a0fcf4) ) // green component on BK-1 PCB ROM_LOAD( "1.12f", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) ) // blue component on BK-1 PCB - ROM_LOAD( "4.2g", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) // sprite lookup table on BK-2 PCB + ROM_LOAD( "4.2g", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) // (82s129 with white dot) sprite lookup table on BK-2 PCB - ROM_REGION( 0x0100, "user1", 0 ) // 82S129 - ROM_LOAD( "5.4e", 0x0000, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) // sprite palette bank on BK-2 PCB + ROM_REGION( 0x0100, "palbank_prom", 0 ) // 82S129 + ROM_LOAD( "5.4e", 0x0000, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) // (82s129 with pink dot) sprite palette bank on BK-2 PCB ROM_REGION( 0x030c, "plds", 0 ) ROM_LOAD( "11e", 0x000, 0x104, NO_DUMP ) // PAL16L8 on BK-1 PCB @@ -564,8 +942,8 @@ ROM_START( terracre ) ROM_LOAD( "12f", 0x208, 0x104, NO_DUMP ) // PAL16R4 on BK-2 PCB ROM_END -ROM_START( terracreo ) // older pcb TC-1A & TC-2A and oldest ROM-set - ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code (main CPU) on TC-1A PCB +ROM_START( terracreo ) // older PCB TC-1A & TC-2A and oldest ROM-set + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code on TC-1A PCB ROM_LOAD16_BYTE( "1.4b", 0x00001, 0x4000, CRC(76f17479) SHA1(e6be7f78fe7dc9d66feb3ada6ad08d461c66640d) ) ROM_LOAD16_BYTE( "5.4d", 0x00000, 0x4000, CRC(8119f06e) SHA1(314e2d8e75f66862cf6567ac05f417a3a66f1254) ) ROM_LOAD16_BYTE( "2.6b", 0x08001, 0x4000, CRC(ba4b5822) SHA1(0de3ce04e14aa5757936babdec9cd1341d4a06d6) ) @@ -575,19 +953,19 @@ ROM_START( terracreo ) // older pcb TC-1A & TC-2A and oldest ROM-set ROM_LOAD16_BYTE( "4.9b", 0x18001, 0x4000, CRC(69227b56) SHA1(58c8aa4baa1f5ddfc151f5ed6284a06e87866dd7) ) ROM_LOAD16_BYTE( "8.9d", 0x18000, 0x4000, CRC(5a672942) SHA1(3890f87edb9047f3e4c6f4d4b47b7f9873962148) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code (sound) on TC-2A PCB, with intro fill-in in the main theme + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code on TC-2A PCB, with intro fill-in in the main theme ROM_LOAD( "11.15b", 0x0000, 0x4000, CRC(604c3b11) SHA1(c01d1ddae40fa8b65dfc72f959942cb9664a548b) ) ROM_LOAD( "12.17b", 0x4000, 0x4000, CRC(affc898d) SHA1(a78f06fa125de16fcdb8f4dc1629eb775aad913a) ) ROM_LOAD( "13.18b", 0x8000, 0x4000, CRC(302dc0ab) SHA1(4db8f12e70f9adf1eb993c6a8af68b5edbf79773) ) - ROM_REGION( 0x02000, "gfx1", 0 ) // tiles on TC-2A PCB + ROM_REGION( 0x02000, "fgtiles", 0 ) // on TC-2A PCB ROM_LOAD( "18.16g", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) ) - ROM_REGION( 0x10000, "gfx2", 0 ) // background on TC-1A PCB + ROM_REGION( 0x10000, "bgtiles", 0 ) // on TC-1A PCB ROM_LOAD( "9.15f", 0x00000, 0x8000, CRC(984a597f) SHA1(1f33892f160691c44872b37f0f6cb1493c9f7fb1) ) ROM_LOAD( "10.17f", 0x08000, 0x8000, CRC(30e297ff) SHA1(9843826ae63039d6693c8a0b30af721d70f40056) ) - ROM_REGION( 0x10000, "gfx3", 0 ) // sprites on TC-2A PCB + ROM_REGION( 0x10000, "sprites", 0 ) // on TC-2A PCB ROM_LOAD( "14.6e", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) ) ROM_LOAD( "15.7e", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) ) ROM_LOAD( "16.6g", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) ) @@ -599,7 +977,7 @@ ROM_START( terracreo ) // older pcb TC-1A & TC-2A and oldest ROM-set ROM_LOAD( "1.12f", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) ) // blue component on BK-1 PCB ROM_LOAD( "4.2g", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) // sprite lookup table on BK-2 PCB - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "palbank_prom", 0 ) ROM_LOAD( "5.4e", 0x0000, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) // sprite palette bank on TC-2A PCB ROM_REGION( 0x030c, "plds", 0 ) @@ -610,8 +988,8 @@ ROM_END // probably newest TC-1A/2A board ROM-set for YM3526 version // for unknown reasons, intro fill-in in the main theme had been removed -ROM_START( terracrea ) // older pcb TC-1A & TC-2A, the only difference is one sound rom - ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code (main CPU) on TC-1A PCB +ROM_START( terracrea ) // older PCB TC-1A & TC-2A, the only difference is one sound ROM + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code on TC-1A PCB ROM_LOAD16_BYTE( "1.4b", 0x00001, 0x4000, CRC(76f17479) SHA1(e6be7f78fe7dc9d66feb3ada6ad08d461c66640d) ) ROM_LOAD16_BYTE( "5.4d", 0x00000, 0x4000, CRC(8119f06e) SHA1(314e2d8e75f66862cf6567ac05f417a3a66f1254) ) ROM_LOAD16_BYTE( "2.6b", 0x08001, 0x4000, CRC(ba4b5822) SHA1(0de3ce04e14aa5757936babdec9cd1341d4a06d6) ) @@ -621,19 +999,19 @@ ROM_START( terracrea ) // older pcb TC-1A & TC-2A, the only difference is one so ROM_LOAD16_BYTE( "4.9b", 0x18001, 0x4000, CRC(69227b56) SHA1(58c8aa4baa1f5ddfc151f5ed6284a06e87866dd7) ) ROM_LOAD16_BYTE( "8.9d", 0x18000, 0x4000, CRC(5a672942) SHA1(3890f87edb9047f3e4c6f4d4b47b7f9873962148) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code (sound) on TC-2A PCB, without intro fill-in in the main theme + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code on TC-2A PCB, without intro fill-in in the main theme ROM_LOAD( "11.15b", 0x0000, 0x4000, CRC(604c3b11) SHA1(c01d1ddae40fa8b65dfc72f959942cb9664a548b) ) ROM_LOAD( "12.17b", 0x4000, 0x4000, CRC(9e9b3808) SHA1(7b6f8d2b75f063aa81711a7c2bf1563cc38eee8b) ) ROM_LOAD( "13.18b", 0x8000, 0x4000, CRC(302dc0ab) SHA1(4db8f12e70f9adf1eb993c6a8af68b5edbf79773) ) - ROM_REGION( 0x02000, "gfx1", 0 ) // tiles on TC-2A PCB + ROM_REGION( 0x02000, "fgtiles", 0 ) // on TC-2A PCB ROM_LOAD( "18.16g", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) ) - ROM_REGION( 0x10000, "gfx2", 0 ) // background on TC-1A PCB + ROM_REGION( 0x10000, "bgtiles", 0 ) // on TC-1A PCB ROM_LOAD( "9.15f", 0x00000, 0x8000, CRC(984a597f) SHA1(1f33892f160691c44872b37f0f6cb1493c9f7fb1) ) ROM_LOAD( "10.17f", 0x08000, 0x8000, CRC(30e297ff) SHA1(9843826ae63039d6693c8a0b30af721d70f40056) ) - ROM_REGION( 0x10000, "gfx3", 0 ) // sprites on TC-2A PCB + ROM_REGION( 0x10000, "sprites", 0 ) // on TC-2A PCB ROM_LOAD( "14.6e", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) ) ROM_LOAD( "15.7e", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) ) ROM_LOAD( "16.6g", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) ) @@ -645,7 +1023,7 @@ ROM_START( terracrea ) // older pcb TC-1A & TC-2A, the only difference is one so ROM_LOAD( "1.12f", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) ) // blue component on BK-1 PCB ROM_LOAD( "4.2g", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) // sprite lookup table on BK-2 PCB - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "palbank_prom", 0 ) ROM_LOAD( "5.4e", 0x0000, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) // sprite palette bank on TC-2A PCB ROM_REGION( 0x030c, "plds", 0 ) @@ -655,7 +1033,7 @@ ROM_START( terracrea ) // older pcb TC-1A & TC-2A, the only difference is one so ROM_END ROM_START( terracren ) // 'n' for OPN(YM2203), newer than YM3526 sets because it uses a daughterboard to convert the existing YM3526 socket to a YM2203 - ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code (main CPU) on TC-1A PCB + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code on TC-1A PCB ROM_LOAD16_BYTE( "1.4b", 0x00001, 0x4000, CRC(76f17479) SHA1(e6be7f78fe7dc9d66feb3ada6ad08d461c66640d) ) ROM_LOAD16_BYTE( "5.4d", 0x00000, 0x4000, CRC(8119f06e) SHA1(314e2d8e75f66862cf6567ac05f417a3a66f1254) ) ROM_LOAD16_BYTE( "2.6b", 0x08001, 0x4000, CRC(ba4b5822) SHA1(0de3ce04e14aa5757936babdec9cd1341d4a06d6) ) @@ -665,18 +1043,18 @@ ROM_START( terracren ) // 'n' for OPN(YM2203), newer than YM3526 sets because it ROM_LOAD16_BYTE( "4.9b", 0x18001, 0x4000, CRC(69227b56) SHA1(58c8aa4baa1f5ddfc151f5ed6284a06e87866dd7) ) ROM_LOAD16_BYTE( "8.9d", 0x18000, 0x4000, CRC(5a672942) SHA1(3890f87edb9047f3e4c6f4d4b47b7f9873962148) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code (sound) + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "11.15b", 0x0000, 0x4000, CRC(790ddfa9) SHA1(90aa25fbfc9b5f52145ab3cf126610cf21024c20) ) ROM_LOAD( "12.17b", 0x4000, 0x4000, CRC(d4531113) SHA1(efc37c33a0791cae4d4ab50bc884cd6c8a6f95f5) ) - ROM_REGION( 0x02000, "gfx1", 0 ) // tiles on TC-2A PCB + ROM_REGION( 0x02000, "fgtiles", 0 ) // on TC-2A PCB ROM_LOAD( "18.16g", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) ) - ROM_REGION( 0x10000, "gfx2", 0 ) // background on TC-1A PCB + ROM_REGION( 0x10000, "bgtiles", 0 ) // on TC-1A PCB ROM_LOAD( "9.15f", 0x00000, 0x8000, CRC(984a597f) SHA1(1f33892f160691c44872b37f0f6cb1493c9f7fb1) ) ROM_LOAD( "10.17f", 0x08000, 0x8000, CRC(30e297ff) SHA1(9843826ae63039d6693c8a0b30af721d70f40056) ) - ROM_REGION( 0x10000, "gfx3", 0 ) // sprites on TC-2A PCB + ROM_REGION( 0x10000, "sprites", 0 ) // on TC-2A PCB ROM_LOAD( "14.6e", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) ) ROM_LOAD( "15.7e", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) ) ROM_LOAD( "16.6g", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) ) @@ -688,7 +1066,7 @@ ROM_START( terracren ) // 'n' for OPN(YM2203), newer than YM3526 sets because it ROM_LOAD( "1.12f", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) ) // blue component on BK-1 PCB ROM_LOAD( "4.2g", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) // sprite lookup table on BK-2 PCB - ROM_REGION( 0x0100, "user1", 0 ) + ROM_REGION( 0x0100, "palbank_prom", 0 ) ROM_LOAD( "5.4e", 0x0000, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) // sprite palette bank on TC-2A PCB ROM_REGION( 0x030c, "plds", 0 ) @@ -698,199 +1076,199 @@ ROM_START( terracren ) // 'n' for OPN(YM2203), newer than YM3526 sets because it ROM_END ROM_START( amazon ) - ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 code (main CPU) */ + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "11.4d", 0x00000, 0x8000, CRC(6c7f85c5) SHA1(7f78cf16a93ea1f7b8616122127327a7d337e565) ) ROM_LOAD16_BYTE( "9.4b", 0x00001, 0x8000, CRC(e1b7a989) SHA1(ae49cbc6fc4bc151990caed1f57cc7e10aba7901) ) ROM_LOAD16_BYTE( "12.6d", 0x10000, 0x8000, CRC(4de8a3ee) SHA1(a650d5b6ebff257f08db01e76e5c11c1ecc8cd36) ) ROM_LOAD16_BYTE( "10.6b", 0x10001, 0x8000, CRC(d86bad81) SHA1(8f2e56422f9e604232c60f676dcd964392ec9d28) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "1.15b", 0x00000, 0x4000, CRC(55a8b5e7) SHA1(d3f5609c1b97a54c505d12dd22f7454c88c90fb9) ) ROM_LOAD( "2.17b", 0x04000, 0x4000, CRC(427a7cca) SHA1(b30e3dd4f685c4095478972d38bb9616369a51bf) ) ROM_LOAD( "3.18b", 0x08000, 0x4000, CRC(b8cceaf7) SHA1(5682df3193ad1dfef366353921bfa7af08aec055) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* alphanumerics */ + ROM_REGION( 0x2000, "fgtiles", 0 ) ROM_LOAD( "8.16g", 0x0000, 0x2000, CRC(0cec8644) SHA1(a8f2a67b2243771e20ba51a539a83f0017dff6bc) ) - ROM_REGION( 0x20000, "gfx2", 0 ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles", 0 ) ROM_LOAD( "13.15f", 0x00000, 0x8000, CRC(415ff4d9) SHA1(b5d17bfbf78e620c29f8933f06bd88cc89825b4b) ) ROM_LOAD( "14.17f", 0x08000, 0x8000, CRC(492b5c48) SHA1(822d9098427650d55cdd6e4a7e540147198d72fc) ) ROM_LOAD( "15.18f", 0x10000, 0x8000, CRC(b1ac0b9d) SHA1(1b413823669db24a5cfb93f66f54bd08c410a0d4) ) - ROM_REGION( 0x10000, "gfx3", 0 ) /* sprites */ + ROM_REGION( 0x10000, "sprites", 0 ) ROM_LOAD( "4.6e", 0x0000, 0x4000, CRC(f77ced7a) SHA1(55bf0a0799d85877a71d1529073b0ed847c80e54) ) ROM_LOAD( "5.7e", 0x4000, 0x4000, CRC(16ef1465) SHA1(7547f24fec79f774e1be441c3734bdcc03b5d313) ) ROM_LOAD( "6.6g", 0x8000, 0x4000, CRC(936ec941) SHA1(b4891e207d66f8b77c237fc23ffa48f87ab6993a) ) ROM_LOAD( "7.7g", 0xc000, 0x4000, CRC(66dd718e) SHA1(80990c6199f63b215e1dead3b09cf6160dd75333) ) ROM_REGION( 0x400, "proms", 0 ) - ROM_LOAD( "clr.10f", 0x000, 0x100, CRC(6440b341) SHA1(ccf89ac889f1653100f5b0a042dcd826c4ac628b) ) /* red */ - ROM_LOAD( "clr.11f", 0x100, 0x100, CRC(271e947f) SHA1(3d1f44fe92cc5fdff001ef80e07aa46a1ca68fe5) ) /* green */ - ROM_LOAD( "clr.12f", 0x200, 0x100, CRC(7d38621b) SHA1(7904c3c2c32006d4f4608b6ee84d44ecd601de73) ) /* blue */ - ROM_LOAD( "2g", 0x300, 0x100, CRC(44ca16b9) SHA1(1893f24d1c7f4d8e24b5484b19f9284f2ec9be08) ) /* clut */ + ROM_LOAD( "clr.10f", 0x000, 0x100, CRC(6440b341) SHA1(ccf89ac889f1653100f5b0a042dcd826c4ac628b) ) // red + ROM_LOAD( "clr.11f", 0x100, 0x100, CRC(271e947f) SHA1(3d1f44fe92cc5fdff001ef80e07aa46a1ca68fe5) ) // green + ROM_LOAD( "clr.12f", 0x200, 0x100, CRC(7d38621b) SHA1(7904c3c2c32006d4f4608b6ee84d44ecd601de73) ) // blue + ROM_LOAD( "2g", 0x300, 0x100, CRC(44ca16b9) SHA1(1893f24d1c7f4d8e24b5484b19f9284f2ec9be08) ) // clut - ROM_REGION( 0x0100, "user1", 0 ) - ROM_LOAD( "4e", 0x000, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) /* ctable */ + ROM_REGION( 0x0100, "palbank_prom", 0 ) + ROM_LOAD( "4e", 0x000, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) // ctable - ROM_REGION( 0x2000, "prot_chip", 0 ) /* unknown, mostly text */ + ROM_REGION( 0x2000, "prot_chip", 0 ) // unknown, mostly text ROM_LOAD( "16.18g", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) ROM_END -ROM_START( amazont ) /* Found a on Tecfri TC-1A and TC-2A boardset */ - ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 code (main CPU) */ +ROM_START( amazont ) // Found a on Tecfri TC-1A and TC-2A boardset + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "5.4d", 0x00000, 0x8000, CRC(ae39432f) SHA1(438f957e8e8e3ac12a24b4852bac5530cfbf858a) ) ROM_LOAD16_BYTE( "7.4b", 0x00001, 0x8000, CRC(a74cdcea) SHA1(6c9f891942a66d179405fd6067688522c3796235) ) ROM_LOAD16_BYTE( "4.6d", 0x10000, 0x8000, CRC(0c6b0772) SHA1(0b103622dcb74bba0320a8d6393d51a0cc653a0e) ) ROM_LOAD16_BYTE( "6.6b", 0x10001, 0x8000, CRC(edbaad3f) SHA1(b2ab817d4403ed6f58bae9b464116ccf9e005176) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "1.15b", 0x00000, 0x4000, CRC(55a8b5e7) SHA1(d3f5609c1b97a54c505d12dd22f7454c88c90fb9) ) ROM_LOAD( "2.17b", 0x04000, 0x4000, CRC(427a7cca) SHA1(b30e3dd4f685c4095478972d38bb9616369a51bf) ) ROM_LOAD( "3.18b", 0x08000, 0x4000, CRC(b8cceaf7) SHA1(5682df3193ad1dfef366353921bfa7af08aec055) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* alphanumerics */ + ROM_REGION( 0x2000, "fgtiles", 0 ) ROM_LOAD( "8.16g", 0x0000, 0x2000, CRC(0cec8644) SHA1(a8f2a67b2243771e20ba51a539a83f0017dff6bc) ) - ROM_REGION( 0x20000, "gfx2", 0 ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles", 0 ) ROM_LOAD( "13.15f", 0x00000, 0x8000, CRC(415ff4d9) SHA1(b5d17bfbf78e620c29f8933f06bd88cc89825b4b) ) ROM_LOAD( "14.17f", 0x08000, 0x8000, CRC(492b5c48) SHA1(822d9098427650d55cdd6e4a7e540147198d72fc) ) ROM_LOAD( "15.18f", 0x10000, 0x8000, CRC(b1ac0b9d) SHA1(1b413823669db24a5cfb93f66f54bd08c410a0d4) ) - ROM_REGION( 0x10000, "gfx3", 0 ) /* sprites */ + ROM_REGION( 0x10000, "sprites", 0 ) ROM_LOAD( "4.6e", 0x0000, 0x4000, CRC(f77ced7a) SHA1(55bf0a0799d85877a71d1529073b0ed847c80e54) ) ROM_LOAD( "5.7e", 0x4000, 0x4000, CRC(16ef1465) SHA1(7547f24fec79f774e1be441c3734bdcc03b5d313) ) ROM_LOAD( "6.6g", 0x8000, 0x4000, CRC(936ec941) SHA1(b4891e207d66f8b77c237fc23ffa48f87ab6993a) ) ROM_LOAD( "7.7g", 0xc000, 0x4000, CRC(66dd718e) SHA1(80990c6199f63b215e1dead3b09cf6160dd75333) ) ROM_REGION( 0x400, "proms", 0 ) - ROM_LOAD( "clr.10f", 0x000, 0x100, CRC(6440b341) SHA1(ccf89ac889f1653100f5b0a042dcd826c4ac628b) ) /* red */ - ROM_LOAD( "clr.11f", 0x100, 0x100, CRC(271e947f) SHA1(3d1f44fe92cc5fdff001ef80e07aa46a1ca68fe5) ) /* green */ - ROM_LOAD( "clr.12f", 0x200, 0x100, CRC(7d38621b) SHA1(7904c3c2c32006d4f4608b6ee84d44ecd601de73) ) /* blue */ - ROM_LOAD( "2g", 0x300, 0x100, CRC(44ca16b9) SHA1(1893f24d1c7f4d8e24b5484b19f9284f2ec9be08) ) /* clut */ + ROM_LOAD( "clr.10f", 0x000, 0x100, CRC(6440b341) SHA1(ccf89ac889f1653100f5b0a042dcd826c4ac628b) ) // red + ROM_LOAD( "clr.11f", 0x100, 0x100, CRC(271e947f) SHA1(3d1f44fe92cc5fdff001ef80e07aa46a1ca68fe5) ) // green + ROM_LOAD( "clr.12f", 0x200, 0x100, CRC(7d38621b) SHA1(7904c3c2c32006d4f4608b6ee84d44ecd601de73) ) // blue + ROM_LOAD( "2g", 0x300, 0x100, CRC(44ca16b9) SHA1(1893f24d1c7f4d8e24b5484b19f9284f2ec9be08) ) // clut - ROM_REGION( 0x0100, "user1", 0 ) - ROM_LOAD( "4e", 0x000, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) /* ctable */ + ROM_REGION( 0x0100, "palbank_prom", 0 ) + ROM_LOAD( "4e", 0x000, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) // ctable - ROM_REGION( 0x2000, "prot_chip", 0 ) /* unknown, mostly text */ + ROM_REGION( 0x2000, "prot_chip", 0 ) // unknown, mostly text ROM_LOAD( "16.18g", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) ROM_END ROM_START( amatelas ) - ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 code (main CPU) */ + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "a11.4d", 0x00000, 0x8000, CRC(3d226d0b) SHA1(b3f36973117dcca7ec6f891503ada1055694059d) ) ROM_LOAD16_BYTE( "a9.4b", 0x00001, 0x8000, CRC(e2a0d21d) SHA1(abb65ea5a10719d27f711216b7e387f2e01bdd5d) ) ROM_LOAD16_BYTE( "a12.6d", 0x10000, 0x8000, CRC(e6607c51) SHA1(7679f84ccdf75226bb46a5357a460aa2d5e5cd32) ) ROM_LOAD16_BYTE( "a10.6b", 0x10001, 0x8000, CRC(dbc1f1b4) SHA1(0fca999356e38d69ba5822c4ec489ea08f1d771f) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "1.15b", 0x00000, 0x4000, CRC(55a8b5e7) SHA1(d3f5609c1b97a54c505d12dd22f7454c88c90fb9) ) ROM_LOAD( "2.17b", 0x04000, 0x4000, CRC(427a7cca) SHA1(b30e3dd4f685c4095478972d38bb9616369a51bf) ) ROM_LOAD( "3.18b", 0x08000, 0x4000, CRC(b8cceaf7) SHA1(5682df3193ad1dfef366353921bfa7af08aec055) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* alphanumerics */ + ROM_REGION( 0x2000, "fgtiles", 0 ) ROM_LOAD( "a8.16g", 0x0000, 0x2000, CRC(aeba2102) SHA1(fb4d047a78cd47f628fedfda8349dc46cf6a6f32) ) - ROM_REGION( 0x20000, "gfx2", 0 ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles", 0 ) ROM_LOAD( "13.15f", 0x00000, 0x8000, CRC(415ff4d9) SHA1(b5d17bfbf78e620c29f8933f06bd88cc89825b4b) ) ROM_LOAD( "14.17f", 0x08000, 0x8000, CRC(492b5c48) SHA1(822d9098427650d55cdd6e4a7e540147198d72fc) ) ROM_LOAD( "15.18f", 0x10000, 0x8000, CRC(b1ac0b9d) SHA1(1b413823669db24a5cfb93f66f54bd08c410a0d4) ) - ROM_REGION( 0x10000, "gfx3", 0 ) /* sprites */ + ROM_REGION( 0x10000, "sprites", 0 ) ROM_LOAD( "4.6e", 0x0000, 0x4000, CRC(f77ced7a) SHA1(55bf0a0799d85877a71d1529073b0ed847c80e54) ) ROM_LOAD( "a5.7e", 0x4000, 0x4000, CRC(5fbf9a16) SHA1(d33a020626db8267fd1c1eacbff15c569d7fb72d) ) ROM_LOAD( "6.6g", 0x8000, 0x4000, CRC(936ec941) SHA1(b4891e207d66f8b77c237fc23ffa48f87ab6993a) ) ROM_LOAD( "7.7g", 0xc000, 0x4000, CRC(66dd718e) SHA1(80990c6199f63b215e1dead3b09cf6160dd75333) ) ROM_REGION( 0x400, "proms", 0 ) - ROM_LOAD( "clr.10f", 0x000, 0x100, CRC(6440b341) SHA1(ccf89ac889f1653100f5b0a042dcd826c4ac628b) ) /* red */ - ROM_LOAD( "clr.11f", 0x100, 0x100, CRC(271e947f) SHA1(3d1f44fe92cc5fdff001ef80e07aa46a1ca68fe5) ) /* green */ - ROM_LOAD( "clr.12f", 0x200, 0x100, CRC(7d38621b) SHA1(7904c3c2c32006d4f4608b6ee84d44ecd601de73) ) /* blue */ - ROM_LOAD( "2g", 0x300, 0x100, CRC(44ca16b9) SHA1(1893f24d1c7f4d8e24b5484b19f9284f2ec9be08) ) /* clut */ + ROM_LOAD( "clr.10f", 0x000, 0x100, CRC(6440b341) SHA1(ccf89ac889f1653100f5b0a042dcd826c4ac628b) ) // red + ROM_LOAD( "clr.11f", 0x100, 0x100, CRC(271e947f) SHA1(3d1f44fe92cc5fdff001ef80e07aa46a1ca68fe5) ) // green + ROM_LOAD( "clr.12f", 0x200, 0x100, CRC(7d38621b) SHA1(7904c3c2c32006d4f4608b6ee84d44ecd601de73) ) // blue + ROM_LOAD( "2g", 0x300, 0x100, CRC(44ca16b9) SHA1(1893f24d1c7f4d8e24b5484b19f9284f2ec9be08) ) // clut - ROM_REGION( 0x0100, "user1", 0 ) - ROM_LOAD( "4e", 0x000, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) /* ctable */ + ROM_REGION( 0x0100, "palbank_prom", 0 ) + ROM_LOAD( "4e", 0x000, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) // ctable - ROM_REGION( 0x2000, "prot_chip", 0 ) /* unknown, mostly text */ + ROM_REGION( 0x2000, "prot_chip", 0 ) // unknown, mostly text ROM_LOAD( "16.18g", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) ROM_END ROM_START( horekid ) - ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 code (main CPU) */ + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "horekid.03", 0x00000, 0x8000, CRC(90ec840f) SHA1(7d04936c50c9ae02ea7dc24f8336997592def867) ) ROM_LOAD16_BYTE( "horekid.01", 0x00001, 0x8000, CRC(a282faf8) SHA1(4c1ff36cf324dff9ddfc1035db6c52838c7be975) ) ROM_LOAD16_BYTE( "horekid.04", 0x10000, 0x8000, CRC(375c0c50) SHA1(ee040dbdfe6673cf48f143518458609b21b4e15d) ) ROM_LOAD16_BYTE( "horekid.02", 0x10001, 0x8000, CRC(ee7d52bb) SHA1(b9083f672a6bc37ec2bbb9af081e6f27b712b663) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "horekid.09", 0x0000, 0x4000,CRC(49cd3b81) SHA1(284d75f6f6121d0581bb62f13ee02c85c3d972d2) ) ROM_LOAD( "horekid.10", 0x4000, 0x4000,CRC(c1eaa938) SHA1(839f03e701f072a6441ee4980eb1961859c40d97) ) ROM_LOAD( "horekid.11", 0x8000, 0x4000,CRC(0a2bc702) SHA1(0cef9e9022a27d30d2f83a16a55d8ede0ab686f4) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* alphanumerics */ + ROM_REGION( 0x2000, "fgtiles", 0 ) ROM_LOAD( "horekid.16", 0x0000, 0x2000, CRC(104b77cc) SHA1(f875c7fe4f2b540bc44fa144a449a01268011431) ) - ROM_REGION( 0x20000, "gfx2", 0 ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles", 0 ) ROM_LOAD( "horekid.05", 0x00000, 0x8000, CRC(da25ae10) SHA1(83d8b78cff85854b497b40525ec3c93a84ba6248) ) ROM_LOAD( "horekid.06", 0x08000, 0x8000, CRC(616e4321) SHA1(5bf0e0a7290b6bcb5dfbb1070eeb683830e6916b) ) ROM_LOAD( "horekid.07", 0x10000, 0x8000, CRC(8c7d2be2) SHA1(efd70997126fc7c2622546fabe69cb222dca87f9) ) ROM_LOAD( "horekid.08", 0x18000, 0x8000, CRC(a0066b02) SHA1(d6437932028e937dab5728f40d6d09b6afe9a903) ) - ROM_REGION( 0x20000, "gfx3", 0 ) /* sprites */ + ROM_REGION( 0x20000, "sprites", 0 ) ROM_LOAD( "horekid.12", 0x00000, 0x8000, CRC(a3caa07a) SHA1(4baa7d1867dbaa8bace43416040114129f5405d6) ) ROM_LOAD( "horekid.13", 0x08000, 0x8000, CRC(0e48ff8e) SHA1(5a3025991378ed3f9bdc2d420b1432332278178b) ) ROM_LOAD( "horekid.14", 0x10000, 0x8000, CRC(e300747a) SHA1(5875a46c215b12f1e9a889819215bca40e4459a6) ) ROM_LOAD( "horekid.15", 0x18000, 0x8000, CRC(51105741) SHA1(01c3bb2c03ce1ca959d62d64be3a019e74f677ba) ) ROM_REGION( 0x400, "proms", 0 ) - ROM_LOAD( "kid_prom.10f", 0x000, 0x100, CRC(ca13ce23) SHA1(46f0ed22f601721fa35bab12ce8816f30b102f59) ) /* red */ - ROM_LOAD( "kid_prom.11f", 0x100, 0x100, CRC(fb44285a) SHA1(f9605e82f63188daeff044fd48d81c1dfc4d4f2a) ) /* green */ - ROM_LOAD( "kid_prom.12f", 0x200, 0x100, CRC(40d41237) SHA1(b33082540d739a3bfe096f68f3359fbf1360b5be) ) /* blue */ - ROM_LOAD( "kid_prom.2g", 0x300, 0x100, CRC(4b9be0ed) SHA1(81aa7bb24fe6ea13f5dffdb67ea699adf0b3129a) ) /* clut */ + ROM_LOAD( "kid_prom.10f", 0x000, 0x100, CRC(ca13ce23) SHA1(46f0ed22f601721fa35bab12ce8816f30b102f59) ) // red + ROM_LOAD( "kid_prom.11f", 0x100, 0x100, CRC(fb44285a) SHA1(f9605e82f63188daeff044fd48d81c1dfc4d4f2a) ) // green + ROM_LOAD( "kid_prom.12f", 0x200, 0x100, CRC(40d41237) SHA1(b33082540d739a3bfe096f68f3359fbf1360b5be) ) // blue + ROM_LOAD( "kid_prom.2g", 0x300, 0x100, CRC(4b9be0ed) SHA1(81aa7bb24fe6ea13f5dffdb67ea699adf0b3129a) ) // clut - ROM_REGION( 0x0100, "user1", 0 ) - ROM_LOAD( "kid_prom.4e", 0x000, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) /* ctable */ + ROM_REGION( 0x0100, "palbank_prom", 0 ) + ROM_LOAD( "kid_prom.4e", 0x000, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) // ctable - ROM_REGION( 0x2000, "prot_chip", 0 ) /* unknown, mostly text */ + ROM_REGION( 0x2000, "prot_chip", 0 ) // unknown, mostly text ROM_LOAD( "horekid.17", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) ROM_END ROM_START( horekidb ) - ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 code (main CPU) */ + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "knhhd5", 0x00000, 0x8000, CRC(786619c7) SHA1(6b4a659839a7c19370a81f9f9b26e4fe0d210d7b) ) ROM_LOAD16_BYTE( "knhhd7", 0x00001, 0x8000, CRC(3bbb475b) SHA1(575cdc4f902f15335579c0f860fa75e33a0ea539) ) ROM_LOAD16_BYTE( "horekid.04", 0x10000, 0x8000, CRC(375c0c50) SHA1(ee040dbdfe6673cf48f143518458609b21b4e15d) ) ROM_LOAD16_BYTE( "horekid.02", 0x10001, 0x8000, CRC(ee7d52bb) SHA1(b9083f672a6bc37ec2bbb9af081e6f27b712b663) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "horekid.09", 0x0000, 0x4000,CRC(49cd3b81) SHA1(284d75f6f6121d0581bb62f13ee02c85c3d972d2) ) ROM_LOAD( "horekid.10", 0x4000, 0x4000,CRC(c1eaa938) SHA1(839f03e701f072a6441ee4980eb1961859c40d97) ) ROM_LOAD( "horekid.11", 0x8000, 0x4000,CRC(0a2bc702) SHA1(0cef9e9022a27d30d2f83a16a55d8ede0ab686f4) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* alphanumerics */ + ROM_REGION( 0x2000, "fgtiles", 0 ) ROM_LOAD( "horekid.16", 0x0000, 0x2000, CRC(104b77cc) SHA1(f875c7fe4f2b540bc44fa144a449a01268011431) ) - ROM_REGION( 0x20000, "gfx2", 0 ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles", 0 ) ROM_LOAD( "horekid.05", 0x00000, 0x8000, CRC(da25ae10) SHA1(83d8b78cff85854b497b40525ec3c93a84ba6248) ) ROM_LOAD( "horekid.06", 0x08000, 0x8000, CRC(616e4321) SHA1(5bf0e0a7290b6bcb5dfbb1070eeb683830e6916b) ) ROM_LOAD( "horekid.07", 0x10000, 0x8000, CRC(8c7d2be2) SHA1(efd70997126fc7c2622546fabe69cb222dca87f9) ) ROM_LOAD( "horekid.08", 0x18000, 0x8000, CRC(a0066b02) SHA1(d6437932028e937dab5728f40d6d09b6afe9a903) ) - ROM_REGION( 0x20000, "gfx3", 0 ) /* sprites */ + ROM_REGION( 0x20000, "sprites", 0 ) ROM_LOAD( "horekid.12", 0x00000, 0x8000, CRC(a3caa07a) SHA1(4baa7d1867dbaa8bace43416040114129f5405d6) ) ROM_LOAD( "horekid.13", 0x08000, 0x8000, CRC(0e48ff8e) SHA1(5a3025991378ed3f9bdc2d420b1432332278178b) ) ROM_LOAD( "horekid.14", 0x10000, 0x8000, CRC(e300747a) SHA1(5875a46c215b12f1e9a889819215bca40e4459a6) ) ROM_LOAD( "horekid.15", 0x18000, 0x8000, CRC(51105741) SHA1(01c3bb2c03ce1ca959d62d64be3a019e74f677ba) ) ROM_REGION( 0x400, "proms", 0 ) - ROM_LOAD( "kid_prom.10f", 0x000, 0x100, CRC(ca13ce23) SHA1(46f0ed22f601721fa35bab12ce8816f30b102f59) ) /* red */ - ROM_LOAD( "kid_prom.11f", 0x100, 0x100, CRC(fb44285a) SHA1(f9605e82f63188daeff044fd48d81c1dfc4d4f2a) ) /* green */ - ROM_LOAD( "kid_prom.12f", 0x200, 0x100, CRC(40d41237) SHA1(b33082540d739a3bfe096f68f3359fbf1360b5be) ) /* blue */ - ROM_LOAD( "kid_prom.2g", 0x300, 0x100, CRC(4b9be0ed) SHA1(81aa7bb24fe6ea13f5dffdb67ea699adf0b3129a) ) /* clut */ + ROM_LOAD( "kid_prom.10f", 0x000, 0x100, CRC(ca13ce23) SHA1(46f0ed22f601721fa35bab12ce8816f30b102f59) ) // red + ROM_LOAD( "kid_prom.11f", 0x100, 0x100, CRC(fb44285a) SHA1(f9605e82f63188daeff044fd48d81c1dfc4d4f2a) ) // green + ROM_LOAD( "kid_prom.12f", 0x200, 0x100, CRC(40d41237) SHA1(b33082540d739a3bfe096f68f3359fbf1360b5be) ) // blue + ROM_LOAD( "kid_prom.2g", 0x300, 0x100, CRC(4b9be0ed) SHA1(81aa7bb24fe6ea13f5dffdb67ea699adf0b3129a) ) // clut - ROM_REGION( 0x0100, "user1", 0 ) - ROM_LOAD( "kid_prom.4e", 0x000, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) /* ctable */ + ROM_REGION( 0x0100, "palbank_prom", 0 ) + ROM_LOAD( "kid_prom.4e", 0x000, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) // ctable - ROM_REGION( 0x2000, "prot_chip", 0 ) /* unknown, mostly text */ + ROM_REGION( 0x2000, "prot_chip", 0 ) // unknown, mostly text ROM_LOAD( "horekid.17", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) ROM_END @@ -909,17 +1287,17 @@ ROM_START( horekidb2 ) ROM_LOAD( "13b.bin", 0x8000, 0x4000, CRC(78631a6c) SHA1(24b43d8d86c53990d6d781830f49ce28d69eef02) ) // 0xxxxxxxxxxxxxx = 0xFF ROM_CONTINUE( 0x8000, 0x4000 ) - ROM_REGION( 0x2000, "gfx1", 0 ) // alphanumerics, believed , identical to the original + ROM_REGION( 0x2000, "fgtiles", 0 ) // believed identical to the original ROM_LOAD( "18.bin", 0x0000, 0x2000, BAD_DUMP CRC(23a1d180) SHA1(daf212e7b82f8ec65265f0ee6b05ba4c78cfa379) ) ROM_LOAD( "horekid.16", 0x0000, 0x2000, CRC(104b77cc) SHA1(f875c7fe4f2b540bc44fa144a449a01268011431) ) // Given the rest of the GFX ROMs match horekid we'll assume this does too, for now - ROM_REGION( 0x20000, "gfx2", 0 ) // tiles, identical to the original + ROM_REGION( 0x20000, "bgtiles", 0 ) // identical to the original ROM_LOAD( "9.bin", 0x00000, 0x8000, CRC(da25ae10) SHA1(83d8b78cff85854b497b40525ec3c93a84ba6248) ) ROM_LOAD( "10.bin", 0x08000, 0x8000, CRC(616e4321) SHA1(5bf0e0a7290b6bcb5dfbb1070eeb683830e6916b) ) ROM_LOAD( "11.bin", 0x10000, 0x8000, CRC(8c7d2be2) SHA1(efd70997126fc7c2622546fabe69cb222dca87f9) ) ROM_LOAD( "12.bin", 0x18000, 0x8000, CRC(a0066b02) SHA1(d6437932028e937dab5728f40d6d09b6afe9a903) ) - ROM_REGION( 0x20000, "gfx3", 0 ) // sprites, identical to the original + ROM_REGION( 0x20000, "sprites", 0 ) // identical to the original ROM_LOAD( "14b.bin", 0x00000, 0x8000, CRC(a3caa07a) SHA1(4baa7d1867dbaa8bace43416040114129f5405d6) ) ROM_LOAD( "15b.bin", 0x08000, 0x8000, CRC(0e48ff8e) SHA1(5a3025991378ed3f9bdc2d420b1432332278178b) ) ROM_LOAD( "16b.bin", 0x10000, 0x8000, CRC(e300747a) SHA1(5875a46c215b12f1e9a889819215bca40e4459a6) ) @@ -931,7 +1309,7 @@ ROM_START( horekidb2 ) ROM_LOAD( "kid_prom.12f", 0x200, 0x100, CRC(40d41237) SHA1(b33082540d739a3bfe096f68f3359fbf1360b5be) ) // blue ROM_LOAD( "kid_prom.2g", 0x300, 0x100, CRC(4b9be0ed) SHA1(81aa7bb24fe6ea13f5dffdb67ea699adf0b3129a) ) // clut - ROM_REGION( 0x0100, "user1", 0 ) // not dumped for this set + ROM_REGION( 0x0100, "palbank_prom", 0 ) // not dumped for this set ROM_LOAD( "kid_prom.4e", 0x000, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) // ctable ROM_END @@ -943,57 +1321,58 @@ ROM_END it is a common PCB, and we need to clarify that this is not the real thing. */ ROM_START( boobhack ) - ROM_REGION( 0x20000, "maincpu", 0 ) /* 68000 code (main CPU) */ + ROM_REGION( 0x20000, "maincpu", 0 ) // 68000 code ROM_LOAD16_BYTE( "1-c.bin", 0x00000, 0x8000, CRC(786619c7) SHA1(6b4a659839a7c19370a81f9f9b26e4fe0d210d7b) ) ROM_LOAD16_BYTE( "1-b.bin", 0x00001, 0x8000, CRC(3bbb475b) SHA1(575cdc4f902f15335579c0f860fa75e33a0ea539) ) ROM_LOAD16_BYTE( "1-d.bin", 0x10000, 0x8000, CRC(375c0c50) SHA1(ee040dbdfe6673cf48f143518458609b21b4e15d) ) ROM_LOAD16_BYTE( "1-a.bin", 0x10001, 0x8000, CRC(ee7d52bb) SHA1(b9083f672a6bc37ec2bbb9af081e6f27b712b663) ) - ROM_REGION( 0x10000, "audiocpu", 0 ) /* Z80 code (sound) */ + ROM_REGION( 0x10000, "audiocpu", 0 ) // Z80 code ROM_LOAD( "1-i.bin", 0x0000, 0x4000,CRC(49cd3b81) SHA1(284d75f6f6121d0581bb62f13ee02c85c3d972d2) ) ROM_LOAD( "1-j.bin", 0x4000, 0x4000,CRC(c1eaa938) SHA1(839f03e701f072a6441ee4980eb1961859c40d97) ) ROM_LOAD( "1-k.bin", 0x8000, 0x4000,CRC(0a2bc702) SHA1(0cef9e9022a27d30d2f83a16a55d8ede0ab686f4) ) - ROM_REGION( 0x2000, "gfx1", 0 ) /* alphanumerics */ + ROM_REGION( 0x2000, "fgtiles", 0 ) ROM_LOAD( "1-p.bin", 0x0000, 0x2000, CRC(104b77cc) SHA1(f875c7fe4f2b540bc44fa144a449a01268011431) ) - ROM_REGION( 0x20000, "gfx2", 0 ) /* tiles */ + ROM_REGION( 0x20000, "bgtiles", 0 ) ROM_LOAD( "1-e.bin", 0x00000, 0x8000, CRC(da25ae10) SHA1(83d8b78cff85854b497b40525ec3c93a84ba6248) ) ROM_LOAD( "1-f.bin", 0x08000, 0x8000, CRC(616e4321) SHA1(5bf0e0a7290b6bcb5dfbb1070eeb683830e6916b) ) ROM_LOAD( "1-g.bin", 0x10000, 0x8000, CRC(8c7d2be2) SHA1(efd70997126fc7c2622546fabe69cb222dca87f9) ) ROM_LOAD( "1-h.bin", 0x18000, 0x8000, CRC(a0066b02) SHA1(d6437932028e937dab5728f40d6d09b6afe9a903) ) - ROM_REGION( 0x20000, "gfx3", 0 ) /* sprites */ + ROM_REGION( 0x20000, "sprites", 0 ) ROM_LOAD( "1-l.bin", 0x00000, 0x8000, CRC(a3caa07a) SHA1(4baa7d1867dbaa8bace43416040114129f5405d6) ) ROM_LOAD( "1-m.bin", 0x08000, 0x8000, CRC(15b6cbdf) SHA1(b7f2a527946bcbd51aeae98b8971f4fbabcb3d14) ) // Booby Kids gfx hack changes these 2 roms ONLY ROM_LOAD( "1-n.bin", 0x10000, 0x8000, CRC(e300747a) SHA1(5875a46c215b12f1e9a889819215bca40e4459a6) ) ROM_LOAD( "1-o.bin", 0x18000, 0x8000, CRC(cddc6a6c) SHA1(28d12342e0ada941f68845fa65793a3f5fa21246) ) // Booby Kids gfx hack changes these 2 roms ONLY ROM_REGION( 0x400, "proms", 0 ) - ROM_LOAD( "kid_prom.10f", 0x000, 0x100, CRC(ca13ce23) SHA1(46f0ed22f601721fa35bab12ce8816f30b102f59) ) /* red */ - ROM_LOAD( "kid_prom.11f", 0x100, 0x100, CRC(fb44285a) SHA1(f9605e82f63188daeff044fd48d81c1dfc4d4f2a) ) /* green */ - ROM_LOAD( "kid_prom.12f", 0x200, 0x100, CRC(40d41237) SHA1(b33082540d739a3bfe096f68f3359fbf1360b5be) ) /* blue */ - ROM_LOAD( "kid_prom.2g", 0x300, 0x100, CRC(4b9be0ed) SHA1(81aa7bb24fe6ea13f5dffdb67ea699adf0b3129a) ) /* clut */ + ROM_LOAD( "kid_prom.10f", 0x000, 0x100, CRC(ca13ce23) SHA1(46f0ed22f601721fa35bab12ce8816f30b102f59) ) // red + ROM_LOAD( "kid_prom.11f", 0x100, 0x100, CRC(fb44285a) SHA1(f9605e82f63188daeff044fd48d81c1dfc4d4f2a) ) // green + ROM_LOAD( "kid_prom.12f", 0x200, 0x100, CRC(40d41237) SHA1(b33082540d739a3bfe096f68f3359fbf1360b5be) ) // blue + ROM_LOAD( "kid_prom.2g", 0x300, 0x100, CRC(4b9be0ed) SHA1(81aa7bb24fe6ea13f5dffdb67ea699adf0b3129a) ) // clut - ROM_REGION( 0x0100, "user1", 0 ) - ROM_LOAD( "kid_prom.4e", 0x000, 0x100, BAD_DUMP CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) /* ctable */ + ROM_REGION( 0x0100, "palbank_prom", 0 ) + ROM_LOAD( "kid_prom.4e", 0x000, 0x100, BAD_DUMP CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) // ctable ROM_END +} // anonymous namespace -// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS -GAME( 1985, terracre, 0, ym3526, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, terracreo, terracre, ym3526, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, terracrea, terracre, ym3526, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, terracren, terracre, ym2203, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM2203)", MACHINE_SUPPORTS_SAVE ) +// YEAR, NAME, PARENT, MACHINE, INPUT, STATE, INIT, MONITOR, COMPANY, FULLNAME, FLAGS +GAME( 1985, terracre, 0, ym3526, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, terracreo, terracre, ym3526, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, terracrea, terracre, ym3526, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 3)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, terracren, terracre, ym2203, terracre, terracre_state, empty_init, ROT270, "Nichibutsu", "Terra Cresta (YM2203)", MACHINE_SUPPORTS_SAVE ) // later HW: supports 1412M2 device, see also mightguy.cpp -GAME( 1986, amazon, 0, amazon_1412m2, amazon, amazon_state, empty_init, ROT270, "Nichibutsu", "Soldier Girl Amazon", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, amazont, amazon, amazon_1412m2, amazon, amazon_state, empty_init, ROT270, "Nichibutsu (Tecfri license)", "Soldier Girl Amazon (Tecfri license)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, amatelas, amazon, amazon_1412m2, amazon, amazon_state, empty_init, ROT270, "Nichibutsu", "Sei Senshi Amatelass", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, horekid, 0, amazon_1412m2, horekid, amazon_state, empty_init, ROT270, "Nichibutsu", "Kid no Hore Hore Daisakusen", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, amazon, 0, amazon_1412m2, amazon, amazon_state, empty_init, ROT270, "Nichibutsu", "Soldier Girl Amazon", MACHINE_SUPPORTS_SAVE ) //AT-1(1602) and AT-2(1602) pcbs +GAME( 1986, amazont, amazon, amazon_1412m2, amazon, amazon_state, empty_init, ROT270, "Nichibutsu (Tecfri license)", "Soldier Girl Amazon (Tecfri license)", MACHINE_SUPPORTS_SAVE ) //AT-1(1602) and AT-2(1602) pcbs +GAME( 1986, amatelas, amazon, amazon_1412m2, amazon, amazon_state, empty_init, ROT270, "Nichibutsu", "Sei Senshi Amatelass", MACHINE_SUPPORTS_SAVE ) //AT-1(1602) and AT-2(1602) pcbs +GAME( 1987, horekid, 0, amazon_1412m2, horekid, amazon_state, empty_init, ROT270, "Nichibutsu", "Kid no Hore Hore Daisakusen", MACHINE_SUPPORTS_SAVE ) //BK-I(1502) and BK-II(1502) pcbs // bootlegs -GAME( 1987, horekidb, horekid, amazon_base, horekid, terracre_state, empty_init, ROT270, "bootleg", "Kid no Hore Hore Daisakusen (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, horekidb2, horekid, horekidb2, horekidb2, terracre_state, empty_init, ROT270, "bootleg", "Kid no Hore Hore Daisakusen (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, boobhack, horekid, amazon_base, horekid, terracre_state, empty_init, ROT270, "bootleg", "Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg))", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, horekidb, horekid, amazon_base, horekid, terracre_state, empty_init, ROT270, "bootleg", "Kid no Hore Hore Daisakusen (bootleg set 1)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, horekidb2, horekid, horekidb2, horekidb2, terracre_state, empty_init, ROT270, "bootleg", "Kid no Hore Hore Daisakusen (bootleg set 2)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, boobhack, horekid, amazon_base, horekid, terracre_state, empty_init, ROT270, "bootleg", "Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg))", MACHINE_SUPPORTS_SAVE ) |