Of the mapper features listed, if you was gonna buy one to use what would you prefer?

None. Keep it simple. (no cost)

4%

[ 1 ]

Simple discrete logic (negligable cost)

7%

[ 2 ]

Advanced discrete logic (moderate cost)

22%

[ 6 ]

Programmable logic (moderate to high cost)

7%

[ 2 ]

Advanced Programmable logic (very high cost)

4%

[ 1 ]

Standard Coprocessor/DSP (nice performance, fair cost)

7%

[ 2 ]

6502 Coprocessor (familiar, limited memory, slightly above fair cost)

4%

[ 1 ]

Fast, bleeding-edge Coprocessor/DSP (moderate to high cost)

15%

[ 4 ]

Memory card. Just lots of memory/disk space. (moderate to high cost)

4%

[ 1 ]

Nintendo standard MMC3 (fair to moderate cost)

7%

[ 2 ]

Some combination of above features. I'll post and explain.

19%

[ 5 ]

Total votes : 27

Author

Message

Bananmos

Post subject:

Posted: Thu Nov 16, 2006 11:31 am

Joined: Wed Mar 09, 2005 9:08 amPosts: 410

I think Squeedo is really neat, and it proves my whole point: why re-invent the wheel when wheels are plentiful, and you can invent something new and totally different instead? While personally, I prefer programmable logic just because extending the hardware possibilities is a lot more fun than just adding raw processing power, I still think Squeedo is the coolest NES cart to have been designed. And I'd still like to have one. :)

I still haven't heard any good reasons for why cloning of UNROM, MMC1 and MMC3 boards is desirable. The only situation I can think of is when you've already finished a game and would like 100 PCBs to plug in your lot of 100 random crappy NES carts that you just bought cheap on eBay.

But if anyone wants to pursue that goal, be my guest. I'm just saying that I personally would have null interest in boards whose functionality is identical to cheap carts, minus the CIC and plastic case.

Quote:

And yeah, I have put a lot of serious thought into making my own EPROM emulator also. The big annoyance with that is that there are no 32-pin DIP-to-IDC adapters available anywhere (if someone sees some, let me know). Just 28 and 40-pin ones. The adapter I'm using for my emu now is a 40-pin with the end chopped off and epoxied together.

Yeah, that's what I've been doing as well. I wonder if 32-pin DIP-to-IDC adapters even exist. I think chopping a 40-pin one works pretty well though. And if you'd like to have it permanently soldered to a dev-cart, it won't even look ugly from the outside. ;)

Putting those to new use is better than seeing them thrown away eventually.

I sure agree, but keep in mind there is no unlimited source of existing NES carts. In europe, it is serioulsy rare to find used NES games to sale as opposed to GameBoy, Gameboy color and SNES games wich you can found pretty much easily. I don't know in america, but I just think it's better to keep carts for collectors (and by all means NOT to throw them away !!). I'm not totally against recycling carts, I just don't think it's a very good idea to goal to do any mass production with used carts. Anyway, due to the low quantity and quality of homebrewn games available right now, I don't think it's a question to solve immediately, because nothing will be mass producted right now.

Quote:

But if anyone wants to pursue that goal, be my guest. I'm just saying that I personally would have null interest in boards whose functionality is identical to cheap carts, minus the CIC and plastic case.

With the exact same funcitonality, I agree. But imagine a card you could just erase and re-write and switch from mapper to mapper as you like. Squeedo is just another complex mapper, and it cannot run games not designed for it. That's not bad at all, just a whole different thing.
A such cart would really be cool, I think. I think it is worth developping *one* prototype that could help developement and allow people to play commercial game they doesn't have. (don't bother me with legal issues here please, because you just cannot found every game arround at least not for a decent price).

About the package, I have strictly no idea how hard it is to make any. Wisdom Tree and Codemasters didn't seem to have any trouble doing it, but again maybe they just did have more money and knowledge than us. I partialy agree with Bananmos, I found somewhat ridiculous to place a brand new board in an old plastic package and let the old board away, unless that card in question has amazing features of course.

My vote would be for the following ideal (all in ONE cart) :

- Connectable to a computer via any kind of common parallel or serial port (USB comes in mind, but I don't think if it's doable).
- A PC software would come with and would just be able to control the cart from your computer
- A programmable logic (CPLD) could handle most common mappers (not ALL mappers of course) in hardware, and could be rewritable trough the computer with a plugin system.
- You can manually force the CPLD to some state emulating a mapper
- You can 'burn' internal PRGROMs and CHRROMs (done with any system such as backuped SRAMs, Flashroms, EEPROMs, etc...) with raw ".bin" files
- You can burn a iNES and maybe UNIF ROM on your card that will automatically detect PRG/CHR sizes and the CPLD plugin corresponding and write stuff on the card.
- You can manually force an internal battery backed WRAM with any ".sav" file on your PC
- You can dump the on-board battery backed WRAM and save it on a ".sav" file on your PC
- The cart could hold PRGROM up to 512kb, CHROM up to 512kb and 8kb of CHRRAM (typically only one of them will be connected trough the CPLD).
- The WRAM in the cart can be disabled trough the CPLD to run games without SRAM, it could also have various size in funciton of the mapper/submapper implemented (typically 8kb, 16kb and 32kb). Of couse the actual size will always be 32kb, but not the whole thing will be acessible in most cases.
- On board CIC defeater, so that most people will be able to play it without any modifictions. Of couse it won't be very acurate, but in the case it isn't, you just can cut pin 4... Personally I've both a modified and unmodified NES.
- It would be a pain to inser the PC connector (USB or whathever) inside an existing NES plastic package

Inconvenient :- Somewhat expensive, but it's a one-time investisment
- Needs a lot of tought to put in developpement, but many people here have knowledge
- Needs a donor card only for the package (?). However, most of us already have a board/cart you've destroyed by error, or a game you hate so much you don't even want to recycle the board - Need CIC defeater, and not all of them are accurate, unless the CIC gets completely reverse-engineered
- Need to be tricky to fit a NES package both horizontally and vertically
- Not all mappers will be supported
- Ridiculously high cost for mass-producting
- You have to rewrite the cart each time you want to make changes to your code or change game you're playing.
- This process will eventually damage the Flashroms/EEPROMs on the board above a few thousands of times.

Advantages :- Easy to use
- You can test your code on the real hardware very easily without having any f**** soldering and rewiring to do, without talking about the EPROM programming issues and the fact that you cannot erase them without a UV light machine, and most people don't have one (at least I don't)
- You can play both homebrew and commercial games
- You can backup your saves on both homebrew games, as well as importing exploits you made with an emulator onto the real hardware !
- If it can hold NOROM, C*ROM, U*ROM, A*ROM, S*ROM, P*ROM, T*ROM and F*ROM, it can definitely hold 97% of the NES games library, and that is most likely to be possible on a CPLD. For the other 3% you can just go with the traditionnal donator cart issues.
- All chips can be SMD (PLCC and SO packaged) chips as well as DIP chips, because you just have to solder them once and all programming and so will be on board.
- Don't need any modification to the hardware nor any knowledge in electonics for the used (and modify an existing card definitely needs knowledge in electronics).
- Different plugins will be needed for each submappers, and for each small configuration available (such as mirroring).

Of couse this is only suggetions, but I think a such thing could be pretty idea. I can help in the developement of a such cart in questions, because I've some knowledge in electronics. If anyone does have ideas opposite to mine I won't be angry, but I just exposed my point of view. I just think developping a NES cart in hardware sounds so COOL !

_________________Life is complex: it has both real and imaginary components.

This very idea was attempted a long time ago by www.vgwiz.com, and it failed horribly (to the point that the site, forums included, pretty much went completely silent nearly a year ago). Part of the problem is that they used a CPLD, which was barely big enough to even hold an MMC1, let alone something like an MMC3.

One thing you should be aware of is that CPLDs have a very significantly limited logic storage space - a "large" CPLD is generally only big enough to hold one single mapper, and the complexity is pretty much limited to that of the MMC3. If you want to keep more than one mapper on the cartridge and be able to select between them, you pretty much need to use an FPGA (most of which tend to be SRAM-based, meaning they need to be reprogrammed every time you power on the system or have an attached battery that will likely be drained fairly rapidly). Kevin Horton's FPGA-console actually started out as an all-in-one cartridge idea until he realized that the massive amounts of level translation needed would make it simpler to just cram the entire system inside the FPGA.

_________________Quietust, QMT Productions
P.S. If you don't get this note, let me know and I'll write you another.

That's interesting.
Are CPLD reprogrammable ? I think so, abd I just think about using a large CPLD that would hold *one* mapper at the same time. Then, if you want to change it, you just have to reprogramm your CPLD trough the PC software that would come with the cart.
Of course you can just emulate discrete logic mappers, and some MMCs (let alone MMC5), but I think it's already a great thing.

Anything involving more complex mapper would need a FPGA, and if you have to reprogramm it on each powerup, that means there is at lease a microcontroller on the cart that would programm the FPGA *OR* have your PC cable inserted when you turn the NES on and having both systems syncronize to eachother. I think both are a real pain in the ass.
So if the simple CPLD isn't valuable for some reason, a DSPIC-like DSP microcontroller could do the whole work of the mapper. I don't think if it's worth it, but it could be really fun to code mapper emulation for such kind of chips, trough I've never done anything like that before myself. I don't know about Memblers. It's up to everyone to bring ideas and contributions.

_________________Life is complex: it has both real and imaginary components.

FPGA are usually configured through serial EEPROM in static designs, they don't need a microcontroller because it is built into the EEPROM. There are however antifuse and flash FPGA which are nonvolatile. Any way you look at it though, FPGA is no good for +5V devices.

Yes, CPLD are reprogrammable with a simple device called a JTAG cable, if a user has the pin constraints file (pinout) it is possible for people to design their own mappers.

Sounds like the cart you want, Bregalad, is Arto's FunkyFlash. And yeah, it is crazily expensive to have produced and alternatively, not too easy to build by hand (time and potentially money consuming when mistakes are made). I still have mine, it's still only partially-built though since I messed up when soldering the USB chip and I haven't tried removing/repairing it.

I think he said it was actually pretty slow for reprogramming, I can't remember if that was a hardware or software limitation but I remember being aware that it would be much faster for me to socket the FlashROMs and use my programmer on them (and just use the USB or JTAG for CPLD reprogramming). IIRC, the USB/JTAG controlled the CLPD pins to program the flash, compared to my designs I always send code to the NES and write with the CPU. It's a very well-done design though, it exists and it works.

The VGWiz cart, I remember them saying on the forum there was some legal concerns with it. I don't know the details of that, I know they had at least some NROM test programs that I sent working on it. They do have a couple successful Atari flashcart designs too. Ronen there is a cool guy, he's helped me out a lot with info, a few chips, and inspiration to really get started on my big Squeedo adventure.

Quote:

So if the simple CPLD isn't valuable for some reason, a DSPIC-like DSP microcontroller could do the whole work of the mapper.

I wish they were fast enough, but I don't think there are any DSPs approaching the needed speed in 5V. dsPIC is only 30 MIPS, there are affordable low-voltage DSPs that are much faster but their cost is pretty comparable with a decent CPLD. Parallax's Propeller chip seemed strangely compelling though. Writing code with various (at the same time!) timing requirements down to the nanosecond sounds pretty difficult too. On Squeedo I just measure it by NES CPU cycles (the 20 MIPS PIC18 is running about 5 full instructions per NES cycle, not too bad huh?). Programmable logic between a DSP and the NES, is what I find most interesting though.

Well, I have trouble understanding that CPLD and FPGA stuff. I have no experience with them. It seems that the general opinion is against the FPGA for some reason, and that the CPLD is somewhat limited. On the other side, Wikipedia states that larger CPLD can have about the equivalent of 10 thousands logic gaes, wich is much larger than what the MMC3 needs for it's several adress decoding, flip-flop latches, and counters.

I'd just think how many inputs and outputs a discrete logic system would need (regardless of the technology used) :

This will probably need a package such as 64-pin TQF, regardless of the technology used. Unless some simplification of the above suff is done and a 40-pin DIP could be used, but it doesn't really hurt if it's not a DIP package as long as the goal is to have it on-ciruit programmable.

About Artroh's cart, I did never hear of it to be 100% completed and available. I wish it would be the case, tough. Well, I also wish I could play programm mappers in hardware. It sound like fun. However, I've zero experiance with programmable logic, only with microcontrollers.

EDIT : As far I know, PIC18xxxx can go up to 40MHz, but that means they execute their instructions at 10MHz because of internal RISC configuration, and so it makes them 10MIPS, and about twice as fast as NES' PPU. This is effectivly a bit too slow if you wish to upload the CHR lines each eight PPU clock cycles. Unless a serious combination of DSP and FPGA/CPLD is done, MMC5 will never be emulated. Anyway, I don't think this is too much needed -> for the several applications where a MMC5 chip is desirable, just use one of those dumb Koei games to place your game on !

_________________Life is complex: it has both real and imaginary components.

I've actually proposed this idea for many years, and have planned on building it for almost as many. When Kevin Horton started a project like this, I was hoping that'd someone better skilled would do this project for me. Unfortunately, he changed his goal into making a NES clone instead of a universal NES cart, and lost all of my interest along the way. (even if I find do his FPGA console cool in its own way and hope it'll earn him money for his effort)

My ideal universal cart would be centered around a modest FPGA, a CompactFlash/SD memory and a USB microncontroller that would make the cart act like a regular mass storage device when plugged into the PC. You could then use a flash memory of desired size, and on power-on you'd just select the appropriate .NES-file to run. The appropriate bitfile to emulate the mapper would then be loaded to the FPGA before the game starts.

The biggest problem (and the number one reason why I've still only theorized about this project) is deciding on which FPGA to choose. A disturbing fact is that once a cart like this is developed, then all the implemented mappers will be more-or-less taylor-made for the FPGA you've chosen. And if it goes out of production, your universal cart will as well. There are some decent 5V tolerant FPGA series, but at least the one I have personal experience with (namely Xilinx's Spartan2 series) is no longer being produced, so there might be a problem of obtaining those parts in a few years. And like always, not wanting to take a bad decision makes you end up with taking no decision at all...

Besides that, somewhere along the way I realized that a project like this is a bit too big to do at once and it'd be better to do an easier project to begin with. So I have started making an USB CompactFlash cart for the Sega Mega Drive instead. That way, I won't have to lose sleep over the FPGA dilemma, and I'll have half of the functionality needed to do a similar product for the NES.

I started working a little on the prototype during this summer, but haven't touched it since early September. I got the USB mass storage device working nicely on a PIC4550 MCU, and implemented a mapper chip on an XC95108 CPLD that acts as either a Sega Master System mapper or a simple "Megadrive mapper" (that just passes the adress lines through the chip) depending on the setting of an input pin.

I had SMS games running on it with my EPROM emulator, and Sonic The Hedgehog running off two 8-bit flash-ROMs. The last thing I did with it was trying to replace the programmable ROMs with SRAM so the PIC could run programs from the Compact Flash card. I never finished this because of weird bugs that made the SRAM look like random trash when read from the megadrive console.

At this point, I had to return the In-circuit debugger for the PIC, which I had only borrowed for a limited time. I plan to buy a cheap clone of it on eBay to continue my work, but now that I'm trying to finish the last of my physics courses to get my masters degree in physics and engineering, there's just no spare time for spare time projects.

I hope to get a working product within a year though. If it does well at a price tag of $50-$100, then I'm certain that a NES equivalent will do better, even at twice the price.

Sound interesting.
I know it's hard to chose a component when you have too much choise. Often lists are so big you can't even have a clue on wich componant to use.
A good thing is take a chip wich has a more or less standard pinout. For example, most PICs are pin-to-pin compatible, even if there is hundred of variants of each PIC, wich is very confusing.

So yeah, a small project you said. It's better to have a small project that work fine than a big that doesn't. However, Memblers has done pretty well already. After a bit of trough I really seem to like more and more the FPGA idea. If an EEPROM has to be attached to it to maintain the configuration, that would mean the mapper logic has to be in an EEPROM and not in some complex chip, so it make things sound even easier. Exept when it comes to programm the FPGA.

Another idea would be to just have a 74xx series MMC1 like Flash reprogrammable board. It is possible and not too expensive to build a pseudo-MMC1 with about six or seven 74xx chips. You basically need one shift register, two couple of gates for adress decoding, 4 5-bit flip-flops and output logic. You could even customise it to reduce the number of chips to reduce the number of features (typically a CHRAM only board would need much less flip-flops, as would a board with fixed bankswitching mode). So that we could end up with a board with MMC1 like mapper, but limited functionality and cost. Also the code running on it would be 100% compatible with an actual MMC1 chip, wich is good.

_________________Life is complex: it has both real and imaginary components.

My ideal universal cart would be centered around a modest FPGA, a CompactFlash/SD memory and a USB microncontroller that would make the cart act like a regular mass storage device when plugged into the PC. You could then use a flash memory of desired size, and on power-on you'd just select the appropriate .NES-file to run. The appropriate bitfile to emulate the mapper would then be loaded to the FPGA before the game starts.

Replace the flash memory with RAM and you have pretty much described how SuperCard for GBA works.

Quote:

Besides that, somewhere along the way I realized that a project like this is a bit too big to do at once and it'd be better to do an easier project to begin with. So I have started making an USB CompactFlash cart for the Sega Mega Drive instead. [...] implemented a mapper chip on an XC95108 CPLD that acts as either a Sega Master System mapper or a simple "Megadrive mapper"

Once you do that, you can make the ultimate UOROM card, right? Isn't the Sega Master System mapper a lot like what UNROM would be with an additional 16 KiB bank at $4018-$7FFF?

That said, I've sketched out an idea for a decent 4-chip 7400 mapper, and I'm about to post it in NES Hardware.

Digikey has Altera FLEX 6000 FPGAs for around $30 apiece. A little bit expensive, but not what I would call "not affordable".

I would call that unreasonable since +5V CPLD, still available, which can easily hold MMC3 and even more register heavy Konami/Sunsoft mappers, cost under $10. 140 macrocells should be able to emulate any current mapper which doesn't touch the CHR data bus or have expansion sound.

tepples wrote:

Replace the flash memory with RAM and you have pretty much described how SuperCard for GBA works.

Add a FPGA to that and you have something developed for FC in 1990 ;)
Yes, 16 years ago there was a device which conveniently loaded a JEDEC along with the game.

I think the best method would be to use FlashROM, SRAM and a CPLD. The implementation would be very similar to FunkyFlash but instead of flashing through boundary scan, flashing should be done with a base unit like a GB linker (which could also dump.) Configuration of the CPLD would be done through the cartridge data bus (D0-2). All that would be needed is a 74244 to open the connection when not configuring the device. Another much smaller CPLD could be used as well to handle configuration and free up some macrocells from the big CPLD for small tasks such as WRAM decoding or a manual switch could be used for programming.

Replace the flash memory with RAM and you have pretty much described how SuperCard for GBA works.

I'm not sure what you mean by "replace the flash memory with RAM". Both the RAM *and* a CF/SD memory are needed of course, though the later is of arbitrary size and provided by the user. One of my problems will be to decide what type of RAM to use to have 8 megabytes of it. I've considered SRAM (which is expensive and only comes in smaller sizes), SDRAM (which would require adding a refresh circuit to the CPLD core) and PSRAM. (which only come in BGA packaging and are only sold in quantaties of thousands)

I looked at the SuperCard, but I'm still not sure how it works. It doesn't seem to use a USB cable, and thus doesn't act like a mass storage device at all? Seems to use need its own software and additional patching of the ROMs? (correct me if I'm wrong here) That doesn't seem very user-friendly...

Quote:

Once you do that, you can make the ultimate UOROM card, right? Isn't the Sega Master System mapper a lot like what UNROM would be with an additional 16 KiB bank at $4018-$7FFF?

More or less. It also controls SRAM mapping though. (currently unimplemented since I only have 2 sets of 512kB SRAMs on the prototype board anyway, and only the lower chip is used in SMS mode.

Digikey has Altera FLEX 6000 FPGAs for around $30 apiece. A little bit expensive, but not what I would call "not affordable".

That's pretty much expensive, but keep in mind it would be a all-in-one investisment and that cart could then play hundreds to thousands of games.

For storage, I think Flash or EEPROM is better than SRAM, just because disable the SRAM on proper time can be a pain. Actually it could work easily for PRG-ROM, and I don't know how common 512kb SRAM chips are. You could just keep it battery backed, and be sure to disable the chip when anything is written on $8000-$ffff, wich is needed for any type of ROM anyway. However, to simulate CHRROM with a SRAM would be a lot harder, to disable the chip on proper time if the program ever tries to write to the CHROM, wich is normally totally illegal. The advantage would be that the same chip could handle CHROM and CHRAM, and only the way it's used and adressed would make difference (typically for CHRAM the chip could be writable by software and only the first 8kb would ever be adressed, while in CHRROM mode the whole chip would be write-protected and battery backed.
I think Flashroms would be better write-protected and safe at power down than battery backed SRAMs.

About the CPLD/FPGA debate, I think a CPLD may hold a simplistic MMC5 with only PRG and CHR bankswitching and IRQ capabilities (letting alone sound, EXRAM and all it's uses, special graphic modes and SRAM bankswitching), so that it can proprely run at least Castlevania III and Laser Invasion. Only the boring Koei games, Just Breed and that Majong game couldn't ever be played on a CPLD cart. Also, VRC6 and VRC7 may be a little too much complicated for the CPLD letting alone the japansese Castlevania III and Laser Invasion (but the US/PAL version could be played anyway), Lagrange Point, and a couple of RPGs by Konami. Almost every other game could be played. So I don't think FPGA is needed, but maybe it is.

_________________Life is complex: it has both real and imaginary components.

Who is online

Users browsing this forum: No registered users and 2 guests

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot post attachments in this forum