From 0a51009b749c933ac9b480697234162b2b3ee6b7 Mon Sep 17 00:00:00 2001 From: Ivan Vangelista Date: Mon, 8 Jul 2024 18:14:33 +0200 Subject: Systems promoted to working --------------------------- Montana Super Draw (4436-05, U5-0) [Brian Troha] - seta/seta.cpp: made zingzipbl go a bit further, marked its Oki ROM as bad. Main blocker is the different sprite format. - shared/segam1audio.cpp: measured clocks [Guru] --- src/devices/video/x1_001.cpp | 2 +- src/mame/merit/merit.cpp | 45 +++++++++++++++++------------ src/mame/merit/merit3xx.cpp | 39 ++++++++++++++++--------- src/mame/namco/namcos11.cpp | 2 +- src/mame/namco/namcos12.cpp | 2 +- src/mame/sega/model1.cpp | 3 +- src/mame/sega/model2.cpp | 2 +- src/mame/seta/seta.cpp | 64 +++++++++++++++++++---------------------- src/mame/shared/segam1audio.cpp | 16 +++++++---- src/mame/skeleton/ramstar.cpp | 3 +- 10 files changed, 99 insertions(+), 79 deletions(-) diff --git a/src/devices/video/x1_001.cpp b/src/devices/video/x1_001.cpp index 59ea53bd062..b0502765a54 100644 --- a/src/devices/video/x1_001.cpp +++ b/src/devices/video/x1_001.cpp @@ -82,7 +82,7 @@ void x1_001_device::device_start() perspective. jjsquawk has a garbage tile in the bottom left instead, but in this case the entire - m_spriteylow is initalized (to 0), but sprite entry 0 for the other tables is never + m_spriteylow is initialized (to 0), but sprite entry 0 for the other tables is never written to, again meaning it picks up whatever we clear the RAM to as positional values. diff --git a/src/mame/merit/merit.cpp b/src/mame/merit/merit.cpp index 03b6c69a226..afb78065c52 100644 --- a/src/mame/merit/merit.cpp +++ b/src/mame/merit/merit.cpp @@ -851,7 +851,12 @@ static INPUT_PORTS_START( rivierab ) INPUT_PORTS_END static INPUT_PORTS_START( mosdraw ) - PORT_INCLUDE( riviera ) + PORT_INCLUDE( meritpoker ) + + PORT_MODIFY("DSW") // DSW affects only points per coins, everything seems hard coded values + PORT_DIPNAME( 0x10, 0x00, "Points Per Coin" ) PORT_DIPLOCATION("SW1:5") + PORT_DIPSETTING( 0x00, "5" ) + PORT_DIPSETTING( 0x10, "1" ) PORT_MODIFY("IN2") PORT_BIT( 0x04, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // to bypass printer check TODO: proper emulation @@ -1995,7 +2000,6 @@ ROM_END // Sub board CRT-203 includes 2 P8255A, parallel printer connection & MM58174AN RTC that plugs in through the CRT-200's P8255 socket. // There is a battery that connects to the PCB to keep the CRT-200's Mosel MS6264L-10PC RAM active and also runs to the CRT-203 for the RTC (guess) -// Currently the game starts with an error, press F2 to configure RTC then press Deal (2) ROM_START( mosdraw ) ROM_REGION( 0x10000, "maincpu", 0 ) ROM_LOAD( "4436-05_u5-0.u5", 0x0000, 0x8000, CRC(d0194059) SHA1(4e106c7e38fd92e005f5e1899b6fbca4ab62ce6d) ) // 4436-05 U5-0 041790 @@ -2007,6 +2011,9 @@ ROM_START( mosdraw ) ROM_REGION( 0x2000, "gfx2", 0 ) ROM_LOAD( "tana_u40.u40", 0x00000, 0x2000, CRC(a45cae66) SHA1(499759badc006fa09706d349e252284949d20a2d) ) + + ROM_REGION( 0x2000, "nvram", 0 ) + ROM_LOAD( "nvram", 0x0000, 0x2000, CRC(61351962) SHA1(b2a18563c41b58385d6b0ccbc621fddd0d82f1b5) ) // preconfigured NVRAM to avoid error on boot ROM_END ROM_START( bigappg ) @@ -2989,7 +2996,7 @@ GAME( 1984, chkndrawa, chkndraw, pitboss, chkndraw, merit_state, empty_ GAME( 1987, riviera, 0, riviera, riviera, merit_state, empty_init, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-4A)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1986, rivieraa, riviera, riviera, riviera, merit_state, empty_init, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-4)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) GAME( 1986, rivierab, riviera, riviera, rivierab, merit_state, empty_init, ROT0, "Merit", "Riviera Hi-Score (2131-08, U5-2D)", MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) -GAME( 1990, mosdraw, 0, mosdraw, mosdraw, merit_state, empty_init, ROT0, "Merit", "Montana Super Draw (4436-05, U5-0)", MACHINE_NOT_WORKING | MACHINE_NODEVICE_PRINTER | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // needs printer and RTC hook up +GAME( 1990, mosdraw, 0, mosdraw, mosdraw, merit_state, empty_init, ROT0, "Merit", "Montana Super Draw (4436-05, U5-0)", MACHINE_NODEVICE_PRINTER | MACHINE_SUPPORTS_SAVE | MACHINE_IMPERFECT_GRAPHICS ) // needs printer and RTC hook up GAME( 1986, bigappg, 0, bigappg, bigappg, merit_state, empty_init, ROT0, "Big Apple Games / Merit", "The Big Apple (2131-13, U5-0)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, misdraw, 0, misdraw, bigappg, merit_state, empty_init, ROT0, "Big Apple Games / Merit", "Michigan Super Draw (2131-16, U5-2)", MACHINE_SUPPORTS_SAVE ) @@ -3008,33 +3015,33 @@ GAME( 1985, trvwza, trvwz, trvwhiz, trivia, merit_quiz_state, empty_ GAME( 1985, trvwzb, trvwz, trvwhiz, trivia, merit_quiz_state, empty_init, ROT0, "Merit", "Trivia ? Whiz (6221-00, Alt Gen trivia)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, trvwzv, trvwz, trvwhiz, trivia, merit_quiz_state, empty_init, ROT90, "Merit", "Trivia ? Whiz (6221-02, Vertical)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz2, 0, trvwhiz, trivia, merit_quiz_state, init_key<2>, ROT90, "Merit", "Trivia ? Whiz (6221-05, Edition 2)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz2a, trvwz2, trvwhiz, trivia, merit_quiz_state, init_key<2>, ROT90, "Merit", "Trivia ? Whiz (6221-05, Edition 2 Alt Sex trivia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz2, 0, trvwhiz, trivia, merit_quiz_state, init_key<2>, ROT90, "Merit", "Trivia ? Whiz Edition 2 (6221-05)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz2a, trvwz2, trvwhiz, trivia, merit_quiz_state, init_key<2>, ROT90, "Merit", "Trivia ? Whiz Edition 2 (6221-05, Alt Sex trivia)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz3, 0, trvwhiz, trivia, merit_quiz_state, empty_init, ROT0, "Merit", "Trivia ? Whiz (6221-05, U5-0D, Edition 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz3a, trvwz3, trvwhiz, trivia, merit_quiz_state, empty_init, ROT0, "Merit", "Trivia ? Whiz (6221-05, U5-0C, Edition 3)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz3b, trvwz3, trvwhiz, trivia, merit_quiz_state, empty_init, ROT0, "Merit", "Trivia ? Whiz (6221-05, Edition 3 Sex trivia III)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz3v, trvwz3, trvwhiz, trivia, merit_quiz_state, empty_init, ROT90, "Merit", "Trivia ? Whiz (6221-04, U5-0E, Edition 3 Vertical)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz3, 0, trvwhiz, trivia, merit_quiz_state, empty_init, ROT0, "Merit", "Trivia ? Whiz Edition 3 (6221-05, U5-0D)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz3a, trvwz3, trvwhiz, trivia, merit_quiz_state, empty_init, ROT0, "Merit", "Trivia ? Whiz Edition 3 (6221-05, U5-0C)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz3b, trvwz3, trvwhiz, trivia, merit_quiz_state, empty_init, ROT0, "Merit", "Trivia ? Whiz Edition 3 (6221-05, with Sex trivia III)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz3v, trvwz3, trvwhiz, trivia, merit_quiz_state, empty_init, ROT90, "Merit", "Trivia ? Whiz Edition 3 (6221-04, U5-0E, Vertical)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz4, 0, trvwhziv, trvwhziv, merit_quiz_state, init_key<5>, ROT0, "Merit", "Trivia ? Whiz (6221-10, U5-0A, Edition 4)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz4v, trvwz4, trvwhziv, trvwhziv, merit_quiz_state, init_key<5>, ROT90, "Merit", "Trivia ? Whiz (6221-13, U5-0B, Edition 4 Vertical)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, trvwz4va, trvwz4, trvwhziv, trvwhziv, merit_quiz_state, init_key<5>, ROT90, "Merit", "Trivia ? Whiz (6221-13, U5-0B, Edition 4 Vertical Alt Sex trivia)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz4, 0, trvwhziv, trvwhziv, merit_quiz_state, init_key<5>, ROT0, "Merit", "Trivia ? Whiz Edition 4 (6221-10, U5-0A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz4v, trvwz4, trvwhziv, trvwhziv, merit_quiz_state, init_key<5>, ROT90, "Merit", "Trivia ? Whiz Edition 4 (6221-13, U5-0B, Vertical)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, trvwz4va, trvwz4, trvwhziv, trvwhziv, merit_quiz_state, init_key<5>, ROT90, "Merit", "Trivia ? Whiz Edition 4 (6221-13, U5-0B, alt Sex trivia)", MACHINE_SUPPORTS_SAVE ) GAME( 1985, tictac, 0, tictac, tictac, merit_quiz_state, init_key<8>, ROT0, "Merit", "Tic Tac Trivia (6221-23, U5-0C, 07/07/86)", MACHINE_SUPPORTS_SAVE ) // all new trivia categories GAME( 1985, tictaca, tictac, tictac, tictac, merit_quiz_state, init_key<4>, ROT0, "Merit", "Tic Tac Trivia (6221-23, U5-0C, 02/11/86)", MACHINE_SUPPORTS_SAVE ) -GAME( 1985, tictacv, tictac, tictac, tictac, merit_quiz_state, init_key<4>, ROT90, "Merit", "Tic Tac Trivia (6221-22, U5-0 Vertical)", MACHINE_SUPPORTS_SAVE ) +GAME( 1985, tictacv, tictac, tictac, tictac, merit_quiz_state, init_key<4>, ROT90, "Merit", "Tic Tac Trivia (6221-22, U5-0, Vertical)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, phrcraze, 0, phrcraze, phrcrazs, merit_quiz_state, init_key<7>, ROT0, "Merit", "Phraze Craze (6221-40, U5-3A Expanded Questions)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, phrcrazea, phrcraze, phrcraze, phrcrazs, merit_quiz_state, init_key<7>, ROT0, "Merit", "Phraze Craze (6221-40, U5-3 Expanded Questions)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, phrcraze, 0, phrcraze, phrcrazs, merit_quiz_state, init_key<7>, ROT0, "Merit", "Phraze Craze (6221-40, U5-3A, Expanded Questions)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, phrcrazea, phrcraze, phrcraze, phrcrazs, merit_quiz_state, init_key<7>, ROT0, "Merit", "Phraze Craze (6221-40, U5-3, Expanded Questions)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, phrcrazeb, phrcraze, phrcraze, phrcraze, merit_quiz_state, init_key<7>, ROT0, "Merit", "Phraze Craze (6221-40, U5-0A)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, phrcrazec, phrcraze, phrcraze, phrcraza, merit_quiz_state, init_key<7>, ROT0, "Merit", "Phraze Craze (6221-40, U5-0)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, phrcrazev, phrcraze, phrcraze, phrcrazs, merit_quiz_state, init_key<7>, ROT90, "Merit", "Phraze Craze (6221-45, U5-2 Vertical)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, phrcrazev, phrcraze, phrcraze, phrcrazs, merit_quiz_state, init_key<7>, ROT90, "Merit", "Phraze Craze (6221-45, U5-2, Vertical)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, dtrvwz5, 0, dtrvwz5, dtrvwz5, merit_quiz_state, init_dtrvwz5, ROT0, "Merit", "Deluxe Trivia ? Whiz (6221-70, U5-0A Edition 5)", MACHINE_SUPPORTS_SAVE ) -GAME( 1987, dtrvwz5v, dtrvwz5, dtrvwz5, dtrvwz5, merit_quiz_state, init_dtrvwz5, ROT90, "Merit", "Deluxe Trivia ? Whiz (6221-75, U5-0 Edition 5 Vertical)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, dtrvwz5, 0, dtrvwz5, dtrvwz5, merit_quiz_state, init_dtrvwz5, ROT0, "Merit", "Deluxe Trivia ? Whiz Edition 5 (6221-70, U5-0A)", MACHINE_SUPPORTS_SAVE ) +GAME( 1987, dtrvwz5v, dtrvwz5, dtrvwz5, dtrvwz5, merit_quiz_state, init_dtrvwz5, ROT90, "Merit", "Deluxe Trivia ? Whiz Edition 5 (6221-75, U5-0, Vertical)", MACHINE_SUPPORTS_SAVE ) GAME( 1986, matchem, 0, couple, matchem, merit_state, init_crt209, ROT0, "Merit", "Match'em Up (6221-51, U5-1)", MACHINE_SUPPORTS_SAVE ) -GAME( 1986, matchemg, matchem, couple, matchemg, merit_state, init_crt209, ROT0, "Merit", "Match'em Up (6221-55, U5-1 German)", MACHINE_SUPPORTS_SAVE ) +GAME( 1986, matchemg, matchem, couple, matchemg, merit_state, init_crt209, ROT0, "Merit", "Match'em Up (6221-55, U5-1, German)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, couple, matchem, couple, couple, merit_state, init_crt209, ROT0, "bootleg", "The Couples (set 1)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, couplep, matchem, couple, couplep, merit_state, init_crt209, ROT0, "bootleg", "The Couples (set 2)", MACHINE_SUPPORTS_SAVE ) GAME( 1988, couplei, matchem, couple, couple, merit_state, init_crt209, ROT0, "bootleg", "The Couples (set 3)", MACHINE_SUPPORTS_SAVE ) diff --git a/src/mame/merit/merit3xx.cpp b/src/mame/merit/merit3xx.cpp index d01c8c0c7e2..867d9ed88de 100644 --- a/src/mame/merit/merit3xx.cpp +++ b/src/mame/merit/merit3xx.cpp @@ -20,8 +20,8 @@ TODO: - ma6710 hangs at UART device check (PC=5e44). Bypassing it, game stops with 'TOD CLOCK ERROR'; - Never initializes RAMDAC; - Never initializes CRTC on CRT-352 games; -- Map secondary NVRAM moduleM -- Map / connect up Dallas DS1216 RTCM +- Map secondary NVRAM module; +- Map / connect up Dallas DS1216 RTC; - ma6710a/ma9800 start with game malfunction message. It can be started by switching IN2:2 on, then pressing discard 3. Games 'Super Eight' and 'Black Jack' show GFX banking logic isn't correct. 'Black Jack' GFX are over 0x8000 in ROM but proper GFX bank bit hasn't been identified. @@ -762,11 +762,11 @@ lamps for control panel buttons */ static INPUT_PORTS_START( merit3xx ) PORT_START("IN0") - PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1") + PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) PORT_NAME("Discard 1") // "Double Down" button in Blackjack PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) PORT_NAME("Discard 2") - PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3") - PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4") - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5") + PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) PORT_NAME("Discard 3") // "Split" button in Blackjack + PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_POKER_HOLD4 ) PORT_NAME("Discard 4") // "Stand" button in Blackjack + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_POKER_HOLD5 ) PORT_NAME("Discard 5") // "Hit" button in Blackjack PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_GAMBLE_BET ) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_GAMBLE_DEAL ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_GAMBLE_PAYOUT ) @@ -836,10 +836,27 @@ static INPUT_PORTS_START( merit3xx ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) INPUT_PORTS_END + +/* +Translations of on screen messages for ma9800: +Bedobott Ermek = Inserted Coins +Hivja A Gepkezelot = Call Attendant +Feketedoboz Hiba = Blackbox Error + +Button labels: + TET = Bet + OSZT = Deal + KIFIZET = Collect + BEFEJEZ = Stand +ELDOB/VISSZAVESZ = Discard/Recover + +It seems that this set uses a hopper instead of a printer like other sets. +*/ + static INPUT_PORTS_START( ma9800 ) PORT_INCLUDE( merit3xx ) -// PORT_START("IN1") +// PORT_MODIFY("IN1") // PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_POKER_HOLD1 ) // Button labeled ELDOB/VISSZAVESZ // PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_POKER_HOLD2 ) // Button labeled ELDOB/VISSZAVESZ // PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_POKER_HOLD3 ) // Button labeled ELDOB/VISSZAVESZ @@ -853,12 +870,8 @@ static INPUT_PORTS_START( ma9800 ) PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 ) PORT_IMPULSE(2) // gives 1 credit at a time (25 cents) PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 ) PORT_IMPULSE(2) // gives 4 credits at a time ($1.00) // PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_GAMBLE_STAND ) // Button labeled BEFEJEZ - PORT_DIPNAME( 0x20, 0x20, "IN1.6 Door" ) PORT_TOGGLE // <-- for ma9800 set, ON results in DOOR OPEN error - PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) - PORT_DIPNAME( 0x40, 0x40, "IN1.7 Door" ) PORT_TOGGLE // <-- for ma9800 set, ON results in DOOR OPEN error - PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) - PORT_DIPSETTING( 0x00, DEF_STR( On ) ) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Door 2") PORT_CODE(KEYCODE_U) PORT_TOGGLE // Unknown what these 2 are but will give DOOR OPEN errors + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Door 3") PORT_CODE(KEYCODE_Y) PORT_TOGGLE // Unknown what these 2 are but will give DOOR OPEN errors PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_COIN3 ) PORT_IMPULSE(2) // gives 4 credits at a time ($1.00) INPUT_PORTS_END diff --git a/src/mame/namco/namcos11.cpp b/src/mame/namco/namcos11.cpp index e621de9e6f1..2a827980116 100644 --- a/src/mame/namco/namcos11.cpp +++ b/src/mame/namco/namcos11.cpp @@ -2052,8 +2052,8 @@ ROM_END */ GAME( 1994, tekken, 0, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (World, TE2/VER.C)", 0 ) -GAME( 1994, tekkenac, tekken, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (Asia, TE4/VER.C)", 0 ) GAME( 1994, tekkenb, tekken, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (World, TE2/VER.B)", 0 ) +GAME( 1994, tekkenac, tekken, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (Asia, TE4/VER.C)", 0 ) GAME( 1994, tekkenjb, tekken, tekken, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken (Japan, TE1/VER.B)", 0 ) GAME( 1996, tekken2, 0, tekken2, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken 2 Ver.B (World, TES2/VER.D)", 0 ) GAME( 1995, tekken2b, tekken2, tekken2o, tekken, namcos11_state, empty_init, ROT0, "Namco", "Tekken 2 Ver.B (World, TES2/VER.B)", 0 ) diff --git a/src/mame/namco/namcos12.cpp b/src/mame/namco/namcos12.cpp index f8c3698e570..e0f05baaf3a 100644 --- a/src/mame/namco/namcos12.cpp +++ b/src/mame/namco/namcos12.cpp @@ -3565,8 +3565,8 @@ ROM_END // YEAR NAME PARENT MACHINE INPUT CLASS INIT ROT COMPANY FULLNAME, FLAGS 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, tekken3b, tekken3, coh700, namcos12, namcos12_state, init_namcos12, ROT0, "Namco", "Tekken 3 (World, TET2/VER.B)", 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/sega/model1.cpp b/src/mame/sega/model1.cpp index 61da3ea21d9..e781e70701e 100644 --- a/src/mame/sega/model1.cpp +++ b/src/mame/sega/model1.cpp @@ -14,6 +14,7 @@ Known functional issues: Sega Model 1 Hardware Overview ------------------------------ +Documented by Guru Note! This document is a Work-In-Progress and covers all the dumped Sega Model 1 games, including... @@ -1752,7 +1753,7 @@ void model1_state::model1(machine_config &config) I8251(config, m_m1uart, 8000000); // uPD71051C, clock unknown m_m1uart->txd_handler().set(m_m1audio, FUNC(segam1audio_device::write_txd)); - clock_device &m1uart_clock(CLOCK(config, "m1uart_clock", 500000)); // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + clock_device &m1uart_clock(CLOCK(config, "m1uart_clock", 16_MHz_XTAL / 2 / 16)); // 16 times 31.25kHz (standard Sega/MIDI sound data rate) m1uart_clock.signal_handler().set(m_m1uart, FUNC(i8251_device::write_txc)); m1uart_clock.signal_handler().append(m_m1uart, FUNC(i8251_device::write_rxc)); } diff --git a/src/mame/sega/model2.cpp b/src/mame/sega/model2.cpp index f9eca11243f..dbf27632be5 100644 --- a/src/mame/sega/model2.cpp +++ b/src/mame/sega/model2.cpp @@ -2544,7 +2544,7 @@ void model2o_state::model2o(machine_config &config) I8251(config, m_uart, 8000000); // uPD71051C, clock unknown m_uart->txd_handler().set(m_m1audio, FUNC(segam1audio_device::write_txd)); - clock_device &uart_clock(CLOCK(config, "uart_clock", 500000)); // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + clock_device &uart_clock(CLOCK(config, "uart_clock", 16_MHz_XTAL / 2 / 16)); // 16 times 31.25kHz (standard Sega/MIDI sound data rate) uart_clock.signal_handler().set(m_uart, FUNC(i8251_device::write_txc)); uart_clock.signal_handler().append(m_uart, FUNC(i8251_device::write_rxc)); diff --git a/src/mame/seta/seta.cpp b/src/mame/seta/seta.cpp index 377093e3df0..a924c5f89b3 100644 --- a/src/mame/seta/seta.cpp +++ b/src/mame/seta/seta.cpp @@ -1439,7 +1439,6 @@ protected: void seta_vregs_w(u8 data); u16 seta_dsw_r(offs_t offset); - u16 zingzipbl_unknown_r(); void blockcar_interrupt_w(u8 data); u16 extdwnhl_watchdog_r(); void utoukond_sound_control_w(u8 data); @@ -2497,41 +2496,36 @@ void zombraid_state::zombraid_x1_map(address_map &map) map(0x80000, 0xfffff).bankr("x1_bank"); } -u16 seta_state::zingzipbl_unknown_r() -{ - return 0x0000; -} - void seta_state::zingzipbl_map(address_map &map) { - map(0x000000, 0x07ffff).rom(); // ROM (up to 2MB) - map(0x200000, 0x20ffff).ram().share("workram"); // RAM (pointer for zombraid crosshair hack) -// map(0x400000, 0x400001).port_r("P1"); // P1 -// map(0x400002, 0x400003).port_r("P2"); // P2 - map(0x400002, 0x400003).r(FUNC(seta_state::zingzipbl_unknown_r)); // P2 -// map(0x400004, 0x400005).port_r("COINS"); // Coins - map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w)); // Coin Lockout - map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w)); // Video Registers - map(0x500004, 0x500005).nopw(); - //map(0x600000, 0x600003).r(FUNC(seta_state::seta_dsw_r)); // DSW - map(0x700400, 0x700fff).ram().share("paletteram1"); // Palette - map(0x800000, 0x803fff).ram().w(m_layers[0], FUNC(x1_012_device::vram_w)).share("layer1"); // VRAM 0&1 - map(0x880000, 0x883fff).ram().w(m_layers[1], FUNC(x1_012_device::vram_w)).share("layer2"); // VRAM 2&3 - map(0x900000, 0x900005).rw(m_layers[0], FUNC(x1_012_device::vctrl_r), FUNC(x1_012_device::vctrl_w)); // VRAM 0&1 Ctrl - - //map(0x902006, 0x902007).w // writes 0 here on start up - map(0x902010, 0x902013).r(FUNC(seta_state::zingzipbl_unknown_r)); - - map(0x980000, 0x980005).rw(m_layers[1], FUNC(x1_012_device::vctrl_r), FUNC(x1_012_device::vctrl_w)); // VRAM 2&3 Ctrl + map(0x000000, 0x07ffff).rom(); // ok + map(0x200000, 0x20ffff).ram(); // ok + // TODO: coins (possibly 0x400000). For now only free-play 'works'. + map(0x500001, 0x500001).w(FUNC(seta_state::seta_coin_lockout_w)); // ok + map(0x500003, 0x500003).w(FUNC(seta_state::seta_vregs_w)); // maybe? + map(0x700400, 0x700fff).ram().share("paletteram1"); // ok + map(0x800000, 0x803fff).ram().w(m_layers[0], FUNC(x1_012_device::vram_w)).share("layer1"); // ok + map(0x880000, 0x883fff).ram().w(m_layers[1], FUNC(x1_012_device::vram_w)).share("layer2"); // ok + map(0x902001, 0x902001).rw("oki", FUNC(okim6295_device::read), FUNC(okim6295_device::write)); // should be ok, but bad ROM + // the following appear to be video registers, but laid out differently than in the original. Trampoline galore for now. TODO: verify + map(0x902004, 0x902005).lw16(NAME([this] (offs_t offset, uint16_t data, uint16_t mem_mask) { m_layers[1]->vctrl_w(1, data, mem_mask); })); + map(0x902006, 0x902007).lw16(NAME([this] (offs_t offset, uint16_t data, uint16_t mem_mask) { m_layers[1]->vctrl_w(0, data, mem_mask); })); + map(0x902008, 0x902009).lw16(NAME([this] (offs_t offset, uint16_t data, uint16_t mem_mask) { m_layers[0]->vctrl_w(1, data, mem_mask); })); + map(0x90200a, 0x90200b).lw16(NAME([this] (offs_t offset, uint16_t data, uint16_t mem_mask) { m_layers[0]->vctrl_w(0, data, mem_mask); })); + map(0x900004, 0x900005).lw16(NAME([this] (offs_t offset, uint16_t data, uint16_t mem_mask) { m_layers[0]->vctrl_w(2, data, mem_mask); })); + map(0x980004, 0x980005).lw16(NAME([this] (offs_t offset, uint16_t data, uint16_t mem_mask) { m_layers[1]->vctrl_w(2, data, mem_mask); })); + map(0x902010, 0x902013).r(FUNC(seta_state::seta_dsw_r)); // ok + map(0x902014, 0x902015).portr("P1"); // ok + map(0x902016, 0x902017).portr("P2"); // ok + + // TODO: sprites also seem to have different registers, need correct implementation map(0xa00000, 0xa005ff).ram().rw(m_spritegen, FUNC(x1_001_device::spriteylow_r16), FUNC(x1_001_device::spriteylow_w16)); // Sprites Y map(0xa00600, 0xa00607).ram().rw(m_spritegen, FUNC(x1_001_device::spritectrl_r16), FUNC(x1_001_device::spritectrl_w16)); map(0xa00608, 0xa00fff).ram(); // zeroed on start up - map(0xa00600, 0xa00607).ram().rw(m_spritegen, FUNC(x1_001_device::spritectrl_r16), FUNC(x1_001_device::spritectrl_w16)); - map(0xa80000, 0xa80001).ram(); // ? 0x4000 map(0xb00000, 0xb03fff).ram().rw(m_spritegen, FUNC(x1_001_device::spritecode_r16), FUNC(x1_001_device::spritecode_w16)); // Sprites Code + X + Attr - map(0xc00000, 0xc000ff).ram(); // zeroed on startup - map(0xe00000, 0xe00001).nopw(); // ? VBlank IRQ Ack - map(0xf00000, 0xf00001).nopw(); // ? Sound IRQ Ack + + map(0xc00000, 0xc000ff).ram(); // zeroed on startup, doesn't seem to be used later + map(0xe00000, 0xe00001).w(m_watchdog, FUNC(watchdog_timer_device::reset16_w)); } void seta_state::jjsquawb_map(address_map &map) @@ -9016,8 +9010,8 @@ void seta_state::zingzipbl(machine_config &config) M68000(config.replace(), m_maincpu, 16000000); // 16 MHz m_maincpu->set_addrmap(AS_PROGRAM, &seta_state::zingzipbl_map); - TIMER(config, "scantimer").configure_scanline(FUNC(seta_state::seta_interrupt_1_and_2), "screen", 0, 1); - subdevice("screen")->screen_vblank().set_nop(); + + subdevice("screen")->screen_vblank().set_inputline(m_maincpu, 6, HOLD_LINE); // TODO: there's probably more then this config.device_remove("x1snd"); @@ -9731,8 +9725,8 @@ ROM_START( zingzipbl ) ROM_COPY( "gfxtemp", 0x080000, 0x000000, 0x80000 ) ROM_COPY( "gfxtemp", 0x180000, 0x080000, 0x80000 ) - ROM_REGION( 0x100000, "oki", 0 ) // OKI Samples - Not Seta - ROM_LOAD( "8", 0x000000, 0x40000, CRC(7927a200) SHA1(fd6163d2867959ec14b418d6207ae024afd3b654) ) + ROM_REGION( 0x40000, "oki", 0 ) // OKI Samples - Not Seta + ROM_LOAD( "8", 0x00000, 0x40000, BAD_DUMP CRC(7927a200) SHA1(fd6163d2867959ec14b418d6207ae024afd3b654) ) // BADADDR xxxxxxxxxxxxxxx-xx ROM_END ROM_START( atehate ) @@ -11346,7 +11340,7 @@ GAME( 1992, neobattl, 0, umanclub, neobattl, seta_state, empty_ini GAME( 1992, umanclub, 0, umanclub, umanclub, seta_state, empty_init, ROT0, "Banpresto", "Ultraman Club - Tatakae! Ultraman Kyoudai!!", 0 ) GAME( 1992, zingzip, 0, zingzip, zingzip, seta_state, empty_init, ROT270, "Allumer / Tecmo", "Zing Zing Zip (World) / Zhen Zhen Ji Pao (China?)", 0 ) // This set has Chinese Characters in Title screen, it distributed for Chinese market/or Title: DSW? -GAME( 1992, zingzipbl, zingzip, zingzipbl, zingzip, seta_state, empty_init, ROT270, "bootleg", "Zing Zing Zip (bootleg)", MACHINE_NOT_WORKING ) +GAME( 1992, zingzipbl, zingzip, zingzipbl, zingzip, seta_state, empty_init, ROT270, "bootleg", "Zing Zing Zip (bootleg)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // different video registers, bad Oki ROM dump GAME( 1993, atehate, 0, atehate, atehate, seta_state, empty_init, ROT0, "Athena", "Athena no Hatena?", 0 ) diff --git a/src/mame/shared/segam1audio.cpp b/src/mame/shared/segam1audio.cpp index 70a8fc8b1a7..d57d6350c7a 100644 --- a/src/mame/shared/segam1audio.cpp +++ b/src/mame/shared/segam1audio.cpp @@ -52,33 +52,37 @@ DEFINE_DEVICE_TYPE(SEGAM1AUDIO, segam1audio_device, "segam1audio", "Sega Model 1 void segam1audio_device::device_add_mconfig(machine_config &config) { - M68000(config, m_audiocpu, 10000000); // verified on real h/w + M68000(config, m_audiocpu, 20_MHz_XTAL / 2); // verified on real h/w m_audiocpu->set_addrmap(AS_PROGRAM, &segam1audio_device::segam1audio_map); SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "rspeaker").front_right(); - YM3438(config, m_ym, 8_MHz_XTAL); + YM3438(config, m_ym, 16_MHz_XTAL / 2); m_ym->add_route(0, "lspeaker", 0.30); m_ym->add_route(1, "rspeaker", 0.30); - MULTIPCM(config, m_multipcm_1, 10_MHz_XTAL); + MULTIPCM(config, m_multipcm_1, 20_MHz_XTAL / 2); m_multipcm_1->set_addrmap(0, &segam1audio_device::mpcm1_map); m_multipcm_1->add_route(0, "lspeaker", 0.5); m_multipcm_1->add_route(1, "rspeaker", 0.5); - MULTIPCM(config, m_multipcm_2, 10_MHz_XTAL); + MULTIPCM(config, m_multipcm_2, 20_MHz_XTAL / 2); m_multipcm_2->set_addrmap(0, &segam1audio_device::mpcm2_map); m_multipcm_2->add_route(0, "lspeaker", 0.5); m_multipcm_2->add_route(1, "rspeaker", 0.5); - I8251(config, m_uart, 8_MHz_XTAL); // T82C51, clock unknown + I8251(config, m_uart, 16_MHz_XTAL / 2); // T82C51 m_uart->rxrdy_handler().set_inputline(m_audiocpu, M68K_IRQ_2); m_uart->txd_handler().set(FUNC(segam1audio_device::output_txd)); - clock_device &uart_clock(CLOCK(config, "uart_clock", 500000)); // 16 times 31.25MHz (standard Sega/MIDI sound data rate) + clock_device &uart_clock(CLOCK(config, "uart_clock", 16_MHz_XTAL / 2 / 16)); // 16 times 31.25kHz (standard Sega/MIDI sound data rate) uart_clock.signal_handler().set(m_uart, FUNC(i8251_device::write_txc)); uart_clock.signal_handler().append(m_uart, FUNC(i8251_device::write_rxc)); + + // DAC output clocks measures: + // BYTECLK = 10/8 (1.25MHz) + // WORDCLK = 10/8/28 (44.642857kHz) } //************************************************************************** diff --git a/src/mame/skeleton/ramstar.cpp b/src/mame/skeleton/ramstar.cpp index ea99f67769c..3ca803b9479 100644 --- a/src/mame/skeleton/ramstar.cpp +++ b/src/mame/skeleton/ramstar.cpp @@ -45,6 +45,7 @@ It only contains a 27C512 or 27C1024 and a X24C04. #include "machine/6522via.h" #include "machine/i2cmem.h" #include "machine/msm6242.h" +#include "machine/r65c52.h" #include "sound/ay8910.h" #include "emupal.h" @@ -165,7 +166,7 @@ void ramstar_state::ramstar(machine_config &config) R65C22(config, "via", 3.6864_MHz_XTAL / 2); // divider not verified - // TODO: R65C52 DACIA + R65C52(config, "dacia", 3.6864_MHz_XTAL / 2); // divider not verified I80C31(config, m_cartcpu, 6_MHz_XTAL); // (absence of) divider not verified m_cartcpu->set_addrmap(AS_PROGRAM, &ramstar_state::cart_program_map); -- cgit v1.2.3