From 895a7826b98458e39e3b712e66a792fd3e6f2d39 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Wed, 24 Jan 2018 20:14:13 +0100 Subject: new working clone ---------------------------- Track & Field (Centuri, unencrypted) [RiddledTV, Bryan McPhail, The Dumping Union] --- src/mame/drivers/trackfld.cpp | 64 ++++++++++++++++++++++++++++++++++--------- src/mame/includes/trackfld.h | 51 ++++++++++++++++++---------------- src/mame/mame.lst | 1 + 3 files changed, 80 insertions(+), 36 deletions(-) diff --git a/src/mame/drivers/trackfld.cpp b/src/mame/drivers/trackfld.cpp index dea325c6b77..042dc803cf8 100644 --- a/src/mame/drivers/trackfld.cpp +++ b/src/mame/drivers/trackfld.cpp @@ -953,6 +953,12 @@ MACHINE_CONFIG_START(trackfld_state::trackfld) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "speaker", 1.0) MACHINE_CONFIG_END +MACHINE_CONFIG_DERIVED(trackfld_state::trackfldu, trackfld) + MCFG_CPU_REPLACE("maincpu", MC6809E, MASTER_CLOCK/6/2) /* exact M6809 model unknown */ + MCFG_CPU_PROGRAM_MAP(main_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", trackfld_state, vblank_irq) + +MACHINE_CONFIG_END INTERRUPT_GEN_MEMBER(trackfld_state::yieartf_timer_irq) { @@ -1211,6 +1217,37 @@ ROM_START( trackfldc ) ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) ROM_END +ROM_START( trackfldu ) // unencrypted, only maincpu and two of the gfx1 ROMs differ. Two dumps from different boards and dumpers were provided. OCBs look original (GX361). + ROM_REGION( 0x10000, "maincpu", 0 ) + ROM_LOAD( "361_105.a7", 0x6000, 0x2000, CRC(c813f140) SHA1(088bfb1979c55b232b19a3b75bf87a1915422ba4) ) + ROM_LOAD( "361_104.a6", 0x8000, 0x2000, CRC(b785e7ee) SHA1(aaed6a3bc04896c9980f68e00a3190b8cfab04f6) ) + ROM_LOAD( "361_103.a5", 0xa000, 0x2000, CRC(060c16e6) SHA1(7215a23fcb9e34ed62b961a2bc068bf88e4da29d) ) + ROM_LOAD( "361_102.a4", 0xc000, 0x2000, CRC(46bde4ea) SHA1(44730a88ed320a835e8dfd8cd97206be5dfdef7c) ) + ROM_LOAD( "361_101.a2", 0xe000, 0x2000, CRC(b2d8be9a) SHA1(bfc155ddca567d9dff2ea6ddecfcc192316e5021) ) + + ROM_REGION( 0x10000, "audiocpu", 0 ) + ROM_LOAD( "c2_d13.bin", 0x0000, 0x2000, CRC(95bf79b6) SHA1(ea9135acd7ad162c19c5cdde356e69792d61b675) ) + + ROM_REGION( 0x8000, "gfx1", 0 ) + ROM_LOAD( "361_d06.a20", 0x0000, 0x2000, CRC(82e2185a) SHA1(1da9ea20e7af0b49c62fb39834a7ec686491af04) ) + ROM_LOAD( "361_d07.a21", 0x2000, 0x2000, CRC(800ff1f1) SHA1(33d73b18903e3e6bfb30f1a06db4b8105d4040d8) ) + ROM_LOAD( "361_d08.a17", 0x4000, 0x2000, CRC(e5193cf8) SHA1(8c90452e1f2599fc656af8b7141bf30ff1e2fc02) ) + ROM_LOAD( "361_d09.a19", 0x6000, 0x2000, CRC(91062288) SHA1(24160f78b3ed854f15e36987e3925865ca9923d4) ) + + ROM_REGION( 0x6000, "gfx2", 0 ) + ROM_LOAD( "h16_e12.bin", 0x0000, 0x2000, CRC(50075768) SHA1(dfff92c0f59dd3d8d3d6256944bfd48792cef6a9) ) + ROM_LOAD( "h15_e11.bin", 0x2000, 0x2000, CRC(dda9e29f) SHA1(0f41cde82bb60c3f1591ee14dc3cff4642bbddc1) ) + ROM_LOAD( "h14_e10.bin", 0x4000, 0x2000, CRC(c2166a5c) SHA1(5ba25900e653ce4edcf35f1fbce758a327a715ce) ) + + ROM_REGION( 0x0220, "proms", 0 ) + ROM_LOAD( "361b16.f1", 0x0000, 0x0020, CRC(d55f30b5) SHA1(4d6a851f4886778307f75771645078b97ad55f5f) ) /* palette */ + ROM_LOAD( "361b17.b16", 0x0020, 0x0100, CRC(d2ba4d32) SHA1(894b5cedf01ba9225a0d6215291857e455b84903) ) /* sprite lookup table */ + ROM_LOAD( "361b18.e15", 0x0120, 0x0100, CRC(053e5861) SHA1(6740a62cf7b6938a4f936a2fed429704612060a5) ) /* char lookup table */ + + ROM_REGION( 0x2000, "vlm", 0 ) /* 8k for the VLM5030 data */ + ROM_LOAD( "c9_d15.bin", 0x0000, 0x2000, CRC(f546a56b) SHA1(caee3d8546eb7a75ce2a578c6a1a630246aec6b8) ) +ROM_END + ROM_START( hyprolym ) /* GX361 */ ROM_REGION( 0x10000, "maincpu", 0 ) /* 64k for code + 64k for decrypted opcodes */ ROM_LOAD( "361-d01.a01", 0x6000, 0x2000, CRC(82257fb7) SHA1(4a5038292e582d5c3b5f2d82b01c57ccb24f3095) ) @@ -1671,20 +1708,21 @@ DRIVER_INIT_MEMBER(trackfld_state,wizzquiz) } -GAME( 1983, trackfld, 0, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Track & Field", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, trackfldc, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami (Centuri license)", "Track & Field (Centuri)", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hyprolym, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Hyper Olympic", MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hyprolymb, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hyprolymba, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1983, hipoly, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hipoly (bootleg of Hyper Olympic)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) -GAME( 1996, atlantol, trackfld, atlantol, atlantol, trackfld_state, atlantol, ROT0, "bootleg", "Atlant Olimpic", MACHINE_SUPPORTS_SAVE ) -GAME( 1982, trackfldnz, trackfld, trackfld, trackfld, trackfld_state, trackfldnz, ROT0, "bootleg? (Goldberg Enterprizes Inc.)", "Track & Field (NZ bootleg?)", MACHINE_SUPPORTS_SAVE) // bootleg of the Centuri version +GAME( 1983, trackfld, 0, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Track & Field", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, trackfldc, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami (Centuri license)", "Track & Field (Centuri)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, trackfldu, trackfld, trackfldu, trackfld, trackfld_state, trackfld, ROT0, "Konami (Centuri license)", "Track & Field (Centuri, unencrypted)", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hyprolym, trackfld, trackfld, trackfld, trackfld_state, trackfld, ROT0, "Konami", "Hyper Olympic", MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hyprolymb, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 1)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hyprolymba, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hyper Olympic (bootleg, set 2)", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) +GAME( 1983, hipoly, trackfld, hyprolyb, trackfld, trackfld_state, trackfld, ROT0, "bootleg", "Hipoly (bootleg of Hyper Olympic)", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, atlantol, trackfld, atlantol, atlantol, trackfld_state, atlantol, ROT0, "bootleg", "Atlant Olimpic", MACHINE_SUPPORTS_SAVE ) +GAME( 1982, trackfldnz, trackfld, trackfld, trackfld, trackfld_state, trackfldnz, ROT0, "bootleg? (Goldberg Enterprizes Inc.)", "Track & Field (NZ bootleg?)", MACHINE_SUPPORTS_SAVE) // bootleg of the Centuri version -GAME( 1988, mastkin, 0, mastkin, mastkin, trackfld_state, mastkin, ROT0, "Du Tech", "The Masters of Kin", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) +GAME( 1988, mastkin, 0, mastkin, mastkin, trackfld_state, mastkin, ROT0, "Du Tech", "The Masters of Kin", MACHINE_WRONG_COLORS | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, wizzquiz, 0, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone (Konami license)", "Wizz Quiz (Konami version)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, wizzquiza, wizzquiz, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone", "Wizz Quiz (version 4)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, wizzquiz, 0, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone (Konami license)", "Wizz Quiz (Konami version)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, wizzquiza, wizzquiz, wizzquiz, wizzquiz, trackfld_state, wizzquiz, ROT0, "Zilec-Zenitone", "Wizz Quiz (version 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, reaktor, 0, reaktor, reaktor, trackfld_state, 0, ROT90, "Zilec", "Reaktor (Track & Field conversion)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, reaktor, 0, reaktor, reaktor, trackfld_state, 0, ROT90, "Zilec", "Reaktor (Track & Field conversion)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, yieartf, yiear, yieartf, yieartf, trackfld_state, 0, ROT0, "Konami", "Yie Ar Kung-Fu (GX361 conversion)", MACHINE_SUPPORTS_SAVE ) // the conversion looks of bootleg quality, but the code is clearly a very different revision to either original hardware set... +GAME( 1985, yieartf, yiear, yieartf, yieartf, trackfld_state, 0, ROT0, "Konami", "Yie Ar Kung-Fu (GX361 conversion)", MACHINE_SUPPORTS_SAVE ) // the conversion looks of bootleg quality, but the code is clearly a very different revision to either original hardware set... diff --git a/src/mame/includes/trackfld.h b/src/mame/includes/trackfld.h index e2c9cc0da00..9bb395cdf74 100644 --- a/src/mame/includes/trackfld.h +++ b/src/mame/includes/trackfld.h @@ -26,6 +26,32 @@ public: m_gfxdecode(*this, "gfxdecode"), m_palette(*this, "palette") { } + DECLARE_WRITE8_MEMBER(questions_bank_w); + DECLARE_WRITE8_MEMBER(trackfld_videoram_w); + DECLARE_WRITE8_MEMBER(trackfld_colorram_w); + DECLARE_WRITE8_MEMBER(atlantol_gfxbank_w); + DECLARE_READ8_MEMBER(trackfld_SN76496_r); + DECLARE_READ8_MEMBER(trackfld_speech_r); + DECLARE_WRITE8_MEMBER(trackfld_VLM5030_control_w); + DECLARE_WRITE8_MEMBER( konami_SN76496_latch_w ) { m_SN76496_latch = data; }; + DECLARE_WRITE8_MEMBER( konami_SN76496_w ) { m_sn->write(space, offset, m_SN76496_latch); }; + + void reaktor(machine_config &config); + void atlantol(machine_config &config); + void yieartf(machine_config &config); + void wizzquiz(machine_config &config); + void trackfld(machine_config &config); + void trackfldu(machine_config &config); + void hyprolyb(machine_config &config); + void mastkin(machine_config &config); + + DECLARE_DRIVER_INIT(trackfld); + DECLARE_DRIVER_INIT(atlantol); + DECLARE_DRIVER_INIT(wizzquiz); + DECLARE_DRIVER_INIT(mastkin); + DECLARE_DRIVER_INIT(trackfldnz); + +private: /* memory pointers */ required_shared_ptr m_spriteram2; required_shared_ptr m_scroll; @@ -52,28 +78,14 @@ public: bool m_irq_mask; bool m_nmi_mask; + uint8_t m_SN76496_latch; + DECLARE_WRITE_LINE_MEMBER(coin_counter_1_w); DECLARE_WRITE_LINE_MEMBER(coin_counter_2_w); - DECLARE_WRITE8_MEMBER(questions_bank_w); DECLARE_WRITE_LINE_MEMBER(irq_mask_w); DECLARE_WRITE_LINE_MEMBER(nmi_mask_w); - DECLARE_WRITE8_MEMBER(trackfld_videoram_w); - DECLARE_WRITE8_MEMBER(trackfld_colorram_w); DECLARE_WRITE_LINE_MEMBER(flipscreen_w); - DECLARE_WRITE8_MEMBER(atlantol_gfxbank_w); - DECLARE_READ8_MEMBER(trackfld_SN76496_r); - DECLARE_READ8_MEMBER(trackfld_speech_r); - DECLARE_WRITE8_MEMBER(trackfld_VLM5030_control_w); - - DECLARE_DRIVER_INIT(trackfld); - DECLARE_DRIVER_INIT(atlantol); - DECLARE_DRIVER_INIT(wizzquiz); - DECLARE_DRIVER_INIT(mastkin); - DECLARE_DRIVER_INIT(trackfldnz); - uint8_t m_SN76496_latch; - DECLARE_WRITE8_MEMBER( konami_SN76496_latch_w ) { m_SN76496_latch = data; }; - DECLARE_WRITE8_MEMBER( konami_SN76496_w ) { m_sn->write(space, offset, m_SN76496_latch); }; TILE_GET_INFO_MEMBER(get_bg_tile_info); DECLARE_MACHINE_START(trackfld); DECLARE_MACHINE_RESET(trackfld); @@ -85,11 +97,4 @@ public: INTERRUPT_GEN_MEMBER(vblank_nmi); INTERRUPT_GEN_MEMBER(yieartf_timer_irq); void draw_sprites( bitmap_ind16 &bitmap, const rectangle &cliprect ); - void reaktor(machine_config &config); - void atlantol(machine_config &config); - void yieartf(machine_config &config); - void wizzquiz(machine_config &config); - void trackfld(machine_config &config); - void hyprolyb(machine_config &config); - void mastkin(machine_config &config); }; diff --git a/src/mame/mame.lst b/src/mame/mame.lst index 666c0b21c54..39e29a66cee 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -37133,6 +37133,7 @@ reaktor // (c) 1985 Zilec trackfld // GX361 (c) 1983 trackfldc // GX361 (c) 1983 + Centuri license trackfldnz // (c) 1982 Goldberg Enterprizes Inc. +trackfldu // GX361 (c) 1983 wizzquiz // (c) 1985 Konami wizzquiza // (c) 1985 Zilec-Zenitone yieartf // GX361 (c) 1985 -- cgit v1.2.3