New working clones

------------------
Bomb Jack (bootleg) [Alexforg83, Bisboch]

New clones marked not working
-----------------------------
Knight Boy (Game Corporation bootleg) [Alexforg83]
This commit is contained in:
Ivan Vangelista 2023-11-10 19:44:03 +01:00
parent 8f22e0dffc
commit 9a1fbb83e3
4 changed files with 111 additions and 18 deletions

View File

@ -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

View File

@ -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 )

View File

@ -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;

View File

@ -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 )