Now I want to make a platformer similar to the Super Mario series, intended to be ROM-hacker-friendly. The player can pick up coins and power-ups from levels, but I don't want the player to be able to grab an item, move the camera two screens away, and then come back and grab the same item again.
But is this feasible without PRG RAM? Eventually I (or a ROM-hacker using my engine under license) might want to put a game on a cart to sell, and I'd imagine that the parts for SNROM-clone (MMC1 CPLD, extra 6264) are a lot more expensive than the parts for UNROM-clone (74HC161, 74HC32). Or should I just bite the bullet and spring for PRG RAM?
Several platformers for NES that have backtracking (Zelda II, Metroid, Kid Icarus, SMB2, SMB3) have 8 KiB of PRG RAM on the cart to remember what coins have been collected, which ? blocks have been opened, which bricks have been broken, etc. Games without PRG RAM either have a tiny level (Lode Runner, Crystal Mines), or lack backtracking (e.g. Super Mario Bros., Contra, Rainbow Islands, Battletoads), or have the vast majority of items comd from defeated enemies (e.g. Mega Man series). Gregg Iz-Tavares and Dan Chang recognized this in the the M.C. Kids post-mortem: "Without the extra RAM, we would have most likely have been forced to redesign the game either so levels didn't have to be modifed or so that it only scrolled in one direction."
Here's what the memory map looks like so far:
- 0000-00FF: zero page, including state of level decoder
- 0100-019F: VRAM transfer buffer
- 01A0-01FF: stack
- 0200-02FF: OAM buffer
- 0300-03FF: unknown, much of it to be occupied by the music engine
- 0400-05FF: state of 16 active objects
- 0600-07FF: 32x12 metatile decoded section of map centered on player