mirror of
https://github.com/holub/mame
synced 2025-04-23 00:39:36 +03:00
New working clones
------------------ Bomb Jack (bootleg) [Alexforg83, Bisboch] New clones marked not working ----------------------------- Knight Boy (Game Corporation bootleg) [Alexforg83]
This commit is contained in:
parent
8f22e0dffc
commit
9a1fbb83e3
@ -42796,6 +42796,7 @@ kicknrun // A87 (c) 1986 Taito Corporation
|
||||
kicknrunu // A87 (c) 1986 Taito Corporation
|
||||
kikikai // A85 (c) 1986 Taito Corporation
|
||||
knightb // bootleg
|
||||
knightba // bootleg (Game Corporation)
|
||||
mexico86 // bootleg (Micro Research)
|
||||
mexico86a // bootleg
|
||||
|
||||
@ -43735,6 +43736,7 @@ xsleenaj // TA-0019 (c) 1986
|
||||
@source:tecmo/bombjack.cpp
|
||||
bombjack // (c) 1984 Tehkan
|
||||
bombjack2 // (c) 1984 Tehkan
|
||||
bombjackbl // bootleg
|
||||
bombjackt // (c) 1984 Tehkan + Tecfri license
|
||||
|
||||
@source:tecmo/gaiden.cpp
|
||||
|
@ -35,7 +35,7 @@ Notes:
|
||||
(a situation similar to Bubble Bobble): collision detection is imperfect, the
|
||||
player can't be killed by some enemies.
|
||||
I think the bootleggers put the custom mcu in a test rig, examined its bus
|
||||
activity and replicated the behaviour inaccurately because they coudln't
|
||||
activity and replicated the behaviour inaccurately because they couldn't
|
||||
figure it all out. Indeed, the 68705 code reads all the memory locations
|
||||
related to the missing collision detection, but does nothing with them.
|
||||
|
||||
@ -181,7 +181,19 @@ void kikikai_state::main_map(address_map &map)
|
||||
map(0xf008, 0xf008).w(FUNC(kikikai_state::main_f008_w)); /* cpu reset lines + other unknown stuff */
|
||||
map(0xf010, 0xf010).portr("IN3");
|
||||
map(0xf018, 0xf018).nopw(); /* watchdog? */
|
||||
map(0xf800, 0xffff).ram().share("subram"); /* communication ram - to connect 4 players's subboard */
|
||||
map(0xf800, 0xffff).ram().share("subram"); /* communication ram - to connect 4 players' subboard */
|
||||
}
|
||||
|
||||
void kikikai_state::knightba_main_map(address_map &map)
|
||||
{
|
||||
map(0x0000, 0x7fff).rom();
|
||||
map(0x8000, 0xbfff).bankr("bank1"); /* banked roms */
|
||||
map(0xc000, 0xe7ff).ram().share("mainram"); /* shared with sound cpu */
|
||||
map(0xe800, 0xefff).ram();
|
||||
map(0xf000, 0xf000).w(FUNC(kikikai_state::main_bankswitch_w)); /* program and gfx ROM banks */
|
||||
map(0xf010, 0xf010).portr("IN3");
|
||||
map(0xf018, 0xf018).nopw(); /* watchdog? */
|
||||
map(0xf019, 0xf019).portr("IN1");
|
||||
}
|
||||
|
||||
void kikikai_state::sound_map(address_map &map)
|
||||
@ -583,6 +595,15 @@ static INPUT_PORTS_START( kikikai )
|
||||
PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
|
||||
INPUT_PORTS_END
|
||||
|
||||
static INPUT_PORTS_START( knightba )
|
||||
|
||||
PORT_INCLUDE(kikikai)
|
||||
|
||||
PORT_MODIFY("IN1")
|
||||
PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
|
||||
PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
|
||||
INPUT_PORTS_END
|
||||
|
||||
|
||||
|
||||
/*************************************
|
||||
@ -768,6 +789,18 @@ void mexico86_state::knightb(machine_config &config)
|
||||
m_screen->set_screen_update(FUNC(mexico86_state::screen_update_kikikai));
|
||||
}
|
||||
|
||||
void kikikai_state::knightba(machine_config &config)
|
||||
{
|
||||
base(config);
|
||||
|
||||
m_maincpu->set_addrmap(AS_PROGRAM, &kikikai_state::knightba_main_map);
|
||||
m_maincpu->set_vblank_int("screen", FUNC(kikikai_state::irq0_line_hold));
|
||||
|
||||
config.device_remove("sub");
|
||||
|
||||
m_screen->set_screen_update(FUNC(kikikai_simulation_state::screen_update_kikikai));
|
||||
}
|
||||
|
||||
|
||||
/*************************************
|
||||
*
|
||||
@ -824,6 +857,28 @@ ROM_START( knightb )
|
||||
ROM_LOAD( "a85-09.g14", 0x0200, 0x0100, CRC(b931c94d) SHA1(fb554084f34c602d1ff7806fb945a06cf14332af) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( knightba ) // similar to the bootleg above but without MCU. Only different ROM is 7, where the comms with the MCU have been patched out.
|
||||
ROM_REGION( 0x28000, "maincpu", 0 )
|
||||
ROM_LOAD( "7.bin", 0x00000, 0x08000, CRC(f1d90e89) SHA1(d2e4a036aca9b84189d74b09e53fea9fa0abe959) ) /* 1st half, main code */
|
||||
ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
|
||||
ROM_LOAD( "6.bin", 0x08000, 0x10000, CRC(4094d750) SHA1(05e0ad177a3eb144b203784ecb6242a0fc5c4d4d) ) /* banked at 0x8000 */
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "5.bin", 0x0000, 0x8000, CRC(9ba79d96) SHA1(33b570f0baad6bd417b4dd6389e6263b691906e2) )
|
||||
ROM_IGNORE( 0x8000 ) // 1ST AND 2ND HALF IDENTICAL
|
||||
|
||||
ROM_REGION( 0x40000, "gfx1", ROMREGION_INVERT )
|
||||
ROM_LOAD( "4.bin", 0x00000, 0x10000, CRC(53ecdb3f) SHA1(f8b4822926f3712a426c014759b1cf382a7ad9d1) )
|
||||
ROM_LOAD( "3.bin", 0x10000, 0x10000, CRC(a9df0453) SHA1(a5e9cd6266ab3ae46cd1b35a4603e13a2ca023fb) )
|
||||
ROM_LOAD( "2.bin", 0x20000, 0x10000, CRC(63ad7df3) SHA1(8ce149b63032bcdd596a3fa52baba2f2c154e84e) )
|
||||
ROM_LOAD( "1.bin", 0x30000, 0x10000, CRC(91e58067) SHA1(c7eb9bf650039254fb7664758938b1012eacc597) )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 ) // not dumped for this set, but they are almost surely correct
|
||||
ROM_LOAD( "a85-08.g15", 0x0000, 0x0100, CRC(d15f61a8) SHA1(945c8aa26c85269c10373218bef13e04e25eb1e4) )
|
||||
ROM_LOAD( "a85-10.g12", 0x0100, 0x0100, CRC(8fc3fa86) SHA1(d4d86f8e147bbf2a370de428ac20a28b0f146782) )
|
||||
ROM_LOAD( "a85-09.g14", 0x0200, 0x0100, CRC(b931c94d) SHA1(fb554084f34c602d1ff7806fb945a06cf14332af) )
|
||||
ROM_END
|
||||
|
||||
ROM_START( kicknrun )
|
||||
ROM_REGION( 0x28000, "maincpu", 0 )
|
||||
ROM_LOAD( "a87-08.h16", 0x00000, 0x08000, CRC(715e1b04) SHA1(60b7259758ec73f1cc945556e9c2b25766b745a8) ) /* 1st half, main code */
|
||||
@ -920,12 +975,12 @@ ROM_END
|
||||
ROM_START( mexico86a )
|
||||
ROM_REGION( 0x28000, "maincpu", 0 )
|
||||
ROM_LOAD( "2.bin", 0x00000, 0x08000, CRC(397c93ad) SHA1(6b28d284cafb86f3efd13033984caa1a221a8a14) ) /* 1st half, main code */
|
||||
ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
|
||||
ROM_CONTINUE( 0x18000, 0x08000 ) /* 2nd half, banked at 0x8000 */
|
||||
ROM_LOAD( "1.bin", 0x08000, 0x10000, CRC(0b93e68e) SHA1(c6fbcce83103e3e71a7a1ef9f18a10622ed6b951) ) /* banked at 0x8000 */
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "3x.bin", 0x0000, 0x8000, CRC(abbbf6c4) SHA1(27456d8607e0a246f0c2ad1bc57ee7e4ec37b278) ) // 0x1FEF is 0x2f instead of 0x0f, causes checksum failure, bad?
|
||||
ROM_LOAD( "3.bin", 0x0000, 0x8000, CRC(1625b587) SHA1(7336384e13c114915de5e439df5731ce3fc2054a) )
|
||||
ROM_LOAD( "3.bin", 0x0000, 0x8000, CRC(1625b587) SHA1(7336384e13c114915de5e439df5731ce3fc2054a) )
|
||||
|
||||
ROM_REGION( 0x0800, "68705mcu", 0 ) /* 2k for the microcontroller */
|
||||
ROM_LOAD( "68_h.bin", 0x0000, 0x0800, CRC(ff92f816) SHA1(0015c3f2ed014052b3fa376409e3a7cca36fac72) ) // missing in this set, not dumped or never present??
|
||||
@ -935,13 +990,13 @@ ROM_START( mexico86a )
|
||||
|
||||
ROM_REGION( 0x40000, "gfx1", ROMREGION_INVERT )
|
||||
ROM_LOAD( "4.bin", 0x08000, 0x08000, CRC(57cfdbca) SHA1(89c305c380c3de14a956ee4bc85d3a0d343b638e) )
|
||||
ROM_CONTINUE( 0x00000, 0x08000 )
|
||||
ROM_CONTINUE( 0x00000, 0x08000 )
|
||||
ROM_LOAD( "5.bin", 0x10000, 0x08000, CRC(e42fa143) SHA1(02d7e0e01af1cecc3952f6355987118098d346c3) )
|
||||
ROM_RELOAD( 0x18000, 0x08000 )
|
||||
ROM_RELOAD( 0x18000, 0x08000 )
|
||||
ROM_LOAD( "6.bin", 0x28000, 0x08000, CRC(a4607989) SHA1(6832147603a146c34cc1809e839c8e034d0dacc5) )
|
||||
ROM_CONTINUE( 0x20000, 0x08000 )
|
||||
ROM_CONTINUE( 0x20000, 0x08000 )
|
||||
ROM_LOAD( "7.bin", 0x30000, 0x08000, CRC(245036b1) SHA1(108d9959de869b4fdf766abeade1486acec13bf2) )
|
||||
ROM_RELOAD( 0x38000, 0x08000 )
|
||||
ROM_RELOAD( 0x38000, 0x08000 )
|
||||
|
||||
ROM_REGION( 0x0300, "proms", 0 )
|
||||
ROM_LOAD( "n82s129n.1.bin", 0x0000, 0x0100, CRC(be6eb1f0) SHA1(f4d00e9b12bf116bf84edb2ff6caab158094b668) ) /* all proms are 63S141AN or compatible type */
|
||||
@ -968,10 +1023,11 @@ ROM_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
GAME( 1986, kikikai, 0, kikikai, kikikai, kikikai_simulation_state, empty_init, ROT90, "Taito Corporation", "KiKi KaiKai", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, knightb, kikikai, knightb, kikikai, mexico86_state, empty_init, ROT90, "bootleg", "Knight Boy", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, kikikai, 0, kikikai, kikikai, kikikai_simulation_state, empty_init, ROT90, "Taito Corporation", "KiKi KaiKai", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, knightb, kikikai, knightb, kikikai, mexico86_state, empty_init, ROT90, "bootleg", "Knight Boy", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, knightba, kikikai, knightba, knightba, kikikai_state, empty_init, ROT90, "bootleg (Game Corporation)", "Knight Boy (Game Corporation bootleg)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) // missing coins, can be played using service to coin
|
||||
|
||||
GAME( 1986, kicknrun, 0, kicknrun, kicknrun, kikikai_state, empty_init, ROT0, "Taito Corporation", "Kick and Run (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, kicknrunu,kicknrun, kicknrun, kicknrun, kikikai_state, empty_init, ROT0, "Taito America Corp", "Kick and Run (US)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, mexico86, kicknrun, mexico86_68705, mexico86, mexico86_state, empty_init, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, mexico86a,kicknrun, mexico86_68705, mexico86, mexico86_state, empty_init, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, kicknrun, 0, kicknrun, kicknrun, kikikai_state, empty_init, ROT0, "Taito Corporation", "Kick and Run (World)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, kicknrunu,kicknrun, kicknrun, kicknrun, kikikai_state, empty_init, ROT0, "Taito America Corp", "Kick and Run (US)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, mexico86, kicknrun, mexico86_68705, mexico86, mexico86_state, empty_init, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1986, mexico86a,kicknrun, mexico86_68705, mexico86, mexico86_state, empty_init, ROT0, "bootleg", "Mexico 86 (bootleg of Kick and Run) (set 2)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE )
|
||||
|
@ -28,12 +28,13 @@ public:
|
||||
|
||||
void base(machine_config &config);
|
||||
void kicknrun(machine_config &config);
|
||||
void knightba(machine_config &config);
|
||||
|
||||
protected:
|
||||
required_device<cpu_device> m_maincpu;
|
||||
required_device<cpu_device> m_audiocpu;
|
||||
required_device<screen_device> m_screen;
|
||||
required_shared_ptr<u8> m_mcu_sharedram;
|
||||
optional_shared_ptr<u8> m_mcu_sharedram;
|
||||
|
||||
u32 screen_update_kicknrun(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
u32 screen_update_kikikai(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
@ -73,6 +74,7 @@ private:
|
||||
void sound_map(address_map &map);
|
||||
void kicknrun_sub_cpu_map(address_map &map);
|
||||
void mcu_map(address_map& map);
|
||||
void knightba_main_map(address_map &map);
|
||||
|
||||
/* Kiki KaiKai / Kick 'n Run MCU */
|
||||
uint8_t m_port3_in = 0U;
|
||||
|
@ -674,6 +674,38 @@ ROM_START( bombjackt )
|
||||
ROM_LOAD( "2.5n", 0x0000, 0x2000, CRC(de796158) SHA1(e004f10ada5c282f3b4208031e274190a54bf94f) ) // 1xxxxxxxxxxxx = 0xFF (double size, second half empty, otherwise the same)
|
||||
ROM_END
|
||||
|
||||
// Only 12 and 13 differ slightly (bumped up year + changes in some data tables.
|
||||
// According to the dumper the game is harder, with more enemies shown from the start.
|
||||
ROM_START( bombjackbl )
|
||||
ROM_REGION( 0x10000, "maincpu", 0 )
|
||||
ROM_LOAD( "09.bin", 0x0000, 0x2000, CRC(c668dc30) SHA1(51dd6a2688b42e9f28f0882bd76f75be7ec3222a) )
|
||||
ROM_LOAD( "10.bin", 0x2000, 0x2000, CRC(52a1e5fb) SHA1(e1cdc4b4efbc6c7a1e4fa65019486617f2acba1b) )
|
||||
ROM_LOAD( "11.bin", 0x4000, 0x2000, CRC(b68a062a) SHA1(43bae56494ac0202aaa8f1ed5c1ed1bff775b2b8) )
|
||||
ROM_LOAD( "12.bin", 0x6000, 0x2000, CRC(0f4d0726) SHA1(282215fa50c6fd6a63ce0879f1fb9fb88dbd1888) )
|
||||
ROM_LOAD( "13.bin", 0xc000, 0x2000, CRC(9740f99b) SHA1(c0f992c07b17caccb83bee70bd65c554b1a66dc0) )
|
||||
|
||||
ROM_REGION( 0x10000, "audiocpu", 0 )
|
||||
ROM_LOAD( "01.bin", 0x0000, 0x2000, CRC(8407917d) SHA1(318face9f7a7ab6c7eeac773995040425e780aaf) )
|
||||
|
||||
ROM_REGION( 0x3000, "chars", 0 )
|
||||
ROM_LOAD( "03.bin", 0x0000, 0x1000, CRC(9f0470d5) SHA1(94ef52ef47b4399a03528fe3efeac9c1d6983446) )
|
||||
ROM_LOAD( "04.bin", 0x1000, 0x1000, CRC(81ec12e6) SHA1(e29ba193f21aa898499187603b25d2e226a07c7b) )
|
||||
ROM_LOAD( "05.bin", 0x2000, 0x1000, CRC(e87ec8b1) SHA1(a66808ef2d62fca2854396898b86bac9be5f17a3) )
|
||||
|
||||
ROM_REGION( 0x6000, "bgtiles1", 0 )
|
||||
ROM_LOAD( "06.bin", 0x0000, 0x2000, CRC(51eebd89) SHA1(515128a3971fcb97b60c5b6bdd2b03026aec1921) )
|
||||
ROM_LOAD( "07.bin", 0x2000, 0x2000, CRC(9dd98e9d) SHA1(6db6006a6e20ff7c243d88293ca53681c4703ea5) )
|
||||
ROM_LOAD( "08.bin", 0x4000, 0x2000, CRC(3155ee7d) SHA1(e7897dca4c145f10b7d975b8ef0e4d8aa9354c25) )
|
||||
|
||||
ROM_REGION( 0x6000, "sprites", 0 )
|
||||
ROM_LOAD( "16.bin", 0x0000, 0x2000, CRC(94694097) SHA1(de71bcd67f97d05527f2504fc8430be333fb9ec2) )
|
||||
ROM_LOAD( "15.bin", 0x2000, 0x2000, CRC(013f58f2) SHA1(20c64593ab9fcb04cefbce0cd5d17ce3ff26441b) )
|
||||
ROM_LOAD( "14.bin", 0x4000, 0x2000, CRC(101c858d) SHA1(ed1746c15cdb04fae888601d940183d5c7702282) )
|
||||
|
||||
ROM_REGION( 0x1000, "bg_tilemaps", 0 )
|
||||
ROM_LOAD( "02.bin", 0x0000, 0x1000, CRC(398d4a02) SHA1(ac18a8219f99ba9178b96c9564de3978e39c59fd) )
|
||||
ROM_END
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
|
||||
@ -683,6 +715,7 @@ ROM_END
|
||||
*
|
||||
*************************************/
|
||||
|
||||
GAME( 1984, bombjack, 0, bombjack, bombjack, bombjack_state, empty_init, ROT90, "Tehkan", "Bomb Jack (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, bombjack2, bombjack, bombjack, bombjack, bombjack_state, empty_init, ROT90, "Tehkan", "Bomb Jack (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, bombjackt, bombjack, bombjack, bombjack, bombjack_state, empty_init, ROT90, "Tehkan (Tecfri licence)", "Bomb Jack (Tecfri, Spain)", MACHINE_SUPPORTS_SAVE ) // official licence
|
||||
GAME( 1984, bombjack, 0, bombjack, bombjack, bombjack_state, empty_init, ROT90, "Tehkan", "Bomb Jack (set 1)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, bombjack2, bombjack, bombjack, bombjack, bombjack_state, empty_init, ROT90, "Tehkan", "Bomb Jack (set 2)", MACHINE_SUPPORTS_SAVE )
|
||||
GAME( 1984, bombjackt, bombjack, bombjack, bombjack, bombjack_state, empty_init, ROT90, "Tehkan (Tecfri licence)", "Bomb Jack (Tecfri, Spain)", MACHINE_SUPPORTS_SAVE ) // official licence
|
||||
GAME( 1985, bombjackbl, bombjack, bombjack, bombjack, bombjack_state, empty_init, ROT90, "bootleg", "Bomb Jack (bootleg)", MACHINE_SUPPORTS_SAVE )
|
||||
|
Loading…
Reference in New Issue
Block a user