From e03c0cb4a04638d36bd9e50de7c996af9b10d5a8 Mon Sep 17 00:00:00 2001 From: hap Date: Fri, 3 Feb 2023 18:05:24 +0100 Subject: New working clones ------------------ Tekken 3 (World, TET2/VER.C) [Guru, Heihachi_73] --- src/mame/mame.lst | 1 + src/mame/namco/namcos11.cpp | 4 ++-- src/mame/namco/namcos12.cpp | 25 +++++++++++++++++++++++++ src/mame/nintendo/cothello.cpp | 6 ++---- src/mame/nintendo/dkong.cpp | 12 ++++++------ src/mame/nintendo/dkong.h | 28 +++++++--------------------- src/mame/nintendo/dkong_v.cpp | 7 ++----- 7 files changed, 45 insertions(+), 38 deletions(-) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index f2fc386603d..180ab897db9 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -32472,6 +32472,7 @@ technodr // 1998.07 Techno Drive (Japan, TD2/VER.B) tekken3 // 1997.03 Tekken 3 (World, TET2/VER.E1) tekken3a // 1997.?? Tekken 3 (World, TET2/VER.A) tekken3b // 1997.?? Tekken 3 (World, TET2/VER.B) +tekken3c // 1997.?? Tekken 3 (World, TET2/VER.C) tekken3d // 1997.?? Tekken 3 (World, TET2/VER.D) tekken3ja // 1997.?? Tekken 3 (Japan, TET1/VER.A) tekken3je1 // 1997.03 Tekken 3 (Japan, TET1/VER.E1) diff --git a/src/mame/namco/namcos11.cpp b/src/mame/namco/namcos11.cpp index d83c125198f..e3a83e3fef4 100644 --- a/src/mame/namco/namcos11.cpp +++ b/src/mame/namco/namcos11.cpp @@ -1665,8 +1665,8 @@ ROM_START( tekken2ua ) ROM_REGION32_LE( 0x0400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "tes3vera.2l", 0x0000000, 0x100000, CRC(0276680b) SHA1(508bb1c8a0ce929181508108ad3797e67ddd3df8) ) ROM_LOAD16_BYTE( "tes3vera.2j", 0x0000001, 0x100000, CRC(80e9b5ec) SHA1(2f6313492f0d78b9745303418cd77347d14acc8c) ) - ROM_LOAD16_BYTE( "tes3vera.2k", 0x0200000, 0x100000, CRC(78e2ce1a) SHA1(fb242725dc72fa234bd7df81cec57fe010cf58f3) ) - ROM_LOAD16_BYTE( "tes3vera.2f", 0x0200001, 0x100000, CRC(fbb0b146) SHA1(08b11ac0fbfeed62910c5cb5ff7b5939ecbca142) ) + ROM_LOAD16_BYTE( "tes1vera.2k", 0x0200000, 0x100000, CRC(78e2ce1a) SHA1(fb242725dc72fa234bd7df81cec57fe010cf58f3) ) + ROM_LOAD16_BYTE( "tes1vera.2f", 0x0200001, 0x100000, CRC(fbb0b146) SHA1(08b11ac0fbfeed62910c5cb5ff7b5939ecbca142) ) ROM_REGION32_LE( 0x1000000, "bankedroms", 0 ) /* main data */ ROM_LOAD16_BYTE( "tes1rom0l.ic6", 0x0000000, 0x200000, CRC(fc904ede) SHA1(cea378ba86f94beadb3d67685f1b8c141f478abe) ) diff --git a/src/mame/namco/namcos12.cpp b/src/mame/namco/namcos12.cpp index 56a5951b00e..881655ca992 100644 --- a/src/mame/namco/namcos12.cpp +++ b/src/mame/namco/namcos12.cpp @@ -68,6 +68,7 @@ Tekken 3 (TET1/VER.A) (C) Namco, 1996 COH-700 SYS Tekken 3 (TET2/VER.A) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006 Tekken 3 (TET3/VER.A) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006 Tekken 3 (TET3/VER.B) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006 +Tekken 3 (TET2/VER.C) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER SYSTEM12 M8F2F KC006 Tekken 3 (TET2/VER.D) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006 Tekken 3 (TET3/VER.D) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006 Tekken 3 (TET1/VER.E1) (C) Namco, 1996 COH-700 SYSTEM12 MOTHER(B) SYSTEM12 M8F2F KC006 @@ -2931,6 +2932,29 @@ ROM_START( tekken3ud ) ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) ) ROM_END +ROM_START( tekken3c ) + ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ + ROM_LOAD16_BYTE( "tet2verc.2e", 0x0000000, 0x200000, CRC(4483d76e) SHA1(c43b7e445acb77ddeb8a647bef1fc509ced0412e) ) + ROM_LOAD16_BYTE( "tet2verc.2j", 0x0000001, 0x200000, CRC(3b4fee42) SHA1(b71b2969b0416e6fd348297876fc55d44e14ebef) ) + + ROM_REGION32_LE( 0x1c00000, "bankedroms", 0 ) /* main data */ + ROM_LOAD16_BYTE( "tet1rom0l.6", 0x0000000, 0x400000, CRC(2886bb32) SHA1(08ad9da2df25ad8c933a812ac238c81135072929) ) + ROM_LOAD16_BYTE( "tet1rom0u.9", 0x0000001, 0x400000, CRC(c5705b92) SHA1(20df20c8d18eb4712d565a3df9a8d9270dee6aaa) ) + ROM_LOAD16_BYTE( "tet1rom1l.7", 0x0800000, 0x400000, CRC(0397d283) SHA1(ebafcd14cdb2601214129a84fc6830846f5cd274) ) + ROM_LOAD16_BYTE( "tet1rom1u.10", 0x0800001, 0x400000, CRC(502ba5cd) SHA1(19c1282245c6dbfc945c0bd0f3918968c3e5c3ed) ) + ROM_LOAD16_BYTE( "tet1rom2l.8", 0x1000000, 0x400000, CRC(e03b1c24) SHA1(8579b95a8fd06b7d2893ff88b228fd794162dff1) ) + ROM_LOAD16_BYTE( "tet1rom2u.11", 0x1000001, 0x400000, CRC(75eb2ab3) SHA1(dee43884e542391903f6aaae2c166e7921a86fb4) ) + ROM_LOAD16_BYTE( "tet1fl3l.12", 0x1800000, 0x200000, CRC(45513073) SHA1(8a36f58ee2d292b50e00c6bf275f9def358032d8) ) + ROM_LOAD16_BYTE( "tet1fl3u.13", 0x1800001, 0x200000, CRC(1917d993) SHA1(cabc44514a3e62a18a7f8f883603241447d6948b) ) + + ROM_REGION( 0x0080000, "sub", 0 ) /* sound prg */ + ROM_LOAD16_WORD_SWAP( "tet1verb.11s", 0x0000000, 0x080000, CRC(c92b98d1) SHA1(8ae6fba8c5b6b9a2ab9541eac8553b282f35750d) ) /* No label but different than tet1vera.11s */ + + ROM_REGION( 0x1000000, "c352", 0 ) /* samples */ + ROM_LOAD( "tet1wave0.5", 0x0000000, 0x400000, CRC(77ba7975) SHA1(fe9434dcf0fb232c85efaaae1b4b13d36099620a) ) + ROM_LOAD( "tet1wave1.4", 0x0400000, 0x400000, CRC(ffeba79f) SHA1(941412bbe9d0305d9a23c224c1bb774c4321f6df) ) +ROM_END + ROM_START( tekken3b ) ROM_REGION32_LE( 0x00400000, "maincpu:rom", 0 ) /* main prg */ ROM_LOAD16_BYTE( "tet2verb.2e", 0x0000000, 0x200000, CRC(a6cbc434) SHA1(859d84e6e9a52c2cdd54a2a0bb8104169eb19c07) ) @@ -3362,6 +3386,7 @@ ROM_END GAME( 1996, tekken3, 0, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.E1)", 0 ) /* KC006 */ GAME( 1996, tekken3d, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.D)", 0 ) /* KC006 */ GAME( 1996, tekken3b, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.B)", 0 ) /* KC006 */ +GAME( 1996, tekken3c, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.C)", 0 ) /* KC006 */ GAME( 1996, tekken3a, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.A)", 0 ) /* KC006 */ GAME( 1996, tekken3ud, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.D)", 0 ) /* KC006 */ GAME( 1996, tekken3ua, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (US, TET3/VER.A)", 0 ) /* KC006 */ diff --git a/src/mame/nintendo/cothello.cpp b/src/mame/nintendo/cothello.cpp index 394b62f846a..dd31b061342 100644 --- a/src/mame/nintendo/cothello.cpp +++ b/src/mame/nintendo/cothello.cpp @@ -27,8 +27,7 @@ TODO: compared to videos of the game. 0.9MHz(XTAL/4) is also too fast. It's probably due to the M58741P HOLD pin halting the 8080, which is not emulated. - Is there a button select somewhere? I really can't find any. Or is current - input emulation correct where for example P1 can move P2 cursor? (the only - unique P2 button is the Set button). + input emulation correct where for example P1 can move P2 cursor? - It's not known if the screen is color or B&W + overlay, but since the video chip is meant for a color tv, let's assume the green tint is from the screen itself. Photos of the home version also show a green tint. @@ -161,8 +160,7 @@ TIMER_CALLBACK_MEMBER(cothello_state::counter_tick) u8 cothello_state::coin_r() { - // d0-d2: coin status - // d3: ? + // d0-d3: coin status // d4-d7: unused return m_counter_timer->enabled() ? 0xfb : 0xff; } diff --git a/src/mame/nintendo/dkong.cpp b/src/mame/nintendo/dkong.cpp index c95e3cfcce8..c1321c31ae8 100644 --- a/src/mame/nintendo/dkong.cpp +++ b/src/mame/nintendo/dkong.cpp @@ -914,7 +914,7 @@ void dkong_state::s2650_data_map(address_map &map) map(S2650_DATA_PORT, S2650_DATA_PORT).w(FUNC(dkong_state::s2650_data_w)); } -void spclforc_state::data_map(address_map &map) +void dkong_state::spclforc_data_map(address_map &map) { map(S2650_DATA_PORT, S2650_DATA_PORT).w("snsnd", FUNC(sn76496_device::write)); } @@ -1877,14 +1877,14 @@ void dkong_state::herbiedk(machine_config &config) downcast(*m_maincpu).sense_handler().set(m_screen, FUNC(screen_device::vblank)).invert(); // ??? } -void spclforc_state::spclforc(machine_config &config) +void dkong_state::spclforc(machine_config &config) { herbiedk(config); - m_maincpu->set_addrmap(AS_DATA, &spclforc_state::data_map); + m_maincpu->set_addrmap(AS_DATA, &dkong_state::spclforc_data_map); config.device_remove("soundcpu"); - m_screen->set_screen_update(FUNC(spclforc_state::screen_update_spclforc)); + m_screen->set_screen_update(FUNC(dkong_state::screen_update_spclforc)); SN76496(config, "snsnd", CLOCK_1H).add_route(ALL_OUTPUTS, "mono", 0.5); } @@ -3803,8 +3803,8 @@ GAME( 1984, herodku, hero, s2650, herodk, dkong_state, empty_init, GAME( 1984, 8ballact, 0, herbiedk, 8ballact, dkong_state, empty_init, ROT270, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DK conversion)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, 8ballact2, 8ballact, herbiedk, 8ballact, dkong_state, empty_init, ROT270, "Seatongrove Ltd (Magic Electronics USA license)", "Eight Ball Action (DKJr conversion)", MACHINE_SUPPORTS_SAVE ) GAME( 1984, shootgal, 0, s2650, shootgal, dkong_state, empty_init, ROT0, "Seatongrove Ltd (Zaccaria license)", "Shooting Gallery", MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) -GAME( 1985, spclforc, 0, spclforc, spclforc, spclforc_state, empty_init, ROT270, "Senko Industries (Magic Electronics Inc. license)", "Special Forces", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, spcfrcii, 0, spclforc, spclforc, spclforc_state, empty_init, ROT270, "Senko Industries (Magic Electronics Inc. license)", "Special Forces II", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, spclforc, 0, spclforc, spclforc, dkong_state, empty_init, ROT270, "Senko Industries (Magic Electronics Inc. license)", "Special Forces", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, spcfrcii, 0, spclforc, spclforc, dkong_state, empty_init, ROT270, "Senko Industries (Magic Electronics Inc. license)", "Special Forces II", MACHINE_SUPPORTS_SAVE ) /* EPOS */ GAME( 1984, drakton, 0, drakton, drakton, dkong_state, init_drakton, ROT270, "Epos Corporation", "Drakton (DK conversion)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/nintendo/dkong.h b/src/mame/nintendo/dkong.h index 914609fa46b..5a353eef4ea 100644 --- a/src/mame/nintendo/dkong.h +++ b/src/mame/nintendo/dkong.h @@ -134,6 +134,7 @@ public: void dk3_braze(machine_config &config); void strtheat(machine_config &config); void s2650(machine_config &config); + void spclforc(machine_config &config); void dkongjr(machine_config &config); void radarscp1(machine_config &config); void drktnjr(machine_config &config); @@ -161,7 +162,7 @@ public: DECLARE_WRITE_LINE_MEMBER(dk_braze_a15); -protected: +private: /* devices */ required_device m_maincpu; optional_device m_soundcpu; @@ -254,7 +255,6 @@ protected: memory_bank_creator m_bank2; memory_passthrough_handler m_dkong3_tap[2]; -private: uint8_t hb_dma_read_byte(offs_t offset); void hb_dma_write_byte(offs_t offset, uint8_t data); void dkong3_coin_counter_w(offs_t offset, uint8_t data); @@ -309,6 +309,7 @@ private: void dkong_p1_w(uint8_t data); uint32_t screen_update_dkong(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); uint32_t screen_update_pestplce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); + uint32_t screen_update_spclforc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); DECLARE_WRITE_LINE_MEMBER(s2650_interrupt); DECLARE_WRITE_LINE_MEMBER(vblank_irq); TIMER_CALLBACK_MEMBER(scanline_callback); @@ -332,11 +333,12 @@ private: void dkongjr_sound_io_map(address_map &map); void epos_readport(address_map &map); void radarscp1_sound_io_map(address_map &map); - void s2650_data_map(address_map &map); - void s2650_io_map(address_map &map); + void s2650_map(address_map &map); + void s2650_io_map(address_map &map); + void s2650_data_map(address_map &map); + void spclforc_data_map(address_map &map); -protected: // video/dkong.c void radarscp_step(int line_cnt); void radarscp_scanline(int scanline); @@ -345,20 +347,4 @@ protected: void radarscp_draw_background(bitmap_ind16 &bitmap, const rectangle &cliprect); }; -class spclforc_state : public dkong_state -{ -public: - spclforc_state(const machine_config &mconfig, device_type type, const char *tag) - : dkong_state(mconfig, type, tag) - { - } - - void spclforc(machine_config &config); - -private: - void data_map(address_map &map); - - uint32_t screen_update_spclforc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); -}; - #endif // MAME_NINTENDO_DKONG_H diff --git a/src/mame/nintendo/dkong_v.cpp b/src/mame/nintendo/dkong_v.cpp index 460c043c07f..6e9fc9b00ea 100644 --- a/src/mame/nintendo/dkong_v.cpp +++ b/src/mame/nintendo/dkong_v.cpp @@ -928,7 +928,6 @@ VIDEO_START_MEMBER(dkong_state,dkong_base) save_item(NAME(m_counter)); save_item(NAME(m_pixelcnt)); save_item(NAME(m_bg_bits)); - } VIDEO_START_MEMBER(dkong_state,dkong) @@ -989,13 +988,11 @@ uint32_t dkong_state::screen_update_dkong(screen_device &screen, bitmap_ind16 &b uint32_t dkong_state::screen_update_pestplce(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { - int offs; - machine().tilemap().set_flip_all(m_flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); /* Draw the sprites. */ - for (offs = 0;offs < m_sprite_ram.bytes();offs += 4) + for (int offs = 0;offs < m_sprite_ram.bytes();offs += 4) { if (m_sprite_ram[offs]) { @@ -1016,7 +1013,7 @@ uint32_t dkong_state::screen_update_pestplce(screen_device &screen, bitmap_ind16 return 0; } -uint32_t spclforc_state::screen_update_spclforc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) +uint32_t dkong_state::screen_update_spclforc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) { machine().tilemap().set_flip_all(m_flip ? TILEMAP_FLIPX | TILEMAP_FLIPY : 0); m_bg_tilemap->draw(screen, bitmap, cliprect, 0, 0); -- cgit v1.2.3