Hi, you may remember me as the guy who asks lot's of n00bish questions. I am ultimately interested in finding out how to make "reproduction" cartridges. Basically I want to know how to transfer a ROM file onto a cartridge so I can play it in the NES. Please answer my questions.
1.) I understand the ROM needs to be split into PRG and CHR. Is there a good program that will do this for me? Or do I have to do it the old fashioned way (hex editors). A program would be much better.
2.) Where is a good place to buy 28 and 32 pin EEPROM chips?
3.) This is my BIGGEST question. After transfering the PRG and CHR data onto the EPROM chips, and I put both EPROMs back onto the board, how do you know what pins to rewire to where? NROM is the only one that doesn't require board changes, but all the others require some type of board change, mostly rewiring. How the hell do you know where to rewire to?
The question I'm most concerned about is #3. I'm sure I will have many more questions as I go through this process. I am very determined to figure this out. Thank you all for bearing with me (Why NESDev is truly great).
1. Doing it with an HEX heditor is very easy. Delete the $10 bytes header. If the games uses CHR-RAM, you just have your PRG size, else, you have to split the file in two, in function of the number of the PRG banks there is in total. You can get the number of PRG banks in the ines header (that you alredy have deleted... so I recommand keeping a copy of the file of course), I think it's the fourth byte. Multiply this number by $4000 and you got how many bytes are in the PRG aera. The remaining should be CHR, to be sure check the fiveth byte in the ines header and multiply if by $2000 to get the number of CHR bytes.
2. In any company selling electronic tools and componants (ask someone else for more details)
3. Read drk414's doc would tell you instruction for the most common boards. Othervise, check the official ROM pinout and the pinout you have on your board, check for the difference and you know what to rewire. There is a doc with the pinout for each Nintendo-made chips different from official EPROMs. I'm not sure it's 100% complete, so be carefull.
Bregalad wrote:
3. Read drk414's doc would tell you instruction for the most common boards. Othervise, check the official ROM pinout and the pinout you have on your board, check for the difference and you know what to rewire. There is a doc with the pinout for each Nintendo-made chips different from official EPROMs. I'm not sure it's 100% complete, so be carefull.
I just don't quite understand, and I'm sorry that I sound so ignorant, but I am learning. What exactly is a pinout? On the pinout, what do things such as +5V, GND, etc mean? Would it be possible for somebody to give me a very detailed explanation, possibly with examples?
I know how to split up the ROM into PRG and CHR. I know how to write to EEPROM chips. I know how to determine what cart can be used as a donor cart. And I know how to desolder the pre existing EPROM chips from the donor board. But it's the pinout concept that I simply cannot grasp.
Note: The game I want to reproduce is Earth Bound, which uses both a 256KB PRG and CHR, and I'm using Shadowgate as a donor cart.
Oww... +5V is the positive supply voltage, and GND is the reference voltage... can't help you much here.
However, actually, a total understanding of this isn't really needed. On your EPROM chip, you have probably 28 or 32 pins, right ?
Each one has a function. Each function is also an electric signal, that can very from the voltage of ~+5V, meaning a binary high level, or a binary one, or of a voltage of ~OV, meaning a binary low level, or a binary zero.
The chips has basically voltage pins (that are VCC and GND), inputs and outputs. Inputs are the electic signals that the chip needs to know what it have to do, and outputs are the result of the opperation of the chips. All of theese are either +5V of 0V, so all inputs/outputs are a chunk of ones and zeroes. Outputs can also sometimes have high impedence state, meaning that they have a neutral voltage level, that will happen only if /CE or /OE are high. If this is the case, other chips can communicate using the same line of the chip's outputs. If you impose a low or high voltage to a chip output, you can create a short-circuit and the chip could break down forever. But you probably don't need to care with all that stuff.
All electrical signals have a function. All function are labelled, and those labels are usually abrevations of a longer name. For example, A0 means Adress bit 0 so this singal is the least significant byte of the adress you wan't to read on your EPROM. For example if you read $ef00, this bit will be low. If you read $ef01, this bit will be high. Do you understand ?
So, the signal A with the higher number means the total size of the EPROM. If the EPROM has an A17 pin, but no A18 pin, then you have a 256kByte EPROM (this is probably what you want). This is because 256kByte can be adressed from $00000 to $3ffff, so you will se that 18 bits will be used in total, those are adress bits 0-17.
There is also data outputs (D0-D7) that are all 8 bits of the byte you are reading. Other function are particular, note that they are active low if there is a slash (/) behind them, or a horizontal bar above the label (this is imposible to do with a computer, so this is why the slash has been introducted). In that case, a low input value means that the input is "active" (f.ex. /OE low means that the output is enable), and high mean that the input is "inactive" (so /OE high means that the output is not enabled, so this function could also have been labelled Output Disable with no slash. Funny, heh ?)
Scince all this bunch of labels on each pin of a chip, the whole thing is called pinout, doen't always matches between Nintendo made chips and common EPROM, you have to rewire them. That means cutting tracks and make wires in order to keep the good signals reaching the good pin of your EPROM. Some inputs like VSS (programming supply voltage) or P (don't even remember it's function) are unused, tie them to the VCC pin is common practice, but avoid let them floating (aka electrically not connected), because it's bad.