diff --git a/src/mame/drivers/eolith.c b/src/mame/drivers/eolith.c index 5a3a2b576bf..63276038fb4 100644 --- a/src/mame/drivers/eolith.c +++ b/src/mame/drivers/eolith.c @@ -378,6 +378,55 @@ static INPUT_PORTS_START( landbrk ) PORT_BIT( 0xfffffff0, IP_ACTIVE_LOW, IPT_UNUSED ) INPUT_PORTS_END + +static INPUT_PORTS_START( stealsee ) + PORT_INCLUDE(landbrk) + + PORT_MODIFY("IN0") + PORT_BIT( 0x00000001, IP_ACTIVE_LOW, IPT_START1 ) + PORT_BIT( 0x00000002, IP_ACTIVE_LOW, IPT_START2 ) + PORT_BIT( 0x00000004, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_SPECIAL ) PORT_READ_LINE_DEVICE_MEMBER("eeprom", eeprom_device, read_bit) + PORT_BIT( 0x00000010, IP_ACTIVE_LOW, IPT_COIN1 ) + PORT_BIT( 0x00000020, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00000040, IP_ACTIVE_LOW, IPT_SPECIAL ) PORT_CUSTOM(stealsee_speedup_getvblank, NULL) + PORT_BIT( 0x00003f80, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00004000, IP_ACTIVE_LOW, IPT_SERVICE1 ) + PORT_SERVICE_NO_TOGGLE( 0x00008000, IP_ACTIVE_LOW ) + PORT_BIT( 0x00010000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00020000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00040000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00080000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1) + PORT_BIT( 0x00100000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(1) + PORT_BIT( 0x00200000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(1) + PORT_BIT( 0x00400000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x00800000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x01000000, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x02000000, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x04000000, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x08000000, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2) + PORT_BIT( 0x10000000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) + PORT_BIT( 0x20000000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) + PORT_BIT( 0x40000000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x80000000, IP_ACTIVE_LOW, IPT_UNUSED ) + + PORT_MODIFY("DSW1") + PORT_DIPNAME( 0x00000001, 0x00000001, "Show Settings" ) + PORT_DIPSETTING( 0x00000001, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x00000002, 0x00000002, "Show Counters" ) + PORT_DIPSETTING( 0x00000002, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x00000004, 0x00000004, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000004, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_DIPNAME( 0x00000008, 0x00000008, DEF_STR( Unknown ) ) + PORT_DIPSETTING( 0x00000008, DEF_STR( Off ) ) + PORT_DIPSETTING( 0x00000000, DEF_STR( On ) ) + PORT_BIT( 0xfffffff0, IP_ACTIVE_LOW, IPT_UNUSED ) +INPUT_PORTS_END + + static INPUT_PORTS_START( puzzlekg ) PORT_INCLUDE(common) PORT_MODIFY("IN0") @@ -966,6 +1015,46 @@ ROM_START( penfan ) ROM_END +ROM_START( stealsee ) + ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */ + ROM_LOAD( "ss.u43", 0x00000, 0x80000, CRC(b0a1a965) SHA1(e13f336035a266da66ca8f95b92cac7295323989) ) + + ROM_REGION32_BE( 0x2000000, "user1", ROMREGION_ERASEFF ) /* Game Data - banked ROM, swapping necessary */ + ROM_LOAD32_WORD_SWAP( "00.u5", 0x0000000, 0x200000, CRC(59d247a7) SHA1(a206cbb27f8054baca76dc72e6f45be4c9a914b1) ) // FIXED BITS (xxxxxxxx0xxxxxxx) + ROM_LOAD32_WORD_SWAP( "01.u1", 0x0000002, 0x200000, CRC(255764f2) SHA1(b1d25898961ddbed9865620269cb0cd0ab506cd9) ) + ROM_LOAD32_WORD_SWAP( "02.u6", 0x0400000, 0x200000, CRC(ebc33180) SHA1(7f59263754e9e2c32a5942daed60770dc4d4f6b5) ) + ROM_LOAD32_WORD_SWAP( "03.u2", 0x0400002, 0x200000, CRC(a81f9b6d) SHA1(0bc018f1503c2d43ba0b089cb1476dfc276af94a) ) + ROM_LOAD32_WORD_SWAP( "04.u7", 0x0800000, 0x200000, CRC(24bf37ad) SHA1(393bd11afd0135190d0c72f6affb625a933d8685) ) + ROM_LOAD32_WORD_SWAP( "05.u3", 0x0800002, 0x200000, CRC(ef6b9450) SHA1(ef99a2e4127890b2e954547371eddcb364c74503) ) + ROM_LOAD32_WORD_SWAP( "06.u8", 0x0c00000, 0x200000, CRC(284629c6) SHA1(46d3beb68885faff40f9abe5fdbc84547b94937d) ) + ROM_LOAD32_WORD_SWAP( "07.u4", 0x0c00002, 0x200000, CRC(a64d4434) SHA1(58ac9eef27a39d06723a13e7702d1c77d09eb9a5) ) + ROM_LOAD32_WORD_SWAP( "08.u15", 0x1000000, 0x200000, CRC(861eab08) SHA1(280c833553fb70252deb801a93b0685212e249fe) ) + ROM_LOAD32_WORD_SWAP( "09.u10", 0x1000002, 0x200000, CRC(fd96282e) SHA1(30e35bf61ad3fdd9bc2c384edd8619d8850f5c49) ) + ROM_LOAD32_WORD_SWAP( "10.u16", 0x1400000, 0x200000, CRC(761e0a26) SHA1(d9d73f9cf9d00e35298b5edfc4872a36019c9fcd) ) // FIXED BITS (xxxxxxxx0000000x) + ROM_LOAD32_WORD_SWAP( "11.u11", 0x1400002, 0x200000, CRC(574571e7) SHA1(8507b34c5b00253bf76d587e5a9e33aa71788139) ) // FIXED BITS (xxxxxxxx0000000x) + // these 4 are blank (0xff fill) but that appears to be correct. + ROM_LOAD32_WORD_SWAP( "12.u17", 0x1800000, 0x200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) + ROM_LOAD32_WORD_SWAP( "13.u12", 0x1800002, 0x200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) + ROM_LOAD32_WORD_SWAP( "14.u18", 0x1c00000, 0x200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) + ROM_LOAD32_WORD_SWAP( "15.u13", 0x1c00002, 0x200000, CRC(9a4109e5) SHA1(ba59caac5f5a80fc52c507d8a47f322a380aa9a1) ) + + ROM_REGION( 0x008000, "cpu1", 0 ) /* QDSP ('51) Code */ + ROM_LOAD( "ss.u107", 0x0000, 0x8000, CRC(afd5263d) SHA1(71ace1b749d8a6b84d08b97185e7e512d04e4b8d) ) + + ROM_REGION( 0x008000, "cpu2", 0 ) /* Sound (80c301) CPU Code */ + ROM_LOAD( "ss.u111", 0x0000, 0x8000, CRC(79012474) SHA1(09a2d5705d7bc52cc2d1644c87c1e31ee44813ef) ) /* Only 0x3E6 bytes used */ + + ROM_REGION( 0x080000, "music", 0 ) /* Music data */ + ROM_LOAD( "ss.u108", 0x00000, 0x80000, CRC(95bd136d) SHA1(a6e2d75fc5e8d600d4dceab13c596f6a7edb6e72) ) + + ROM_REGION( 0x080000, "sfx", 0 ) /* QDSP samples (SFX) */ + ROM_LOAD( "ss.u97", 0x00000, 0x80000, CRC(56c9f4a4) SHA1(dfc7cb8b68ec9e77854287b8998131e3ef4ca18d) ) + + ROM_REGION( 0x080000, "wavetable", 0 ) /* QDSP wavetable rom */ + //ROM_LOAD( "qs1001a.u96", 0x000000, 0x80000, CRC(d13c6407) SHA1(57b14f97c7d4f9b5d9745d3571a0b7115fbe3176) ) +ROM_END + + ROM_START( candy ) ROM_REGION( 0x80000, "maincpu", 0 ) /* Hyperstone CPU Code */ ROM_LOAD( "cc.u43", 0x00000, 0x80000, CRC(837c9967) SHA1(ccb38ec986d7cd598a48ee1c3806566c360fd783) ) @@ -1263,6 +1352,7 @@ GAME( 1999, landbrk, 0, eolith45, landbrk, landbrk, ROT0, "Eolith", GAME( 1999, landbrka, landbrk, eolith45, landbrk, landbrka, ROT0, "Eolith", "Land Breaker (World) / Miss Tang Ja Ru Gi (Korea) (pcb ver 3.03) (AT89c52 protected)", GAME_NO_SOUND ) // or Miss Ttang Jjareugi GAME( 1999, nhidctch, 0, eolith45, hidnctch, eolith, ROT0, "Eolith", "New Hidden Catch (World) / New Tul Lin Gu Lim Chat Ki '98 (Korea) (pcb ver 3.02)", GAME_NO_SOUND ) // or New Teurrin Geurim Chajgi '98 GAME( 1999, penfan, 0, eolith45, landbrk, eolith, ROT0, "Eolith", "Penfan Girls - Step1. Mild Mind", GAME_NO_SOUND ) // alt title of Ribbon +GAME( 2000, stealsee, 0, eolith45, stealsee, eolith, ROT0, "Moov Generation / Eolith", "Steal See (& Get Land)", GAME_NO_SOUND ) GAME( 2000, hidctch3, 0, eolith50, hidctch3, hidctch3, ROT0, "Eolith", "Hidden Catch 3 (ver 1.00 / pcb ver 3.05)", GAME_NO_SOUND ) GAME( 2001, fort2b, 0, eolith50, common, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (ver 1.01 / pcb ver 3.05)", GAME_NO_SOUND ) GAME( 2001, fort2ba, fort2b, eolith50, common, eolith, ROT0, "Eolith", "Fortress 2 Blue Arcade (ver 1.00 / pcb ver 3.05)", GAME_NO_SOUND ) diff --git a/src/mame/drivers/eolithsp.c b/src/mame/drivers/eolithsp.c index 18df114bcfc..a56bdb6a161 100644 --- a/src/mame/drivers/eolithsp.c +++ b/src/mame/drivers/eolithsp.c @@ -10,6 +10,7 @@ #include "emu.h" #include "includes/eolithsp.h" +#include "includes/eolith.h" static int eolith_speedup_address; static int eolith_speedup_resume_scanline; @@ -99,5 +100,23 @@ TIMER_DEVICE_CALLBACK( eolith_speedup ) CUSTOM_INPUT( eolith_speedup_getvblank ) { + + printf("%s:eolith speedup_read data %02x\n",field.machine().describe_context(), eolith_vblank); + + + return (field.machine().primary_screen->vpos() >= 240); +} + +// StealSee doesn't use interrupts, just the vblank +CUSTOM_INPUT( stealsee_speedup_getvblank ) +{ + eolith_state *state = field.machine().driver_data(); + + int pc = cpu_get_pc(state->m_maincpu); + + if (pc==0x400081ec) + if(!eolith_vblank) + device_eat_cycles(state->m_maincpu, 500); + return (field.machine().primary_screen->vpos() >= 240); } diff --git a/src/mame/includes/eolith.h b/src/mame/includes/eolith.h index 2e57b3d398f..3825614c21b 100644 --- a/src/mame/includes/eolith.h +++ b/src/mame/includes/eolith.h @@ -2,11 +2,15 @@ class eolith_state : public driver_device { public: eolith_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) { } + : driver_device(mconfig, type, tag), + m_maincpu(*this,"maincpu") + { } int m_coin_counter_bit; int m_buffer; UINT32 *m_vram; + + required_device m_maincpu; }; diff --git a/src/mame/includes/eolithsp.h b/src/mame/includes/eolithsp.h index 23b1a4786d0..8bec6251431 100644 --- a/src/mame/includes/eolithsp.h +++ b/src/mame/includes/eolithsp.h @@ -4,5 +4,5 @@ void eolith_speedup_read(address_space *space); void init_eolith_speedup(running_machine &machine); TIMER_DEVICE_CALLBACK( eolith_speedup ); CUSTOM_INPUT( eolith_speedup_getvblank ); - +CUSTOM_INPUT( stealsee_speedup_getvblank ); diff --git a/src/mame/mame.lst b/src/mame/mame.lst index d5637d5a00c..f71a221b56c 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -10088,6 +10088,7 @@ nhidctch // (c) 1999 Eolith landbrk // (c) 1999 Eolith landbrka // (c) 1999 Eolith penfan // (c) 1999 Eolith +stealsee // (c) 2000 Moov Generation / Eolith raccoon // (c) 1999 Eolith fort2b // (c) 2001 Eolith fort2ba // (c) 2001 Eolith