So I was looking for something to do with the NES and decided to make a MultiCart menu using MMC1. It is complete and doesn't appear to have any issues so I wanted to share it. It uses 512kb PRG. It's possible to fit more games that way than using CHR-ROM.
The download contains an empty (no games included) MultiCart.nes file and a MultiCart.exe for Windows which is a command line program to insert NROM games into the MultiCart.nes file.
Get it here.
Nice job. I'll try it when I get time.
So it can fit 11 NROM games on one SUROM. But why 11? 512 KiB / 40 KiB per game = 12.8 games, and the menu could probably fit in the 0.8. Do you plan to add CHR compression to squeeze in another game or two, or perhaps add support for NROM-128 to fit more games? Or do you plan to make a version that can piggyback on an existing SNROM game like
Forbidden Four?
The reason I didn't go for 12 was because I was unclear on the power up state of the MMC1. I wasn't sure if the high PRG (for 256k paging) is in a known state. So the menu is duplicated into the last bank of both 256k pages. If it were not, then 12 could fit.
So it's not a matter of space so much as it is available 32K pages. If MMC1 is known to always have the first or last 256kb page selected on power up I might see about adding a 12th slot. I don't plan any CHR compression or anything that would complicate the storage and loading.
Your Forbidden Four is part of what inspired me to try doing this. But my goal was to fit as many NROM games onto one cartridge as possible rather than pairing them with a MMC1 game. That's why I used PRG-ROM and CHR-RAM as CHR-ROM would have less 32K pages available allowing only 7 games. Though that would have simplified the loader code even more by just setting up bankswitching and not copying CHR data.
Quote:
If MMC1 is known to always have the first or last 256kb page selected on power up I might see about adding a 12th slot
I'm not exactly sure, but I think the MMC1A, MMC1B, MMC1B2 and MMC1B3 are guaranteed to have the last PRG bank switched at $c000-$ffff, and that the original (and very rare) MMC1 don't.
MottZilla wrote:
The reason I didn't go for 12 was because I was unclear on the power up state of the MMC1. I wasn't sure if the high PRG (for 256k paging) is in a known state. So the menu is duplicated into the last bank of both 256k pages. If it were not, then 12 could fit.
SUROM has 32 banks, each 16 KiB in size. Assume it is random whether 15 or 31 is switched into $C000-$FFFF at power on. You can still use 0-11 for the first six games and 12-14 for their CHR. Use 16-27 for the other six games and 28-30 for their CHR. This frees up banks 15 and 31 for two copies of the menu, or one copy of the menu in 15 and a boot stub in 31 that redirects execution to 15.
I made a 256kB multicart one time using MMC1, when I ran it on the a cart with MMC1A though it would start in random 32kB banks (which would make the games run, but without loading CHR-RAM since the menu was bypassed). It needed the reset vectors changed but I didn't bother.
Tepples, I see what you mean to be able to get a 12th game on there. I might look into doing that.
So no one is sure though about SUROM boards and if the 256k page number resets to a known value? Could someone test to find out the behavior?
Hmm, the link is dead. Is it possible to post a mirror, if someone still has a copy, please?
Nevermind, I found it!
http://thegaminguniverse.org/ninjagaide ... ebrew.html
Interesting, great work =) Is there a way to get rid of the extra "Slot Empty" messages if I don't use all 11 slots?
You can put empty files with no title to blank them out. Then you'd have to edit the bit of code to allows the cursor to move down to those slots to not be able to move down as far.
MottZilla wrote:
You can put empty files with no title to blank them out. Then you'd have to edit the bit of code to allows the cursor to move down to those slots to not be able to move down as far.
I see. The blank part would not be a problem. Editing the code would, as I have no idea how to do any of that kind of thing lol. How would I blank it out with no rom file?
Well you don't need a empty file actually. You just need to use a hex editor to remove the extra rom titles in the menu. The code change would be to hex edit and change $3c91c from $0A to a lower number. Subtract however many games you want to remove from the list. If you go up just a little bit from there in the ROM file you can see ASCII text for the menu game titles. You can just replace unused slots with spaces (hex value $20) and you will have empty space there.