Was there an NES expansion chip like SA-1

Discuss technical or other issues relating to programming the Nintendo Entertainment System, Famicom, or compatible systems.

Moderator: Moderators

Erockbrox
Posts: 384
Joined: Sun Nov 23, 2014 12:16 pm

Was there an NES expansion chip like SA-1

Post by Erockbrox » Thu Jan 21, 2021 1:34 pm

The SA-1 chip used in SNES games gave around a 3 times CPU boost which allowed for all sorts of cool games.

My question is, did the NES ever have something similar to the SA-1 chip?

I know that there have been many NES enhancement chips, but have any of them been just an NES CPU clocked at a higher?

And if such a chip doesn't exist then why can't someone code the chip for the FPGA in the NES Pro flashcart.

lidnariq
Posts: 10251
Joined: Sun Apr 13, 2008 11:12 am
Location: Seattle

Re: Was there an NES expansion chip like SA-1

Post by lidnariq » Thu Jan 21, 2021 1:53 pm

No, no-one did this.

Why not? In my opinion, because the CPU isn't the limiting factor for most NES games. Instead, the PPU is both fairly limited, and many of its restrictions can be supplanted from the cartridge slot. But once you're feeding in better graphics that way, is it even an NES game at all?

The SNES, in contrast, had an underpowered CPU attached to a really nice PPU, but the PPU bus was not available to the cartridge, and the CPU had a high-bandwidth DMA that allowed something else to generate graphics for the CPU to relay. So farming off only processing power really does make sense there.

User avatar
dougeff
Posts: 2820
Joined: Fri May 08, 2015 7:17 pm
Location: DIGDUG
Contact:

Re: Was there an NES expansion chip like SA-1

Post by dougeff » Thu Jan 21, 2021 2:06 pm

The MMC5 board could do multiplication. That's sort of like a coprocessor... with very limited processing ability.
nesdoug.com -- blog/tutorial on programming for the NES

User avatar
Dwedit
Posts: 4410
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: Was there an NES expansion chip like SA-1

Post by Dwedit » Thu Jan 21, 2021 7:26 pm

There have been NEW things, such as running DOOM on another processor, and using the NES to display the result.
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!

Drag
Posts: 1335
Joined: Mon Sep 27, 2004 2:57 pm
Contact:

Re: Was there an NES expansion chip like SA-1

Post by Drag » Thu Jan 21, 2021 10:39 pm

Just as a quick exercise, what would it take to add a second, faster-clocked 6502 on the cart, and what would the benefits be?

Well first, the coprocessor will need its own memory to hold its program and variables, and the simplest way to do that would be to connect the WRAM to it. If you do that, then then coprocessor will need to be disabled when the main program wants to access the WRAM (i.e., the main CPU is limited to deck RAM as long as the coprocessor is running). The NES and the coprocessor could easily share 8kb of RAM this way though, but that 8kb RAM is going to contain the coprocessor's zeropage, stack, program, memory, and vectors, so it's not just simply a free 8kb of RAM. It's also the main program's responsibility to initialize that memory (and reset vector) with a valid program before it attempts to enable the coprocessor.

The coprocessor can have direct access to CHR-RAM, which will give you very fast PPU updates both to the tiles and to the nametables (if you map the nametables to use CHR-RAM instead of the NES's internal ones), but the coprocessor must not write to CHR-RAM while the PPU is using it, so it's up to the main program to signal to the coprocessor when it's OK to use it, and the coprocessor's program will need to be mindful of how long vblank is.

So, for this hypothetical design draft, the cart would require 8kb WRAM, 16kb CHR-RAM (for full benefits, and only 12kb would actually be used by the PPU natively), PRG-ROM, and a 6502 clocked faster than the NES's internal one, plus a memory mapper which can perform the following:
- Usual PRG bankswitching for main program
- Selectively map WRAM to coprocessor or to main program (hold coprocessor in reset while mapped to main program)
- Selectively map CHR-RAM to coprocessor or to PPU

This is bare basic, the design would probably also call for both CPUs being able to interrupt each other, main program somehow passing data to the coprocessor in interrupt, coprocessor interrupting main CPU and passing data back when finished, that kind of stuff.

I'm also not an expert on hardware design, so there's likely problems with this draft, but this is what I can think of off the top of my head.

User avatar
Gilbert
Posts: 450
Joined: Sun Dec 12, 2010 10:27 pm
Location: Hong Kong
Contact:

Re: Was there an NES expansion chip like SA-1

Post by Gilbert » Thu Jan 21, 2021 11:04 pm

I don't have much knowledge in hardware design, but maybe one obstacle back in the time was power consumption?

Today we can have electronics/chip sets that do A LOT but draw very little power, which was probably not the case in the 80's and early 90's, so even when you ignore the other factors such as sync/memory/whatever terminologies I could spit out to pretend I know something/cost/etc. putting a fast CPU in a Famicom cart was probably not very feasible, unless you supply extra power like having to attach it to another socket or put some batteries in it (which could be drained dry in a few hours), not to mention that the cart might heat up like a fry pan.

In fact, I think nowadays we can even make this targeted for the Famicom.

User avatar
tokumaru
Posts: 11998
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Was there an NES expansion chip like SA-1

Post by tokumaru » Fri Jan 22, 2021 3:58 am

I don't see much benefit in improving the CPU side of the NES when its PPU is much more of a bottleneck in terms of how complex its games can be. The small number of sprites and palettes are what hold the NES back the most IMO, and neither of those can be improved by extra hardware on the cartridge. Whatever new video system you put inside an NES cartridge still has to output at 2bpp with 4 palettes, which is way too limited to display anything more advanced than what the system already does without resorting to dithering, flickering or other undesirable effects.

tepples
Posts: 22281
Joined: Sun Sep 19, 2004 11:12 pm
Location: NE Indiana, USA (NTSC)
Contact:

Re: Was there an NES expansion chip like SA-1

Post by tepples » Fri Jan 22, 2021 9:44 am

There is a mapper in the works called MXM that provides 8x1-pixel attribute areas for backgrounds. It runs on INL's Gowin FPGA-based boards and looks to provide about as much of an improvement over conventional NES graphics as MSX screen 2 graphics provide over ZX Spectrum graphics. If you can find jekuthiel, ask him about it.

User avatar
tokumaru
Posts: 11998
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Was there an NES expansion chip like SA-1

Post by tokumaru » Fri Jan 22, 2021 10:23 am

Yeah, but there's still quite a bit of color clash if you try to incorporate moving objects into that layer, and you're still limited to 4 palettes overall, so that doesn't really do much to solve the 2 problems I mentioned (sprite and palette counts), which I consider to be the biggest limitations of the NES.

Just to be clear, I'm not complaining about the NES... I think it has a very charming architecture and you can stretch it pretty far if you have competent artists and programmers, so I personally am not looking into ways of enhancing that system in any way. I'm just saying that if you are looking into enhancing the console, there are much bigger limitations on the PPU side than on the CPU side.

User avatar
za909
Posts: 226
Joined: Fri Jan 24, 2014 9:05 am
Location: Hungary

Re: Was there an NES expansion chip like SA-1

Post by za909 » Fri Jan 22, 2021 10:25 am

If we have two processors sharing the same RAM, wouldn't it require the co-processor to be clocked at the same rate as the NES CPU? Then the bus can alternate between the two cpu's every "half cycle" to make it appear as continuous (multiplexed) access? To me it sounds like it would make more sense to have an SNES APU-like port-based interface between the two processors because the task of the co-processor would be very specific anyway (graphics-related processing only).

User avatar
Dwedit
Posts: 4410
Joined: Fri Nov 19, 2004 7:35 pm
Contact:

Re: Was there an NES expansion chip like SA-1

Post by Dwedit » Fri Jan 22, 2021 10:32 am

I still like the idea of a simple discrete logic mapper that would expand the number of tiles from 256 to 1024, depending on whether it is a top-left, top-right, bottom-left, or bottom-right tile. (You look for a Nametable byte fetch and automatically trigger bankswitching)
Here come the fortune cookies! Here come the fortune cookies! They're wearing paper hats!

User avatar
never-obsolete
Posts: 399
Joined: Wed Sep 07, 2005 9:55 am
Location: Phoenix, AZ
Contact:

Re: Was there an NES expansion chip like SA-1

Post by never-obsolete » Fri Jan 22, 2021 10:56 am

I whipped up a mapper for the powerpak that does just that. Eventually ended up at FME-7 level complexity with MMC5-like extended attributes, so discrete logic is probably not feasible.
. That's just like, your opinion, man .

User avatar
tokumaru
Posts: 11998
Joined: Sat Feb 12, 2005 9:43 pm
Location: Rio de Janeiro - Brazil

Re: Was there an NES expansion chip like SA-1

Post by tokumaru » Fri Jan 22, 2021 11:58 am

Yeah, you can do all kinds of little background enhancements - or even big background enhancements, since you can implement completely new versions of the name/attribute/pattern tables, with lots of tiles, flipping and finer palette selection - but that still doesn't do squat for sprites or the palette count, so that's still not a very effective overall visual update.

A mapper with a flexible DMA system to speed up VRAM transfers could be a great help in improving background/sprite animations, but I doubt most players would even notice that there were any enhancements unless they were told this.

Drag
Posts: 1335
Joined: Mon Sep 27, 2004 2:57 pm
Contact:

Re: Was there an NES expansion chip like SA-1

Post by Drag » Fri Jan 22, 2021 5:00 pm

I would say to figure out what your software needs to do, and if it would benefit from extra hardware on the cart, and if there isn't already something that can provide you what you need. Like, the vast overarching majority of the stuff we churn out here as homebrewers is perfectly fine with the discreets and the MMC3. :P

Although, I have yet to see someone try adding a YM2151 or something as expansion sound. :P

User avatar
za909
Posts: 226
Joined: Fri Jan 24, 2014 9:05 am
Location: Hungary

Re: Was there an NES expansion chip like SA-1

Post by za909 » Sat Jan 23, 2021 10:27 am

Drag wrote:
Fri Jan 22, 2021 5:00 pm
I would say to figure out what your software needs to do, and if it would benefit from extra hardware on the cart, and if there isn't already something that can provide you what you need. Like, the vast overarching majority of the stuff we churn out here as homebrewers is perfectly fine with the discreets and the MMC3. :P

Although, I have yet to see someone try adding a YM2151 or something as expansion sound. :P
I'd say a complex FM chip is something that takes enough time to process a routine for that it starts to become noticeable in your overall cycle-budget. The best FM options have more than a hundred registers, and writing each of those requires the controlling CPU to wait a certain amount of time until the next write. It might be a reason why the only VRC7 game with audio was an RPG as well. It usually isn't about constant CPU strain like a bullet-hell shooter game or many platformers.

Post Reply