This post explains how to format and burn Jaguar games to eproms for use on standard 2 chip Jaguar cartridges. This post is not about finding or sharing game files. Do not ask where files can be found. There are plenty of betas, partially finished games and homebrews that have been released for legal free personal use.
This is a cumulation of about two months of searching for information and trial and error. It is a compilation of information that was not easy to find and was scattered in a variety of places.
I'm sure there are some errors in here, so please post any corrections or suggestions.
- eprom tools (all available at mcumall.com):
- True-USB PRO GQ-4X eeprom / eprom programmer with ADP-054 adaptor (16 bit eprom 40 / 42 pin adapter)
- 9V / 10V 600 mA / 1A power adapter (optional, but recommended for PRO GQ-4X; and required if the eprom requires 12V to write)
- PLCC IC extractor (for pulling out IC from sockets)
- TOOL-007 Eprom UV Eraser
- eprom chips (available on eBay):
- 27C800 eprom (42 pin - 1 MB)
- 27C160 eprom (42 pin - 2 MB) (can uses these as substitute for 27C800)
- 42 pin DIC IP sockets (if you want to socket eeproms rather than solder directly to PCB)
- eeprom Memory (available on eBay)
- 93C86 or 93C66 ram eeprom (if you want to change the memory chip on the cartridge pcb)
- 8 pin DIP IC sockets (if you want to socket memory eprom rather than solder directly to pcb)
- Atari jaguar two chip game pcbs (available in bulk at either buyatari.com or on eBay under their name myatari)
Hex editor – recommended HxDen (freeware)
Romsplit (Atari ROM Splitting program – splits game files to two files for burning to eproms – does not encrypt rom) (Posted by LinkoVitch in post #12 here: http://atariage.com/...r#entry2268840)
pc-jagcrypt (modification of Atari jagcrypt program by Shamus – will encrypt roms and output options include two / four files for burning or one file for archieving. Link: post #36 here: http://atariage.com/...round-2/page-2)
jagcrypt program (optional – recommend use pc-jagcrypt instead as it has publicd.key and privated.key files built in and this program needs them on an “a” drive floppy disk) This is the original Atari cartridge encryption program posted by Curt Vendel in post #34 here: http://atariage.com/...ab#entry388702) The privated.key is needed. (After much searching I can not find the link where thiss was originally posted a, so I've uploaded the privated.key to this post)
Atari Jaguar Universal Cartridge Validation bin file found by Glenn Bruner (original file name “TYPEAB.XXX” and Glenn released it as UNIV.BIN) – universal encryption header that can be added to unencrypted roms that allows them to pass the game boot verification process. The Jaguar will perform the verification process on only a part of the header and will not read the game ram from $2000 on. Thus it will enable any game program to pass verification on boot up. (Can be found towards the bottom of post #1 here: http://www.jagware.o...p?showtopic=836)
Makefastboot – universal cartridge validation file with faster booting image. Cartridge will verify and start in about 1 second instead of usual 5 – 6 seconds. Created and posted by Tursi in post #22 here: http://www.jagware.o...opic=836&page=2)
Jiffi – program by GGN that will convert non-cartridge images into bootable cartridge rom files. (The program also serves as a frontend for using a skunkboard as well as other purposes) It can be found here: http://reboot.atari....boot/jiffi.html)
Boot process of cartridges
In order to prevent just anyone from publishing games on the Jaguar, Atari had a “verification” check done on the cartridge as part of the boot up process. Thus only Atari authorized games would run.
As part of the publishing process, Atari would take the game rom and run it through a program (jagcrypt) using a public key (publicd.key) and private key (privated.key) to create an RSA hash of the contents of the program. This verification header is $2000 Kb which is appended to the beginning of the rom. It is always $2000 bytes long and you will see it in the hex editor from $0 to $1FFF.
The verification header of $2000 length consists of:
- $0- $28A - RSA hash from (which is 1,046 Kb) (Note the first byte at $0 will always be $F6)
- $400 - four byes which indicate cart width:
$ 04 04 04 04 indicates a 32-bit cart which can be physically one 32-bit wide ROM chip, two 16-bit wide ROM chips (most games) or four 8-bit wide ROM chips (some games);
$ 02 02 02 02 indicates a 16-bit wide cart, which can physically be one 16-bit wide ROM chip or two 8-bit wide ROM chip
$ 00 00 00 00 indicates an 8-bit wide cart, which is one 8-bit wide ROM chip. The CD-Bios, Atari Flash cart BIOS and MemoryTrack BIOS are 8-bit wide ROM chips
- $404 - Run address starting which is four bytes long. Usual cart start address is $ 00 80 20 00
- The remainder is blank ($FF) from $28B - $F3F and then from $410 to $1999
[Verification header information above edited to add additional information and corrections noted by rdemming in post #11. Thank you]
When the game boots, the jaguar will run a verification program which reads the cart contents starting at $2000, hashes the game program and if it matches the verification hash in the header the game program will then run from the specified start address. If it does not match then the cartridge fails validation and you will get a red screen with the word jaguar (in red) on the screen.
To determine if there is encryption header present:
Very quick check: 4 MB roms will be: 4096 Kb with header and 4088 Kb without header. 2MB roms will be 2048 Kb with header and 2040 Kb without header.
However just because the file is 4096 or 2048 kb, you still need to check that the verification header is present. Some roms while appearing the proper length will have just $FF in the first $2000 bytes (and not a verification header)
Using a hex editor, a verification header is present if the first byte is F6 (at $0) and then there is the pattern noted above (code from $0 - $28A; code from $400 - $410B and then blank $FF from $410 to $1FFF.
Using a hex editor, there is no verification header if there is just code and not the pattern seen above; or if $0 - $1999 is blank ($FF)
With jiffi, if you load the rom and “detected format” says “ROM with header” (or a variation such as universal header)
I personally find it easier to use a hex editor to see if the verification header is present
To add a verification header (for roms without it)
Note this will not make an .abs, .cof or .jag file into a rom that works on the console. It works only for files already configured as a console rom..
If there is no verification header, present you will need to create or add one. There are three methods to use, all of which work and it comes down to your personal preference.
- Use pc-jagcrypt to create verification header
- Use hex editor to add Universal header to file
- Use hex editor to add Tursi’s quickboot header to file
- Use jiffi to add universal verification header
Using pc-jagcrypt to add verification header
Pc-jagcrypt was created by Shamus and has both the privated.key and publicd.key built in. Additionally, Shamus added functionality not present in Atari’s original jagcrypt program: It can output a single rom file. (The original program would split the original rom into 2 or 4 files depending on option used)
Pc-jagcrypt runs from command line. (Default Windows 8.1 command line works fine). The game file must be in the same directory as jagcrypt. Filenames must the old 8+3 standard. It is also picky about file types. .rom and .j64 work fine. If the file name is not 8+3, or the extension is incorrect, the output of the program will be only a listing of command switches.
Options with Shamus program (pc-jagcrypt) is:
-n create 2 files (.hi .lo)
-4 create 4 files (.u1 .u2 .u3 .u4)
-u creates 1 file (.u1 which can then be renamed to .rom or .j64 or whatever else you want)
Command to create hash and append to beginning of file:
Jagcrypt –n gamerom.j64 (will append verification header to beginning of file and then split it into two files for burning to eproms - .hi and .lo. The two rom format is used in standard production carts)
Jagcrypt -4 gamerom.j64 (will append verification header to beginning of file an then split in into four files for burning to eproms - .u1 .u2 .u3 and .u4. The four rom format is used for the proto carts made by Atari)
Jagcrypt –u gamerom.j64 (will create single file with verification header appended to beginning of file)
The program will indicate successful splitting if you do this right. If the output is a listing of command switches there is no encrypted output. Most likely the file name was too long (more than 8 characters) or the extension not a type that is accepted by the program (not a .rom or .j64)
Using hex editor to add verification header
Using HxDen as hex editor:
Open univ.bin (it will open in a different tab)
While in the tab for univ.bin – Edit > select all. This should select the entire univ.bin code
While in the tab for univ.bin - Edit > copy (this is for the selected text)
Go to gamerom.j64 tab. – go to beginning of file which is $0. Then Edit > paste insert. This will add the $2000 univ.bin file to the beginning of gamerom.j64. Save this to a new name and it now has a verification header.
Using Tursi's Makefastboot:
Just run makefastboot.exe and follow the prompts.
[After running this, I then copied the header out of the created file and kept it as a separate file (I called it makefastboot.bin). it can then be manually appended to the beginning of the gamerom using a hex editor.]
Using jiffi to create verification header
This is probably the simplest way to add a verification header
Load the “source file”
Select “Output path”
Select “Output formats”
Press “Create files”
Done – files with appropriate extensions will be sitting in your output path
Using original Atari jagcrypt program
This program expects there to be a floppy drive "a:\" with a floppy inserted containing the file "privated,key". If that is not present the program will not work.
It is really much easier to use Shamus pc-jagcrypt. I was able to succesfully run this program by:
Create virtual machine (VM) with any version of windows as guest os
VM virtual hardware included a floppy disk
Create virtual floppy disk and copy privated.key onto it
Place game file in jagcrypt folder
Run jagcrypt from command line
It really is much easier to use Shamus program which will produce the exact same output as this original program.
ABS and COF files
It's very simple to convert .abs and .cof files to rom format using GGN'd jiffi program. Simply load the file and save as .rom. File created will be rom with verification header.
To split roms which already contain the verification header
If you’ve verified that the rom contains a verification header, then the file can be split using the Atari program romsplit.
Standard production carts use two roms (which are 16 bits wide). (The Atari proto carts used four roms – which are 8 bits wide)
If you split into two files, the files created will have .hi and .lo extensions.
Romsplit is picky about file extensions and the file name must be 8+3. .rom and .j64 extensions will work. Copy game file into romsplit directory. If the program output lists only switches available, the rom is not split. Make sure the filename and extension are correct.
To split a rom using romsplit into only two files .hi and .lo:
Romsplit –we gamerom.j64
This will create two files: gamerom.hi and gamerom.lo
Each of the files (.hi and .lo) can be burned onto separate eproms.
Combining already split files into a single rom
If you have .hi / .lo files or .u1 / .u2 / .u3 / .u4 files, you use romsplit to combine them into a single file. (This single file is what you originally started with before splitting. This is useful if you have only split files and want to create a single file to use in an emulator.
If you want to combine gamerom.hi and gamerom.lo, put those files in the romsplit directory. Command is:
(Note – do not use any switches, list just the filename before the extension, list it one time and do not list any file extensions)
This will generate: gamerom.
You then can change the extension to what you want (such as .rom or .j64)
Burning the files onto eproms
I use the mcumall True-USB PRO GQ-4X programmer. The following applies only to that programmer. (The mcumall forums have posts of “imitation units” sold on eBay which do not work properly)
This programmer will work with Windows 8.1. Follow the driver install instructions provided by mcumall. Basically, you have to disable driver signature in win 8 before installing the driver.
Note the specifications of the eproms you use. Most 27c160 and 27c800 eeproms use 5 volts for both reading and writing. However, I purchased a batch of 27c800 eproms that used 12 volt for writing and 5 volts for reading. Since the default voltage is 5 volts for writing. I had a failure rate of over 50%. (You can erase the eprom and retry burning).
The following two lines can be added to the “devices.txt” file located in “C:\Program Files (x86)\GQ USB Programmer” to create two profiles for writing those eproms using12 volts (instead of 5 volts)
Name="12v27C160",ID="XXXX",Class="27C800",Category="EPROM",MFG="ALL(Generic)",CodeSize="2097152",Adapter="ADP-054, ADP-055 16 BIT EPROM ADAPTER",RVpp="5V";WVPP="12V";
Name="12v27C800",ID="XXXX",Class="27C800",Category="EPROM",MFG="ALL(Generic)",CodeSize="1048576",Adapter="ADP-054, ADP-055 16 BIT EPROM ADAPTER",RVpp="5V";WVPP="12V";
If you burn roms that require 12v for burning you will need the optional external power adapter.
Here’s how I use the burner:
- Insert AOP-54 adapter. See photos in mcumall.com forum for position
- Connect usb to pc first. After that connect external power supply if using it. (For unknown reason reason programmer will not work if that connection order is not followed)
- Search for the type of eprom you are using (27c160 or 27c180). Make it a favorite for easy selection next time. If you added the two lines above then the selections for 12 volt writing are: 12v27c160 or 12v27c800
- On right side check "Blank Check" "Write" and "Verify"
- File > Open and select your file to burn
On left click "Auto Mode" and it will make sure eprom is blank, write the code and then verify the eprom contents are same as file
The program will tell you whether the burn is successful or not. If it’s not successful, don’t through the eprom away. Erase it as I find found failed eproms can work on a later burn.
Mount the eproms onto the cartridge
Once you burn the .hi / .lo files it’s time to mount them on the standard Atari 2 chip cartridge.
The .lo rom installs on the bottom of the cart in the area labeled“u1”(closest to the edge connector). The .hi rom installs on the top of the cart in the area labeled “u2” The notch on both eproms faces to the right of the cartridge (matching the outline of the pcb)
For soldering / desoldering on pcbs, the tools I use are:
Hakko FX-888D soldering iron with 900M-T-1C tip (http://www.hakko.com...kko_fx888d.html)
alphafry solder 0.032 60/40 sodler (rosin core)
I do not own a desoldering iron. I use Edsyn Souldapullt DS017LS hand desolder pump (http://www.edsyn.com...ct/DS017LS.html)
*** *EDIT 10/20/18 ****
I finally purchased a Hakko FR-301 desoldering iron. If you can afford it, I highly recommend you desolder using that rather than a Souldault. IIncluding time learning to use the tool, it took me about 45 minutes to remove chips from 40 pcbs. You will save a lot of time and effort with the FR-301.
**** END EDIT ****
For holding pcb while soldering / desoldering - PanaVise Model 201 PV Jr. vice (https://www.panavise...--eqskudatarq=1)
Edited by rayik, Sat Oct 20, 2018 8:04 AM.