MMC3 hardware specification: https://www.nesdev.org/wiki/MMC3 Mapper base: https://github.com/gargakshit/nes/blob/master/src/mappers/mapper.h MMC0 mapper (use this as an architectural example, MMC0 doesn't have memory banking): https://github.com/gargakshit/nes/blob/master/src/mappers/mmc0.cpp MMC3 may fire hardware IRQs, you'll need to modify the mapper base and the system bus. You will also need to modify the cart loader to use MMC3 when it finds a 0x03 in the cart header.