Nes Homebrew Multi-Rom Cartridge Idea

Are you new to 6502, NES, or even programming in general? Post any of your questions here. Remember - the only dumb question is the question that remains unasked.

Moderator: Moderators

Post Reply
Beechris84
Posts: 5
Joined: Sun May 11, 2014 10:21 am

Nes Homebrew Multi-Rom Cartridge Idea

Post by Beechris84 »

Hello,

I am interested in asking anyone with technical knowledge about a query regarding an idea I had.
Please be warned: I am by no means proficient on this subject and lack even basic technical knowledge.

My query is this:

I have noticed in homebrew development, devs are limited by how many tilesets, code etc... their cartridges can have for a single game. I understand that utilising different mappers gives more options but even with these, the limitations are evident for anyone wishing to have long cutscenes, variety in locations (meaning different tile sets), variation in music etc...

For many, I am sure these limitations are the reason they like to create projects for the Nes, but what about those who want to overcome this?

I thought about the idea of making a game which uses multiple cartridges. The idea is reminiscent to the days of having multiple floppy disks or CDs. Yet I don't particularly like the idea of having to carry around 20 cartridges and being like "play my game" lol

I wondered if it were possible for the ability to utilise an everdrive type of hardware to perform this task of making a 'multi-rom' game. The idea of having a fluid game experience without the need to change cartridges etc...

If I am correct, the everdrive has a firmware built into the cartridge which enables things like save states and the game selection menu etc... What if one was to make a similar device catered specifically to a single game.

A device which could seamlessly use multiple rom images and has the ability to flash specific roms when needed.

So for example - the 'multi-rom' cart boots up the title screen etc... It reads the previous save information meaning a player can resume their game or delete this save data by pressing new game.
Once an option is selected, the part of the game needed (the correct rom file) is flashed or however it would be done and the player is effectively playing that rom.
As they progress, the rom will have someway of letting the firmware know to load up the next rom file at the specific needed point and so on.
If there would be a delay in timing - for example how long the rom file takes to flash, then a simple 'now loading' screen could be used.

If this is a possible reality, it would mean we would be able to create lengthy nes games which used much more flexibility in their restrictions.


Please let me know if I am crazy.

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

Re: Nes Homebrew Multi-Rom Cartridge Idea

Post by tepples »

That's similar to the "FDS style NES cartridge" thing I occasionally see suggested here. The PCB would have these components on it:
  • CIC: Microcontroller to authenticate to the NES
  • 128Kx8 PRG RAM
  • 32Kx8 CHR RAM
  • SPI flash memory, such as a microSD card that can be in the gigabytes
  • IPL: Microcontroller or tiny boot ROM to read the first sector from flash to RAM
  • CPLD to switch banks of RAM and efficiently access the SPI flash, and generate IRQs if a microcontroller isn't already doing that
  • Level shifters to get the 3.3 V circuitry playing nicely with the 5.0 V NES Control Deck
The boot process would probably resemble that of an Apple II or IBM PC.
  1. The initial program loader (IPL) loads the first sector from the flash memory into RAM.
  2. The first sector loads the boot ROM from the root directory of the flash memory into RAM and jumps to it.
  3. Each ROM chain-loads the next ROM or loads files from flash, much as FDS games do.
What makes it slightly cheaper than an EverDrive is that because all ROMs in a set can use the same mapper, the mapper can be a CPLD instead of an FPGA. But another cost center for such a design is paying people to generate enough original material (other than sampled audio or full-motion video) to fill more than half a megabyte in the first place.
User avatar
Nioreh
Posts: 115
Joined: Sun Jan 22, 2012 11:46 am
Location: Stockholm, Sweden

Re: Nes Homebrew Multi-Rom Cartridge Idea

Post by Nioreh »

There is really no need to go to such lengths. Big flash chips are easily available now, and you can create a 4 megabyte game without much trouble. Plausibly even bigger with some creativity.
Beechris84
Posts: 5
Joined: Sun May 11, 2014 10:21 am

Re: Nes Homebrew Multi-Rom Cartridge Idea

Post by Beechris84 »

Could you direct me to the best place for someone just starting to learn about this?

I believe if I were able to use a custom flashboard like RetroUSB's 'A winner is you' does, I might have found an easier solution.

Ideally, the reason I bought up multiple rom images (as in my original post) is because I wished to use mapper 30 and the new development tool called Nes Maker. I figured using 256k roms collected would be easier (for a beginner) and allow me the luxury of having a software specifically catered to the development of Mapper 30 rom files.
User avatar
pubby
Posts: 583
Joined: Thu Mar 31, 2016 11:15 am

Re: Nes Homebrew Multi-Rom Cartridge Idea

Post by pubby »

There aren't any memory limitations if you're using custom hardware. It's easier to build a simple board with tons of ROM space than it is to build one with Everdrive-like features.

UNROM can handle 4 MB. If NESmaker supports UNROM just make one of those. That's a ton of space.
User avatar
rainwarrior
Posts: 8731
Joined: Sun Jan 22, 2012 12:03 pm
Location: Canada
Contact:

Re: Nes Homebrew Multi-Rom Cartridge Idea

Post by rainwarrior »

Mapper 2 emulator implementation often extend the register up to 8 bits (4 MB), but the actual UNROM / UOROM only had a 4 bit latch (256 KB).

Mapper 30 is a superset of UNROM / UOROM, but not of mapper 2. It only has 5 bits to work with (512 KB) and the other 3 bits in the register are reserved for other things.

Getting NES Maker to support more than 512 KB is probably not something they have planned for, but you could make the request.

The other problem is that most common development carts only go up to 512 KB PRG, including the PowerPak and Everdrive, and the one that would come with NES Maker.

You can indeed use the PoewrPak or Everdrive's main storage to read information from, though, but that involves a bunch of custom mapper work, etc.

Without going as far as reading from a CF/SD card, the music cart "A Winner Is You" is still the biggest one I know of: (64 MB)
https://www.retrousb.com/product_info.p ... cts_id=143
User avatar
thefox
Posts: 3134
Joined: Mon Jan 03, 2005 10:36 am
Location: 🇫🇮
Contact:

Re: Nes Homebrew Multi-Rom Cartridge Idea

Post by thefox »

rainwarrior wrote:You can indeed use the PoewrPak or Everdrive's main storage to read information from, though, but that involves a bunch of custom mapper work, etc.
At least on PowerPak you can get by without a custom mapper, I have a proof of concept here: viewtopic.php?p=81216#p81216
Download STREEMERZ for NES from fauxgame.com! — Some other stuff I've done: fo.aspekt.fi
Post Reply