Skip to main content
NESdev Wiki
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

FamicomBox database

The FamicomBox menu cartridge contains a database of game checksums for games that do not have a Nintendo header, allowing them to be detected by the menu software as valid (assuming they have a matching 3198 CIC) and displayed in the menu with an appropriate title. This enabled some games in this list to be released without any modification to the ROM, which could be expensive and invasive.

Format

Each entry is 32 bytes long:

  • $00-$01 : Full PRG checksum. Big-endian sum of the largest region detected to contain unique data ($E000-$FFFF, $C000-$FFFF, or $8000-$FFFF).
  • $02  : Title length - 1 (1-15 = 2-16 bytes).
  • $03-$12 : Title of the game, in ASCII, left-justified. Normally padded with spaces ($20).
  • $13-$1C : Padding. These are always padded in valid entries with spaces ($20).
  • $1D-$1E : Upper PRG checksum. If present, big-endian sum of $E000-$FFFF if that is the largest region with unique data, or of $C000-$FFFF otherwise. This allows just the upper half of the unique data to be checked, which can work around collisions or unreliable mapper power-on state.
  • $1F : Upper PRG checksum present (0 = present).

Invalid entries are filled with $FF.

Lookup algorithm

The FamicomBox software only falls back on a database lookup if it does not find a valid Nintendo header at $FFE0-$FFF9 in the CPU address space. To generate a database checksum, it does the following steps:

  1. $00 is written to the first address containing $00 that it finds starting at $8000; this configures some mappers, such as UNROM and GNROM, to use bank 0. If there is no $00 value in $8000-$FFFF, address $0000 is harmlessly read then written.
  2. Two checksums are produced: a “full-checksum” that includes all of the unique data and an “upper-checksum” that sums only $E000-$FFFF if that is the largest region with unique data or $C000-$FFFF otherwise.
    1. First, it sums $C000-$DFFF for the full-checksum and $E000-$FFFF for the upper-checksum. While summing, each byte of the two regions is compared. If the regions are byte-for-byte identical, checksumming is complete and both checksums contain the sum of $E000-$FFFF.
    2. Otherwise, it sums $8000-$BFFF for the full-checksum and $C000-$FFFF for the upper-checksum. If the regions are byte-for-byte identical, checksumming is complete and both checksums contain the sum of $C000-$FFFF.
    3. Otherwise, it combines the full- and upper-checksums and stores the result as the full-checksum. The full-checksum contains the sum of $8000-$FFFF and the upper-checksum contains the sum of $C000-$FFFF.
  3. If the full-checksum is $FFFF, the database search is skipped and the cartridge is marked as valid with no title, and the process is complete.
  4. The database is searched from the beginning ($A000).
    1. If byte $1F of the database entry is 0, bytes $1D-$1E are compared against the upper-checksum. If they match, the cart is valid and we use this entry for the title. If the low bytes differ, this database entry is skipped. If only the high byte differs, or if byte $1F isn’t 0, it continues on to the full-checksum.
    2. Bytes $00-$01 are compared against the full-checksum. If they match, the cart is valid and we use this entry for the title. Otherwise, we advance to the next entry.
    3. If we advanced to $C000, the cart is not valid.

Entries

The default sorting for this table is the order they appear in the database. Said ordering appears to consist of two blocks - one block for later game revisions and another block for earlier revisions, roughly in release date order. First-party titles in particular follow the exact release order[1] - the launch titles Donkey Kong, Donkey Kong Jr., and Popeye are the first in each block.

There are empty entries with checksum $FFFF, which are noted as such. There are 82 more empty entries beyond “BABEL”, the last valid entry, which are omitted from the table for brevity.

TitleChecksumGame versionNotes
FullUpper
DONKEY KONG$1104Donkey Kong (World) (Rev 1)
DONKEY KONG JR.$F97CDonkey Kong Jr. (World) (Rev 1)
POPEYE$2F81Popeye (World) (Rev 1)
MARIO BROS.$AAB1Mario Bros. (World)
MAH-JONG$E300Mahjong (Japan) (Rev 1), Mahjong (Japan) (Rev 2)
GOMOKU-NARABE$A54BGomoku Narabe (Japan)
SANSUU ASOBI$02AFDonkey Kong Jr. no Sansuu Asobi (Japan)
EIGO ASOBI$62DBPopeye no Eigo Asobi (Japan)
BASEBALL$7792Baseball (Japan)
PINBALL$6B06Pinball (Japan, USA)
TENNIS$076ATennis (Japan, USA)
WILD GUNMAN$1783Wild Gunman (World) (Rev 1)
DUCK HUNT$8261Duck Hunt (World)
GOLF$AF78Golf (Japan)
HOGAN'S ALLEY$E84AHogan's Alley (World)
DONKEY KONG 3$8C5FDonkey Kong 3 (World)
NUTS & MILK$A00ENuts & Milk (Japan)
LODE RUNNER$6407Lode Runner (Japan)
DEVIL WORLD$081ADevil World (Japan) (Rev 1)
YONIN-UCHI$0D814 Nin Uchi Mahjong (Japan) (Rev 1)
F1 RACE$9342F1 Race (Japan)
URBAN CHAMPION$FB3CUrban Champion (World)
CLU CLU LAND$BB8AClu Clu Land (World)
EXCITEBIKE$A6A0Excitebike (Japan, USA)
BALOON FIGHT$BDF9Balloon Fight (Japan)
ICE CLIMBER$E710Ice Climber (Japan)
BUNGELING BAY$8C9CRaid on Bungeling Bay (Japan) (Rev 1)
CHAMPIONSHIP$3683Championship Lode Runner (Japan)
SOCCER$FD07Soccer (Japan, USA)
FLAPPY$3809Flappy (Japan)
STAR FORCE$5BD4Star Force (Japan)
WRECKING CREW$6935Wrecking Crew (World)
SPARTAN X$4270Spartan X (Japan)
DOOR DOOR$411EDoor Door (Japan)
ASTRO-ROBO SASA$C964Astro Robo Sasa (Japan)
GEIMO$A73EGeimos (Japan)The title data contains "GEIMOS", but the title length is off by 1
POOYA$92F4Pooyan (Japan)The title data contains "POOYAN", but the title length is off by 1
SUPER MARIO$44B9Super Mario Bros. (World)
CHALLENGER$AF86Challenger (Japan)
PACHICON$9114Pachicom (Japan)
MACH RIDER$13DEMach Rider (Japan, USA) (Rev 1)
PORTPIA$086EPortopia Renzoku Satsujin Jiken (Japan)
ONYANKO TOWN$3939Onyanko Town (Japan)
PENGUIN-KUN WARS$832BPenguin-kun Wars (Japan)
DOUGH BOY$F9F9Dough Boy (Japan)
LUNAR BALL$5C2FLunar Ball (Japan)
EXED EXES$4E76Chou Fuyuu Yousai Exed Exes (Japan)
LOT LOT$FB6ELot Lot (Japan)
KARATEKA$B09CKarateka (Japan)
1942$024F1942 (Japan, USA)
SON SON$BDDESon Son (Japan)
VOL GUARD 2$EBF4Volguard II (Japan)
THEXDER$B14BThexder (Japan)
ZUNO-SENKAN GARU$B224Zunou Senkan Galg (Japan)
BOKOSUKA WARS$03FDBokosuka Wars (Japan)
BINARYLAND$82A8Binary Land (Japan)
HATTORI-KUN$287ANinja Hattori-kun - Ninja wa Syugyou de Gozaru no Maki (Japan)
BOMBER MAN$BF54Bomberman (Japan)
MAGMAX$58E3Magmax (Japan)
CIRCUS CHARLIE$178ECircus Charlie (Japan)
BALTRON$A8BABaltron (Japan)
HYDLIDE SPECIAL$4207Hydlide Special (Japan)
DRAGON QUEST$34AEDragon Quest (Japan)
KEISAN-GAME 1$38BCSansuu 1 Nen - Keisan Game (Japan)
KEISAN-GAME 2$F339Sansuu 2 Nen - Keisan Game (Japan)
KEISAN-GAME 3$6D4FSansuu 3 Nen - Keisan Game (Japan)
SUPAI VS SUPAI$1A81Spy vs Spy (Japan)
SECROSS$0AF7Seicross (Japan) (Rev 1)
MIGHTY BOMB JACK$C3CEMighty Bomb Jack (Japan) (Rev 1)
B-WING$6673B-Wings (Japan)
BIRD-WEEK$84BCBird Week (Japan)
STAR SOLDIER$8355Star Soldier (Japan)
YIE AR KUNG-FU$8C18Yie Ar Kung-Fu (Japan) (Rev 1.2)
EXERION$7332Exerion (Japan)
ELEVATOR ACTION$CDBAElevator Action (Japan) (Rev 0)
GALAGA$83E4$83E4Galaga (Japan)Specifies checksums for both $8000-$BFFF and $C000-$FFFF
ZIPPY RACE$E95EZippy Race (Japan)
ANTAR. ADVENTURE$7B59Kekkyoku Nankyoku Daibouken (Japan) (Rev 0)
SUPER ARABIAN$9F1ESuper Arabian (Japan)
SPACE INVADERS$3001Space Invaders (Japan)
XEVIOUS$C6A9Xevious (Japan) (Rev 1)
CHACK'N POP$BC5FChack'n Pop (Japan)
DIG DUG$3745Dig Dug (Japan)
10-YARD FIGHT$033910-Yard Fight (Japan) (Rev 0)
NINJA-KUN$F6E8Ninja-kun - Majou no Bouken (Japan) (Rev 1)
HYPER OLYMPIC$A4A4Hyper Olympic (Japan)
PAC-MAN$2C69Pac-Man (Japan) (Rev 0)
FIELD COMBAT$F147Field Combat (Japan)
FORMATION Z$4656Formation Z (Japan) (Rev 1)
FRONT LINE$11C1Front Line (Japan)
MAPPY$E929Mappy (Japan)
ROAD FIGHTER$C7CFRoad Fighter (Japan)
DRUAGA$83E4$B88DDruaga no Tou (Japan)Relies on $C000-$FFFF checksum because of collision with Galaga
BATTLE CITY$4218Battle City (Japan)
WARPMAN$08D8Warpman (Japan)
HYPER SPORTS$5600Hyper Sports (Japan) (Rev 0)
HONSHOGI$9B81Honshougi - Naitou 9 Dan Shougi Hiden (Japan)
CITY CONNECTION$D8EECity Connection (Japan)
ROUTE-16 TURBO$1876Route-16 Turbo (Japan)
PAC-LAND$9D5BPac-Land (Japan)
BURGER TIME$9B98BurgerTime (Japan)
JAJAMARU-KUN$2052Ninja Jajamaru-kun (Japan)
SKY DESTROYER$76B0Sky Destroyer (Japan)
TWIN BEE$0300TwinBee (Japan)
KINNIKUMAN$7F7BKinnikuman - Muscle Tag Match (Japan) (Rev 1)
STAR LUSTER$8742Star Luster (Japan)
IKKI$A2D3Ikki (Japan)
OBAKE-NO Q-TARO$5DD6Obake no Q Tarou - Wanwan Panic (Japan)
$FFFF(Empty)
MACROSS$7BB9Choujikuu Yousai - Macross (Japan)
$FFFF(Empty)
SPELUNKER$99D0Spelunker (Japan)
GYRODINE$1D0DGyrodine (Japan)
$FFFF(Empty)
$FFFF(Empty)
MAKAIMURA$B7A5Makaimura (Japan)UNROM - Checksum is bank 0 + bank 7
$FFFF(Empty)
$FFFF(Empty)
$FFFF(Empty)
$FFFF(Empty)
SUPER CHINESE$E74AThis doesn't seem to match any configuration of banks for Super Chinese (Japan)
$FFFF(Empty)
$FFFF(Empty)
$FFFF(Empty)
$FFFF(Empty)
$FFFF(Empty)
$FFFF(Empty)
$FFFF(Empty)
DONKEY KONG$03ECDonkey Kong (Japan) (Rev 0)
DONKEY KONG JR.$E7C4Donkey Kong Jr. (Japan) (Rev 0)
POPEYE$2950Popeye (Japan) (Rev 0)
MAH-JONG$C446Mahjong (Japan) (Rev 0)
WILD GUNMAN$2ED6Wild Gunman (Japan, USA) (Rev 0)
DEVIL WORLD$07FBDevil World (Japan) (Rev 0)
YONIN-UCHI$11BA4 Nin Uchi Mahjong (Japan) (Rev 0)
MACH RIDER$0F7EMach Rider (Japan, USA) (Rev 0)
BUNGELING BEY$9108Raid on Bungeling Bay (Japan) (Rev 0)
CASTLE EXCELLENT$BCBDCastle Excellent (Japan)
MIGHTY BOMB JACK$3777Mighty Bomb Jack (Japan) (Rev 0)
A S$8523ASO - Armored Scrum Object (Japan)The title data contains "A S O", but the title length specifies only 3 bytes
SOROMON NO KAGI$1A7CSolomon no Kagi (Japan)
KING' KNIGHT$3652King's Knight (Japan)
HOKUTO NO KEN$1F3FHokuto no Ken (Japan)
TERRA CRESTA$3EB7Terra Cresta (Japan)UNROM - Checksum is bank 0 + bank 7
BANANA$801EBanana (Japan)
SUPER PITFALL$F7BDSuper Pitfall (Japan)UNROM - Checksum is bank 0 + bank 7
GHOSTBUSTERS$C0CAGhostbusters (Japan)
BOUKENJIMA$7D7ETakahashi Meijin no Bouken-jima (Japan)
SENJYO NO OHKAMI$2B2FSenjou no Ookami (Japan)UNROM - Checksum is bank 0 + bank 7
SPACE HUNTER$2B9CSpace Hunter (Japan)
BUGGY POPPER$934BBuggy Popper (Japan)
OTHELLO$BC8DOthello (Japan) (Rev 0)
SUPER STAR FORCE$E152Super Star Force (Japan)UNROM - Checksum is bank 0 + bank 7
TRANSFORMER$78E6Tatakae! Chou Robot Seimeitai Transformers - Convoy no Nazo (Japan)
KEISAN GAME 4$28D3Sansuu 4 Nen - Keisan Game (Japan)
KEISAN GAME 5-6$9F2BSansuu 5 & 6 Nen - Keisan Game (Japan)
SUPER MONKEY$9458Ganso Saiyuuki - Super Monkey Daibouken (Japan)
DAIVA$CF6BDaiva - Imperial of Nirsartia (Japan)UNROM - Checksum is bank 0 + bank 7
IKARI$8C23Ikari (Japan)UNROM - Checksum is bank 0 + bank 7
CAT IN BOOTS$1C9BNagagutsu o Haita Neko - Sekai Isshuu 80 Nichi Daibouken (Japan)
MEIKYU-KUMIKYOKU$B1C0Meikyuu Kumikyoku - Milon no Daibouken (Japan)
AIGINA$70DCAigina no Yogen - Balubalouk no Densetsu Yori (Japan)UNROM - Checksum is bank 0 + bank 7
TIGER HELI.$3E3FTiger-Heli (Japan)
HOTTERMAN$349EHottarman no Chitei Tanken (Japan)
CRAZY CLIMBER$F13FCrazy Climber (Japan)Mapper 180 - Checksum is bank 0
TOKI NO TABIBITO$8E14Toki no Tabibito - Time Stranger (Japan)UNROM - Checksum is bank 0 + bank 7
SHERLOCK HOLMES$A4CESherlock Holmes - Hakushaku Reijou Yuukai Jiken (Japan)UNROM - Checksum is bank 0 + bank 7
SEIKIMATSU$0161Seikima II - Akuma no Gyakushuu! (Japan)
DORAEMON$952DDoraemon (Japan)GNROM - Checksum is bank 0
TATAKAI NO BANKA$4F73Tatakai no Banka (Japan) (Rev 0)UNROM - Checksum is bank 0 + bank 7
LAYLA$0CEBLayla (Japan)UNROM - Checksum is bank 0 + bank 7
SKYKID$3707Sky Kid (Japan)Mapper 206 (no banking) - Checksum is bank 0 + bank 1 + bank 2 + bank 3
SUPER CHINESE$0B16Super Chinese (Japan)Mapper 206 (no banking) - Checksum is bank 0 + bank 1 + bank 2 + bank 3
BABEL$F4C8Babel no Tou (Japan)Mapper 206 - Checksum is bank 0 + bank 0 + bank 2 + bank 3
  1. ↑ https://www.nintendo.com/jp/famicom/software/index.html

Edit this page on GitHub