I'm having one of those moments where you think you know something, then the more you think about it the more you think you don't know anything, and I keep going around in circles and spent too many hours googling without solid results, so I thought I'd just ask the experts. My background is mainly in Electrical Engineering, but I also have a lot of experience in programming, including Assembly. So I can understand a decent bit of this.
I'm currently writing up an entry on my website to help people understand how the SNES cartridge works, without getting into the muddy details of it all, since I doubt I'd get everything correct anyway, and I still feel like I'm somewhat of a beginner myself despite keeping this as a main hobby of mine for over 2 years now. But I'm hung up on how to word a specific paragraph (that I could probably leave out but it'll bug me if I do).
Firstly, what's the difference between shadowed memory and mirrored memory? I see these terms around a lot online. I'm pretty sure mirrored memory just means it's copied into a different bank to be used by the SNES without having to change banks, benefiting the programmer. And I've also seen that only some memory areas can be used as FastROM. But I'm still unsure about what shadowed memory is - or if I should even care about what it is.
My main question though is how the SNES memory map correlates to the wiring of the EPROM. I get how the mappers work for enabling the RAM and everything, that part I can understand. But I'm thinking about the address lines on the EPROM and how they connect to the cartridge connector. According to the HiROM memory map I found that tepples made (which really cleans up what I see in the manual), the ROM is stored from banks 0xC0 to 0xFF.
BA7 isn't connected to the EPROM, though. I get that this is the SNES memory map, and not the cartridge, and I see that the total area is 4MB, but how does the SNES know to move the ROM data to these later banks, instead of treating it like it was in LoROM mode? I know the header defines what Mode the ROM should be read in, does that mean there are instructions internal to the SNES that tells it where the data should go? And how does the SNES retrieve this data at the correct positions? If the SNES is addressing say 0x70:FFFF, that region is blank in the memory map (or at the very least, not allocated as ROM storage), but the EPROM will still have game information at that address. Or does the SNES know to read the information from the EPROM at this address, and then move it to the corresponding main ROM area in the 0xC0-0xFF banks?
I hope this is making sense. And I hope it's something really simple I'm overlooking. Once I'm done writing up my guide, I was going to post it here for some critique, but I feel like I need to understand this better first. Thanks in advance, and I hope I'm not making a fool of myself
I'm currently writing up an entry on my website to help people understand how the SNES cartridge works, without getting into the muddy details of it all, since I doubt I'd get everything correct anyway, and I still feel like I'm somewhat of a beginner myself despite keeping this as a main hobby of mine for over 2 years now. But I'm hung up on how to word a specific paragraph (that I could probably leave out but it'll bug me if I do).
Firstly, what's the difference between shadowed memory and mirrored memory? I see these terms around a lot online. I'm pretty sure mirrored memory just means it's copied into a different bank to be used by the SNES without having to change banks, benefiting the programmer. And I've also seen that only some memory areas can be used as FastROM. But I'm still unsure about what shadowed memory is - or if I should even care about what it is.
My main question though is how the SNES memory map correlates to the wiring of the EPROM. I get how the mappers work for enabling the RAM and everything, that part I can understand. But I'm thinking about the address lines on the EPROM and how they connect to the cartridge connector. According to the HiROM memory map I found that tepples made (which really cleans up what I see in the manual), the ROM is stored from banks 0xC0 to 0xFF.
BA7 isn't connected to the EPROM, though. I get that this is the SNES memory map, and not the cartridge, and I see that the total area is 4MB, but how does the SNES know to move the ROM data to these later banks, instead of treating it like it was in LoROM mode? I know the header defines what Mode the ROM should be read in, does that mean there are instructions internal to the SNES that tells it where the data should go? And how does the SNES retrieve this data at the correct positions? If the SNES is addressing say 0x70:FFFF, that region is blank in the memory map (or at the very least, not allocated as ROM storage), but the EPROM will still have game information at that address. Or does the SNES know to read the information from the EPROM at this address, and then move it to the corresponding main ROM area in the 0xC0-0xFF banks?
I hope this is making sense. And I hope it's something really simple I'm overlooking. Once I'm done writing up my guide, I was going to post it here for some critique, but I feel like I need to understand this better first. Thanks in advance, and I hope I'm not making a fool of myself