CLChambers00 wrote:
This specific test is NROM.
CLChambers00 wrote:
The item shown at
http://www.infiniteneslives.com/kazzo.php is not available. And the TOP853 USB Universal Programmer is not being sold on Ebay at the moment, do you have another recommendation?
For programming INL's flash boards, you need the kazzo specifically, so I guess wait for new ones to become available.
For programming EPROM generically, there are a lot of different EPROM programmers. Willem makes some popular ones. I can't recommend a specific one. The TOP853 I have is not a "good" one, but there's not really a difference in the end result between one programmer and another as long as they function correctly. I think some people have managed to build an inexpensive one using an arduino as a base.
CLChambers00 wrote:
So basically I would buy one of these boards from INL, remove the chip and use a EPROM programmer on it, and then put the chip back in, no soldering needed. Very easy to do?
With INL the boards are designed to be flashed via the carrtridge connector. There is no need to remove the chip.
With non-Flash boards, generally what you want to do is install (solder) a chip socket where the chips go so you can put the EPROM in and out without having to do any soldering between tests.
Here's one alternative board:
https://www.game-tech.us/product/reprox/Though the ReproPak is not being sold anymore, its manual may give you some idea of how these kinds of boards are used:
http://www.retrousb.com/product_info.php?products_id=42There's others too, just search for NES reproduction boards:
https://www.muramasaentertainment.com/i ... -nrom.htmlOr you can cannibalize an existing NES game:
http://callanbrown.com/index.php/basic-nes-reproductionThey're all basically the same design and work the same way, so learning about one will gain useful information about the other.
CLChambers00 wrote:
Also I just read what you wrote about seeing lots of variance on your RAM state at power on. I know with some games, Metroid in particular, which has at least one memory address value taken from the initial state that influences RNG, that some people can get a certain pattern from power on each time, which leads me to believe that this particular address seems to go back to a starting value instead of retaining its last value, though I don't understand how that can be.
I'll make a sort of simplified description, probably a little inaccurate but should give the idea:
Bits in RAM are a device that take an existing charge and continually amplify it to maintain it at 0 or 1. When you're powering it on, the signal is very weak, and the circuit is deciding whether a signal that's in a very questionable range should be driven toward 0 or 1.
This is a device with many thousands of those bits. They're made to be reliable within a certain tolerance, but it doesn't matter if the bit splits between 0 and 1 at 0.5, or if it split at 0.4 or 0.6, etc... that doesn't really matter whenever the input signal coming in is strong. To split at exactly 0.5 you'd need the two sides of the amplifier to be perfectly balanced, but in practice you only need them balanced well
enough for tolerantly reliable behaviour, so it doesn't have to be that accurate. This difference only really has an effect at power-on, where some particular bits might have a tendency to power on in a 0 or 1 more often.
The weak starting signal is subject to all sorts of noise, existing static charges in the chip, temperature and ambient or interfering electromagnetic radiation in the environment, etc. When the signal is weak enough all sorts of things can be affecting it. When you power off and on an SRAM very quickly, it tends to retain most of the bits it last had in it. When you power it off for longer, the charges tend to drain out and balance into a potentially more consistent starting state. The longer it's powered off, the closer you'll get to the chip's natural starting equilibrium and have the best chance of powering on with a consistent value. (Still only a chance though.)
Not all RAM is created equally, some have stronger tendencies than others. The contents at power-on aren't something the chip has to do anything consistent with, by design it doesn't matter, so there's a ton of variation here. Some might tend tend to have mostly 0, or mostly 1 bits, for example, if the bias is consistent.
Anyhow, this test ROM was designed to to take a look at this kind of thing. The results I found were that mine are indeed pretty random. I didn't even see much tendency when they were powered off for longer times.
As for looking at specific games, you should know that this program initialized a few bytes of RAM in order to operate, but you could easily rebuild it to move those bytes elsewhere if by bad luck they overlap the bytes the games you're interested in use for their uninitialized behaviour that you're trying to target. (This is one reason why it's useful to have a socketed board, or use a flashable one that you can rewrite the chips for. You may need to try different tests. You could also use it to try other mapper-compatible games and experiments as well.)
I don't know about uninitialized behaviour in Metroid, but I do know that it gathers some randomness from how many frames it spends on the title screen, so even if it was a consistent startup value it might need frame perfect input to be consistent after that anyway.