32Mbit (4MB) Cartridge Space Limit
The Sega Genesis maps the cartridge ROM at 0x000000 -> 0x3FFFFF which allows for 32Mbits of cartridge ROM. This was unimaginably large in 1988 but by the mid 90's had become more affordable. Only 1 game is larger than 32Mbit (Super Street Fighter 2) but several games mapped save SRAM in the cartridge space, both using a similar technique.
SRAM Mapping at 0x200000
The majority of games using battery-backed SRAM for save files mapped the SRAM at 0x200000. The choice of this address is pretty clear since the largest power 2 within an address range is always the easiest one to decode (i.e. required less chips on the cart). This splits the Cartridge memory space into 2 16Mbit ranges, perfectly acceptable and of no concern for games equal to or less than 16Mbits. Games larger than 16Mbits and using battery-backed SRAM (i.e. Phantasy Star IV) need extra hardware to deal with the memory overlap.
#TIME Signal
Many Sega Genesis cartridge pinouts found on the web describe pin B31 as "?" or unknown. In fact, pin B31 is strobed on accesses to the 0xA13000 -> 0xA130FF range; quite handy for cartridge hardware. Games using SRAM typically have an ENABLE latch mapped on D0 within the #TIME range. Officially the correct address of this latch is 0xA130F1 but there is no real need to decode further if this is the only implemented hardware within the #TIME range.
- Writing a '0' disables the SRAM
- Writing a '1' enables the SRAM
Games larger than 16Mbits and using SRAM further use this feature:
- Writing a '0' enables ROM in the 0x200000 -> 0x3FFFFF range
- Writing a '1' enables SRAM in the 0x200000 -> 0x3FFFFF range
Officially, the use of RAM/ROM enable is:
| Register Address |
Bit 1 - WP |
Bit 0 - Mode |
| 0xA130F1 |
0 = Write Protect
1 = Writable |
0 = ROM
1 = RAM |
Super Street Fighter 2
Super Street Fighter 2 uses a mapping technique erroneously referred to as "SSF2 Mapper", in fact this mapper is described in Sega documentation and is only referred to as SSF2 because this is the only official release to use the mapper. The mapper IC is designated "SEGA 315-5779".
Super Street Fighter 2 is a 48Mbit (5MB) ROM. It splits the cartridge memory space into 8 banks of 4Mbits (512KB). Bank 0 will always point to the first segment of ROM in order to not interfere with the vector table. Banks 1 to 7 can point to any of the 64 available segments (bits 7 and 6 are always '0') allowing for a ROM size up to 256Mbits (32MB). Super Street Fighter 2 only has 10 segments implemented.
| Register Address |
Start of Range |
End of Range |
| 0xA130F3 (Bank 1) |
0x080000 |
0x0FFFFF |
| 0xA130F5 (Bank 2) |
0x100000 |
0x17FFFF |
| 0xA130F7 (Bank 3) |
0x180000 |
0x1FFFFF |
| 0xA130F9 (Bank 4) |
0x200000 |
0x27FFFF |
| 0xA130FB (Bank 5) |
0x280000 |
0x2FFFFF |
| 0xA130FD (Bank 6) |
0x300000 |
0x37FFFF |
| 0xA130FF (Bank 7) |
0x380000 |
0x3FFFFF |
The above registers are accessed through byte-writes.
Examples:
- If 0x00 is written to register 0xA130F5, then 0x000000 -> 0x07FFFF is visible at 0x100000 -> 0x17FFFF
- i.e. Bank 2 points to Segment 0
- if 0x0A is written to register 0xA130FF, then 0x480000 -> 0x4FFFFF is visible at 0x380000 -> 0x3FFFFF
- i.e. Bank 7 points to Segment 10
Super Street Fighter 2 Front
|
Super Street Fighter 2 Back
|
|
|
|
|