Well... I'm new to this... I checked the entire newbie and hardware development sections, and neither had exactly the information I was looking for.
What I need to know is if it's possible to use some form of programmable chip in place of a mapper chip. I'm interested in building a reprogrammable, multipurpose NES cartridge as the final project for my electronics course, however I only have a single Super Mario Bros/Duck Hunt combo cartridge, and I'm not interested in limiting my options to just GNROM and NROM games or destroying a perfectly good game. I cannot buy any additional NES cartridges, however I do have access to circuit board creation equipment (which I know how to use), and a large number of electronic components. I'm going to have to build this thing from scratch or not at all.
So, is this possible? And if so, what materials will I need?
CIClone for lockout defeat + 8Kx8 SRAM (part 6264) for CHR + 128Kx8 or larger parallel flash (part 29F010) for PRG + CPLD for mapper
Haven't found a 29F010 (Flash 1Mbit) chip, but I did find a 27C1001 (EPROM 1Mbit). That should work until I can find a flash equivelant right? I mean, I can probably cobble together an EPROM eraser and writer. Additionally, I can't afford to buy parts. I have to use what's already in the electronics lab, and while there is a wide variety of parts there, I don't think we have a CIClone chip. So I'm just going to rely on grounding the fourth pin on the lockout chip. I'll keep looking for a 29F010.
Edge Hypermatter wrote:
Haven't found a 29F010 (Flash 1Mbit) chip, but I did find a 27C1001 (EPROM 1Mbit). That should work until I can find a flash equivelant right?
Yes, but you'll also need sockets to pull out the chip and program it. With flash, you can potentially put a programmer right on your CPLD.
Quote:
Additionally, I can't afford to buy parts. I have to use what's already in the electronics lab, and while there is a wide variety of parts there, I don't think we have a CIClone chip.
I figured you didn't, because Kevin "kevtris" Horton makes those.
Quote:
I figured you didn't, because Kevin "kevtris" Horton makes those.
As long as the chip isn't actually an ASIC, but just a programmed PIC12F...., you could have that PIC12F.... instead and put the CIClone code on it.
Else, just put a slot for a Nintendo CIC, and you may try to disolder it if you're able to (but I've never been able to remove any solder from those pins on any double-sided board personally).
Else make your own shematic and PCBs. I was on the point to have my own board made, but I gived up because of my unability to disolder the MMC1 from an existing one without damagin the chip, among other things I'd be in trouble to get working. I could pass you some dimentions if you need to.
Also, another problem is to have 1.2 mm thick boards made. 1.6mm standard would do, but force the pins on the connector, and then made it damaged to play other games (exept trough a game genie, wich I've heard is alwo 1.6mm, so if anyone have a game genie, they know what to exept with a 1.6mm thick board)
I did find a 2Mbit flash ROM chip, so that won't be a problem anymore.
My next question: What are the minimum specs of the CPLD I'm going to need for the mapper? Part numbers would be helpful, I'm trying to build this project using MultiSim first so I'll know how it'll go together.
Edit: Found something. I'm not sure how useful this will be, however, it has a parts list and a schematic. Including the part number for the CPLD.
http://ameba.lpt.fi/~hataarto/nes/
What features do you want to synthesize with a CPLD? FunkyFlash's CPLD is overkill for most 2M/CHR RAM games. I would suggest a XC9572 in PLCC.
Ultimately, I'd like to be able to run Final Fantasy III, Earthbound, The Legend of Zelda, Super Mario Bros. 1-3, MegaMan 1-6, and a bunch of other games I can't think of right now. However, I'd like to start with homebrew games (not mine. I'm not a programmer). Keep in mind that I'm building this thing with parts from boards that nobody else wants; essentially garbage. I might be able to obtain larger chips if I'm lucky. More likely, I'll be trying to combine a bunch of smaller chips into one larger one.
Quote:
More likely, I'll be trying to combine a bunch of smaller chips into one larger one.
You'll explain me how you can hook up two MMC1 to get a MMC3. This is alchimy
MMC1 + MMC2 = MMC3
Just checked the prices for CPLDs... they're really expensive... I doubt I'll be able to find one... Probably just going to have to go NROM. I'll keep my eyes open for a CPLD anyway. Or, at this point, it's probably cheaper to find an actual cartridge and then harvest its mapper chip. Oh and when I said I'd be combining chips, I was refering to memory chips, since most of the ones that are available to me are only 256KBit.
With a 74HC139, you could can go as high as 128kb of each PRG ROM and CHR ROM (each made of 4 32kb chips).
CPLDs are expensive, unhandy, they need particular power supply, and I didn't understand how they worked at all. You'd want to go with the 74 series + GALs way. I was on the point to design a cart that would have taken a MMC1 chip on it, but I realised that disoldering a MMC1 from a real game without destroying it wasn't even thinkable.
Now that I could probably find.
Looked up GALs. Sold by a company called Lattice. Which GAL do I need? There are 11 varieties, and I probably only have enough cash to buy one.
Bregalad wrote:
CPLDs are expensive, unhandy, they need particular power supply, and I didn't understand how they worked at all. You'd want to go with the 74 series + GALs way. I was on the point to design a cart that would have taken a MMC1 chip on it, but I realised that disoldering a MMC1 from a real game without destroying it wasn't even thinkable.
The 72 macrocell CPLD I suggested costs as little as $5 from Digikey and can synthesize MMC1 no problem. If he wanted to make a custom mapper, it could fit MMC3 w/o CHR bankswitching. I have no idea what you're talking about with the particular power supply, they run off 3-5V like any other CMOS logic chip.
Quote:
Now that I could probably find.
Looked up GALs. Sold by a company called Lattice. Which GAL do I need? There are 11 varieties, and I probably only have enough cash to buy one.
Unless your EPROM programmer supports GALs they won't be of any use to you. If you are going to be designing with GAL + 74 series, and don't have any GAL experience, you may as well only use 74 series chips since they don't need to be programmed. CPLD on the other hand are in system programmable by using a parallel port cable which you can build yourself from very cheap parts.
GALs are VERY cheap (like $2!) The most common are 16V8 and 20V8, if you use GALs for whatever reason you should design around those since most programmers support them. If you want to ONLY use GALs and no 74 series, it would be best to use 22V10 chips since they pack a lot more logic. That would be stupid though since the CPLD I suggested is a dozen times more flexible and easy to use than a handful of 22V10s!
kyuusaku wrote:
The 72 macrocell CPLD I suggested costs as little as $5 from Digikey and can synthesize MMC1 no problem. If he wanted to make a custom mapper, it could fit MMC3 w/o CHR bankswitching. I have no idea what you're talking about with the particular power supply, they run off 3-5V like any other CMOS logic chip.
1 - You amercian have an easy acess to many things us european doesn't have unless we pay a lot more, so stop flaunting the low price available in america, because this tend to be annoying after a while.
2 - Need for over 3 of each different VCC and GND pin, and sometimes (not always trough) with funky voltage like 3.3V is not what I call a standard power supply. Not mentionning all CPLDs are annoying pseudo-modern SMD packages, wich I hate like hell.
Bregalad wrote:
1 - You amercian have an easy acess to many things us european doesn't have unless we pay a lot more
I'd wait for Edge Hypermatter to fill in the "Location:" field in his profile.
Bregalad wrote:
1 - You amercian have an easy acess to many things us european doesn't have unless we pay a lot more, so stop flaunting the low price available in america, because this tend to be annoying after a while.
I've bought most of my CPLDs from China on eBay for reasonable prices using PayPal with my bank account, there's no reason why a European couldn't do the same!
Bregalad wrote:
2 - Need for over 3 of each different VCC and GND pin, and sometimes (not always trough) with funky voltage like 3.3V is not what I call a standard power supply. Not mentionning all CPLDs are annoying pseudo-modern SMD packages, wich I hate like hell.
CPLD generally need two voltages, a supply voltage and a I/O reference voltage. The chip I suggested uses +5V for both and is 100% NES compatible! It also comes in a PLCC package so you can solder a through-hole socket! What more could you want? GAL are so much harder to use, I know.
Do you think it would be possible to use the code from FunkyFlash's website on the XC9572? If not, is there any code I can use? I'm not really capable of making my own or learning how to code in the short time before school gets out.
Schematics from FunkyFlash can be directly applied to XC9572 if you create your own constraints file using FunkyFlash's names for pins. I would advise against this though because it will take more experience to do than just starting from scratch. If you need help with the actual mapper logic, then you should turn to FunkyFlash, but implement it yourself. Some of FunkyFlash's mappers cannot be used directly on a XC9572 even though they should; they tend to use more resources than they need to. For example I think MMC2 can fit into a XC9572 but FunkyFlash's will only barely fit into a XC95108 due to the use of larger than necessary registers and some logic which doesn't translate efficiently to CPLD architecture.
Please understand that while CPLD are relatively straight forward to use, it will take a while for those new to programmable logic to get caught up to speed. If I were starting over again, I would first get a PowerPak and start designing with that since building your device is 95% of the battle!
Have to build it. No getting around it. So, just to be sure, the final parts list should be:
1x XC9572 CPLD (U1)
2x 62256 32kBit Static RAM (U2, U5)
2x 29C040 4MBit Flash Memory (U3, U4)
1x DS1210 Non Volatile Controller (U6)
1x FT2232C USB Interface IC (U7)
1x 93C46 Serial EEPROM (U8)
1x 10K ohm Resistor (R1)
1x 2.2K ohm Resistor (R2)
1x 470 ohm Resistor (R3)
2x 27 ohm Resistor (R4, R5)
1x 1.5K ohm Resistor (R6)
1x 220pF capacitor (C1)
2x 27pF capacitor (C2, C3)
11x 0.1uF capacitor (C4, C7, C8, C10-C17)
1x 33nF capacitor (C5)
7x 0.01uF capacitor (C6, C18-23)
1x 10uF electrolytic capacitor (C9)
2x 100uF electrolytic capacitor (C24, C25)
1x 6MHz Crystal (Y1)
Correct?
I'll have no trouble getting the basic electronic parts (capacitors, resistors, maybe even that crystal). The chips, however, I may have to buy...
Whoa whoa whoa, I wouldn't build FunkyFlash especially since it's not finished. I thought you just wanted to use the mapper logic. If you don't mind using socketted ROMs (which you must program with a programmer every time) I think you shouldn't try to use FunkyFlashes PC interface, just keep it to a reconfigurable static cart.