mirror of
https://github.com/MiSTer-devel/Main_MiSTer.git
synced 2026-05-31 03:04:12 +00:00
Autodetect settings by ID
Settings are saved in the database text files as usual, but you can match by both MD5 (first 4096), MD5 (full) as well as ID + region + revision.
This commit is contained in:
591
N64-database.txt
Normal file
591
N64-database.txt
Normal file
@@ -0,0 +1,591 @@
|
||||
# MD5 checksums
|
||||
9f8baba5c495a9f7b6dcbc3408a73b47 ntsc|cic5167|rpak # Kyojin no Doshin: Kaihou Sensen Chibikko Chikko Daishuugou
|
||||
c3dab980b1ed28f98b8a5de0d2e654d5 ntsc|cic5167|rpak|tpak # Kyojin no Doshin 1
|
||||
f9aa89a81a34262df3695f092b9eca23 ntsc|cic5167|rpak|tpak # Kyojin no Doshin 1 (Kiosk Demo)
|
||||
4df8e04babc9fbf9d67b72cc3e952c8a ntsc|cic5167|rpak|tpak # Doshin The Giant 1 Save Fix v1.1 ozidual
|
||||
ceeecd40d732920a54d984c801cd0a7d ntsc|cic5167|rpak|tpak # Japan Pro Golf Tour 64 Zoinkity
|
||||
4e2883582336704946a932d92b4d38ba ntsc|cic5167|rpak|tpak # Mario Artist: Communication Kit
|
||||
d93786dc42c8aee0e87c7edf5b13825d ntsc|cic5167|rpak|tpak # Mario Artist Paint Studio v2.1 LuigiBlood
|
||||
1ec5a61fec93dafc8c778a892f673ec7 ntsc|cic5167|tpak # Mario Artist: Paint Studio
|
||||
fc0567621d5780172471a9b51f06492e ntsc|cic5167|rpak|tpak # Mario Artist Polygon Studio v3 LuigiBlood
|
||||
92e5dad9ded5b0b5597b441e3deed824 ntsc|cic5167|rpak|tpak # Mario Artist: Polygon Studio
|
||||
cd4acef57f60c6df16b74019beebbbf4 ntsc|cic5167|rpak|tpak # Mario Artist Talent Studio v2.1 LuigiBlood
|
||||
a91aa83cf0ad4d87a17bcf8c52b26e1e ntsc|cic5167|tpak # Mario Artist: Talent Studio
|
||||
bf3a62a2b10cdb51d11f4d6ae2821a45 ntsc|cic5167|rpak|tpak # Sim City 64 v0.6.38 ozidual
|
||||
ce5eeb8d265caf02158b8cb2cd395678 ntsc|cic5167|rpak|tpak # Sim City 64 v1.1 Fixed RTC ozidual
|
||||
553b998b6b41704e2501c58ea44cfb10 ntsc|cic5167|rpak|tpak # Sim City 64
|
||||
ee207a2a00807d5d707744f9746ef09c ntsc|cic5101|eeprom512 # Donchan Puzzle Hanabi de Doon! (Aleck64)
|
||||
d1103bc65cbb0b39eb7b44d15ddf3f93 ntsc|cic5101|eeprom512 # Kuru Kuru Fever (Aleck64)
|
||||
bbd08208cece16cb79ce35e17223239c ntsc|cic5101|eeprom512 # Star Soldier - Vanishing Earth Arcade (Aleck64)
|
||||
45d621969ab0c22756bd6f6e34622119 ntsc|cic5101|eeprom512 # Tower&Shaft (Aleck64)
|
||||
f526f5fcb87a49425ea481dbe4cddea9 ntsc|cic5101|eeprom512 # Vivid Dolls (Aleck64)
|
||||
b17df851db300b5e022dcdd1f44bc6b4 ntsc|cic6102|rpak # 007 - Goldfinger
|
||||
ece76545ef6166fc358b723976940496 ntsc|cic6102|rpak # Jet Force Gemini (Kiosk Demo) (Save)
|
||||
98f8f88ec7473d0c9eb943562c510471 ntsc|cic6102|cpak|rpak # Turok 2 - Seeds of Evil (Kiosk Demo) (Gore On Hack)
|
||||
48f24bfc6dad044488d13832def2a129 ntsc|cic6102 # 77a by Count0
|
||||
4d7cf6a2d2cd1c68809adc117455658a ntsc|cic6102|eeprom2k # 77a Special Edition by Count0
|
||||
e3cc7b27dbd77b44370550543be0b19a ntsc|cic6102 # Dexanoid R1 by Protest Design
|
||||
87e561dbf026663a3fccd0c0d9957d93 ntsc|cic6102 # Puzzle Master 64 by Michael Searl
|
||||
120134d4066a6828ab628f42cf373b59 ntsc|cic6102|rpak|tpak # Nintendo 64DD IPL (Japan) (v1.0) (Beta)
|
||||
c9eb0cc708d102f0fa39a4c2526221ff ntsc|cic6102|rpak|tpak # Nintendo 64DD IPL (Japan) (v1.1) (Beta)
|
||||
f08b3f4a3d0d817d07b12b1a328838d8 ntsc|cic6102|rpak|tpak # 64DD IPL
|
||||
45aee9ae64d338bc6a106498a5f90f60 ntsc|cic6102|cpak # Aidyn Chronicles - The First Mage (Beta)
|
||||
06b9992af56c7c71731b6b4285b7302a ntsc|cic6102|cpak # Aidyn Chronicles - The First Mage (Beta)
|
||||
a10468fa587e42ae87ab4ba57599b835 ntsc|cic6102|flash128k|rpak # StarCraft 64 (Beta)
|
||||
f13caf119c0ce9e18d0b89889172e3f0 ntsc|cic6102|cpak|rpak # Top Gear Hyper Bike (Beta)
|
||||
c312f11c7820b77b4283cea212c12f45 pal|cic7101|cpak|rpak # Top Gear Rally 2 (Beta)
|
||||
b4515d4cb78ad023293e4af5e299da78 pal|cic7101|cpak|rpak # Turok 3 - Shadow of Oblivion (Beta)
|
||||
03d67ad8740d56aaed87f99b5d31160f pal|cic7101|cpak|rpak # Turok 3 - Shadow of Oblivion (Europe) (Beta)
|
||||
3b58a13798b90e6f575a6beb26b30ccf pal|cic7101|cpak|rpak # Turok 3 - Shadow of Oblivion (Beta)
|
||||
a2078ab139fbd1e909e719a7a1c28a19 pal|cic7101|cpak|rpak # Turok 3 - Shadow of Oblivion (Beta)
|
||||
7fcd7b02d8fff45d57a949cec0ec3caf ntsc|cic6103|eeprom2k|cpak|rpak # Excitebike 64 (Kiosk Demo)
|
||||
a43fb11b4dff63f07942cbe304b0e899 ntsc|cic6105|rpak # Jet Force Gemini (Kiosk Demo)
|
||||
cdf5c8b9c7f0d25d70288078c16d2524 ntsc|cic6105|rpak # Legend of Zelda, The - Majora's Mask - Preview Demo
|
||||
e8f4d76f55afce0697b51173a9382a37 pal|cic7101|cpak|rpak # Turok 2 - Seeds of Evil (Kiosk Demo)
|
||||
6b65043e5a394f7c97db83773759ef55 ntsc|cic6102|cpak|rpak # Turok 2 - Seeds of Evil (Kiosk Demo)
|
||||
75cd95d338f72d7946768c32bc87958d pal|cic7101|cpak|rpak # Carmageddon 64 (Eng-Spa-Fre-Ger)
|
||||
8f7f717e489f1a087b4a63107957c096 ntsc|cic6102|eeprom512|cpak # Mario Kart 64 (Super W00ting Hack)
|
||||
a104cbee34d1a6ab7e127b6b27eadf6f pal|cic7101 # Wet Dreams Readme by Immortal
|
||||
76f40c0b400800f2084d48cb0eb80272 ntsc|cic6102|flash128k|cpak # Derby Stallion 64 (Beta)
|
||||
f88630ca78e2466fcf78202554a389fd pal|cic7101|cpak|rpak # Turok 3 - Shadow of Oblivion (Beta)
|
||||
f243e960436e0211bdf47aa0bc564ad3 pal|cic7101|cpak|rpak # Turok 3 - Shadow of Oblivion (Beta)
|
||||
41f99942de80d05e3e990fef05dfd8f0 ntsc|cic6102|eeprom512|cpak # 64 de Hakken!! Tamagotchi Minna de Tamagotchi World
|
||||
93ca3185b7734087ff7edb9e9d8bad26 ntsc|cic6102|eeprom512|cpak|rpak # Airboarder 64
|
||||
010f78a515aaa060485246e3711353b7 ntsc|cic6102|eeprom512|cpak|rpak # Airboarder 64
|
||||
3d87695dc127b7446d655778a40666a2 ntsc|cic6102|eeprom512|rpak # Wild Choppers
|
||||
0d5249ebf21cd05a8734a590514425f3 ntsc|cic6102|cpak # Eikou no Saint Andrews
|
||||
67939e51cdf144a894526e01eb1f23d2 ntsc|cic6102|cpak|rpak # Extreme-G
|
||||
e41621a8783c05493251469e7a30b033 pal|cic7101|cpak # International Superstar Soccer 64
|
||||
d02f4df5c9ba0f5a10a2434af11f5cf1 ntsc|cic6102|rpak|tpak # Japan Pro Golf Tour 64 (64drive 1.12d Compatible V1.0)
|
||||
80262256f5aa05d48f89c516be16420a ntsc|cic5167|rpak|tpak # Japan Pro Golf Tour 64
|
||||
cfe93dea250048880f415fc5bc7188e2 ntsc|cic6105|rpak # Jet Force Gemini (Kiosk Demo)
|
||||
a7f0268ba5dd49db0117e9c2214d5eb7 ntsc|cic6102|rpak|tpak # Kyojin no Doshin (Demo) (64drive 1.12d Compatible V1.0)
|
||||
37a73750f84bf5cae0fbec2eba033a26 ntsc|cic6102|rpak|tpak # Kyojin no Doshin (64drive 1.12d Compatible V1.0)
|
||||
318ecad8366785fbccccae62f1c8bfa2 ntsc|cic6102|rpak|tpak # Kyojin no Doshin - Kaihou Sensen Chibikko Chikko Daishuugou (64drive 1.12d Compatible V1.0)
|
||||
3e488fe2e3c6f44bb78bd2e359b7f0cc ntsc|cic5101|rpak # Magical Tetris Challenge Featuring Mickey
|
||||
86482f9e82a1d5600b6481a78dda5141 ntsc|cic6102|rpak|tpak # Mario Artist - Communication Kit (64drive 1.12d Compatible V1.0)
|
||||
225d974f74402152809b33676c3dc313 ntsc|cic6102|rpak|tpak # Mario Artist - Paint Studio (64drive 1.12d Compatible V1.1)
|
||||
da36dcff0586350c66d3235b21101fe8 ntsc|cic6102|rpak|tpak # Mario Artist - Paint Studio (64drive 1.12d Compatible V1.1)
|
||||
e88f66826a444c7dff57f428d27a186f ntsc|cic6102|rpak|tpak # Mario Artist - Polygon Studio (64drive 1.12d Compatible V1.0)
|
||||
512b2f31df67fe1d7352c3b8d84033f6 ntsc|cic6102|rpak|tpak # Mario Artist - Polygon Studio (64drive 1.12d Compatible V1.1)
|
||||
b4a720dfc6f6d5b9db7089f71ea7393b ntsc|cic6102|rpak|tpak # Mario Artist - Talent Studio (64drive 1.12d Compatible V1.0)
|
||||
ba5b40df3dc3742583f4986e287e72ba ntsc|cic6102|rpak|tpak # Mario Artist - Talent Studio (64drive 1.12d Compatible V1.1)
|
||||
c749f901714fd19d7cf02a9f724ae1b1 pal|cic7101|eeprom512|cpak # Mario Kart 64 (Super W00ting Hack)
|
||||
082ffe637e1c04d14fe3393156294fbc ntsc|cic8303|rpak|tpak # 64DD IPLROM BIOS (for UltraHLE)
|
||||
207fdbd1d5b3990a8fe741e1e9e67d84 ntsc|cic6102|rpak|tpak # N64DD IPLROM
|
||||
b4891d8c08890281c680929f71768fca ntsc|cic8303|rpak|tpak # 64DD IPL
|
||||
5c6f7f27f5c6e833c03d3d587f3f4c12 ntsc|cic6102|cpak|rpak|tpak # Nushi Tsuri 64
|
||||
f1a1452cbfa7bce98c9e72c6e1f70fc8 pal|cic6102|cpak|rpak # Off Road Challenge
|
||||
3f726c4cc227d70116719d2843bd6bf5 ntsc|cic6102|eeprom512 # Pilotwings 64
|
||||
ffcb018cb73cf40bc52db39d113c0ff3 ntsc|cic6102 # 3DS Model Conversion by Snake
|
||||
0949de363010f42f01ce766f60c0bf0a ntsc|cic6102 # 3DS Model Conversion by Snake
|
||||
1e93a6d55b8d1b30c67f1fec9c09f25b ntsc|cic6102 # Absolute Crap #2 by Lem
|
||||
f64eb0451d772a0a806ef038abe35c52 ntsc|cic6102 # Absolute Crap #2 by Lem
|
||||
9b0175c06a57804c94a500a552698d22 ntsc|cic6102 # Absolute Crap Intro #1 by Kid Stardust
|
||||
ff1ff9ad4cceed4a22ce21cf338abdbf ntsc|cic6102 # Absolute Crap Intro #1 by Kid Stardust
|
||||
655b8fc59605f5d03c5ae7ca651452f0 ntsc|cic6102 # Alienstyle Intro by Renderman
|
||||
e1ab235d2fc0dafba8f6334a2757ad46 ntsc|cic6102 # Alienstyle Intro by Renderman
|
||||
e09272dcb2a26b97d20f198dd8729abc ntsc|cic6102 # Dexanoid R1 by Protest Design
|
||||
cf77c88fe389897b348d5d1959ee13bd ntsc|cic6102 # Dynamix Intro by Widget and Immortal
|
||||
4d2e751624901b5c2863f153d8e7c6c7 ntsc|cic6102 # Dynamix Intro by Widget and Immortal
|
||||
aa22f738c387df27fa6d328db51fa793 ntsc|cic6102 # Dynamix Readme by Widget and Immortal
|
||||
267d133677537dd13bca33afff1c6033 ntsc|cic6102 # Fire Demo by Lac
|
||||
2ece451a1250fcfa54eca3e042ca2338 ntsc|cic6102|rpak|tpak # NDDT Monitor
|
||||
7d132d5d7aa80f35fed15f800f84d686 ntsc|cic6102 # Ultrafox 64 by Megahawks
|
||||
094901ab50e4acf72adc410f306fe17a ntsc|cic6102|cpak # VNES64 + Galaga
|
||||
07e74c378c14673c09347b63f94b5750 ntsc|cic6102|cpak # VNES64 + Mario
|
||||
e27ca7816964d50faeeb46c191732daf ntsc|cic6102|cpak # VNES64 V0.12 by Jean-Luc Picard
|
||||
538ea872487c59547dbe2c2294190597 ntsc|cic6102 # 77a by Count0
|
||||
020a49809ff095855ddaff86fd3fe35c ntsc|cic6102|eeprom2k # 77a Special Edition by Count0
|
||||
64570e90b06e7456e66853590224b747 ntsc|cic6102 # Attax64 by Pookae
|
||||
915b754f526d740fa3a8297bb630f5d1 ntsc|cic6102 # Attax64 by Pookae
|
||||
77b0595c48c95ad6cebfed68a3635d89 ntsc|cic6102|cpak # Berney Must Die! by Nop_
|
||||
c03f0d8f37eea7d72f85d9a8d7b49cdf ntsc|cic6102|cpak # Berney Must Die! by Nop_
|
||||
06c9a6d5fabb150073aec6cd389beda6 ntsc|cic6102 # Bike Race '98 V1.0 by NAN
|
||||
0d0039a42fa356bfea06159649e0125f ntsc|cic6102 # Bike Race '98 V1.0 by NAN
|
||||
f1aae1ac9b406726398bef360de8f80a ntsc|cic6102 # Bike Race '98 V1.2 by NAN
|
||||
62c1c8738ac652dce0c8df79f5dd53a6 ntsc|cic6102 # Bike Race '98 V1.2 by NAN
|
||||
708660c2124ce8153938c05cfc556b5a ntsc|cic6102 # Dexanoid R1 by Protest Design
|
||||
851ea9517e35244af04ecc2c767c6d2f ntsc|cic6102 # Dexanoid R1 by Protest Design
|
||||
f5284557f228c69f0ddc948bb5f736a5 ntsc|cic6102 # Dexanoid R1 by Protest Design
|
||||
afe8911262b7c208105355067869c55e ntsc|cic6102 # Pong by Oman
|
||||
1d7f5fce38bb5d1fa67acb0483b52394 ntsc|cic6102 # Pong by Oman
|
||||
c61e9aa1ffb68908153fc23563be2d09 ntsc|cic6102 # Pong by Oman
|
||||
6f804ab901fdc64abe6c5ec90f278367 ntsc|cic6102|cpak # Simon for N64 V0.1a by Jean-Luc Picard
|
||||
b8e34dc718fa8308cfd3570a88f9e57e ntsc|cic6102 # Analogue Test Utility by WT_Riker
|
||||
0b2fdaa1b9500685b323c3ed64a4df1d ntsc|cic6102|sram32k # Diddy Kong Racing SRAM by Group5
|
||||
b23003df72a5dbc7230e1e56f9ce28f3 ntsc|cic6102 # LaC's MOD Player - The Temple Gates
|
||||
e297dead1568583f3a607636c0b23868 ntsc|cic6102|cpak|rpak # Quake 64
|
||||
7b88dfbc4ff8e0f711382d73e84f3166 ntsc|cic6102|cpak # Saikyou Habu Shougi
|
||||
d514bd51689a17cad9a8e96ba39edf14 ntsc|cic6102|cpak|rpak # San Francisco Rush - Extreme Racing
|
||||
b062cd3f2e074c812b9425de4ce830c4 ntsc|cic6102|rpak|tpak # Sim City 64 (64drive 1.12d Compatible V1.0)
|
||||
e2248995ec99eed25111270afa6d63c9 pal|cic7101|cpak|rpak # South Park
|
||||
1fb58d87cfd87ec98fe67c916f0591f1 pal|cic7101|cpak|rpak # South Park
|
||||
12086e237340e0034924407da8f69484 ntsc|cic6102|flash128k|rpak # StarCraft 64 (Beta)
|
||||
7b551edf84d631ed68d6474d890e23e0 ntsc|cic6102|flash128k|rpak # StarCraft 64 (Beta)
|
||||
9296ea2c78a6b10bb01fd14e14fc729e ntsc|cic6102|flash128k|rpak # StarCraft 64 (Beta) (Country Code)
|
||||
33c4d0041e03a2d14216a80c5cec31d8 ntsc|cic6102|eeprom512 # Super Mario 64
|
||||
d42dff4f1c08668c61a67821f78c18c4 ntsc|cic6102|cpak # Turok - Dinosaur Hunter
|
||||
976796791398f6043aee22c30f184443 ntsc|cic6102|cpak|rpak # Turok 2 - Seeds of Evil (Kiosk Demo)
|
||||
c6b3c6121313f311a22153f7b1f54a39 ntsc|cic6102|sram32k|cpak|rpak # Virtual Pro Wrestling 64
|
||||
bcb74c38310ea30c240b6bea2dc97a5f ntsc|cic6102|eeprom2k|cpak # Mario Kart 64 Amped Up (v2.96a)
|
||||
c7a8ec9386ab97f621dcb530e92b16b0 ntsc|cic6102|cpak|rpak|tpak # ControllerTest
|
||||
69e9cf25cd6b9a7cc3cffa88ec1f75c1 ntsc|cic6102|rpak # Test Cart Runtime V2 by Nintendo
|
||||
81240037b77b6a0d1e7ca0e707483092 ntsc|cic6102|eeprom2k|rpak # Donkey Kong 64 (Kiosk Demo)
|
||||
6218e4c8b0ad79a2fcb8fa9f0d23a13a ntsc|cic6102|eeprom2k|rpak # Donkey Kong 64 (Kiosk Demo)
|
||||
e2de0cca56d2ffa4a489933d76955205 ntsc|cic6102|flash128k|cpak|rtc # Doubutsu Banchou (English Translated, Rev 1)
|
||||
05b271a640d3188ed7166c2c6a357934 ntsc|cic6102|flash128k|cpak|rtc # Doubutsu Banchou (Japan) (Proto)
|
||||
9bbabdedcd717c4eded24f4e52177b96 ntsc|cic6102|eeprom512 # Viewpoint 2064 (Japan) (Proto)
|
||||
7ecf0f0bd2236a38e0abd0b65089d94f ntsc|cic6102|eeprom512 # Viewpoint 2064 - No-AA (Hack) v1 ElectronAsh
|
||||
a0806dea83c6ae2d211bc815d43e33de ntsc|cic6102|eeprom512 # Viewpoint 2064 - No-Dither+No-AA (Hack) v1 ElectronAsh
|
||||
7b06e4fbf15112a88c5f9c182fa1264b ntsc|cic6102|eeprom512 # Viewpoint 2064 T+Eng v1.1 Zoinkity
|
||||
317085e9fcd8df3f70f11468e5611418 ntsc|cic6102|eeprom2k # Cave Story (Release Demo 1)
|
||||
b0fc9208a2bf873396a9e670e154cbff ntsc|cic6102 # Wizard of the Board
|
||||
6debed294271420221177b972f240b04 pal|cic7101 # Wizard of the Board
|
||||
24da9e65cf49dc2692337db4f69cb7ee ntsc|cic6102 # Wizard of the Board - Sicko Mode
|
||||
03f81f7a4f0ae2cc4e3c7422d9f79fef ntsc|cic6102 # 2 Blokes & An Armchair - N64 Remix Remix by Tesko (PD)
|
||||
ec34efc533127d43a03722e7f5769ee5 ntsc|cic6102 # Anim01 Demo by Acclaim & marshallh (PD)
|
||||
24066da301c3e6f86966debfb892551f ntsc|cic6102 # Coco Demo (PD)
|
||||
604765dabc45a77779f8a8c0b260ebf0 ntsc|cic6102 # Don't Be Square (PD)
|
||||
df40527062e24ddf3679d506793f554a ntsc|cic6102 # Megahawks Inc Musicdisk 1 (PD)
|
||||
34480812285442a4c6a3230364ccf02b ntsc|cic6102 # Melon Demo (PD)
|
||||
2ece451a1250fcfa54eca3e042ca2338 ntsc|cic6102 # NDDT Monitor v1
|
||||
e1b63ebb35b2c3293380344e7e4f56ec ntsc|cic6102 # Raycast Demo (PD)
|
||||
3588510c308ff6a0eda620500459af45 ntsc|cic6102 # RMGeom01 Demo by Acclaim & marshallh (PD)
|
||||
69517e6224814a88b4d0ca94d1318759 ntsc|cic6102 # SMOS01 Demo by Acclaim & marshallh (PD)
|
||||
eacb573315887f2b377e02fb67971b99 ntsc|cic6102 # VRMl2vtx Demo (PD)
|
||||
cf8d8deecf27ccb0a13af043011d179b ntsc|cic6102 # 64drive USB Input Demo (PD)
|
||||
bdf92537a25aa9869c5b37ca1f574a08 ntsc|cic6102 # RDP Probe by MooglyGuy (PD)
|
||||
df2e40e7b204caaf1880537d3e57e462 ntsc|cic6102 # Glover (Prototype)
|
||||
|
||||
# Cart-IDs'
|
||||
ID:BPY___ eeprom512 # Pyoro 64
|
||||
ID:CD6___ eeprom2k|rpak|tpak # Densha de Go! 64
|
||||
ID:CDZ___ sram96k|rpak # Dezaemon 3D
|
||||
ID:CFZ___ sram32k|rpak # F-Zero X (J)
|
||||
ID:CLB___ eeprom512|rpak # Mario Party (NTSC)
|
||||
ID:CMD___ # Nintendo 64 Modem
|
||||
ID:CP2___ flash128k|tpak # Pocket Monsters Stadium 2 (J)
|
||||
ID:CPS___ sram32k|tpak # Pocket Monsters Stadium (J)
|
||||
ID:CPY___ rpak|Puyo Puyo Sun 64
|
||||
ID:CZL___ sram32k|rpak # Legend of Zelda: Ocarina of Time [Zelda no Densetsu - Toki no Ocarina (J)]
|
||||
ID:N22___ cpak|rpak # Ready 2 Rumble Boxing - Round 2
|
||||
ID:N2M___ cpak|rpak # Madden Football 2002
|
||||
ID:N2P___ cpak|rpak # Rampage 2 - Universal Tour
|
||||
ID:N2V___ cpak|rpak # Chameleon Twist 2
|
||||
ID:N32___ cpak|rpak # Army Men - Sarge's Heroes 2
|
||||
ID:N3D___ eeprom2k|rpak # Doraemon 3: Nobita no Machi SOS!
|
||||
ID:N3HJ__ sram32k|rpak # Ganbare! Nippon! Olympics 2000
|
||||
ID:N3H___ cpak|rpak # International Track & Field 2000|Summer Games
|
||||
ID:N3P___ cpak|rpak # Triple Play 2000
|
||||
ID:N3T___ cpak|rpak # Tony Hawk's Pro Skater 3
|
||||
ID:N4W___ eeprom512|cpak|rpak # 40 Winks
|
||||
ID:N64___ cpak|rpak # Kira to Kaiketsu! 64 Tanteidan
|
||||
ID:N7I___ cpak # FIFA Soccer 64 [FIFA 64 (E)]
|
||||
ID:N8I___ cpak # FIFA - Road to World Cup 98 [World Cup e no Michi (J)]
|
||||
ID:N8M___ cpak|rpak # Madden Football 64
|
||||
ID:N8W___ cpak # World Cup '98
|
||||
ID:N9B___ cpak|rpak # NBA Live '99
|
||||
ID:N9C___ cpak|rpak # Nascar '99
|
||||
ID:N9F___ cpak # FIFA 99
|
||||
ID:N9H___ cpak|rpak # NHL '99
|
||||
ID:N9M___ cpak|rpak # Madden Football '99
|
||||
ID:NA2___ sram32k|cpak|rpak # Virtual Pro Wrestling 2
|
||||
ID:NAB___ eeprom512|cpak|rpak # Air Boarder 64
|
||||
ID:NAC___ cpak|rpak # Army Men - Air Combat
|
||||
ID:NAD___ eeprom512 # Worms Armageddon (U)
|
||||
ID:NAF___ flash128k|cpak|rtc # Doubutsu no Mori
|
||||
ID:NAG___ eeprom512|cpak # AeroGauge
|
||||
ID:NAH___ cpak|rpak # Asteroids Hyper 64
|
||||
ID:NAI___ cpak # Midway's Greatest Arcade Hits Volume 1
|
||||
ID:NAL___ sram32k|rpak # Super Smash Bros. [Nintendo All-Star! Dairantou Smash Brothers (J)]
|
||||
ID:NAM___ cpak|rpak # Army Men - Sarge's Heroes
|
||||
ID:NAR___ cpak|rpak # Armorines - Project S.W.A.R.M.
|
||||
ID:NAS___ cpak|rpak # All-Star Baseball 2001
|
||||
ID:NAY___ sram32k|cpak # Aidyn Chronicles - The First Mage
|
||||
ID:NB2___ cpak|rpak # NBA In the Zone '99 [NBA Pro '99 (E)]
|
||||
ID:NB3___ cpak|rpak # Bust-A-Move '99 [Bust-A-Move 3 DX (E)]
|
||||
ID:NB4___ cpak|rpak # Bass Masters 2000
|
||||
ID:NB5___ sram32k|rpak # Biohazard 2 (J)
|
||||
ID:NB6___ eeprom512|cpak|tpak # Super B-Daman: Battle Phoenix 64
|
||||
ID:NB7___ eeprom2k|rpak # Banjo-Tooie [Banjo to Kazooie no Daiboken 2 (J)]
|
||||
ID:NB8___ cpak|rpak # Beetle Adventure Racing (J)
|
||||
ID:NB9___ cpak # NBA Jam '99
|
||||
ID:NBA___ cpak|rpak # NBA In the Zone '98 [NBA Pro '98 (E)]
|
||||
ID:NBC___ eeprom512|cpak # Blast Corps
|
||||
ID:NBD___ eeprom512|rpak # Bomberman Hero [Mirian Ojo o Sukue! (J)]
|
||||
ID:NBE___ cpak|rpak # All-Star Baseball 2000
|
||||
ID:NBF___ cpak|rpak # Bio F.R.E.A.K.S.
|
||||
ID:NBH___ eeprom512|rpak # Body Harvest
|
||||
ID:NBI___ cpak|rpak # NFL Blitz 2000
|
||||
ID:NBJ___ cpak # Bakushou Jinsei 64 - Mezase! Resort Ou
|
||||
ID:NBK___ eeprom512|rpak # Banjo-Kazooie [Banjo to Kazooie no Daiboken (J)]
|
||||
ID:NBL___ cpak|rpak # Buck Bumble
|
||||
ID:NBM___ eeprom512|cpak # Bomberman 64 [Baku Bomberman (J)]
|
||||
ID:NBN___ eeprom512|cpak|rpak # Bakuretsu Muteki Bangaioh
|
||||
ID:NBO___ cpak # Bottom of the 9th
|
||||
ID:NBP___ cpak|rpak # Blues Brothers 2000
|
||||
ID:NBQ___ cpak|rpak # Battletanx - Global Assault
|
||||
ID:NBR___ cpak|rpak # Milo's Astro Lanes
|
||||
ID:NBS___ cpak|rpak # All-Star Baseball '99
|
||||
ID:NBU___ cpak # Bust-A-Move 2 - Arcade Edition
|
||||
ID:NBV___ eeprom512|cpak|rpak # Bomberman 64: The Second Attack! [Baku Bomberman 2 (J)]
|
||||
ID:NBW___ cpak|rpak # Super Bowling
|
||||
ID:NBX___ cpak|rpak # Battletanx
|
||||
ID:NBY___ cpak|rpak # Bug's Life, A
|
||||
ID:NBZ___ cpak|rpak # NFL Blitz
|
||||
ID:NC2___ # Clay Fighter - Sculptor's Cut
|
||||
ID:NCB___ rpak # Charlie Blast's Territory
|
||||
ID:NCC___ flash128k|rpak # Command & Conquer
|
||||
ID:NCD___ cpak|rpak # Carmageddon 64
|
||||
ID:NCE___ cpak|rpak # Nuclear Strike 64
|
||||
ID:NCF___ # Clay Fighter 63 1-3
|
||||
ID:NCG___ eeprom512|cpak|rpak|tpak # Choro Q 64 II - Hacha Mecha Grand Prix Race (J)
|
||||
ID:NCH___ eeprom512|rpak # Chopper Attack
|
||||
ID:NCK___ flash128k|rpak # NBA Courtside 2 featuring Kobe Bryant
|
||||
ID:NCL___ cpak|rpak # California Speed
|
||||
ID:NCO___ cpak|rpak # Jeremy McGrath Supercross 2000
|
||||
ID:NCR___ eeprom512|cpak # Penny Racers [Choro Q 64 (J)]
|
||||
ID:NCS___ cpak|rpak # S.C.A.R.S.
|
||||
ID:NCT___ eeprom512|rpak # Chameleon Twist
|
||||
ID:NCU___ eeprom512|cpak # Cruis'n USA
|
||||
ID:NCW___ eeprom2k|rpak # Cruis'n World
|
||||
ID:NCX___ eeprom512 # Custom Robo
|
||||
ID:NCY___ # South Park - Chef's Luv Shack
|
||||
ID:NCZ___ eeprom2k|rpak # Custom Robo V2
|
||||
ID:ND2___ eeprom2k|rpak # Doraemon 2: Nobita to Hikari no Shinden
|
||||
ID:ND3J__ eeprom2k|rpak # Akumajou Dracula Mokushiroku (J)
|
||||
ID:ND3___ cpak # Castlevania
|
||||
ID:ND4J__ eeprom2k|rpak # Akumajou Dracula Mokushiroku Gaiden: Legend of Cornell (J)
|
||||
ID:ND4___ cpak # Castlevania - Legacy of Darkness
|
||||
ID:ND6___ eeprom2k|rpak # Densha de Go! 64
|
||||
ID:NDA___ flash128k|cpak # Derby Stallion 64
|
||||
ID:NDC___ cpak|rpak # SD Hiryuu no Ken Densetsu (J)
|
||||
ID:NDE___ cpak|rpak # Destruction Derby 64
|
||||
ID:NDF___ rpak # Dance Dance Revolution - Disney Dancing Museum
|
||||
ID:NDH___ cpak # Duel Heroes
|
||||
ID:NDKJ__ eeprom512 # Dark Rift [Space Dynamites (J)]
|
||||
ID:NDM___ cpak # Doom 64
|
||||
ID:NDN___ cpak|rpak # Duke Nukem 64
|
||||
ID:NDO___ eeprom2k|rpak # Donkey Kong 64
|
||||
ID:NDP___ flash128k|rpak # Dinosaur Planet
|
||||
ID:NDQ___ eeprom512|cpak # Disney's Donald Duck - Goin' Quackers [Quack Attack (E)]
|
||||
ID:NDR___ eeprom512 # Doraemon: Nobita to 3tsu no Seireiseki
|
||||
ID:NDS___ cpak # J.League Dynamite Soccer 64
|
||||
ID:NDT___ cpak|rpak # South Park
|
||||
ID:NDU___ eeprom512|rpak # Duck Dodgers starring Daffy Duck
|
||||
ID:NDW___ cpak|rpak # Daikatana, John Romero's
|
||||
ID:NDY___ eeprom512|cpak|rpak # Diddy Kong Racing
|
||||
ID:NDZ___ cpak|rpak # Duke Nukem - Zero Hour
|
||||
ID:NEA___ eeprom512 # PGA European Tour
|
||||
ID:NEG___ cpak|rpak # Extreme-G
|
||||
ID:NEL___ # Sesame Street - Elmo's Letter Adventure
|
||||
ID:NEN___ # Sesame Street - Elmo's Number Journey
|
||||
ID:NEP___ eeprom2k|rpak # Star Wars Episode I: Racer
|
||||
ID:NER___ eeprom512|rpak # Aero Fighters Assault [Sonic Wings Assault (J)]
|
||||
ID:NET___ cpak # Quest 64 [Eltale Monsters (J) Holy Magic Century (E)]
|
||||
ID:NEV___ eeprom2k|rpak # Neon Genesis Evangelion
|
||||
ID:NF2___ eeprom512|rpak # F-1 World Grand Prix II
|
||||
ID:NF9___ cpak # Fox Sports College Hoops '99
|
||||
ID:NFB___ cpak|rpak # NFL Blitz 2001
|
||||
ID:NFD___ cpak|rpak # Flying Dragon
|
||||
ID:NFF___ cpak|rpak # Fighting Force 64
|
||||
ID:NFG___ eeprom512|cpak|rpak # Fighter Destiny 2
|
||||
ID:NFH___ eeprom512|rpak # In-Fisherman Bass Hunter 64
|
||||
ID:NFL___ cpak|rpak # Madden Football 2001
|
||||
ID:NFO___ cpak|rpak # Forsaken 64
|
||||
ID:NFQ___ cpak|rpak # Razor Freestyle Scooter
|
||||
ID:NFR___ cpak|rpak # F-1 Racing Championship
|
||||
ID:NFS___ cpak # Famista 64
|
||||
ID:NFU___ eeprom2k|rpak # Conker's Bad Fur Day
|
||||
ID:NFW___ eeprom512|rpak # F-1 World Grand Prix
|
||||
ID:NFX___ eeprom512|rpak # Star Fox 64 [Lylat Wars (E)]
|
||||
ID:NFY___ eeprom512|cpak|rpak # Kakutou Denshou: F-Cup Maniax
|
||||
ID:NFZ___ sram32k|rpak # F-Zero X (U + E)
|
||||
ID:NG2___ cpak|rpak # Extreme-G XG2
|
||||
ID:NG5___ cpak|rpak # Ganbare Goemon - Neo Momoyama Bakufu no Odori [Mystical Ninja Starring Goemon]
|
||||
ID:NG6___ sram32k|rpak # Ganmare Goemon: Dero Dero Douchuu Obake Tenkomori
|
||||
ID:NGA___ cpak|rpak # Deadly Arts [G.A.S.P!! Fighter's NEXTream (E-J)]
|
||||
ID:NGB___ cpak|rpak # Top Gear Hyper Bike
|
||||
ID:NGC___ eeprom2k|cpak|rpak # GT 64: Championship Edition
|
||||
ID:NGD___ cpak|rpak # Gauntlet Legends (J)
|
||||
ID:NGE___ eeprom512|rpak # GoldenEye 007
|
||||
ID:NGL___ eeprom512|cpak|rpak # Getter Love!!
|
||||
ID:NGM___ cpak|rpak # Goemon's Great Adventure [Mystical Ninja 2 Starring Goemon]
|
||||
ID:NGN___ cpak # Golden Nugget 64
|
||||
ID:NGP___ sram32k|cpak # Goemon: Mononoke Sugoroku
|
||||
ID:NGR___ eeprom512|cpak|rpak # Top Gear Rally
|
||||
ID:NGS___ cpak # Jikkyou G1 Stable
|
||||
ID:NGT___ eeprom2k|cpak|rpak # City Tour GrandPrix - Zen Nihon GT Senshuken
|
||||
ID:NGU___ eeprom512|rpak # Tsumi to Batsu: Hoshi no Keishousha (Sin and Punishment)
|
||||
ID:NGV___ eeprom512 # Glover
|
||||
ID:NGX___ cpak|rpak # Gauntlet Legends
|
||||
ID:NH5___ cpak # Nagano Winter Olympics '98 [Hyper Olympics in Nagano (J)]
|
||||
ID:NH9___ cpak|rpak # NHL Breakaway '99
|
||||
ID:NHA___ eeprom512|cpak # Bomberman 64: Arcade Edition (J)
|
||||
ID:NHB___ # Nintama Rantarou 64 Game Gallery
|
||||
ID:NHC___ cpak|rpak # Hercules - The Legendary Journeys
|
||||
ID:NHF___ eeprom512 # 64 Hanafuda: Tenshi no Yakusoku
|
||||
ID:NHG___ cpak # F-1 Pole Position 64
|
||||
ID:NHK___ cpak|rpak # Hiryuu no Ken Twin
|
||||
ID:NHL___ cpak|rpak # NHL Breakaway '98
|
||||
ID:NHM___ cpak|rpak # Mia Hamm Soccer 64
|
||||
ID:NHN___ cpak # Olympic Hockey Nagano '98
|
||||
ID:NHO___ cpak|rpak # NHL Blades of Steel '99 [NHL Pro '99 (E)]
|
||||
ID:NHP___ eeprom512 # Heiwa Pachinko World 64
|
||||
ID:NHS___ cpak # Hamster Monogatari 64
|
||||
ID:NHT___ cpak|rpak # Hydro Thunder
|
||||
ID:NHV___ cpak|rpak # Hybrid Heaven (U + E)
|
||||
ID:NHW___ cpak|rpak # Hot Wheels Turbo Racing
|
||||
ID:NHX___ cpak # Hexen
|
||||
ID:NHY___ sram32k|cpak|rpak # Hybrid Heaven (J)
|
||||
ID:NIB___ sram32k|rpak # Itoi Shigesato no Bass Tsuri No. 1 Kettei Ban!
|
||||
ID:NIC___ eeprom512|rpak # Indy Racing 2000
|
||||
ID:NIJ___ eeprom512|rpak # Indiana Jones and the Infernal Machine
|
||||
ID:NIM___ eeprom2k|break; # Ide Yosuke no Mahjong Juku
|
||||
ID:NIR___ eeprom512|rpak # Utchan Nanchan no Hono no Challenger: Denryuu Ira Ira Bou
|
||||
ID:NIS___ cpak|rpak # International Superstar Soccer 2000
|
||||
ID:NIV___ cpak|rpak # Space Invaders
|
||||
ID:NJ2___ cpak # Wonder Project J2 - Koruro no Mori no Jozet (J)
|
||||
ID:NJ3___ cpak # Jikkyou World Soccer 3
|
||||
ID:NJ5___ sram32k|cpak # Jikkyou Powerful Pro Yakyuu 5
|
||||
ID:NJA___ cpak|rpak # NBA Jam 2000
|
||||
ID:NJE___ cpak # J.League Eleven Beat 1997
|
||||
ID:NJF___ flash128k|rpak # Jet Force Gemini [Star Twins (J)]
|
||||
ID:NJG___ sram32k|rpak # Jinsei Game 64
|
||||
ID:NJL___ cpak # J.League Live 64
|
||||
ID:NJM___ eeprom512 # Earthworm Jim 3D
|
||||
ID:NJO___ # Jeopardy!
|
||||
ID:NJP___ cpak # International Superstar Soccer 64 [Jikkyo J-League Perfect Striker (J)]
|
||||
ID:NJQ___ rpak # Batman Beyond - Return of the Joker [Batman of the Future - Return of the Joker (E)]
|
||||
ID:NK2___ eeprom512|rpak # Snowboard Kids 2 [Chou Snobow Kids (J)]
|
||||
ID:NK4J00 sram32k|rpak # Kirby 64: The Crystal Shards [Hoshi no Kirby 64 (J)]
|
||||
ID:NK4J01 sram32k|rpak # Kirby 64: The Crystal Shards [Hoshi no Kirby 64 (J)]
|
||||
ID:NK4___ eeprom2k|rpak # Kirby 64
|
||||
ID:NKA___ eeprom512|cpak|rpak # Fighters Destiny [Fighting Cup (J)]
|
||||
ID:NKE___ rpak # Knife Edge - Nose Gunner
|
||||
ID:NKG___ sram32k|cpak|rpak # Major League Baseball featuring Ken Griffey Jr.
|
||||
ID:NKI___ eeprom512|cpak # Killer Instinct Gold
|
||||
ID:NKJ___ flash128k|rpak # Ken Griffey Jr.'s Slugfest
|
||||
ID:NKK___ cpak|rpak # Knockout Kings 2000
|
||||
ID:NKM___ cpak # Pro Mahjong Kiwame 64 (J)
|
||||
ID:NKR___ cpak # Rakuga Kids (E)
|
||||
ID:NKT___ eeprom512|cpak # Mario Kart 64
|
||||
ID:NL2___ cpak|rpak # Top Gear Rally 2
|
||||
ID:NLB___ eeprom512|rpak # Mario Party (PAL)
|
||||
ID:NLC___ cpak|rpak # Automobili Lamborghini [Super Speed Race 64 (J)]
|
||||
ID:NLG___ cpak|rpak # LEGO Racers
|
||||
ID:NLL___ eeprom512|rpak # Last Legion UX
|
||||
ID:NLR___ eeprom512|rpak # Lode Runner 3-D
|
||||
ID:NM3___ rpak # Monster Truck Madness 64
|
||||
ID:NM4___ cpak|rpak # Mortal Kombat 4
|
||||
ID:NM6___ flash128k|rpak # Mega Man 64
|
||||
ID:NM8___ eeprom2k|rpak|tpak # Mario Tennis
|
||||
ID:NM9___ cpak|rpak # Harukanaru Augusta Masters 98
|
||||
ID:NMA___ cpak # Jangou Simulation Mahjong Do 64
|
||||
ID:NMB___ cpak|rpak # Mike Piazza's Strike Zone
|
||||
ID:NMD___ cpak|rpak # Madden Football 2000
|
||||
ID:NME___ # Mace - The Dark Age
|
||||
ID:NMF___ sram32k|rpak|tpak # Mario Golf 64
|
||||
ID:NMG___ eeprom512|cpak|rpak # Monaco Grand Prix [Racing Simulation 2 (G)]
|
||||
ID:NMH___ # Mahjong Hourouki Classic
|
||||
ID:NMI___ eeprom512|rpak # Mission: Impossible
|
||||
ID:NMJ___ cpak # Mahjong 64
|
||||
ID:NMK___ # Mortal Kombat Trilogy
|
||||
ID:NML___ eeprom512|rpak|tpak # Mickey's Speedway USA [Mickey no Racing Challenge USA (J)]
|
||||
ID:NMM___ cpak # Mahjong Master
|
||||
ID:NMO___ eeprom512 # Monopoly
|
||||
ID:NMP___ # Mario no Photopie
|
||||
ID:NMQ___ flash128k|rpak # Paper Mario
|
||||
ID:NMR___ eeprom512|cpak|rpak # Multi-Racing Championship
|
||||
ID:NMS___ eeprom512|cpak # Morita Shougi 64
|
||||
ID:NMT___ rpak # Magical Tetris Challenge
|
||||
ID:NMU___ eeprom512|cpak|rpak # Big Mountain 2000
|
||||
ID:NMV___ eeprom2k|rpak # Mario Party 3
|
||||
ID:NMW___ eeprom512|rpak # Mario Party 2
|
||||
ID:NMX___ eeprom2k|cpak|rpak # Excitebike 64
|
||||
ID:NMY___ cpak|rpak # Mortal Kombat Mythologies - Sub-Zero
|
||||
ID:NMZ___ eeprom512|cpak # Zool - Majou Tsukai Densetsu (J)
|
||||
ID:NN2___ cpak|rpak # Nascar 2000
|
||||
ID:NN6___ eeprom512 # Dr. Mario 64
|
||||
ID:NNA___ eeprom512|rpak # Star Wars Episode I: Battle for Naboo
|
||||
ID:NNB___ eeprom2k|cpak|rpak # Kobe Bryant in NBA Courtside
|
||||
ID:NNC___ cpak|rpak # Nightmare Creatures
|
||||
ID:NNL___ cpak|rpak # NBA Live 2000
|
||||
ID:NNM___ cpak # Namco Museum 64
|
||||
ID:NNR___ cpak # Pro Mahjong Tsuwamono 64 - Jansou Battle ni Chousen (J)
|
||||
ID:NNS___ cpak|rpak # Beetle Adventure Racing
|
||||
ID:NO2___ cpak|rpak # 64 Oozumou 2
|
||||
ID:NO7___ cpak|rpak # The World Is Not Enough
|
||||
ID:NOB___ sram32k|cpak # Ogre Battle 64: Person of Lordly Caliber
|
||||
ID:NOF___ cpak|rpak # Offroad Challenge
|
||||
ID:NOH___ rpak|tpak # Transformers Beast Wars - Transmetals
|
||||
ID:NOM___ cpak # Onegai Monsters
|
||||
ID:NOS___ eeprom512|cpak|rpak # 64 Oozumou
|
||||
ID:NOW___ cpak # Brunswick Circuit Pro Bowling
|
||||
ID:NP2___ eeprom512|cpak|rpak # Chou Kuukan Night Pro Yakyuu King 2 (J)
|
||||
ID:NP3___ flash128k|tpak # Pokemon Stadium 2 [Pocket Monsters Stadium - Kin Gin (J)]
|
||||
ID:NP4___ sram32k|cpak # Jikkyou Powerful Pro Yakyuu 4
|
||||
ID:NP6___ sram32k|cpak|tpak # Jikkyou Powerful Pro Yakyuu 6
|
||||
ID:NP9___ cpak|rpak # Ms. Pac-Man - Maze Madness
|
||||
ID:NPA___ sram32k|cpak|tpak # Jikkyou Powerful Pro Yakyuu 2000
|
||||
ID:NPB___ cpak|rpak # Puzzle Bobble 64 (J)
|
||||
ID:NPC___ cpak # Pachinko 365 Nichi (J)
|
||||
ID:NPD___ eeprom2k|cpak|rpak|tpak # Perfect Dark
|
||||
ID:NPE___ sram32k|cpak # Jikkyou Powerful Pro Yakyuu Basic Ban 2001
|
||||
ID:NPF___ flash128k|break; # Pokemon Snap [Pocket Monsters Snap (J)]
|
||||
ID:NPG___ eeprom512|rpak # Hey You, Pikachu! [Pikachu Genki Dechu (J)]
|
||||
ID:NPH___ flash128k # Pokemon Snap Station
|
||||
ID:NPK___ cpak # Chou Kuukan Night Pro Yakyuu King (J)
|
||||
ID:NPL___ cpak # Power League 64 (J)
|
||||
ID:NPM___ sram32k|cpak # Premier Manager 64
|
||||
ID:NPN___ flash128k|break; # Pokemon Puzzle League
|
||||
ID:NPO___ flash128k|tpak # Pokemon Stadium
|
||||
ID:NPP___ eeprom2k|cpak # Parlor! Pro 64: Pachinko Jikki Simulation Game
|
||||
ID:NPQ___ # Powerpuff Girls, The - Chemical X-Traction
|
||||
ID:NPR___ cpak|rpak # South Park Rally
|
||||
ID:NPS___ sram32k|cpak|rpak # Jikkyou J.League 1999: Perfect Striker 2
|
||||
ID:NPT___ eeprom512|rpak|tpak # Puyo Puyon Party
|
||||
ID:NPU___ cpak # Power Rangers - Lightspeed Rescue
|
||||
ID:NPW___ eeprom512 # Pilotwings 64
|
||||
ID:NPX___ cpak|rpak # Polaris SnoCross
|
||||
ID:NPY___ eeprom512|rpak # Puyo Puyo Sun 64
|
||||
ID:NPZ___ cpak|rpak # Susume! Taisen Puzzle Dama Toukon! Marumata Chou (J)
|
||||
ID:NQ2___ cpak|rpak # Quake 2
|
||||
ID:NQ8___ cpak|rpak # NFL Quarterback Club '98
|
||||
ID:NQ9___ cpak|rpak # NFL Quarterback Club '99
|
||||
ID:NQB___ cpak|rpak # NFL Quarterback Club 2000
|
||||
ID:NQC___ cpak|rpak # NFL Quarterback Club 2001
|
||||
ID:NQK___ cpak|rpak # Quake 64
|
||||
ID:NR2___ cpak|rpak # Rush 2 - Extreme Racing USA
|
||||
ID:NR3___ cpak|rpak # Stunt Racer 64
|
||||
ID:NR6___ cpak|rpak # Tom Clancy's Rainbow Six
|
||||
ID:NR7___ eeprom2k|tpak # Robot Poncots 64: 7tsu no Umi no Caramel
|
||||
ID:NRA___ eeprom512|cpak|rpak # Rally '99 (J)
|
||||
ID:NRC___ eeprom512|rpak # Top Gear Overdrive
|
||||
ID:NRD___ cpak|rpak # Ready 2 Rumble Boxing
|
||||
ID:NRE___ sram32k|rpak # Resident Evil 2
|
||||
ID:NRG___ rpak # Rugrats - Scavenger Hunt [Treasure Hunt (E)]
|
||||
ID:NRH___ flash128k|rpak # Rockman Dash - Hagane no Boukenshin (J)
|
||||
ID:NRI___ sram32k|cpak # New Tetris, The
|
||||
ID:NRK___ cpak # Rugrats in Paris - The Movie
|
||||
ID:NRO___ cpak|rpak # Road Rash 64
|
||||
ID:NRP___ cpak|rpak # Rampage - World Tour
|
||||
ID:NRR___ cpak|rpak # Roadster's Trophy
|
||||
ID:NRS___ eeprom512|rpak # Star Wars: Rogue Squadron [Shutsugeki! Rogue Chuutai (J)]
|
||||
ID:NRT___ cpak # Rat Attack
|
||||
ID:NRU___ cpak|rpak # San Francisco Rush 2049
|
||||
ID:NRV___ cpak|rpak # Re-Volt
|
||||
ID:NRW___ cpak|rpak # Turok: Rage Wars
|
||||
ID:NRX___ cpak # Robotron 64
|
||||
ID:NRZ___ eeprom2k|rpak # Ridge Racer 64
|
||||
ID:NS2___ cpak # Simcity 2000
|
||||
ID:NS3___ eeprom512|cpak # AI Shougi 3
|
||||
ID:NS4___ sram32k|cpak|tpak # Super Robot Taisen 64
|
||||
ID:NS6___ eeprom512|rpak # Star Soldier: Vanishing Earth
|
||||
ID:NSA___ eeprom512|rpak # Sonic Wings Assault (J)
|
||||
ID:NSB___ cpak|rpak # Twisted Edge - Extreme Snowboarding [King Hill 64 - Extreme Snowboarding (J)]
|
||||
ID:NSC___ eeprom512 # Starshot: Space Circus Fever
|
||||
ID:NSD___ cpak|rpak # Shadow Man
|
||||
ID:NSF___ cpak|rpak # San Francisco Rush - Extreme Racing
|
||||
ID:NSG___ cpak # Shadowgate 64 - Trials Of The Four Towers
|
||||
ID:NSH___ cpak # Saikyou Habu Shougi (J)
|
||||
ID:NSI___ sram32k|cpak # Fushigi no Dungeon: Fuurai no Shiren 2
|
||||
ID:NSJ___ # J.League Tactics Soccer
|
||||
ID:NSK___ cpak|rpak # Snowboard Kids [Snobow Kids (J)]
|
||||
ID:NSL___ cpak|rpak # Spider-Man
|
||||
ID:NSMJ03 eeprom512|rpak # Super Mario 64 Shindou Edition
|
||||
ID:NSM___ eeprom512 # Super Mario 64
|
||||
ID:NSN___ eeprom512|cpak|rpak # Snow Speeder (J)
|
||||
ID:NSO___ cpak # NBA Showtime - NBA on NBC
|
||||
ID:NSP___ cpak|rpak # Superman
|
||||
ID:NSQ___ flash128k|rpak # StarCraft 64
|
||||
ID:NSS___ eeprom512|rpak # Super Robot Spirits
|
||||
ID:NST___ cpak # Eikou no Saint Andrews
|
||||
ID:NSU___ eeprom512|rpak # Rocket: Robot on Wheels
|
||||
ID:NSV___ eeprom512|rpak # Space Station Silicon Valley
|
||||
ID:NSW___ eeprom512 # Star Wars: Shadows of the Empire [Teikoku no Kage (J)]
|
||||
ID:NSX___ cpak|rpak # Supercross 2000
|
||||
ID:NSY___ cpak # Scooby-Doo! - Classic Creep Capers
|
||||
ID:NSZ___ cpak|rpak # NFL Blitz - Special Edition
|
||||
ID:NT2___ cpak|rpak # Turok 2 - Seeds of Evil [Violence Killer - Turok New Generation (J)]
|
||||
ID:NT3___ sram32k|cpak # Shin Nihon Pro Wrestling - Toukon Road 2 - The Next Generation (J)
|
||||
ID:NT4___ cpak|rpak # CyberTiger
|
||||
ID:NT6___ eeprom512 # Tetris 64
|
||||
ID:NT9___ flash128k|break; # Tigger's Honey Hunt
|
||||
ID:NTA___ cpak|rpak # Disney's Tarzan
|
||||
ID:NTB___ eeprom512|rpak|tpak # Transformers: Beast Wars Metals 64 (J)
|
||||
ID:NTC___ eeprom512|rpak # 64 Trump Collection
|
||||
ID:NTD___ cpak|rpak # O.D.T.
|
||||
ID:NTE___ sram32k|rpak # 1080 Snowboarding
|
||||
ID:NTF___ cpak|rpak # Tony Hawk's Pro Skater
|
||||
ID:NTH___ cpak|rpak # Toy Story 2 - Buzz Lightyear to the Rescue!
|
||||
ID:NTI___ cpak|rpak # WWF: Attitude
|
||||
ID:NTJ___ eeprom512|rpak # Tom & Jerry in Fists of Fury
|
||||
ID:NTK___ cpak|rpak # Turok 3 - Shadow of Oblivion
|
||||
ID:NTM___ eeprom512 # Mischief Makers [Yuke Yuke!! Trouble Makers (J)]
|
||||
ID:NTN___ eeprom512 # All Star Tennis '99
|
||||
ID:NTO___ cpak # Shin Nihon Pro Wrestling - Toukon Road - Brave Spirits (J)
|
||||
ID:NTP___ eeprom512 # Tetrisphere
|
||||
ID:NTQ___ cpak|rpak # Tony Hawk's Pro Skater 2
|
||||
ID:NTR___ eeprom512|cpak|rpak # Top Gear Rally (J + E)
|
||||
ID:NTS___ cpak # Centre Court Tennis [Let's Smash (J)]
|
||||
ID:NTT___ cpak # Tonic Trouble
|
||||
ID:NTU___ cpak # Turok: Dinosaur Hunter [Turok: Jikuu Senshi (J)]
|
||||
ID:NTW___ eeprom512|cpak # 64 de Hakken!! Tamagotchi
|
||||
ID:NTX___ eeprom512|rpak # Taz Express
|
||||
ID:NUB___ eeprom2k|cpak|tpak # PD Ultraman Battle Collection 64
|
||||
ID:NUM___ sram32k|rpak|tpak # Nushi Zuri 64: Shiokaze ni Notte
|
||||
ID:NUT___ sram32k|cpak|rpak|tpak # Nushi Zuri 64
|
||||
ID:NV2___ cpak|rpak # Chameleon Twist 2
|
||||
ID:NV3___ cpak|rpak # Micro Machines 64 Turbo
|
||||
ID:NV8___ cpak|rpak # Vigilante 8
|
||||
ID:NVB___ sram32k|rpak # Bass Rush - ECOGEAR PowerWorm Championship (J)
|
||||
ID:NVC___ cpak # Virtual Chess 64
|
||||
ID:NVG___ cpak|rpak # Vigilante 8 - Second Offense
|
||||
ID:NVL___ eeprom512|rpak # V-Rally Edition '99
|
||||
ID:NVP___ sram32k|cpak|rpak # Virtual Pro Wrestling 64
|
||||
ID:NVR___ cpak # Virtual Pool 64
|
||||
ID:NVY___ eeprom512|rpak # V-Rally Edition '99 (J)
|
||||
ID:NW2___ sram32k|rpak # WCW-nWo Revenge
|
||||
ID:NW3___ cpak|rpak # WCW: Nitro
|
||||
ID:NW4___ flash128k|cpak|rpak # WWF No Mercy
|
||||
ID:NW8___ cpak # Wayne Gretzky's 3D Hockey '98
|
||||
ID:NWA___ # War Gods
|
||||
ID:NWB___ cpak|rpak # Iggy's Reckin' Balls [Iggy-kun no Bura Bura Poyon (J)]
|
||||
ID:NWC___ eeprom512|rpak # Wild Choppers
|
||||
ID:NWD___ cpak|rpak # Winback - Covert Operations
|
||||
ID:NWF___ rpak # Wheel of Fortune
|
||||
ID:NWG___ cpak|rpak # Wayne Gretzky's 3D Hockey
|
||||
ID:NWI___ cpak|rpak # ECW Hardcore Revolution
|
||||
ID:NWK___ cpak|rpak # Michael Owens WLS 2000 [World League Soccer 2000 (E) / Telefoot Soccer 2000 (F)]
|
||||
ID:NWL___ sram32k|rpak # Waialae Country Club: True Golf Classics
|
||||
ID:NWM___ cpak|rpak # WCW: Mayhem
|
||||
ID:NWN___ cpak|rpak # WCW vs. nWo - World Tour
|
||||
ID:NWO___ cpak|rpak # World Driver Championship
|
||||
ID:NWP___ cpak|rpak # Wipeout 64
|
||||
ID:NWQ___ eeprom512|cpak|rpak # Rally Challenge 2000
|
||||
ID:NWR_02 eeprom512|cpak|rpak # Wave Race 64 Shindou Edition
|
||||
ID:NWR___ eeprom512|cpak # Wave Race 64
|
||||
ID:NWS___ cpak # International Superstar Soccer '98 [Jikkyo World Soccer - World Cup France '98 (J)]
|
||||
ID:NWTJ__ eeprom512 # Wetrix (J)
|
||||
ID:NWT___ cpak # Wetrix
|
||||
ID:NWU___ eeprom512 # Worms Armageddon (E)
|
||||
ID:NWV___ cpak|rpak # WCW: Backstage Assault
|
||||
ID:NWW___ cpak|rpak # WWF: War Zone
|
||||
ID:NWX___ sram32k|cpak|rpak # WWF WrestleMania 2000
|
||||
ID:NWZ___ cpak|rpak # NBA In the Zone 2000
|
||||
ID:NX2___ cpak # Gex 64 - Enter the Gecko
|
||||
ID:NX3___ cpak|rpak # Gex 3 - Deep Cover Gecko
|
||||
ID:NXF___ cpak|rpak # Xena Warrior Princess - The Talisman of Fate
|
||||
ID:NXG___ cpak # NBA Hangtime
|
||||
ID:NXO___ eeprom512|rpak # Cruis'n Exotica
|
||||
ID:NX7___ eeprom2k|cpak|rpak|tpak # GoldenEye - X
|
||||
ID:NY2___ cpak # Rayman 2 - The Great Escape
|
||||
ID:NYK___ eeprom512|rpak # Yakouchuu II: Satsujin Kouro
|
||||
ID:NYP___ cpak|rpak # Paperboy
|
||||
ID:NYS___ eeprom2k|rpak # Yoshi's Story
|
||||
ID:NYW___ sram32k|cpak # Harvest Moon 64
|
||||
ID:NZL___ sram32k|rpak # Legend of Zelda: Ocarina of Time (E)
|
||||
ID:NZO___ cpak|rpak # Battlezone - Rise of the Black Dogs
|
||||
ID:NZS___ flash128k|rpak # Legend of Zelda: Majora's Mask [Zelda no Densetsu - Mujura no Kamen (J)]
|
||||
@@ -123,15 +123,100 @@ static void normalizeString(char* s)
|
||||
while (*s) { *s = tolower(*s); ++s; }
|
||||
}
|
||||
|
||||
static bool detect_rom_settings_in_db(const char* lookup_hash, const char* db_file_name)
|
||||
{
|
||||
// return true if cic and system region is detected
|
||||
static bool parse_and_apply_db_tags(char* tags) {
|
||||
MemoryType save_type = MemoryType::NONE;
|
||||
SystemType system_type = SystemType::NTSC;
|
||||
CIC cic = CIC::CIC_NUS_6102;
|
||||
bool cpak = false;
|
||||
bool rpak = false;
|
||||
bool tpak = false;
|
||||
bool rtc = false;
|
||||
bool system_type_detected = false;
|
||||
bool cic_detected = false;
|
||||
|
||||
const char separator[] = "|";
|
||||
|
||||
for (char* tag = strtok(tags, separator); tag; tag = strtok(nullptr, separator)) {
|
||||
printf("Tag: %s\n", tag);
|
||||
|
||||
normalizeString(tag);
|
||||
switch (fnv_hash(tag)) {
|
||||
case fnv_hash("eeprom512"): save_type = MemoryType::EEPROM_512; break;
|
||||
case fnv_hash("eeprom2k"): save_type = MemoryType::EEPROM_2k; break;
|
||||
case fnv_hash("sram32k"): save_type = MemoryType::SRAM_32k; break;
|
||||
case fnv_hash("sram96k"): save_type = MemoryType::SRAM_96k; break;
|
||||
case fnv_hash("flash128k"): save_type = MemoryType::FLASH_128k; break;
|
||||
case fnv_hash("ntsc"): system_type = SystemType::NTSC; system_type_detected = true; break;
|
||||
case fnv_hash("pal"): system_type = SystemType::PAL; system_type_detected = true; break;
|
||||
case fnv_hash("cpak"): cpak = true; break;
|
||||
case fnv_hash("rpak"): rpak = true; break;
|
||||
case fnv_hash("tpak"): tpak = true; break;
|
||||
case fnv_hash("rtc"): rtc = true; break;
|
||||
case fnv_hash("cic6101"): cic = CIC::CIC_NUS_6101; cic_detected = true; break;
|
||||
case fnv_hash("cic6102"): cic = CIC::CIC_NUS_6102; cic_detected = true; break;
|
||||
case fnv_hash("cic6103"): cic = CIC::CIC_NUS_6103; cic_detected = true; break;
|
||||
case fnv_hash("cic6105"): cic = CIC::CIC_NUS_6105; cic_detected = true; break;
|
||||
case fnv_hash("cic6106"): cic = CIC::CIC_NUS_6106; cic_detected = true; break;
|
||||
case fnv_hash("cic7101"): cic = CIC::CIC_NUS_7101; cic_detected = true; break;
|
||||
case fnv_hash("cic7102"): cic = CIC::CIC_NUS_7102; cic_detected = true; break;
|
||||
case fnv_hash("cic7103"): cic = CIC::CIC_NUS_7103; cic_detected = true; break;
|
||||
case fnv_hash("cic7105"): cic = CIC::CIC_NUS_7105; cic_detected = true; break;
|
||||
case fnv_hash("cic7106"): cic = CIC::CIC_NUS_7106; cic_detected = true; break;
|
||||
case fnv_hash("cic8303"): cic = CIC::CIC_NUS_8303; cic_detected = true; break;
|
||||
case fnv_hash("cic8401"): cic = CIC::CIC_NUS_8401; cic_detected = true; break;
|
||||
case fnv_hash("cic5167"): cic = CIC::CIC_NUS_5167; cic_detected = true; break;
|
||||
case fnv_hash("cicDDUS"): cic = CIC::CIC_NUS_DDUS; cic_detected = true; break;
|
||||
default: printf("Unknown tag: %s\n", tag);
|
||||
}
|
||||
}
|
||||
printf("System: %d, Save Type: %d, CIC: %d, CPak: %d, RPak: %d, TPak %d, RTC: %d\n", (int)system_type, (int)save_type, (int)cic, cpak, rpak, tpak, rtc);
|
||||
|
||||
const auto auto_detect = (AutoDetect)user_io_status_get("[64]");
|
||||
|
||||
if (auto_detect == AutoDetect::ON) {
|
||||
printf("Auto-detect is on, updating OSD settings\n");
|
||||
|
||||
if (system_type_detected) user_io_status_set("[80:79]", (uint32_t)system_type);
|
||||
if (cic_detected) user_io_status_set("[68:65]", (uint32_t)cic);
|
||||
user_io_status_set("[71]", (uint32_t)cpak);
|
||||
user_io_status_set("[72]", (uint32_t)rpak);
|
||||
user_io_status_set("[73]", (uint32_t)tpak);
|
||||
user_io_status_set("[74]", (uint32_t)rtc);
|
||||
user_io_status_set("[77:75]", (uint32_t)save_type);
|
||||
}
|
||||
else {
|
||||
printf("Auto-detect is off, not updating OSD settings\n");
|
||||
}
|
||||
|
||||
return (auto_detect != AutoDetect::ON) || (system_type_detected && cic_detected);
|
||||
}
|
||||
|
||||
bool id_matches(const char* line, const char* cart_id) {
|
||||
// a valid id line should start with "ID:"
|
||||
if (strlen(line) < 9 || strncmp(line, "ID:", 3) != 0)
|
||||
return false;
|
||||
|
||||
// skip the line if it doesn't match our cart_id, '_' = don't care
|
||||
// cart ids should always be 6 characters long
|
||||
for (size_t i = 0; i < 6; i++) {
|
||||
if (line[i + 3] != '_' && line[i + 3] != cart_id[i])
|
||||
return false; // character didn't match
|
||||
|
||||
if (line[i + 3] == ' ') // end of ID
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
static uint8_t detect_rom_settings_in_db(const char* lookup_hash, const char* db_file_name) {
|
||||
fileTextReader reader = {};
|
||||
|
||||
char file_path[1024];
|
||||
sprintf(file_path, "%s/%s", HomeDir(), db_file_name);
|
||||
|
||||
if (!FileOpenTextReader(&reader, file_path))
|
||||
{
|
||||
if (!FileOpenTextReader(&reader, file_path)) {
|
||||
printf("Failed to open N64 data file %s\n", file_path);
|
||||
return false;
|
||||
}
|
||||
@@ -139,90 +224,57 @@ static bool detect_rom_settings_in_db(const char* lookup_hash, const char* db_fi
|
||||
char tags[128];
|
||||
|
||||
const char* line;
|
||||
while ((line = FileReadLine(&reader)))
|
||||
{
|
||||
while ((line = FileReadLine(&reader))) {
|
||||
if (strlen(line) < 32 || !((line[0] >= '0' && line[0] <= '9') || (line[0] >= 'a' && line[0] <= 'f')))
|
||||
continue;
|
||||
|
||||
// skip the line if it doesn't start with our hash
|
||||
if (strncmp(lookup_hash, line, 32) != 0)
|
||||
continue;
|
||||
|
||||
if (sscanf(line, "%*s %s", tags) != 1)
|
||||
{
|
||||
printf("Found ROM entry: %s\n", line);
|
||||
|
||||
if (sscanf(line, "%*s %s", tags) != 1) {
|
||||
printf("No tags found.\n");
|
||||
continue;
|
||||
return 2;
|
||||
}
|
||||
|
||||
return parse_and_apply_db_tags(tags) ? 3 : 2;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static uint8_t detect_rom_settings_in_db_with_cartid(const char* cart_id, const char* db_file_name) {
|
||||
fileTextReader reader = {};
|
||||
|
||||
char file_path[1024];
|
||||
sprintf(file_path, "%s/%s", HomeDir(), db_file_name);
|
||||
|
||||
if (!FileOpenTextReader(&reader, file_path)) {
|
||||
printf("Failed to open N64 data file %s\n", file_path);
|
||||
return false;
|
||||
}
|
||||
|
||||
char tags[128];
|
||||
|
||||
const char* line;
|
||||
while ((line = FileReadLine(&reader))) {
|
||||
// skip the line if it doesn't start with our id
|
||||
if (!id_matches(line, cart_id))
|
||||
continue;
|
||||
|
||||
printf("Found ROM entry: %s\n", line);
|
||||
|
||||
MemoryType save_type = MemoryType::NONE;
|
||||
SystemType system_type = SystemType::NTSC;
|
||||
CIC cic = CIC::CIC_NUS_6102;
|
||||
bool cpak = false;
|
||||
bool rpak = false;
|
||||
bool tpak = false;
|
||||
bool rtc = false;
|
||||
|
||||
const char separator[] = "|";
|
||||
|
||||
for (char* tag = strtok(tags, separator); tag; tag = strtok(nullptr, separator))
|
||||
{
|
||||
printf("Tag: %s\n", tag);
|
||||
|
||||
normalizeString(tag);
|
||||
switch (fnv_hash(tag))
|
||||
{
|
||||
case fnv_hash("eeprom512"): save_type = MemoryType::EEPROM_512; break;
|
||||
case fnv_hash("eeprom2k"): save_type = MemoryType::EEPROM_2k; break;
|
||||
case fnv_hash("sram32k"): save_type = MemoryType::SRAM_32k; break;
|
||||
case fnv_hash("sram96k"): save_type = MemoryType::SRAM_96k; break;
|
||||
case fnv_hash("flash128k"): save_type = MemoryType::FLASH_128k; break;
|
||||
case fnv_hash("ntsc"): system_type = SystemType::NTSC; break;
|
||||
case fnv_hash("pal"): system_type = SystemType::PAL; break;
|
||||
case fnv_hash("cpak"): cpak = true; break;
|
||||
case fnv_hash("rpak"): rpak = true; break;
|
||||
case fnv_hash("tpak"): tpak = true; break;
|
||||
case fnv_hash("rtc"): rtc = true; break;
|
||||
case fnv_hash("cic6101"): cic = CIC::CIC_NUS_6101; break;
|
||||
case fnv_hash("cic6102"): cic = CIC::CIC_NUS_6102; break;
|
||||
case fnv_hash("cic6103"): cic = CIC::CIC_NUS_6103; break;
|
||||
case fnv_hash("cic6105"): cic = CIC::CIC_NUS_6105; break;
|
||||
case fnv_hash("cic6106"): cic = CIC::CIC_NUS_6106; break;
|
||||
case fnv_hash("cic7101"): cic = CIC::CIC_NUS_7101; break;
|
||||
case fnv_hash("cic7102"): cic = CIC::CIC_NUS_7102; break;
|
||||
case fnv_hash("cic7103"): cic = CIC::CIC_NUS_7103; break;
|
||||
case fnv_hash("cic7105"): cic = CIC::CIC_NUS_7105; break;
|
||||
case fnv_hash("cic7106"): cic = CIC::CIC_NUS_7106; break;
|
||||
case fnv_hash("cic8303"): cic = CIC::CIC_NUS_8303; break;
|
||||
case fnv_hash("cic8401"): cic = CIC::CIC_NUS_8401; break;
|
||||
case fnv_hash("cic5167"): cic = CIC::CIC_NUS_5167; break;
|
||||
case fnv_hash("cicDDUS"): cic = CIC::CIC_NUS_DDUS; break;
|
||||
default: printf("Unknown tag: %s\n", tag);
|
||||
}
|
||||
}
|
||||
printf("System: %d, Save Type: %d, CIC: %d, CPak: %d, RPak: %d, TPak %d, RTC: %d\n", (int)system_type, (int)save_type, (int)cic, cpak, rpak, tpak, rtc);
|
||||
|
||||
const auto auto_detect = (AutoDetect)user_io_status_get("[64]");
|
||||
|
||||
if (auto_detect == AutoDetect::ON)
|
||||
{
|
||||
printf("Auto-detect is on, updating OSD settings\n");
|
||||
|
||||
user_io_status_set("[80:79]", (uint32_t)system_type);
|
||||
user_io_status_set("[68:65]", (uint32_t)cic);
|
||||
user_io_status_set("[71]", (uint32_t)cpak);
|
||||
user_io_status_set("[72]", (uint32_t)rpak);
|
||||
user_io_status_set("[73]", (uint32_t)tpak);
|
||||
user_io_status_set("[74]", (uint32_t)rtc);
|
||||
user_io_status_set("[77:75]", (uint32_t)save_type);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Auto-detect is off, not updating OSD settings\n");
|
||||
if (sscanf(line, "%*s %s", tags) != 1) {
|
||||
printf("No tags found.\n");
|
||||
return 2;
|
||||
}
|
||||
|
||||
return true;
|
||||
return parse_and_apply_db_tags(tags) ? 3 : 2;
|
||||
}
|
||||
|
||||
return false;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static const char* DB_FILE_NAMES[] =
|
||||
@@ -231,50 +283,53 @@ static const char* DB_FILE_NAMES[] =
|
||||
"N64-database_user.txt",
|
||||
};
|
||||
|
||||
static bool detect_rom_settings_in_dbs(const char* lookup_hash)
|
||||
{
|
||||
for (const char* db_file_name: DB_FILE_NAMES)
|
||||
{
|
||||
if (detect_rom_settings_in_db(lookup_hash, db_file_name))
|
||||
return true;
|
||||
static uint8_t detect_rom_settings_in_dbs(const char* lookup) {
|
||||
for (const char* db_file_name : DB_FILE_NAMES) {
|
||||
const auto detected = detect_rom_settings_in_db(lookup, db_file_name);
|
||||
if (detected != 0) return detected;
|
||||
}
|
||||
return false;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool detect_rom_settings_from_first_chunk(char region_code, uint64_t crc)
|
||||
{
|
||||
SystemType system_type;
|
||||
static uint8_t detect_rom_settings_in_dbs_with_cartid(const char* id) {
|
||||
for (const char* db_file_name : DB_FILE_NAMES) {
|
||||
const auto detected = detect_rom_settings_in_db_with_cartid(id, db_file_name);
|
||||
if (detected != 0) return detected;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static bool detect_rom_settings_from_first_chunk(char region_code, uint64_t crc) {
|
||||
SystemType system_type = SystemType::NTSC;
|
||||
CIC cic;
|
||||
bool is_known_cic = true;
|
||||
|
||||
const auto auto_detect = (AutoDetect)user_io_status_get("[64]");
|
||||
|
||||
if (auto_detect != AutoDetect::ON)
|
||||
{
|
||||
if ((AutoDetect)user_io_status_get("[64]") != AutoDetect::ON) {
|
||||
printf("Auto-detect is off, not updating OSD settings\n");
|
||||
return true;
|
||||
}
|
||||
|
||||
switch (region_code)
|
||||
{
|
||||
case 'D': //Germany
|
||||
case 'F': //France
|
||||
case 'H': //Netherlands (Dutch)
|
||||
case 'I': //Italy
|
||||
case 'L': //Gateway 64
|
||||
case 'P': //Europe
|
||||
case 'S': //Spain
|
||||
case 'U': //Australia
|
||||
case 'W': //Scandinavia
|
||||
case 'X': //Europe
|
||||
case 'Y': //Europe
|
||||
switch (region_code) {
|
||||
case 'D': // Germany
|
||||
case 'F': // France
|
||||
case 'H': // Netherlands (Dutch)
|
||||
case 'I': // Italy
|
||||
case 'L': // Gateway 64
|
||||
case 'P': // Europe
|
||||
case 'S': // Spain
|
||||
case 'U': // Australia
|
||||
case 'W': // Scandinavia
|
||||
case 'X': // Europe
|
||||
case 'Y': // Europe
|
||||
system_type = SystemType::PAL; break;
|
||||
default:
|
||||
system_type = SystemType::NTSC; break;
|
||||
}
|
||||
|
||||
// the following checks assume we're on a little-endian platform
|
||||
switch (crc)
|
||||
{
|
||||
switch (crc) {
|
||||
default:
|
||||
is_known_cic = false;
|
||||
case UINT64_C(0x000000a316adc55a):
|
||||
case UINT64_C(0x000000039c981107): // hcs64's CIC-6102 IPL3 replacement
|
||||
case UINT64_C(0x000000a30dacd530): // Unknown. Used in SM64 hacks
|
||||
@@ -301,7 +356,6 @@ static bool detect_rom_settings_from_first_chunk(char region_code, uint64_t crc)
|
||||
case UINT64_C(0x000000a9df4b39e1): cic = CIC::CIC_NUS_8303; break;
|
||||
case UINT64_C(0x000000aa764e39e1): cic = CIC::CIC_NUS_8401; break;
|
||||
case UINT64_C(0x000000abb0b739e1): cic = CIC::CIC_NUS_DDUS; break;
|
||||
default: return false;
|
||||
}
|
||||
|
||||
printf("System: %d, CIC: %d\n", (int)system_type, (int)cic);
|
||||
@@ -310,22 +364,19 @@ static bool detect_rom_settings_from_first_chunk(char region_code, uint64_t crc)
|
||||
user_io_status_set("[80:79]", (uint32_t)system_type);
|
||||
user_io_status_set("[68:65]", (uint32_t)cic);
|
||||
|
||||
return true;
|
||||
return is_known_cic;
|
||||
}
|
||||
|
||||
static void md5_to_hex(uint8_t* in, char* out)
|
||||
{
|
||||
static void md5_to_hex(uint8_t* in, char* out) {
|
||||
char *p = out;
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
for (int i = 0; i < 16; i++) {
|
||||
sprintf(p, "%02x", in[i]);
|
||||
p += 2;
|
||||
}
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
int n64_rom_tx(const char* name, unsigned char index)
|
||||
{
|
||||
int n64_rom_tx(const char* name, unsigned char index) {
|
||||
static uint8_t buf[4096];
|
||||
fileTYPE f = {};
|
||||
|
||||
@@ -349,8 +400,7 @@ int n64_rom_tx(const char* name, unsigned char index)
|
||||
process_ss(name);
|
||||
|
||||
bool is_first_chunk = true;
|
||||
bool rom_found_in_db = false;
|
||||
bool cic_detected = false;
|
||||
uint8_t rom_info_detected = 0;
|
||||
RomFormat rom_format = RomFormat::UNKNOWN;
|
||||
|
||||
MD5Context ctx;
|
||||
@@ -358,7 +408,7 @@ int n64_rom_tx(const char* name, unsigned char index)
|
||||
uint8_t md5[16];
|
||||
char md5_hex[40];
|
||||
uint64_t ipl3_crc = 0;
|
||||
char region_code = '\0';
|
||||
char cart_id[8];
|
||||
|
||||
while (bytes2send)
|
||||
{
|
||||
@@ -367,10 +417,8 @@ int n64_rom_tx(const char* name, unsigned char index)
|
||||
FileReadAdv(&f, buf, chunk);
|
||||
|
||||
// perform sanity checks and detect ROM format
|
||||
if (is_first_chunk)
|
||||
{
|
||||
if (chunk < 4096)
|
||||
{
|
||||
if (is_first_chunk) {
|
||||
if (chunk < 4096) {
|
||||
printf("Failed to load ROM: must be at least 4096 bytes\n");
|
||||
return 0;
|
||||
}
|
||||
@@ -382,8 +430,7 @@ int n64_rom_tx(const char* name, unsigned char index)
|
||||
|
||||
MD5Update(&ctx, buf, chunk);
|
||||
|
||||
if (is_first_chunk)
|
||||
{
|
||||
if (is_first_chunk) {
|
||||
// try to detect ROM settings based on header MD5 hash
|
||||
|
||||
// For calculating the MD5 hash of the header, we need to make a
|
||||
@@ -395,12 +442,15 @@ int n64_rom_tx(const char* name, unsigned char index)
|
||||
md5_to_hex(md5, md5_hex);
|
||||
printf("Header MD5: %s\n", md5_hex);
|
||||
|
||||
rom_found_in_db = detect_rom_settings_in_dbs(md5_hex);
|
||||
if (!rom_found_in_db)
|
||||
{
|
||||
rom_info_detected = detect_rom_settings_in_dbs(md5_hex);
|
||||
// system region and/or cic is missing
|
||||
if (rom_info_detected == 0) {
|
||||
printf("No ROM information found for header hash: %s\n", md5_hex);
|
||||
for (size_t i = 0x40 / sizeof(uint32_t); i < 0x1000 / sizeof(uint32_t); i++) ipl3_crc += ((uint32_t*)buf)[i];
|
||||
region_code = buf[0x3e];
|
||||
strncpy(cart_id, (char*)(buf + 0x3b), 4);
|
||||
sprintf((char*)(cart_id + 4), "%02X", buf[0x3f]);
|
||||
cart_id[6] = '\0';
|
||||
printf("Cartridge ID: %s\n", cart_id);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -415,19 +465,23 @@ int n64_rom_tx(const char* name, unsigned char index)
|
||||
md5_to_hex(md5, md5_hex);
|
||||
printf("File MD5: %s\n", md5_hex);
|
||||
|
||||
// Try to detect ROM settings from file MD5 if they are not available yet
|
||||
if (!rom_found_in_db)
|
||||
{
|
||||
rom_found_in_db = detect_rom_settings_in_dbs(md5_hex);
|
||||
if (!rom_found_in_db) printf("No ROM information found for file hash: %s\n", md5_hex);
|
||||
}
|
||||
// 0 = nothing detected
|
||||
// 1 = cic detected
|
||||
// 2 = found in db, but no system type and/or cic
|
||||
// 3 = both
|
||||
|
||||
// Try detect (partial) ROM settings by analyzing the ROM itself. (region, cic and save type)
|
||||
// Fallback for missing db entries.
|
||||
if (!rom_found_in_db)
|
||||
{
|
||||
cic_detected = detect_rom_settings_from_first_chunk(region_code, ipl3_crc);
|
||||
if (!cic_detected) printf("Unknown CIC type: %016" PRIX64 "\n", ipl3_crc);
|
||||
// Try to detect ROM settings from full file MD5 if they are not available yet
|
||||
if (rom_info_detected == 0)
|
||||
rom_info_detected = detect_rom_settings_in_dbs(md5_hex);
|
||||
|
||||
if (rom_info_detected == 0) {
|
||||
rom_info_detected = detect_rom_settings_in_dbs_with_cartid(cart_id);
|
||||
// Try detect (partial) ROM settings by analyzing the ROM itself. (region, cic and save type)
|
||||
if ((rom_info_detected == 0 || rom_info_detected == 2) && detect_rom_settings_from_first_chunk(cart_id[3], ipl3_crc))
|
||||
rom_info_detected += 1;
|
||||
}
|
||||
else if (rom_info_detected == 2 && detect_rom_settings_from_first_chunk(cart_id[3], ipl3_crc)) {
|
||||
rom_info_detected = 3;
|
||||
}
|
||||
|
||||
printf("Done.\n");
|
||||
@@ -442,11 +496,10 @@ int n64_rom_tx(const char* name, unsigned char index)
|
||||
user_io_set_download(0);
|
||||
ProgressMessage(0, 0, 0, 0);
|
||||
|
||||
if (!rom_found_in_db)
|
||||
{
|
||||
if (!cic_detected) Info("auto-detect failed");
|
||||
else Info("use database if save is needed");
|
||||
}
|
||||
if (rom_info_detected == 0 || rom_info_detected == 2)
|
||||
Info("Auto-detect failed:\nUnknown CIC type.");
|
||||
else if (rom_info_detected == 1)
|
||||
Info("Auto-detect failed:\nROM missing from database,\nyou might not be able to save.", 5000);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user