SUROM-8192

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
SUROM-8192
by on (#96376)
3GenGames recently made an MMC1 based multicart engine. The biggest thing it does that my own engine doesn't is the mirroring switch, which MMC1 can do but #34 (oversize BNROM) can't. On #nesdev, we got to discussing how I could port Action 53 to MMC1. Testing such a port would need emulator support because there aren't any existing MMC1 boards over 512 KiB, nor does the PowerPak support such an oversized PRG ROM. And in any case, we'd first need to define an extension to the MMC1 to handle PRG ROM larger than 512 KiB for emulator and PCB makers to implement. Because of how existing PRG ROM select bits are arranged in existing MMC1 cartridge boards, this is tougher than the "obvious" oversize extensions to many of the discrete mappers.

SNROM, SOROM, SUROM, and SXROM reuse unused bits of the CHR bank address as follows:
Code:
43210  PRG ROM and RAM bank ($A000)
PSSxC
||| |
||| +- Select half of a bank (ignored in 8 KiB CHR mode)
|++--- SOROM: Select PRG RAM chip at $6000 (0: scratchpad; 2: save)
|      SXROM: Select save RAM bank at $6000 (0-3)
+----- SNROM: Disable PRG RAM (0: enable; 1: open bus)
       SUROM, SXROM: Select 256 KiB PRG ROM bank (PRG A18)

How should PRG ROM bigger than 512 KiB work? Would the bank bits be added in reverse order like in mapper 87? That would look like this:
Code:
43210  PRG ROM and RAM bank ($A000)
PRGxC
||| |
||| +- Select half of a bank (ignored in 8 KiB CHR mode)
||+--- Select 1 MiB PRG ROM bank (PRG A20)
|+---- Select 512 KiB PRG ROM bank (PRG A19)
+----- Select 256 KiB PRG ROM bank (PRG A18)

by on (#96382)
Why should a larger-than-512kB game be a functional superset of SUROM as opposed to anything else? If you do want a super-SUROM, why not use the never-before-seen-used bit 1 for A19?

Is there any reason to leave both CHR banks enabled and not tie the mapper's A12 input low, freeing up all 5 bits for other purposes? i.e. has anyone had reason to switch both 4kB slices of CHR RAM to the same half?

As far as I can tell, there isn't really a reason not to do both. Is there any reason to support banked PRG RAM? Otherwise I'd just allocate all 5 bits in normal ascending order, even it it implies support for things much bigger than iNES1 can support.

by on (#96386)
Inspired by Munghausen :)

Quote:
Is there any reason to support banked PRG RAM?
to keep saves separate.

Quote:
SNROM, SOROM, SUROM, and SXROM
sounds like list of donors :)

Quote:
How should PRG ROM bigger than 512 KiB work? Would the bank bits be added in reverse order like in mapper 87? That would look like this:
Whatever reduce calculations on software side is good.

by on (#96424)
Am I the only one tired by this endless super mapper talk ?

by on (#96426)
What's the problem? No one forces anyone to read all forum threads.

by on (#96429)
There is no problem really - I was just pointing out to tepples that such discussion have already been made 3918 times on these boards and that they hardly bring anything new.

by on (#96431)
Where was the specific discussion on how to interpret an MMC1 image larger than 524288 bytes? I already used the forum search to look for oversize mmc1 but found no relevant posts. That and kevtris likes to remind #nesdev of how cheap a large flash chip is.

EDIT: qwertymodo agrees that big flash memories are cheap as chips: "$2 each for the 32Mbit chip".

by on (#96453)
tepples wrote:
Where was the specific discussion on how to interpret an MMC1 image larger than 524288 bytes? I already used the forum search to look for oversize mmc1 but found no relevant posts. That and kevtris likes to remind #nesdev of how cheap a large flash chip is.
Good thing :)

Quote:
EDIT: qwertymodo agrees that big flash memories are cheap as chips: "$2 each for the 32Mbit chip".
Don't forget to add 3.3V regulator and a bunch of resistors. Otherwise all good.

by on (#96502)
I'm guessing some of this might be motivated by thefox's efforts with streemerz and it's current/potential use MMC1.

Your proposal seems logical to me. I'm more than willing to help out with hardware testing if/when you get to the point that it becomes useful.

My thoughts: I'd question if sticking with the MMC1 is really worth it since the mapper isn't already supported wired up as is. Seems like it'd be simpler to just add mirroring select and such with your BNROM setup as we're discussed before. The only real benefit of MMC1 is that it has relatively low pin-count and the IC exists in donor boards. However the pin-count is a non issue really for discrete/cpld solutions so really you're only supporting the destruction of original carts.

by on (#96504)
That's actually a very good point, infiniteneslives. Once you have to add emulator support, even if it's defining a new variant, you may as well define something that's a better match (e.g. cheaper)... for example, a variant of AxROM which used the top 4 bits as the input to a 74'153 and allowed you to choose any mirroring format. (Or only use two bits of the latch and wire it differently to provide 1ScA/1ScB/H/V only, in which case it could be backwards compatible)

by on (#96520)
People need to get over the fact you're using original parts from games. It's so much cheaper and there's hundreds of thousands of games laying out there not being used for anything it would be murder NOT to fashion them into other carts people would use.

Tell me when you can get a NES game case, mapper, PCB with 8KB CHR-RAM and 8KB WRAM for less than $3. That will never happen. And nobody will take the leap and produce boards with MMC3-quality mappers for use for cheap, so the only way to get a really good mapper is to use donors.

by on (#96545)
3gengames wrote:
And nobody will take the leap and produce boards with MMC3-quality mappers for use for cheap, so the only way to get a really good mapper is to use donors.


Not sure what you consider cheap but I'm actually in the process of creating MMC3 capable boards.


While it is significantly cheaper to use donors, it's significantly less time consuming to produce sizable quantities of games using new parts. I could assemble 5-10 boards in the time it would take to hack up rewire and troubleshoot ONE donor. So really your argument is only valid for small production quantities or making a game for yourself alone. If you consider the cost of time they become cost competitive quickly. The only way they'd be significant cheaper is if you or someone else was willing to offer up the labor to convert donors for free.

That and you'll never convince the large population of the community that doesn't support hacking donors in large quantities. I'm pretty sure many more action53 carts will sell if they use all new parts compared to if they used donors even if they cost $10 more. You can complain that the market needs to "get over the fact of using donors" but that's alone isn't going to change anything. So until then your argument is moot when considering production quantities larger than a dozen or so...

by on (#96548)
infiniteneslives wrote:
If you consider the cost of time they become cost competitive quickly.

So that I can quantify the cost of time, how long does it take to rewire one SGROM or SNROM game for PRG flash, including running three CHR address lines out to the PRG, and test it?

But there are other advantages of using all new PCBs. First, I imagine a ROM completely soldered to the mainboard would be more structurally sound than one that has had a whole bunch of pins lifted. Second, one can put in a CIClone, which lets one cart service NTSC NES, PAL A, and PAL B.

A mapper based on #34 with D7-D6 repurposed for MMC1-style mirroring control (1/V/H) would take about three chips: a 74HC377 (8-bit flip-flop), a 74HC153 (4 to 1 multiplexer), and a 74HC20 or 74HC04 to invert R/W into /OE to avoid bus conflicts. Someone on IRC recently gave me a rule of thumb that once a mapper has four discrete chips in it, that's when one should start using a CPLD.

by on (#96551)
tepples wrote:
and a 74HC20 or 74HC04 to invert R/W into /OE to avoid bus conflicts
Why bother with preventing bus conflicts instead of working around them? While I agree that it's nicer to be rid of them, either the pirate solution (use address lines instead of the data lines) or the traditional homebrew solution (tables) seem eminently acceptable.

That said, it seems to be almost trivial cost: Digikey sells 1-gate variants of the 74'00, 74'02, 74'08, 74'14, and 74'32 for 63¢-70¢/10 (and $36-$38/1000).

by on (#96553)
lidnariq wrote:
Why bother with preventing bus conflicts instead of working around them?

The menu already works around bus conflicts. When switching from the last bank (which contains the menu) to another bank, it reads the bank number from the game list and writes it back to the same location. But when switching from another bank (such as one holding a compressed screenshot) back to the last bank, it has to linearly search for a $FF byte starting at the reset vector. (Both reset patches include a $FF byte.) Eventually I plan to add support for individual games that surpass 32K, and I'll have to specify an ABI for how to make a table that the ROM builder can patch properly. A game using multiple mirroring settings, for example, would need a copy of the table for each mirroring setting.

Quote:
Digikey sells 1-gate variants of the 74'00, 74'02, 74'08, 74'14, and 74'32 for 63¢-70¢/10 (and $36-$38/1000).

And how much more does the assembly cost?

by on (#96572)
If you want to pay someone to assemble things for you and even program chips you can always get quick quotes here: http://www.myropcb.com/online-quote/pcb-assembly-quote/

Did something quick with 50 boards each having 5 parts ~150 SMT leads total. It came to $240 if time isn't a concern so somewhere around $5 a board. Granted that's only one option and doesn't include programming parts.

I would estimate that it would take ~40 mins or more to convert a donor cart including the time invested to track down many carts with the proper mapper, and fully clean the case (including label) and pcb connector, desolder ROMs, rewire the PCB, and test.

You don't have to do most of that with new parts. It's especially easy if you have oven SMT soldering abilities which is easily achievable to someone with the experience. With use of a solder screen and paste I would expect you could assemble them ~5-10mins each including the added time of programming the CIC and mapper.

Keep in mind I'm just estimating. But I've done a LOT of work with used stock and it gets time consuming quickly if you have high standards or quality. SMT soldering is stupid fast especially for large quantities, through-hole isn't too bad either if the pin count is low.

Really it all boils down to what the labor costs you. If you're doing the work yourself it's also heavily dependent on your abilities of course. If you're hiring someone the quantity will also play a role. So to fully answer your question Tepples it depends... For what it's worth I will say though that I've got someone who's having me fully assemble and program 50-100 MMC3 boards/games. I'm willing to take on the chore with new parts, I'd never consider doing so with donors for the reasons stated above.

by on (#96574)
If it was worth it, no repro makers would use donors then.

by on (#96575)
3gengames wrote:
If it was worth it, no repro makers would use donors then.

That doesn't hold any water. "If it was worth it to pay for a car wash, no one would do it at home with a hose."

Um, no. Different people value time and money and, well, everything differently. For me, time is most important. I'd rather go to a restaurant than cook a meal. I'd rather pay people to mow the lawn than do it myself. I'd rather go to a car wash than get out the hose. I'd rather pay for a dryer than hang out my clothes.

Naturally all those things are if I could afford them, which is another factor.

Some people enjoy cooking meals, so they save money by spending their time cooking.

Some people can't afford a dryer, so they get the clothes line or hit the laundromat.

There's other factors like knowledge and what you value. I wouldn't even begin to know how to design a board, but I'd be capable of hacking up an old board that doesn't require rewiring. But I ended up not even destroying a BROKEN (messed up CHR) Zelda cartridge, or a copy of Hollywood Squares both of which I got specifically for the purpose just because of how I valued destroying old games. I ended up buying boards from retrousb. The only way I might be able to see myself destroying a game is if there was no board available. But even then, I'd probably not do it. I'm glad people like infiniteneslives and bunnyboy are creating these things so I'm never between a rock and a hard place like that.

They'll get my money. They won't get yours. Cool. But it's no reason for them to stop doing it.

Also, desoldering is zero fun. Some of the repro guys do it because they genuinely love hacking stuff up like that. Like infiniteneslives, I'd rather spend my money skipping that step than my time doing it.

by on (#96589)
3gengames wrote:
If it was worth it, no repro makers would use donors then.
Are you just willfully ignoring the part where he talked about economies of scale? Making 1 is likely correct for a donor; making 100 with anything but new parts is going to be tedious and unrewarding unless you really like desoldering and rework.

by on (#96590)
Yeah, but the numbers are proportional, unless your time is worth the upwards of $30 an hour, it's economic to use donors. It's a fact. I mean, it's not economical making NES games from the ground up in assembly, but we still do it.

by on (#96600)
But I don't see anyone who said it WASN'T economic to use donors. infiniteneslives even said it was cheaper, but pointed out a time/labor factor you seemed to not be considering. You are the one who made totally absolute statements. (If custom boards were so great, everyone would use them). We are simply saying why that's wrong, not that new boards are the only way.

It's true that, even with the labor we brought up for converting donors, it may still end up being cheaper. But there really is more to things than maximizing profit, and the cost of what you buy.

Quote:
unless your time is worth the upwards of $30 an hour

It's a personal philosophy, but even if someone works at minimum wage, I think it's good to at least value your free time as at least that high, if not higher.

If I have to do something in my free time that I don't actually want to do, it kills me. It's not economical to make NES games from the ground up, or make frame by frame animation completely alone, but I do it anyway because I enjoy it. Getting a sound and music guy would probably help me spend less time working on it, but I don't enjoy working in groups more than I enjoy the time I'd save. It's economical, sure. But less fun.

by on (#96614)
3gengames wrote:
If it was worth it, no repro makers would use donors then.


You're actually proving my (our) point with that statement.

There is only one repro maker currently who has the choice between donors and new because of the skills/funds required to use new parts. Reverse engineering and remaking the MMC1/3, CIC, case etc and recreating it isn't trivial, bunnyboy is the only person that applies to your statement and he chooses new parts...

All other repro makers don't even have the choice to use new parts really, they can't remake the ASIC mappers or CIC currently.

EDIT: However I move that we agree to disagree and get back on subject :)

by on (#96619)
I can bring one more reason for using donors - recycling. :)

by on (#96697)
80sFREAK wrote:
I can bring one more reason for using donors - recycling. :)


except for the fact that most games that make viable donors for projects are among the best games, and most fun to play up until today. I destroyed three of my favorite MMC1 games before making one working mapper 1 devcart, to the chagrin of friends who were really upset that switching between those 3 games would now require an EEPROM burner (and LPT-era computer to operate it).

by on (#96700)
Roni wrote:
80sFREAK wrote:
I can bring one more reason for using donors - recycling. :)


except for the fact that most games that make viable donors for projects are among the best games, and most fun to play up until today. I destroyed three of my favorite MMC1 games before making one working mapper 1 devcart, to the chagrin of friends who were really upset that switching between those 3 games would now require an EEPROM burner (and LPT-era computer to operate it).


that's crap, you make crap games into donors because they're cheap. Mario Golfs and a Golf Power or whatever are great $3ish unwanted NES donors.

by on (#96706)
I am personally for new parts because every cart made is more likely to function the same as any other cart sold it is important to give all customers the same experience and with donor carts one cart could be in like new condition and the other could have been inserted and taken out of the system so many times that the gold fingers are worn down or there are scrapes on the case. The people who get the better condition cart are would of course be satisfied and the people who accidentally get worn out carts would not be satisfied and they will end up angry because other people got a good cart while they got a bad one. With a new cart every cart would function the same and there is consistent quality and with new parts it requires much less time to make each cart and if there was a general purpose cart that was to be made and if someone was able to order a large quantity the carts would be much cheaper than rewiring an existing cart and would overall result in a better product and some people do not like the idea of a game being destroyed so you have a wider audience of potential buyers and that allows you to order even more and then that lowers the price per cart even more.

by on (#96716)
3gengames wrote:
that's crap, you make crap games into donors because they're cheap. Mario Golfs and a Golf Power or whatever are great $3ish unwanted NES donors.
Right.