X-Band Game Titles - Need Help on Checksums

This is an archive of a topic from NESdev BBS, taken in mid-October 2019 before a server upgrade.
View original topic
X-Band Game Titles - Need Help on Checksums
by on (#131481)
I've extracted the X-Band GameID's from the "SF2DXB.S04.SRM" X-Band SRAM dump. Aside from the GameID's, that file contains X-Band Newsletter from 30 Apr 1997 (dated shortly before the X-Band server was shut down), so the GameID list should be complete, containing all supported titles (unless they have discontinued some titles for whatever reason).

The X-Band GameID's consist of two 16bit values: The first one is the standard SNES checksum, found in cartridge header bytes [FFDE..FFDF]. The second one is a CRC-16-CCITT calculated across cartridge header bytes [FFB0..FFDB], ie. a 2Ch byte region.

The standard SNES checksums can be found in internet, for example google for superfamicom.org EB44 will tell you that it's the checksum for Super Mario Kart (U). Of course, that may get wrong in some cases as different games may have the same checksum.

The other checksum can be calculated as normal CCITT. For example, using the HxD Hexeditor: Load Super Mario Kart (U), select offset FFB0..FFDB (2Ch bytes), then click Analysis --> Checksums --> select CRC-16 CCITT, result will be 3D1C.

In the "SF2DXB.S04.SRM" file, the GameID list appears at SRAM offset 8BE0 and up (that memory is part of the Database, so other SRAM dumps may have the GameIDs other locations). The file contains all known X-Band US titles (in some cases with more than one supported version), and also several Japanese titles (which might put some light on which games have been supported in Japan - the SRAM dump appears to come from US though, so the japanese X-Band server might have supported different titles).

Code:
  Addr Bytes        Check CCITT verified Title
  -----------------------------------------------------------------------
  8BD0 06 00 00 00   0600 0000 N/A       (junk with CCITT=0000)
  8BD4 07 00 00 00   0700 0000 N/A       (junk with CCITT=0000)
  8BD8 08 00 00 00   0800 0000 N/A       (junk with CCITT=0000)
  8BDC 9A 02 00 00   9A02 0000 N/A       (junk with CCITT=0000)
  8BE0 AF 0D CE 55   AF0D 55CE           The Legend of Zelda: A Link to the Past (U)
  8BE4 2E 97 1F B1   2E97 B11F           Mortal Kombat II (v1.0) (U)
  8BE8 72 21 43 C0   7221 C043           Mortal Kombat II (v1.1) (U)
  8BEC 81 81 7E 12   8181 127E           NHL '95 (U)
  8BF0 AF D2 69 19   AFD2 1969           NBA Jam TE (Tournament Edition) (v1.0) (U)
  8BF4 61 0A 12 EF   610A EF12           Super Street Fighter II (U)
  8BF8 96 83 95 B8   9683 B895           Madden NFL '95 (U)
  8BFC FF FF FF FF   FFFF FFFF N/A       (junk, all FFh)
  8C00 EB 44 1C 3D   EB44 3D1C nocash    Super Mario Kart (U)    (CRC_16_CCITT[FFB0..FFDB]=3D1C)
  8C04 FF FF FF FF   FFFF FFFF N/A       (junk, all FFh)
  8C08 85 A5 72 05 * 85A5 0572           Weaponlord (J?) <-- uh, CCITT is SAME as in USA? does it have US-style gamecode (AWDE), too?
  8C0C 87 DD 72 05   87DD 0572 nocash    Weaponlord (U)          (CRC_16_CCITT[FFB0..FFDB]=0572)
  8C10 8C 3C 97 A8   8C3C A897           Ken Griffey Jr. Presents Major League Baseball (U)
  8C14 E2 A2 5A DF * E2A2 DF5A           Go! Go! Dodge League (V1.1) (J)
  8C18 45 C0 17 2D   45C0 2D17           Killer Instinct (v1.1) (EDIT: actually v1.0) (U)
  8C1C DB 3C 5D 08   DB3C 085D           Madden NFL '96 (v1.0) (U)
  8C20 A5 72 F3 25   A572 25F3           NHL '96 (U)
  8C24 B5 64 B5 94   B564 94B5 nocash    Doom (U)                 (CRC_16_CCITT[7FB0..7FDB]=94B5)
  8C28 71 49 48 05   7149 0548           Mortal Kombat 3 (v1.0) (U)
  8C2C EF 27 E6 83   EF27 83E6           Kirby's Avalanche (U)
  8C30 A0 DA 9F 53   A0DA 539F           Super Mario World (U)
  8C34 9A 02 00 00   9A02 0000 N/A       (junk with CCITT=0000)
  8C38 AF 0D CE 55   AF0D 55CE           The Legend of Zelda: A Link to the Past (U) <-- again?
  8C3C 03 21 22 D8 * 0321 D822           Super Street Fighter II (J)
  8C40 8A 23 2C 0A * 8A23 0A2C           Super Mario Kart (J)
  8C44 40 C6 42 84 * 40C6 8442           Kirby's Avalanche/Super Puyo Puyo (J) (v1.2)
  8C48 39 7C 21 B4 * 397C B421           Kirby's Avalanche/Super Puyo Puyo (J) (v1.1)
  8C4C 28 32 00 A4 * 2832 A400           Kirby's Avalanche/Super Puyo Puyo (J) (v1.0)
  8C50 FC 41 5B 92 * FC41 925B           Super Fire Pro Wrestling X (J)
  8C54 9A BF C3 6F * 9ABF 6FC3           Super Famista 5 (J)
  8C58 79 BD E2 7F * 79BD 7FE2           Esparks - Ijigen kara no Houmonsya (J)
  8C5C 0D 9E EB 35 * 0D9E 35EB           Super Tetris 2 & Bombliss (v1.1) (J) -or- Wolfenstein 3D (E)
  8C60 0D 9D CA 25 * 0D9D 25CA           Super Tetris 2 & Bombliss (v1.0) (J)
  8C64 EA 81 C9 74 * EA81 74C9           Super Tetris 2 & Bombliss Limited (J)
  8C68 B7 41 4B DF * B741 DF4B           Super Tetris 3 (J)
  8C6C 8A F3 B9 83 * 8AF3 83B9           Super Bomberman 4 (J)
  8C70 8C 8C E0 00   8C8C 00E0 N/A       (junk with CCITT=00E0) ie. NOT Arkanoid - Doh it Again (E) (and, looking the SRAM structure, 8C8C is obviously meant to be chaining to address 8C8C)
  8C74 A8 8B E0 00   A88B 00E0 N/A       (junk with CCITT=00E0)
  8C78 12 00 00 00   1200 0000 N/A       (junk with CCITT=0000)
  8C7C 00 00 04 00   0000 0004 N/A       (junk with CCITT=0004)


I've verifed both "Check" and "CCITT" values for Doom (U), Weaponlord (U), and SuperMarioKart (U).
For the other titles, I've verified only the "Check" value, but the "CCITT" one.

Could somebody help on verifiying that CCITT values? For example, load the ROM-image into HxD, and verify the CCITT value (as explained above) (for LoROM games use address 7Fxx instead FFxx). Then copy/paste the above table, and put your name into the "verified" column (or give some alert if the CCITT value didn't match with the table entry).

EDIT 4/2018 got more info via PM...
skaman wrote:
Code:
  Addr Bytes        Check CCITT verified Title
  -----------------------------------------------------------------------
  8BE0 AF 0D CE 55   AF0D 55CE skaman    The Legend of Zelda: A Link to the Past (U)       (CRC_16_CCITT[7FB0..7FDB]=55CE)
  8BE4 2E 97 1F B1   2E97 B11F skaman    Mortal Kombat II (v1.0) (U)                       (CRC_16_CCITT[FFB0..FFDB]=B11F)
  8BE8 72 21 43 C0   7221 C043 skaman    Mortal Kombat II (v1.1) (U)                       (CRC_16_CCITT[FFB0..FFDB]=C043)
  8BEC 81 81 7E 12   8181 127E skaman    NHL '95 (U)                                       (CRC_16_CCITT[FFB0..FFDB]=127E)
  8BF0 AF D2 69 19   AFD2 1969 skaman    NBA Jam TE (Tournament Edition) (v1.0) (U)        (CRC_16_CCITT[7FB0..7FDB]=1969)
  8BF4 61 0A 12 EF   610A EF12 skaman    Super Street Fighter II (U)                       (CRC_16_CCITT[FFB0..FFDB]=EF12)
  8BF8 96 83 95 B8   9683 B895 skaman    Madden NFL '95 (U)                                (CRC_16_CCITT[FFB0..FFDB]=B895)
  8C00 EB 44 1C 3D   EB44 3D1C nocash    Super Mario Kart (U)                              (CRC_16_CCITT[FFB0..FFDB]=3D1C)
  8C08 85 A5 72 05 * 85A5 0572 skaman    Weaponlord (J)                                    (CRC_16_CCITT[7FB0..7FDB]=0572)
  8C0C 87 DD 72 05   87DD 0572 nocash    Weaponlord (U)                                    (CRC_16_CCITT[FFB0..FFDB]=0572)
  8C10 8C 3C 97 A8   8C3C A897 skaman    Ken Griffey Jr. Presents Major League Baseball (U)(CRC_16_CCITT[7FB0..7FDB]=A897)
  8C14 E2 A2 5A DF * E2A2 DF5A           Go! Go! Dodge League (V1.1) (J)                   (CRC_16_CCITT[7FB0..7FDB]=5470)
  8C18 45 C0 17 2D   45C0 2D17 skaman    Killer Instinct (v1.0) (U) CORRECTED: WAS v1.1    (CRC_16_CCITT[FFB0..FFDB]=2D17)
  8C1C DB 3C 5D 08   DB3C 085D skaman    Madden NFL '96 (v1.0) (U)                         (CRC_16_CCITT[FFB0..FFDB]=085D)
  8C20 A5 72 F3 25   A572 25F3 skaman    NHL '96 (U)                                       (CRC_16_CCITT[FFB0..FFDB]=25F3)
  8C24 B5 64 B5 94   B564 94B5 nocash    Doom (U)                                          (CRC_16_CCITT[7FB0..7FDB]=94B5)
  8C28 71 49 48 05   7149 0548 skaman    Mortal Kombat 3 (v1.0) (U)                        (CRC_16_CCITT[FFB0..FFDB]=0548)
  8C2C EF 27 E6 83   EF27 83E6 skaman    Kirby's Avalanche (U)                             (CRC_16_CCITT[7FB0..7FDB]=83E6)
  8C30 A0 DA 9F 53   A0DA 539F skaman    Super Mario World (U)                             (CRC_16_CCITT[7FB0..7FDB]=539F)
  8C3C 03 21 22 D8 * 0321 D822 skaman    Super Street Fighter II (J)                       (CRC_16_CCITT[FFB0..FFDB]=D822)
  8C40 8A 23 2C 0A * 8A23 0A2C skaman    Super Mario Kart (J)                              (CRC_16_CCITT[FFB0..FFDB]=0A2C)
  8C44 40 C6 42 84 * 40C6 8442 skaman    Super Puyo Puyo (J) (v1.2)                        (CRC_16_CCITT[7FB0..7FDB]=8442)
  8C48 39 7C 21 B4 * 397C B421 skaman    Super Puyo Puyo (J) (v1.1)                        (CRC_16_CCITT[7FB0..7FDB]=B421)
  8C4C 28 32 00 A4 * 2832 A400 skaman    Super Puyo Puyo (J) (v1.0)                        (CRC_16_CCITT[7FB0..7FDB]=A400)
  8C50 FC 41 5B 92 * FC41 925B skaman    Super Fire Pro Wrestling X (J)                    (CRC_16_CCITT[FFB0..FFDB]=925B)
  8C54 9A BF C3 6F * 9ABF 6FC3 skaman    Super Famista 5 (J)                               (CRC_16_CCITT[7FB0..7FDB]=6FC3)
  8C58 79 BD E2 7F * 79BD 7FE2           Esparks - Ijigen kara no Houmonsya (J)            (CRC_16_CCITT[FFB0..FFDB]=F347)
  8C5C 0D 9E EB 35 * 0D9E 35EB skaman    Super Tetris 2 & Bombliss (v1.1) (J)              (CRC_16_CCITT[7FB0..7FDB]=35EB)
  8C60 0D 9D CA 25 * 0D9D 25CA skaman    Super Tetris 2 & Bombliss (v1.0) (J)              (CRC_16_CCITT[7FB0..7FDB]=25CA)
  8C64 EA 81 C9 74 * EA81 74C9 skaman    Super Tetris 2 & Bombliss Limited (J)             (CRC_16_CCITT[7FB0..7FDB]=74C9)
  8C68 B7 41 4B DF * B741 DF4B skaman    Super Tetris 3 (J)                                (CRC_16_CCITT[7FB0..7FDB]=DF4B)
  8C6C 8A F3 B9 83 * 8AF3 83B9 skaman    Super Bomberman 4 (J)                             (CRC_16_CCITT[FFB0..FFDB]=83B9)

UNKNOWN ENTRIES:
  8C14 E2 A2 5A DF * E2A2 DF5A [5470]    Go! Go! Dodge League (V1.1) (J)
  8C58 79 BD E2 7F * 79BD 7FE2 [F347]    Esparks - Ijigen kara no Houmonsya (J)

I also corrected the Killer Instinct to v1.0.

EDIT: I found the Weaponlord (J) in some ROM sets for old SF copiers. The game title was hacked in the two versions of the ROM that I found. I patched in the Weaponlord (U) header into the one ROM that works and the resulting internal checksum is correct.
Re: X-Band Game Titles - Need Help on Checksums
by on (#131522)
I've found the FindGamePatch function. In the SNES/Xband(U) bios, it's function 04Ah, located at D655FB. It's first scanning the database for patches with matching GameIDs (at D65651). If the database doesn't contain anything useful, then then it does check fixed location E00200 for matching GameID (at D6:569B).

The good and bad news are: Theoretically each SRAM dump could contain more than one patch (the database is programmed to deallocate old patches only when running out of memory). Unfortunately, the three existing SRAM dumps are containing only one patch - in total. The "benner" dump contains a Super Mario Kart (U) patch. And the "SF2DXB" and "luke2" dumps don't contain any patches at all (don't know that has happened - they contain newsletters and xmails and everything, but no patches). Anyways, at least the Super Mario Kart (U) patch does exist, so one could get some idea on what kind of efforts they put into patching.

Does anybody have the ROMs listed above? Would be really nice to get the CCITT's verified, especially for the japanese titles since there seem to be no other sources for confirming which games have been supported in japan!

The title that I am most unsure about is Weaponlord (J), it's mentioned at http://members.tripod.com/tokyo_garakuta/nichipon.htm with Checksum=85A5, but I don't know if that game was released in japan at all, and the CCITT value suggests that the "japanese" version is using the same header as the us version, which shouldn't happen, unless the header wasn't set up properly, or unless it was an us-beta version rathern than a japanese version...