the ModestMapper is an open low-cost rewritable cartridge for the SEGA Master System.
It's based on doragasu's FrugalMapper cartridge and shares many of its features:
- uses a Flash memory chip instead of ROM chips, thus being rewritable
- uses only discrete logic chips, as few of them as possible
- can be programmed and reprogrammed after having being assembled
- supports up to 4 Mbit (512 KiB) but can use 2 Mbit (256 KiB) and 1 Mbit (128 KiB) Flash chips too (currently untested but the design allows for that)
While doragasu's FrugalMapper supports slot-2 SEGA mapper only, the ModestMapper supports both slot-1 and slot-2 SEGA mapper, making it perfect for devkitSMS games that use transparent code bankswitching for example, but can be used for any game requiring slot-1 and slot-2 paging (please read the note on the Words of caution section below).
the ModestMapper implements only a subset of the complete SEGA mapper specifications so:
- slot-0 paging isn't supported, thus the first 16 KiB of the data in the ROM will always be accessible at address $0000-$3FFF
- slot-1 and slot-2 paging are supported, thus any of the 16 KiB blocks of the ROM can be accessible at addresses $4000-$7FFF (slot-1) and $8000-$BFFF (slot-2)
- up to 32 × 16-KiB ROM pages are supported
- advanced SEGA mapper features such as bankshifting or write protection aren't supported
Since address decoding is partial, any writes to addresses $E000-$FFFF (RAM mirror addresses) will work as writes to the SEGA mapper ports $FFFC-$FFFF - see the following table:
writes to | effect
------------------------------------------+----------------------
%111x xxxx xxxx xx00 ($FFFC and mirrors) | _none_ (ignored)
%111x xxxx xxxx xx01 ($FFFD and mirrors) | _none_ (ignored)
%111x xxxx xxxx xx10 ($FFFE and mirrors) | **set slot-1 page**
%111x xxxx xxxx xx11 ($FFFF and mirrors) | **set slot-2 page**
This shouldn't cause any issues provided that the program never writes to RAM mirror addresses (Emulicious' debugger has a very useful feature to detect if this happens).
Also of note is that the slot-1 and slot-2 pages are NOT initialized by the hardware so the SEGA signature that's required by the Master System BIOS to be in the ROM at a certain locations can't be located at $7FF0 but has to be located at $3FF0 instead (devkitSMS has a macro for that: SMS_EMBED_SEGA_ROM_HEADER_16KB) - or at $1FF0.
You can use either Raphnet's SMS cartridge reader/programmer with an updated firmware (tested personally) or you can use doragasu's MegaWiFi programmer (not tested yet but it should work as the ModestMapper is compatible with the FrugalMapper by design).
the ModestMapper cartridge design is Open Hardware, licensed under the CERN-OHL-S license, as it's a derivate work of doragasu's FrugalMapper cartridge
This project wouldn't have ever been possible without doragasu's FrugalMapper and doragasu's invaluable help while designing this. Also a big THANK YOU to the SMS Power! community and in particolar to @undeveloper ❤️