diff options
Diffstat (limited to 'src/mame/drivers/terracre.c')
-rw-r--r-- | src/mame/drivers/terracre.c | 1021 |
1 files changed, 1021 insertions, 0 deletions
diff --git a/src/mame/drivers/terracre.c b/src/mame/drivers/terracre.c new file mode 100644 index 00000000000..63cc92115d7 --- /dev/null +++ b/src/mame/drivers/terracre.c @@ -0,0 +1,1021 @@ +/****************************************************************** +Terra Cresta (preliminary) +Nichibutsu 1985 +68000 + Z80 + +driver by Carlos A. Lozano (calb@gsyc.inf.uc3m.es) + +TODO: + + - I'm playing samples with a DAC, but they could be ADPCM + - find correct high-scores table for 'amazon' + + +Stephh's notes (based on the games M68000 code and some tests) : + + +1) 'terracr*' + + - Each high-score name is made up of 10 chars. + + +2) 'amazon' + + - Each high-score name is made up of 3 chars followed by 7 0x00. + + +3) 'amatelas' + + - Each high-score name is made up of 10 chars. + + +4) 'horekid*' + + - Each high-score name is made up of 3 chars. + + - There is a "debug mode" ! To activate it, you need to have cheats ON. + Set "Debug Mode" Dip Switch to ON and be sure that "Cabinet" Dip Switch + is set to "Upright". Its features (see below) only affect player 1 ! + Features : + * invulnerability and infinite time : + . insert a coin + . press FAKE button 3 and START1 (player 1 buttons 1 and 2 must NOT be pressed !) + * level select (there are 32 levels) : + . insert a coin + . press FAKE button 3 ("00" will be displayed - this is an hex. display) + . press FAKE button 3 and player 1 button 1 to increase level + . press FAKE button 3 and player 1 button 2 to decrease level + . press START1 to start a game with the selected level + FAKE button 3 is in fact the same as pressing simultaneously player 2 buttons 1 and 2. + (I've code this that way because my keyboard doesn't accept too many keys pressed) + + + +Amazon +(c)1986 Nichibutsu + +AT-1 + 16MHz + + 6116 - - 10 9 + 6116 - - 12 11 68000-8 + + 6116 + 6116 + SW + 15 14 13 clr.12f clr.11f clr.10f SW + + 16 1412M2 XBA + + +AT-2 + + 2G 6 7 8 + 4E 4 5 6116 + + Z80A YM3526 + 2148 2148 + 2148 2148 2148 2148 + 1 2 3 6116 + 22MHz +*/ + +#include "driver.h" +#include "cpu/z80/z80.h" +#include "sound/dac.h" +#include "sound/2203intf.h" +#include "sound/3812intf.h" + +static const UINT16 *mpProtData; +static UINT8 mAmazonProtCmd; +static UINT8 mAmazonProtReg[6]; + +extern UINT16 *amazon_videoram; + +extern PALETTE_INIT( amazon ); +extern WRITE16_HANDLER( amazon_background_w ); +extern WRITE16_HANDLER( amazon_foreground_w ); +extern WRITE16_HANDLER( amazon_scrolly_w ); +extern WRITE16_HANDLER( amazon_scrollx_w ); +extern WRITE16_HANDLER( amazon_flipscreen_w ); +extern VIDEO_START( amazon ); +extern VIDEO_UPDATE( amazon ); + +static const UINT16 mAmazonProtData[] = +{ + /* default high scores (0x40db4) - wrong data ? */ + 0x0000,0x5000,0x5341,0x4b45,0x5349,0x4755,0x5245, + 0x0000,0x4000,0x0e4b,0x4154,0x5544,0x4f4e,0x0e0e, + 0x0000,0x3000,0x414e,0x4b41,0x4b45,0x5544,0x4f4e, + 0x0000,0x2000,0x0e0e,0x4b49,0x5455,0x4e45,0x0e0e, + 0x0000,0x1000,0x0e4b,0x414b,0x4553,0x4f42,0x410e, + + /* code (0x40d92) */ + 0x4ef9,0x0000,0x62fa,0x0000,0x4ef9,0x0000,0x805E,0x0000, + 0xc800 /* checksum */ +}; + +static const UINT16 mAmatelasProtData[] = +{ + /* default high scores (0x40db4) */ + 0x0000,0x5000,0x5341,0x4b45,0x5349,0x4755,0x5245, + 0x0000,0x4000,0x0e4b,0x4154,0x5544,0x4f4e,0x0e0e, + 0x0000,0x3000,0x414e,0x4b41,0x4b45,0x5544,0x4f4e, + 0x0000,0x2000,0x0e0e,0x4b49,0x5455,0x4e45,0x0e0e, + 0x0000,0x1000,0x0e4b,0x414b,0x4553,0x4f42,0x410e, + + /* code (0x40d92) */ + 0x4ef9,0x0000,0x632e,0x0000,0x4ef9,0x0000,0x80C2,0x0000, + 0x6100 /* checksum */ +}; + +static const UINT16 mHoreKidProtData[] = +{ + /* N/A */ + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000, + + /* code (0x40dba) */ + 0x4e75,0x4e75,0x4e75,0x4e75,0x4e75,0x4e75,0x4e75,0x4e75, + 0x1800 /* checksum */ +}; + +static READ16_HANDLER( horekid_IN2_r ) +{ + int data = readinputportbytag("IN1"); + + if (!(data & 0x40)) // FAKE button 3 for "Debug Mode" + { + data &= 0x40; + data |= ~0x30; + } + + return data; +} + +static WRITE16_HANDLER( amazon_sound_w ) +{ + soundlatch_w(0,((data & 0x7f) << 1) | 1); +} + +static READ8_HANDLER( soundlatch_clear_r ) +{ + soundlatch_clear_w(0,0); + return 0; +} + +static READ16_HANDLER( amazon_protection_r ) +{ + offset = mAmazonProtReg[2]; + if( offset<=0x56 ) + { + UINT16 data; + data = mpProtData[offset/2]; + if( offset&1 ) return data&0xff; + return data>>8; + } + return 0; +} + +static WRITE16_HANDLER( amazon_protection_w ) +{ + if( ACCESSING_LSB ) + { + if( offset==1 ) + { + mAmazonProtCmd = data; + } + else + { + if( mAmazonProtCmd>=32 && mAmazonProtCmd<=0x37 ) + { + mAmazonProtReg[mAmazonProtCmd-0x32] = data; + } + } + } +} + +static MACHINE_START( amazon ) +{ + /* set up for save */ + state_save_register_global(mAmazonProtCmd); + state_save_register_global_array(mAmazonProtReg); +} + +/* This is not the REAL Booby Kids (early Japanese version of Kid no Hore Hore Daisakusen), + it is a bootleg that was manufactureed in Italy which became popular in Europe. The bootleggers + probably called it 'Booby Kids' because this is the name under which the game was known on home systems + at the time. This is actually just a graphic hack of the other bootleg (horekidb) it is supported because + it is a common PCB, and we need to clarify that this is not the real thing. +*/ +ROM_START( boobhack ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 68000 code (main CPU) */ + 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, REGION_CPU2, 0 ) /* Z80 code (sound) */ + 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, REGION_GFX1, ROMREGION_DISPOSE ) /* alphanumerics */ + ROM_LOAD( "1-p.bin", 0x0000, 0x2000, CRC(104b77cc) SHA1(f875c7fe4f2b540bc44fa144a449a01268011431) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* tiles */ + 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, REGION_GFX3, ROMREGION_DISPOSE ) /* sprites */ + 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( 0x500, REGION_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.4e", 0x400, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) /* ctable */ +ROM_END + +static ADDRESS_MAP_START( terracre_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x020000, 0x0201ff) AM_READ(MRA16_RAM) + AM_RANGE(0x020200, 0x021fff) AM_READ(MRA16_RAM) + AM_RANGE(0x023000, 0x023fff) AM_READ(MRA16_RAM) + AM_RANGE(0x024000, 0x024001) AM_READ(input_port_0_word_r) + AM_RANGE(0x024002, 0x024003) AM_READ(input_port_1_word_r) + AM_RANGE(0x024004, 0x024005) AM_READ(input_port_2_word_r) + AM_RANGE(0x024006, 0x024007) AM_READ(input_port_3_word_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( terracre_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x020000, 0x0201ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) + AM_RANGE(0x020200, 0x021fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x022000, 0x022fff) AM_WRITE(amazon_background_w) AM_BASE(&amazon_videoram) + AM_RANGE(0x023000, 0x023fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x026000, 0x026001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */ + AM_RANGE(0x026002, 0x026003) AM_WRITE(amazon_scrollx_w) + AM_RANGE(0x026004, 0x026005) AM_WRITE(amazon_scrolly_w) + AM_RANGE(0x02600c, 0x02600d) AM_WRITE(amazon_sound_w) + AM_RANGE(0x028000, 0x0287ff) AM_WRITE(amazon_foreground_w) AM_BASE(&videoram16) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( amazon_readmem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_READ(MRA16_ROM) + AM_RANGE(0x040000, 0x040fff) AM_READ(MRA16_RAM) + AM_RANGE(0x044000, 0x044001) AM_READ(input_port_0_word_r) + AM_RANGE(0x044002, 0x044003) AM_READ(input_port_1_word_r) + AM_RANGE(0x044004, 0x044005) AM_READ(input_port_2_word_r) + AM_RANGE(0x044006, 0x044007) AM_READ(input_port_3_word_r) + AM_RANGE(0x070000, 0x070001) AM_READ(amazon_protection_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( amazon_writemem, ADDRESS_SPACE_PROGRAM, 16 ) + AM_RANGE(0x000000, 0x01ffff) AM_WRITE(MWA16_ROM) + AM_RANGE(0x040000, 0x0401ff) AM_WRITE(MWA16_RAM) AM_BASE(&spriteram16) + AM_RANGE(0x040200, 0x040fff) AM_WRITE(MWA16_RAM) + AM_RANGE(0x042000, 0x042fff) AM_WRITE(amazon_background_w) AM_BASE(&amazon_videoram) + AM_RANGE(0x046000, 0x046001) AM_WRITE(amazon_flipscreen_w) /* flip screen & coin counters */ + AM_RANGE(0x046002, 0x046003) AM_WRITE(amazon_scrollx_w) + AM_RANGE(0x046004, 0x046005) AM_WRITE(amazon_scrolly_w) + AM_RANGE(0x04600c, 0x04600d) AM_WRITE(amazon_sound_w) + AM_RANGE(0x050000, 0x050fff) AM_WRITE(amazon_foreground_w) AM_BASE(&videoram16) + AM_RANGE(0x070000, 0x070003) AM_WRITE(amazon_protection_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sound_readmem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0xbfff) AM_READ(MRA8_ROM) + AM_RANGE(0xc000, 0xcfff) AM_READ(MRA8_RAM) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) + AM_RANGE(0x0000, 0xbfff) AM_WRITE(MWA8_ROM) + AM_RANGE(0xc000, 0xcfff) AM_WRITE(MWA8_RAM) +ADDRESS_MAP_END + + +static ADDRESS_MAP_START( sound_readport, ADDRESS_SPACE_IO, 8 ) + ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) + AM_RANGE(0x04, 0x04) AM_READ(soundlatch_clear_r) + AM_RANGE(0x06, 0x06) AM_READ(soundlatch_r) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sound_writeport_3526, ADDRESS_SPACE_IO, 8 ) + ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) + AM_RANGE(0x00, 0x00) AM_WRITE(YM3526_control_port_0_w) + AM_RANGE(0x01, 0x01) AM_WRITE(YM3526_write_port_0_w) + AM_RANGE(0x02, 0x02) AM_WRITE(DAC_0_signed_data_w) + AM_RANGE(0x03, 0x03) AM_WRITE(DAC_1_signed_data_w) +ADDRESS_MAP_END + +static ADDRESS_MAP_START( sound_writeport_2203, ADDRESS_SPACE_IO, 8 ) + ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) + AM_RANGE(0x00, 0x00) AM_WRITE(YM2203_control_port_0_w) + AM_RANGE(0x01, 0x01) AM_WRITE(YM2203_write_port_0_w) + AM_RANGE(0x02, 0x02) AM_WRITE(DAC_0_signed_data_w) + AM_RANGE(0x03, 0x03) AM_WRITE(DAC_1_signed_data_w) +ADDRESS_MAP_END + +static INPUT_PORTS_START( terracre ) + PORT_START_TAG("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + 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( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE( 0x2000, IP_ACTIVE_LOW ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("DSW") + PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) + 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_DIPSETTING( 0x000c, "20k then every 60k" ) // "20000 60000" in the "test mode" + PORT_DIPSETTING( 0x0008, "30k then every 70k" ) // "30000 70000" in the "test mode" + PORT_DIPSETTING( 0x0004, "40k then every 80k" ) // "40000 80000" in the "test mode" + PORT_DIPSETTING( 0x0000, "50k then every 90k" ) // "50000 90000" in the "test mode" + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Cocktail ) ) + PORT_DIPUNUSED( 0x0040, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x0080, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coin_A ) ) + 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_DIPSETTING( 0x0000, DEF_STR( 3C_1C ) ) + PORT_DIPSETTING( 0x0400, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x0c00, DEF_STR( 1C_3C ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( 1C_6C ) ) + PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x1000, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Flip_Screen ) ) // not in the "test mode" + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x4000, "Complete Invulnerability (Cheat)") + PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x8000, 0x8000, "Base Ship Invulnerability (Cheat)") + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( amazon ) + PORT_START_TAG("IN0") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY + 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( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_COCKTAIL + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_COCKTAIL + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_COCKTAIL + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE( 0x2000, IP_ACTIVE_LOW ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("DSW") + PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) + 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_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" + PORT_DIPSETTING( 0x0000, "50k then every 70k" ) // "50000 70000" in the "test mode" + PORT_DIPNAME( 0x0010, 0x0010, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Cocktail ) ) + PORT_DIPUNUSED( 0x0040, IP_ACTIVE_LOW ) + PORT_DIPUNUSED( 0x0080, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coin_A ) ) + 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_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_DIPSETTING( 0x1000, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Hard ) ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Flip_Screen ) ) // not in the "test mode" + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x4000, 0x4000, "Level" ) + PORT_DIPSETTING( 0x4000, DEF_STR( Low ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( High ) ) + PORT_DIPNAME( 0x8000, 0x8000, "Sprite Test" ) + PORT_DIPSETTING( 0x8000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) +INPUT_PORTS_END + +static INPUT_PORTS_START( horekid ) + PORT_START_TAG("DSW") + PORT_DIPNAME( 0x0003, 0x0003, DEF_STR( Lives ) ) + 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_DIPSETTING( 0x000c, "20k then every 60k" ) // "20000 60000" in the "test mode" + PORT_DIPSETTING( 0x0008, "50k then every 60k" ) // "50000 60000" in the "test mode" + PORT_DIPSETTING( 0x0004, "20k then every 90k" ) // "20000 90000" in the "test mode" + PORT_DIPSETTING( 0x0000, "50k then every 90k" ) // "50000 90000" in the "test mode" + PORT_DIPNAME( 0x0010, 0x0000, DEF_STR( Demo_Sounds ) ) + PORT_DIPSETTING( 0x0010, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0x0020, 0x0000, DEF_STR( Cabinet ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Upright ) ) + PORT_DIPSETTING( 0x0020, DEF_STR( Cocktail ) ) + PORT_DIPNAME( 0x00c0, 0x00c0, DEF_STR( Difficulty ) ) + PORT_DIPSETTING( 0x00c0, DEF_STR( Easy ) ) + PORT_DIPSETTING( 0x0080, DEF_STR( Normal ) ) + PORT_DIPSETTING( 0x0040, DEF_STR( Hard ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( Hardest ) ) + PORT_DIPNAME( 0x0300, 0x0300, DEF_STR( Coin_A ) ) + 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_DIPSETTING( 0x0400, DEF_STR( 2C_1C ) ) + PORT_DIPSETTING( 0x0c00, DEF_STR( 1C_1C ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( 2C_3C ) ) + PORT_DIPSETTING( 0x0800, DEF_STR( 1C_2C ) ) + PORT_DIPUNUSED( 0x1000, IP_ACTIVE_LOW ) + PORT_DIPNAME( 0x2000, 0x2000, DEF_STR( Flip_Screen ) ) + PORT_DIPSETTING( 0x2000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x0000, DEF_STR( On ) ) + PORT_DIPNAME( 0xc000, 0xc000, "Debug Mode (Cheat)") + PORT_DIPSETTING( 0xc000, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x8000, DEF_STR( On ) ) // "Cabinet" Dip Switch must be set to "Upright" too ! +// PORT_DIPSETTING( 0x4000, DEF_STR( Off ) ) // duplicated setting +// PORT_DIPSETTING( 0x0000, DEF_STR( Off ) ) // duplicated setting + + PORT_START_TAG("IN0") + PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_COIN2 ) + PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE_NO_TOGGLE(0x2000, IP_ACTIVE_LOW) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("IN1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME ("P2 Buttons 1+2 (Debug Cheat)") // fake button for "Debug Mode" (see read handler) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) + + PORT_START_TAG("IN2") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN ) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN ) +INPUT_PORTS_END + +static const gfx_layout char_layout = +{ + 8,8, + RGN_FRAC(1,1), + 4, + { 0, 1, 2, 3 }, + { 1*4, 0*4, 3*4, 2*4, 5*4, 4*4, 7*4, 6*4 }, + { 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 }, + 32*8 +}; + +static const gfx_layout tile_layout = +{ + 16,16, + RGN_FRAC(1,1), + 4, + { 0, 1, 2, 3 }, + { + 4, 0, 12, 8, 20, 16, 28, 24, + 32+4, 32+0, 32+12, 32+8, 32+20, 32+16, 32+28, 32+24 + }, + { + 0*64, 1*64, 2*64, 3*64, 4*64, 5*64, 6*64, 7*64, + 8*64, 9*64, 10*64, 11*64, 12*64, 13*64, 14*64, 15*64 + }, + 64*16 +}; + +static const gfx_layout sprite_layout = +{ + 16,16, + RGN_FRAC(1,2), + 4, + { 0, 1, 2, 3 }, + { + 4, 0, RGN_FRAC(1,2)+4, RGN_FRAC(1,2)+0, + 12, 8, RGN_FRAC(1,2)+12, RGN_FRAC(1,2)+8, + 20, 16, RGN_FRAC(1,2)+20, RGN_FRAC(1,2)+16, + 28, 24, RGN_FRAC(1,2)+28, RGN_FRAC(1,2)+24 + }, + { + 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32, + 8*32, 9*32, 10*32, 11*32, 12*32, 13*32, 14*32, 15*32 + }, + 32*16 +}; + +static GFXDECODE_START( terracre ) + GFXDECODE_ENTRY( REGION_GFX1, 0, char_layout, 0, 1 ) + GFXDECODE_ENTRY( REGION_GFX2, 0, tile_layout, 1*16, 16 ) + GFXDECODE_ENTRY( REGION_GFX3, 0, sprite_layout, 1*16+16*16, 256 ) +GFXDECODE_END + +static MACHINE_DRIVER_START( amazon ) + MDRV_CPU_ADD(M68000, 8000000 ) + MDRV_CPU_PROGRAM_MAP(amazon_readmem,amazon_writemem) + MDRV_CPU_VBLANK_INT(irq1_line_hold,1) + + MDRV_CPU_ADD(Z80, 4000000) + /* audio CPU */ /* 4 MHz???? */ + MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) + MDRV_CPU_IO_MAP(sound_readport,sound_writeport_3526) + MDRV_CPU_VBLANK_INT(irq0_line_hold,128) /* ??? */ + + MDRV_SCREEN_REFRESH_RATE( 60 ) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION) + + MDRV_MACHINE_START(amazon) + + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(32*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(terracre) + MDRV_PALETTE_LENGTH(256) + MDRV_COLORTABLE_LENGTH(1*16+16*16+16*256) + + MDRV_PALETTE_INIT(amazon) + MDRV_VIDEO_START(amazon) + MDRV_VIDEO_UPDATE(amazon) + + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD(YM3526, 4000000) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + + MDRV_SOUND_ADD(DAC, 0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + + MDRV_SOUND_ADD(DAC, 0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_DRIVER_END + +static MACHINE_DRIVER_START( ym3526 ) + MDRV_CPU_ADD(M68000, 8000000 ) + MDRV_CPU_PROGRAM_MAP(terracre_readmem,terracre_writemem) + MDRV_CPU_VBLANK_INT(irq1_line_hold,1) + + MDRV_CPU_ADD(Z80, 4000000) + /* audio CPU */ /* 4 MHz???? */ + MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) + MDRV_CPU_IO_MAP(sound_readport,sound_writeport_3526) + MDRV_CPU_VBLANK_INT(irq0_line_hold,128) /* ??? */ + + MDRV_SCREEN_REFRESH_RATE( 60 ) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_REAL_60HZ_VBLANK_DURATION) + + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(32*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(terracre) + MDRV_PALETTE_LENGTH(256) + MDRV_COLORTABLE_LENGTH(1*16+16*16+16*256) + + MDRV_PALETTE_INIT(amazon) + MDRV_VIDEO_START(amazon) + MDRV_VIDEO_UPDATE(amazon) + + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD(YM3526, 4000000) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) + + MDRV_SOUND_ADD(DAC, 0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + + MDRV_SOUND_ADD(DAC, 0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_DRIVER_END + +static MACHINE_DRIVER_START( ym2203 ) + MDRV_CPU_ADD(M68000, 8000000) /* 8 MHz?? */ + MDRV_CPU_PROGRAM_MAP(terracre_readmem,terracre_writemem) + MDRV_CPU_VBLANK_INT(irq1_line_hold,1) + + MDRV_CPU_ADD(Z80, 4000000) + /* audio CPU */ /* 4 MHz???? */ + MDRV_CPU_PROGRAM_MAP(sound_readmem,sound_writemem) + MDRV_CPU_IO_MAP(sound_readport,sound_writeport_2203) + MDRV_CPU_VBLANK_INT(irq0_line_hold,128) /* ??? */ + + MDRV_SCREEN_REFRESH_RATE(60) + MDRV_SCREEN_VBLANK_TIME(DEFAULT_60HZ_VBLANK_DURATION) + + MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER) + MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) + MDRV_SCREEN_SIZE(32*8, 32*8) + MDRV_SCREEN_VISIBLE_AREA(0*8, 32*8-1, 2*8, 30*8-1) + MDRV_GFXDECODE(terracre) + MDRV_PALETTE_LENGTH(256) + MDRV_COLORTABLE_LENGTH(1*16+16*16+16*256) + + MDRV_PALETTE_INIT(amazon) + MDRV_VIDEO_START(amazon) + MDRV_VIDEO_UPDATE(amazon) + + MDRV_SPEAKER_STANDARD_MONO("mono") + + MDRV_SOUND_ADD(YM2203, 4000000) + MDRV_SOUND_ROUTE(0, "mono", 0.20) + MDRV_SOUND_ROUTE(1, "mono", 0.20) + MDRV_SOUND_ROUTE(2, "mono", 0.20) + MDRV_SOUND_ROUTE(3, "mono", 0.40) + + MDRV_SOUND_ADD(YM2203, 4000000) + MDRV_SOUND_ROUTE(0, "mono", 0.20) + MDRV_SOUND_ROUTE(1, "mono", 0.20) + MDRV_SOUND_ROUTE(2, "mono", 0.20) + MDRV_SOUND_ROUTE(3, "mono", 0.40) + + MDRV_SOUND_ADD(DAC, 0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + + MDRV_SOUND_ADD(DAC, 0) + MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) +MACHINE_DRIVER_END + +ROM_START( terracre ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 128K for 68000 code */ + ROM_LOAD16_BYTE( "1a_4b.rom", 0x00001, 0x4000, CRC(76f17479) SHA1(e6be7f78fe7dc9d66feb3ada6ad08d461c66640d) ) + ROM_LOAD16_BYTE( "1a_4d.rom", 0x00000, 0x4000, CRC(8119f06e) SHA1(314e2d8e75f66862cf6567ac05f417a3a66f1254) ) + ROM_LOAD16_BYTE( "1a_6b.rom", 0x08001, 0x4000, CRC(ba4b5822) SHA1(0de3ce04e14aa5757936babdec9cd1341d4a06d6) ) + ROM_LOAD16_BYTE( "1a_6d.rom", 0x08000, 0x4000, CRC(ca4852f6) SHA1(12e968efb890ff4f982c2e04e090ac4339a97fc0) ) + ROM_LOAD16_BYTE( "1a_7b.rom", 0x10001, 0x4000, CRC(d0771bba) SHA1(ebbc24562d677488a536cb515d761f07cd50425c) ) + ROM_LOAD16_BYTE( "1a_7d.rom", 0x10000, 0x4000, CRC(029d59d9) SHA1(51053cafd5e7a4a5ba7008c6c6b28c612d935f40) ) + ROM_LOAD16_BYTE( "1a_9b.rom", 0x18001, 0x4000, CRC(69227b56) SHA1(58c8aa4baa1f5ddfc151f5ed6284a06e87866dd7) ) + ROM_LOAD16_BYTE( "1a_9d.rom", 0x18000, 0x4000, CRC(5a672942) SHA1(3890f87edb9047f3e4c6f4d4b47b7f9873962148) ) + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) + ROM_LOAD( "2a_15b.rom", 0x0000, 0x4000, CRC(604c3b11) SHA1(c01d1ddae40fa8b65dfc72f959942cb9664a548b) ) + ROM_LOAD( "2a_17b.rom", 0x4000, 0x4000, CRC(affc898d) SHA1(a78f06fa125de16fcdb8f4dc1629eb775aad913a) ) + ROM_LOAD( "2a_18b.rom", 0x8000, 0x4000, CRC(302dc0ab) SHA1(4db8f12e70f9adf1eb993c6a8af68b5edbf79773) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "2a_16b.rom", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) ) /* tiles */ + + ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD( "1a_15f.rom", 0x00000, 0x8000, CRC(984a597f) SHA1(1f33892f160691c44872b37f0f6cb1493c9f7fb1) ) /* Background */ + ROM_LOAD( "1a_17f.rom", 0x08000, 0x8000, CRC(30e297ff) SHA1(9843826ae63039d6693c8a0b30af721d70f40056) ) + + ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE ) + ROM_LOAD( "2a_6e.rom", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) ) /* Sprites */ + ROM_LOAD( "2a_7e.rom", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) ) + ROM_LOAD( "2a_6g.rom", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) ) + ROM_LOAD( "2a_7g.rom", 0x0c000, 0x4000, CRC(450749fc) SHA1(376ab98ab8db56ed45f7d97a221dfd52e389cb5a) ) + + ROM_REGION( 0x0500, REGION_PROMS, 0 ) + ROM_LOAD( "tc1a_10f.bin", 0x0000, 0x0100, CRC(ce07c544) SHA1(c3691cb420c88f1887a55e3035b5d017decbc17a) ) /* red component */ + ROM_LOAD( "tc1a_11f.bin", 0x0100, 0x0100, CRC(566d323a) SHA1(fe83585a0d9c7f942a5e54620b627a5a17a0fcf4) ) /* green component */ + ROM_LOAD( "tc1a_12f.bin", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) ) /* blue component */ + ROM_LOAD( "tc2a_2g.bin", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) /* sprite lookup table */ + ROM_LOAD( "tc2a_4e.bin", 0x0400, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) /* sprite palette bank */ +ROM_END + +/**********************************************************/ +/* Notes: All the roms are the same except the SOUND ROMs */ +/**********************************************************/ + +ROM_START( terracrb ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 128K for 68000 code */ + ROM_LOAD16_BYTE( "1a_4b.rom", 0x00001, 0x4000, CRC(76f17479) SHA1(e6be7f78fe7dc9d66feb3ada6ad08d461c66640d) ) + ROM_LOAD16_BYTE( "1a_4d.rom", 0x00000, 0x4000, CRC(8119f06e) SHA1(314e2d8e75f66862cf6567ac05f417a3a66f1254) ) + ROM_LOAD16_BYTE( "1a_6b.rom", 0x08001, 0x4000, CRC(ba4b5822) SHA1(0de3ce04e14aa5757936babdec9cd1341d4a06d6) ) + ROM_LOAD16_BYTE( "1a_6d.rom", 0x08000, 0x4000, CRC(ca4852f6) SHA1(12e968efb890ff4f982c2e04e090ac4339a97fc0) ) + ROM_LOAD16_BYTE( "1a_7b.rom", 0x10001, 0x4000, CRC(d0771bba) SHA1(ebbc24562d677488a536cb515d761f07cd50425c) ) + ROM_LOAD16_BYTE( "1a_7d.rom", 0x10000, 0x4000, CRC(029d59d9) SHA1(51053cafd5e7a4a5ba7008c6c6b28c612d935f40) ) + ROM_LOAD16_BYTE( "1a_9b.rom", 0x18001, 0x4000, CRC(69227b56) SHA1(58c8aa4baa1f5ddfc151f5ed6284a06e87866dd7) ) + ROM_LOAD16_BYTE( "1a_9d.rom", 0x18000, 0x4000, CRC(5a672942) SHA1(3890f87edb9047f3e4c6f4d4b47b7f9873962148) ) + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) + ROM_LOAD( "2a_15b.rom", 0x0000, 0x4000, CRC(604c3b11) SHA1(c01d1ddae40fa8b65dfc72f959942cb9664a548b) ) + ROM_LOAD( "dg.12", 0x4000, 0x4000, CRC(9e9b3808) SHA1(7b6f8d2b75f063aa81711a7c2bf1563cc38eee8b) ) + ROM_LOAD( "2a_18b.rom", 0x8000, 0x4000, CRC(302dc0ab) SHA1(4db8f12e70f9adf1eb993c6a8af68b5edbf79773) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "2a_16b.rom", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) ) /* tiles */ + + ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD( "1a_15f.rom", 0x00000, 0x8000, CRC(984a597f) SHA1(1f33892f160691c44872b37f0f6cb1493c9f7fb1) ) /* Background */ + ROM_LOAD( "1a_17f.rom", 0x08000, 0x8000, CRC(30e297ff) SHA1(9843826ae63039d6693c8a0b30af721d70f40056) ) + + ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE ) + ROM_LOAD( "2a_6e.rom", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) ) /* Sprites */ + ROM_LOAD( "2a_7e.rom", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) ) + ROM_LOAD( "2a_6g.rom", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) ) + ROM_LOAD( "2a_7g.rom", 0x0c000, 0x4000, CRC(450749fc) SHA1(376ab98ab8db56ed45f7d97a221dfd52e389cb5a) ) + + ROM_REGION( 0x0500, REGION_PROMS, 0 ) + ROM_LOAD( "tc1a_10f.bin", 0x0000, 0x0100, CRC(ce07c544) SHA1(c3691cb420c88f1887a55e3035b5d017decbc17a) ) /* red component */ + ROM_LOAD( "tc1a_11f.bin", 0x0100, 0x0100, CRC(566d323a) SHA1(fe83585a0d9c7f942a5e54620b627a5a17a0fcf4) ) /* green component */ + ROM_LOAD( "tc1a_12f.bin", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) ) /* blue component */ + ROM_LOAD( "tc2a_2g.bin", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) /* sprite lookup table */ + ROM_LOAD( "tc2a_4e.bin", 0x0400, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) /* sprite palette bank */ +ROM_END + +/**********************************************************/ +/* Notes: All the roms are the same except the SOUND ROMs */ +/**********************************************************/ + +ROM_START( terracra ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 128K for 68000 code */ + ROM_LOAD16_BYTE( "1a_4b.rom", 0x00001, 0x4000, CRC(76f17479) SHA1(e6be7f78fe7dc9d66feb3ada6ad08d461c66640d) ) + ROM_LOAD16_BYTE( "1a_4d.rom", 0x00000, 0x4000, CRC(8119f06e) SHA1(314e2d8e75f66862cf6567ac05f417a3a66f1254) ) + ROM_LOAD16_BYTE( "1a_6b.rom", 0x08001, 0x4000, CRC(ba4b5822) SHA1(0de3ce04e14aa5757936babdec9cd1341d4a06d6) ) + ROM_LOAD16_BYTE( "1a_6d.rom", 0x08000, 0x4000, CRC(ca4852f6) SHA1(12e968efb890ff4f982c2e04e090ac4339a97fc0) ) + ROM_LOAD16_BYTE( "1a_7b.rom", 0x10001, 0x4000, CRC(d0771bba) SHA1(ebbc24562d677488a536cb515d761f07cd50425c) ) + ROM_LOAD16_BYTE( "1a_7d.rom", 0x10000, 0x4000, CRC(029d59d9) SHA1(51053cafd5e7a4a5ba7008c6c6b28c612d935f40) ) + ROM_LOAD16_BYTE( "1a_9b.rom", 0x18001, 0x4000, CRC(69227b56) SHA1(58c8aa4baa1f5ddfc151f5ed6284a06e87866dd7) ) + ROM_LOAD16_BYTE( "1a_9d.rom", 0x18000, 0x4000, CRC(5a672942) SHA1(3890f87edb9047f3e4c6f4d4b47b7f9873962148) ) + + ROM_REGION( 0x10000, REGION_CPU2, 0 ) /* 64k to sound cpu */ + ROM_LOAD( "tc2a_15b.bin", 0x0000, 0x4000, CRC(790ddfa9) SHA1(90aa25fbfc9b5f52145ab3cf126610cf21024c20) ) + ROM_LOAD( "tc2a_17b.bin", 0x4000, 0x4000, CRC(d4531113) SHA1(efc37c33a0791cae4d4ab50bc884cd6c8a6f95f5) ) + + ROM_REGION( 0x02000, REGION_GFX1, ROMREGION_DISPOSE ) + ROM_LOAD( "2a_16b.rom", 0x00000, 0x2000, CRC(591a3804) SHA1(e1b46f5652e7f9677d75f01c6132975ace4facdd) ) /* tiles */ + + ROM_REGION( 0x10000, REGION_GFX2, ROMREGION_DISPOSE ) + ROM_LOAD( "1a_15f.rom", 0x00000, 0x8000, CRC(984a597f) SHA1(1f33892f160691c44872b37f0f6cb1493c9f7fb1) ) /* Background */ + ROM_LOAD( "1a_17f.rom", 0x08000, 0x8000, CRC(30e297ff) SHA1(9843826ae63039d6693c8a0b30af721d70f40056) ) + + ROM_REGION( 0x10000, REGION_GFX3, ROMREGION_DISPOSE ) + ROM_LOAD( "2a_6e.rom", 0x00000, 0x4000, CRC(bcf7740b) SHA1(8701862c35eb8fb1ec239253136a3858ebea4d0c) ) /* Sprites */ + ROM_LOAD( "2a_7e.rom", 0x04000, 0x4000, CRC(a70b565c) SHA1(153e5f5a9927c294660dd0d636a9f651d4984d6d) ) + ROM_LOAD( "2a_6g.rom", 0x08000, 0x4000, CRC(4a9ec3e6) SHA1(0a35b82fb49ecf7edafd02744a48490e744c0a00) ) + ROM_LOAD( "2a_7g.rom", 0x0c000, 0x4000, CRC(450749fc) SHA1(376ab98ab8db56ed45f7d97a221dfd52e389cb5a) ) + + ROM_REGION( 0x0500, REGION_PROMS, 0 ) + ROM_LOAD( "tc1a_10f.bin", 0x0000, 0x0100, CRC(ce07c544) SHA1(c3691cb420c88f1887a55e3035b5d017decbc17a) ) /* red component */ + ROM_LOAD( "tc1a_11f.bin", 0x0100, 0x0100, CRC(566d323a) SHA1(fe83585a0d9c7f942a5e54620b627a5a17a0fcf4) ) /* green component */ + ROM_LOAD( "tc1a_12f.bin", 0x0200, 0x0100, CRC(7ea63946) SHA1(d7b89694a80736c7605b5c83d25d8b706f4504ab) ) /* blue component */ + ROM_LOAD( "tc2a_2g.bin", 0x0300, 0x0100, CRC(08609bad) SHA1(e5daee3c3fea6620e3c2b91becd93bc4d3cdf011) ) /* sprite lookup table */ + ROM_LOAD( "tc2a_4e.bin", 0x0400, 0x0100, CRC(2c43991f) SHA1(312112832bee511b0545524295aa9bc2e756db0f) ) /* sprite palette bank */ +ROM_END + +ROM_START( amazon ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 68000 code (main CPU) */ + 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, REGION_CPU2, 0 ) /* Z80 code (sound) */ + 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, REGION_GFX1, ROMREGION_DISPOSE ) /* alphanumerics */ + ROM_LOAD( "8.16g", 0x0000, 0x2000, CRC(0cec8644) SHA1(a8f2a67b2243771e20ba51a539a83f0017dff6bc) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* tiles */ + 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, REGION_GFX3, ROMREGION_DISPOSE ) /* sprites */ + 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( 0x2000, REGION_USER1, 0 ) /* unknown, mostly text */ + ROM_LOAD( "16.18g", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) + + ROM_REGION( 0x500, REGION_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( "4e", 0x400, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) /* ctable */ +ROM_END + +ROM_START( amatelas ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 68000 code (main CPU) */ + 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, REGION_CPU2, 0 ) /* Z80 code (sound) */ + 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, REGION_GFX1, ROMREGION_DISPOSE ) /* alphanumerics */ + ROM_LOAD( "a8.16g", 0x0000, 0x2000, CRC(aeba2102) SHA1(fb4d047a78cd47f628fedfda8349dc46cf6a6f32) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* tiles */ + 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, REGION_GFX3, ROMREGION_DISPOSE ) /* sprites */ + 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( 0x2000, REGION_USER1, 0 ) /* unknown, mostly text */ + ROM_LOAD( "16.18g", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) + + ROM_REGION( 0x500, REGION_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( "4e", 0x400, 0x100, CRC(035f2c7b) SHA1(36e32a50146631e763711b586936b2815600f52d) ) /* ctable */ +ROM_END + +ROM_START( horekid ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 68000 code (main CPU) */ + 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, REGION_CPU2, 0 ) /* Z80 code (sound) */ + 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, REGION_GFX1, ROMREGION_DISPOSE ) /* alphanumerics */ + ROM_LOAD( "horekid.16", 0x0000, 0x2000, CRC(104b77cc) SHA1(f875c7fe4f2b540bc44fa144a449a01268011431) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* tiles */ + 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, REGION_GFX3, ROMREGION_DISPOSE ) /* sprites */ + 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( 0x2000, REGION_USER1, 0 ) /* unknown, mostly text */ + ROM_LOAD( "horekid.17", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) + + ROM_REGION( 0x500, REGION_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.4e", 0x400, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) /* ctable */ +ROM_END + +ROM_START( horekidb ) + ROM_REGION( 0x20000, REGION_CPU1, 0 ) /* 68000 code (main CPU) */ + 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, REGION_CPU2, 0 ) /* Z80 code (sound) */ + 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, REGION_GFX1, ROMREGION_DISPOSE ) /* alphanumerics */ + ROM_LOAD( "horekid.16", 0x0000, 0x2000, CRC(104b77cc) SHA1(f875c7fe4f2b540bc44fa144a449a01268011431) ) + + ROM_REGION( 0x20000, REGION_GFX2, ROMREGION_DISPOSE ) /* tiles */ + 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, REGION_GFX3, ROMREGION_DISPOSE ) /* sprites */ + 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( 0x2000, REGION_USER1, 0 ) /* unknown, mostly text */ + ROM_LOAD( "horekid.17", 0x0000, 0x2000, CRC(1d8d592b) SHA1(be8d6df8b5926069ae2cbc1dc26e1fa92d63f297) ) + + ROM_REGION( 0x500, REGION_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.4e", 0x400, 0x100, CRC(e4fb54ee) SHA1(aba89d347b24dc6680e6f25b4a6c0d6657bb6a83) ) /* ctable */ +ROM_END + +static DRIVER_INIT( amazon ) +{ + mpProtData = mAmazonProtData; +} + +static DRIVER_INIT( amatelas ) +{ + mpProtData = mAmatelasProtData; +} + +static DRIVER_INIT( horekid ) +{ + mpProtData = mHoreKidProtData; + memory_install_read16_handler(0, ADDRESS_SPACE_PROGRAM, 0x44004, 0x44005, 0, 0, horekid_IN2_r); +} + +/* YEAR, NAME, PARENT, MACHINE, INPUT, INIT, MONITOR, COMPANY, FULLNAME, FLAGS */ +GAME( 1985, terracre, 0, ym3526, terracre, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 1)", GAME_SUPPORTS_SAVE ) +GAME( 1985, terracrb, terracre, ym3526, terracre, 0, ROT270, "Nichibutsu", "Terra Cresta (YM3526 set 2)", GAME_SUPPORTS_SAVE ) +GAME( 1985, terracra, terracre, ym2203, terracre, 0, ROT270, "Nichibutsu", "Terra Cresta (YM2203)", GAME_SUPPORTS_SAVE ) +GAME( 1986, amazon, 0, amazon, amazon, amazon, ROT270, "Nichibutsu", "Soldier Girl Amazon", GAME_SUPPORTS_SAVE ) +GAME( 1986, amatelas, amazon, amazon, amazon, amatelas, ROT270, "Nichibutsu", "Sei Senshi Amatelass", GAME_SUPPORTS_SAVE ) +GAME( 1987, horekid, 0, amazon, horekid, horekid, ROT270, "Nichibutsu", "Kid no Hore Hore Daisakusen", GAME_SUPPORTS_SAVE ) +GAME( 1987, horekidb, horekid, amazon, horekid, horekid, ROT270, "bootleg", "Kid no Hore Hore Daisakusen (bootleg)", GAME_SUPPORTS_SAVE ) +GAME( 1987, boobhack, horekid, amazon, horekid, horekid, ROT270, "bootleg", "Booby Kids (Italian manufactured graphic hack / bootleg of Kid no Hore Hore Daisakusen (bootleg))", GAME_SUPPORTS_SAVE ) |