SFROM Format (SNES Nintendo Switch Online)
Format information for the .sfrom
files used on the SNES Nintendo Switch Online app.
All values are little endian unless stated otherwise.
Footer
Found at the end of the ROM file:
Start | Size | Description | Notes |
---|---|---|---|
0x00 | n | Game Info Data | This is explained later. |
n | 0x4 | Game Info Data Size | |
n+0x4 | 0x4 | Magic Number "Can1" |
Game Tag Data
Hex | Tag | Size | Value | Description | Notes |
---|---|---|---|---|---|
0x41 | A | 0x3? | 00 00 00 | Armet Threshold? | |
0x44 | D | 0x4 | XX XX XX <Data> | S-DD1 Data | XX XX XX = Size of S-DD1 Data (Little Endian) |
0x47 | G | 0x5 | 02 00 00 PP PP | Preset ID | PP PP = Preset ID (Little Endian) |
0x50 | P | 0x7 | 04 00 00 1E 00 00 00 | Flags? | Seen in Joe & Mac 2 |
0x53 | S | 0x3? | 00 00 00 | ??? | |
0x55 | U | 0x5? | 02 00 00 XX XX | SuperFX Clock Speed? | |
0x61 | a | 0x1 | XX | Armet Version? | |
0x63 | c | 0x1 | XX | SNES Header Location? | |
0x64 | d | 0x1 | XX | ??? | (Added in 2.4.0) |
0x65 | e | 0x1 | XX | Enhancement Chip | See Enhancement Chip list values below. |
0x68 | h | 0x1 | XX | Resolution Ratio | 0 = 256x224 (1:1), 1 = 512x224 (2:1), 2 = 256x448 (1:2), 3 = 512x448 (2:2) |
0x6A | j | 0x1 | XX | ??? | Seen in Super Mario Kart & Brawl Brothers with value 0x38. |
0x6D | m | 0x1 | XX | Mouse Flag | Enables mouse if not 0x00 |
0x70 | p | 0x1 | XX | Max amount of players | Seen with values 1, 2, and 4 (Super Puyo Puyo 2) |
0x72 | r | 0x1 | XX | Visible Height | Amount of visible vertical pixels, it stretches vertically. (0x00 = 224 by default, 0xEF = 239 for overscan) |
0x74 | t | 0x1 | XX | ??? | Only seen with value 0x06 and 0x07 (Super Tennis) |
0x76 | v | 0x1 | XX | Volume? | Always different between games |
Format documentation from DarkAkuma and other SFROM SNES Classic research.
SFROM Format (SNES Mini / Classic)
Format information for the .sfrom
files used on the SNES Mini / SNES Classic.
Header
Start | Size | Description | Notes |
---|---|---|---|
0x00 | 0x4 | 0x00000100 | |
0x04 | 0x4 | File size | Includes the header and footer |
0x08 | 0x4 | Location of ROM | Always 0x00000030 in official files |
0x0C | 0x4 | Location of PCM samples | Comes after end of ROM in official files |
0x10 | 0x4 | Location of PCM footer | Equals file size if PCM data missing |
0x14 | 0x4 | Location of footer (below) | Same as New 3DS's SNES VC header starting from 0x30 |
0x18 | 0x4 | Location of S-DD1 data offset | Footer location + 0x2C |
0x1C | 0x4 | 0x00000000 | |
0x20 | 0x4 | Unknown | Footer location + 0x1B. Some kind of a flag? |
0x24 | 0x8 | Wii U Virtual Console Game ID | WUP-J**X, X — title region (E = USA, J = Japan, P = EUR) |
0x2C | 0x4 | 0x00000000 |
Footer
Start | Size | Description | Notes |
---|---|---|---|
0x00 | 0x1 | Emulation speed in FPS | 0x3C == 60 FPS, 0x32 == 50 FPS |
0x01 | 0x4 | ROM Size | |
0x05 | 0x4 | Size of PCM samples | 0 if missing |
0x09 | 0x4 | Size of PCM footer | 0 if missing |
0x0D | 0x2 | Game preset ID | Varies between games |
0x0F | 0x1 | Amount of players | Usually 0x02. Setting to 0x0 disables the second controller |
0x10 | 0x1 | Sound Volume | |
0x11 | 0x1 | ROM Type | 0x14 (20) for LoROM and 0x15 (21) for HiROM |
0x12 | 0x1 | Enhancement Chip | See Enhancement Chip list values below. |
0x1B | 0x4 | Unknown | Usually 0x00000001, sometimes 0x00000000 |
0x1F | 0x4 | Unknown | Always 0x00000001 |
Taken from this gist, which was taken from this pastebin from @Cluster_M, cleaned up with anpage's own findings added in. The pastebin was originally written by pcm720 on the GBAtemp forums.
Some corrected information from DarkAkuma's documentation here
Common Info
You can find a list of Game Preset IDs used in this spreadsheet: https://docs.google.com/spreadsheets/d/1PbIPVA4NpFEXs1zk249aR3FSuBTY3r-ajpTq3dP3GnQ
Enhancement Chips Value List
Found by Bosco82.
Value | Usage |
---|---|
0x00 | Normal |
0x02 | DSP-1 |
0x03 | S-DD1 |
0x04 | Cx4 |
0x05 | Mega Man X (Copy protection fix?) |
0x06 | SA-1 |
0x07 | SA-1 |
0x08 | SA-1 |
0x09 | SA-1 |
0x0A | SA-1 |
0x0B | SA-1 |
0x0C | SuperFX / GSU |