Hey, I'm starting to develop a rudimentary flashcart for my dev needs, and was wondering on some solutions.
My idea is simple, just a flash memory and sram for saving(there will be need for bus level shifting etc), nothing more, nothing less. The programmer would be a cheap stm32 mcu programming the cart via the edge connector, via usb. Only one game would be allowed at a time to be on the flashcart (so no menus etc).
- can the MAD-1 be ignored, if the microcontroller flashes the memory accordingly depending on hirom/lorom flag contained in the rom?
- can the CIC be ignored in my design, if i'd like to try running commercial games? The programmer again, could overwrite/disable the region information contained in the original rom.
My goal is really the simplest design, while retaining almost full functionality.
Cheers!
The CIC has nothing much to do with your flash cart design. The CIC just must be present to run on a console that has a working CIC chip inside of it.
I'm not sure about your other questions.
Yeah, I'd like to leave my console intact
I have 2 consoles: SFC and a modded PAL SNES with region and 50/60Hz switches installed
You can't ignore the MAD-1. You need it to decode between SRAM and ROM. You can replace the MAD-1 with discrete logic or a CPLD though assuming you're looking to use all new parts. If you were looking to make a ROM only cart I think you could do it though, but that takes away a lot of functionality/compadable games.
Assuming you're interfacing via the cart edge, you can not ignore the address decoder (MAD-1 or LS139 or whatever is used for decoding purposes). Another possibility would be to design your cart with the microcontroller on board, similar to
this project but with the whole cart, rather than just the ROM module. For your purposes, you can ignore the CIC. You can access the cart just fine without it, only the console cares about its existence, the cart doesn't care.
qwertymodo wrote:
Assuming you're interfacing via the cart edge, you can not ignore the address decoder (MAD-1 or LS139 or whatever is used for decoding purposes). Another possibility would be to design your cart with the microcontroller on board, similar to
this project but with the whole cart, rather than just the ROM module. For your purposes, you can ignore the CIC. You can access the cart just fine without it, only the console cares about its existence, the cart doesn't care.
So, a regular 3-to-8 decoder can replace a mad-1 chip? Care to elaborate more on the topic?
There is a number of reasons for not putting an mcu on the board itself - I'd like to make a cart reader/dumper and writer in one.
And I know I can leave out the CIC when it comes to developing, but what If I tried downloading a commercial game on it, would the CIC in the console still not care, and everything would boot normally?
You need to realize the CIC is a KEY chip. It's totally unconnected to the Software on the ROM chip. The CIC in the console is a LOCK chip. So all that must happen is the console must be unlocked by a matching CIC in the cartridge.
The software/game doesn't know what CIC you are using, or if you even have one at all. So again, all you need is a CIC, original or cloned, on the PCB with the connections correct. You can run any region game you want to, the CIC doesn't matter in that case. However games can check NTSC/PAL console via a register flag. This again is unrelated to the CIC.
A standalone cart dumper would ONLY need to care about the CIC if you wanted to dump SA-1 games. As Mottzilla said, the purpose of the CIC is to unlock the CONSOLE by inserting a game containing a valid CIC (key). If you're building your own dumper/flasher, it will be unlocked by default (because you won't be building a lock), and you don't care about the CIC. However, if you're making your own cart, then yes, the cart will need a valid CIC in order to run on the console. As for the decoder, I'm still figuring that out piece by piece myself, so I can explain the concept, but not the specifics. The MAD-1 is just a decoder combined with a battery-power management circuit. The decoder is used to control the RAM /CS signal and the ROM /OE signal. You'll have to read up on the SNES cart memory maps and figure out what logic is necessary to drive those signals based on whatever decoder you use. Some official boards use the 74LS139 instead of the MAD-1, but they have a bunch of extra discrete components for the battery-power circuit, and they only support a maximum of 16Mbit.
Here's the official LS139 hookup for a 1A3B-11 (LoROM) cart, to get you started. Only supports up to 16Mbit.
qwertymodo:
not criticizing, but how did you arrive at the BA0..BA7 naming convention?
I blame caitsith BA = Bank Address, I assume.
...but to be fair, I did include pin numbers...
qwertymodo wrote:
Here's the official LS139 hookup for a 1A3B-11 (LoROM) cart, to get you started. Only supports up to 16Mbit.
Wow, thanks for that!
Though, it looks like I'm gonna have to shell out an old pachinko game to make the flash cart then, to get the CIC, and that's what I wanted to avoid.
mog123 wrote:
Though, it looks like I'm gonna have to shell out an old pachinko game to make the flash cart then, to get the CIC, and that's what I wanted to avoid.
Nope, there's a PIC implementation of the CIC key (the key is the cart version, the lock is the console version) called the
SuperCIC. That's all you need.
That's right, there is no reason to use any old parts when making new SNES cartridges now. You can use a new pcb, new cartridge shell, new CIC, new ROM chips. The same could be done for NES or Sega Genesis. N64 still requires donor CICs. But if someone every reverse engineers the most common CIC then new cartridges could be made without using old game parts. Someone would still have to manufacture a plastic shell but it could be done.
Where are there new sega cart shells available for sale?
I didn't mean to say there were, but they could be made. Someone may have actually done so but I'm not aware of it.
qwertymodo wrote:
mog123 wrote:
Though, it looks like I'm gonna have to shell out an old pachinko game to make the flash cart then, to get the CIC, and that's what I wanted to avoid.
Nope, there's a PIC implementation of the CIC key (the key is the cart version, the lock is the console version) called the
SuperCIC. That's all you need.
hello qwertymodo
a single query, after having read most of the forum looking for this answer
Apparently the CIC can be changed by the SuperCIC, however, putting us in this case:
Normal console without any alteration (virgin)
cartridge with SuperCIC
in this case work, yes o no?
or you need to have the console with the SuperCIC too?
regards
skarstoker wrote:
hello qwertymodo
a single query, after having read most of the forum looking for this answer
Apparently the CIC can be changed by the SuperCIC, however, putting us in this case:
Normal console without any alteration (virgin)
cartridge with SuperCIC
in this case work, yes o no?
or you need to have the console with the SuperCIC too?
regards
Normal console CIC + Normal cart CIC = normal operation
Normal console CIC + Cart SuperCIC = normal operation << This is the case you're asking about, so yes, it works
Console SuperCIC + Normal cart CIC = region-free operation
Console SuperCIC + Cart SuperCIC = region-free operation and automatic 50/60Hz switching controlled by the cart
qwertymodo wrote:
skarstoker wrote:
hello qwertymodo
a single query, after having read most of the forum looking for this answer
Apparently the CIC can be changed by the SuperCIC, however, putting us in this case:
Normal console without any alteration (virgin)
cartridge with SuperCIC
in this case work, yes o no?
or you need to have the console with the SuperCIC too?
regards
Normal console CIC + Normal cart CIC = normal operation
Normal console CIC + Cart SuperCIC = normal operation << This is the case you're asking about, so yes, it works
Console SuperCIC + Normal cart CIC = region-free operation
Console SuperCIC + Cart SuperCIC = region-free operation and automatic 50/60Hz switching controlled by the cart
I found reading the forum about this, maybe I was, but after reading many post may go unnoticed
thank you very much qwertymodo