diff options
| author | 2024-07-18 15:50:55 -0500 | |
|---|---|---|
| committer | 2024-07-18 16:50:55 -0400 | |
| commit | e773270e6751ce59ff548b4aadb37cea7136dc42 (patch) | |
| tree | 7f7b66b31c85f5ecc3a6aaf9e3d14775d20e3f90 /src | |
| parent | f0faf6b78ab159fca13f1636c22449672ca99b9e (diff) | |
konami/viper.cpp: hookup wcombat inputs, update QA (#12591)
Diffstat (limited to 'src')
| -rw-r--r-- | src/mame/konami/viper.cpp | 151 | ||||
| -rw-r--r-- | src/mame/mame.lst | 5 |
2 files changed, 32 insertions, 124 deletions
diff --git a/src/mame/konami/viper.cpp b/src/mame/konami/viper.cpp index cebb9152e0a..9c5446b688e 100644 --- a/src/mame/konami/viper.cpp +++ b/src/mame/konami/viper.cpp @@ -17,7 +17,7 @@ IRQ3: Sound (Task 5) IRQ4: Voodoo3 Currently only for User Interrupt Command, maybe a more extensive handler gets installed later? - I2C: ??? (no task switch) what drives this? network? U13 (ADC838) test fails if I2C doesn't work + I2C: ??? (no task switch) U13 (ADC838) test fails if I2C doesn't work DMA0: unused DMA1: unused IIVPR3: unused @@ -86,21 +86,15 @@ - hookup adc0838, reads from i2c; - convert epic to be a device, make it input_merger/irq_callback complaint; - (more intermediate steps for proper PCI conversions here) - - xtrial: hangs when coined up; - - gticlub2: throws NETWORK ERROR after course select; - jpark3: attract mode demo play acts weird, the dinosaur gets submerged and camera doesn't really know what to do, CPU core bug? - jpark3: crashes during second attract cycle; - - sscopex, thrild2: attract mode black screens (coin still works), sogeki/sscopefh are unaffected; - - thrild2: no BGMs; - - wcombat: black screen when entering service mode; + - sscopex: attract mode black screens (coin still works), sogeki/sscopefh are unaffected; - mocapglf, sscopefh, sscopex: implement 2nd screen output, controlled by IP90C63A; \- sscopex/sogeki desyncs during gameplay intro, leaves heavy trails in gameplay; - ppp2nd: hangs when selecting game mode from service (manages to save); - - code1db: crashes when selecting single course type; - wcombatj: gets stuck on network check; - - thrild2c: blue screen; - - thrild2ac: black screen; + - thrild2c: bad CF dump (blue screens because of it); - all games needs to be verified against factory settings (game options, coin options & sound options often don't match "green colored" defaults) @@ -111,34 +105,6 @@ - mocapglf: enable "show diag" at boot then disable it once the diag text appears. This will allow game to bypass the I/O SENSOR error later on. - Game status (potentially outdated, to be moved on top): - boxingm Goes in-game. Controllers are not emulated. Various graphical glitches. - jpark3 Goes in-game. Controllers are not emulated. Various graphical glitches. - mocapb,j Goes in-game. Controllers are not emulated. Various graphical glitches. Random crashes. - ppp2nd,a Fully playable with graphical glitches. No network or DVD support. Crashes when returning to game mode from test menu. - p911(all) Goes in-game. Controllers are not emulated. Various graphical glitches. - tsurugi,j Goes in-game. Controllers are not emulated. Various graphical glitches. - p9112 Goes in-game. Controllers are not emulated. Various graphical glitches. - - gticlub2,ea Attract mode works. Coins up. Hangs in various places. Will crash with "network error" after stage is selected. - thrild2,a Attract mode with partial graphics. Coins up. Hangs in various places. - - sscopefh Graphics heavily glitched. Gun controller is not emulated. Sensor error and hopper error stop it from working. - - mfightc,c Requires touch panel emulation. Gets stuck at "Waiting for central monitor, checking serial...". - xtrial Hangs at "Please set the time for the bookkeeping" message. - - code1d,b,a Can boot but crashes randomly and quickly so it's hard to do anything. - - mocapglf Gets stuck at "SENSOR I/O ERROR" though test menu can still be entered. - sscopex,sogeki Graphics very heavily glitched. Gun controller is not emulated. - - wcombat Can boot into a test menu by using a combination of dipswitches, but it says "serial check bad". Can't boot normally. - wcombatu Bootable when dipsw 4 is set to on. Controls not implemented so it's not possible to pass nickname selection screen. Freezes when test button is pressed. - thrild2c,ac Inf loop on blue screen - - - =================================================================================================== Konami Viper Hardware Overview (last updated 5th June 2011 10:56pm) @@ -1860,7 +1826,6 @@ void viper_state::viper_map(address_map &map) // map(0xffe28008, 0xffe2801f).noprw(); map(0xffe30000, 0xffe31fff).rw("m48t58", FUNC(timekeeper_device::read), FUNC(timekeeper_device::write)); map(0xffe40000, 0xffe40007).noprw(); // JTAG? 0x00 on normal operation, other values on POST, - // 0xa8/0xa9 for unexpected irq (namely irq1) map(0xffe50000, 0xffe50007).w(FUNC(viper_state::unk2_w)); map(0xffe60000, 0xffe60007).noprw(); map(0xffe70000, 0xffe70000).rw(FUNC(viper_state::ds2430_r), FUNC(viper_state::ds2430_w)); @@ -2345,7 +2310,7 @@ INPUT_PORTS_START( tsurugi ) PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Sensor Grip") INPUT_PORTS_END -INPUT_PORTS_START( wcombat ) +INPUT_PORTS_START( wcombat_common ) PORT_INCLUDE( viper ) PORT_MODIFY("IN2") @@ -2370,13 +2335,30 @@ INPUT_PORTS_START( wcombat ) PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) PORT_DIPSETTING( 0x00, DEF_STR( On ) ) PORT_BIT( 0x10, IP_ACTIVE_HIGH, IPT_UNKNOWN ) // X flip screen + PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Gun Trigger") PORT_PLAYER(1) + PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Gun Trigger") PORT_PLAYER(2) +INPUT_PORTS_END + +// two player cab using optical lightguns +INPUT_PORTS_START( wcombat2p ) + PORT_INCLUDE( wcombat_common ) + + PORT_MODIFY("GUN0") + PORT_BIT( 0x07ff, 0x2f8, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0x00e0, 0x0510 ) PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_PLAYER(1) - // TODO: whatever it reads from the i2c analog ports (needs service mode) + PORT_MODIFY("GUN1") + PORT_BIT( 0x01ff, 0x0e7, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX(0x0020, 0x01af) PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_PLAYER(1) + + PORT_MODIFY("GUN2") + PORT_BIT( 0x07ff, 0x2f8, IPT_LIGHTGUN_X ) PORT_CROSSHAIR(X, 1.0, 0.0, 0) PORT_MINMAX( 0x00e0, 0x0510 ) PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_PLAYER(2) + + PORT_MODIFY("GUN3") + PORT_BIT( 0x01ff, 0x0e7, IPT_LIGHTGUN_Y ) PORT_CROSSHAIR(Y, 1.0, 0.0, 0) PORT_MINMAX(0x0020, 0x01af) PORT_SENSITIVITY(15) PORT_KEYDELTA(1) PORT_PLAYER(2) INPUT_PORTS_END -// twin cab version? -INPUT_PORTS_START( wcombatj ) - PORT_INCLUDE( wcombat ) +// 4 player verion running on two viper pcbs networked using IR guns +INPUT_PORTS_START( wcombat4p ) + PORT_INCLUDE( wcombat_common ) // TODO: check if DIP2 ID selects side as stated by the manual @@ -2384,6 +2366,8 @@ INPUT_PORTS_START( wcombatj ) PORT_MODIFY("IN5") PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START4 ) PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START3 ) + + // TODO: non-i2c analog ports (read through the left viper pcb's serial port) INPUT_PORTS_END INPUT_PORTS_START( xtrial ) @@ -2976,19 +2960,6 @@ ROM_START(p911ed) //* DISK_IMAGE( "a00eaa02", 0, SHA1(81565a2dce2e2b0a7927078a784354948af1f87c) ) // Is actually UAD/EAD ROM_END -ROM_START(p911ea) - VIPER_BIOS - - ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) - - ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ - ROM_LOAD("a00eaa_nvram.u39", 0x000000, 0x2000, CRC(4f3497b6) SHA1(3045c54f98dff92cdf3a1fc0cd4c76ba82d632d7) ) - - DISK_REGION( "ata:0:hdd" ) - DISK_IMAGE( "a00eaa02_ea", 0, SHA1(fa057bf17f4c0fb9b9a09b820ff7a101e44fab7d) ) -ROM_END - ROM_START(p911j) //* VIPER_BIOS @@ -3096,33 +3067,6 @@ ROM_START(thrild2a) //* DISK_IMAGE( "a41a02", 0, SHA1(bbb71e23bddfa07dfa30b6565a35befd82b055b8) ) ROM_END -ROM_START(thrild2ab) - VIPER_BIOS - - ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) - - ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ - ROM_LOAD("a41aaa_nvram.u39", 0x00000, 0x2000, CRC(d5de9b8e) SHA1(768bcd46a6ad20948f60f5e0ecd2f7b9c2901061)) - - DISK_REGION( "ata:0:hdd" ) - DISK_IMAGE( "a41a02_alt", 0, SHA1(7a9cfdab7000765ffdd9198b209f7a74741248f2) ) -ROM_END - -ROM_START(thrild2ac) - VIPER_BIOS - - ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) - - ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ - ROM_LOAD("a41aaa_nvram.u39", 0x00000, 0x2000, CRC(d5de9b8e) SHA1(768bcd46a6ad20948f60f5e0ecd2f7b9c2901061)) - - DISK_REGION( "ata:0:hdd" ) - DISK_IMAGE( "a41a02_alt2", 0, SHA1(c8bfbac4f5a1a2241df7417ad2f9eba7d9e9a9df) ) -ROM_END - -/* This CF card has sticker 941EAA02 */ ROM_START(thrild2c) //* VIPER_BIOS @@ -3133,7 +3077,7 @@ ROM_START(thrild2c) //* ROM_LOAD("941eaa_nvram.u39", 0x00000, 0x2000, NO_DUMP ) DISK_REGION( "ata:0:hdd" ) - DISK_IMAGE( "a41c02", 0, SHA1(ab3020e8709768c0fd2467573e92b679a05944e5) ) + DISK_IMAGE( "a41c02", 0, BAD_DUMP SHA1(ab3020e8709768c0fd2467573e92b679a05944e5) ) ROM_END ROM_START(tsurugi) //* @@ -3162,19 +3106,6 @@ ROM_START(tsurugij) //* DISK_IMAGE( "a30c02", 0, SHA1(533b5669b00884a800df9ba29651777a76559862) ) ROM_END -ROM_START(tsurugie) - VIPER_BIOS - - ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, NO_DUMP ) - - ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ - ROM_LOAD("nvram.u39", 0x000000, 0x2000, NO_DUMP ) - - DISK_REGION( "ata:0:hdd" ) - DISK_IMAGE( "a30eab02", 0, SHA1(fcc5b69f89e246f26ca4b8546cc409d3488bbdd9) ) // Incomplete dump? Is half the size of the other dumps -ROM_END - /* This CF card has sticker C22D02 */ ROM_START(wcombat) //* VIPER_BIOS @@ -3189,19 +3120,6 @@ ROM_START(wcombat) //* DISK_IMAGE( "c22d02", 0, SHA1(69a24c9e36b073021d55bec27d89fcc0254a60cc) ) // chs 978,8,32 ROM_END -ROM_START(wcombatb) //* - VIPER_BIOS - - ROM_REGION(0x28, "ds2430", ROMREGION_ERASE00) /* DS2430 */ - ROM_LOAD("ds2430.u3", 0x00, 0x28, BAD_DUMP CRC(f1511505) SHA1(ed7cd9b2763b3e377df9663943160f9871f65105)) - - ROM_REGION(0x2000, "m48t58", ROMREGION_ERASE00) /* M48T58 Timekeeper NVRAM */ - ROM_LOAD("wcombat_nvram.u39", 0x00000, 0x2000, CRC(4f8b5858) SHA1(68066241c6f9db7f45e55b3c5da101987f4ce53c)) - - DISK_REGION( "ata:0:hdd" ) - DISK_IMAGE( "c22d02_alt", 0, SHA1(772e3fe7910f5115ec8f2235bb48ba9fcac6950d) ) // chs 978,8,32 -ROM_END - ROM_START(wcombatk) //* VIPER_BIOS @@ -3361,7 +3279,6 @@ GAME(2000, p911ac, p911, viper_fullbody, p911, viper_state, in GAME(2000, p911kc, p911, viper_fullbody, p911, viper_state, init_vipercf, ROT90, "Konami", "The Keisatsukan: Shinjuku 24-ji (ver KAC)", MACHINE_NOT_WORKING) GAME(2000, p911ud, p911, viper_fullbody, p911, viper_state, init_vipercf, ROT90, "Konami", "Police 911 (ver UAD)", MACHINE_NOT_WORKING) GAME(2000, p911ed, p911, viper_fullbody, p911, viper_state, init_vipercf, ROT90, "Konami", "Police 24/7 (ver EAD)", MACHINE_NOT_WORKING) -GAME(2000, p911ea, p911, viper_fullbody, p911, viper_state, init_vipercf, ROT90, "Konami", "Police 24/7 (ver EAD, alt)", MACHINE_NOT_WORKING) GAME(2000, p911j, p911, viper_fullbody, p911, viper_state, init_vipercf, ROT90, "Konami", "The Keisatsukan: Shinjuku 24-ji (ver JAE)", MACHINE_NOT_WORKING) GAME(2001, p9112, kviper, viper_fbdongle, p9112, viper_state, init_vipercf, ROT90, "Konami", "Police 911 2 (VER. UAA:B)", MACHINE_NOT_WORKING) GAME(2001, sscopex, kviper, viper, sscopex, viper_subscreen_state, init_vipercf, ROT0, "Konami", "Silent Scope EX (ver UAA)", MACHINE_NOT_WORKING) @@ -3370,17 +3287,13 @@ GAME(2002, sscopefh, kviper, viper, sscopefh, viper_subscreen_state, i GAME(2001, thrild2, kviper, viper, thrild2, viper_state, init_vipercf, ROT0, "Konami", "Thrill Drive 2 (ver EBB)", MACHINE_NOT_WORKING) GAME(2001, thrild2j, thrild2, viper, gticlub2, viper_state, init_vipercf, ROT0, "Konami", "Thrill Drive 2 (ver JAA)", MACHINE_NOT_WORKING) GAME(2001, thrild2a, thrild2, viper, gticlub2, viper_state, init_vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA)", MACHINE_NOT_WORKING) -GAME(2001, thrild2ab, thrild2, viper, gticlub2, viper_state, init_vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA, alt)", MACHINE_NOT_WORKING) -GAME(2001, thrild2ac, thrild2, viper, thrild2, viper_state, init_vipercf, ROT0, "Konami", "Thrill Drive 2 (ver AAA, alt 2)", MACHINE_NOT_WORKING) GAME(2001, thrild2c, thrild2, viper, thrild2, viper_state, init_vipercf, ROT0, "Konami", "Thrill Drive 2 (ver EAA)", MACHINE_NOT_WORKING) GAME(2002, tsurugi, kviper, viper, tsurugi, viper_state, init_vipercf, ROT0, "Konami", "Tsurugi (ver EAB)", MACHINE_NOT_WORKING) -GAME(2002, tsurugie, tsurugi, viper, tsurugi, viper_state, init_vipercf, ROT0, "Konami", "Tsurugi (ver EAB, alt)", MACHINE_NOT_WORKING) GAME(2002, tsurugij, tsurugi, viper, tsurugi, viper_state, init_vipercf, ROT0, "Konami", "Tsurugi (ver JAC)", MACHINE_NOT_WORKING) -GAME(2002, wcombat, kviper, viper, wcombat, viper_state, init_vipercf, ROT0, "Konami", "World Combat (ver AAD:B)", MACHINE_NOT_WORKING) -GAME(2002, wcombatb, wcombat, viper, wcombat, viper_state, init_vipercf, ROT0, "Konami", "World Combat (ver AAD:B, alt)", MACHINE_NOT_WORKING) -GAME(2002, wcombatk, wcombat, viper, wcombat, viper_state, init_vipercf, ROT0, "Konami", "World Combat (ver KBC:B)", MACHINE_NOT_WORKING) -GAME(2002, wcombatu, wcombat, viper, wcombat, viper_state, init_vipercf, ROT0, "Konami", "World Combat / Warzaid (ver UCD:B)", MACHINE_NOT_WORKING) -GAME(2002, wcombatj, wcombat, viper, wcombatj, viper_state, init_vipercf, ROT0, "Konami", "World Combat (ver JAA)", MACHINE_NOT_WORKING) +GAME(2002, wcombat, kviper, viper, wcombat4p, viper_state, init_vipercf, ROT0, "Konami", "World Combat (ver AAD:B)", MACHINE_NOT_WORKING) +GAME(2002, wcombatk, wcombat, viper, wcombat4p, viper_state, init_vipercf, ROT0, "Konami", "World Combat (ver KBC:B)", MACHINE_NOT_WORKING) +GAME(2002, wcombatu, wcombat, viper, wcombat2p, viper_state, init_vipercf, ROT0, "Konami", "World Combat / Warzaid (ver UCD:B)", MACHINE_NOT_WORKING) +GAME(2002, wcombatj, wcombat, viper, wcombat4p, viper_state, init_vipercf, ROT0, "Konami", "World Combat (ver JAA)", MACHINE_NOT_WORKING) GAME(2002, xtrial, kviper, viper, xtrial, viper_state, init_vipercf, ROT0, "Konami", "Xtrial Racing (ver JAB)", MACHINE_NOT_WORKING) GAME(2002, mfightc, kviper, viper, mfightc, viper_state, init_vipercf, ROT0, "Konami", "Mahjong Fight Club (ver JAD)", MACHINE_NOT_WORKING) diff --git a/src/mame/mame.lst b/src/mame/mame.lst index a3452626258..e932ad36e83 100644 --- a/src/mame/mame.lst +++ b/src/mame/mame.lst @@ -24820,7 +24820,6 @@ mocapglf // 2001 p911 // 2000 p9112 // 2001 p911ac // 2000 -p911ea // 2000 p911ed // 2000 p911j // 2000 p911k // 2000 @@ -24833,15 +24832,11 @@ sscopefh // 2002 sscopex // 2001 thrild2 // 2001 thrild2a // 2001 -thrild2ab // 2001 -thrild2ac // 2001 thrild2c // 2001 thrild2j // 2001 tsurugi // 2001 -tsurugie // 2001 tsurugij // 2001 wcombat // 2002 -wcombatb // 2002 wcombatj // 2002 wcombatk // 2002 wcombatu // 2002 |
