Skip to content

Konami Viper

Konami's PowerPC + 3Dfx platform (1999-2002): Police 911, Silent Scope EX, Thrill Drive 2, Jurassic Park III. Technically a specialised PC. For preservation it carries a built-in time bomb — a timekeeper RAM whose contents cannot be recreated by hand.

Identification

Field Value
Manufacturer Konami
Years 1999-2002
CPU Motorola XPC8240LZU200E (MPC8240, PPC603e core) — TBGA352 at U38
CPU clock 33.868 MHz input, ×6 → ~200 MHz
Graphics 3Dfx Voodoo III 3500 (BGA at U54), clock input 14.31818 MHz
Main RAM 64 MB SDRAM (2 × Micron 48LC2M32B2, U28/U45)
Graphics RAM Fujitsu MB81G163222-80 ×4 (U53, U56, U59, U60)
Save ST M48T58Y Timekeeper (DIP28 at U39) — ⚠️ see below
Protection Dallas DS2430 (serial number, U37); dongle on some games
Analogue inputs ADC0838 (SOIC20 at U13)
Programmable logic Xilinx XC9536 ×2, XC9572XL, XCS10XL Spartan
Network two RCA jacks (CN4/CN5)
PCB format Konami proprietary — not JAMMA

⚠️ The real trap: the M48T58Y

This is what to know before touching a Viper.

A timekeeper RAM that cannot be reconstituted

The M48T58Y is a Timekeeper RAM with an internal battery and a stated ten-year life. When it dies the game shows “RTC BAD” and resets in a loop.

And the contents cannot be made by hand — MAME says so explicitly. A new M48T58Y has to be programmed with the correct data for that game and fitted to the board. Without that data the board stays dead: this is not an electronic fault, it is a lost key.

What MAME documents of the contents, useful to anyone restoring one:

  • the “RTC OK” check covers 0x0000-0x0945; past that, the contents can be cleared and the game still boots;
  • the NVRAM is split into chunks, each with its own 16-bit checksum — two consecutive bytes summed must come to 0xFFFF, the last two bytes of the chunk making up the difference;
  • there is no overall checksum: chunks from different sources coexist as long as each one is self-consistent;
  • the first chunk (0x0000-0x000F) is a game/region identifier and will not take modification — a Mocap Boxing NVRAM will not pass Police 911's checks even with a correct checksum.

Architecture

A Viper is a dedicated industrial PC: a PowerPC, an off-the-shelf 3Dfx graphics chip, standard SDRAM. What makes it an arcade board is the periphery — the Xilinx CPLDs, the ADC0838 for analogue controls (guns, wheels), the two network jacks, and the two locks (DS2430 + M48T58Y).

Voodoo III, not Banshee

The physical chip is marked 3Dfx Voodoo III 3500. MAME emulates it through its Voodoo Banshee device — the two families are close, but the marking on the board is what counts when ordering a part.

Notable games

Police 911 (and 911 2) · Silent Scope EX · Thrill Drive 2 · GTI Club 2 · Jurassic Park III · Mocap Boxing · Mocap Golf · Tsurugi · ParaParaParadise 2nd Mix · Code One Dispatch.

Common faults

Symptom Probable cause Next step
“RTC BAD” then reset loop M48T58Y at end of life Programme a new M48T58Y with the game's data — see the box
Silent board, no picture power, CPU, or a CPLD PCB diagnosis
Security check failed DS2430 or a missing/wrong dongle Check the board/dongle pairing for that game
Analogue controls wrong ADC0838 (U13) or wiring Compare input voltages against a good board
Stuck on network check link between cabinets (linked games) Check CN4/CN5 and the game's configuration
Corrupt graphics Fujitsu SGRAM or the Voodoo III A single corrupt area points at one of the four chips

Repair (technician)

  • The M48T58Y first. On a Viper stuck in a loop it is almost never anything else. Replace it with the right data — a blank new part will not do.
  • This is not JAMMA: the wiring is proprietary. Nothing that holds for a JAMMA board applies as-is on the connector side.
  • Off-the-shelf parts: the SDRAM, the Voodoo III and the regulators are period PC components, so they can still be found — unlike the customs on 16-bit platforms.

→ Methods: PCB diagnosis · Recap · Backup batteries

Procedure — a dead board, step by step ✅

What this adds

The general method lives in PCB diagnosis. This is its application to this platform: the same order, but with the values actually expected here, so you do not have to go back and forth.

Tools: multimeter, oscilloscope (or frequency counter), current-limited bench supply, desoldering braid. → Tooling

If the board is still in a cabinet

A CRT holds its charge with the machine unplugged. → CRT safety

1. Inspection, power off. Corrosion, cut tracks, oxidised EPROM legs, leaking SMD capacitors, dubious earlier repairs.

2. The connector, before anything else. A large share of "dead boards" are a contact problem, not a fault. Clean the contacts with isopropyl alcohol and reseat — not with an abrasive eraser on a gold edge, which takes the plating off and brings the problem back worse. It costs two minutes and settles the question.

3. Power, measured on the board. Aim for +5.0 V measured as close as possible to where power reaches the board — not at the PSU output: the drop is in the loom, and that is exactly what makes a board boot on the bench and not in the cabinet. Where you probe depends on this board's connector — JAMMA edge, JVS loom or a proprietary harness — plenty of makers kept one long after JAMMA arrived — see Identification above. → Wiring Check −5 V and +12 V too if the sound stage uses them. Suspected short: bring it up current-limited and find the hot spot.

4. /RESET. It must release after power-up. Held low = the CPU never starts. A 1–2 Hz loop is not the reset circuit, it is the watchdog: the CPU is crashing at boot, so look at the bus, not at the reset.

5. Clocks. There is no measurement table for this platform — MAME's sources yield nothing usable for it. Any frequency quoted under Architecture on this page serves as a marker; otherwise compare against a working board rather than against a number: an invented value condemns healthy parts. → PCB diagnosis

6. Bus. Activity on the main CPU's address lines tells you whether it is running or frozen. Frozen with good clocks and good reset → work RAM, bus buffers, ROMs.

7. It boots but the picture or the sound is wrong — that is another job: see Common faults on this page, then signal tracing.

Modernisation & mods

  • Anti-suicide 🔴: the M48T58Y is the platform's suicide point, and it has no “decrypted ROM” equivalent the way an FD1094 does. Preservation runs through archiving the NVRAM contents game by game.
  • ⚠️ Do not host ROMs or NVRAM dumps — method only.

Emulation & FPGA

MAME emulates the platform (konami/viper.cpp), with caveats: some games remain stuck on checks (networking for World Combat). Most of the reverse-engineering effort went into the structure of the NVRAM — which is what lets anyone today understand why a board says “RTC BAD”.

Photos / assets

(To take: bare board, the M48T58Y at U39 — the part to know about —, the DS2430 at U37, the Voodoo III 3500 and its heatsink, the CN4/CN5 network jacks.)

Archived original documents ✅

A manual already in the wiki, attached here after checking its title page.

⚠️ The GTI Club manual archived in this wiki does not belong on this page: its cover reads GTI-CLUB Rally Côte d'Azur, © 1996 Konami — that is the first GTI Club, not the Viper's GTI Club 2. Two games, two platforms, four years apart.

Sources & attribution

Text (synthesised here; sources listed for attribution):

  • MAME — src/mame/konami/viper.cpp (BSD-3-Clause / GPL): full component identification with board designators (U38 CPU, U54 3Dfx, U39 M48T58Y, U37 DS2430, U13 ADC0838, U25 29F002), CPU clock (33.868 MHz input × 6 ≈ 200 MHz), Voodoo III clock input (14.31818 MHz), and above all the detailed description of the M48T58Y's behaviour — the 0x0000-0x0945 check range, per-chunk 16-bit checksums, the unmodifiable game/region first chunk, and the finding that the contents cannot be created by hand — https://github.com/mamedev/mame/blob/master/src/mame/konami/viper.cpp

Review & corrections

How this space is used

Spotted a wrong value, an outdated procedure, a chip reference that does not match your board? Say so here, with what you observed (model, board revision, serial number, measurement). Every report is cross-checked against a source before anything changes — an unverifiable correction is published as “reported by …, not cross-checked” rather than silently applied.

Reading is open to everyone; posting requires signing in with Discord. Reports from the wiki's declared reviewers are handled first; anyone else's are read too, but go through a human before anything is changed.