Sega Genesis rom/sram address mapping
Re: Sega Genesis rom/sram address mapping
Byte-wide access only (try doing a word access on an odd address and the 68000 will yell at you at the very least). Though looking again at Tiido's diagram, it *is* just using the bottom bit... (honestly I don't know any game that actually cares about the SRAM protection anyway)
Re: Sega Genesis rom/sram address mapping
Yeah I was just trying to get a 32Mbit cart to run just as one chip instead of needing two of them. I ordered a few 74HC08 chips, so I'll try it out hopefully next week.lidnariq wrote: Maybe I'm confused, what exactly are you trying to do?
Is it "use a single 4MiB/2MiW ROM on a board while retaining this battery-backed save RAM" ?
In that case, you'd use either socket—as far as I know, all of D0…D15 and A1…A19 are connected to both—and connect the new PROM's /CE from the output of the 74'08. You may also need to connect A20 and A21 from the cartridge edge to the PROM.
i.e. ROM1 has /CE
and ROM2 has /CE
and you want something that is low if either are low.
Thanks again for your help guys!
Re: Sega Genesis rom/sram address mapping
Not an expert in electronics but a random thought: with a flip-flop (for the $A130xx register) and a 4-way multiplexer, couldn't you just get away with using the multiplexer as a decoder?
00 = low half of ROM (enable ROM)
01 = low half of ROM (enable ROM)
10 = high half of ROM (enable ROM)
11 = SRAM (enable SRAM)
(where bit 0 is the latch and bit 1 is the MSB of the address)
Although I'd imagine that if there wasn't something wrong with this that they'd have probably used that method for starters (unless 4MB ROMs were more expensive than two 2MB ones back then... I know many games are 2MB+1MB, including some games using SRAM, and in that case you indeed need two ROMs).
00 = low half of ROM (enable ROM)
01 = low half of ROM (enable ROM)
10 = high half of ROM (enable ROM)
11 = SRAM (enable SRAM)
(where bit 0 is the latch and bit 1 is the MSB of the address)
Although I'd imagine that if there wasn't something wrong with this that they'd have probably used that method for starters (unless 4MB ROMs were more expensive than two 2MB ones back then... I know many games are 2MB+1MB, including some games using SRAM, and in that case you indeed need two ROMs).
Re: Sega Genesis rom/sram address mapping
Looking at the depopulated boards at romlab ("ps4cart1", "ps4cart2"), the schematic does seem to be what TµEE drew.
Only problem I can see with using a '153 in this way is that we have three inputs (/CE0, Q0, A21), and when the '153's /E input is deasserted it drives all its outputs low, not high: the opposite of what we need.
Only problem I can see with using a '153 in this way is that we have three inputs (/CE0, Q0, A21), and when the '153's /E input is deasserted it drives all its outputs low, not high: the opposite of what we need.
Re: Sega Genesis rom/sram address mapping
Ok so parts came in, and TmEE's design works great! The rewiring makes it not worth it, but it proves the concept works. So, if its really just changing how the 74'74 and 74'139 is wired, why didn't Sega do this? It would have cut down on the cost of the extra maskrom and PCB size (slightly), unless of course 32Mbit roms were just too expensive back then.
Thanks for the all the help guys!
Thanks for the all the help guys!
Re: Sega Genesis rom/sram address mapping
Very likely the reason. I already mentioned that many games were actually 3MB (basically 2MB+1MB).getafixx wrote:unless of course 32Mbit roms were just too expensive back then.
Re: Sega Genesis rom/sram address mapping
I don't recall too many Genesis games being 32 megabits anyway. There are some but there are far more 24 megs and less. I had a list once as I was curious because you could find some older Copier units that had 24 megabits of DRAM but not as many with 32.
Sonic 3D Blast, Ultimate Mortal Kombat 3. Those are the only two games that spring to mind that were that large on Genesis. Oh and then you have Super Street Fighter 2 which was 40 megs I think.
There are far more that are 24 megs. Perhaps because the SNES seemed to be supported longer, there are alot more 32 meg games that could be listed for it.
Sonic 3D Blast, Ultimate Mortal Kombat 3. Those are the only two games that spring to mind that were that large on Genesis. Oh and then you have Super Street Fighter 2 which was 40 megs I think.
There are far more that are 24 megs. Perhaps because the SNES seemed to be supported longer, there are alot more 32 meg games that could be listed for it.
-
- Posts: 252
- Joined: Fri Jun 24, 2016 4:20 pm
Re: Sega Genesis rom/sram address mapping
Sorry to bump such an old thread, but is there a good resource for Sega Genesis memory mapping anywhere? I'm having a hard time finding dev manuals or anything like that.
Judging by the posts I've seen, it looks like the logic for games larger than 2MB to just skip the SRAM section in the beginning of the second 2MB section of memory, from $200000 to $20FFFF. Does this mean there's a garbage section of memory on the low byte regions of the PROM in this area for every game larger than 2MB? It looks like the logic just disables reading from the second 2MB chip, but doesn't do anything to be able to access this section of memory stored on the cartridge.
So is the max size of a game then actually a bit less less than 4MB? And the max SRAM a game could theoretically use is 64KB, even though the most (that I've seen so far anyway) is 32KB?
Also, just for my clarification to make sure I'm thinking correctly - $200000 is the first address of the SRAM - is this the low byte only? Because $200000 addresses directly to the EPROM would return sixteen bits, not 8, implying $200000 is the start of the second 4MB, not 2MB. And I know the 256K SRAM for the Genesis is only an 8 bit bus, and as was stated before, it uses the low byte. This means something like $200000 is low byte, $200001 is high byte? That's the even/odd nomenclature I've seen, right? I'm assuming this is reflected in the wiring of the PROM to the Genesis.
Judging by the posts I've seen, it looks like the logic for games larger than 2MB to just skip the SRAM section in the beginning of the second 2MB section of memory, from $200000 to $20FFFF. Does this mean there's a garbage section of memory on the low byte regions of the PROM in this area for every game larger than 2MB? It looks like the logic just disables reading from the second 2MB chip, but doesn't do anything to be able to access this section of memory stored on the cartridge.
So is the max size of a game then actually a bit less less than 4MB? And the max SRAM a game could theoretically use is 64KB, even though the most (that I've seen so far anyway) is 32KB?
Also, just for my clarification to make sure I'm thinking correctly - $200000 is the first address of the SRAM - is this the low byte only? Because $200000 addresses directly to the EPROM would return sixteen bits, not 8, implying $200000 is the start of the second 4MB, not 2MB. And I know the 256K SRAM for the Genesis is only an 8 bit bus, and as was stated before, it uses the low byte. This means something like $200000 is low byte, $200001 is high byte? That's the even/odd nomenclature I've seen, right? I'm assuming this is reflected in the wiring of the PROM to the Genesis.
Re: Sega Genesis rom/sram address mapping
Games larger than 2 MiB that have battery-backed SRAM have a mapper to switch $200000-$3FFFFF between the upper 1 or 2 MiB of ROM and the SRAM.
The 68K architecture is big-endian: $1234 is stored as 12 34. This means $200000 is high and $200001 is low.
The 68K architecture is big-endian: $1234 is stored as 12 34. This means $200000 is high and $200001 is low.
-
- Posts: 252
- Joined: Fri Jun 24, 2016 4:20 pm
Re: Sega Genesis rom/sram address mapping
Ok I got you there, that means every other address space from $200000 to $20FFFF is dedicated to SRAM right? $200001, 3, 5, etc. (low end of word) goes to SRAM, the evens are part of ROM.
So in actuality, it's FFFF divided by 2, giving 256Kbit of SRAM space, right? That's the part I forgot.
Is the memory in the PROM at address $200001 unused then, because that address is dedicated for SRAM?
So in actuality, it's FFFF divided by 2, giving 256Kbit of SRAM space, right? That's the part I forgot.
Is the memory in the PROM at address $200001 unused then, because that address is dedicated for SRAM?
Re: Sega Genesis rom/sram address mapping
No. For games larger than 2MB, the game has to change at run-time whether it can access RAM or ROM. The normal wiring doesn't provide the ability to access ROM and RAM in an interleaved manner.poorstudenthobbyist wrote: ↑Thu Feb 13, 2020 5:48 pm (low end of word) goes to SRAM, the evens are part of ROM.
For OEM PCBs, I have been told that a number of cartridges also wire the ROM in "reverse-endian" manner (i.e. JEDEC D0 is connected to 68k D8 and vice versa), although the RAM is still connected to D0-D7.
It turns out the 68k in the Genesis doesn't even have a A0 pin.So in actuality, it's FFFF divided by 2, giving 256Kbit of SRAM space, right? That's the part I forgot.
Re: Sega Genesis rom/sram address mapping
Write one value to $A130F1, and $000000-$3FFFFF is ROM. Write another value, and $000000-$1FFFFF is ROM and $200000-$3FFFFF is RAM.
Further reading: "Saving progress with SRAM: Games larger than 2MB" and "MOVEP instruction: Using movep to read/write SRAM" on Plutiedev
Further reading: "Saving progress with SRAM: Games larger than 2MB" and "MOVEP instruction: Using movep to read/write SRAM" on Plutiedev
-
- Posts: 252
- Joined: Fri Jun 24, 2016 4:20 pm
Re: Sega Genesis rom/sram address mapping
Oh! So basically, the region between $200000 and $20FFFF can access RAM OR ROM then, based on the code? And anytime the value at $A130F1 is changed to switch between the RAM or ROM in this address space, the /TIME line is pulsed, which is what the logic in the diagrams above takes care of. Right?tepples wrote: ↑Thu Feb 13, 2020 7:07 pm Write one value to $A130F1, and $000000-$3FFFFF is ROM. Write another value, and $000000-$1FFFFF is ROM and $200000-$3FFFFF is RAM.
Further reading: "Saving progress with SRAM: Games larger than 2MB" and "MOVEP instruction: Using movep to read/write SRAM" on Plutiedev
I feel very silly now. I will blame it on reading the thread on a small phone screen, mostly in the morning haha
*insecure chuckle*
I just started reading about Genesis games yesterday. Seems like they're a bit easier to deal with than SNES.
-
- Posts: 252
- Joined: Fri Jun 24, 2016 4:20 pm
Re: Sega Genesis rom/sram address mapping
I made this circuit but I'm having some trouble holding some saves - it looks like the trend is games that are greater than 16 Mbit do not have any issues, but 16 Mbit and less do. I don't see why that would be a problem here, though. I'm a bit stumped.