I'm making a reproduction of Goonies 1 for the NES and everything is half working. The sound, gameplay, and controls work fine, its just that it takes a ton of tries of reseating the game and turning and turning off the console for the game to load properly. Am I doing something wrong?
I read that it was a direct match to the EPROMS, so I expanded the goonies files and made them 64KB and put them on two 27c512's.
My other repros work fine right off the bat, so I think it may be the cart itself, but I've cleaned it and its only works 10% of the time.
Can anyone offer any advice?
http://imgur.com/a/SgT5L
When you expanded them did you copy the same data in a mirrored fashion into the extra space and/or ground or +5v to the upper address lines you are not using?
Random behavior is possible if you left the upper address lines floating and did not mirror the data. You should both mirror the data and connect the unused address lines to +5v or Ground, doesn't matter which.
It really sounds like you didn't properly expand the program to fill the entire chip. You have to duplicate the data until it fills the entire chip, have you done this? If yes, how?
When I expanded the data, I opened up the file in a hex editor and then copy pasted the same file after the first file the correct number of times to fill up the chip.
Does your hex editor's copy and paste work correctly? The clipboard in GHex, for example,
does not.
It's better to use the command prompt with copy /b prg.bin+prg.bin bigprg.bin for example. This would create a new file that is prg.bin twice. For Chr you'd need more to fill up the chip.
I did this just now and reflashed the eproms and I am still getting the same results. Where do I find out what pins to put to 5V or gnd to only select the first set of data?
For the PRG, I put A15 to 5v and for the CHR I put A15, 14, and 13 to 5V and it fixed the problem
lordloss wrote:
Where do I find out what pins to put to 5V or gnd to only select the first set of data?
Look at your chip's datasheet. The Axx pins are the address lines, which are used to select the address that will be read. By connecting the higher address lines to GND you allow only the lower portions of the chip to be read, while connecting them to +5V causes the higher portions to be read. In your case it's better to connect them to GND.
You need to calculate, based on the size of the PRG-ROM, how many address lines are necessary, and ground the ones after that. For example, if the PRG-ROM is 16KB, that's 16384 bytes, which is 2 ^ 14, so you need 14 address lines. This means that A0 to A13 should be connected normally, while A14 and up should go to GND.
lordloss wrote:
For the PRG, I put A15 to 5v and for the CHR I put A15, 14, and 13 to 5V and it fixed the problem
If you left them unconnected or 'floating' as it is called, that would explain your problems. I wouldn't think it would necessarily cause the problem if you proper mirrored the data, but maybe it does.
On CMOS technology, ANY unconnected input (even if the input state has no effect on the circuit) can cause problems, because it means inside the chip some transistor's gates are unconnected and this is bad for some unknown reason, and will cause noise and oscillations.
I tried putting a15 to ground(VSS) earlier and then the NES wouldn't turn on.
My CHR 16 KB. So you said that address pins A14 and A15 need to be grounded. When I put these two pins to +5, I still get a scrambled game. However, when I go 13, 14, and 15, I get a correct first level, then level 2 of the game's graphics are messed up.
When I connected the correct pins on both chips, the entire NES was grounded and and wouldn't turn on.