Making an SNES expansion chip (i.e. custom Super FX)

Includes but not limited to: SNES, Genesis, Sega CD, PlayStation 1, Nintendo 64, Dreamcast, Game Gear and I guess the Virtual Boy.

Moderator: Moderators

Post Reply
bluefoxicy
Posts: 2
Joined: Tue Dec 19, 2006 3:06 am

Making an SNES expansion chip (i.e. custom Super FX)

Post by bluefoxicy »

Any ideas on good docs to make my own SNES expansion chipset? I have a number things I want to do:

- Be able to communicate with SNES code

- Control the frame buffer directly (Super FX did this with DMA)

- Control what the SNES sees in ROM

Basically I want to place a small processor (an eZ80 or an ARM) and a small ROM onto the game cart. The SNES will load a 'game' that basically sets up whatever's needed for the internal chip to get the access it needs, then loops forever.

The internal chipset will load a small OS into RAM on the cartridge. This OS will be able to read a FAT32 File system on an SD card (this is dead simple-- SD card controllers look like EEPROMs, data/address and write pin), get controller input, and draw on the screen.

The player will pick a game file from the SD card. This game will be copied into 4M of RAM on the cart. The region containing the "loop forever" code the SNES uses will have the exact same contents copied in. Once loaded, a single byte (the data for an instruction that affects a conditional branch) will be altered that causes the actual game code to execute.

The idea here isn't to run pirate ROMs or whatnot. I'm looking to try and design a dev kit. The FC Twin really alerted me to the possibility of amateur SNES development; but developing an SNES game takes hardware, right? How about hardware made for developed games.

Because of this goal, there's some interesting properties here, the least of which being that real SNES games won't work right.

- Real SNES games probably won't work right, they might not hit SRAM properly or they might clobber the "loop forever" code and crash the SNES

- The SRAM could be triggered to write-back to a file by writing to the last SRAM byte. Burning the game to a real cartridge or using on an emulator with SRAM would not be hindered by this.

- The games could be designed to fit into 4MB; this would allow them to be physically burned to a ROM and loaded like normal SNES games from a normal cart or in an emulator.

- The loader "Loop Forever" code wouldn't be executed by the game, just by the dev kit itself. As such, a burned or emulated ROM of a developed game would contain but not use the code.

- Games COULD be developed that communicate with the internal chipset for advanced functionality; however, these would NOT be burnable to normal carts (unless the dev chipset was incorporated)

- Games COULD get the internal chipset to do software bank swapping for them, again breaking vanilla hardware compatibility.

It's a nice idea but I have no idea where to start. I don't know what the expansion chipsets like the Super FX can actually do. Aside from that it's probably a CPU, SD controller, SD slot, 1MB internal RAM, 4MB "ROM loading area" RAM, boot ROM, and bank switcher (to switch from the boot ROM to the shadowed copy in ROM Loading Area RAM). And a board, of course.

What I think would be cool about this would be that a SNES dev kit could be designed. A full one. This would include a basic "operating system" to manage structured data, and a programming suite. The OS would be a very thin set of API calls (stripped down to what the individual game needs), most notably for sprite loading and sound loading and for booting the SPC700. The SPC700 would have an "OS" that accepted specially compressed .MOD files (structured to read compressed, instead of having to be decompressed) for music, and injections of immediate commands to call sound effects. Etc. Etc. Etc.
dudex77
Posts: 1499
Joined: Thu Nov 16, 2006 10:43 am
Location: Spain

Post by dudex77 »

wow :shock: .... i have no idea
atari2600a
Posts: 1330
Joined: Fri Jul 28, 2006 12:42 am
Location: Schwarzeneggerville, CA
Contact:

Post by atari2600a »

Sounds like a good idea, A really hard-to-do idea at it. You do realise that there's ISA SNES dev cards, with SuperFX & everything right?
bluefoxicy
Posts: 2
Joined: Tue Dec 19, 2006 3:06 am

Post by bluefoxicy »

An ISA SNES dev card will still require me to burn to ROM. My ideal situation is that an end user builds/buys a device like this, and an SD card; and then copies the games from the Internet onto the card. (note specifically that in the particular method of loading I picked, you can't use normal SNES roms; pirating SNES games isn't the point here)

I'm really looking more at an end-user device than a developer device. Running a game on SNES should be as easy as running it on your computer: Download it and execute. No burning to ROM; just copy it to a memory card and take it to your SNES.
atari2600a
Posts: 1330
Joined: Fri Jul 28, 2006 12:42 am
Location: Schwarzeneggerville, CA
Contact:

Post by atari2600a »

No, it writes the ROM temporarily to RAM.
Post Reply