News:

FORUM UPDATE:  The forum's been updated - twice - in the last couple of days.  Do speak up if you spot anything broken.

Main Menu

Viper: Phase 1 - Dual

Started by NFG, September 14, 2025, 09:15:39 PM

Previous topic - Next topic

NFG

Couple of years ago I bought a cheap Raiden Fighters Jet, which is based on Seibu Kaihatsu's SPI board.  It was dead and it cost more than I paid for the board to get it fixed, but I figured it was a good buy 'cause I knew I had a Viper: Phase 1 cartridge in storage and the SPI board plays both.

But I thought I had the New Version of Viper, and I did not.  The original Japanese version is not really as good, IMO, so when I read about @alamone 's dual-game hack, I wanted to do my own.  I ordered some chips off ebay, and today I finally had the time - and desk space - to get it done.

Alamone didn't leave detailed instructions so all I had to go on was his list of required chips, a couple of clues, and a photo.  So here's some detailed instructions, based entirely on alamone's work, but with more info in case you decide this is the sort of mod you want to try for yourself.

Viper-Overview.jpg
The finished board.

The Theory
The different versions of Viper only change a few chips, the majority remain the same.  Importantly the data written to the mainboard's flash memory when a game is changed remains the same between versions of Viper.  So if you change from Raiden Fighters to Viper, it takes six minutes.  But if you change from Viper to Viper New Version, there's no wait. 

For this hack, you'll be writting two sets of ROMs to each chip, and using the highest address line to chiose between the two.  A simple SPST switch is all you need to flick between versions.  Definitely turn the power off first though.

What You'll Need

Six EPROMs: 

4 x 27C801 (8mbit)
1 x 27C2048 (2mbit)
1 x 27C010 (1mbit)

Twelve ROM files.  Specifically, ROM files 1-6 from two Viper: Phase 1 games from MAME.  Any two will do, but if they're not from the same region you'll have to hex-edit the region code to match the mainboard.

@trap15 made a great utility to change the region of your mainboard, if you need to.  I've done this and it works great.

TheSheep's World of Arcade has a quick guide to changing the region of your game to match your mainboard, if that's the way you prefer to go.  Usually there is no problem doing this, but I can say for sure that changing the region code of Raiden Fighters Jet (Korea) to Japan for a Japanese mainboard results in some really weird bugs.

Some Wire to link the chips to the switch, and the switch to +5V and GND.

Soldering Skills.  This isn't a complicated job but you will be joining two wires to one leg on a chip a few times, so maybe difficulty 3/10.

Optional
I designed a 3D printed replacement shell that has a spot for a built in switch, as well as a custom label.  It also has reinforcements to prevent board flex, which I strongly recommend.  SPI boards aren't super cheap, and they stop working all too easily when the boards are flexed and solder joints pop.

Viper-Shell.jpg
The finished cartridge

Prepare the ROMs
In order to create double-sized ROMs with both games on them you'll need to gather the ROM files you need, and merge them.  Be sure to edit them before you merge them, if you need to change the region code.

In order to merge them on a Windows system, open a DOS prompt (not PowerShell) and, for each pair of ROMs you merge, run this:

copy /b rom-1.bin + rom-2.bin rom-merged.bin
/b indicates that these are binary files.  Note the + between files to be merged, and a space before the last file, which is the newly created ROM.

Change the names of the two ROM files from rom-1.bin etc to whatever they are in your ROM of choice.  Pay close attention to the order, always do the first ROMset first, in the merge, and the second ROMset second.  If you get sloppy and some chips are merged in the wrong order you'll probably have to start over.

When you're done with this, you should have converted twelve ROMs to six.  They should each be twice as large as the source ROMs, so the output files should be:
ROM 1: 1,024 kB
ROM 2: 1,024 kB
ROM 3: 1,024 kB
ROM 4: 1,024 kB
ROM 5: 256 kB
ROM 6: 128 kB

Burn the ROMs
I'm not going to tell you how to do this.  You're just dropping a file into an app that writes to the chips.  Easy.

The Chips
Pinouts exist for all these chips, but for the most part they match the chips you're removing.  The only difference for the first five chips is the select pin.  It's actually the highest Address line, but we're treating it as ROM select, since it selects the first or second half of the data on the device.

Select Pins:
27C801 - Pin 1
27C2048 - Pin 38
27C010 - Pin 2

  • Bend these pins up a little, so they don't go into the socket when you mount them on the game cartridge.
  • Connect all six of these pins to the centre leg of your switch.

Chip #6
Chip six is a bit special.  It has four more pins, two per side, than the one it's replacing.  The pinout for the first 28 pins is the same, almost.  You'll need to connect pin 32 to pin 30.  This is also a good place to draw +5V, so solder two wires to pin 32, one to pin 30 and one to one of the two remaining legs on the switch.

And since chip six is giving us power, it might as well provide ground as well.  Connect pin 16 to the last leg of the switch.

That's it, you're done.

Viper-Switch2.jpg
The switch

The switch sends either ground or +5V to the select line on each chip, choosing the first or second ROM you burned.  Be sure the system is turned off when you flick that switch!

Viper-Chips-1-4.jpg
Chips 1-4 with the select pins linked.

Viper-Chip-1-4-2.jpg
Chips 1-4 with the select pins linked.

Viper-Chip-6.jpg
Chip 6, showing pins 30 and 32 connected.

Viper-Chips-5-6.jpg
Chip 6 provides +5V (pin 32) and GND (pin 16) for the switch

Viper-Switch.jpg
The switch.