Hey all! It's time again for QBRADQ's mapper discussion of the week. Hurray!
I've had an idea for some cartridge hardware that would be:
So the general idea is that I would have an 8KB ROM at $E000-$FFFF that would serve as a kind of boot ROM, containing common code (like CPU / RAM / Mapper init), mapper interface routines and initial program code loading. I could also put in some sort of "load from a controler-to-usb cable" mode in there too.
Then I would have 32KB of RAM mapped to $6000-$DFFF. This can be used for loading executable code and for general-purpose RAM.
Finally a serial FLASH ROM would be accessed through a register in the $5000-$5FFF range. Mapper interface routines provided in the ROM will copy arbitrary amounts of data from ROM to RAM, and will be able to copy 256-byte pages from RAM to ROM.
Other functions could be bolted on by adding some registers, such as name table mirroring select or bankable PRG / CHR RAM.
The Pros:
The Cons:
This hardware would seem to be a good fit for my current programing approach. I basically load all of the data I need for a given level (including sprite defs, tile set info, etc) into WRAM using routines in the fixed bank, then swap game mode specific code into the low bank.
What are ya'lls thoughts on this?
I've had an idea for some cartridge hardware that would be:
- Built from discrete logic
- Include 32KB of PRG-RAM
- Include 8KB of CHR-RAM
- Support up to 16MB of data
- Support up to 16MB of saved data without requiring a battery
- Self-programmable
So the general idea is that I would have an 8KB ROM at $E000-$FFFF that would serve as a kind of boot ROM, containing common code (like CPU / RAM / Mapper init), mapper interface routines and initial program code loading. I could also put in some sort of "load from a controler-to-usb cable" mode in there too.
Then I would have 32KB of RAM mapped to $6000-$DFFF. This can be used for loading executable code and for general-purpose RAM.
Finally a serial FLASH ROM would be accessed through a register in the $5000-$5FFF range. Mapper interface routines provided in the ROM will copy arbitrary amounts of data from ROM to RAM, and will be able to copy 256-byte pages from RAM to ROM.
Other functions could be bolted on by adding some registers, such as name table mirroring select or bankable PRG / CHR RAM.
The Pros:
- Lots of RAM available
- Reliable (and huge) save storage
- Huge data access
- No need to split data into banks, it's one continuous address space
- Ability to load program code through controller port, no programmer required
The Cons:
- Very slow to load from ROM to RAM (compared to banking in a ROM page)
- Must be able to fit all required data and code into 32KB.
- This could be the birth of the NES loading screen
This hardware would seem to be a good fit for my current programing approach. I basically load all of the data I need for a given level (including sprite defs, tile set info, etc) into WRAM using routines in the fixed bank, then swap game mode specific code into the low bank.
What are ya'lls thoughts on this?