Jump to content
IGNORED

Create and burn eproms for standard Jaguar 2 chip cartridges


rayik

Recommended Posts

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.

 

 

Hardware needed:

  • 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 DIP sockets (2.54 pitch) (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)

 

Software needed:

 

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/forums/topic/181007-jaguar-carts-and-eproms/?hl=%2Buniversal+%2Bheader&do=findComment&comment=2268840)

 

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/forums/topic/37617-jag-encryption-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/forums/topic/32170-jaguar-cd-encryption-bypass-thread/page-2?hl=%2Btypeab&do=findComment&comment=388702) 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.org/index.php?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.org/index.php?showtopic=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.org/new-reboot/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 gamerom.j64

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

 

Open jiffi

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:

 

romsplit gamerom

 

(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/english/products/hakko_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/product/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.com/index.html?pageID=1&page=full&--eqskudatarq=1)

privated.zip

Edited by rayik
  • Like 22
  • Thanks 1
Link to comment
Share on other sites

Nice writeup! Minor detail, but you've confused which chips are the EPROMS and which are the EEPROMs.

Thanks madman. Fixed the mix up. Should have caught this as I've been using an "eprom eraser" for the last two months

Link to comment
Share on other sites

Very quick check: 4 MB roms will be: 4096 bytes with header and 4088 bytes without header. 2MB roms will be 2048 bytes with header and 2040 bytes without header.

 

However just because the file is 4096 or 2048 bytes, 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)

"bytes" should be "kilobytes" :)
  • Like 2
Link to comment
Share on other sites

Hi Rayik,

 

Great write-up. I didn't read the text in detail yet, but I've found a small error in the text below:

 

 

The verification header of $2000 length consists of:

 

  • RSA hash from $0- $28A (which is 1,046 bytes) (Note the first byte at $0 will always be $F6)
  • Identification as to how wide the cart is at $400 for four bytes: 04 04 04 04 this means that the image is for 32bits cartridge (2 chip carts); 00 00 00 00 means the image is for 8 bits cartridges (4 chip carts)
  • Run address starting $406 (I’m not sure how long the address is but from $416 to $41B the code is: 80 20 00 00 00 00 00)
  • The remainder is blank ($FF) from $28B - $F3F and then from $410 to $1999

 

The contents of $400 (4 bytes) does indicate the bus-width of the cartridge. This does NOT specify the number of rom chips in the cart. The value $04040404 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).

 

The value 0$202020 stands for a 16-bit wide cart. This can be done by one 16-bit wide ROM chip or two 8-bit wide ROM chips. The SkunkBoard for example is 16-bit wide and I believe also the ROM board used by Orion for the Elansar game.

 

The value $00000000 stands for a 8-bit wide cart. This is done by one 8-bit wide ROM chip. The CD-Bios, Atari Flash cart BIOS and MemoryTrack BIOS is 8-bit wide. Thus the value $00000000 is not used for 4 chip cart but for carts with one 8-bit wide ROM chip.

The value from address $400 is used to fill the MEMCON1 register. Bit 1&2 for the rom width. According to the docs, value 6 is also possible for 64-bit wide rom but the cart slot does not support that. Also bit 3&4 could be set for the values at $400 to specify the rom speed. 0 = 10 cycles, 1 = 8 cycles, 2 = 6 cycles, 3 = 5 cycles (less cycles seems faster ROM).

 

The start address of the card is at $0404 (not $0406) and is 4 bytes long. Ussually the start address is $00802000.

 

The value at $0408 (4 bytes) determines if the spinning cube is shown at stafrtup. If bit 0 is 0 then the cube shown. If bit 0 is 1 then the spinning cube is not shown. The CD-BIOS and FlashCart bios have here bit 0 set (value 1). But the MemoryTrack has here bit 1 set (value 2) thus it seems bit 1 means something special as well.

 

 

Robert

  • Like 4
Link to comment
Share on other sites

Hi Rayik,

 

Great write-up. I didn't read the text in detail yet, but I've found a small error in the text below:

 

 

The contents of $400 (4 bytes) does indicate the bus-width of the cartridge. This does NOT specify the number of rom chips in the cart. The value $04040404 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).

 

The value 0$202020 stands for a 16-bit wide cart. This can be done by one 16-bit wide ROM chip or two 8-bit wide ROM chips. The SkunkBoard for example is 16-bit wide and I believe also the ROM board used by Orion for the Elansar game.

 

The value $00000000 stands for a 8-bit wide cart. This is done by one 8-bit wide ROM chip. The CD-Bios, Atari Flash cart BIOS and MemoryTrack BIOS is 8-bit wide. Thus the value $00000000 is not used for 4 chip cart but for carts with one 8-bit wide ROM chip.

The value from address $400 is used to fill the MEMCON1 register. Bit 1&2 for the rom width. According to the docs, value 6 is also possible for 64-bit wide rom but the cart slot does not support that. Also bit 3&4 could be set for the values at $400 to specify the rom speed. 0 = 10 cycles, 1 = 8 cycles, 2 = 6 cycles, 3 = 5 cycles (less cycles seems faster ROM).

 

The start address of the card is at $0404 (not $0406) and is 4 bytes long. Ussually the start address is $00802000.

 

The value at $0408 (4 bytes) determines if the spinning cube is shown at stafrtup. If bit 0 is 0 then the cube shown. If bit 0 is 1 then the spinning cube is not shown. The CD-BIOS and FlashCart bios have here bit 0 set (value 1). But the MemoryTrack has here bit 1 set (value 2) thus it seems bit 1 means something special as well.

 

 

Robert

 

Thank you Robert. I've edited the original post with most of the additional information and corrections (with credit to you).

The cart width information was difficult to find.

Edited by rayik
Link to comment
Share on other sites

With regards to the game pcbs, myatari offers both eprom pcbs as well as dead game boards. Do you recommend one over the other? If using a dead game board, do you recommend replacing all chips including ram?

 

 

Link to comment
Share on other sites

  • 1 month later...

With regards to the game pcbs, myatari offers both eprom pcbs as well as dead game boards. Do you recommend one over the other? If using a dead game board, do you recommend replacing all chips including ram?

 

 

 

I've been using their dead boards (20 for $15)

 

After removing masked roms from 100 pcbs, this is the technique that I use which does not damage the pcb. Note I do not have a desoldering iron. This is how I do it with a hand held desoldering pump:

 

  • Using wire cutters, cut top of hi rom. This would be side on top of pcb
  • When the side is cut, gently pry up. Use flat nose hobby pliers to flex rom back and so other side breaks off
  • Using wire cutters, cut top of lo rom. This would be side facing top of board. I found that if was easy to damage pcb traces if you cut other side
  • Again, when the side is cut, gently pry up. Use flat nose hobby pliers to flex rom back and so other side breaks off
  • On masked rom side, for any legs still remaining that detached from masked rom, use flat nose hobby pliers to twist off. Simply grasp with flat nose pliers against board and twist. The legs will snap off
  • Flip board over and desolder. The legs on that side will come off with the solder. Occasionally a leg will stay stuck to the pcb when the solder is removed. Rock leg back and forth and it will fall out through the hole

 

If the Edsyn Souldapullt DS017LS gets clogged, open it from the top and shake out residue. It's really sturdy. I've done

over 60 pcbs using the same hand pump. I found the cheap $5 oneson Amazon would stop working after about 10-15 bords

 

After a while you'll be desoldering the two masked roms in 10 minutes at most.

 

Of the 100 pcbs I did, about 8 must have been dead boards rather than masked roms. I'd recommending socketing a couple of pcbs to help with troubleshooting. That way you can put your burned roms into the socketed board to verify they work. If you then solder the working eproms to a different board and it does not run, you know the problem is either your soldering or the pcb. The eproms are durable. You can unsolder them and solder them onto another board (but not with above method - you want to keep it intact).

Edited by rayik
  • Like 6
Link to comment
Share on other sites

@PSW - forgot to add no need to replace ram eeprom. Had only one bad one in 100 pcbs. To me, there is only a need to change it if you want to put in a 93C86.

 

Thanks for the reply. I went ahead and purchased 10 dead game boards along with 1 socketed board from B&C. I plan on using the socketed board to test the eproms as you suggested. I've got the eproms burned and mounted on the socketed board. Only needed to use Jiffi and romsplit to prepare the binary. Burned the hi and lo eproms with my GQ-4X without problem. I found that I didn't need the additional power adapter to burn the eproms. Not sure if that is an anomoly or not. Eproms burned and verified twice without issue. I haven't had a chance to test it yet though. The pesky kid has been hogging the TV that the Jag is hooked up to. Thanks for this guide. Don't have a skunk and this is the only way I can play around with the ST conversions released lately.

  • Like 2
Link to comment
Share on other sites

Isn't there a way to erase the eeprom using the Jag controller? I remember having save issues with a certain title because of the leftover donor cart save files. Somehow I cleared it but I can't remember how.

Hold *, #, Option during boot.

  • Like 2
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...