Muramasa TxROM Advanced – TLROM
This guide covers building a TLROM game using the TxROM Advanced by Muramasa Entertainment. In this case we’ll be building a Rampart cart for the NES. For additional information about the cart visit the NES Directory.
This guide will use a Linux workstation and command line utilities. There are probably windows GUI tools for each of the utilities covered so please use them if you are using a Windows workstation.
The ROM file used in this example can be dumped from an actual cart, or found on some sites on the Internet. It’s up to the reader to obtain their own ROMs.
Get the ROM
Fisrt thing to do once you’ve downloaded/dumped the game is to split the .nes file into a .prg and .chr file. The readnes utility from raphnet.net is great for this. See the section below to install the nesutils.
Using the readnes utility extract the ROM images:
readnes Rampart\ \(U\).nes
You should see output similar to:
File length :262160 Bytes NES PRG: 08 CHR: 10 MAPPER: 41 00 Nintendo MMC3 Flags: 01 V PRG 8 pages of 16kb (131072 bytes) CHR 16 pages of 8kb (131072 bytes) End at 262160 Remaining bytes: 0 Writing Rampart (U).prg . Writing Rampart (U).chr .
As you can see the cart uses Mapper 41 (MMC3), the size of the PRG and CHR ROMs, etc.
Because I’m using a pair of AM27C020 EPROM chips the size of the ROM file needs to be 256K. This meand doubling the CHR and PRG ROM files. This works because the cart will use either the first 128K or the last 128K which won’t matter because it’ll be the same data.
To create a 256K ROM file use the cat utility:
cat Rampart\ \(U\).prg >> rampart_256.prg cat Rampart\ \(U\).prg >> rampart_256.prg
The first command createds a copy of the .prg file and the second appends the same thing to the end of the file doubling the file size. Do the same for the .chr file:
cat Rampart\ \(U\).chr >> rampart_256.chr cat Rampart\ \(U\).chr >> rampart_256.chr
You can name the output file whatever you want, but I like adding the size in there so I can tell at a glance which files are which. Also, to see the exact size of a file in bytes use the
ls -l (or ll) utility.
Burn The EPROMs
Now that the .prg and .chr files are created we can burn them to a pair of AM27C020 chips. To do this I’m going to sue a TL866II Plus writer. There are several different models of this burner and they should all be able to write the data to the chips. There is a very useful Windows GUI application that comes with the writer, but you should probably look online for an updated version.
Insert one of the EPROMs into the TL866II Plus and plug it into the computer (making sure that the chip is oriented correctly). Open a terminal and test reading the chip:
sudo minipro -p "AM27C020@DIP32" -r test.bin -y
If all goes will this will create a test.bin file in the current directory. To see the output of the file use the xxd utility:
xxd test.bin | less
If the EPROM is blank the output should all FF.
Next, write the .prg file:
sudo minipro -p "AM27C020@DIP32" -y -w rampart_256.prg
There should be some output showing the percent written and a success message. And finally, write the .chr file:
sudo minipro -p "AM27C020@DIP32" -y -w rampart_256.chr
Note: you may or may not have to use the sudo command infront of the minipro command depending on your system. If you get a
Error opening device message try using sudo.
With the chips written it’s time to build the cart PCB.
Build The Cart PCB
- Solder in the 0.1uf capacitors in all three positions.
- Solder the 22uf capacitors in both positions.
- Solder in the CIC, AX5202P (MMC), and EPROMs.
- On the front solder the ROM and 256K jumper.
- On the back solder PRG28, CHR28, and ROM jumpers.
All other components and jumpers can be left off for a TLROM cart.
To ensure a good write to the ERPOMs it’s a good idea to make a dev board and use sockets for the chips. That way it’s easy to remove an EPROM if you get a bad write.
It is also handy to cut away part of a replacement cart shell to accomodate a PCB with sockets.
Install nesutils on Ubuntu Linux
Install the build-essential package to get a C compiler, Make, etc.
sudo apt install build-essential
Download nesutils-1.0.tar.gz from raphnet.net and extract the nesutils-1.0.tar.gz file:
tar -xzvf nesutils-1.0.targ.gz
Build the utility:
cd nesutils-1.0 make
Optionally you can copy the newly created readnes executable to /usr/local/bin so it will be in the default path:
sudo cp readnes /usr/local/bin
You should now be able set to extract ROM images from .nes files. These instructions should be similar on other Linux distributions. The main things needed are a C compiler and the make utiltiy.