Converting SlowROM to FastROM and vice versa?

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
Converting SlowROM to FastROM and vice versa?
by on (#33240)
Is there a way to convert a slowrom game so that it will work on fastrom chips?

by on (#33242)
Yes, just hit the ROM with a stick a few times. (Or do nothing at all)

by on (#33251)
As far I know you have absolutely nothing to worry about this in that direction, only the other one may cause trouble, as FastROM games does most likely rely on fast CPU to work at normal speed.

by on (#33272)
Are the 120 ns chips used by FastROM significantly more expensive than the 200 ns chips used by SlowROM?

by on (#33284)
Back in 1992 probably yes (or at least when it comes to mass-producted mask ROM), today it's hard to find chips slower than 100ns.

by on (#33317)
As I heard your game will crash or have issues if your ROM memory is slower than 200ns for "SlowROM" and 120ns for "FastROM". FastROM enables the SNES to run faster than its 2.68mhz. It will run at 3.58mhz when accessing FastROM in certain banks. I forget what it was, like banks 0x80 and above or something like that will be accessed at 3.58mhz if a certain register bit is set. I remember hearing also some people suggested that because the system has 64kb of RAM, you could upload/copy code to RAM so that it would run faster than off a 200ns SlowROM chip.

Anyway, games will crash, lockup, or experience glitches if a EPROM or whatever you are using is slower than it was designed for. Some games can be made to work with those SlowROM "fixes".

As Bregalad said, it'll be a challenge to find really slow EPROMs now. But usually the last numbers in a EPROM part number should be a NS speed rating. 120ns is SNES FastROM speed. 200ns for SlowROM. Obviously, faster is better and will work just fine. You just can't be slower.

by on (#33362)
Quote:
I forget what it was, like banks 0x80 and above or something like that will be accessed at 3.58mhz if a certain register bit is set.


Yes, any ROM (*) access with A23 set (addr&0x800000!=0) will be FastROM if $420d.d0 is set.

(*) $[80-bf]:[8000-ffff] + $[c0-ff]:[0000-ffff]

FastROM means one access takes six cycles at 21.47MHz, SlowROM takes eight.

Quote:
I remember hearing also some people suggested that because the system has 64kb of RAM, you could upload/copy code to RAM so that it would run faster than off a 200ns SlowROM chip.


First, the SNES has 128kb WRAM; and second, it is always accessed at the same speed as SlowROM, regardless of $420d.d0 FastROM setting.

Kind of unfortunate that Nintendo was too cheap to use faster RAM memory, given that the CPU was the bottleneck of the SNES.

by on (#33363)
Wasn't WRAM even slower than slow ROM, due to the DRAM refresh latency? It is too bad that the SNES didn't have a small section of fast static RAM for copying speed-critical code from slow ROM to. On the other hand, since most cartridges had battery RAM, couldn't that be used as fast memory? An emulator with a visual execution address display would make it easy to see if slow ROM games were spending lots of time executing out of battery RAM.

by on (#33372)
Sorry bout that, I just pulled that outta thin air, I don't know why I thought 64k.

So actually reading from FastROM was faster than even RAM access? That's kinda sad. If they had the RAM access at FastROM's speed, then perhaps the trick of copying your code into RAM would have really helped early on.