Romhacking.net

Romhacking => ROM Hacking Discussion => Topic started by: tygerbug on August 14, 2022, 09:46:04 PM

Title: Framework to make multicarts? NESMaker 30, NROM 0, Family Basic O mappers?
Post by: tygerbug on August 14, 2022, 09:46:04 PM
I'm wondering if there is any kind of ASM (or other) framework out there for assembling NES/Famicom multicarts as ROMs. Especially ones which would result in a common mapper being used, compatible with common emulators.

As in: a script or application or framework which could assemble many mapperless (40k ish) NROM NES ROMs into a single ROM, Or alternately could assemble 2k or 4k mapperless Family BASIC minigame NES ROMs (which all use the same graphics) into a single ROM.

Or alternately could assemble NES ROMs of varying sizes into a single ROM, with more control over what mapper is used for the whole thing. Let's say, a bunch of Mapper 3 games, or a bunch of original Mapper 30 games (NESMaker).

If I were making ROMhacks and original NES games, it would be at least interesting to combine several of them into one Multicart ROM. This could also be useful for combining several related minigames, which might not be as interesting on their own, into one coherent idea.

Such as, let's say, original minigames made in NESMaker.

Alternately: Recently, ozidual of Gaming Alexandria and others have been preserving games made in Famicom Family Basic back in the 80s and 90s. This was a keyboard/ programming add-on for the Famicom which allowed for 2k of programming RAM, or 4k in the 1985 V3 update. Programs for Family Basic were published in magazines at the time and on audiocassettes. These can, through a convoluted process (STTONES), be typed up and converted into standalone NES ROMs as minigames, in a standardized format.

These games all use the same graphics banks (unless hacked). The amount of code is only about 2k or 4k plus a background nametable. (Possibly two, although I've yet to see an example of that.) This is compiled from about 100 lines of code or less.

(Family Basic V2 was copied as GBASIC and FBASIC on the knockoff Subor and Dendy Famiclone computers, and most "educational" unlicensed multicarts included Family Basic in some form as the main attraction, such as Bravesoft Windows 2000.)

These games are not all that interesting as standalone releases but would work well as a multicart combining many examples of what Family Basic can do. In this case every game would use the same graphics, and much of what's in the ROM wouldn't be needed (theoretically) as it's the same each time. Theoretically this could use a more common Mapper.

We all know those pirate multicarts which turn up as ROMs or as their own systems. Here's an example ...

https://bootleggames.fandom.com/wiki/Famicom_Yarou

Famicom Yarou 54 contains 54 games, mostly hacked versions (by Inventor) of early mapperless NES NROM games, and a few bootleg originals by Nice Code, which seem to be 64kb in their original form but also run off of two CHR graphics banks like a 24k-40kb game. There is a bunch of empty CHR space in the ROM code.

The menu seems to just set which PRG and CHR banks are being used.

It would be possible (and straightforward) to copy/paste the original ROM data, minus the header, into this multicart ROM, replacing their weird hacked versions of the games, or to paste in games of the same size. The original games' PRG data appears in the first half of the ROM in various banks, and the CHR data appears toward the end somewhere in various banks.

Other multicarts use games of varying size, and this one seems to do that to an extent.

Basically I'm looking for a framework which would make it easy to compile minigames or NES ROMs into a multicart, with a multi-page menu and title screen artwork.

There's mulitcart NES Maker 1.8 (not to be confused with the current game creation software) ...
https://drive.google.com/file/d/17zpooTqVEDf_KD00443woAkGa89JI9ws/view?usp=sharing

.... which was VTXX based. I am not aware of any emulator which can even run these, although Nintendulator would have been my guess (and says it lacks a header). They seem to be trying to fit the format of various existing 100+ in one Famiclone systems.

Obviously a multicart has unusual Mapper needs so maybe a hack of existing multicarts is the easiest way to go.

I was hoping someone had made an ASM framework, and there is one for CoolBoy/CoolGirl and designed to fit pretty much any common game, but it uses an unusual Mapper, which requires the CoolBoy/CoolGirl hardware or a modded version of FCEUX.
https://clusterrr.com/coolgirl/
https://github.com/ClusterM/coolboy-multirom-builder
https://github.com/coolgirl-multicart/coolgirl-multirom-builder
Title: Re: Framework to make multicarts? NESMaker 30, NROM 0, Family Basic O mappers?
Post by: tygerbug on August 24, 2022, 04:13:59 AM
https://www.romhacking.net/games/4217/

I got this message (edited):

"The only other thing I can think of is if you used the source code from the Supervision 52-in-1, which was also used for Action 52. As for something on a common mapper, there's the 11-in-1 by "MottZilla" which runs on MMC1 and can include 11 NROM Mapper 0 games. There's not really any way to customize it, it's just a plain selection menu.
"
Title: Re: Framework to make multicarts? NESMaker 30, NROM 0, Family Basic O mappers?
Post by: MottZilla on August 29, 2022, 04:42:12 AM
Making a multi-cart for the NES can get complicated. Right away you have to decide on what sort of hardware you want to use. My very old 11-in-1 was I think a fairly good idea to use the extremely common MMC-1 hardware to pack a bunch of NROM games into one cartridge with a simple and functional menu.

I made other NES multi-cart menus for fun as well. One of them I played some music from I believe Batman Returns while a scrolling background of Super Mario Brothers went by near the bottom of the screen and you had a selection menu above that.

But back to making a multi-cart, there isn't really any standard hardware that stands out for anything complex. And you need to think about what you are doing this for. If you plan to make your own actual cartridge, your technical ability is the only limit. Nothing is stopping you from having a multi-cart with massive amounts of memory and capability.

On the note of pirate multi-cart mappers/hardware, there isn't much sense in using them unless you have a supply of them. Even then you could possibly come up with something better to put on programmable logic. Or if you don't need anything too complicated you could make something up on a board using discrete logic ICs.

As for the menu, it's just another NES program. It's a simple menu to choose a game and then the program has to write your control registers and start the game. Nothing that hard to do. If you want a builder program to be able to easily customize the selection and have unique artwork, that is a project in itself but it's nothing that couldn't be designed for. I don't think there is any existing public project to do this as again whatever hardware you use is going to need to be custom. And emulator support being widespread is unlikely unless you cloned a well supported pirate/multicart mapper which seems like a lot of effort when you could come up with something better with that effort.
Title: Re: Framework to make multicarts? NESMaker 30, NROM 0, Family Basic O mappers?
Post by: tygerbug on August 29, 2022, 07:06:52 AM
 Thanks for the thoughtful reply.

 Your old multicart framework, although NROM only, is the most straightforward I've seen publicly. And uses a common mapper.

 The 52-in-one cart - which is also mostly NROM - requires some additional programming changes for the 10 titles which exceed Mapper 0 specs. It does use a widely supported mapper, probably because Action 52 was a thing.

  Using an unusual / unique Mapper was the choice of the Coolboy / Coolgirl framework, and seems common for solving these problems.

  Doesn't help much in emulation (although a modded FCEUX supports it).


EDIT:
  Here are some notes on how to load a full CHR for menu graphics in Mottzilla's 11 in 1 Multicart, based on his instructions.

load: 3C818 start (D0?), 3C838 end (E0?), 3C820 0 instead of 2

  Some other hackery can be done to draw a full screen of graphics but I don't have the notes on that here.

  Also, annoyingly, the bit of the screen which includes Mottzilla's credit was obfuscated to make that credit hard to remove ... Reversing the tile assignments and capping them at 8 rows, so that 00 becomes 7F. That's hard to work around. Not impossible, but hard.

EDIT: Turns out this was handled fairly easily last time using a reversed TBL file, and copy/pasting the result as ASCII.