I just had an idea for a VB Dev Cart which would really be the best possible solution in my eyes. It is a pretty obvious idea actually, so maybe the reason for nobody mentioning it, is that it’s impossible. 😉 Well:
Why not replace the ROM chip on a VB cart with a (mini- or micro-) SD card adapter like this one?
Those are extremely cheap and even on a very small card (ass cheap as well), you could fit ALL the roms plus all homebrews. Or use it to make games up to 128 MBit. With a card reader in your PC you could put roms on it in seconds. The PERFECT solution for devers!
Of course this would also require a boot rom with a menu to select games. I could imagine a file structure like this:
So you place your roms in the roms/ directory, and the boot rom in the root directory. This way the dev cart would be fully upgradeable. When you boot up the VB, it loads the boot.vb. (Would we need an extra, hardcoded chip to do this?) And when you start a game, the loader reads the save battery and backups the save to the card, then loads the save file for the game you want to play, then links to the file you want to play.
Couldn’t we also implement other nice features this way, like a cheat system or real time save?
So…. Is this whole thing possible? Or will this remain a dream?
With SD, it’ll remain a dream 😛 . There’s a few reasons… the first is because SD is a 3.3V device, the VB is 5V. Also, you’ll need a seperate flash or SRAM to load the current game into, since the IO of the VB requires parallel data, not serial like SD. You’ll also need seperate SRAM to save (once again, because it writes parallel), and you’ll need somewhere it can boot from at startup.
I’m actually working on a cart right now that uses CompactFlash. It’s not as nice as SD since it’s a lot bigger, but it’ll run at 5V or 3.3V, it’s a 16 bit parallel device, and it’s relatively easy to interface with. What I’m trying to do is get it so you can boot directly from the CF card (it’s split into 4KB blocks, so at reset it goes back to the first block, which I can have my code execute from). This can be a very small driver that just loads the WRAM with a loader to read the games from the CF card. The problem is being able to have the loader there and still have the card readable by the PC (which could be solved by making a PC app to put it in my own format, but that’s not as user friendly). Then in the boot menu, read the ROM file and flash it to the onboard flash.
It’d also be nice to have SRAM, which I could do, and have the loader copy the SRAM to a file on the CF when it loads a new game, that way the high scores, save games, etc could be preserved, and the new game could do whatever it wants to the SRAM.
D’oh!, but your CF cart sounds very cool as well! Would a CF adapter fit in a VB cart as well? And would multiple roms on a cart be possible with a little menu or could you always have only one rom on it? Anyway, this would be fantastic for homebrew stuff! 🙂
Well, only one game could be loaded onto the onboard flash, but you could have as many games as you can fit onto a CF card on the card itself. The loader would just read the file from the CF card and load it into the flash, then just load the game like it was a normal flash cart.
I haven’t gotten the PCB layout totally figured out yet, but I’m hoping to be able to have the CF socket fully inside the cart, but the card will probably stick out a little bit (but the CF card is only needed to load the game, so it could be removed after flashing if you wanted).
I’ve actually got some chips that’d be perfect for saving space if I go with more than a 2 layer PCB with tight tolerances (it’s a BGA chip)… they’re only 8mbit though, so again they wouldn’t play the 16 mbit games unless I used two chips… which would be pretty ugly since they’re 16 bit only chips (no byte mode). I’ll probably end up using some 16 mbit chips though, and hopefully be able to stick with a 2 layer PCB.
Y’know, I’m surprised I haven’t seen this topic before. I’ve had this idea about putting some sort of removable flash storage onboard a cart for the longest time (especially CF), but never posted it. I guess I didn’t need to, you came up with it on your own. Lemme know how it goes!
This kind of thing has always interested me because I can’t afford an EPROM reader/writer, so I wanted a slightly cheaper alternative to buying an EPROM writer just for a few dev projects. This looks very good.
Yeah, I’ve had the idea for a long time, but I was never really interested in doing it since it requires a lot more than a simple flash cart… and the only way it seems like it’ll be worth the hassle is if it’s able to boot directly off the CF card (which I’m still working on).
Otherwise I’ll probably change to a different technology like SD and just make the I/O 5V tolerant and add a 3.3V regulator to the cart. The PCB routing is ugly w/ a CF socket, Flash, and SRAM… fewer wires w/ a serial device would make that much easier, plus the size is much smaller.