These are the SNES file extensions currently in use:
Code:
*.sfc *.bs *.st *.nss
*.smc *.swc *.fig *.ufo *.gd3 *.gd7 *.dx2 *.mgd *.mgh
*.048 *.058 *.068 *.078 *.bin *.usa *.eur *.jap *.aus *.bsx
And yes, they are all still in use, and people will mention it if you don't support them. You can thank the ZSNES team for that. *.bin is my favorite.
*.smc is also used for Game Park images, standing for SmartMedia Card.
Headers can also be stored at $40ffc0 or $4010c0.
You can usually detect a copier header via bool hasCopierHeader = (fileSize & 0x7fff) == 512; but this will fail on a lot of PD ROMs, such as koitsu's.
RAM size calculation is different for SuperFX games, it is:
ramSize = 1024 << header[-3] & 7;
if(ramSize == 1024) ramSize = 0;
-3 is correct, Nintendo revised the header standard to start at 7fb0, etc in later cartridges. So it would be eg $7fbd, $ffbd, etc.
Detecting a SuperFX game is as "easy" as:
hasSuperFX = (mapperid == 0x20 && (rom_type == 0x13 || rom_type == 0x14 || rom_type == 0x15 || rom_type == 0x1a));
I don't know what make_sram is or does, but if its name is not deceptive, different games will break based upon which value you fill SRAM with.
Ken Griffey Jr's menu doesn't work unless SRAM is initialized to 0xff, and Powerslide FX will crash unless SRAM is initialized to 0x00.
Geez, why aren't there more SNES emulators, again? :)