zeta0134 / rusticnes-core

I decided to teach myself Rust by writing an NES emulator. Things quickly got out of hand.
MIT License
34 stars 4 forks source link

iNES 2.0 cartridge headers #5

Open zeta0134 opened 4 years ago

zeta0134 commented 4 years ago

We should detect and support the extended features of the iNES 2.0 header: https://wiki.nesdev.com/w/index.php/NES_2.0

Additionally, we should probably clean up the header details that are currently passed into the mapper. Some mapper hardware has features that cannot be fully defined by iNES 1.0 headers, and in these cases it would be ideal to work around the lack of support by implementing saner defaults. For example, MMC5 could ignore iNES 1.0's PRG RAM size and use 64k instead, as a compatability hack, but still accept the PRG RAM details provided by an iNES 2.0 header.

pinobatch commented 3 years ago

In particular, MMC3 is limited to 8 KiB CHR RAM. This causes scrambled graphics in Haunted: Halloween '86, which uses 32 KiB. The mmc3bigchrram test in little things produces the following result:

This system supports 8 KiB
CHR RAM but not 32 KiB.
Bug the author of this
emulator or mapper pack to
add support for the NES 2.0
header, or use a WIP
version of FCEUX.