Video:
https://www.youtube.com/watch?v=ar9WRwCiSr0Making of:
https://www.youtube.com/watch?v=hTlNVUmBA28The idea of putting a more powerful processor into a NES cartridge and expanding the abilities of the NES have been talked about and demonstrated here on nesdev before, so I guess this is not really anything new, but as a "layman" who follows this community with casual interest, it doesn't make this video and demonstration any less satisfying to watch.
Always happy to see someone build something. Just talking about it is a lot easier.
Slight shame he didn't discover either CIClones or avrciczz rather than feeling he had to harvest CICs.
That was pretty rad. As he mentions in the second video, i assume the next step (at least for a homebrewer?) would be to remove the rpi in favour of a more immediate microcontroller to talk to the ppu. If you wanted to hardware accelerate the resolution of attributes, tiles, scrolling, etc, that is.
I didn't see this topic! I replied to that other thread linking to this video. Aren't those projects related?
viewtopic.php?f=22&t=16807
Only in the sense that they're both providing a stream of raw bytes to the PPU. The implementation of the two is entirely different; tom7's is a well-deserved hack through-and-through, whereas rasteri's use of an actual digital FIFO IC means he just has to generate bytes fast enough, not figure out the exact timing.
I'm still trying to figure out the practicality behind this, ditto with the "why". "Why not?" or "for fun!" are certainly valid explanations. I share rainwarrior's sentiment (always happy to see someone build something) but with a kind of raised eyebrow.
Why? To define terms, which per Layne's Law of Debate is necessary before productive debate can continue.
When discussing the limits of the NES platform, one must first define what is considered an "NES game". Is an NES game still an NES game if it runs the majority of a game on a coprocessor in the cartridge? No one would sincerely argue that Star Fox and Super Mario RPG aren't Super NES games, but I imagine they draw the line somewhere before a Wide Boy or Super Game Boy or an Xbox game played through what amounts to a TV tuner cartridge.
If you look at tom7's previous things, the answer is definitely "for fun". (I think the video makes that pretty clear, what with the whole bit about "what is humor" at the beginning)
He's a reliable submitter to SIGBOVIK, which if you like computer scholarly ridiculousness is definitely worth looking into.
This kinds of harkens back to that discussion that I always run into no matter what I search for in the archives of this forum, about wether relying on advanced mapper chips is "true" in relation to the hobby of making old school
NES games.
My first thought watching this video was that it seems kind of boasty to advertise this really basic "abuse" of the CHR pins of a NES cart as if it were a totally original idea, when it's fairly basic in practice. But I totally agree with the sentiment that it is super nice to actually see someone make something out of it, rather than just talking about it.
tepples wrote:
Is an NES game still an NES game if it runs the majority of a game on a coprocessor in the cartridge? No one would sincerely argue that Star Fox and Super Mario RPG aren't Super NES games, but I imagine they draw the line somewhere before a Wide Boy or Super Game Boy or an Xbox game played through what amounts to a TV tuner cartridge.
I doubt you could ever put down specific rules, but I think most people would agree that a Game Boy game played on a Super Game Boy isn't considered a SNES game, but I'd say the SGB exclusive Space Invaders implementation included on the Game Boy cart should be considered one, as it's actually executed on the SNES.
However, if some developer had the power to do something like this in the 80s, with super-powerful hardware packed into an NES cart, feeding data directly to the CHR, that would still have been considered an NES game in the eyes of the public.
tepples wrote:
then discussing the limits of the NES platform, one must first define what is considered an "NES game".
And perhaps also vice versa? To define what constitues a NES game, maybe one must define the limits of the NES platform. If you go by potential, it would, as part of the answer, be a colour resolution of a 1x8 strip of 3 colours + background splash colour (not accounting for the sprite layer), and whatever the limits of the cartridge, controller and expansion ports are.
If you instead go by performative-assoviative measure, games associated with the platform usually perform a 16x16 attribute granularity. This produces a mainstream NES-iness most people will readily recognize as such. Once you start doing things outside the center quartiles of this perception, your project might risk end up in an uncanny valley because some feature was rare or never concieved during the semantically formative years of the NES experience. It doens't nessecarily mean your game isn't nes, but some might still feel discord and discomfort, which may lead to a polarizing rationalization. "this is this, but that is not". I kind of feel that way about the FM sounds from FDS games, maybe also because many of the timbres produced by FM synthesis are so distinctively different from basic square/tri/noise functions, even though it's a bit silly of me.
Another way to look at it. Is the project, as it stands, dependent on the NES for being experienced properly? If you stream data to the PPU and/or instructions to the CPU, the answer is likely yes.
In any case, I'd encourage people who use both this site and Slashdot to monitor the comments of
the associated Slashdot story for misconceptions.
tepples wrote:
When discussing the limits of the NES platform, one must first define what is considered an "NES game". Is an NES game still an NES game if it runs the majority of a game on a coprocessor in the cartridge?
Honestly I think that's a fairly simple thing to determine, at least in my mind:
Is the game coded in a language that the NES can natively understand and execute? If yes, it's a NES game. If no, it's not a NES game.
Games that use co-processors to do extra functions (math logic, scaling, etc) are still coded in the language of the console they're playing on.
This hack is sending commands to the console in bits that it can understand, but it works just like an adapter rather than a game. Just like using a Super Gameboy or something like that, where you're playing a game that was NOT coded to run on that console and they would not work without the adapter, means just that - it's not a SNES game, it's an adapter to allow Gameboy games to work.
What about Super FX games then ?
The language isn't the same as for the 65816.
Excelent point, Zonomi.
My opinion is: cartridges are hardware (they are not just software, cds are just software, in a way). I don't think it matters what happens inside the cartridge, at all. If you plug the cartridge on the console and the experience of plugging the console to the tv, grabbing the controler is the same as any other game, then why wouldn't it be considered a NES game? I don't see why it shouldn't. Mappers do things the NES doesn't even know about, and yet they are considered NES games.
Technically speaking, NES games consist of software and hardware, so anything that fits inside a cartridge and works without modifications to the console should be considered a proper NES game.
In the days before emulation, I doubt anyone would even argue over this, like nobody ever did with SuperFX SNES games, it was only after ROM files became common that people started expecting the software alone to be enough for running games, but that's only true if the emulator takes care of simulating all the hardware that cartridges can include.
The Super Gameboy obviously doesn't count as an SNES game because it doesn't work like other SNES cartridges, as it takes cartridges labeled with the name of another game console, so the most reasonable thing to do is call it an adapter.
It'd be really cool if ROM files could contain mapper implementations that emulators would somehow interpret. This could simplify emulators and solve compatibility issues, but I don't know how feasible it'd be to simulate the actual electronic signals between the emulated console and the emulated mapper... Emulators could still ignore these mapper definitions and do things the old way, though.
Exactly! The NES emulator would only really need to be programmed to deal with mapper 0 (and properly the NES's own internal workings), which is what the NES hardware does. It "thinks" every cartridge is a mapper 0 game, even this raspberry on a pi project. Which is why I don't see why it wouldn't be considered a NES game.
Zonomi wrote:
What about Super FX games then ?
The language isn't the same as for the 65816.
Super FX and S-DD1 games: The game logic runs on the S-CPU, not the GSU or S-DD1.
SA1 games: Both processors have the same ISA.
tepples wrote:
Super FX and S-DD1 games: The game logic runs on the S-CPU, not the GSU or S-DD1.
Yoshi's Island definitely puts game logic on the GSU, but I don't know how much of it. I remember reading that it put most of the sprite/enemy logic on there, but I can't seem to find a source for that. That Data Crystal link has routines that handle things like object edibility, that I feel wouldn't be on the GSU side unless a big chunk of the game engine were already on the GSU side.
The RAM map confirms this too.
If anyone wants to talk more specifically about how it works, we seem to have a second thread going for that:
viewtopic.php?f=5&t=17409
It exists a way to create something like this?
I do not finish to understand by that it does not publish the diagrams and the software
tom7's hack is ... well, a hack. I wouldn't use it, because the RasPi is basically wholly unsuitable for real-time uses.
(Beyond all the other complaints I've enumerated just about latency, supposedly whatever the GPU is doing causes an unpreventable pause about twice a second for DRAM refresh.)
We actually already had someone come to the forum to describe doing this The Right Way before, previously linked:
viewtopic.php?t=16807
I remember that when I was a kid me and some friends misunderstood an magazine ad and were anxiously waiting for an adapter to use SNES games on our NES clones.
A friend of mine, who also misunderstood another ad, also said that a MegaDrive adapter for the Master System already existed.
Now I know that technically that's possible, altough not practical neither cost efective, be it now or back in the day.