NES 2.0 Mapper 256

From Nesdev wiki
Jump to: navigation, search

NES 2.0 Mapper 256 is used for games using the bankswitching behavior of the OneBus Famiclones. The UNIF board names are UNL-OneBus, BMC-OneBus and UNL-DANCE.

Registers

To emulate ROM images using mapper 256, one must support bankswitching, nametable mirroring selection and IRQs using both the VTxx native registers (see the VT02+ PRG-ROM Bankswitching and VT02+ CHR-ROM Bankswitching articles for details) as well as the MMC3 compatible registers.

Single and split PRG/CHR address space

On physical hardware, bankswitching by the VTxx console itself can only be used if the cartridge uses OneBus addressing, signalled by connecting certain pins on the cartridge connector to Vcc/GND, because only in OneBus mode are the CHR address lines repurposed as higher-order address lines for the single address space. Therefore, regular OneBus ROM images will only contain PRG ROM and no CHR ROM, and PRG ROM ($41xx) and CHR ROM ($201x) bankswitch registers apply to the same address space.

However, ROM images converted from Waixing's WXN format will have both PRG and CHR ROM, yet use the VTxx-native bankswitch registers and/or register address mangling. These images cannot be run unchanged on physical hardware, and were intended to be run by Waixing's proprietary VTxx emulator found on several 32-bit plug-and-play consoles. For simplicity, mapper 256 is also used for such ROM images; to emulate them, simply apply the PRG ROM ($41xx) and CHR ROM ($201x) bankswitch registers to the respective separate address space.

Register address mangling

Several plug-and-play consoles use a simple protection scheme intended to prevent interchanging the ROM data between different consoles. The protection scheme works by simply swapping the addresses of the bankswitch registers. Some patterns only change the VTxx-native register addresses, others apply to the MMC3 compatibility registers as well. Submappers have been allocated to denote the type of register address mangling:

Submapper # Name PPU bank affected by ... CPU bank affected by ...
$2012 $2013 $2014 $2015 $2016 $2017 $8000.0 $8000.1 $8000.2 $8000.3 $8000.4 $8000.5 $4107 $4108 $8000.6 $8000.7
0 Normal $1000 $1400 $1800 $1C00 $0000 $0800 $0000 $0800 $1000 $1400 $1800 $1C00 $8000 $A000 $8000 $A000
1 Waixing $1400 $1000 $0800 $0000 $1C00 $1800 $1C00 $1800 $1400 $1000 $0800 $0000 $8000 $A000 $8000 $A000
2 Power Joy Supermax $1000 $1400 $1800 $1C00 $0000 $0800 $0000 $0800 $1000 $1400 $1800 $1C00 $A000 $8000 $A000 $8000
3 Zechess/Hummer Team $0800 $0000 $1C00 $1800 $1000 $1400 $0000 $0800 $1000 $1400 $1800 $1C00 $8000 $A000 $8000 $A000
4 Sports Game 69-in-1 $1800 $0800 $1000 $0000 $1C00 $1400 $0000 $0800 $1000 $1400 $1800 $1C00 $8000 $A000 $8000 $A000