From cc4aa6c67cebd5a2845965339881777ed5b474b7 Mon Sep 17 00:00:00 2001 From: Paul Desktop ASUS-C7H Date: Fri, 16 Aug 2019 10:27:19 -0500 Subject: [PATCH] ------------------------------------------- Firmware application version #3 release ------------------------------------------- N64 updates: Some extra timing delays were necessary for consistent dumping. Includes fixes for N64 dumping that proved working for me on 10+ carts I dumped successfully. There is now a .csv in docs folder with cart size in bytes, divide that number by 131,072 to get size in mbits for -z flag. Includes CRC32 checksum that can be verified using HxD hex editor. N64 file output is big-endian so it reads as it should in hex editor which is .z64 file format. lua script updated to print out the game name from the in rom header. NES updates: flashing support for quite a few different mappers including GTROM, MMC2, MMC4, action53, easyNSF, and other tweaks to rd/wr timings. FIRMWARE UPDATES: inlretro2.lua script now tries to poll the firmware "application version" and suggest updating your firmware if you're not running the version in this release. You can always update your firmware using the bootloader method in the readme. But there is an easier method if you have an stm32 based device (translated: you purchased your device in 2018 or later). AND you're already running firmware version v2.3.x simply run the new scripts which were added in this commit: PCB version 2.0 or 2.1 (large square PCB with option for 6 connectors) >inlretro.exe -s scripts\inlretro_inl6fwupdate.lua PCB version 2.0N (smaller PCB with NES connector only: >inlretro.exe -s scripts\inlretro_inlNESfwupdate.lua Now that it's easier for the host software to detect the firmware application version can work towards having the scripts automatically update the device firmware for you.. But still need to implement this.. --- ...- Dump Status (BigEndian) (2019-07-24).csv | 1028 ++++++++ docs/n64crc.c | 242 ++ .../INL_NES_PCBv2_0N_FWv2_03_03.dfu | Bin 0 -> 21189 bytes .../INLretro6_PCBv2_0_FWv2_03_03.dfu | Bin 0 -> 23973 bytes firmware/Makefile | 6 +- firmware/build_avr/avr_kazzo.elf | Bin 30156 -> 30444 bytes firmware/build_avr/avr_kazzo.hex | 1671 +++++++------ firmware/build_stm6/inlretro_stm.axf | Bin 209640 -> 225368 bytes firmware/build_stm6/inlretro_stm.elf | Bin 209640 -> 225368 bytes firmware/build_stm6/inlretro_stm.hex | 2203 ++++++----------- firmware/build_stm6/inlretro_stm.map | 529 ++-- ...inlretro_stm.bin => inlretro_stm_AV02.bin} | Bin 23360 -> 23360 bytes firmware/build_stm6/inlretro_stm_AV03.bin | Bin 0 -> 23664 bytes firmware/build_stmn/inlretro_stm.axf | Bin 196072 -> 208936 bytes firmware/build_stmn/inlretro_stm.elf | Bin 196072 -> 208936 bytes firmware/build_stmn/inlretro_stm.hex | 1918 +++++--------- firmware/build_stmn/inlretro_stm.map | 493 ++-- firmware/build_stmn/inlretro_stm_AV03.bin | Bin 0 -> 20880 bytes firmware/firmware release notes.txt | 27 + firmware/source/bootload.c | 19 +- firmware/source/dump.c | 25 + firmware/source/flash.c | 54 +- firmware/source/io.c | 33 +- firmware/source/main.c | 20 + firmware/source/n64.c | 45 +- firmware/source/nes.c | 321 ++- firmware/source/nes.h | 9 + firmware/source/swim.c | 4 + firmware/source/usb.c | 2 + host/scripts/app/dict.lua | 11 +- host/scripts/app/flash.lua | 2 + host/scripts/app/fwupdate.lua | 34 +- host/scripts/gb/mbc1.lua | 11 +- host/scripts/gb/romonly.lua | 30 +- host/scripts/gb/romonly_paul.lua | 296 +++ host/scripts/inlretro2.lua | 29 +- host/scripts/inlretro_inl6fwupdate.lua | 42 + host/scripts/inlretro_inlNESfwupdate.lua | 42 + host/scripts/n64/basic.lua | 61 +- host/scripts/nes/action53_tsop.lua | 213 +- host/scripts/nes/cdream.lua | 146 +- host/scripts/nes/cnrom.lua | 4 +- host/scripts/nes/easyNSF.lua | 158 +- host/scripts/nes/mapper30v2.lua | 1 - host/scripts/nes/mmc1.lua | 1 + host/scripts/nes/mmc2.lua | 762 ++++++ host/scripts/nes/mmc3.lua | 22 +- host/scripts/nes/mmc4.lua | 89 +- host/scripts/nes/nrom.lua | 31 + host/scripts/nes/unrom_tsop.lua | 459 ++++ shared/shared_dict_bootload.h | 6 +- shared/shared_dict_buffer.h | 5 + shared/shared_dict_nes.h | 7 +- 53 files changed, 6864 insertions(+), 4247 deletions(-) create mode 100644 docs/Nintendo - Nintendo 64 - Dump Status (BigEndian) (2019-07-24).csv create mode 100644 docs/n64crc.c create mode 100644 firmware/DFU_release/INL_NES_PCBv2_0N_FWv2_03_03.dfu create mode 100644 firmware/DFU_release/INLretro6_PCBv2_0_FWv2_03_03.dfu rename firmware/build_stm6/{inlretro_stm.bin => inlretro_stm_AV02.bin} (99%) create mode 100644 firmware/build_stm6/inlretro_stm_AV03.bin create mode 100644 firmware/build_stmn/inlretro_stm_AV03.bin create mode 100644 firmware/firmware release notes.txt create mode 100644 host/scripts/gb/romonly_paul.lua create mode 100644 host/scripts/inlretro_inl6fwupdate.lua create mode 100644 host/scripts/inlretro_inlNESfwupdate.lua create mode 100644 host/scripts/nes/mmc2.lua create mode 100644 host/scripts/nes/unrom_tsop.lua diff --git a/docs/Nintendo - Nintendo 64 - Dump Status (BigEndian) (2019-07-24).csv b/docs/Nintendo - Nintendo 64 - Dump Status (BigEndian) (2019-07-24).csv new file mode 100644 index 0000000..aef441e --- /dev/null +++ b/docs/Nintendo - Nintendo 64 - Dump Status (BigEndian) (2019-07-24).csv @@ -0,0 +1,1028 @@ +size in Bytes +ID;Name;Size;CRC32;MD5;Serial;#Trusted;Status +"0001";"GoldenEye 007 (Europe)";"12582912";"9EC14AEB";"CFF69B70A8AD674A0EFE5558765855C9";"NGEP NUS-NGEP-EUR, NUS-NGEP-AUS";5;"Verified" +"0002";"GoldenEye 007 (Japan)";"12582912";"A6BE19DD";"1880DA358F875C0740D4A6731E110109";"NGEJ NUS-NGEJ-JPN";1;"Trusted" +"0003";"GoldenEye 007 (USA)";"12582912";"B6330846";"70C525880240C1E838B8B1BE35666C3B";"NGEE NUS-NGEE-USA-1";1;"Trusted" +"0004";"007 - The World Is Not Enough (Europe) (En,Fr,De)";"33554432";"002C3B2A";"34AB1DEA3111A233A8B5C5679DE22E83";"NO7P NUS-N07P-FRA, NUS-NO7P-UKV";2;"Verified" +"0005";"007 - The World Is Not Enough (USA)";"33554432";"26360987";"9D58996A8AA91263B5CD45C385F45FE4";"NO7E NUS-N07E-USA";1;"Trusted" +"0006";"1080 TenEighty Snowboarding (Europe) (En,Ja,Fr,De)";"16777216";"75A21679";"632C98CF281CDA776E66685B278A4FA6";"NTEP NUS-NTEP-EUR";5;"Verified" +"0007";"1080 TenEighty Snowboarding (Japan, USA) (En,Ja)";"16777216";"08FE81C7";"FA27089C425DBAB99F19245C5C997613";"NTEA NUS-NTEJ-JPN";4;"Verified" +"0008";"40 Winks (Europe) (En,Es,It) (Proto) (1999-10-07)";"33554432";"7E718143";"0A5ACFEA0C7CF68AE25202040D5AD1EB";"N4WX ";1;"Trusted" +"0009";"64 de Hakken!! Tamagotchi - Minna de Tamagotchi World (Japan)";"12582912";"67A789E5";"EA6A92DE5A221A00814F7448BF6F1B31";"NTWJ NUS-NTWJ-JPN";1;"Trusted" +"0010";"64 Hanafuda - Tenshi no Yakusoku (Japan)";"8388608";"60A680E7";"66335F4DC6AB27034398BC26F263B897";"NHFJ NUS-NHFJ-JPN";1;"Trusted" +"0011";"64 Oozumou (Japan)";"16777216";"742E31FB";"2CF9EDB51ADA9DE2AE7AD9FD5ACC5580";"NOSJ NUS-NOSJ-JPN";1;"Trusted" +"0012";"64 Oozumou 2 (Japan)";"16777216";"C1BC6FD8";"F7C796371E77E0A6FBD02EB866341952";"NO2J NUS-NO2J-JPN";1;"Trusted" +"0013";"64 Trump Collection - Alice no Wakuwaku Trump World (Japan)";"12582912";"DCA7F4EB";"6B947F654775CF5DACD1E5D53D577DA7";"NTCJ NUS-NTCJ-JPN";1;"Trusted" +"0014";"Action Replay Pro 64 (Europe) (v3.0) (Unl)";"262144";"C992DFB4";"35BA407EA9E4EF7C0ACE8B4F58BEEC41";" ";0;"Not verified" +"0015";"Action Replay Pro 64 (Europe) (v3.3) (Unl)";"262144";"9FBABFDA";"67AFA5DF80A5CFC91FCE1DC918EA0A4F";" ";0;"Not verified" +"0016";"GameBooster 64 (Europe) (v1.1) (Unl)";"262144";"35B99BD9";"1A56FE2B2FE339C7DD4FF8D37EC8654B";" ";0;"Not verified" +"0017";"GameBooster 64 (USA) (v1.1) (Unl)";"262144";"E0B8EDAE";"60D0264B38E22EF0D6B9549E4C81C29F";" ";0;"Not verified" +"0018";"GameShark Pro (USA) (v2.0) (Unl)";"262144";"EF9EDF87";"437EFD7FD7F84F4C0F802D3BF1F8464E";" ";0;"Not verified" +"0019";"GameShark Pro (USA) (v3.3) (Unl)";"262144";"7CC07BBC";"9F556D184D945369DDD11B5F815814A8";" ";0;"Not verified" +"0020";"Xplorer 64 (Germany) (v1.067) (Unl)";"262144";"656ACDF5";"9137129A586E1BCAB6AE81BAC6B01275";" ";0;"Not verified" +"0021";"AeroFighters Assault (Europe) (En,Fr,De)";"12582912";"6A2B08DA";"7558E3DA7225712936D3BA3DCE210C36";"NSAP NUS-NSAP-EUR";1;"Trusted" +"0022";"AeroFighters Assault (USA)";"8388608";"4370D7E3";"79FB6E2452AF077C5EF1DDE5FC810F04";"NERE ";0;"Not verified" +"0023";"AeroGauge (Europe) (En,Fr,De)";"8388608";"040B0046";"05056045447BF1FBA8F9878A7F6009F3";"NAGP NUS-NAGP-UKV";1;"Trusted" +"0024";"AeroGauge (Japan) (Demo) (Kiosk)";"8388608";"6EE3B932";"E970AF3DE25BB5AE1154010E26AF776F";"NAGJ NUS-NAGJ-JPN";1;"Trusted" +"0025";"AeroGauge (Japan) (Rev 1)";"8388608";"F322B641";"0620C2D134A0430F4AFA208FFEDA67B8";"NAGJ NUS-NAGJ-JPN";1;"Trusted" +"0026";"AeroGauge (USA)";"8388608";"198B9E0E";"72C7FFCEA6C1430616867616F5E9D51A";"NAGE NUS-NAGE-USA";1;"Trusted" +"0027";"AI Shougi 3 (Japan)";"8388608";"86DF90E6";"4A5C509A20DB7A429DC1DD4E219AD4A2";"NS3J NUS-NS3J-JPN";1;"Trusted" +"0028";"Aidyn Chronicles - The First Mage (Europe)";"33554432";"BE7E230D";"54D0A39123C15F74AABB1ECC24D4D6A0";"NAYP NUS-NAYP-EUR";1;"Trusted" +"0029";"Aidyn Chronicles - The First Mage (USA)";"33554432";"B1F18186";"AF149336B3DDB899598E7BE8740D7DC6";"NAYE ";0;"Not verified" +"0030";"Airboarder 64 (Europe)";"8388608";"C14D45AC";"E8891F8F498A615A6CBAF75B7DDC9FA6";"NABP NUS-NABP-EUR";1;"Trusted" +"0031";"Air Boarder 64 (Japan)";"8388608";"58FCB771";"CCEE2FCF38DC2200128D75D15DB53283";"NABJ NUS-NABJ-JPN";1;"Trusted" +"0032";"Akumajou Dracula Mokushiroku - Real Action Adventure (Japan)";"12582912";"E349CFEC";"256A1CB23F9E1A2762A7A171417B5D68";"ND3J NUS-ND3J-JPN";2;"Verified" +"0033";"Akumajou Dracula Mokushiroku Gaiden - Legend of Cornell (Japan)";"16777216";"FF009C21";"47EA239717C4D225C9D0E9FD37B9FCB3";"ND4J NUS-ND4J-JPN";1;"Trusted" +"0034";"All Star Tennis '99 (Europe) (En,Fr,De,Es,It)";"8388608";"996E845F";"E3F4C868917A12BD5E84D94D1C260C7D";"NTNP NUS-NTNP-EUR";1;"Trusted" +"0035";"All Star Tennis 99 (USA)";"8388608";"A7DCF638";"AFC3DC9BB737D81903F6CE4875B63AE9";"NTNE ";0;"Not verified" +"0036";"All-Star Baseball 99 (Europe)";"12582912";"D0DE3584";"ED5F1E12DA36DBEC8A0A24ED98D4AED5";"NBSP NUS-NBSP-EUR";1;"Trusted" +"0037";"All-Star Baseball 99 (USA)";"12582912";"6D25B36F";"78551D23F230B58B9F449CDB4A285761";"NBSE ";0;"Not verified" +"0038";"All-Star Baseball 2000 (Europe)";"16777216";"D3C29AA4";"90448C4175EE9D0247674474DCABDFED";"NBEP NUS-NBEP-EUR";1;"Trusted" +"0039";"All-Star Baseball 2000 (USA)";"16777216";"69E88471";"AADA358CE97F06C4DF5BF55987268844";"NBEE ";0;"Not verified" +"0040";"All-Star Baseball 2001 (USA)";"16777216";"4D659E85";"6E01B8D425AE74EF5A0F875C700A3B18";"NASE ";0;"Not verified" +"0041";"Armorines - Project S.W.A.R.M. (Europe)";"16777216";"600BC49E";"0C2CBAFEC6F184AD39EF29B2B5E0F44A";"NARP NUS-NARP-EUR";1;"Trusted" +"0042";"Armorines - Project S.W.A.R.M. (Germany)";"16777216";"5BAB9100";"2BC48B3E6F61896B9BC7BEF5205CC49C";"NARD ";0;"Not verified" +"0043";"Armorines - Project S.W.A.R.M. (USA)";"16777216";"630A19E2";"6E6E7A703C131ADADDF4175E9037A2EB";"NARE ";0;"Not verified" +"0044";"Army Men - Air Combat (USA)";"8388608";"1952CC87";"755DF7F57EDF87706D4C80FF15883312";"NACE ";0;"Not verified" +"0045";"Army Men - Sarge's Heroes (Europe) (En,Fr,De)";"8388608";"E79048E2";"53E2872612760133AB7B2CC2E22B847C";"NAMP NUS-NAMP-UKV";1;"Trusted" +"0046";"Army Men - Sarge's Heroes (USA)";"8388608";"2FE786F6";"B8085C2EDB1C6D23E52ED8C06D92B4F8";"NAME ";0;"Not verified" +"0047";"Army Men - Sarge's Heroes 2 (USA)";"8388608";"79A71608";"6EEA5C4A6256092ED8F9BA8861C689C6";"N32E ";0;"Not verified" +"0048";"Asteroids Hyper 64 (USA)";"4194304";"F5CE3D91";"874C7B7B365D2C20AAA1A0C90C93F9B8";"NAHE ";0;"Not verified" +"0049";"Automobili Lamborghini (Europe)";"4194304";"3BAF58D5";"7853F02DC66A35BC8C2BC33D03B8F0CA";"NLCP NUS-NLCP-EUR";2;"Verified" +"0050";"Automobili Lamborghini (USA)";"4194304";"A4374EAC";"EC39579F066A9714FF030D07DEC3C9D3";"NLCE ";0;"Not verified" +"0051";"Baku Bomber Man (Japan)";"8388608";"22F54A52";"8183688A4B7D0A390496B5655BCD252E";"NBMJ NUS-NBMJ-JPN";1;"Trusted" +"0052";"Baku Bomber Man 2 (Japan)";"16777216";"86BBC278";"CA956015B6820DCFF1C814F3532E18B1";"NBVJ NUS-NBVJ-JPN";1;"Trusted" +"0053";"Bakuretsu Muteki Bangaioh (Japan)";"12582912";"6AB7FEC6";"8107825AC2A522057422463ED81E276B";"NBNJ NUS-NBNJ-JPN";1;"Trusted" +"0054";"Bakushou Jinsei 64 - Mezase! Resort Ou (Japan)";"12582912";"EF8C2F34";"09FD63AFA1156405E618752FC583DF93";"NBJJ NUS-NBJJ-JPN";1;"Trusted" +"0055";"Banjo to Kazooie no Daibouken (Japan)";"16777216";"8F7C9324";"3D3855A86FD5A1B4D30BEB0F5A4A85AF";"NBKJ NUS-NBKJ-JPN";2;"Verified" +"0056";"Banjo to Kazooie no Daibouken 2 (Japan)";"33554432";"258C58D0";"715A8816F30FA24B8D174DC5CB6F25A9";"NB7J NUS-NB7J-JPN";1;"Trusted" +"0057";"Banjo-Kazooie (Europe) (En,Fr,De)";"16777216";"525899C9";"06A43BACF5C0687F596DF9B018CA6D7F";"NBKP NUS-NBKP-EUR, NUS-NBKP-AUS";2;"Verified" +"0058";"Banjo-Kazooie (USA)";"16777216";"AD429961";"B29599651A13F681C9923D69354BF4A3";"NBKE NUS-NBKE-USA";1;"Trusted" +"0059";"Banjo-Kazooie (USA) (Rev 1)";"16777216";"FB7FFB10";"B11F476D4BC8E039355241E871DC08CF";"NBKE ";1;"Trusted" +"0060";"Banjo-Tooie (Australia)";"33554432";"2736266A";"61B5C5C3E5E1A81E5D37072C01B39B76";"NB7U NUS-NB7U-AUS";1;"Trusted" +"0061";"Banjo-Tooie (Europe) (En,Fr,De,Es)";"33554432";"1EC12F5A";"8B2E56F18421A67BCA861427453A1E19";"NB7P NUS-NB7P-EUR";2;"Verified" +"0062";"Banjo-Tooie (USA)";"33554432";"BAB803EF";"40E98FAA24AC3EBE1D25CB5E5DDF49E4";"NB7E ";0;"Not verified" +"0063";"Bass Rush - ECOGEAR PowerWorm Championship (Japan)";"33554432";"383B86EF";"2C618F6C69C3B4803F08762A03835139";"NVBJ NUS-NVBJ-JPN";1;"Trusted" +"0064";"Bassmasters 2000 (USA)";"12582912";"6B09092E";"930C7F6E5863471DDE1816D28A10EB88";"NB4E ";0;"Not verified" +"0065";"Batman Beyond - Return of the Joker (USA)";"4194304";"35299F9C";"A08676124B326B1035B202C83A97468F";"NJQE ";0;"Not verified" +"0066";"Batman of the Future - Return of the Joker (Europe) (En,Fr,De)";"4194304";"82A4BB8A";"A5EE8A6C34863E3D0EB8C06AE8668B30";"NJQP NUS-NJQP-EUR";1;"Trusted" +"0067";"BattleTanx (USA)";"8388608";"6C230765";"3406A505C22BAC2F40D9BFC6FF08CF86";"NBXE ";0;"Not verified" +"0068";"BattleTanx - Global Assault (Europe) (En,Fr,De)";"8388608";"C99C6030";"D6E667FE10AFE8F7116888EFDE98AE0E";"NBQP NUS-NBQP-UKV";1;"Trusted" +"0069";"BattleTanx - Global Assault (USA)";"8388608";"31BEB053";"654557C316F901A2CA6F7F4B43343147";"NBQE ";0;"Not verified" +"0070";"Battlezone - Rise of the Black Dogs (USA)";"16777216";"736F9D5C";"266C0989ED0929DF499389954779EA97";"NZOE ";0;"Not verified" +"0071";"Beetle Adventure Racing! (Europe) (En,Fr,De)";"16777216";"5B6C6E4C";"A94135D163E6091C960ADC918C1FB8A7";"NNSP NUS-NNSP-SCN";1;"Trusted" +"0072";"Beetle Adventure Racing! (Japan)";"16777216";"49E75825";"5FFD43089B7334072B2B74421618D973";"NB8J NUS-NB8J-JPN";1;"Trusted" +"0073";"Beetle Adventure Racing! (USA) (En,Fr,De)";"16777216";"F4A97C73";"CF97C336479DDBF1217E4DDE89D9D2D3";"NNSE ";0;"Not verified" +"0074";"Big Mountain 2000 (USA)";"12582912";"3AC924BC";"BF6780E2982C16D4A4FDB553BE8F9226";"NMUE ";0;"Not verified" +"0075";"Bio F.R.E.A.K.S. (Europe)";"16777216";"2C4EB906";"42672BA5E98CD21D7F3E3745E69038DD";"NBFP NUS-NBFP-EUR";1;"Trusted" +"0076";"Bio F.R.E.A.K.S. (USA)";"16777216";"DFBF448C";"B90AB8F7605D971CC7A6D9BA5E67D1AF";"NBFE ";0;"Not verified" +"0077";"Biohazard 2 (Japan)";"67108864";"4F9D569F";"F77D70959222276491222F31EBFF3BF1";"NB5J NUS-NB5J-JPN";1;"Trusted" +"0078";"Blast Corps (Europe) (En,De)";"8388608";"4C820695";"889D4D337AD11CE94357511C725EAB6A";"NBCP NUS-NBCP-EUR";3;"Verified" +"0079";"Blast Corps (USA)";"8388608";"767A95E7";"A8DFDFF49144627492DA9B0B65B91845";"NBCE ";0;"Not verified" +"0080";"Blast Corps (USA) (Rev 1)";"8388608";"9CBBCCF1";"5875FC73069077C93E214233B60F0BDC";"NBCE ";0;"Not verified" +"0081";"Blastdozer (Japan)";"8388608";"081A3641";"16B82D53D7F038A8FE67A78027720516";"NBCJ NUS-NBCJ-JPN";1;"Trusted" +"0082";"Blues Brothers 2000 (Europe) (En,Fr,De,Es,It,Nl)";"16777216";"8FB41658";"31B4A8ED52B48E756B344C9F22736E50";"NBPP NUS-NBPP-EUR";1;"Trusted" +"0083";"Blues Brothers 2000 (USA)";"16777216";"C6F49764";"997FD8F79CD6F3CD1C1C1FD21E358717";"NBPE ";0;"Not verified" +"0084";"Body Harvest (Europe) (En,Fr,De)";"12582912";"6A04CDAE";"B27FA5E9AD0CB47BB3A74FFAC7BC8EDF";"NBHP NUS-NBHP-EUR";2;"Verified" +"0085";"Body Harvest (USA)";"12582912";"FABBDF02";"3B8585ED03E8DDB89D7DE456317545E7";"NBHE ";0;"Not verified" +"0086";"Bokujou Monogatari 2 (Japan)";"16777216";"F97237C7";"1CF31E7F6E0DEB2C18C39DDD4EED9E51";"NYWJ NUS-NYWJ-JPN";1;"Trusted" +"0087";"Bomberman 64 (Europe)";"8388608";"525339C5";"B68F49AA8F6F7499184AC6B7B8570F2B";"NBMP NUS-NBMP-EUR, NUS-NBMP-AUS";2;"Verified" +"0088";"Bomberman 64 (Japan)";"12582912";"7E74EEDC";"08E491F87445C6E5C168D982FC665D5F";"NHAJ NUS-NHAJ-JPN";1;"Trusted" +"0089";"Bomberman 64 (USA)";"8388608";"3ED0E0DC";"093058ECE14C8CC1A887B2087EB5CFE9";"NBME ";0;"Not verified" +"0090";"Bomberman 64 - The Second Attack! (USA)";"16777216";"57550007";"AEC1FDB0F1CAAD86C9F457989A4CE482";"NBVE ";0;"Not verified" +"0091";"Bomberman Hero (Europe)";"12582912";"59E39947";"F79EF0813157880FFBAD6199E07579BE";"NBDP NUS-NBDP-EUR";2;"Verified" +"0092";"Bomberman Hero (USA)";"12582912";"2CC2E634";"EF2453BFF7AD0C4BFA9AB0BD6324EBF3";"NBDE ";1;"Trusted" +"0093";"Bomberman Hero - Mirian Oujo o Sukue! (Japan)";"12582912";"69CEABCC";"EE273763C7391458865FF26C7EA0C3F1";"NUS-NBDJ-JPN ";2;"Verified" +"0094";"Bottom of the 9th (USA)";"16777216";"1844C8CA";"FB19AFD5E8C49978E6E6AE3622E0498A";"NBOE ";0;"Not verified" +"0095";"Brunswick Circuit Pro Bowling (USA)";"8388608";"80D70173";"62E92102D6FD1701A6E904DA6AB58AE8";"NOWE ";0;"Not verified" +"0096";"Buck Bumble (Europe) (En,Fr,De,Es,It)";"12582912";"E26192AB";"A2E4BE02876CB0F0D1E925FF95090C96";"NBLP NUS-NBLP-EUR";2;"Verified" +"0097";"Buck Bumble (Japan)";"12582912";"2ED81A65";"AEE981977D8F069003574CD10A268D47";"NBLJ NUS-NBLJ-JPN";1;"Trusted" +"0098";"Buck Bumble (USA)";"12582912";"8EC937DB";"41417FCE2B37EAAE787C5A845A0015C4";"NBLE ";0;"Not verified" +"0099";"Bug's Life, A (Europe)";"12582912";"791881D4";"ED3E962653A1CD56AAB175DEEE6EE52A";"NBYP NUS-NBYP-UKV";1;"Trusted" +"0100";"Bug's Life, A (France)";"12582912";"E5429094";"D2860D4FBD0EC4B2711A6EF8D78F9866";"NBYF ";0;"Not verified" +"0101";"Bug's Life, A (Germany)";"12582912";"15A32836";"CBEF54768670F4B5602CCBC90150007A";"NBYD ";0;"Not verified" +"0102";"Bug's Life, A (Italy)";"12582912";"2D118764";"E3609FD12369C464E832C6D2A4D20790";"NBYI NUS-NBYI-ITA";1;"Trusted" +"0103";"Bug's Life, A (USA)";"12582912";"CF2EA0B6";"7FD6BFFB80F920E01EF869829D485EA3";"NBYE NUS-NBYE-USA";1;"Trusted" +"0104";"Bust-A-Move '99 (USA)";"8388608";"C285FC69";"8567382D3CD5BC0406B7B4C780F621DC";"NB3E ";0;"Not verified" +"0105";"Bust-A-Move 2 - Arcade Edition (Europe)";"8388608";"04731BAB";"094F639A9BA63B2136D2887C8D72BCA0";"NBUP NUS-NBUP-EUR";1;"Trusted" +"0106";"Bust-A-Move 2 - Arcade Edition (USA)";"8388608";"9F54CD2D";"8897A39E34AEE4D3F807AF255C6617D6";"NBUE ";0;"Not verified" +"0107";"Bust-A-Move 3 DX (Europe)";"8388608";"95595889";"3EA21256DDC4157C3231AE5CC9C4652A";"NB3P NUS-NB3P-EUR";1;"Trusted" +"0108";"California Speed (USA)";"16777216";"6F6262CB";"965AD2FA317F0644E49A89A3219719CB";"NCLE ";0;"Not verified" +"0109";"Carmageddon 64 (Europe) (En,Fr,De,Es)";"16777216";"8569F1A0";"CA21467BDE6B355E7A15B8F1ADA7B24D";"NCDX ";0;"Not verified" +"0110";"Carmageddon 64 (Europe) (En,Fr,Es,It)";"16777216";"8036F999";"59EB5646FA079BCBD7A340D7A10196DD";"NCDY NUS-NCDY-EUR";1;"Trusted" +"0111";"Carmageddon 64 (USA)";"16777216";"10C6A0A1";"31BB57C1FAD0D47DC2353C1950B11886";"NCDE ";0;"Not verified" +"0112";"Castlevania (Europe) (En,Fr,De)";"12582912";"D9D76235";"57146B6CD8EE7D96B01A811F98A1AC61";"ND3P NUS-ND3P-EUU";1;"Trusted" +"0113";"Castlevania (USA)";"12582912";"8B0D3C00";"1CC5CF3B4D29D8C3ADE957648B529DC1";"ND3E ";0;"Not verified" +"0114";"Castlevania (USA) (Rev 2)";"12582912";"83032D97";"06B58673F7D31C56F8FE8186E86F6BD6";"ND3E ";0;"Not verified" +"0115";"Castlevania - Legacy of Darkness (Europe) (En,Fr,De)";"16777216";"12AB9B45";"78D5F8A98A5ED21D0817856BCD2AD750";"ND4P NUS-ND4P-EUU";1;"Trusted" +"0116";"Castlevania - Legacy of Darkness (USA)";"16777216";"AB13028C";"25258460F98F567497B24844ABE3A05B";"ND4E ";0;"Not verified" +"0117";"Centre Court Tennis (Europe)";"12582912";"B1D26F39";"31FB88048076ACE4BD4205C5F40414AB";"NTSP NUS-NTSP-EUR";1;"Trusted" +"0118";"Chameleon Twist (Europe)";"12582912";"587DD983";"1CD90B13B7FD6AFDCB838F801D807826";"NCTP NUS-NCTP-EUR";1;"Trusted" +"0119";"Chameleon Twist (Japan)";"12582912";"6395C475";"C0EB519122D63A944A122437EC1B98EE";"NCTJ NUS-NCTJ-JPN";1;"Trusted" +"0120";"Chameleon Twist (USA)";"12582912";"7FE024C9";"397BE52D4FB7DF1E26C6275E05425571";"NCTE ";0;"Not verified" +"0121";"Chameleon Twist 2 (Europe)";"8388608";"3B53519F";"45D1D039AB7926ADC748DE640AFD986A";"N2VP NUS-N2VP-EUR";1;"Trusted" +"0122";"Chameleon Twist 2 (Japan)";"12582912";"08287CC8";"740AD4DB03952BBE997DB09947A41E62";"NV2J NUS-NV2J-JPN";1;"Trusted" +"0123";"Chameleon Twist 2 (USA)";"8388608";"CDF26D67";"00327E0B5DF6DCE6DECC31353F33A3D3";"N2VE ";0;"Not verified" +"0124";"Charlie Blast's Territory (Europe)";"4194304";"82C1D9E1";"DD53E1F83E8789D23DF6AF942FFEF236";"NCBP NUS-NCBP-EUR";1;"Trusted" +"0125";"Charlie Blast's Territory (USA)";"4194304";"BA4E65A8";"59FA8C6D533D36C0FFC2AAFAB7166E6F";"NCBE ";0;"Not verified" +"0126";"Chopper Attack (Europe)";"8388608";"C1DCD7AB";"8F6BED633BE214CF039DBDAC356231CE";"NCHP NUS-NCHP-EUR";1;"Trusted" +"0127";"Chopper Attack (USA)";"8388608";"AA5D76A9";"C37E8AFB4F3ECC86D01CE7388CA59347";"NCHE ";0;"Not verified" +"0128";"Choro Q 64 (Japan)";"8388608";"231F9284";"8287A908E36E79B2D3AF0BD22C43ECD9";"NCRJ NUS-NCRJ-JPN";1;"Trusted" +"0129";"Choro Q 64 2 - Hacha Mecha Grand Prix Race (Japan)";"12582912";"5C565AD6";"9081370141079031EBBDBCA56FC8C7D8";"NCGJ NUS-NCGJ-JPN";1;"Trusted" +"0130";"Chou Kuukan Nighter Pro Yakyuu King (Japan)";"8388608";"5F75634E";"78838C202C4FF5A460586451EE9182AA";"NPKJ NUS-NPKJ-JPN";1;"Trusted" +"0131";"Chou Kuukan Nighter Pro Yakyuu King 2 (Japan)";"16777216";"479643E2";"97EAB4DC83DA0AD2890DE2AAAA5D109A";"NP2J NUS-NP2J-JPN";1;"Trusted" +"0132";"Chou Snobo Kids (Japan)";"16777216";"DD4E84E4";"9181B35A758EF17D1E2DC595DF55EE3C";"NK2J NUS-NK2J-JPN";1;"Trusted" +"0133";"City-Tour GP - Zen-Nihon GT Senshuken (Japan)";"16777216";"E272BDF6";"2A0BF5A9A136D57AF01D199B16899634";"NGTJ NUS-NGTJ-JPN";1;"Trusted" +"0134";"Clay Fighter - Sculptor's Cut (USA)";"16777216";"434DE656";"30E7E083B978408D5B7760D0CE4DC61D";"NC2E ";0;"Not verified" +"0135";"Clay Fighter 63 1-3 (Europe)";"12582912";"82263E5D";"41965B533F3DD95663361D9DF68B0C1F";"NCFP NUS-NCFP-EUR";1;"Trusted" +"0136";"Clay Fighter 63 1-3 (USA)";"12582912";"3FA647DD";"3207BF22E305C488109B09A03706F36F";"NCFE NUS-NCFE-USA";1;"Trusted" +"0137";"Clay Fighter 63 1-3 (USA) (Beta) (1997-08-21)";"12582912";"18F4166A";"CBBEAFF5A9074D1A5507CF46CD683D36";"NCFE ";0;"Not verified" +"0138";"Command & Conquer (Europe) (En,Fr)";"33554432";"F3DA8A26";"42DA4C7D040F9E7CD046A42EC3E68027";"NCCP NUS-NCCP-EUR";2;"Verified" +"0139";"Command & Conquer (Germany)";"33554432";"6CD0FC99";"1A9195662C89DCBEA88BCFA99B096CDE";"NCCD NUS-NCCD-NOE";1;"Trusted" +"0140";"Command & Conquer (USA)";"33554432";"3E9069EF";"B436F4717AC585B0D847756468FD6393";"NCCE ";0;"Not verified" +"0141";"Conker's Bad Fur Day (Europe)";"67108864";"4667CFE9";"05194D49C14E52055DF72A54D40791E1";"NFUP NUS-NFUP-EUR";1;"Trusted" +"0142";"Conker's Bad Fur Day (USA)";"67108864";"CE8CC172";"00E2920665F2329B95797A7EAABC2390";"NFUE ";0;"Not verified" +"0143";"Cruis'n Exotica (USA)";"16777216";"867A2CED";"DB7A03B77D44DB81B8A3FCDFC4B72D8C";"NXOE ";0;"Not verified" +"0144";"Cruis'n USA (Europe)";"8388608";"8935A8D9";"69CD5BA6BC9310B9E37CCB1BC6BD16AD";"NCUP NUS-NCUP-EUR, NUS-NCUP-AUS";3;"Verified" +"0145";"Cruis'n USA (USA)";"8388608";"5238B727";"00A3E885F8D899646228A21D946B2102";"NCUE ";0;"Not verified" +"0146";"Cruis'n USA (USA) (Rev 1)";"8388608";"4655BA2D";"45FC88E2BA6711F25F0DE988E719DF29";"NCUE ";0;"Not verified" +"0147";"Cruis'n USA (USA) (Rev 2)";"8388608";"C3B52701";"2838A9018AD2BCB8B7F6161C746A1B71";"NCUE NUS-NCUE-USA";1;"Trusted" +"0148";"Cruis'n World (Europe)";"12582912";"E46CE079";"AF950A1B6C460D7FC3E78375D35047EF";"NCWP NUS-NCWP-EUR";1;"Trusted" +"0149";"Cruis'n World (USA)";"12582912";"A123769F";"AADA4CBD938E58A447B399A1D46F03E6";"NCWE ";0;"Not verified" +"0150";"Custom Robo (Japan)";"16777216";"F2FAE693";"A06D2E83CF2628915E8847F609474661";"NCXJ NUS-NCXJ-JPN";1;"Trusted" +"0151";"Custom Robo V2 (Japan)";"16777216";"C8201454";"115118DD5E0F02D82BA1BF070A7B78F1";"NCZJ NUS-NCZJ-JPN";3;"Verified" +"0152";"CyberTiger (Europe)";"16777216";"7319D9AF";"8C4A4CD472D610CDA5459B3A92F21D30";"NT4P NUS-NT4P-EUR";1;"Trusted" +"0153";"CyberTiger (USA)";"16777216";"10CC5F15";"88072F30D4F9CF384B2B3A0300649218";"NT4E ";0;"Not verified" +"0154";"Daffy Duck Starring as Duck Dodgers (Europe) (En,Fr,De,Es,It,Nl)";"16777216";"C61F6BB9";"1408FCF68B60D845F090107EF355A7E5";"NDUP NUS-NDUP-EUR";1;"Trusted" +"0155";"Dance Dance Revolution - Disney Dancing Museum (Japan)";"33554432";"43EE0117";"0B86FA9259E2B751111A1701091644B1";"NDFJ NUS-NDFJ-JPN";1;"Trusted" +"0156";"Dark Rift (Europe)";"8388608";"D2A19C71";"4242FDE5B74F22AAF5746459E126121F";"NDKP NUS-NDKP-EUR, NUS-NDKP-AUS";2;"Verified" +"0157";"Dark Rift (USA)";"8388608";"83FD222F";"ECB170EBBFDA0E932C07524040BCC36C";"NDKE ";0;"Not verified" +"0158";"Deadly Arts (USA)";"12582912";"3DB8130E";"A2A4A0318DAB366A595336B6F80FF3AB";"NGAE ";0;"Not verified" +"0159";"Defi au Tetris Magique (France)";"16777216";"E7EF60E8";"C644E318B33C4EBD94695C0C3E1E80FF";"NMTF ";0;"Not verified" +"0160";"Densha de Go! 64 (Japan)";"33554432";"7BFC71E0";"772FA166E5DB51EFFC77FB8D832AC4D2";"ND6J NUS-ND6J-JPN";1;"Trusted" +"0161";"Derby Stallion 64 (Japan)";"33554432";"A9417994";"7F57463856540104B21A5289312B626F";"NDAJ NUS-NDAJ-JPN";1;"Trusted" +"0162";"Derby Stallion 64 (Japan) (Beta)";"33554432";"8EC950A9";"1051E1402EE110F3C5E372C9E1C5B338";" ";0;"Not verified" +"0163";"Destruction Derby 64 (Europe) (En,Fr,De)";"16777216";"7AD9E429";"BDA717ECC8434F12F313342485828B58";"NDEP NUS-NDEP-EUR";1;"Trusted" +"0164";"Destruction Derby 64 (USA)";"16777216";"38F1B5D9";"7FCCB47498EEC06E96AE9372247D1E90";"NDEE ";0;"Not verified" +"0165";"Dezaemon 3D (Japan)";"16777216";"9E978488";"54BE265E7B2C28AB92BF1A4130ACB5A2";"CDZJ NUS-CDZJ-JPN";1;"Trusted" +"0166";"Diddy Kong Racing (Europe) (En,Fr,De)";"12582912";"4A13323C";"0F0B7B78B345FBF2581D834CB4A81245";"NDYP NUS-NDYP-EUR";1;"Trusted" +"0167";"Diddy Kong Racing (Europe) (En,Fr,De) (Rev 1)";"12582912";"B1E87639";"6B2BAFE540E0AF052A78E85B992BE999";"NDYP NDYP";1;"Trusted" +"0168";"Diddy Kong Racing (Japan)";"12582912";"B566FB94";"10747662A55241B9234CD114C940504F";"NDYJ NUS-NDYJ-JPN";2;"Verified" +"0169";"Diddy Kong Racing (USA) (En,Fr)";"12582912";"EB759206";"4F0E07F0EEAC7E5D7CE3A75461888D03";"NDYE NUS-NDYE-ASI";1;"Trusted" +"0170";"Diddy Kong Racing (USA) (En,Fr) (Rev 1)";"12582912";"5ACCA298";"B31F8CCA50F31ACC9B999ED5B779D6ED";"NDYE ";0;"Not verified" +"0171";"Donald Duck - Goin' Quackers (USA) (En,Fr,De,Es,It)";"20971520";"7FDEC270";"0E0E920AB13EF13508F5A98CC4CD2FF8";"NDQE ";0;"Not verified" +"0172";"Donald Duck - Quack Attack (Europe) (En,Fr,De,Es,It)";"20971520";"C4B0D9EA";"E8B403A0F0E212FA5C1220AF10D9C379";"NDQP NUS-NDQP-EUR";1;"Trusted" +"0173";"Donkey Kong 64 (Europe) (En,Fr,De,Es)";"33554432";"A28C71C6";"118E9CE360B97A6F8DAB2C9F30660BF5";"NDOP NUS-NDOP-EUR, NUS-NDOP-AUS";4;"Verified" +"0174";"Donkey Kong 64 (Japan)";"33554432";"919F7E74";"5B677F4BF93D6578252FCAD2C8CEB637";"NDOJ NUS-NDOJ-JPN";2;"Verified" +"0175";"Donkey Kong 64 (USA)";"33554432";"D44B4FC6";"9EC41ABF2519FC386CADD0731F6E868C";"NDOE NDOE";2;"Verified" +"0176";"Donkey Kong 64 (USA) (Demo) (Kiosk)";"33554432";"C83DFA15";"98A5836E3A5DA7BD0B5819E7498ACEA2";"NDPE DIS-NUS-NDPE-USA";0;"Not verified" +"0177";"Doom 64 (Europe)";"8388608";"D985C356";"190CCCA6526DC4A1F611E3B40F5131C0";"NDMP NUS-NDMP-UKV";1;"Trusted" +"0178";"Doom 64 (Japan)";"8388608";"C8F3AF5B";"06F15EF2228C1B1147C41DCCAA07D9DE";"NDMJ NUS-NDMJ-JPN";1;"Trusted" +"0179";"Doom 64 (USA)";"8388608";"5CC1ADE6";"B67748B64A2CC7EFD2F3AD4504561E0E";"NDME NUS-NDME-USA";1;"Trusted" +"0180";"Doom 64 (USA) (Rev 1)";"8388608";"1D3A17B5";"1B1378BB9EE819F740550F566745AF73";"NDME NUS-NDME-USA";1;"Trusted" +"0181";"Doraemon - Nobita to 3tsu no Seireiseki (Japan)";"8388608";"154E8B33";"C2166455E94E89E9E3AB612B4377C443";"NDRJ NUS-NDRJ-JPN";1;"Trusted" +"0182";"Doraemon 2 - Nobita to Hikari no Shinden (Japan)";"12582912";"0C1A0C38";"0580D96A71671C9E6972FDCF5897CC26";"ND2J NUS-ND2J-JPN";1;"Trusted" +"0183";"Doraemon 3 - Nobita no Machi SOS! (Japan)";"16777216";"D3B68BE4";"A4A1D490BA67831775FC381B846E2168";"N3DJ NUS-ND3J-JPN";1;"Trusted" +"0184";"Doubutsu no Mori (Japan)";"16777216";"9503E3F1";"A4F7C57C180297B2E7BA5A5FEB44FE0B";"NAFJ NUS-NAFJ-JPN";1;"Trusted" +"0185";"Dr. Mario 64 (USA)";"4194304";"A4701927";"1A7936367413E5D6874ABDA6D623AD32";"NN6E ";0;"Not verified" +"0186";"Dual Heroes (Europe)";"12582912";"5A7E226B";"F120FADB52B414EB4FB7D13092AC3CDB";"NDHP NUS-NDHP-EUR";1;"Trusted" +"0187";"Dual Heroes (Japan)";"12582912";"20F23DDE";"E7652ED5CECEB5B1BC14495C58546D1C";"NDHJ NUS-NDHJ-JPN";1;"Trusted" +"0188";"Dual Heroes (USA)";"12582912";"D09F4DA8";"923D65E69F51858C697E0E5759CD038B";"NDHE ";0;"Not verified" +"0189";"Duck Dodgers Starring Daffy Duck (USA) (En,Fr,Es)";"16777216";"3177A905";"02192B4B3797983BBE5E452336584208";"NDUE ";0;"Not verified" +"0191";"Duke Nukem - Zero Hour (Europe)";"33554432";"EA82F037";"86E98AACA0D90BF744DA090539BA4AD8";"NDZP NUS-NDZP-EUR";1;"Trusted" +"0192";"Duke Nukem - Zero Hour (France)";"33554432";"7ECDFB28";"E2B73FEB0843874EA831A2E0076FCB72";"NDZF ";0;"Not verified" +"0193";"Duke Nukem - Zero Hour (USA)";"33554432";"9A3258D7";"026789D47DB5FE202A76F89797B33AC7";"NDZE ";1;"Trusted" +"0194";"Duke Nukem 64 (Europe)";"8388608";"3275ADB0";"8657CBA95C409B74C1F5632CBC36643F";"NDNP NUS-NDNP-FRA, NUS-NDNP-SCN";2;"Verified" +"0195";"Duke Nukem 64 (France)";"8388608";"B9C9F07A";"E2E79C7167BDB26E176D220904739C91";"NDNF NUS-NDNF-FRA";1;"Trusted" +"0196";"Duke Nukem 64 (USA)";"8388608";"DBFD5A53";"C7F1A43764A26DA2E43F2A36A5F76E4C";"NDNE NUS-NDNE-USA";1;"Trusted" +"0197";"Earthworm Jim 3D (Europe) (En,Fr,De,Es,It)";"16777216";"61A56330";"BF2DF4B86FAA2181A7ACFE2643FA2293";"NJMP NUS-NJMP-EUR";1;"Trusted" +"0198";"Earthworm Jim 3D (USA)";"16777216";"9E6579C5";"980DFB38AD9A883119DE135F45B7DB36";"NJME ";0;"Not verified" +"0199";"ECW Hardcore Revolution (Europe)";"33554432";"BE8FEEAD";"1830EDE2557E8685E6F76D05CC65076A";"NWIP NUS-NWIP-EUR";2;"Verified" +"0200";"ECW Hardcore Revolution (USA)";"33554432";"36D368EF";"8EEBB16B7A4D39AE8BC8CCCBC41F0A01";"NWIE ";0;"Not verified" +"0201";"Eikou no Saint Andrews (Japan)";"8388608";"1699D2D6";"935DD85AD198BBDE92161CDCE47CBFB3";"NSTJ NUS-NSTJ-JPN";1;"Trusted" +"0202";"Sesame Street - Elmo's Letter Adventure (USA)";"8388608";"92C3BA6F";"15DF97A59B2354B130DEC3FB86BBA513";"NELE ";0;"Not verified" +"0203";"Sesame Street - Elmo's Number Journey (USA)";"8388608";"EA3B92D8";"F733453ED26AFA0ACA8D3EB3B5B6D8EA";"NENE ";0;"Not verified" +"0204";"Eltale Monsters (Japan)";"16777216";"24D937BF";"9B456ACB96291FC8B55232A08AE03346";"NETJ NUS-NYWJ-JPN";1;"Trusted" +"0205";"Excitebike 64 (Europe)";"16777216";"0B881E60";"8FA253FD69B73DF9A831EF2F731491F2";"NMXP NUS-NMXP-EUR";1;"Trusted" +"0206";"Excitebike 64 (Japan)";"16777216";"03BFD065";"BF15A61AFF71C93BF5E05243F57BCA1D";"NMXJ NUS-NMXJ-JPN";1;"Trusted" +"0207";"Excitebike 64 (USA)";"16777216";"FC459192";"7200D1C1CF489FAFFF767729F215E6E6";"NMXE ";0;"Not verified" +"0208";"Excitebike 64 (USA) (Demo) (Kiosk)";"16777216";"BE6298B0";"E0018C33346714B63A55C0E040F23DEA";"NNXE ";0;"Not verified" +"0209";"Extreme-G (Europe) (En,Fr,De,Es,It)";"8388608";"0B71B1EA";"3B2CA0DA0810C95B31DF8C1FB8811BE2";"NEGP NUS-NEGP-EUR";2;"Verified" +"0210";"Extreme-G (Japan)";"8388608";"750DC9A7";"A7CD65E5A4A8838D1CD452BA66E74DF6";"NEGJ NUS-NEGJ-JPN";1;"Trusted" +"0211";"Extreme-G (USA)";"8388608";"04CB74EC";"3E660D3F991C0529E90BFEC0244DB31A";"NEGE ";0;"Not verified" +"0212";"Extreme-G XG2 (Europe) (En,Fr,De,Es,It)";"12582912";"1A57F416";"BB7F98E657FB4B5FCC7DC04BD72E2D2B";"NG2P NUS-NG2P-EUR";1;"Trusted" +"0213";"Extreme-G XG2 (Japan)";"12582912";"7C8A36DA";"F17884A2C16FB6FD11A74D65B1388B4A";"NG2J NUS-NG2J-JPN";1;"Trusted" +"0214";"Extreme-G XG2 (USA)";"12582912";"81A4C28B";"44FE06BA3686C02A7988F27600A533DA";"NG2E ";0;"Not verified" +"0215";"F-1 World Grand Prix (Europe)";"12582912";"1F4E651A";"FAC450EAFF8FA46A1414DB02E6EEAB9F";"NFWP NUS-NFWP-EUR";1;"Trusted" +"0216";"F-1 World Grand Prix (France)";"12582912";"57CD299D";"35F6C42D5A9284688284C24250F4D6BE";"NFWF ";0;"Not verified" +"0217";"F-1 World Grand Prix (Germany)";"12582912";"0F1984DC";"A8C78454C70BD73375AAF69C4078D5DA";"NFWD NUS-NFWD-NOE";1;"Trusted" +"0218";"F-1 World Grand Prix (Japan)";"12582912";"F7BACBC3";"F248F0AAE609111BA9DFF9FD7AFBC485";"NFWJ NUS-NFWJ-JPN";1;"Trusted" +"0219";"F-1 World Grand Prix (USA)";"12582912";"7DC9EF2C";"A81B1DE864DF3F4BB0903760BE673F21";"NFWE ";0;"Not verified" +"0220";"F-1 World Grand Prix II (Europe) (En,Fr,De,Es)";"12582912";"803D33DF";"BC0FD2468AC7769A37C3C58CD5699585";"NF2P NUS-NF2P-EUR";1;"Trusted" +"0221";"F-Zero X (Europe)";"16777216";"2D6F7E8B";"EE79A8FE287B5DCAEA584439363342FC";"NFZP NUS-NFZP-EUR, NUS-NFZP-AUS, NFZP";5;"Verified" +"0222";"F-Zero X (Japan)";"16777216";"6B1CEF83";"58D200D43620007314304F4E6C9E6528";"CFZJ NUS-CFZJ-JPN";3;"Verified" +"0223";"F-Zero X (USA)";"16777216";"0B561FBA";"753437D0D8ADA1D12F3F9CF0F0A5171F";"CFZE NUS-CFZE-USA";2;"Verified" +"0224";"F1 Pole Position 64 (Europe) (En,Fr,De)";"8388608";"ED750623";"A6BD93EA576CDF8569F68171452F7E8A";"NHGP NUS-NHGP-EUR";1;"Trusted" +"0225";"F1 Pole Position 64 (USA) (En,Fr,De)";"8388608";"30A24D89";"049DB657F4223D949F56E9DC5B6A9180";"NHGE ";0;"Not verified" +"0226";"F1 Racing Championship (Europe) (En,Fr,De,Es,It)";"16777216";"2DA744F5";"9581FC6CEAC86DC8A2AEE4053043E422";"NFRP NUS-NFRP-EUR";1;"Trusted" +"0227";"Famista 64 (Japan)";"12582912";"9FB0E6C9";"D99B1A3F6D72DEFD76F3620959B94944";"NFSJ NUS-NFSJ-JPN";1;"Trusted" +"0228";"FIFA - Road to World Cup 98 (Europe) (En,Fr,De,Es,It,Nl,Sv)";"12582912";"137CB3CC";"26B18D35984528AE2F90ADBB2F2642F7";"N8IP NUS-N8IP-UKV";2;"Verified" +"0229";"FIFA - Road to World Cup 98 (USA) (En,Fr,De,Es,It,Nl,Sv)";"12582912";"28B1221C";"2C6D146A8473511CFCFBBE8518F49D71";"N8IE NUS-01A-02";1;"Trusted" +"0230";"FIFA - Road to World Cup 98 - World Cup e no Michi (Japan)";"12582912";"AE346DF6";"3611779F29997267622CBC80E2D087CC";"N8IJ NUS-N8IJ-JPN";1;"Trusted" +"0231";"FIFA 99 (Europe) (En,Fr,De,Es,It,Nl,Pt,Sv)";"16777216";"6EAE1E6E";"6432C622C05EA9CD3217E280AC2CE37C";"N9FP NUS-N9FP-NOE";1;"Trusted" +"0232";"FIFA 99 (USA) (En,Fr,De,Es,It,Nl,Pt,Sv)";"16777216";"6B2473A9";"148DE3073727B9FD156F10AFADD46864";"N9FE ";0;"Not verified" +"0233";"FIFA 64 (Europe) (En,Fr,De)";"8388608";"AE2583FB";"9A7006212947EE7648EE1D13162E55E0";"N7IP NUS-N7IP-EUR";1;"Trusted" +"0234";"FIFA Soccer 64 (USA) (En,Fr,De)";"8388608";"57DE7CAB";"CC7C58A032AABA19E72CCBFA6B3EEFF6";"N7IE ";0;"Not verified" +"0235";"Fighter Destiny 2 (USA)";"16777216";"BB2563C6";"04DD2A319F4F5C22569B612CFDF9F00C";"NFGE ";0;"Not verified" +"0236";"Fighters Destiny (Europe)";"12582912";"C9225511";"EF5CB24CE3FE4E0F850901205437B574";"NKAP NUS-NKAP-SCN";1;"Trusted" +"0237";"Fighters Destiny (France)";"12582912";"0CC22034";"44B0BE1C4B48F6119D3AC9424903D0EB";"NKAF ";0;"Not verified" +"0238";"Fighters Destiny (Germany)";"12582912";"5052168C";"1CF379ACA2397222AF9F3DC5D8E3C444";"NKAD NUS-NKAD-NOE";1;"Trusted" +"0239";"Fighters Destiny (USA)";"12582912";"F45EA789";"D61D97A7658C419A25A9BAC96B0A3DF8";"NKAE ";0;"Not verified" +"0240";"Fighting Cup (Japan)";"12582912";"8A1C261E";"722C3A74A90305D6079A37994CEBF5B2";"NKAJ NUS-NKAJ-JPN";1;"Trusted" +"0241";"Fighting Force 64 (Europe)";"16777216";"4052C176";"0035E8205336982E362402AAEA37D147";"NFFP NUS-NFFP-EUR";1;"Trusted" +"0242";"Fighting Force 64 (USA)";"16777216";"8456841E";"E7008D17FD71D9C2BDA1362C885388B2";"NFFE ";0;"Not verified" +"0243";"Flying Dragon (Europe)";"12582912";"C3066E59";"ADD115AAD0AB7D33BFD243936D809178";"NFDP NUS-NFDP-EUR";1;"Trusted" +"0244";"Flying Dragon (USA)";"12582912";"91BC9AEB";"272B359D8F8AC48ACBF053C262F422E4";"NFDE ";0;"Not verified" +"0245";"Forsaken (Europe) (En,Fr,Es,It)";"8388608";"5ED736D9";"8286DED701DFA22436D311BD5B93BD29";"NFOP NUS-NFOP-UKV";2;"Verified" +"0246";"Forsaken (Germany)";"8388608";"9793ABC2";"74650F7154E0B2DD7C364F511B0D6A77";"NFOD ";0;"Not verified" +"0247";"Forsaken 64 (USA)";"8388608";"76C4333D";"5CDEE5503A57D14533C66B35A5848899";"NFOE ";0;"Not verified" +"0248";"Fox Sports College Hoops '99 (USA)";"12582912";"67EAF0F3";"360DC6BE6D06DCA12E53C077AC0D2571";"NF9E ";0;"Not verified" +"0249";"Frogger 2 (USA) (Proto)";"4194304";"B0C62957";"CB2C9C6104C3EF69A1CF979525F2F73D";" ";0;"Not verified" +"0250";"Fushigi no Dungeon - Fuurai no Shiren 2 - Oni Shuurai! Shiren Jou! (Japan)";"33554432";"2AA6D2A1";"BBCDE4966BEE5602A80D9B8C1011DFA6";"NSIJ NUS-NSIJ-JPN";1;"Trusted" +"0251";"G.A.S.P!! Fighters' NEXTream (Europe)";"12582912";"5AA63B04";"316C59DAE45C20250A0419A937E7D65B";"NGAP NUS-NGAP-EUR";1;"Trusted" +"0252";"G.A.S.P!! Fighters' NEXTream (Japan)";"12582912";"6EAD2D89";"6C73558DE5A1EEE6597D7264F9A11B0C";"NGAJ NUS-NGAJ-JPN";1;"Trusted" +"0253";"Ganbare Goemon - Dero Dero Douchuu Obake Tenkomori (Japan)";"16777216";"08C41E0E";"96CA36D474E82C270A129D775C63167A";"NG6J NUS-NG6J-JPN";1;"Trusted" +"0254";"Ganbare Goemon - Neo Momoyama Bakufu no Odori (Japan)";"16777216";"2E91EFC9";"9B929E0BF8D63E62820F2FA6257CC5CF";"NG5J NUS-NG5J-JPN";1;"Trusted" +"0255";"Ganbare! Nippon! Olympics 2000 (Japan)";"12582912";"73133CD2";"8D8F3A8393F3F5489B3B144369565594";"N3HJ NUS-N3HJ-JPN";1;"Trusted" +"0256";"Gauntlet Legends (Europe)";"16777216";"B7B3A489";"28C2108A375F7731E719333A09439D2F";"NGXP NUS-NGXP-EUR";1;"Trusted" +"0257";"Gauntlet Legends (Japan)";"16777216";"8D133DB0";"3B2615D754A61E45B1034D555D830A78";"NGDJ NUS-NGDJ-JPN";1;"Trusted" +"0258";"Gauntlet Legends (USA)";"16777216";"64765E82";"9CB963E8B71F18568F78EC1AF120362E";"NGXE ";0;"Not verified" +"0259";"Getter Love!! - Cho Renai Party Game Tanjou (Japan)";"12582912";"724ECAE7";"5270D98F9E67DC7EF354ECE109C2A18F";"NGLJ NUS-NGLJ-JPN";1;"Trusted" +"0260";"Gex 3 - Deep Cover Gecko (Europe) (En,Es,It)";"33554432";"6BC4A056";"9F0492A34D7A2D7C4E9F29DC1848A04A";"NX3P NUS-NX3P-EUR";1;"Trusted" +"0261";"Gex 3 - Deep Cover Gecko (Europe) (Fr,De)";"33554432";"A43CB8E4";"43B9A7A5CCB6EA3F4860F9F80D73669D";"NX3X NX3X";1;"Trusted" +"0262";"Gex 3 - Deep Cover Gecko (USA)";"33554432";"87A7D099";"6770DDEC84EB21A5E0D0F55DFD52A01A";"NX3E ";0;"Not verified" +"0263";"Gex 64 - Enter the Gecko (Europe)";"16777216";"A7C92BEA";"5BBA457E286D250101CE274E0E58080D";"NX2P NUS-NX2P-EUR";1;"Trusted" +"0264";"Gex 64 - Enter the Gecko (USA)";"16777216";"C545CE80";"47F9D900C97ECE154BB40A9C6DCCD3FD";"NX2E ";0;"Not verified" +"0265";"Glover (Europe) (En,Fr,De)";"8388608";"90ECEB4A";"2F2163C53DB135792331DF00398B3F87";"NGVP NUS-NGVP-EUR, NUS-NGVP-EUR-1";3;"Verified" +"0266";"Glover (USA)";"8388608";"F874571C";"87AA5740DFF79291EE97832DA1F86205";"NGVE ";0;"Not verified" +"0267";"Goemon - Mononoke Sugoroku (Japan)";"16777216";"965C4575";"2BDE49F2855030DE342976C9A95B81B3";"NGPJ NUS-NGPJ-JPN";1;"Trusted" +"0268";"Goemon's Great Adventure (USA)";"16777216";"52D418E1";"29BC5C1A24D3979D376AD421000AC9CB";"NGME NUS-NGME-USA";1;"Trusted" +"0269";"Golden Nugget 64 (USA)";"8388608";"70594D3C";"231BAC1AFB3DE138072C2D697783059B";"NUS-NGNE-USA NUS-01A-02";1;"Trusted" +"0270";"GT 64 - Championship Edition (Europe) (En,Fr,De)";"12582912";"6DFB4747";"628AA3CD492559B705488F634797E045";"NGCP NUS-NGCP-EUR";2;"Verified" +"0271";"GT 64 - Championship Edition (USA)";"12582912";"BC627DA7";"FE81AA381719FADA693D803BAE7D5EB9";"NGCE ";0;"Not verified" +"0272";"Hamster Monogatari 64 (Japan)";"12582912";"C1D98B78";"3D4C7B11076BAFA4620BCC154C0EEEF3";"NHSJ NUS-NHSJ-JP";1;"Trusted" +"0273";"Harukanaru Augusta - Masters '98 (Japan)";"16777216";"51228F0C";"A02A4FB4B93E9847348440652CEF8D4D";"NM9J NUS-NM9J-JPN";1;"Trusted" +"0274";"Harvest Moon 64 (USA)";"16777216";"DECDC0AD";"6DA848A70D83ECE130D274124760928E";"NYWE ";0;"Not verified" +"0275";"Heiwa Pachinko World 64 (Japan)";"8388608";"99A427FA";"5E8539E037EEA88C5A2746F60E431C8D";"NHPJ NUS-NHPJ-JPN";1;"Trusted" +"0276";"Hercules - The Legendary Journeys (Europe) (En,Fr,De,Es,It,Nl)";"16777216";"B1954B08";"1546877FD85C00A83515005727E5FDA5";"NHCP NUS-NHCP-EUR";1;"Trusted" +"0277";"Hercules - The Legendary Journeys (USA)";"16777216";"4948892B";"6BBD8C42F6EF8F5B9541D6F4DB657DD7";"NHCE ";0;"Not verified" +"0278";"Hexen (Europe)";"8388608";"5369EFB4";"2080262A251D270F9CE819887F2104A7";"NHXP NUS-NHXP-EUR";1;"Trusted" +"0279";"Hexen (France)";"8388608";"E373FA31";"A5921C00111200257284CE0ABA0904CA";"NHXF NUS-NHXF-FRA";1;"Trusted" +"0280";"Hexen (Germany)";"8388608";"E4821C4B";"08CBB141DEC604E4DAD2787F237D57A2";"NHXD NUS-NHXD-NOE";1;"Trusted" +"0281";"Hexen (Japan)";"8388608";"571DA09A";"672152CF4DCB5D0A19662C11EFF71452";"NHXJ NUS-NHXJ-JPN";1;"Trusted" +"0282";"Hexen (USA)";"8388608";"1D35E110";"EB98F1B8C6898AF7417F6882946DA9B3";"NHXE ";0;"Not verified" +"0283";"Hey You, Pikachu! (USA)";"16777216";"B18B2734";"1280C78F286FC1C437A4905EE42C47F1";"NPGE ";0;"Not verified" +"0284";"Hiryuu no Ken Twin (Japan)";"12582912";"BA6A687E";"73084495F3209C54900525436BBBC531";"NHKJ NUS-NHKJ-JPN";2;"Verified" +"0285";"Holy Magic Century (Europe)";"16777216";"84FF9890";"80CC112F62E9A8581A1BB6A1D1E1488B";"NETP NUS-NETP-EUR";1;"Trusted" +"0286";"Holy Magic Century (France)";"16777216";"284170ED";"988F5ABD96259196343659E913666820";"NETF ";0;"Not verified" +"0287";"Holy Magic Century (Germany)";"16777216";"D1934CF6";"AB676C3E9D26A77450DDB4AACD1A3861";"NETD ";0;"Not verified" +"0288";"Hoshi no Kirby 64 (Japan)";"33554432";"AE7CB69D";"B1A67AEBC2BE89A800E5EB60C0DFA968";"NK4J NUS-NK4J-JPN";1;"Trusted" +"0289";"Hoshi no Kirby 64 (Japan) (Rev 1)";"33554432";"A263C1B9";"FFDB4456F799722BCFE430632C3986AE";"NK4J NUS-NK4J-JPN";1;"Trusted" +"0290";"Hoshi no Kirby 64 (Japan) (Rev 2)";"33554432";"F4589AA8";"3EC0471E2CBEE17471DDBF80C56606D5";"NK4J NUS-NK4J-JPN";1;"Trusted" +"0291";"Hoshi no Kirby 64 (Japan) (Rev 3)";"33554432";"6D5E1332";"35E039F8E79843917D02BE06D00C457B";"NK4J NUS-NK4J-JPN";2;"Verified" +"0292";"Hot Wheels - Turbo Racing (Europe) (En,Fr,De)";"16777216";"850633A7";"EF34DA35EF8A0734843CB182C19FEB26";"NHWP NUS-NHWP-EUR";1;"Trusted" +"0293";"Hot Wheels - Turbo Racing (USA)";"12582912";"A5C92148";"4311A1AEF1898678331F7E3486055307";"NHWE ";0;"Not verified" +"0294";"HSV Adventure Racing! (Australia)";"16777216";"C0BA9440";"26F7D8F4640EBDFA823F84E5F89D62BF";"NNSX NUS-NNSX-AUS";2;"Verified" +"0295";"Human Grand Prix - The New Generation (Japan)";"8388608";"31E102E3";"97E706ED9CC6F30708FFDC187C85D59F";"NHGJ NUS-NHGJ-JPN";1;"Trusted" +"0296";"Hybrid Heaven (Europe) (En,Fr,De)";"16777216";"E76627FF";"DA861C4D9202F661575466450A27C412";"NHVP NUS-NHVP-EUU";2;"Verified" +"0297";"Hybrid Heaven (Japan)";"16777216";"E769DE96";"9946EFF915FC947A226407AC1F7B35C4";"NHYJ NUS-NHYJ-JPN";1;"Trusted" +"0298";"Hybrid Heaven (USA)";"16777216";"15B57EF8";"C47E95BB32AB132C41D67BD243F9E02A";"NHVE ";0;"Not verified" +"0299";"Hydro Thunder (Europe)";"33554432";"863AB8F3";"434BB8DE49011573AC38E893224C5623";"NHTP NUS-NHTP-EUR";1;"Trusted" +"0300";"Hydro Thunder (France)";"33554432";"010F6242";"4B4C85D9DD2D460ADAFABAE8DB48B4FA";"NHTF NUS-NHTF-FRA";1;"Trusted" +"0301";"Hydro Thunder (USA)";"33554432";"E744456F";"54F43E6B68782E98CAABEA5E7976B2BE";"NHTE ";0;"Not verified" +"0302";"Hyper Olympics in Nagano 64 (Japan)";"12582912";"C1EA5D33";"D2F7B3ACE75A2CE7A06BEAC929711D94";"NH5J NUS-NH5J-JPN";1;"Trusted" +"0303";"Ide Yosuke no Mahjong Juku (Japan)";"12582912";"DBD96DEB";"92A6FFA1C8D537C7A97C5C613CAE05C6";"NIMJ ";1;"Trusted" +"0304";"Iggy's Reckin' Balls (Europe)";"4194304";"9BF26065";"25B297143E9E5CCBB4B80A7FB6AF399B";"NWBP NUS-NWBP-EUR";1;"Trusted" +"0305";"Iggy's Reckin' Balls (USA)";"4194304";"6A6FBD5D";"464211ABB602EE1005974D2D835A3BCF";"NWBE ";0;"Not verified" +"0306";"Iggy-kun no Bura Bura Poyon (Japan)";"4194304";"26CC1266";"C70B0B680807F2B8C2C3D5DC495FA8C2";"NWBJ NUS-NWBJ-JPN";1;"Trusted" +"0307";"In-Fisherman - Bass Hunter 64 (Europe)";"8388608";"00DA3704";"BF3E84CDD01CAC05987FD8DA5191534B";"NFHP NUS-NFHP-EUR";1;"Trusted" +"0308";"In-Fisherman - Bass Hunter 64 (USA)";"8388608";"D8EB5E6E";"C605F40BF669E00A5E51BAF0D00621EA";"NFHE ";0;"Not verified" +"0309";"Indiana Jones and the Infernal Machine (USA)";"33554432";"4978EB57";"70DE1EAB508596B6BBEFD168B5D07194";"NIJE ";0;"Not verified" +"0310";"Indy Racing 2000 (USA)";"16777216";"A5163F29";"A7781D441AF55C4FF8AFC68AB3A59313";"NICE ";0;"Not verified" +"0311";"International Superstar Soccer '98 (Europe)";"12582912";"BF23945D";"34489365B550F32C97337D86D52D8C84";"NWSP NUS-NWSP-EUU, NUS-NWSP-EUR";2;"Verified" +"0312";"International Superstar Soccer '98 (USA)";"12582912";"B85FA721";"7DCC05B98E2FA690B478808EBBAD5D1A";"NWSE ";0;"Not verified" +"0313";"International Superstar Soccer 2000 (Europe) (En,De)";"16777216";"69572558";"9F101B6F6BEF4F267DEB5C6C37A24B97";"NISX NUS-NISX-SCN";1;"Trusted" +"0314";"International Superstar Soccer 2000 (Europe) (Fr,It)";"16777216";"8A16A6A9";"CC2BE97A16744860FAE8A94611479C4C";"NISY NISY";1;"Trusted" +"0315";"International Superstar Soccer 2000 (USA) (En,Es)";"16777216";"DCD0538F";"23A4ED8D79882594206173B1D476F0E9";"NISE ";0;"Not verified" +"0316";"International Superstar Soccer 64 (Europe)";"8388608";"8C839268";"376803F28CA8B2133671783419933CA2";"NJPP NJPP, NUS-NJPP-EUU";2;"Verified" +"0317";"International Superstar Soccer 64 (USA)";"8388608";"0EA249B9";"6A345402AE1DB5CE1041365E36126BCE";"NJPE ";0;"Not verified" +"0318";"International Track & Field - Summer Games (Europe) (En,Fr,De)";"12582912";"B3181EE0";"970488FB7D9C5C25BD924E6F898B84A0";"N3HP NUS-N3HP-EUU";1;"Trusted" +"0319";"International Track & Field 2000 (USA)";"12582912";"DA443F0B";"35662CFD07FD6AF4BAB90CA23F7C98E6";"N3HE ";0;"Not verified" +"0320";"Itoi Shigesato no Bass Tsuri No. 1 Kettei Ban! (Japan)";"16777216";"576915D4";"13893DB9E919C4E7CF0C0B0064CCB554";"NIBJ NUS-NIBJ-JPN";1;"Trusted" +"0321";"J.League Dynamite Soccer 64 (Japan)";"8388608";"DC0B2C8F";"1247B093E0FD6CCFD50D15DE59301076";"NDSJ NUS-NDSJ-JPN";1;"Trusted" +"0322";"J.League Eleven Beat 1997 (Japan)";"8388608";"7D0EED6A";"30E23D3DE446E37E5E7FBEF6794A6FC9";"NJEJ NUS-NJEJ-JPN";1;"Trusted" +"0323";"J.League Live 64 (Japan)";"8388608";"4C536DD7";"209DB8333EEB526AE9A91209175348CE";"NJLJ NUS-NJLJ-JPN";1;"Trusted" +"0324";"J.League Tactics Soccer (Japan)";"12582912";"976A2D12";"800ACC7D609ECDB3E09E68CBD05F5FA0";"NSJJ NUS-NSJJ-JPN";1;"Trusted" +"0325";"J.League Tactics Soccer (Japan) (Rev 1)";"12582912";"156E705E";"793DBF504E20C92F6B73B4E8A25A220C";"NSJJ NUS-NSJJ-JPN";1;"Trusted" +"0326";"Jangou Simulation Mahjong Dou 64 (Japan)";"8388608";"D1C1681E";"8EE01DE7DA2E9AD08D7ED913A5EE8632";"NMAJ NUS-NMAJ-JPN";1;"Trusted" +"0327";"Jeopardy! (USA)";"4194304";"E739947C";"A45F7200537C0D928A88CBBA2DFEB680";"NJOE ";0;"Not verified" +"0328";"Jeremy McGrath Supercross 2000 (Europe)";"16777216";"5BF42EC4";"4C5BE1BFC1CCCFF501EBA2A685226962";"NCOP NUS-NCOP-UKV";1;"Trusted" +"0329";"Jeremy McGrath Supercross 2000 (USA)";"16777216";"2A5C9A06";"8046A4B8ABD4353B2AB9696106CCF8D2";"NCOE ";0;"Not verified" +"0330";"Jet Force Gemini (Europe) (En,Fr,De,Es)";"33554432";"CFBED88C";"BAAF237E71AA7526C9B2F01C08B68A53";"NJFP NUS-NJFP-EUR";1;"Trusted" +"0331";"Jet Force Gemini (USA)";"33554432";"6753D5A3";"772CC6EAB2620D2D3CDC17BBC26C4F68";"NJFE ";0;"Not verified" +"0332";"Jet Force Gemini (USA) (Demo) (Kiosk)";"33554432";"FA061B96";"5BBE9ADE7171F2E1DAAA7C48FAD38728";"NJDE DIS-NUS-NJDE-USA";0;"Not verified" +"0333";"Jikkyou G1 Stable (Japan)";"16777216";"0A796C3E";"878D8A26FD02FDB08200464CB6F566EF";"NGSJ NUS-NGSJ-JPN";1;"Trusted" +"0334";"Jikkyou J.League 1999 - Perfect Striker 2 (Japan)";"16777216";"2EF647D3";"1FB40EE386B58FEAB6CF29DDB33BCCCC";"NPSJ NUS-NPSJ-JPN";1;"Trusted" +"0335";"Jikkyou J.League Perfect Striker (Japan)";"8388608";"8ED60DEA";"58153AC5C4030D1BFD3C15CF57FB02E7";"NJPJ NUS-NJPJ-JPN";2;"Verified" +"0336";"Jikkyou Powerful Pro Yakyuu 2000 (Japan)";"16777216";"351CDE48";"23409668A6E6C4ECE7B5FB0B7D0E8F2C";"NPAJ NUS-NPAJ-JPN";1;"Trusted" +"0337";"Jikkyou Powerful Pro Yakyuu 2000 (Japan) (Rev 1)";"16777216";"753706EF";"B653C963ED8D3A749676810F07CFE4E5";"NPAJ NUS-NPAJ-JPN";1;"Trusted" +"0338";"Jikkyou Powerful Pro Yakyuu 4 (Japan)";"12582912";"480B953E";"FDA57F65EB159278223EB9D03267C27F";"NP4J NUS-NP4J-JPN";1;"Trusted" +"0339";"Jikkyou Powerful Pro Yakyuu 4 (Japan) (Rev 1)";"12582912";"40E3AC61";"B454490EB44F0978F009FA41DE8C478E";"NP4J NUS-NP4J-JPN";1;"Trusted" +"0340";"Jikkyou Powerful Pro Yakyuu 5 (Japan)";"16777216";"FEEC34F6";"E9F989E09E3F1519AEFE619889A4F710";"NJ5J NUS-NJ5J-JPN";1;"Trusted" +"0341";"Jikkyou Powerful Pro Yakyuu 6 (Japan)";"16777216";"1E53A7BA";"060D0313E23B660180441FCC7D24D7DB";"NP6J NUS-NP6J-JPN";1;"Trusted" +"0342";"Jikkyou Powerful Pro Yakyuu - Basic Ban 2001 (Japan)";"16777216";"6A9E24D7";"7FC933A64884A382AA07605EA7204FF5";"NPEJ NUS-NPEJ-JPN";1;"Trusted" +"0343";"Jikkyou World Soccer - World Cup France '98 (Japan)";"16777216";"5C721850";"A05E7DB2409DEECCA36E48E9D931CACB";"NWSJ NUS-NWSJ-JPN";1;"Trusted" +"0344";"Jikkyou World Soccer - World Cup France '98 (Japan) (Rev 1)";"16777216";"68DBCC04";"538B54C2AAEA73FAA3A021D42A3225BE";"NWSJ NUS-NWSJ-JPN";1;"Trusted" +"0345";"Jikkyou World Soccer - World Cup France '98 (Japan) (Rev 2)";"16777216";"F63F9A5E";"2E5FD9303138E8F558BF67BB9E799960";"NWSJ NUS-NWSJ-JPN";1;"Trusted" +"0346";"Jikkyou World Soccer 3 (Japan)";"8388608";"3BA9E644";"EF0F425689586850A6F5796124B0C85B";"NJ3J NUS-NJ3J-JPN";1;"Trusted" +"0347";"Jikuu Senshi Turok (Japan)";"8388608";"E6BD65D5";"7B261247150C431DE55AB371E8B46EA8";"NTUJ NUS-NTUJ-JPN";1;"Trusted" +"0348";"Jinsei Game 64 (Japan)";"16777216";"67A1A22C";"68230D510015FF6817EF898C0B8B636C";"NJGJ NUS-NJGJ-JPN";1;"Trusted" +"0349";"John Romero's Daikatana (Europe) (En,Fr,De)";"16777216";"F88AC3CE";"7AB29C6AD2D8F4007D8213EB3411E0BD";"NDWP NUS-NDWP-EUR";1;"Trusted" +"0350";"John Romero's Daikatana (Japan)";"16777216";"44B80FD7";"57D31EA7121DD5A05B547225EFA5CFD7";"NDWJ NUS-NDWJ-JPN";1;"Trusted" +"0351";"John Romero's Daikatana (USA)";"16777216";"494950C6";"5B4C268422469F50B94779E655F2B798";"NDWE ";0;"Not verified" +"0352";"Kakutou Denshou - F-Cup Maniax (Japan)";"16777216";"DB40A155";"DFF0EFE2B35FCDE506D21B0C0BD373A5";"NFYJ NUS-NFYJ-JPN";1;"Trusted" +"0353";"Ken Griffey Jr.'s Slugfest (USA)";"16777216";"12D8F3E9";"EEC0FAB75AF59E9C23E6DE2132DE89FF";"NKJE ";0;"Not verified" +"0354";"Killer Instinct Gold (Europe)";"12582912";"5D0EE5D2";"C93D92F10A1A97D2BA87386BE7D178FD";"NKIP NUS-NKIP-EUR, NUS-NKIP-AUS";3;"Verified" +"0355";"Killer Instinct Gold (USA)";"12582912";"31C76BE7";"8E33AD20C31FEB61D7230FAD28846C5C";"NKIE ";0;"Not verified" +"0356";"Killer Instinct Gold (USA) (Rev 1)";"12582912";"49EF8F2B";"4C9B419DC583C0DF4AB908ADF83BFC65";"NKIE ";0;"Not verified" +"0357";"Killer Instinct Gold (USA) (Rev 2)";"12582912";"0B5B5DF8";"DD0A82FCC10397AFB37F12BB7F94E67A";"NKIE ";0;"Not verified" +"0358";"King Hill 64 - Extreme Snowboarding (Japan)";"12582912";"F120CC52";"CCA4E87EC206B5B65AEAB9531C0F275B";"NSBJ NUS-NSBJ-JPN";1;"Trusted" +"0359";"Kiratto Kaiketsu! 64 Tanteidan (Japan)";"12582912";"7FDC3784";"32257BFFFD9B2D680F582E148E9B0611";"N64J NUS-N64J-JPN";1;"Trusted" +"0360";"Kirby 64 - The Crystal Shards (Europe)";"33554432";"5B8B89EF";"A44B7A612964A6D6139D0426E569D9C9";"NK4P NUS-NK4P-EUR";2;"Verified" +"0361";"Kirby 64 - The Crystal Shards (USA)";"33554432";"20A1C120";"D33E4254336383A17FF4728360562ADA";"NK4E NUS-NK4E-USA";2;"Verified" +"0362";"Knife Edge - Nose Gunner (Europe)";"8388608";"B77783BE";"D31A94A5685A21A932CC886D64CC9B21";"NKEP NUS-NKEP-EUR";1;"Trusted" +"0363";"Knife Edge - Nose Gunner (Japan)";"8388608";"3BC93017";"436BA873E9466AAB237D9429348A5F70";"NKEJ NUS-NKEJ-JPN";1;"Trusted" +"0364";"Knife Edge - Nose Gunner (USA)";"8388608";"255EE1DD";"8043D829FCD4F8F72DD81E5C6DDE916F";"NKEE ";0;"Not verified" +"0365";"Knockout Kings 2000 (Europe)";"16777216";"58CE7D80";"E95D73FF55FBB63E79AA9EAB14608584";"NKKP NUS-NKKP-EUR";1;"Trusted" +"0366";"Knockout Kings 2000 (USA)";"16777216";"074690D6";"008B473841CE4D9AC050D55F99B4B5D4";"NKKE ";0;"Not verified" +"0367";"Kobe Bryant in NBA Courtside (Europe)";"12582912";"1355A826";"C6B01C020FDFD2E5C037C5A330B161AD";"NNBP NUS-NNBP-EUR";1;"Trusted" +"0368";"Kobe Bryant in NBA Courtside (USA)";"12582912";"86360BFB";"D37C79E4E4EABCB5DC6A07BD76688223";"NNBE ";0;"Not verified" +"0369";"Last Legion UX (Japan)";"12582912";"9DB99881";"EB11FC0797AE1107201C4601FEE5471A";"NLLJ NUS-NLLJ-JPN";1;"Trusted" +"0370";"Legend of Zelda, The - Majora's Mask (Europe) (En,Fr,De,Es)";"33554432";"9EAD1608";"13FAB67E603B002CEAF0EEA84130E973";"NZSP NUS-NZSP-EUR";2;"Verified" +"0371";"Legend of Zelda, The - Majora's Mask (Europe) (En,Fr,De,Es) (Rev 1)";"33554432";"E2E6823D";"BECCFDED43A2F159D03555027462A950";"NZSP NZSP";1;"Trusted" +"0372";"Legend of Zelda, The - Majora's Mask (USA)";"33554432";"B428D8A7";"2A0A8ACB61538235BC1094D297FB6556";"NZSE NUS-NZSE-USA";2;"Verified" +"0373";"Legend of Zelda, The - Majora's Mask (USA) (Demo) (Kiosk)";"33554432";"DCC110A0";"8F281800FBA5DDCB1D2B377731FC0215";"NDLE C7";1;"Trusted" +"0374";"Legend of Zelda, The - Ocarina of Time (Europe) (En,Fr,De)";"33554432";"946FD0F7";"E040DE91A74B61E3201DB0E2323F768A";"NZLP NUS-NZLP-AUS";3;"Verified" +"0375";"Legend of Zelda, The - Ocarina of Time (Europe) (En,Fr,De) (Rev 1)";"33554432";"A108F6E3";"D714580DD74C2C033F5E1B6DC0AEAC77";"NZLP NUS-NZLP-EUR";2;"Verified" +"0376";"Legend of Zelda, The - Ocarina of Time (USA)";"33554432";"CD16C529";"5BD1FE107BF8106B2AB6650ABECD54D6";"CZLE NUS-CZLE-USA";1;"Trusted" +"0377";"Legend of Zelda, The - Ocarina of Time (USA) (Rev 1)";"33554432";"3FD2151E";"721FDCC6F5F34BE55C43A807F2A16AF4";"CZLE NUS-CZLE-USA";1;"Trusted" +"0378";"Legend of Zelda, The - Ocarina of Time (USA) (Rev 2)";"33554432";"32120C23";"57A9719AD547C516342E1A15D5C28C3D";"CZLE ";1;"Trusted" +"0379";"Legend of Zelda, The - Ocarina of Time - Master Quest (Europe) (Debug Version)";"67108864";"62F92704";"8CA71E87DE4CE5E9F6EC916202A623E9";"NZLE ";0;"Not verified" +"0380";"LEGO Racers (Europe) (En,Fr,De,Es,It,Nl,Sv,No,Da,Fi)";"16777216";"C7D9B21C";"6310C7173385ED2B06020F3B90158E9E";"NLGP NUS-NLGP-EUR";1;"Trusted" +"0381";"LEGO Racers (USA) (En,Fr,De,Es,It,Nl,Sv,No,Da,Fi)";"16777216";"4D1E1897";"26B5EAA13DC5B5E35307FE8C0CF5B6BA";"NLGE ";0;"Not verified" +"0382";"Let's Smash (Japan)";"12582912";"455A1770";"AEE5016E6D60D12AD768E9F6D10ADDE8";"NTSJ NUS-NTSJ-JPN";1;"Trusted" +"0383";"Lode Runner 3-D (Europe) (En,Fr,De,Es,It)";"8388608";"7148251D";"E62F4FDCC82C244BA9709E40756D9B62";"NLRP NUS-NLRP-FRA";1;"Trusted" +"0384";"Lode Runner 3-D (Japan)";"8388608";"1D4FB466";"D2BD8DD8C3BE1E8F0B8AE49206DBD7E5";"NLRJ NUS-NLRJ-JPN";1;"Trusted" +"0385";"Lode Runner 3-D (USA)";"8388608";"4EA07453";"D038813541589F0B3F1F900F4FD22C9B";"NLRE ";0;"Not verified" +"0386";"Lylat Wars (Australia) (En,Fr,De)";"12582912";"9A3425DA";"7A99628EDF0A6602D0C408F31B701435";"NFXU ";0;"Not verified" +"0387";"Lylat Wars (Europe) (En,Fr,De)";"12582912";"50A9C0B1";"884CCCA35CBEEDB8ED288326F9662100";"NFXP NUS-NFXP-EUR";3;"Verified" +"0388";"Mace - The Dark Age (Europe)";"12582912";"57DDEDE1";"523883A766C662E8377CD256755B27B4";"NMEP NUS-NMEP-EUR";1;"Trusted" +"0389";"Mace - The Dark Age (USA)";"12582912";"D2A363A6";"39A2BCA1C17CD4CF1A9F3AE2B725B5C6";"NMEE ";0;"Not verified" +"0390";"Madden Football 64 (Europe)";"12582912";"FAB3E50D";"67C96076459EB5F71733F39D7FCC76A3";"N8MP NUS-N8MP-EUR";1;"Trusted" +"0391";"Madden Football 64 (USA)";"12582912";"42E5FAFA";"903B912CE88626900221731224E9DBE8";"N8ME ";0;"Not verified" +"0392";"Madden NFL 2000 (USA)";"12582912";"EF5F997B";"955D19E26B4BA7CC941F86A54A0FC13D";"NMDE ";0;"Not verified" +"0393";"Madden NFL 2001 (USA)";"12582912";"245EAEE8";"441FA65FAA5C12339F89A0BB7DB43C8F";"NFLE ";0;"Not verified" +"0394";"Madden NFL 2002 (USA)";"12582912";"F573F107";"AD0F2EC565D7575FB37512BC8DF8A092";"N2ME ";0;"Not verified" +"0395";"Madden NFL 99 (Europe)";"12582912";"D0929942";"E7BF80861A0AB2A788959463D953B5D5";"N9MP NUS-N9MP-EUR";1;"Trusted" +"0396";"Madden NFL 99 (USA)";"12582912";"2EB64FC2";"507CEAB72EF2A1BF145BF190F5CE1C80";"N9ME ";0;"Not verified" +"0397";"Magical Tetris Challenge (Europe)";"16777216";"AF3B099E";"20E51B27E8098A9D101B44689014C281";"NMTP NUS-NMTP-UKV";1;"Trusted" +"0398";"Magical Tetris Challenge (Germany)";"16777216";"377F18E9";"E0992A90191BE4F1B2BA02258599334E";"NMTD ";0;"Not verified" +"0399";"Magical Tetris Challenge (USA)";"16777216";"22FE979C";"79FCC98002D1F4C79DEAF55784222DF8";"NMTE ";0;"Not verified" +"0400";"Magical Tetris Challenge featuring Mickey (Japan)";"16777216";"7EFB2F1E";"F1FF1F364C459701F42BEB8989675D44";"NMTJ NUS-NMTJ-JPN";1;"Trusted" +"0401";"Mahjong 64 (Japan)";"8388608";"DBE7D51A";"8AE2E8F0C356FEE638C8D908DCBB3381";"NMJJ NUS-NMJJ-JPN";1;"Trusted" +"0402";"Mahjong Hourouki Classic (Japan)";"12582912";"990A8E54";"E942A3EEB1EB572BADD6F705EB12A22C";"NMHJ NUS-NMHJ-JPN";1;"Trusted" +"0403";"Mahjong Master (Japan)";"8388608";"B68D596F";"CF0D228E8EFDF823A227979BB352DD5B";"NMMJ NUS-NMMJ-JPN";1;"Trusted" +"0404";"Major League Baseball featuring Ken Griffey Jr. (Australia)";"16777216";"E08F7578";"152B9939A5F50734D5401980028856B4";"NKGP NUS-NKGP-AUS";1;"Trusted" +"0405";"Major League Baseball featuring Ken Griffey Jr. (USA)";"16777216";"2EF1EA20";"764F22AD3D0F59667A7F083D2F789B31";"NKGE ";0;"Not verified" +"0406";"Mario Golf (Europe)";"33554432";"A5071A77";"55634FF90EE997790781F79A5B0097EE";"NMFP NUS-NMFP-EUR";2;"Verified" +"0407";"Mario Golf (USA)";"33554432";"2FC4C216";"903E6929666531D72D05D1E4C522E305";"NMFE ";1;"Trusted" +"0408";"Mario Golf 64 (Japan)";"33554432";"BB03A1A6";"CD87BA2998D63C13B4366EB2C54E1EB6";"NMFJ NUS-NMFJ-JPN";1;"Trusted" +"0409";"Mario Kart 64 (Europe)";"12582912";"FAA6B083";"8FAD1E4FA7BAF1443B7F21AD1947B429";"NKTP NUS-NKTP-AUS";1;"Trusted" +"0410";"Mario Kart 64 (Europe) (Rev 1)";"12582912";"0248F6C3";"2BB149A583FDEFEA96805F628FE42FD9";"NKTP NUS-NKTP-EUR, NKTP";3;"Verified" +"0411";"Mario Kart 64 (Japan)";"12582912";"5D9696DF";"BF964CECA78A13A82055EBDA80B95CCA";"NKTJ NUS-NMTJ-JPN";1;"Trusted" +"0412";"Mario Kart 64 (Japan) (Rev 1)";"12582912";"6CED6472";"60535265BAE43DDFCBDB0D71594B1693";"NKTJ NUS-NKTJ-JPN";2;"Verified" +"0413";"Mario Kart 64 (USA)";"12582912";"434389C1";"3A67D9986F54EB282924FCA4CD5F6DFF";"NKTE NUS-NKTE-USA-2";2;"Verified" +"0414";"Mario no Photopie (Japan)";"16777216";"176B3683";"7F4ED2AAF94A2197B0AD63C6ECE9DEA9";"NMPJ NUS-NMPJ-JPN";1;"Trusted" +"0415";"Mario Party (Europe) (En,Fr,De)";"33554432";"DA98A5D3";"9773150709BD804B8E57E35F1D6B0EED";"NLBP NUS-NLBP-EUR";1;"Trusted" +"0416";"Mario Party (Japan)";"33554432";"4F1ADC7B";"3F556CC3B3A996CD2F471FA0D992D529";"CLBJ NUS-CLBJ-JPN";1;"Trusted" +"0417";"Mario Party (USA)";"33554432";"4D60ABE5";"8BC2712139FBF0C56C8EA835802C52DC";"CLBE ";0;"Not verified" +"0418";"Mario Party 2 (Europe) (En,Fr,De,Es,It)";"33554432";"DC00357A";"F70112B652B0EE4856AF83F4E8005C31";"NMWP NUS-NMWP-EUR";2;"Verified" +"0419";"Mario Party 2 (Japan)";"33554432";"7457B081";"F23E4CD437465F3E725262253CF3EA59";"NMWJ NUS-NMWJ-JPN";1;"Trusted" +"0420";"Mario Party 2 (USA)";"33554432";"E58A1955";"04840612A35ECE222AFDB2DFBF926409";"NMWE ";0;"Not verified" +"0421";"Mario Party 3 (Europe) (En,Fr,De,Es)";"33554432";"813B13F2";"8E62EC6FBE3CC9FF6284191C9C88E68F";"NMVP NUS-NMVP-EUR";1;"Trusted" +"0422";"Mario Party 3 (Japan)";"33554432";"3FC04053";"ED99F330CE7A2638AB13351012EEB86B";"NMVJ NUS-NMVJ-JPN";1;"Trusted" +"0423";"Mario Party 3 (USA)";"33554432";"B7445DDC";"76A8BBC81BC2060EC99C9645867237CC";"NMVE ";0;"Not verified" +"0424";"Mario Story (Japan)";"41943040";"BD60CA66";"DF54F17FB84FB5B5BCF6AA9AF65B0942";"NMQJ NUS-NMQJ-JPN";4;"Verified" +"0425";"Mario Tennis (Europe)";"16777216";"29AA5DF4";"FFF9B3E22ABB9B60215DAFB13AD5A4DE";"NM8P NUS-NM8P-EUR";1;"Trusted" +"0426";"Mario Tennis (USA)";"16777216";"4E9560F6";"759358FAD1ED5AE31DCB2001A07F2FE5";"NM8E ";0;"Not verified" +"0427";"Mario Tennis 64 (Japan)";"16777216";"C665301D";"8EB1C2443D0B2E6EDA52A4EEA66D6C35";"NM8J NUS-NM8J-JPN";2;"Verified" +"0428";"Mega Man 64 (USA)";"33554432";"1BFC71F0";"3620674ACB51E436D5150738AC1C0969";"NM6E ";0;"Not verified" +"0429";"Mia Hamm Soccer 64 (USA) (En,Es)";"16777216";"2DB3D3D6";"A4039368E0472C68E3072C02C7A80F94";"NHME ";0;"Not verified" +"0430";"Michael Owen's WLS 2000 (Europe)";"16777216";"BB680CBE";"892222CC4BAF9958405D20BC492175BF";"NWKX NUS-NWKX-UKV";1;"Trusted" +"0431";"Mickey no Racing Challenge USA (Japan)";"33554432";"1AECFC56";"288A514E98972BF9D329167AA29E66B6";"NMLJ NUS-NMLJ-JPN";1;"Trusted" +"0432";"Mickey's Speedway USA (Europe) (En,Fr,De,Es,It)";"33554432";"0AE51EA5";"5BA3DC37860C08A209F24286B8DFEC8C";"NMLP NUS-NMLP-EUR";1;"Trusted" +"0433";"Mickey's Speedway USA (USA)";"33554432";"2D4F8F1B";"0BF64427CF68E49C70E9EC2C9D815209";"NMLE ";0;"Not verified" +"0434";"Micro Machines 64 Turbo (Europe) (En,Fr,De,Es,It)";"12582912";"10B9FF1F";"9A8465E302263D635557A14AA197FE3C";"NV3P NUS-NV3P-EUR";1;"Trusted" +"0435";"Micro Machines 64 Turbo (USA)";"12582912";"A62A2763";"74EB415E16C333B252847A8E09432FD9";"NV3E ";0;"Not verified" +"0436";"Midway's Greatest Arcade Hits - Volume 1 (USA)";"4194304";"E5C1FEDC";"2B86775EA4D848202E4F4A39C33571CA";"NAIE ";0;"Not verified" +"0437";"Mike Piazza's Strike Zone (USA)";"12582912";"CC253CAB";"EB1908E51C8D10AF8B9CAF77797BFE00";"NMBE ";0;"Not verified" +"0438";"Milo's Astro Lanes (Europe)";"4194304";"C08CE624";"43B02AF2789990A14F77CE020E6F135C";"NBRP NUS-NBRP-EUR";1;"Trusted" +"0439";"Milo's Astro Lanes (USA)";"4194304";"172FCA97";"4F256146BAC4A3DDE5AD0D5F9C909251";"NBRE ";0;"Not verified" +"0440";"Mischief Makers (Europe)";"8388608";"68A4F072";"EB3B078A74D4DC827E1E79791004DFBB";"NTMP NUS-NTMP-EUR";1;"Trusted" +"0441";"Mischief Makers (USA)";"8388608";"7D222D3F";"495A9BFFD6620BE43225DB7133373FC5";"NTME ";0;"Not verified" +"0442";"Mission - Impossible (Europe)";"12582912";"2C7131D6";"599B5D40B51F53C2C9A909E0139702FC";"NMIP NUS-NMIP-UKV";2;"Verified" +"0443";"Mission - Impossible (France)";"12582912";"282A350D";"FD0C0E8C523437F9B6B630E369FDFC69";"NMIF ";0;"Not verified" +"0444";"Mission - Impossible (Germany)";"12582912";"67C30A2D";"4111482C92EE806484AAA2C210893A52";"NMID NUS-NMID-NOE";1;"Trusted" +"0445";"Mission - Impossible (Italy)";"12582912";"2D789D98";"66C7EB8148E0714B5A71F5717DFF8642";"NMII NUS-NMII-ITA";1;"Trusted" +"0446";"Mission - Impossible (Spain)";"12582912";"EBB060DC";"D1BA3B1899576A4B67908ABB6544D75A";"NMIS NUS-NMIS-ESP";1;"Trusted" +"0447";"Mission - Impossible (USA)";"12582912";"3677A8B8";"EEBDFBD7CB57202D70CFFFCAAF55E93E";"NMIE NUS-NMIE-USA";1;"Trusted" +"0448";"Monaco Grand Prix (USA)";"16777216";"E2BBEAC1";"4FF9589A3224AAA46E9877D6B25E68E3";"NMGE ";0;"Not verified" +"0449";"Monaco Grand Prix - Racing Simulation 2 (Europe) (En,Fr,Es,It)";"16777216";"3F5E5830";"C93A17D130B96FBA27A0E959CAB2A450";"NMGP NUS-NMGP-UKV";1;"Trusted" +"0450";"Monopoly (USA)";"8388608";"C8CAD8F6";"D51506EDB0A941A00EB45850703B32CB";"NMOE ";0;"Not verified" +"0451";"Monster Truck Madness 64 (Europe) (En,Fr,De,Es,It)";"8388608";"4731DF5C";"E3B408997D7DB91F8219F168C6D57D26";"NM3P NUS-NM3P-EUR";2;"Verified" +"0452";"Monster Truck Madness 64 (USA)";"8388608";"3FD0604D";"514D61D3B3D5E6326869783EB2E84A00";"NM3E ";0;"Not verified" +"0453";"Morita Shougi 64 (Japan)";"8388608";"88C83511";"462B9C4F38758C2E558312AC60DF2B91";"NMSJ NUS-NMSJ-JPN";1;"Trusted" +"0454";"Mortal Kombat 4 (Europe)";"16777216";"635ADECA";"264B82F0FC2431D6EEFDE9C9F3ED7596";"NM4P NUS-NM4P-EUR";1;"Trusted" +"0455";"Mortal Kombat 4 (USA)";"16777216";"B7F46516";"C70B91430866300CE38B49098019EF9D";"NM4E ";1;"Trusted" +"0456";"Mortal Kombat Mythologies - Sub-Zero (Europe)";"16777216";"EA21015A";"38A82A56AE61A4D354C6A26E64D25E1C";"NMYP NUS-NMYP-SCN";1;"Trusted" +"0457";"Mortal Kombat Mythologies - Sub-Zero (USA)";"16777216";"51A07FD9";"DEEC4FAEC416F4E02D934C2E42C0CAAD";"NMYE ";0;"Not verified" +"0458";"Mortal Kombat Trilogy (Europe)";"12582912";"BC04C62F";"7A558BBAD8CE8828414A9CF3B044A87D";"NMKP NUS-NMKP-UKV";1;"Trusted" +"0459";"Mortal Kombat Trilogy (USA)";"12582912";"50A99D60";"9B7F29AAB911D6753F2011C48DA752BF";"NMKE ";0;"Not verified" +"0460";"Mortal Kombat Trilogy (USA) (Rev 2)";"12582912";"0F323D00";"3DCB15043063BD656A0223C519218CFB";"NMKE ";0;"Not verified" +"0461";"MRC - Multi-Racing Championship (Europe) (En,Fr,De)";"12582912";"BC966B10";"0054B7FC0C2ACBED650EFE727CDBA472";"NMRP NUS-NMRP-SCN";1;"Trusted" +"0462";"MRC - Multi-Racing Championship (Japan)";"12582912";"BEA43300";"8E18064A2C4B3EC15A20C3D676644B3A";"NMRJ NUS-NMRJ-JPN";1;"Trusted" +"0463";"MRC - Multi-Racing Championship (USA)";"12582912";"1DC1C812";"FC61D60F2C6FE4610F70CE4949A7A062";"NMRE NUS-NMRE-USA";1;"Trusted" +"0464";"Ms. Pac-Man - Maze Madness (USA)";"12582912";"E34C7060";"08BEA3310E778A6584EB64CD3F15F86E";"NP9E ";0;"Not verified" +"0465";"Mystical Ninja 2 Starring Goemon (Europe) (En,Fr,De)";"16777216";"3502DBBE";"E6B5C17B7BBBB7C432B3506C085D16C4";"NGMP NUS-NGMP-EUR";1;"Trusted" +"0466";"Mystical Ninja Starring Goemon (Europe)";"16777216";"3BD9059A";"698930C7CCD844673D77FFECCB3DD66E";"NG5P NUS-NG5P-EUR, NUS-NG5P-EUU";2;"Verified" +"0467";"Mystical Ninja Starring Goemon (USA)";"16777216";"4180C296";"643CCE1AB06F97E9590241D27E5C2363";"NG5E NUS-NG5E-USA";1;"Trusted" +"0468";"Nagano Winter Olympics '98 (Europe)";"12582912";"C44DE11C";"B935B87F3DCCA8AEEB6A9365124846DC";"NH5P NUS-NH5P-EUR";1;"Trusted" +"0469";"Nagano Winter Olympics '98 (USA)";"12582912";"EE8288D4";"C17F78A103D99B21533F0C1566378EF6";"NH5E ";0;"Not verified" +"0470";"Namco Museum 64 (USA)";"4194304";"CE361F92";"E61251D2819E3BF3A9C0B95329F60F70";"NNME ";0;"Not verified" +"0471";"NASCAR 2000 (USA)";"12582912";"02BF7C2D";"45FEB0FBBEC6CB48FF21DEAE176E9B6B";"NN2E ";0;"Not verified" +"0472";"NASCAR 99 (Europe) (En,Fr,De)";"12582912";"76E79CEA";"15A87A6D01DBA1A7C4375FFBC1214BB8";"N9CP NUS-N9CP-EUR";1;"Trusted" +"0473";"NASCAR 99 (USA)";"12582912";"3D8EB950";"DC5F1A814C8423B4B43F71C229D65A84";"N9CE ";0;"Not verified" +"0474";"NBA Courtside 2 featuring Kobe Bryant (USA)";"16777216";"A7CC4CE2";"73BB54FFD3C0FC71F941D9A8CC57E2A1";"NCKE ";0;"Not verified" +"0475";"NBA Hangtime (Europe)";"12582912";"7E6D00AE";"62365463743857CFC823978E0E590D84";"NXGP NUS-NXGP-EUR";1;"Trusted" +"0476";"NBA Hangtime (USA)";"12582912";"714CF532";"DC15FCBEAE0F1FEF7BEE141D77BB25A0";"NXGE ";0;"Not verified" +"0477";"NBA in the Zone '98 (Japan)";"12582912";"AED2700A";"4C7A2F4881EACA75DC2FC36673AE2A20";"NBAJ NUS-NBAJ-JPN";1;"Trusted" +"0478";"NBA in the Zone '98 (USA)";"12582912";"A245D737";"BBB48BE198089A26050C84FE5B7B8BD5";"NBAE ";0;"Not verified" +"0479";"NBA in the Zone '99 (USA)";"12582912";"EAB083B8";"6CBF4014C053E16852A3DB80AEB4C853";"NB2E ";0;"Not verified" +"0480";"NBA in the Zone 2 (Japan)";"12582912";"41093B73";"F8F87AEB2C537C9CB2E9913050BFC928";"NB2J NUS-NB2J-JPN";1;"Trusted" +"0481";"NBA in the Zone 2000 (Europe)";"16777216";"A4973197";"4244CC48674C26BD848718C05688F821";"NWZP NUS-NWZP-UKV";1;"Trusted" +"0482";"NBA in the Zone 2000 (USA)";"16777216";"CBB4B730";"1942833AC1A71BE8BAE74BBDFD6DE278";"NWZE ";0;"Not verified" +"0483";"NBA Jam 2000 (Europe)";"16777216";"9F95485E";"604FEB17258044A3E6C3AA9D2C5B62F9";"NJAP NUS-NJAP-EUR";2;"Verified" +"0484";"NBA Jam 2000 (USA)";"16777216";"163DADF9";"AFECC9A2DF7B1A66A6B7AB3AA8B4BD2E";"NJAE ";0;"Not verified" +"0485";"NBA Jam 99 (Europe)";"12582912";"90E4275B";"BE72BE370BC0A76D403FF2B9ED2A9173";"NB9P NUS-NB9P-EUR";1;"Trusted" +"0486";"NBA Jam 99 (USA)";"12582912";"559CD6B1";"ADBE5CA10F659AF2BE712038E8522704";"NB9E ";0;"Not verified" +"0487";"NBA Live 2000 (Europe) (En,Fr,De,Es)";"16777216";"0E4B944C";"7FEC099D1A989D5222D3F9E1A7770404";"NNLP NUS-NNLP-EUR";1;"Trusted" +"0488";"NBA Live 2000 (USA) (En,Fr,De,Es)";"16777216";"7C3BC95E";"FC47F85CC501C8C5BD9D0CA4DB48258F";"NNLE ";0;"Not verified" +"0489";"NBA Live 99 (Europe) (En,Fr,De,Es,It)";"16777216";"A316DF37";"226C19C8759314AC740420DDC3A34EB4";"N9BP NUS-N9BP-SCN";1;"Trusted" +"0490";"NBA Live 99 (USA) (En,Fr,De,Es,It)";"16777216";"9BE0A7AC";"DBE79AE6531B491B8F8EE8B2B814D665";"N9BE ";0;"Not verified" +"0491";"NBA Pro 98 (Europe)";"12582912";"04B75CCC";"A4111A6CDDBDE0A45489106F0DF0CA2B";"NBAP NUS-NBAP-UKV";1;"Trusted" +"0492";"NBA Pro 99 (Europe)";"12582912";"588E60E8";"C5EBBDD41EAEA8BD02CF520640CCCCDF";"NB2P NUS-NB2P-UKV";1;"Trusted" +"0493";"NBA Showtime - NBA on NBC (USA)";"16777216";"A4E378F4";"881E98B47F32093C330A8B0DAD6BB65D";"NSOE ";0;"Not verified" +"0494";"Neon Genesis Evangelion (Japan)";"33554432";"A10A86AF";"5E1940CA1236A76E8F2D15DE0414AE55";"NEVJ NUS-NEVJ-JPN";1;"Trusted" +"0495";"New Tetris, The (Europe)";"12582912";"983263D7";"C4ECFEC66ECEEA23F39632AB6753300F";"NRIP NUS-NRIP-EUR";1;"Trusted" +"0496";"New Tetris, The (USA)";"12582912";"528A07FA";"7A28179B00734C9AA0F0609FAFAAFD5F";"NRIE ";0;"Not verified" +"0497";"NFL Blitz (USA)";"16777216";"9BCD670F";"7F6C5E71711DEC81E77CCF71060F67CA";"NBZE ";0;"Not verified" +"0498";"NFL Blitz - Special Edition (USA)";"16777216";"5D1907F7";"7E856FA8F743900FEBA5A4E28C234AF7";"NSZE ";0;"Not verified" +"0499";"NFL Blitz 2000 (USA)";"16777216";"7F471773";"BA49514441023722F02D41C62612F6C3";"NBIE ";0;"Not verified" +"0500";"NFL Blitz 2001 (USA)";"16777216";"18EEB41B";"E4EDD73CB036C6B143CEE9AEEED60341";"NFBE ";0;"Not verified" +"0501";"NFL Quarterback Club 2000 (Europe)";"12582912";"CEEF5C29";"75C0121D84915BF5C1FBD389CF9F9C17";"NQBP NUS-NQBP-EUR";1;"Trusted" +"0502";"NFL Quarterback Club 2000 (USA)";"12582912";"8F54F999";"EC18E3131040842E32EBAB66C7496EBD";"NQBE ";0;"Not verified" +"0503";"NFL QB Club 2001 (USA)";"12582912";"6D849E17";"FD2CBDEA0992452B52E2803224232D12";"NQCE ";0;"Not verified" +"0504";"NFL Quarterback Club 98 (Europe)";"8388608";"34A21417";"A18CA5DBC85668667AA467ADD6A62B39";"NQ8P NUS-NQ8P-EUR";1;"Trusted" +"0505";"NFL Quarterback Club 98 (USA)";"8388608";"ABF0E8F2";"709F966C30CE6DF1833E95740A5A2AB2";"NQ8E ";0;"Not verified" +"0506";"NFL Quarterback Club 99 (Europe)";"12582912";"F688BDF3";"7EC0484C2BA6AA9F0A45D7AC1F4117DA";"NQ9P NUS-NQ9P-EUR";1;"Trusted" +"0507";"NFL Quarterback Club 99 (USA)";"12582912";"44496B26";"928869D1CE001B813BA908DFE18D7F94";"NQ9E ";0;"Not verified" +"0508";"NHL 99 (Europe) (En,De,Sv,Fi)";"12582912";"F3B2AA4D";"B7E41D34D209B6CFA92E3D622F911C4E";"N9HP NUS-N9HP-EUR";1;"Trusted" +"0509";"NHL 99 (USA)";"12582912";"E5DF2AFE";"A62FA044BCB5507D358424ABDA6419DB";"N9HE ";0;"Not verified" +"0510";"NHL Blades of Steel '99 (USA)";"12582912";"1EE678FE";"349F61F9747F2D2098F305924C97A1BF";"NHOE ";0;"Not verified" +"0511";"NHL Breakaway 98 (Europe)";"12582912";"8C0C9669";"46476A5626CD99B3749AC1EE1E234FAC";"NHLP NUS-NHLP-EUR";1;"Trusted" +"0512";"NHL Breakaway 98 (USA)";"12582912";"49D86C00";"B62076FA1421B8E7FDEC2B4F8A910EA3";"NHLE ";0;"Not verified" +"0513";"NHL Breakaway 99 (Europe)";"12582912";"572060E0";"4BA95AA97ECFEE36051EBE0A9024EEE8";"NH9P NUS-NH9P-EUR";1;"Trusted" +"0514";"NHL Breakaway 99 (USA)";"12582912";"75F75B9D";"AF1D07679014760B88923A4827658CAF";"NH9E ";0;"Not verified" +"0515";"NHL Pro 99 (Europe)";"12582912";"E272867E";"A61854CF27E536C8513174FAEF08DFCB";"NHOP NUS-NHOP-EUR";1;"Trusted" +"0516";"Nightmare Creatures (USA)";"16777216";"6A1EB795";"4116CF435DB315A2481AF8D1E9352FEB";"NNCE ";0;"Not verified" +"0517";"Nintama Rantarou 64 Game Gallery (Japan)";"8388608";"8C7C2DCA";"B04957D052EF850C5EDECE69DB7377B3";"NHBJ NUS-NHBJ-JPN";1;"Trusted" +"0518";"Nintendo All-Star! Dairantou Smash Brothers (Japan)";"16777216";"04C9D3B1";"66DB457B130D31A286A23D6E4DD9726E";"NALJ NUS-NALJ-JPN";3;"Verified" +"0519";"Nuclear Strike 64 (Europe) (En,Fr)";"33554432";"9AFBFCAF";"710BA49EBD5C9A2B26653FAE93BD667A";"NCEP NUS-NCEP-EUR";1;"Trusted" +"0520";"Nuclear Strike 64 (Germany)";"33554432";"0916AB13";"D43C2E1938534363E56A22413B91D051";"NCED ";0;"Not verified" +"0521";"Nuclear Strike 64 (USA)";"33554432";"D7467294";"FFC584040D0D052FBAB4CB6C19245449";"NCEE ";0;"Not verified" +"0522";"Nushi Zuri 64 (Japan)";"16777216";"A6800EC0";"50C10082D0C077FDB5658EF5A6E3F54F";"NUTJ NUS-NUTJ-JPN";1;"Trusted" +"0523";"Nushi Zuri 64 - Shiokaze ni Notte (Japan)";"33554432";"F0BCD1CE";"EEB69597E42E2F5D2914070ACF161B4F";"NUMJ NUS-NUMJ-JPN";1;"Trusted" +"0524";"O.D.T. (Europe) (En,Fr,De,Es,It) (Proto)";"16777216";"7B870026";"E2FB4F16A039A0E302D28ACA94D5D928";"NTDP ";1;"Trusted" +"0525";"O.D.T. (USA) (En,Fr,Es) (Proto)";"16777216";"1D4A8659";"4116E492168AAFFF1BD3100C7B0AA28F";"NTDE ";1;"Trusted" +"0526";"Off Road Challenge (Europe)";"16777216";"D9FE9EE7";"E96FECBA52905DB14ADDAD7CFD61091F";"NOFP NUS-NOFP-EUR";1;"Trusted" +"0527";"Off Road Challenge (USA)";"16777216";"1A45C5AB";"AF7083FC0ABCFD5A2C6A5E971453D831";"NOFE ";0;"Not verified" +"0528";"Ogre Battle 64 - Person of Lordly Caliber (Japan) (Rev 1)";"41943040";"845B8711";"A45C39767D33AC21956A3D4E6C03CFA1";"NOBJ NUS-NOBJ-JPN";1;"Trusted" +"0529";"Ogre Battle 64 - Person of Lordly Caliber (USA)";"41943040";"A05AEA85";"F666E020218392E52662FDDFA1EA4F21";"NOBE NUS-NOBE-USA";1;"Trusted" +"0530";"Olympic Hockey 98 (Europe) (En,Fr,De,Es)";"8388608";"5A805C2E";"465DFD27DDAB4F5488F4DADC09B7F938";"NHNP NUS-NHNP-UKV";1;"Trusted" +"0531";"Olympic Hockey 98 (Japan)";"8388608";"9E98FCE8";"8A964671C5A4F4FC62787F1F25EDD70D";"NHNJ NUS-NHNJ-JPN";1;"Trusted" +"0532";"Olympic Hockey 98 (USA)";"8388608";"2D777652";"9C99C6D9EA98A960056C531CB78EB35B";"NHNE ";0;"Not verified" +"0533";"Onegai Monsters (Japan)";"16777216";"AC72A1C7";"3796829F54958CE103DCF5E3E8EB80B4";"NOMJ NUS-NOMJ-JPN";1;"Trusted" +"0534";"Operation WinBack (Europe) (En,Fr,De,Es,It)";"16777216";"FB96F166";"91CF1982F309BD73822165087DAD4371";"NWDP NUS-NWDP-EUR";1;"Trusted" +"0535";"Pachinko 365 Nichi (Japan)";"12582912";"42D06E32";"D60046C23400BFEBD5B051F89E7F2F07";"NPCJ NUS-NPCJ-JPN";1;"Trusted" +"0536";"Paper Mario (Europe) (En,Fr,De,Es)";"67108864";"85B3AB37";"A9BE6A493A680642D840F859A65816CA";"NMQP NUS-NMQP-EUR";1;"Trusted" +"0537";"Paper Mario (USA)";"41943040";"A7F5CD7E";"A722F8161FF489943191330BF8416496";"NMQE NUS-NMQE-USA";2;"Verified" +"0538";"Paperboy (Europe)";"12582912";"F00C5053";"B7F2EB7989C9C00096655D087D72EC51";"NYPP NUS-NYPP-EUR";1;"Trusted" +"0539";"Paperboy (USA)";"12582912";"F27114E6";"C4CBCB54B010A5A71FE5CAA391E5C25F";"NYPE ";0;"Not verified" +"0540";"Parlor! Pro 64 - Pachinko Jikki Simulation Game (Japan)";"12582912";"A33146E0";"D78E10C6B3E98F3B32FE0F23ED72DB42";"NPPJ NUS-NPPJ-JPN";1;"Trusted" +"0541";"PD Ultraman Battle Collection 64 (Japan)";"33554432";"86CC80B5";"52F4F3320607F3E8DD1A16A2F1BFBDB0";"NUBJ NUS-NUBJ-JPN";1;"Trusted" +"0542";"Penny Racers (Europe)";"8388608";"A1D6EB5B";"20DA62ECE553EDE84D02283174BECC8F";"NCRP NUS-NCRP-EUR";1;"Trusted" +"0543";"Penny Racers (USA)";"8388608";"C1E57337";"518B14054A667A3B9E0B72D3BF784E41";"NCRE ";0;"Not verified" +"0544";"Perfect Dark (Europe) (En,Fr,De,Es,It)";"33554432";"7718A714";"D9B5CD305D228424891CE38E71BC9213";"NPDP NUS-NPDP-EUR";2;"Verified" +"0545";"Perfect Dark (Japan)";"33554432";"639C0DA9";"538D2B75945EAE069B29C46193E74790";"NPDJ NUS-NPDJ-JPN";1;"Trusted" +"0546";"Perfect Dark (USA)";"33554432";"68446AD4";"7F4171B0C8D17815BE37913F535E4E93";"NPDE ";0;"Not verified" +"0547";"Perfect Dark (USA) (Rev 1)";"33554432";"4C1677F7";"E03B088B6AC9E0080440EFED07C1E40F";"NPDE ";0;"Not verified" +"0548";"PGA European Tour (USA)";"16777216";"7CDFCDAA";"617CECA1D2BEFFCE943EF832326898BF";"NEAE ";0;"Not verified" +"0549";"PGA European Tour Golf (Europe) (En,Fr,De,Es,It)";"16777216";"6B5FF959";"0112FFAADA116D172ABCE136E9043A93";"NEAP NUS-NEAP-EUU";1;"Trusted" +"0550";"Pikachuu Genki de Chuu (Japan)";"16777216";"3F6245AE";"E0BCB2758EDF0AC6AB7DB36D98E1E57C";"NPGJ NUS-NPGJ-JPN";2;"Verified" +"0551";"Pilotwings 64 (Europe) (En,Fr,De)";"8388608";"C902E57C";"3FCD4969F9A080BD2BCB913EC5D7A3BD";"NPWP NUS-NPWP-EUR";1;"Trusted" +"0552";"Pilotwings 64 (Japan)";"8388608";"3D3A84A9";"E8E6EC0692009009F5DCA6827B21F59A";"NPWJ NUS-NPWJ-JPN";2;"Verified" +"0553";"Pilotwings 64 (USA)";"8388608";"728807E7";"8B346182730CEAFFE5E2CCF6D223C5EF";"NPWE ";0;"Not verified" +"0554";"Pokemon Snap (Japan)";"16777216";"A091BD56";"FBDD74ED68E6A0CD734562D56CCB752D";"NPFJ NUS-NPFJ-JPN";1;"Trusted" +"0555";"Pokemon Stadium (Japan)";"16777216";"3139189C";"C46E087D966A35095DF96799B0B4FFAE";"CPSJ NUS-CPSJ-JPN";1;"Trusted" +"0556";"Pokemon Stadium 2 (Japan)";"33554432";"40AA4874";"2449BB712A64E3363A6CBD56F5ADEDA5";"CP2J NUS-CP2J-JPN";1;"Trusted" +"0557";"Pokemon Stadium Kin Gin (Japan)";"67108864";"CBC3B935";"A17AADCC962393D476EDC321E59C504B";"NP3J NUS-NP3J-JPN";1;"Trusted" +"0558";"Pokemon Puzzle League (Europe)";"33554432";"75839254";"2EF9FA16DE2A09EA15B6289447F40490";"NPNP NUS-NPNP-EUR";1;"Trusted" +"0559";"Pokemon Puzzle League (France)";"33554432";"C3AA0074";"A3BA044DFC00BB766B4B2BFB9D4B5BE9";"NPNF NUS-NPNF-FRA";1;"Trusted" +"0560";"Pokemon Puzzle League (Germany)";"33554432";"AC543150";"000364BAC80E41D9060A31A5923874B7";"NPND ";0;"Not verified" +"0561";"Pokemon Puzzle League (USA)";"33554432";"8B9C598F";"E722576A15182CFED6782379CE4BC8BE";"NPNE ";0;"Not verified" +"0562";"Pokemon Snap (Australia)";"16777216";"CDEA6D4C";"E5A0CA3DC54B38EA7FCD927E3CFFAD3B";"NPFU ";0;"Not verified" +"0563";"Pokemon Snap (Europe)";"16777216";"F824A057";"F2A8106403D2BF9350BFEAB08689D54A";"NPFP NUS-NPFP-EUR";2;"Verified" +"0564";"Pokemon Snap (France)";"16777216";"EC843586";"E9028F9CCC307806695DD81742D05D5D";"NPFF NUS-NPFF-FRA";2;"Verified" +"0565";"Pokemon Snap (Germany)";"16777216";"10C27B3C";"144B8906DC40534CFBEF6D7B994A982B";"NPFD NPFD";3;"Verified" +"0566";"Pokemon Snap (Italy)";"16777216";"DF56E922";"8E1968191DD27655C03BE812CF041A95";"NPFI NUS-NPFI-ITA";2;"Verified" +"0567";"Pokemon Snap (Spain)";"16777216";"371B787F";"A45D7115BE5A06FD1567F9F913C3BDF8";"NPFS NUS-NPFS-ESP";2;"Verified" +"0568";"Pokemon Snap (USA)";"16777216";"86A69756";"FC3C9329B7CDD67CF7650ABF63B9A580";"NPFE ";1;"Trusted" +"0569";"Pokemon Snap Station (USA) (Demo) (Kiosk)";"16777216";"E22A00D0";"A9C272687DABD59C5144774B53BCC35A";"NPHE ";0;"Not verified" +"0570";"Pokemon Stadium (Europe)";"33554432";"DC57508D";"2859090D78581E0925A3AF8045E81E4B";"NPOP ";0;"Not verified" +"0571";"Pokemon Stadium (Europe) (Rev 1)";"33554432";"DA889668";"31EE2DE8E65E30F5934C450DBAA924F0";"NPOP NUS-NPOP-EUR";1;"Trusted" +"0572";"Pokemon Stadium (France)";"33554432";"5DD92D4C";"0E85A098D0F0E8A7EB572A69612A6873";"NPOF NUS-NPOF-FRA";1;"Trusted" +"0573";"Pokemon Stadium (Germany)";"33554432";"9F22A945";"24BE2CCB0DEA0755908C02BF67E22FE5";"NPOD NPOD";1;"Trusted" +"0574";"Pokemon Stadium (Italy)";"33554432";"F155C465";"A81321759AF38BEB30A40FDACA2EA22A";"NPOI NUS-NPOI-ITA";1;"Trusted" +"0575";"Pokemon Stadium (Spain)";"33554432";"F02CD5EB";"D14A499BC4E324974EAE3E42DEC58625";"NPOS NUS-NPOS-ESP";1;"Trusted" +"0576";"Pokemon Stadium (USA)";"33554432";"72F66F05";"ED1378BC12115F71209A77844965BA50";"NPOE ";0;"Not verified" +"0577";"Pokemon Stadium (USA) (Rev 1)";"33554432";"4B1BC2AC";"40E03EDA831C01E0A12294287FD240E2";"NPOE NPOE";2;"Verified" +"0578";"Pokemon Stadium 2 (Europe)";"67108864";"6B3096C4";"B1271DB50D6EF8F6B53CC640C3743E4F";"NP3P NUS-NP3P-EUR";1;"Trusted" +"0579";"Pokemon Stadium 2 (France)";"67108864";"E2A78066";"4748D96916AE2BCC5FC1630515EE2561";"NP3F NUS-NP3F-FRA";1;"Trusted" +"0580";"Pokemon Stadium 2 (Germany)";"67108864";"1146A43A";"484F3E696C94980ACF3D7068F9ACC98F";"NP3D NP3D";1;"Trusted" +"0581";"Pokemon Stadium 2 (Italy)";"67108864";"9FA5C095";"5A04D7F1AB9C6B080176567AA7168D3A";"NP3I NP3I";1;"Trusted" +"0582";"Pokemon Stadium 2 (Spain)";"67108864";"283E7641";"B26AAFD452C9816E1B7AA0954E75825F";"NP3S NUS-NP3S-ESP";1;"Trusted" +"0583";"Pokemon Stadium 2 (USA)";"67108864";"A9998E09";"1561C75D11CEDF356A8DDB1A4A5F9D5D";"NP3E ";0;"Not verified" +"0584";"Polaris SnoCross (USA)";"12582912";"8DD735EF";"BBDC4C4F1C474298189312008A1768C4";"NPXE ";0;"Not verified" +"0585";"Power League 64 (Japan)";"8388608";"AEC21C28";"8CC73C373016070647030DDE492FDC8C";"NPLJ NUS-NPLJ-JPN";1;"Trusted" +"0586";"Power Rangers - Lightspeed Rescue (Europe)";"12582912";"36EE5CA8";"92BB1BC5E6466F1944943D34D25F2DAF";"NPUP NUS-NPUP-EUR";1;"Trusted" +"0587";"Power Rangers - Lightspeed Rescue (USA)";"12582912";"A5033311";"91D74621DDEF6D37FB845B3BC7059A38";"NPUE ";0;"Not verified" +"0588";"Powerpuff Girls, The - Chemical X-Traction (USA)";"8388608";"9514DA0A";"2991BB68ECA54813D6B834ADBBBACC4C";"NPQE ";0;"Not verified" +"0589";"Premier Manager 64 (Europe)";"16777216";"81CDA888";"25BAFC84BA4D87854DC44DF3EF8764EA";"NPMP NUS-NPMP-UKV";1;"Trusted" +"0590";"Pro Mahjong Kiwame 64 (Japan)";"8388608";"1F5907F9";"7995D76F4CE236B0F0289F47AE523D32";"NKMJ NUS-NKMJ-JPN";1;"Trusted" +"0591";"Pro Mahjong Tsuwamono 64 - Jansou Battle ni Chousen (Japan)";"8388608";"35461699";"F1A2E4DD22ADF4F90DA4BDDCA37D5F18";"NNRJ NUS-NNRJ-JPN";1;"Trusted" +"0592";"Puyo Puyoon Party (Japan)";"12582912";"D59D2794";"22B86AB3F320A607899A0516C90A24D0";"NPTJ NUS-NPTJ-JPN";1;"Trusted" +"0593";"Puyo Puyo Sun 64 (Japan)";"8388608";"355FF9DE";"FAAA2094B04DCA4C287AF9334D22529D";"NPYJ NUS-NPYJ-JPN";2;"Verified" +"0594";"Puzzle Bobble 64 (Japan)";"8388608";"EA837423";"B478D4AF60D43C38BA81DE9FAEA6E057";"NPBJ NUS-NPBJ-JPN";1;"Trusted" +"0595";"Quake (Europe)";"12582912";"28C10844";"592CE7718EFDD1FF2F077C9B2B5275FB";"NQKP NUS-NQKP-SCN, NUS-NQKP-FRA";2;"Verified" +"0596";"Quake (USA)";"12582912";"761F39D1";"097605021951024C3ECB2D502C0C2A9F";"NQKE ";0;"Not verified" +"0597";"Quake II (Europe)";"12582912";"82BECA21";"673D4BA4F41A0FE23650F06AF53EEC50";"NQ2P NUS-NQ2P-UKV";1;"Trusted" +"0598";"Quake II (USA)";"12582912";"E6B34387";"CC93C30C633FF461C29B54CEABEFD701";"NQ2E ";0;"Not verified" +"0599";"Quest 64 (USA)";"16777216";"D75B45C6";"EA552E33973468233A0712C251ABDB6B";"NETE ";0;"Not verified" +"0600";"Racing Simulation 2 (Germany)";"16777216";"BA73A7E4";"AA57D69867F53456F351A289EBA08C3D";"NMGD ";0;"Not verified" +"0601";"Rakugakids (Europe)";"12582912";"483129AA";"167A3502F06CF0EEF56758533F3D0E52";"NKRP NUS-NKRP-EUU";1;"Trusted" +"0602";"Rakugakids (Japan)";"12582912";"B9E53B06";"813AD5C00BAD7C4D41F8558CECEDAE51";"NKRJ NUS-NKRJ-JPN";1;"Trusted" +"0603";"Rally '99 (Japan)";"8388608";"FFA625FE";"0630226F63561A05916EDCFBC8D96C04";"NRAJ NUS-NRAJ-JPN";1;"Trusted" +"0604";"Rally Challenge 2000 (USA)";"12582912";"3EDEC7B0";"0458BC47CD771D8BC66B0CEAE6895724";"NWQE ";0;"Not verified" +"0605";"Rampage - World Tour (Europe)";"12582912";"CDC458EC";"08E02F52E0547686A9BFAC7CBB03C129";"NRPP NUS-NRPP-SCN";1;"Trusted" +"0606";"Rampage - World Tour (USA)";"12582912";"211119DD";"4645672A0CF00ADA9B5E37CFDE8B024E";"NRPE ";0;"Not verified" +"0607";"Rampage 2 - Universal Tour (Europe)";"12582912";"FA6E097B";"1492806F12D33C3EA0EDB6848D43B1CC";"N2PP NUS-N2PP-EUR";1;"Trusted" +"0608";"Rampage 2 - Universal Tour (USA)";"12582912";"7614EE0D";"8113D0EA2008402D4631F241F625D16B";"N2PE ";0;"Not verified" +"0609";"Rat Attack (Europe) (En,Fr,De,Es,It,Nl)";"8388608";"DD4FA798";"BC66239C12AE8696926E50C2B6ED9C49";"NRTP NUS-NRTP-EUR";1;"Trusted" +"0610";"Rat Attack! (USA) (En,Fr,De,Es,It,Nl)";"8388608";"2315FEA7";"F661889FDF65DDCD212E9FB53B2C8F50";"NRTE ";0;"Not verified" +"0611";"Rayman 2 - The Great Escape (Europe) (En,Fr,De,Es,It)";"33554432";"169A5037";"5DBBFD5ACE8222FA8FE51BE113453C13";"NY2P NUS-NY2P-EUR";1;"Trusted" +"0612";"Rayman 2 - The Great Escape (USA) (En,Fr,De,Es,It)";"33554432";"02BB4409";"03AA4D09FDE77EED9B95BE68E603D233";"NY2E ";0;"Not verified" +"0613";"Razmoket, Les - La Chasse aux Tresors (France)";"16777216";"66766469";"55685D6324EFDE5BC9D26C98706B0B8A";"NRGF ";0;"Not verified" +"0614";"Razor Freestyle Scooter (USA)";"8388608";"927CE621";"406B08987AB92D73D72B597EC6B11BD9";"NFQE ";0;"Not verified" +"0615";"Re-Volt (Europe) (En,Fr,De,Es)";"12582912";"81D13A11";"FAA64ABB0D222FCC0C6E2515D3805D9F";"NRVP NUS-NRVP-EUR";1;"Trusted" +"0616";"Re-Volt (USA)";"12582912";"FC0C86D0";"3FC4D3187435443455F8355B2D3F8934";"NRVE ";0;"Not verified" +"0617";"Ready 2 Rumble Boxing (Europe) (En,Fr,De)";"33554432";"A69DF7B3";"ADC95AE01855FA305B13F8B22427E597";"NRDP NUS-NRDP-EUR";1;"Trusted" +"0618";"Ready 2 Rumble Boxing (USA)";"33554432";"2A554048";"A42F6F14F7EA10ABEB3B55FFD42EB572";"NRDE ";0;"Not verified" +"0619";"Ready 2 Rumble Boxing - Round 2 (USA)";"33554432";"052A0E04";"DF4446A2B55C4D8D67E9C0C19E0FD9FB";"N22E ";0;"Not verified" +"0620";"Resident Evil 2 (Europe) (En,Fr)";"67108864";"7C8EE011";"B04F298721223A22E1150CEBC712EE6A";"NREP NUS-NREP-EUR";2;"Verified" +"0621";"Resident Evil 2 (USA) (Rev 1)";"67108864";"848FBC0D";"1ADD2C0217662B307CDFD876B35FBF7A";"NREE ";0;"Not verified" +"0622";"Road Rash 64 (Europe)";"33554432";"3C664A7B";"AD922DAE446A301E1AAFE1DFBAD75A2E";"NROP NUS-NROP-EUR";1;"Trusted" +"0623";"Road Rash 64 (USA)";"33554432";"600B3988";"28C2373F6D831EEC81F6146A809E701B";"NROE ";0;"Not verified" +"0624";"Roadsters (Europe) (En,Fr,De,Es,It,Nl)";"12582912";"997ED5AF";"41F67B5C8BB8DAEFFD989123846FC063";"NRRP NUS-NRRP-UKV";1;"Trusted" +"0625";"Roadsters (USA) (En,Fr,Es)";"12582912";"E4337B92";"D3644B398C090528E0ED9EB3C140366E";"NRRE ";0;"Not verified" +"0626";"Robot Poncots 64 - 7tsu no Umi no Caramel (Japan)";"33554432";"3B0F8061";"444F70A655AC89CA900F6FAFAF926B16";"NR7J NUS-NR7J-JPN";1;"Trusted" +"0627";"Robotech - Crystal Dreams (USA) (Proto)";"12582912";"8F5BC48F";"27C6F780F9032A531E9A322969CD9159";" ";0;"Not verified" +"0628";"Robotron 64 (Europe)";"8388608";"23BF4956";"2ABCD1AD41B3356FBC1018ECB121283E";"NRXP NUS-NRXP-EUR";1;"Trusted" +"0629";"Robotron 64 (USA)";"8388608";"B2CBAE58";"5698757883A6F46FE5B4C9B6E780B480";"NRXE ";0;"Not verified" +"0630";"Rocket - Robot on Wheels (Europe) (En,Fr,De)";"12582912";"7DE5D20D";"427C5457D4A29A222811F0CAA9CCA7B9";"NSUP NUS-NSUP-EUR";1;"Trusted" +"0631";"Rocket - Robot on Wheels (USA)";"12582912";"E0399F23";"C2907EB2F9A350793317ECE878A3B8E3";"NSUE ";0;"Not verified" +"0632";"Rockman Dash - Hagane no Boukenshin (Japan)";"33554432";"61EAEE83";"0C74B44680276FFE808CFA6045329819";"NRHJ NUS-NRHJ-JPN";1;"Trusted" +"0633";"RR64 - Ridge Racer 64 (Europe)";"33554432";"DD9AE3A8";"4561840840760FFA7B59F03A5F416A5C";"NRZP NUS-NRZP-EUR, NUS-NRZP-AUS";2;"Verified" +"0634";"RR64 - Ridge Racer 64 (USA)";"33554432";"3C2C2D1C";"990F97D56456FC23E52BD263E709E21E";"NRZE ";0;"Not verified" +"0635";"RTL World League Soccer 2000 (Germany)";"16777216";"0A17DA7B";"A1082A6676455C040843FD75E92DE1A3";"NWKD NWKD";1;"Trusted" +"0636";"Rugrats - Die grosse Schatzsuche (Germany)";"16777216";"23AED3A2";"DEC4598A39728C28CD0CEBA45A173CE1";"NRGD NUS-NRGD-NOE";1;"Trusted" +"0637";"Rugrats - Scavenger Hunt (USA)";"16777216";"A87FAF82";"8C432235A57D34BC4A9B8B290E21E01E";"NRGE ";0;"Not verified" +"0638";"Rugrats - Treasure Hunt (Europe)";"16777216";"3338B7C8";"55185016031CDC73C0FD471527C35706";"NRGP NUS-NRGP-UKV";1;"Trusted" +"0639";"Rugrats in Paris - The Movie (Europe)";"16777216";"CD74B07E";"229089089661F517C863242D6BB77746";"NRKP NUS-NRKP-EUR-1";1;"Trusted" +"0640";"Rugrats in Paris - The Movie (USA)";"16777216";"A9CC2419";"207EFE58C7C221DBDFFF285AB80126C1";"NRKE ";0;"Not verified" +"0641";"Rush 2 - Extreme Racing USA (Europe) (En,Fr,De,Es,It,Nl)";"12582912";"30F21F89";"681DF5A32E857E77194106B35304D6B5";"NR2P NUS-NR2P-EUR";1;"Trusted" +"0642";"Rush 2 - Extreme Racing USA (USA)";"12582912";"9EB14EA8";"6A925AB624EE3B343231D799733BA898";"NR2E ";0;"Not verified" +"0643";"S.C.A.R.S. (Europe) (En,Fr,De)";"8388608";"4E37B6F2";"7ED3F10BC32CF76F172D8C31D15A2799";"NCSP NUS-NCSP-EUR";1;"Trusted" +"0644";"S.C.A.R.S. (USA)";"8388608";"22916735";"D0AA9D20A4B85FE514D2A3150D0133EA";"NCSE ";0;"Not verified" +"0645";"Saikyou Habu Shougi (Japan)";"8388608";"01794D62";"C4E47228706BC724D7FBD811231D20C9";"NSHJ NUS-NSHJ-JPN";1;"Trusted" +"0646";"San Francisco Rush - Extreme Racing (Europe) (En,Fr,De)";"8388608";"E064962A";"81B1122EE15F7B50A341AE62E9C5716B";"NSFP NUS-NSFP-NOE";1;"Trusted" +"0647";"San Francisco Rush - Extreme Racing (USA) (En,Fr,De)";"8388608";"3E20070B";"F015FC28E1D62A36B4EBF4C79CA8F285";"NSFE ";0;"Not verified" +"0648";"San Francisco Rush 2049 (Europe) (En,Fr,De,Es,It,Nl)";"12582912";"E63B86C5";"02B16AC23998F78F09AF6513F4ACB664";"NRUP NUS-NRUP-EUR";1;"Trusted" +"0649";"San Francisco Rush 2049 (USA)";"12582912";"10941439";"AF5BE0ADFF51A8E9C6D771282C295810";"NRUE ";0;"Not verified" +"0650";"Scooby-Doo! - Classic Creep Capers (Europe)";"16777216";"0D737E6F";"3B6DD7B60437234895500BEFF28DF6D6";"NSYP NUS-NSYP-EUR";1;"Trusted" +"0651";"Scooby-Doo! - Classic Creep Capers (USA)";"16777216";"39068228";"16CC6DB10A56331B56F374B4FB254D5E";"NSYE ";0;"Not verified" +"0652";"SD Hiryuu no Ken Densetsu (Japan)";"12582912";"CC083E34";"637A7EA2A39F20C5B20834187230D89D";"NDCJ NUS-NDCJ-JPN";1;"Trusted" +"0653";"Shadow Man (Europe) (En,Es,It)";"33554432";"8D230306";"A485A6E9E30B7D55D23D8DD043770C64";"NSDP NUS-NSDP-EUR";1;"Trusted" +"0654";"Shadow Man (France)";"33554432";"6812D3A7";"235511BBDB21AF5A767BDB7502A80F06";"NSDF ";0;"Not verified" +"0655";"Shadow Man (Germany)";"33554432";"EAF6ADD1";"AF40EF12CE923FF1C26E76CC9D9B9ED9";"NSDD NSDD";1;"Trusted" +"0656";"Shadow Man (USA)";"33554432";"5E20CC63";"B457298B87B85BBF950F24867DAA9475";"NSDE ";0;"Not verified" +"0657";"Shadowgate 64 - Trials of the Four Towers (Europe)";"16777216";"FF7D7DF0";"E8955C3B743FDDFE403E52E769E9853F";"NSGP NUS-NSGP-UKV";1;"Trusted" +"0658";"Shadowgate 64 - Trials of the Four Towers (Europe) (Es,It)";"16777216";"87F00472";"A06E757CF1930B29FA4C0B5C9F31335F";"NSGY NSGY";1;"Trusted" +"0659";"Shadowgate 64 - Trials of the Four Towers (Europe) (Fr,De,Nl)";"16777216";"EEDC0BEA";"11169A32D449EC3A8903CA8A9D69A6AA";"NSGX ";0;"Not verified" +"0660";"Shadowgate 64 - Trials of the Four Towers (Japan)";"16777216";"9F74A58C";"1960A3879FADF2C5EFF5BEB47E0E1441";"NSGJ NUS-NSGJ-JPN";1;"Trusted" +"0661";"Shadowgate 64 - Trials of the Four Towers (USA) (En,Es)";"16777216";"69983CC3";"407A1A18BD7DBE0485329296C3F84EB8";"NSGE ";0;"Not verified" +"0662";"Shin Nihon Pro Wrestling Toukon Road - Brave Spirits (Japan)";"12582912";"E892ED43";"13D9514A4D208DC6C7B0C833F68114D2";"NTOJ NUS-NTOJ-JPN";1;"Trusted" +"0663";"Shin Nihon Pro Wrestling Toukon Road 2 - The Next Generation (Japan)";"33554432";"DEAC787F";"113044B16B75F98792BF9C20C6B6282B";"NT3J NUS-NT3J-JPN";1;"Trusted" +"0664";"SimCity 2000 (Japan)";"12582912";"57767E45";"244BEA64EA209990E9C69A830B507135";"NS2J NUS-NS2J-JPN";1;"Trusted" +"0665";"Snobo Kids (Japan)";"8388608";"213BF381";"B8D4B92E66A312708626B3216DE07A3A";"NSKJ NUS-NSKJ-JPN";1;"Trusted" +"0666";"Snow Speeder (Japan)";"12582912";"30EA3FD7";"F7E66DA23C8BB8E59F641A636A9CAE82";"NSNJ NUS-NSNJ-JPN";1;"Trusted" +"0667";"Snowboard Kids (Europe)";"8388608";"5619A70D";"AB4382E583AE139EEDBAFCE5FA87E4C8";"NSKP NUS-NSKP-EUR, NUS-NSKP-AUS";2;"Verified" +"0668";"Snowboard Kids (USA)";"8388608";"020FB906";"EB31F4F9C1FE26A3A663F74E9790516E";"NSKE ";0;"Not verified" +"0669";"Snowboard Kids 2 (Australia)";"16777216";"3A0B6214";"47B5E3955D54F969941533F26691AB38";"NK2P NUS-NK2P-AUS";1;"Trusted" +"0670";"Snowboard Kids 2 (USA)";"16777216";"D0DC8A8E";"08E1152E9D9742E9BBF6C224B6958F2D";"NK2E ";0;"Not verified" +"0671";"Sonic Wings Assault (Japan)";"8388608";"FC73FB79";"7D47911B5C3D91A303EF19E764F3C02B";"NSAJ NUS-NSAJ-JPN";1;"Trusted" +"0672";"South Park (Europe) (En,Fr,Es)";"16777216";"B2C3E123";"40CC2085A5C12456BEF830B047068326";"NDTP NUS-NDTP-EUR";1;"Trusted" +"0673";"South Park (Germany)";"16777216";"5711E197";"2C94A246E701D667BA807DAB6C9771E2";"NDTD ";0;"Not verified" +"0674";"South Park (USA)";"16777216";"7D666B9E";"1730119B0455EF89C4E495DEC8E950A5";"NDTE ";0;"Not verified" +"0675";"South Park - Chef's Luv Shack (Europe)";"16777216";"AC1628EB";"F1AE48B778C8431A50C37EB1ED96B120";"NCYP NUS-NCYP-EUR";1;"Trusted" +"0676";"South Park - Chef's Luv Shack (USA)";"16777216";"6B6B1D09";"6AF573EB055648A8542AA82D9524FB2F";"NCYE ";0;"Not verified" +"0677";"South Park Rally (Europe)";"16777216";"296E3525";"C33FA02791077A71B0AFE1CFED47C180";"NPRP NUS-NPRP-UKV";1;"Trusted" +"0678";"South Park Rally (USA)";"16777216";"CCDD322A";"1C494719032FF99382B167C43FB11762";"NPRE ";0;"Not verified" +"0679";"Space Dynamites (Japan)";"8388608";"8CB4B948";"7F9CDBBB1AAAAF0983C64988EF9C58BE";"NDKJ NUS-NDKJ-JPN";1;"Trusted" +"0680";"Space Invaders (USA)";"8388608";"60F7FF8E";"C72417E0F8F043F9F11851633C4B1A57";"NIVE ";0;"Not verified" +"0681";"SpaceStation Silicon Valley (Europe) (En,Fr,De,Es,It,Nl,Pt)";"8388608";"63042E36";"FCA7AFCADCF5E5545A62919BA94DAD18";"NSVP NUS-NSVP-EUU";1;"Trusted" +"0682";"SpaceStation Silicon Valley (Japan) (Proto)";"8388608";"DCEC9F8A";"E66ED1CC4AB95D0872BB2EBC49B206C4";"NSVJ ";0;"Not verified" +"0683";"SpaceStation Silicon Valley (USA)";"8388608";"A606E8AE";"868B37D1B66D1D994E2BAD4E218BF129";"NSVE ";0;"Not verified" +"0684";"Spider-Man (USA)";"33554432";"696CC2A4";"7F1991B8861E7E532EC21ECF2AF82191";"NSLE ";0;"Not verified" +"0685";"Star Fox 64 (Japan)";"12582912";"411142A7";"446D5215C4D34EB8AB0F355F324B8D0E";"NFXJ NUS-NFXJ-JPN";1;"Trusted" +"0686";"Star Fox 64 (USA)";"12582912";"B1FCAA9C";"CAF9A78DB13EE00002FF63A3C0C5EABB";"NFXE NUS-NFXE-USA";1;"Trusted" +"0687";"Star Fox 64 (USA) (Rev 1)";"12582912";"B1B5FC46";"741A94EEE093C4C8684E66B89F8685E8";"NFXE ";2;"Verified" +"0688";"Star Soldier - Vanishing Earth (Japan)";"12582912";"7EE5F51D";"14A21928BE46C18BA04161305E89F5DE";"NS6J NUS-NS6J-JPN";1;"Trusted" +"0689";"Star Soldier - Vanishing Earth (USA)";"12582912";"EA650DEF";"EE045A2E9F924CD8FD00018B50E46650";"NS6E NUS-NS6E-USA";1;"Trusted" +"0690";"Star Twins (Japan)";"33554432";"964506CE";"CA28A3645FC7AD969EBD75C5D6506E7A";"NJFJ NUS-NJFJ-JPN";1;"Trusted" +"0691";"Star Wars - Rogue Squadron (Europe) (En,Fr,De)";"16777216";"6289645F";"7F919D2E35CBE561E139AE8FE93ACA86";"NRSP NUS-NRSP-EUR";3;"Verified" +"0692";"Star Wars - Rogue Squadron (Europe) (En,Fr,De) (Rev 1)";"16777216";"C88E5638";"A9DD498E6A28F55311CE4EF057E164B8";"NRSP ";0;"Not verified" +"0693";"Star Wars - Rogue Squadron (USA)";"16777216";"83C225CC";"47CAC4E2A6309458342F21A9018FFBF0";"NRSE ";0;"Not verified" +"0694";"Star Wars - Shadows of the Empire (Europe)";"12582912";"F0A191BF";"591CF8E672C9CC0FE9C871CC56DCC854";"NSWP NUS-NSWP-EUR, NUS-NSWP-AUS";2;"Verified" +"0695";"Star Wars - Shadows of the Empire (USA)";"12582912";"3C0837B3";"5CCE8AD5F86E8A373A7525DC4C7E6705";"NSWE NUS-NSWE-USA";1;"Trusted" +"0696";"Star Wars - Shadows of the Empire (USA) (Rev 1)";"12582912";"B0540688";"FA635E837275D28FD5A24D5675BA42C8";"NSWE ";0;"Not verified" +"0697";"Star Wars - Shadows of the Empire (USA) (Rev 2)";"12582912";"E8727549";"C7B40352AAD8D863D88D51672F9A0087";"NSWE NUS-NSWE-USA";1;"Trusted" +"0698";"Star Wars - Shutsugeki! Rogue Chuutai (Japan)";"16777216";"EE7643B6";"8603B180E70B2A72EF77D46C2BEC2234";"NRSJ NUS-NRSJ-JPN";1;"Trusted" +"0699";"Star Wars - Teikoku no Kage (Japan)";"12582912";"7CE71426";"5B6B6B0C8C9A40286DCF61706B6A05CB";"NSWJ NUS-NSWJ-JPN";1;"Trusted" +"0700";"Star Wars Episode I - Battle for Naboo (Europe)";"33554432";"029104FD";"0BD1F7BB9F4B02520E4E9285C809F099";"NNAP NUS-NNAP-EUR";1;"Trusted" +"0701";"Star Wars Episode I - Battle for Naboo (USA)";"33554432";"99DEE3C0";"3CB88B934572E7520F35E5458798775B";"NNAE ";0;"Not verified" +"0702";"Star Wars Episode I - Racer (Europe) (En,Fr,De)";"33554432";"E0F46629";"6EF9FED309F28BD59B605F128869AA00";"NEPP NUS-NEPP-EUR, NUS-NEPP-AUS";5;"Verified" +"0703";"Star Wars Episode I - Racer (Japan)";"33554432";"97C155C5";"7579AB0E79B1011479B88F2BF39D48E0";"NEPJ NUS-NEPJ-JPN";1;"Trusted" +"0704";"Star Wars Episode I - Racer (USA)";"33554432";"C53C1035";"1EE8800A4003E7F9688C5A35F929D01B";"NEPE ";0;"Not verified" +"0705";"StarCraft 64 (Australia)";"33554432";"2639DAE2";"72B60FAC5EE257FA387B43C57632D50C";"NSQP NUS-NSQP-AUS";2;"Verified" +"0706";"StarCraft 64 (USA)";"33554432";"4E4C7EC9";"559F71B861F639B6376D891E3023414B";"NSQE ";0;"Not verified" +"0707";"StarCraft 64 (USA) (Beta)";"33554432";"B0E1654F";"3EB732A8D004263AD8EB0DA59A29582A";" ";0;"Not verified" +"0708";"Starshot - Space Circus Fever (Europe) (En,Fr,De)";"12582912";"056D2218";"A9C393AA232B32798ADF378F4318F99F";"NSCP NUS-NSCP-UKV";2;"Verified" +"0709";"Starshot - Space Circus Fever (USA) (En,Fr,Es)";"12582912";"7720E5F3";"42AF1992978229BBB5F560571708E25E";"NSCE ";0;"Not verified" +"0710";"Stunt Racer 64 (USA)";"12582912";"3438B1AF";"E8B666A429FEDB2A1A1228CD450CD4FC";"NR3E ";0;"Not verified" +"0711";"Super B-Daman - Battle Phoenix 64 (Japan)";"12582912";"5006DC88";"B3C1D4B9EC7DCD2922E681DBBC393915";"NB6J NUS-NB6J-JPN";1;"Trusted" +"0712";"Super Bowling (Japan)";"8388608";"BA2D8B2E";"09C5B4D19364EFE48BB818087734978E";"NBWJ NUS-NBWJ-JPN";1;"Trusted" +"0713";"Super Bowling (USA)";"8388608";"F6CCD04A";"FA3A043997A3ACDF17337385B126BC04";"NBWE ";0;"Not verified" +"0714";"Super Mario 64 (Europe) (En,Fr,De)";"8388608";"03048DE6";"45676429EF6B90E65B517129B700308E";"NSMP NUS-NSMP-EUR, NSMP";4;"Verified" +"0715";"Super Mario 64 (Japan)";"8388608";"DD801954";"85D61F5525AF708C9F1E84DCE6DC10E9";"NSMJ NUS-NSMJ-JPN";2;"Verified" +"0716";"Super Mario 64 (Japan) (Rev 3) (Shindou Edition)";"8388608";"A1E15117";"2D727C3278AA232D94F2FB45AEC4D303";"NSMJ NUS-NSMJ-JPN-1";2;"Verified" +"0717";"Super Mario 64 (USA)";"8388608";"3CE60709";"20B854B239203BAF6C961B850A4A51A2";"NSME NUS-NSME-USA";3;"Verified" +"0718";"Super Robot Spirits (Japan)";"16777216";"8C9216C1";"3EC3F83EAB22702E146C467EB1DB45FA";"NSSJ NUS-NSSJ-JPN";1;"Trusted" +"0719";"Super Robot Taisen 64 (Japan)";"33554432";"85DF2771";"3F4B73963ABC91CEE59C416063EFD4AE";"NS4J NUS-NS4J-JPN";1;"Trusted" +"0720";"Super Smash Bros. (Australia)";"16777216";"E96779FA";"694DEA68DBF1C3F06FF0476ACF2169E6";"NALU NUS-NALU-AUS";1;"Trusted" +"0721";"Super Smash Bros. (Europe) (En,Fr,De)";"33554432";"45A91CB1";"5E54C6C563B09C107F86FB33E914EF81";"NALP NUS-NALP-EUR";2;"Verified" +"0722";"Super Smash Bros. (USA)";"16777216";"EB97929E";"F7C52568A31AADF26E14DC2B6416B2ED";"NALE NUS-NALE-USA";2;"Verified" +"0723";"Super Speed Race 64 (Japan)";"4194304";"0F879A70";"6B5D93B3566E96147009D1AC4FB15C97";"NLCJ NUS-NLCJ-JPN";1;"Trusted" +"0724";"Supercross 2000 (Europe) (En,Fr,De)";"16777216";"CB5482EC";"6D58A01EF7A7A7C779D2A66315992C5F";"NSXP NUS-NSXP-EUR";1;"Trusted" +"0725";"Supercross 2000 (USA)";"16777216";"094E2A48";"60347200A1A7CABC0D849EE69EC51DF7";"NSXE ";0;"Not verified" +"0726";"Superman (Europe) (En,Fr,De,Es,It,Nl)";"8388608";"BCA4FF8C";"5AB39F2D7A144E1BA243DF059560E878";"NSPP NUS-NSPP-EUR";1;"Trusted" +"0727";"Superman - The New Superman Aventures (USA) (En,Fr,Es)";"8388608";"437E3677";"3F64B4F72E61225EF3AE93976C9BFC7C";"NSPE ";0;"Not verified" +"0728";"Susume! Taisen Puzzle Dama - Toukon! Marutama Chou (Japan)";"8388608";"4CD21372";"26F4CA20F7B9C88199AC046C57E282B4";"NPZJ NUS-NPZJ-JPN";1;"Trusted" +"0729";"Tarzan (Europe)";"16777216";"7737ED9E";"BD1DE2FC1CF31096423563A40ECBF933";"NTAP NUS-NTAP-UKV";1;"Trusted" +"0730";"Tarzan (France)";"16777216";"99C7649D";"5D82E903F65341487DDC11AF80AD607A";"NTAF ";0;"Not verified" +"0731";"Tarzan (Germany)";"16777216";"0B0954C5";"DF3CDD959E8C63B45F557FC197CE0E63";"NTAD ";0;"Not verified" +"0732";"Tarzan (USA)";"16777216";"C38CA641";"EAE7E0EE5328ED9F13B9CF9990189928";"NTAE ";0;"Not verified" +"0733";"Taz Express (Europe) (En,Fr,De,Es,It,Nl)";"12582912";"0712C306";"192B715E8BC5972A4986DF21DC8BF357";"NTXP NUS-NTXP-UKV";1;"Trusted" +"0734";"Telefoot Soccer 2000 (France)";"16777216";"7BD20931";"7F244AFF8D729417E32B6A5B299AFDA5";"NWKF ";0;"Not verified" +"0735";"Tetris 64 (Japan) (En)";"8388608";"F128CD17";"7C8EFCF4FBA28F9F5B5EA10A71283BF3";"NT6J NUS-NT6J-JPN";1;"Trusted" +"0736";"Tetrisphere (Europe)";"8388608";"7CB31B0F";"765A330D5CE2DBE7120C6C8E18A1487D";"NTPP NUS-NTPP-EUR";1;"Trusted" +"0737";"Tetrisphere (USA)";"8388608";"70A3A5CE";"3F88078E2D9DBF6C9372F6373CF9AE09";"NTPE ";0;"Not verified" +"0738";"TG Rally 2 (Europe)";"12582912";"135C8EB0";"ACD0118AC4709DB3943B3D35112C2001";"NL2X NUS-NL2X-UKV";2;"Verified" +"0739";"Tigger's Honey Hunt (Europe) (En,Fr,De,Es,It,Nl,Da)";"16777216";"D82D5736";"A09663B596F348D28AF846A51375EB81";"NT9P NUS-NT9P-FRA";1;"Trusted" +"0740";"Tigger's Honey Hunt (USA)";"16777216";"68C2AC8F";"F8636514B5B0EDEBF376C3111D24417A";"NT9E ";0;"Not verified" +"0741";"Tom and Jerry in Fists of Furry (Europe) (En,Fr,De,Es,It,Nl)";"12582912";"9EA8A3B8";"46BE5D00682FCC1F7FC0FBA507E8E5C1";"NTJP NUS-NTJP-EUR";1;"Trusted" +"0742";"Tom and Jerry in Fists of Furry (USA)";"12582912";"6D685B83";"A63A9AF85BE8BB47C1741B8A37115354";"NTJE ";0;"Not verified" +"0743";"Tom Clancy's Rainbow Six (Europe)";"16777216";"4B71E083";"1B991CF41C70FF2C92FFBEFACABE8D03";"NR6P NUS-NR6P-UKV";1;"Trusted" +"0744";"Tom Clancy's Rainbow Six (France)";"16777216";"BBF7B6A8";"15E4C1B4F3F459D4CAA7F7E2CF0C95DA";"NR6F NUS-NR6F-FRA";1;"Trusted" +"0745";"Tom Clancy's Rainbow Six (Germany)";"16777216";"5D73E788";"FDC76A53B1056D3E50EA6A3E295FE4D1";"NR6D ";0;"Not verified" +"0746";"Tom Clancy's Rainbow Six (USA)";"16777216";"53B0CC13";"80F3B1ABD9FB9AE73997489DB185A74D";"NR6E ";0;"Not verified" +"0747";"Tonic Trouble (Europe) (En,Fr,De,Es,It)";"16777216";"B4322403";"3D3573A855835A98DE29D598C35590E0";"NTTP NUS-NTTP-EUR";1;"Trusted" +"0748";"Tonic Trouble (USA) (Rev 1)";"16777216";"1C04BA12";"7D3E935156844DE0002DB875E1076A5C";"NTTE ";0;"Not verified" +"0749";"Tony Hawk's Skateboarding (Europe)";"12582912";"39E4F766";"C9E9C4A18B1540C6B4111331D7C663B8";"NTFP NUS-NTFP-UKV, NUS-NTFP-AUS";2;"Verified" +"0750";"Tony Hawk's Pro Skater (USA)";"12582912";"F5C1B64F";"5ED7E392198A5FA56EE37EA9E93A8D50";"NTFE ";0;"Not verified" +"0751";"Tony Hawk's Pro Skater (USA) (Rev 1)";"12582912";"6182A092";"AFF424A1883DC7BB92C7B2EBE9342F85";"NTFE ";1;"Trusted" +"0752";"Tony Hawk's Pro Skater 2 (Europe)";"16777216";"A1207132";"6BE030475C4DB52F273EF8A02B4DAFA8";"NTQP NUS-NTQP-EUR";1;"Trusted" +"0753";"Tony Hawk's Pro Skater 2 (USA)";"16777216";"80AA83F3";"29974692808C112B306FBD259273DC96";"NTQE ";0;"Not verified" +"0754";"Tony Hawk's Pro Skater 3 (USA)";"16777216";"62A8CE7D";"9D4891BF26881C4541171B0235015FD4";"N3TE ";0;"Not verified" +"0755";"Top Gear Hyper Bike (Europe)";"16777216";"BAE57EA7";"0072538EF925645DB310F8E23A480B89";"NGBP NUS-NGBP-EUR";1;"Trusted" +"0756";"Top Gear Hyper Bike (Japan)";"16777216";"09B2CDA1";"4347174BB415CA970F2D50DF2973F656";"NGBJ NUS-NGBJ-JPN";1;"Trusted" +"0757";"Top Gear Hyper-Bike (USA)";"16777216";"6EEBC26A";"7258F4AB367B025C95A4F476C461E717";"NGBE ";0;"Not verified" +"0758";"Top Gear Overdrive (Europe)";"12582912";"0CC70580";"6C65A252F227AEF18DF2DD3CE04CC821";"NRCP NUS-NRCP-EUR";1;"Trusted" +"0759";"Top Gear Overdrive (Japan)";"12582912";"81AAFC2B";"B5691794A851D8B603F0C741D44AA244";"NRCJ NUS-NRCJ-JPN";1;"Trusted" +"0760";"Top Gear Overdrive (USA)";"12582912";"F3E0FF21";"7818696426C0A429FBFCCC4EFE8D5570";"NRCE ";0;"Not verified" +"0761";"Top Gear Rally (Europe)";"8388608";"40B3BB21";"1698508F521280D0A80E078EC981D4AC";"NTRP NUS-NTRP-UKV";1;"Trusted" +"0762";"Top Gear Rally (Japan)";"8388608";"C6707CD6";"6E0AF13DCEFEE6A11C4D7262206D6D2D";"NTRJ NUS-NTRJ-JPN";1;"Trusted" +"0763";"Top Gear Rally (USA)";"8388608";"137287F5";"6F7030284B6BC84A49E07DA864526B52";"NGRE ";0;"Not verified" +"0764";"Top Gear Rally 2 (Europe)";"12582912";"CB294D39";"44C4566572DC0662D4299AB5B19043AE";"NL2P NUS-NL2P-EUR";1;"Trusted" +"0765";"Top Gear Rally 2 (Japan)";"12582912";"AA136E07";"B10D781EC625CA45713FD34E5096C24A";"NL2J NUS-NL2J-JPN";1;"Trusted" +"0766";"Top Gear Rally 2 (USA)";"12582912";"914CF9C4";"1FA409FCAC007DDECCC4CF439A0D8DAE";"NL2E ";0;"Not verified" +"0767";"Toy Story 2 - Buzz Lightyear to the Rescue! (Europe)";"12582912";"59574CB9";"5F2C9E5E39AB09311D96E6C751184B6B";"NTHP NUS-NTHP-UKV";1;"Trusted" +"0768";"Toy Story 2 - Buzz l'Eclair a la Rescousse! (France)";"12582912";"FB4BEA9A";"FA0F12C15B3655F9F56888C3249B1CED";"NTHF ";0;"Not verified" +"0769";"Toy Story 2 - Captain Buzz Lightyear auf Rettungsmission! (Germany)";"12582912";"C5E4C89F";"3F40F37B0464DD065067523FB21016DD";"NTHD ";0;"Not verified" +"0770";"Toy Story 2 - Buzz Lightyear to the Rescue! (USA)";"12582912";"B9570841";"B44E9C2D9D2F2DE3AF4793B824CCF936";"NTHE ";0;"Not verified" +"0771";"Transformers - Beast Wars Metals 64 (Japan)";"12582912";"338F1D45";"3D22D5BD7997293612ECDD3046BEBA13";"NTBJ NUS-NTBJ-JPN";1;"Trusted" +"0772";"Transformers - Beast Wars Transmetals (USA)";"16777216";"85138B5A";"6D38909FAA2840FC409AFA221489DE49";"NOHE ";0;"Not verified" +"0773";"Triple Play 2000 (USA)";"16777216";"785DD0F8";"6F2C37A20E6ECCB657FBFC4BA36A34BB";"N3PE ";0;"Not verified" +"0774";"Tsumi to Batsu - Hoshi no Keishousha (Japan)";"33554432";"CA2E5E49";"A0657BC99E169153FD46AECCFDE748F3";"NGUJ NUS-NDYJ-JPN";4;"Verified" +"0775";"Turok - Dinosaur Hunter (Europe)";"8388608";"E8525687";"13FAA58604597E4EDC608070F8E0AE24";"NTUP NUS-NTUP-EUR";1;"Trusted" +"0776";"Turok - Dinosaur Hunter (Europe) (Rev 1)";"8388608";"C2353283";"992BA72F4A1E9C51934FF345CDD0D90C";"NTUP ";0;"Not verified" +"0777";"Turok - Dinosaur Hunter (Europe) (Rev 2)";"8388608";"312AF877";"548FC0E6035B65BC2108255039859934";"NTUP NUS-NTUP-EUR-1";1;"Trusted" +"0778";"Turok - Dinosaur Hunter (Germany)";"8388608";"64631FF9";"0C0BFD1038EDA4F5C958DC362CDFF2D6";"NTUD ";0;"Not verified" +"0779";"Turok - Dinosaur Hunter (USA)";"8388608";"26C4F597";"AE5107EFDD3C210E1EDD4ACD9B3CAC31";"NTUE NUS-NTUE-USA";1;"Trusted" +"0780";"Turok - Dinosaur Hunter (USA) (Rev 1)";"8388608";"7F2476F4";"37260287D59FE4EC6049C1D22B5614E6";"NTUE ";0;"Not verified" +"0781";"Turok - Dinosaur Hunter (USA) (Rev 2)";"8388608";"8C3BBC00";"039875B92C0E4FEF9797EC1744877B17";"NTUE ";0;"Not verified" +"0782";"Turok - Legenden des Verlorenen Landes (Germany)";"8388608";"B937874F";"72A6AA28608EE93A1CB6FEB0A5F4C28C";"NRWD NUS-NRWD-NOE";2;"Verified" +"0783";"Turok - Rage Wars (Europe)";"8388608";"82B1E116";"DBA166A42710F40DC78DC52EB37B0BE6";"NRWP NUS-NRWP-UKV";2;"Verified" +"0784";"Turok - Rage Wars (Europe) (En,Fr,It)";"8388608";"F4A2862B";"241CF94BED487FFF62FFB7B846DA46AB";"NRWX NUX-NRWX-EUR";1;"Trusted" +"0785";"Turok - Rage Wars (USA)";"8388608";"422872A2";"CF5B28578FD62FA1FF8690079F5D68F5";"NRWE ";0;"Not verified" +"0786";"Turok 2 - Seeds of Evil (Europe)";"33554432";"E2D34BFE";"E5A39521FA954EB97B96AC2154A5FD7A";"NT2P NUS-NT2P-EUR";1;"Trusted" +"0787";"Turok 2 - Seeds of Evil (Europe) (En,Fr,Es,It)";"33554432";"1FEBDE32";"144B10A484A22367FD2679529DBD2FED";"NT2X NUS-NT2X-EUR";2;"Verified" +"0788";"Turok 2 - Seeds of Evil (Europe) (Demo) (Kiosk)";"12582912";"4E29B234";"CE72237707F481CFE97FDE330C2AFCD6";"NTYP NUS-NTYP-UKV";1;"Trusted" +"0789";"Turok 2 - Seeds of Evil (Germany)";"33554432";"C07877B6";"B932116C967795076B5C112841AB4427";"NT2D NUS-NT2D-NOW";1;"Trusted" +"0790";"Turok 2 - Seeds of Evil (USA)";"33554432";"FF5E7636";"FAD4DA8E17CE12F68CDF29180CDD4A90";"NT2E NUS-NT2E-USA";2;"Verified" +"0791";"Turok 2 - Seeds of Evil (USA) (Demo) (Kiosk)";"12582912";"8D5B9BD0";"3BD42F6AEC477C056E1AFEBB3515495C";"NTYE NUS-NTYE-USA";1;"Trusted" +"0792";"Turok 2 - Seeds of Evil (USA) (Rev 1)";"33554432";"57F1FBF5";"166221365DB70D446C4206083D422DD1";"NT2E NUS-NT2E-USA";1;"Trusted" +"0793";"Turok 3 - Shadow of Oblivion (Europe)";"33554432";"98D3114C";"279EC83BD60A3CCE69A1DB22B0A5C318";"NTKP NUS-NTKP-EUR";2;"Verified" +"0794";"Turok 3 - Shadow of Oblivion (USA)";"33554432";"CB297224";"1211C556D77B169D81A666A9661E1777";"NTKE ";0;"Not verified" +"0795";"Turok 3 - Shadow of Oblivion (Europe) (Beta) (2000-07-10)";"33554432";"3CD1F9AF";"C38ACBAE773CC3845EA354421E171998";"NSED ";0;"Not verified" +"0796";"Twisted Edge - Snowboarding (Europe)";"12582912";"BF0C1291";"420C9FDBAE15767C5E584070209FF253";"NSBP NUS-NSBP-HOL";1;"Trusted" +"0797";"Twisted Edge - Extreme Snowboarding (USA)";"12582912";"BFBCC038";"9DF6C2C97FA34A978EF3CB77631536FE";"NSBE ";0;"Not verified" +"0798";"Utchan Nanchan no Hono no Challenger - Denryuu Ira Ira Bou (Japan)";"8388608";"50CBE8A6";"FFEB5C1A85BABBBE60F2FEBA2B35C893";"NIRJ NUS-NIRJ-JPN";1;"Trusted" +"0799";"V-Rally Edition 99 (Europe) (En,Fr,De)";"12582912";"0735D7A2";"DCAC12EB5832D4A489188330EB9EC387";"NVLP NUS-NVLP-EUR";2;"Verified" +"0800";"V-Rally Edition 99 (Japan)";"8388608";"02475A01";"8541D7A8737BE09C52D4EC1274DE2A91";"NVYJ NUS-NVYJ-JPN";1;"Trusted" +"0801";"V-Rally Edition 99 (USA)";"8388608";"4803075E";"0C3448A9D85300ACB9C5556F27A84B23";"NVLE ";0;"Not verified" +"0802";"Vigilante 8 (Europe)";"8388608";"0E9BB6D6";"DF011E19F41B1B19C21F1E77E13780B7";"NV8P NUS-NV8P-UKV";2;"Verified" +"0803";"Vigilante 8 (France)";"8388608";"11D23AB3";"FF9F85C50982DBDBA9853A8915321D31";"NV8F ";0;"Not verified" +"0804";"Vigilante 8 (Germany)";"8388608";"17F63C3F";"37B430EE16167831C6C6292994F93277";"NV8D ";0;"Not verified" +"0805";"Vigilante 8 (USA)";"8388608";"330B73E6";"D616ADF6441ACBBD0E6BEF023A8F6031";"NV8E ";0;"Not verified" +"0806";"Vigilante 8 - 2nd Offense (Europe)";"12582912";"691AA971";"47661EF1964524B6319B759913F08B62";"NVGP NUS-NVGP-UKV";1;"Trusted" +"0807";"Vigilante 8 - 2nd Offense (USA)";"12582912";"0293203F";"60CDF7445FAD2ABA05C958F46691501B";"NVGE ";0;"Not verified" +"0808";"Violence Killer - Turok New Generation (Japan)";"33554432";"097F139F";"C3005D76AF42E929E5C67421A19F8235";"NT2J NUS-NT2J-JPN";1;"Trusted" +"0809";"Virtual Chess 64 (Europe) (En,Fr,De,Es,It,Nl)";"4194304";"AAE15243";"E790BE1A5B883BEBA44BC0D2666C65F5";"NVCP NUS-NVCP-EUR";1;"Trusted" +"0810";"Virtual Chess 64 (USA) (En,Fr,Es)";"4194304";"620DE0B7";"F8A35270279B277586D7210FD15134FF";"NVCE ";0;"Not verified" +"0811";"Virtual Pool 64 (Europe)";"4194304";"9A6FB0BC";"AB68FB43F012C1A45AF1DBCC8E8C109C";"NVRP NUS-NVRP-EUR";1;"Trusted" +"0812";"Virtual Pool 64 (USA)";"4194304";"AD628DED";"6D3DB67319DA339DF4B68AD0084904D5";"NVRE ";0;"Not verified" +"0813";"Virtual Pro Wrestling 2 - Oudou Keishou (Japan)";"33554432";"F620835D";"90002501777E3237739F5ED9B0E349E2";"NA2J NUS-NA2J-JPN";1;"Trusted" +"0814";"Virtual Pro Wrestling 64 (Japan)";"16777216";"E6651803";"5E6202200AF40A8F026780EDFE1E15D0";"NVPJ NUS-NVPJ-JPN";1;"Trusted" +"0815";"Waialae Country Club - True Golf Classics (Europe)";"16777216";"6858759A";"5F1906DF4EB30537C2AC2FCBD005907D";"NWLP NUS-NWLP-EUR";1;"Trusted" +"0816";"Waialae Country Club - True Golf Classics (Europe) (Rev 1)";"16777216";"6CB097B3";"F7C1B1EE1CE37CE09AA48C7E0A115EFA";"NWLP ";0;"Not verified" +"0817";"Waialae Country Club - True Golf Classics (USA)";"16777216";"CCAB08D7";"DD8154D507C88694AFD69C7AF16A8CD6";"NWLE ";0;"Not verified" +"0818";"War Gods (Europe)";"12582912";"C73010C8";"D25DD15903BDCB7724A2E8A02561987F";"NWAP NUS-NWAP-FRA";1;"Trusted" +"0819";"War Gods (USA)";"12582912";"FFACF993";"9FF2BA3C8408DE9F0EDB6D764A97C197";"NWAE ";0;"Not verified" +"0820";"Wave Race 64 - Kawasaki Jet Ski (Europe) (En,De)";"8388608";"FB289893";"310659115E9939F219A783ABDD456CE9";"NWRP NUS-NWRP-EUR";4;"Verified" +"0821";"Wave Race 64 - Kawasaki Jet Ski (Japan)";"8388608";"6C93FF83";"B32E555BC1A375256E8A4021A25339BE";"NWRJ NUS-NWRJ-JPN";3;"Verified" +"0822";"Wave Race 64 - Kawasaki Jet Ski (Japan) (Rev 2) (Shindou Edition)";"8388608";"90044C4B";"FF67DF97476C210D158779AE6142F239";"NWRJ NUS-NWRJ-JPN-1";2;"Verified" +"0823";"Wave Race 64 - Kawasaki Jet Ski (USA)";"8388608";"74A7B725";"AE480013F39D4AEC86EEA1B4995600D1";"NWRE ";0;"Not verified" +"0824";"Wave Race 64 - Kawasaki Jet Ski (USA) (Rev 1)";"8388608";"394948C4";"2048A640C12D1CF2052BA1629937D2FF";"NWRE NUS-NWRE-USA";3;"Verified" +"0825";"Wayne Gretzky's 3D Hockey '98 (Europe) (En,Fr,De,Es)";"8388608";"6F6DC53D";"24A0D8C8CABC22116E469476FF6C691D";"NW8P NUS-NW8P-EUR";1;"Trusted" +"0826";"Wayne Gretzky's 3D Hockey '98 (USA)";"8388608";"355FB089";"810F8BC2C8C66BDA3B206C7DD4B6D42F";"NW8E ";0;"Not verified" +"0827";"Wayne Gretzky's 3D Hockey (Europe) (En,Fr,De,Es)";"8388608";"442A4F5F";"319816AAA30E512827BE7B7F81F80D86";"NWGP NUS-NWGP-EUR";2;"Verified" +"0828";"Wayne Gretzky's 3D Hockey (Japan)";"8388608";"485275ED";"61E637B542D5DF178040454075C28E19";"NWGJ NUS-NWGJ-JPN";1;"Trusted" +"0829";"Wayne Gretzky's 3D Hockey (USA)";"8388608";"9781F88D";"6DF0D6259261D0096C90BBC6AA037D8E";"NWGE ";0;"Not verified" +"0830";"Wayne Gretzky's 3D Hockey (USA) (Rev 1)";"8388608";"C2678971";"04E650B7742A69DAE98F125D1B492D78";"NWGE ";0;"Not verified" +"0831";"WCW Backstage Assault (USA)";"33554432";"5DCC2E4E";"02AED169EB579494ACE75D22E10D789B";"NWVE ";0;"Not verified" +"0832";"WCW Mayhem (Europe)";"16777216";"864E066E";"9E943752BCF4FBA9CA3028E596F4EB4A";"NWMP NUS-NWMP-EUR";1;"Trusted" +"0833";"WCW Mayhem (USA)";"16777216";"F1F9B6EB";"87BF3784709CD09693CD7BCC08460C63";"NWME ";0;"Not verified" +"0834";"WCW Nitro (USA)";"12582912";"455B0830";"1E9FEAD701FE5AAAA248D4713891775D";"NW3E ";0;"Not verified" +"0836";"WCW vs. nWo - World Tour (Europe)";"12582912";"37F358EB";"553D8D5347969C66E5D91C3FE35208B9";"NWNP NUS-NWNP-EUU";1;"Trusted" +"0837";"WCW vs. nWo - World Tour (USA)";"12582912";"DFBFC61F";"203C3BBFDD10C5A0B7C5D0CDB085D853";"NWNE ";0;"Not verified" +"0838";"WCW vs. nWo - World Tour (USA) (Rev 1)";"12582912";"A74DA07A";"B7A220B59303D47F3BEAE233CA868CFD";"NWNE ";0;"Not verified" +"0839";"WCW-nWo Revenge (Europe)";"16777216";"8AF0F964";"30C6676EC1D62122F4E7607EF3ABBD41";"NW2P NUS-NW2P-UKV";1;"Trusted" +"0840";"WCW-nWo Revenge (USA)";"16777216";"54CBAAA8";"C1384F3637D7A381B29341FED3EF3CEB";"NW2E ";1;"Trusted" +"0841";"Wetrix (Europe) (En,Fr,De,Es,It,Nl)";"8388608";"EDDC5B06";"A99E2CB6ACEF7A004961DE5F6DFEEFF0";"NWTP NUS-NWTP-EUU";1;"Trusted" +"0842";"Wetrix (Japan)";"4194304";"BAD08218";"E8997BF5662540B184FBF8277D260984";"NWTJ NUS-NWTJ-JPN";1;"Trusted" +"0843";"Wetrix (USA) (En,Fr,De,Es,It,Nl)";"8388608";"50CD1F71";"6E81D3056E409208E4AF2D39A2FF0F03";"NWTE ";0;"Not verified" +"0844";"Wheel of Fortune (USA)";"4194304";"8D3EFA8D";"2ABE36754E866B9B6C4BDCFFC1D11ABF";"NWFE ";0;"Not verified" +"0845";"Wild Choppers (Japan)";"8388608";"D6136DC5";"F85F2A2B6CA64898F0ADD2A78CCDCCF3";"NWCJ NUS-NWCJ-JPN";1;"Trusted" +"0846";"WinBack (Japan)";"16777216";"D35360B0";"EE3D3550ACC463CA57408BF14E541F68";"NWDJ NUS-NWDJ-JPN";1;"Trusted" +"0847";"WinBack - Covert Operations (USA)";"16777216";"64C817C5";"48DA6CDCAB838153CAA2ECC3DD592A65";"NWDE ";0;"Not verified" +"0848";"Wipeout 64 (Europe)";"8388608";"38111048";"5783373634B11F81C86908C3D81CA988";"NWPP NUS-NWPP-EUR";2;"Verified" +"0849";"Wipeout 64 (USA)";"8388608";"4888D0FE";"73C6D87DBE50F73F3B44E0F237A546D7";"NWPE ";0;"Not verified" +"0850";"Wonder Project J2 - Koruro no Mori no Jozet (Japan)";"8388608";"5E8FC436";"0FF1F8628D8FE69582DB54572D2BEA79";"NJ2J NUS-NJ2J-JPN";2;"Verified" +"0851";"World Cup 98 (Europe) (En,Fr,De,Es,It,Nl,Sv,Da)";"12582912";"79F483F7";"3AA263ACA66F3A07BB081B575D66DEEB";"N8WP NUS-N8WP-UKV";1;"Trusted" +"0852";"World Cup 98 (USA) (En,Fr,De,Es,It,Nl,Sv,Da)";"12582912";"13930C26";"4BEF5E9AA9E71205DAC1A7060E778235";"N8WE ";0;"Not verified" +"0853";"World Driver Championship (Europe) (En,Fr,De,Es,It)";"16777216";"76151DF6";"431DE8F6611A8131B536F0EDE1F330D9";"NWOP NUS-NWOP-EUR";1;"Trusted" +"0854";"World Driver Championship (USA)";"16777216";"5E4ACBFA";"7C567A5BB1AD4CBE414FB6BBFF66E336";"NWOE ";0;"Not verified" +"0855";"Worms Armageddon (Europe) (En,Fr,De,Es,It,Nl)";"12582912";"6BFFF27B";"44FC2A7F028F0B6F71B255F672C8B495";"NWUP NUS-NWUP-UKV";1;"Trusted" +"0856";"Worms Armageddon (USA) (En,Fr,Es)";"12582912";"5471AE3B";"491D4DB6718302489BF05FB962C73651";"NADE ";0;"Not verified" +"0857";"WWF Attitude (Europe)";"33554432";"804FE494";"3FDB2E5F9982FDA2C2344A883B8AB6EF";"NTIP NUS-NTIP-EUR";1;"Trusted" +"0858";"WWF Attitude (Germany)";"33554432";"EA5D8359";"B86EC8D19D7D1A50EA900EA10355A735";"NTID ";0;"Not verified" +"0859";"WWF Attitude (USA)";"33554432";"7A4B3686";"9FAF514CB3DBB742C129DEB395DCA342";"NTIE ";0;"Not verified" +"0860";"WWF No Mercy (Europe)";"33554432";"E88D7E16";"D94A8F78178473D4BA4BED62FA8E2E66";"NW4P NUS-NW4P-EUR";1;"Trusted" +"0861";"WWF No Mercy (Europe) (Rev 1)";"33554432";"43BA9E7E";"400A14F132D993F5544F8B008EC136FA";"NW4P NW4P";1;"Trusted" +"0862";"WWF No Mercy (USA)";"33554432";"B33F44F0";"04C492BE7F89FC6F425238BD67629544";"NW4E ";0;"Not verified" +"0863";"WWF War Zone (Europe)";"12582912";"90A0B609";"EBC0CF55FC58845C6EE86CF8B2D87303";"NWWP NUS-NWWP-EUR";1;"Trusted" +"0864";"WWF War Zone (USA)";"12582912";"2FBB5507";"2322DA2B9E7DC74678CD683B7A246B49";"NWWE ";0;"Not verified" +"0865";"WWF WrestleMania 2000 (Europe)";"33554432";"09D710C7";"B75149F87CC5F3A508643AC377F2FCC9";"NWXP NUS-NWXP-EUR";1;"Trusted" +"0866";"WWF WrestleMania 2000 (Japan)";"33554432";"C2034D24";"11EEE2F34BF8DA05A1B8F4FB9FE9F74C";"NWXJ NUS-NWXJ-JPN";1;"Trusted" +"0867";"WWF WrestleMania 2000 (USA)";"33554432";"0B50B4C6";"D9030CA30E4D1AF805ACCE1BFED988CC";"NWXE ";0;"Not verified" +"0868";"Xena - Warrior Princess - The Talisman of Fate (Europe)";"12582912";"D3932F88";"EC2BCB1B7FC7D068BE1F39E79E49A842";"NXFP NUS-NXFP-UKV";1;"Trusted" +"0869";"Xena - Warrior Princess - The Talisman of Fate (USA)";"12582912";"7DA93999";"1AC234649D28F09E82C0D11ABB17F03B";"NXFE ";0;"Not verified" +"0870";"Yakouchuu II - Satsujin Kouro (Japan)";"33554432";"4538C41A";"E24942948F7140EE4260268DB763D0FD";"NYKJ NUS-NYKJ-JPN";1;"Trusted" +"0871";"Yoshi Story (Japan)";"16777216";"4F44A9EF";"DD8A0E5472F13EA87B176F0155FA0C66";"NYSJ NUS-NYSJ-JPN";3;"Verified" +"0872";"Yoshi's Story (Europe) (En,Fr,De)";"16777216";"F9FFC760";"2524E5FB8ED4BB8C831C5AC057E8F344";"NYSP NUS-NYSP-EUR";2;"Verified" +"0873";"Yoshi's Story (USA) (En,Ja)";"16777216";"A1453E0D";"586A092E22604840973B82DFACEAC77A";"NYSE ";1;"Trusted" +"0874";"Yuke Yuke!! Trouble Makers (Japan)";"8388608";"B69D3068";"2AE35BDF163613024D876A09F25063F3";"NTMJ NUS-NTMJ-JPN";1;"Trusted" +"0875";"Zelda no Densetsu - Mujura no Kamen (Japan)";"33554432";"0D33E1DB";"15D1A2217CAD61C39CFECBFFA0703E25";"NZSJ NUS-NZSJ-JPN";2;"Verified" +"0876";"Zelda no Densetsu - Mujura no Kamen (Japan) (Rev 1)";"33554432";"356C2E19";"C38A7F6F6B61862EA383A75CDF888279";"NZSJ NUS-NZSJ-JPN";2;"Verified" +"0877";"Zelda no Densetsu - Toki no Ocarina (Japan)";"33554432";"D423E8B0";"9F04C8E68534B870F707C247FA4B50FC";"CZLJ NUS-CZLJ-JPN";1;"Trusted" +"0878";"Zelda no Densetsu - Toki no Ocarina (Japan) (Rev 1)";"33554432";"26E73887";"1BF5F42B98C3E97948F01155F12E2D88";"CZLJ NUS-CZLJ-JPN";3;"Verified" +"0879";"Zelda no Densetsu - Toki no Ocarina (Japan) (Rev 2)";"33554432";"2B2721BA";"2258052847BDD056C8406A9EF6427F13";"CZLJ NUS-CZLJ-JPN";2;"Verified" +"0880";"Zool - Majuu Tsukai Densetsu (Japan)";"12582912";"756BA26D";"692A33B0D7456FC733A81AB83C20382B";"NMZJ NUS-NMZJ-JPN";1;"Trusted" +"0881";"Waialae Country Club - True Golf Classics (USA) (Rev 1)";"16777216";"C65EE122";"67F75C4DD30922A001C8C32AEB9333AC";"NWLE ";1;"Trusted" +"0882";"WWF No Mercy (USA) (Rev 1)";"33554432";"BACEEA13";"66B8EC24557A50514A814F15429BD559";"NW4E ";0;"Not verified" +"0883";"Pro Mahjong Kiwame 64 (Japan) (Rev 1)";"8388608";"B9BE7B90";"B42F62483F7CA2AAC5AF911175463DB8";"NKMJ NUS-NKMJ-JPN";2;"Verified" +"0884";"Jikkyou Powerful Pro Yakyuu 5 (Japan) (Rev 2)";"16777216";"C02FD9BE";"68A27FBAB060857C267A639931D2C3D6";"NJ5J NUS-NJ5J-JPN";2;"Verified" +"0885";"Nushi Zuri 64 (Japan) (Rev 1)";"16777216";"16414AE4";"D2AF6993E4D657D00520C2CCE741480E";"NUTJ NUS-NUTJ-JPN";1;"Trusted" +"0886";"Wave Race 64 - Kawasaki Jet Ski (Japan) (Rev 1)";"8388608";"54D190A8";"D05C6F3CAF9059B306CC13535E2A8BA6";"NWRJ NUS-NWRJ-JPN";2;"Verified" +"0887";"Toon Panic (Japan) (Proto)";"12582912";"CF396C4E";"B6FD2A048D1F4F324CEBC97BA09872BB";" ";0;"Not verified" +"0888";"Mortal Kombat Trilogy (USA) (Rev 1)";"12582912";"BA64F824";"26129419799DB01BFE79F279EC43B334";"NMKE NUS-NMKE-USA";1;"Trusted" +"0889";"F-1 World Grand Prix (Europe) (Beta)";"12582912";"BEBBC6C8";"9FBE3363DA6C146EF2E29605BCA834FF";"NFWP ";0;"Not verified" +"0890";"Mischief Makers (USA) (Rev 1)";"8388608";"C3300CEF";"2EE917366F64A06472D7622A2A05990E";"NTME ";1;"Trusted" +"0891";"Tommy Thunder (USA) (Proto)";"8388608";"66734854";"99F95AD4A3B0C78B6F58A0FC3AD22DB6";"NNiE ";1;"Trusted" +"0892";"Bokujou Monogatari 2 (Japan) (Rev 1)";"16777216";"20FD2939";"E627B898A7692C08B595A8D2178E34A0";"NYWJ NUS-NYWJ-JPN";1;"Trusted" +"0893";"Bokujou Monogatari 2 (Japan) (Rev 2)";"16777216";"9181C1B7";"24E3EE6A54278DB65C463804F2BB6223";"NYWJ NUS-NYWJ-JPN";1;"Trusted" +"0894";"Jikkyou G1 Stable (Japan) (Rev 1)";"16777216";"6FC0A31B";"482BDD39AD2574B943DB780B12A9BDFB";"NGSJ NUS-NGSJ-JPN";1;"Trusted" +"0895";"Jikkyou J.League 1999 - Perfect Striker 2 (Japan) (Rev 1)";"16777216";"F96C2BE1";"D9F8B84FD6FD21F0B1D750062AC86EFC";"NPSJ NUS-NPSJ-JPN";1;"Trusted" +"0896";"Jikkyou Powerful Pro Yakyuu 5 (Japan) (Rev 1)";"16777216";"7994C2FE";"6EF19BF8D8D6196390745F1B858AC16A";"NJ5J NUS-NJ5J-JPN";1;"Trusted" +"0897";"Jikkyou Powerful Pro Yakyuu 6 (Japan) (Rev 1)";"16777216";"7AB7EBF4";"23EE24FABA0EDFB04B5B0407E174496B";"NP6J NUS-NP6J-JPN";1;"Trusted" +"0898";"Jikkyou Powerful Pro Yakyuu 6 (Japan) (Rev 2)";"16777216";"FCC10356";"03BD8E5CA2B1B7D74398DB4739979282";"NP6J NUS-NP6J-JPN";1;"Trusted" +"0899";"Jikkyou Powerful Pro Yakyuu - Basic Ban 2001 (Japan) (Rev 1)";"16777216";"BC7EF5C1";"F13D0803885B73B4A6B35EDDD40B9253";"NPEJ NUS-NPEJ-JPN";1;"Trusted" +"0900";"Mario Golf 64 (Japan) (Rev 1)";"33554432";"AD1758AC";"570B4F55A3005B709E6ED5D625981B90";"NUS-NMTJ-JPN, NUS-NMFJ-JPN ";3;"Verified" +"0901";"WinBack (Japan) (Rev 1)";"16777216";"927383BB";"9789A48E1D9E42C2F69C59964371089F";"NWDJ NUS-NWDJ-JPN";1;"Trusted" +"0902";"Resident Evil 2 (USA)";"67108864";"832EA1DA";"DD21150CBC21C05420304599EC57411C";"NREE NUS-NREE-USA";1;"Trusted" +"0903";"Star Wars - Rogue Squadron (USA) (Rev 1)";"16777216";"65A8FBA0";"2E458D7CC355D7918493B0E0362C9A20";"NRSE NUS-NRSE-USA-1";1;"Trusted" +"0904";"Ogre Battle 64 - Person of Lordly Caliber (USA) (Rev 1)";"41943040";"410F6510";"EBB4B4D2808DF427AAA3085A41B8A954";"NOBE NUS-N0BE-USA";1;"Trusted" +"0905";"StarCraft 64 (Germany) (Proto)";"33554432";"2B1C9FE4";"356A5D3D59E0ADEF6EFAE6096FC20F77";"NSQD ";0;"Not verified" +"0906";"Shadow Man (Brazil)";"33554432";"61E6642C";"FE2605193736A128AD65DB1C9835A130";"NSDB ";1;"Trusted" +"0907";"Sydney 2000 (Europe) (Proto)";"33554432";"DB7B31B9";"FC32007BA03FF2510020E979C7BDAD4F";" ";0;"Not verified" +"0908";"Sydney 2000 (USA) (Proto)";"33554432";"5B6673AA";"2EEA8D20BEF26F88A5E82FDD39F87E75";" ";0;"Not verified" +"0909";"Taz Express (USA) (Proto) (2000-05-15)";"33554432";"DDE7CFBD";"7A94F94485BD28F0D6D67257050B26D4";"NTXE ";0;"Not verified" +"0910";"California Speed (Europe) (Proto)";"16777216";"D913B95F";"29B79BF5812E5F9E5ECEF073D59F8915";"NCLP ";0;"Not verified" +"0911";"Legend of Zelda, The - Majora's Mask (Europe) (En,Fr,De,Es) (Debug Version)";"67108864";"687D8395";"71FBAE5D2B27926EA54E92CE2FC91622";"NZSP ";0;"Not verified" +"0912";"Dragon Sword 64 (Europe) (Proto)";"9448848";"DCEA9210";"770D0D2BB08235613569667A284BCA2C";"MGVP ";1;"Trusted" +"0913";"South Park (Brazil)";"16777216";"235CAEC6";"D313AF5F8AF4D19F732A1A2C4D4D66BB";"NDTB ";1;"Trusted" +"0914";"F1 Racing Championship (Brazil) (En,Fr)";"16777216";"C05B9184";"44D5F87127053A21DB120BD108B7AC0C";"NFRE ";1;"Trusted" +"0915";"Turok - Dinosaur Hunter (Germany) (Rev 1)";"8388608";"2765DD8F";"388440013641887D85B791CF01729FA8";"NTUD NUS-NTUD-NOE";1;"Trusted" +"0916";"Turok - Dinosaur Hunter (Germany) (Rev 2)";"8388608";"72CA307A";"F0F687B449A9F4B0BFF08104C35EA08C";"NTUD NUS-NTUD-NOE";2;"Verified" +"0917";"Glover 2 (USA) (Proto 2)";"33554432";"400AECC7";"A8567DDABD3672FFF18BC5DF933CF8C7";"NGVE ";1;"Trusted" +"0918";"Toy Story 2 - Captain Buzz Lightyear auf Rettungsmission! (Germany) (Rev 1)";"12582912";"D1906DE4";"A4A2B825797E2059B5DF60D733461F34";"NTHD NUS-NTHD-NOE";1;"Trusted" +"0919";"Turok - Rage Wars (USA) (Rev 1)";"8388608";"E28756F4";"9B2FFE72080B03A5F92EB87EA849CAC4";"NRWE ";1;"Trusted" +"0920";"Scooby-Doo! - Classic Creep Capers (USA) (Rev 1)";"16777216";"CDF86F5E";"01CD9938DAE5DCDD4B264AE7F26C6D4D";"NSYE ";1;"Trusted" +"0921";"Wildwaters (USA) (Proto)";"16777216";"40443C67";"B867880C96C9E8D3130DDE5526C95439";" ";1;"Trusted" +"0922";"Tamiya Racing 64 (USA) (Proto)";"16777216";"1B4C53FA";"CECAB8DF02C02F38C9CF1BDD57B1DA00";" ";1;"Trusted" +"0923";"Mini Racers (USA) (Ja) (Proto)";"16777216";"F59F881B";"9C6CF9D3CB5852439DE4EF4A399253B9";" ";1;"Trusted" +"0924";"Aidyn Chronicles - The First Mage (USA) (Rev 1)";"33554432";"D5051096";"E8CDDF0C52B72453D52DA385322DFE15";"NAYE NUS-NAYE-USA";1;"Trusted" +"0925";"Glover (USA) (Beta) (1998-07-16)";"67108864";"7A866221";"43C3375BBD6496B6C51D08EC193BC8ED";" ";1;"Trusted" +"0926";"Legend of Zelda, The - Ocarina of Time (USA) (Collector's Edition)";"33554432";"346DE3AE";"CD09029EDCFB7C097AC01986A0F83D3F";"CZLE ";1;"Trusted" +"0927";"Legend of Zelda, The - Ocarina of Time - Master Quest (USA) (GameCube)";"33554432";"C744C4DB";"DA35577FE54579F6A266931CC75F512D";"CZLE ";0;"Not verified" +"0928";"Legend of Zelda, The - Majora's Mask (USA) (Collector's Edition)";"33554432";"B008458F";"AC0751DBC23AB2EC0C3144203ACA0003";"NZSE ";1;"Trusted" +"0929";"Legend of Zelda, The - Ocarina of Time (Europe) (Collector's Edition)";"33554432";"3FBD519F";"2C27B4E000E85FD78DBCA551F1B1C965";"NZLP ";1;"Trusted" +"0930";"Zelda no Densetsu - Toki no Ocarina GC (Japan) (GameCube)";"33554432";"1C6CE8CB";"33FB7852C180B18EA0B9620B630F413F";"CZLJ ";0;"Not verified" +"0931";"Legend of Zelda, The - Ocarina of Time - Master Quest (Europe) (GameCube)";"33554432";"832D6449";"1618403427E4344A57833043DB5CE3C3";"NZLP ";0;"Not verified" +"0932";"Zelda no Densetsu - Toki no Ocarina GC Ura (Japan) (GameCube)";"33554432";"122FF261";"69895C5C78442260F6EAFB2506DC482A";"CZLJ ";0;"Not verified" +"0933";"Legend of Zelda, The - Majora's Mask (Europe) (Collector's Edition)";"33554432";"12836E19";"DBE9AF0DB46256E42B5C67902B696549";"NZSP ";1;"Trusted" +"0934";"Zelda no Densetsu - Mujura no Kamen (Japan) (Collector's Edition)";"33554432";"B9BF76DF";"D3929AADF7640F8C5B4CE8321AD4393A";"NZSJ ";1;"Trusted" +"0935";"Turok 3 - Shadow of Oblivion (Europe) (Beta) (2000-05-31)";"33554432";"66E63BBC";"03D17AA3DC7663502017D3CC5A19AA8B";" ";1;"Trusted" +"0936";"San Francisco Rush - Extreme Racing (USA) (En,Fr,De) (Rev 1)";"8388608";"886C5753";"5B127E6B090A0B3F68A114D4D89323D4";"NSFE NUS-NSFE-USA";1;"Trusted" +"0937";"Pokemon Stadium (USA) (Rev 2)";"33554432";"235B1842";"6DC6820CEF755FC1253D06DF45C9BD2A";"NPOE ";2;"Verified" +"0938";"NFL Blitz 2000 (USA) (Rev 1)";"16777216";"B591CFEA";"DD96BB80E652CD1CF23CA4B8294BA7B5";"NBIE ";2;"Verified" +"0939";"Excitebike 64 (USA) (Rev 1)";"16777216";"143926CE";"21954E4E404D9E87DBDB87DD309F3E94";"NMXE ";1;"Trusted" +"0940";"Glover 2 (USA) (Proto 1)";"33554432";"D0809AFB";"4E15D92CCA23E1A01BB65246431B5C5A";"NGVE ";1;"Trusted" +"0941";"Superman (USA) (Beta) (1998-09-06)";"12582912";"719171F1";"1170033980ADC1981505CF958F35F1EB";" ";1;"Trusted" +"0942";"Chameleon Twist (USA) (Rev 1)";"12582912";"7FF42FD0";"D8A88ACFCD89DF7A59D9A1B050FDA740";"NCTE ";1;"Trusted" +"0943";"Castlevania (USA) (Rev 1)";"12582912";"274D3493";"CE71D1CE0A2B6D597F72CB4FC08F5844";"ND3E ";1;"Trusted" +"0944";"Toy Story 2 - Buzz Lightyear to the Rescue! (USA) (Rev 1)";"12582912";"C81F3321";"CD61A7FDBD7297733B246204E8360D83";"NTHE NUS-NTHE-USA";1;"Trusted" +"0945";"Star Wars - Shadows of the Empire (USA) (Beta) (1996-10-15)";"12582912";"28368603";"4076973CFDA277FC876E9F066CC73DEB";"NSWE ";1;"Trusted" +"0946";"Indiana Jones and the Infernal Machine (Australia) (Proto)";"33554432";"337219BE";"63D7AB29BA3DFC5D5B12C1D9C5832355";"NIJP ";0;"Not verified" +"0947";"Duke Nukem 64 (Europe) (Beta)";"8388608";"4A82D036";"BB2472B3F8A41FBF3AEC3CCEF7EA8C78";"NMSE ";1;"Trusted" +"0948";"Conker's Bad Fur Day (USA) (Beta) (ECTS 2000) (2000-08-26)";"67108864";"E1CDA95A";"13ECBAEEF7111D5343D73A80E03E353A";"NFUE ";1;"Trusted" +"0949";"Mega Man 64 (USA) (Beta)";"67108864";"D3562B57";"CD0824E9405185AF434837BA1C8C0CD5";" ";1;"Trusted" +"0952";"007 - The World Is Not Enough (USA) (Beta)";"33554432";"F0B6BF59";"12BD3FAFB4E064B6B0C07B7EE156243B";"NO7E ";1;"Trusted" +"0953";"Dongwu Senlin (China) (iQue)";"16138240";"4703C2DD";"AF83E0CF36298E62E9EB2EB8C89AA710";" ";0;"Not verified" +"0954";"F-Zero X - Weilai Saiche (China) (iQue)";"16334848";"3D30385A";"4024477AAED7DD5FF5EA60BF568123B7";" ";0;"Not verified" +"0955";"Shen You Mario (China) (iQue)";"8060928";"08B48CA1";"29047FBA820695BD14C5BD7AA1AA4400";" ";0;"Not verified" +"0956";"Mario Kadingche (China) (v4) (iQue)";"12533760";"EA0813C7";"78771BEB349D481E69BAA9225B36D63A";" ";0;"Not verified" +"0957";"Mario Kadingche (China) (v5) (iQue)";"12533760";"47E69F28";"5EA0ED74CF1DDAAA964D728A129E7CF9";" ";0;"Not verified" +"0958";"Mario Yisheng (China) (iQue)";"3358720";"61848015";"DD291B9C65420FD892107F6C665B7A45";" ";0;"Not verified" +"0959";"Rentiantang Mingxing - Daluan Dou (China) (iQue)";"16793600";"D86E2EDF";"7B815846EC91E6C4A8B8BAA0CE4078F0";" ";0;"Not verified" +"0960";"Shuishang Motuo (China) (iQue)";"8159232";"30F45E87";"1F83663B2C84512FC3706A6CACC1A9F3";" ";0;"Not verified" +"0961";"Xingji Huohu (China) (v5) (iQue)";"11829248";"0D28C3ED";"B2242070800BF82E78CE33DC92A1DB84";" ";0;"Not verified" +"0962";"Yaoxi Gushi (China) (iQue)";"16023552";"9A579A29";"F7AA4F819F41CB4236792A8145684627";" ";0;"Not verified" +"0963";"Yueye Motuo (China) (iQue)";"16072704";"D7AD44FD";"F4B41863440137C6A3BA22942F3E0DA2";" ";0;"Not verified" +"0964";"Zelda Chuanshuo Shiguang Zhi Di (China) (iQue)";"29868032";"F45C5532";"0AB48B2D44A74B3BB2D384F6170C2742";" ";0;"Not verified" +"0965";"Zelda Chuanshuo Shiguang Zhi Di (China) (Chinese Traditional) (iQue)";"29868032";"E8E3575F";"A475E9F8615513666A265C464708AE8F";" ";0;"Not verified" +"0966";"Zhi Pian Mario (China) (iQue)";"41943040";"18C02AD5";"8F8F50AB00C4089AE32C6B9FEFD69543";" ";0;"Not verified" +"0967";"Zuhe Jiqiren (China) (iQue)";"16793600";"76742798";"33F2BC6847985F96DE8177147DCD3B85";" ";0;"Not verified" +"0968";"Zui Yu Fa Diqiu De Jicheng Zhe (China) (iQue)";"33636352";"E00DB418";"5BA3AA2953C47C8B2E615B21E60F2F17";" ";0;"Not verified" +"0969";"F-Zero X - Weilai Saiche (China) (v2) (iQue) (Manual)";"180224";"88331AD2";"8400C0875E16F599C1B7FC433E339D58";" ";0;"Not verified" +"0970";"F-Zero X - Weilai Saiche (China) (v4) (iQue) (Manual)";"294912";"8EBC6ED5";"9729FC397E8D178EA974869E07DF0502";" ";0;"Not verified" +"0971";"Shen You Mario (China) (v6) (iQue) (Manual)";"409600";"A5B65A64";"B4BD31B13E474DF29922150E1EF3F328";" ";0;"Not verified" +"0972";"Mario Kadingche (China) (v2) (iQue) (Manual)";"245760";"1AD7F15B";"C70AF6197E67B310F316C34CCED64C19";" ";0;"Not verified" +"0973";"Mario Kadingche (China) (v6) (iQue) (Manual)";"425984";"ABDBF9F4";"76176B237D4F60E59F98D247283D9365";" ";0;"Not verified" +"0974";"Mario Yisheng (China) (v2) (iQue) (Manual)";"294912";"B862A4FE";"FE49420725F9C1CF0F15BA5682D27709";" ";0;"Not verified" +"0975";"Mario Yisheng (China) (v4) (iQue) (Manual)";"393216";"84A5F66C";"B524D10A8A26764EB2198ACEC3F09948";" ";0;"Not verified" +"0976";"Rentiantang Mingxing - Daluan Dou (China) (iQue) (Manual)";"294912";"007F3759";"3ABC2D34AD3CE623F4ED8F126D30CC80";" ";0;"Not verified" +"0977";"Shuishang Motuo (China) (v2) (iQue) (Manual)";"311296";"B7547F54";"A66FEE7AF89D58B24A25C346A0E90172";" ";0;"Not verified" +"0978";"Shuishang Motuo (China) (v4) (iQue) (Manual)";"491520";"3EF9368E";"926B1495565435DA0AF29BB660532DA3";" ";0;"Not verified" +"0979";"Xingji Huohu (China) (v4) (iQue) (Manual)";"229376";"28CDA0EB";"3DCD5E15AA35A73C68DB4F56E2670FA2";" ";0;"Not verified" +"0980";"Yaoxi Gushi (China) (v2) (iQue) (Manual)";"196608";"4B5AE477";"DF8164DA753C9EF0B7C2611F584E81A9";" ";0;"Not verified" +"0981";"Yaoxi Gushi (China) (v4) (iQue) (Manual)";"245760";"5D76A1C1";"D6778D9D560DEC35D8C05AF4738E27AA";" ";0;"Not verified" +"0982";"Yaoxi Gushi (China) (v6) (iQue) (Manual)";"425984";"5CEF9B96";"85A90C61B65B56334E00950210C6CFC4";" ";0;"Not verified" +"0983";"Yueye Motuo (China) (iQue) (Manual)";"262144";"3863DFE0";"876F87C91A4B6339DAA8FC1F41EB7ACD";" ";0;"Not verified" +"0984";"Zelda Chuanshuo Shiguang Zhi Di (China) (v2) (iQue) (Manual)";"278528";"F8D9250D";"9729A68F40F197D4D040FA641FF099E7";" ";0;"Not verified" +"0985";"Zelda Chuanshuo Shiguang Zhi Di (China) (v4) (iQue) (Manual)";"425984";"07E6C6E6";"912628118E67FEA670ED2C63F7A7B003";" ";0;"Not verified" +"0986";"Zhi Pian Mario (China) (v2) (iQue) (Manual)";"376832";"977E9A2F";"C4D652425AA4F2FC1D12564DF01F8A04";" ";0;"Not verified" +"0987";"Zhi Pian Mario (China) (v4) (iQue) (Manual)";"376832";"B370284F";"D9597922207298A87FA46878C017E6DA";" ";0;"Not verified" +"0988";"Zui Yu Fa Diqiu De Jicheng Zhe (China) (iQue) (Manual)";"245760";"F336CC75";"9ABB0F6F79E01FC9A942D6027719C3E4";" ";0;"Not verified" +"0989";"iQue Club (China) (v3) (iQue)";"573440";"6A2C6DCB";"F9190DBAF547D6D3F5F3569ACCF26061";" ";0;"Not verified" +"0990";"Conker's Bad Fur Day (USA) (Beta) (2000-10-25)";"67108864";"4F73408C";"70E9EB9BF2F7BC76CA38CE450BA01C2E";"NFUE ";1;"Trusted" +"0991";"Cruis'n USA (USA) (Wii Virtual Console)";"8388608";"8FC564F9";"41CA21BD737E16BA81168982B74276F1";" ";1;"Trusted" +"0992";"Legend of Zelda, The - Majora's Mask (Europe) (En,Fr,De,Es) (Wii Virtual Console)";"33554432";"A83ABF72";"609B47B79DA21F3DF9B31D06C95C09A1";" ";1;"Trusted" +"0993";"Star Fox 64 (Japan) (Wii Virtual Console)";"12582912";"6508D4AD";"91FC4C63CA613530DF22C8BB810CB2C3";" ";1;"Trusted" +"0994";"Paper Mario (Europe) (En,Fr,De,Es) (Wii Virtual Console)";"50331648";"9FC00CE3";"3B5C99F5E7DBA06BF8237E58F6D4196B";" ";1;"Trusted" +"0995";"Mario Party 2 (Europe) (En,Fr,De,Es,It) (Wii Virtual Console)";"33554432";"DCA66040";"4A834D275ABF14A6255AA11BE81E339D";" ";1;"Trusted" +"0996";"Mario Party 2 (Japan) (Wii Virtual Console)";"33554432";"FDC89220";"9E25FFE8FB0931F67B4E42C5F74ECBC0";" ";1;"Trusted" +"0997";"Mario Party 2 (USA) (Wii Virtual Console)";"33554432";"6F45853E";"54765A3B1DCC6EB3C29C1891958DA5E2";" ";1;"Trusted" +"0998";"Mario Tennis (Europe) (Wii Virtual Console)";"16777216";"E9BA8E6B";"D40FB0E87996AF902EFF9C194027FC3B";" ";1;"Trusted" +"0999";"Mario Tennis 64 (Japan) (Wii Virtual Console)";"16777216";"32C58AF3";"137A4E7DD0485EDCCB3BF598B1472D11";" ";1;"Trusted" +"1000";"Mario Tennis (USA) (Wii Virtual Console)";"16777216";"8E85B369";"4731025E850FAF8C0500DC04E1A3BFF2";" ";1;"Trusted" +"1001";"Ogre Battle 64 - Person of Lordly Caliber (USA, Europe) (Wii Virtual Console)";"41943040";"19337B04";"F04C8F511B678301B21C54A27CB08BB9";" ";2;"Verified" +"1005";"Pokemon Puzzle League (Europe) (Wii Virtual Console)";"33554432";"13F996B2";"FBF566693BCA3145D86DF34D18DCDD43";" ";1;"Trusted" +"1006";"Pokemon Puzzle League (France) (Wii Virtual Console)";"33554432";"8671137D";"866D401C51CC05A3188C9A2D4E7BFEE5";" ";1;"Trusted" +"1007";"Pokemon Puzzle League (Germany) (Wii Virtual Console)";"33554432";"00E73008";"45B507AAAF0CCDB6EFE3CD717F0DDB95";" ";1;"Trusted" +"1008";"Pokemon Puzzle League (USA) (Wii Virtual Console)";"33554432";"91623130";"D6F58B98115E78D841089074401AE524";" ";1;"Trusted" +"1009";"Dragon Sword 64 (USA) (Proto) (1999-08-25)";"11891184";"A568CA1B";"64011DD56FF84CF9EB46153E7AECCD26";" ";1;"Trusted" +"1010";"Top Gear Hyper-Bike (USA) (Beta)";"33554432";"00C0278A";"B60D26C2C2242BFF61F76469FC272D2A";" ";1;"Trusted" +"1011";"Die Hard 64 (USA) (Proto) (Level 1)";"33554432";"5E826037";"820929EBBE6FD332AC1720F94B745A8B";" ";1;"Trusted" +"1012";"Die Hard 64 (USA) (Proto) (Level 2)";"33554432";"D1D593CF";"3D1E03B097F2124F8F713013D8219291";" ";1;"Trusted" +"1013";"Die Hard 64 (USA) (Proto) (Level 3)";"33554432";"70943925";"1B28C4CA21648D318BC6DD3EF27BB1FA";" ";1;"Trusted" +"1014";"Turok 3 - Shadow of Oblivion (Europe) (Beta) (2000-06-06)";"33554432";"7946B05A";"69CE88C46A7C829C6F54004DE93EFCEF";" ";0;"Not verified" +"1016";"Perfect Dark (Europe) (Debug Version) (2000-04-26)";"33554432";"B33C4A54";"AD2DE210A3455BA5EC541F0C78D91444";" ";1;"Trusted" +"1017";"Perfect Dark (USA) (Debug Version) (2000-03-22)";"33554432";"B568A9FE";"AA93F4DF16FCEADA399A749F5AD2F273";" ";1;"Trusted" +"1018";"Top Gear Rally 2 (Europe) (Beta) (1999-08-31)";"16777216";"3C77C5D6";"C33CD926E1E71F39F7238AF7B9E0DC5C";" ";1;"Trusted" +"1019";"Wipeout 64 (Europe) (Beta)";"16777216";"944B258F";"7260DA1CECD0D8844C5E29AA63476DEF";" ";1;"Trusted" +"1020";"Zelda no Densetsu - Toki no Ocarina (Japan) (Collector's Edition)";"33554432";"8C5B90C1";"0C13E0449A28EA5B925CDB8AF8D29768";"CZLJ ";1;"Trusted" +"1021";"SpaceStation Silicon Valley (USA) (Rev 1)";"8388608";"E32D9E7B";"F1F1C5E2B895DB63348BC738C0CDC645";"NSVE NUS-NSVE-USA";3;"Verified" +"1022";"Cruis'n World (Europe) (Rev 1)";"12582912";"EBAED1F9";"20DB5E4DDB0CD5B04C4BF09CDC95592F";" ";1;"Trusted" +"1023";"ECW Hardcore Revolution (Germany)";"33554432";"E9CF3D9F";"5D1E41AA28169E71B4919FA08F1ACD9B";" ";1;"Trusted" +"1024";"Mortal Kombat Trilogy (USA) (Beta) (1996-05-13)";"16777216";"EAB22C06";"B6A7B85C123DF4E0B9CC118578DBC9A2";" ";0;"Not verified" +"1025";"Madden NFL 99 (USA) (Rev 1)";"12582912";"56769A44";"5AD80A8EF44DEE1FDC456D66104165B4";"NUS-N9ME-USA NUS-01A-02";1;"Trusted" +"1026";"Top Gear Rally (Asia) (En)";"8388608";"C4BC4DF8";"50195216C8A37F9BD5B2105A40EE8D8F";"NGRX NUS-NGRX-ASM";1;"Trusted" +"1027";"International Superstar Soccer 2000 (USA) (En,Es) (Rev 1)";"16777216";"4C433FDD";"DE9498BE76134BD066AA714CE2C71A16";"NISE NUS-NISE-USA";1;"Trusted" +"1028";"Madden NFL 99 (USA) (Beta) (1998-08-05)";"16777216";"033A2CA6";"5F3D42D5F96191F3CE50D70E0E42127A";" ";1;"Trusted" +"1029";"Pokemon Snap (Japan) (Wii Virtual Console)";"16777216";"A761DAEF";"33FDAB9712D9FEA793A3AE44293999C3";" ";1;"Trusted" +"1030";"Ronaldinho's Soccer 64 (Brazil) (Unl) (Pirate)";"8388608";"C296ECA1";"14F1F43A0314C3E36D9D248E1F03EC2E";" ";1;"Trusted" +"1031";"Ogre Battle 64 - Person of Lordly Caliber (Japan) (Rev 1) (Wii Virtual Console)";"41943040";"991F569C";"55CD360F12BE8063C9E7B6F59F268170";" ";1;"Trusted" +"1032";"Aidyn Chronicles - The First Mage (USA) (Beta) (2000-02-10)";"33554432";"C46D84A0";"CD24763BECFA1D0053E5438B0EF5E75E";" ";0;"Not verified" +"1033";"Aidyn Chronicles - The First Mage (USA) (Beta) (2000-05-09)";"33554432";"ABD43F3F";"CC6EAE9ED582044CC27945684FD396CD";" ";0;"Not verified" +"1034";"Mission - Impossible (Spain) (Rev 1)";"12582912";"E1C470FD";"16A3143DC0E5FE6639F49DB7A51D24D4";"NUS-NMIS-ESP NUS-01A-02";1;"Trusted" diff --git a/docs/n64crc.c b/docs/n64crc.c new file mode 100644 index 0000000..ac7a957 --- /dev/null +++ b/docs/n64crc.c @@ -0,0 +1,242 @@ + + + + + + +n64crc.c + + +
+/* snesrc - SNES Recompiler
+ *
+ * Mar 23, 2010: addition by spinout to actually fix CRC if it is incorrect
+ *
+ * Copyright notice for this file:
+ *  Copyright (C) 2005 Parasyte
+ *
+ * Based on uCON64's N64 checksum algorithm by Andreas Sterbenz
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#define ROL(i, b) (((i) << (b)) | ((i) >> (32 - (b))))
+#define BYTES2LONG(b) ( (b)[0] << 24 | \
+                        (b)[1] << 16 | \
+                        (b)[2] <<  8 | \
+                        (b)[3] )
+
+#define N64_HEADER_SIZE  0x40
+#define N64_BC_SIZE      (0x1000 - N64_HEADER_SIZE)
+
+#define N64_CRC1         0x10
+#define N64_CRC2         0x14
+
+#define CHECKSUM_START   0x00001000
+#define CHECKSUM_LENGTH  0x00100000
+#define CHECKSUM_CIC6102 0xF8CA4DDC
+#define CHECKSUM_CIC6103 0xA3886759
+#define CHECKSUM_CIC6105 0xDF26F436
+#define CHECKSUM_CIC6106 0x1FEA617A
+
+#define Write32(Buffer, Offset, Value)\
+	Buffer[Offset] = (Value & 0xFF000000) >> 24;\
+	Buffer[Offset + 1] = (Value & 0x00FF0000) >> 16;\
+	Buffer[Offset + 2] = (Value & 0x0000FF00) >> 8;\
+	Buffer[Offset + 3] = (Value & 0x000000FF);\
+
+unsigned int crc_table[256];
+
+void gen_table() {
+	unsigned int crc, poly;
+	int	i, j;
+
+	poly = 0xEDB88320;
+	for (i = 0; i < 256; i++) {
+		crc = i;
+		for (j = 8; j > 0; j--) {
+			if (crc & 1) crc = (crc >> 1) ^ poly;
+			else crc >>= 1;
+		}
+		crc_table[i] = crc;
+	}
+}
+
+unsigned int crc32(unsigned char *data, int len) {
+	unsigned int crc = ~0;
+	int i;
+
+	for (i = 0; i < len; i++) {
+		crc = (crc >> 8) ^ crc_table[(crc ^ data[i]) & 0xFF];
+	}
+
+	return ~crc;
+}
+
+
+int N64GetCIC(unsigned char *data) {
+	switch (crc32(&data[N64_HEADER_SIZE], N64_BC_SIZE)) {
+		case 0x6170A4A1: return 6101;
+		case 0x90BB6CB5: return 6102;
+		case 0x0B050EE0: return 6103;
+		case 0x98BC2C86: return 6105;
+		case 0xACC8580A: return 6106;
+	}
+
+	return 6105;
+}
+
+int N64CalcCRC(unsigned int *crc, unsigned char *data) {
+	int bootcode, i;
+	unsigned int seed;
+
+	unsigned int t1, t2, t3;
+	unsigned int t4, t5, t6;
+	unsigned int r, d;
+
+
+	switch ((bootcode = N64GetCIC(data))) {
+		case 6101:
+		case 6102:
+			seed = CHECKSUM_CIC6102;
+			break;
+		case 6103:
+			seed = CHECKSUM_CIC6103;
+			break;
+		case 6105:
+			seed = CHECKSUM_CIC6105;
+			break;
+		case 6106:
+			seed = CHECKSUM_CIC6106;
+			break;
+		default:
+			return 1;
+	}
+
+	t1 = t2 = t3 = t4 = t5 = t6 = seed;
+
+	i = CHECKSUM_START;
+	while (i < (CHECKSUM_START + CHECKSUM_LENGTH)) {
+		d = BYTES2LONG(&data[i]);
+		if ((t6 + d) < t6) t4++;
+		t6 += d;
+		t3 ^= d;
+		r = ROL(d, (d & 0x1F));
+		t5 += r;
+		if (t2 > d) t2 ^= r;
+		else t2 ^= t6 ^ d;
+
+		if (bootcode == 6105) t1 += BYTES2LONG(&data[N64_HEADER_SIZE + 0x0710 + (i & 0xFF)]) ^ d;
+		else t1 += t5 ^ d;
+
+		i += 4;
+	}
+	if (bootcode == 6103) {
+		crc[0] = (t6 ^ t4) + t3;
+		crc[1] = (t5 ^ t2) + t1;
+	}
+	else if (bootcode == 6106) {
+		crc[0] = (t6 * t4) + t3;
+		crc[1] = (t5 * t2) + t1;
+	}
+	else {
+		crc[0] = t6 ^ t4 ^ t3;
+		crc[1] = t5 ^ t2 ^ t1;
+	}
+
+	return 0;
+}
+
+int main(int argc, char **argv) {
+	FILE *fin;
+	int cic;
+	unsigned int crc[2];
+	unsigned char *buffer;
+
+	//Init CRC algorithm
+	gen_table();
+
+	//Check args
+	if (argc != 2) {
+		printf("Usage: n64sums <infile>\n");
+		return 1;
+	}
+
+	//Open file
+	if (!(fin = fopen(argv[1], "r+b"))) {
+		printf("Unable to open \"%s\" in mode \"%s\"\n", argv[1], "r+b");
+		return 1;
+	}
+
+	//Allocate memory
+	if (!(buffer = (unsigned char*)malloc((CHECKSUM_START + CHECKSUM_LENGTH)))) {
+		printf("Unable to allocate %d bytes of memory\n", (CHECKSUM_START + CHECKSUM_LENGTH));
+		fclose(fin);
+		return 1;
+	}
+
+	//Read data
+	if (fread(buffer, 1, (CHECKSUM_START + CHECKSUM_LENGTH), fin) != (CHECKSUM_START + CHECKSUM_LENGTH)) {
+		printf("Unable to read %d bytes of data (invalid N64 image?)\n", (CHECKSUM_START + CHECKSUM_LENGTH));
+		fclose(fin);
+		free(buffer);
+		return 1;
+	}
+
+	//Check CIC BootChip
+	cic = N64GetCIC(buffer);
+	printf("BootChip: ");
+	printf((cic ? "CIC-NUS-%d\n" : "Unknown\n"), cic);
+
+	//Calculate CRC
+	if (N64CalcCRC(crc, buffer)) {
+		printf("Unable to calculate CRC\n");
+	}
+	else {
+		printf("CRC 1: 0x%08X  ", BYTES2LONG(&buffer[N64_CRC1]));
+		printf("Calculated: 0x%08X ", crc[0]);
+		if (crc[0] == BYTES2LONG(&buffer[N64_CRC1]))
+			printf("(Good)\n");
+		else{
+			Write32(buffer, N64_CRC1, crc[0]);
+			fseek(fin, N64_CRC1, SEEK_SET);
+			fwrite(&buffer[N64_CRC1], 1, 4, fin);
+			printf("(Bad, fixed)\n");
+		}
+
+		printf("CRC 2: 0x%08X  ", BYTES2LONG(&buffer[N64_CRC2]));
+		printf("Calculated: 0x%08X ", crc[1]);
+		if (crc[1] == BYTES2LONG(&buffer[N64_CRC2]))
+			printf("(Good)\n");
+		else{
+			Write32(buffer, N64_CRC2, crc[1]);
+			fseek(fin, N64_CRC2, SEEK_SET);
+			fwrite(&buffer[N64_CRC2], 1, 4, fin);
+			printf("(Bad, fixed)\n");
+		}
+	}
+
+	fclose(fin);
+	free(buffer);
+
+	return 0;
+}
+
+ + diff --git a/firmware/DFU_release/INL_NES_PCBv2_0N_FWv2_03_03.dfu b/firmware/DFU_release/INL_NES_PCBv2_0N_FWv2_03_03.dfu new file mode 100644 index 0000000000000000000000000000000000000000..f7a0d1d517bf5404ccb5e7149e72f17df8c08f47 GIT binary patch literal 21189 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 literal 0 HcmV?d00001 diff --git a/firmware/DFU_release/INLretro6_PCBv2_0_FWv2_03_03.dfu b/firmware/DFU_release/INLretro6_PCBv2_0_FWv2_03_03.dfu new file mode 100644 index 0000000000000000000000000000000000000000..715a45cda3b02686a3f405f52362520754c29319 GIT binary patch literal 23973 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 TlA^Gmgm*_1i~0jZSG)=Lf5f6( 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 Ls{giZpX`4D=1y_j literal 0 HcmV?d00001 diff --git a/firmware/Makefile b/firmware/Makefile index 26ef1ef..4250a50 100644 --- a/firmware/Makefile +++ b/firmware/Makefile @@ -1,9 +1,11 @@ #Single Makefile for all devices all: + make -f Make_stm_nes clean all + cp -r build_stm/* build_stmn + make -f Make_stm_inl6 clean all + cp -r build_stm/* build_stm6 make -f Make_avr clean hex - make -f Make_stm_inl6 clean - make -f Make_stm_inl6 avr: make -f Make_avr clean program diff --git a/firmware/build_avr/avr_kazzo.elf b/firmware/build_avr/avr_kazzo.elf index 5a612a8194e41d7742330903b94940ae7e56075e..ab6990a120e30932eb6eb1980352b46145d92b12 100644 GIT binary patch delta 10972 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®X}ZM*Zh}PT2B0=?x0$@)pu7YF5`Rt68J3 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

D*hJBV})+NZ#_}?Hu)jbW!S5#3gIp{@0 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 literal 209640 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

D*hJBV})+NZ#_}?Hu)jbW!S5#3gIp{@0 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 W4(7vym-PD%^b6ysl4Ji-a{mWLu~Ulx literal 209640 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 delta 17 ZcmX@Gjq$)X#swUc1=v|OvvAl10{}gs1(N^( diff --git a/firmware/build_stm6/inlretro_stm_AV03.bin b/firmware/build_stm6/inlretro_stm_AV03.bin new file mode 100644 index 0000000000000000000000000000000000000000..6e0e5a7c69ac10a6f0272184b430d5f773ece696 GIT binary patch literal 23664 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 K4*VbH!2bt}2vI2j literal 0 HcmV?d00001 diff --git a/firmware/build_stmn/inlretro_stm.axf b/firmware/build_stmn/inlretro_stm.axf index a255591bc9cafadb5443f63797756bac621eaf03..13ffc180ff4d9d30d5b7f634254295bacd1d4891 100644 GIT binary patch literal 208936 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 MGZMn( z(taVUUW}+N*ZMzY)w>bZ<^)yL8BBc)XrOO0|kVnn=9(fLCI4K1=31(1t4Lnq53 zMXr34j#z&zhFBVjmm={5wo3aWt?b)S8n*Ej*jf25u%z;1I#9gv0&E^;2t63Jd4t-} zH<^;n8WnEh@UwA}DC&BAos&_TD|ds_IS~-)FBAID~-VDwhyWE?i9D=Nc~xA(Nb%zCDdALDP`1Q9LF-0QfeJ_tVN2JQi{}C$689MC!k344!^tVa>jE$@u zxxylezamTyr?3Z%;uQ99yg}#4#jH`>6I2B60=bGM7YEkSijFSgRya5xH2S4+0gN>D z>`wbj@6GTQy@Jpz+sz1z_%WW@j|BMWI0c5U9%Y*Gyn39~RGXpPH;lJ6b+4h^7l}(c zsc*VTSw&a0{XZ(Dr{B2>hHnxtJB*bV$WS`g1iE9)KKW4xzxO9VUn1+^<(o_${9bmZ zg=XFuR%{LHO&z=|y}MZlQxKYUFdJc29UNmFOt*@1z_8|5XvXtQ32W*O6Ucpr&)3xM zKB4woMN2gGgrYpfEd#>~k3O22VDa+SXq_o;#xb`P~KU9du6Egtm;DL$R;gFm#jg|JB=|6zmGiIRVUxI(d9@^jR8=h$e zZhH_(uS-*PrCv(>JyuSVb=x5jUogaWzK^1%&heGAFt?om`IsVonNd{HNl=_ZeooQ; zyL_0vxa~Z(QsarH=%TiL+t^yPy$bCIj;&SXM?M*2Eb0cer{+V-hC&;avNhxLXh1P? z@jeLhpsdiGDd?JHh5mv~rXS*w!y#oi3ErD!^}Wv8TSTv{y87@}|8Z31~tk$vlK7buqW15?rl*2i9GV^NH#(iT0Y zZG)02@!#c#ZP^iMVK*RR1wI{=*2+KPat99i#;!y41g6N@Io~RTO6bCKRx7O3 z!vPeQRn`M4#Y>H?LE!_dRlu(>;MdTgw8BcQ8=wOoVn8po@=QP2?Nk8+Q^8jAdACbW z7pD9KUA&S1#UuaRBmdGP|Js$URl`i8RsWOGPT<~2-zPrbJ&09J=YJw^BQ>4>iFyW2 z_#=wtI}+o2*0DMw`)Fl#M0Ut>(*H+Nw8nlL#r9Ro(7y9dph_8aikyXCrJ`Q_4c_|e zeILRo8H*NeY=&0l>^Nv2@m0=4z4w3Em%4h8uJXAdEOxmI;7QyPp%%d9J_xl!F84tw z(OR<~6&G9J^Q}ZktS-jRR|!vl2$z4*w|t#YPweP~s2;ZyaOq=rsGQ^Bq#w*X{LnIel8ZvKRGPX&Hxrb@Hp^2`oK)wk6g*~=WwlQC2ldf z5a$nbA?`_xsN_PNf1z54`&ci;`EOMVarF1z%!N3A5f|eA*EEFZDx7~E^PiT3`5kUn zIe`T8q40O!nE~}%P#px9#=1X6;WUJ?c@U04n6e1Z51OaH58t*@NY+|zIl)6W(8

g7682 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 z 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 WsN@exm|M{;IeU8eClT3U_x*qW9q4%g literal 196072 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

=2llQ}MFZmRlX)hy(qP@Y5ftv2No(|^ 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 diff --git a/firmware/build_stmn/inlretro_stm.elf b/firmware/build_stmn/inlretro_stm.elf index f0eaf7c476fdde4192c6288442d4ea4614299f0d..c5d5e32e765697bd1560cfbf2542a99eca5e0b53 100644 GIT binary patch literal 208936 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 MGZMn( z(taVUUW}+N*ZMzY)w>bZ<^)yL8BBc)XrOO0|kVnn=9(fLCI4K1=31(1t4Lnq53 zMXr34j#z&zhFBVjmm={5wo3aWt?b)S8n*Ej*jf25u%z;1I#9gv0&E^;2t63Jd4t-} zH<^;n8WnEh@UwA}DC&BAos&_TD|ds_IS~-)FBAID~-VDwhyWE?i9D=Nc~xA(Nb%zCDdALDP`1Q9LF-0QfeJ_tVN2JQi{}C$689MC!k344!^tVa>jE$@u zxxylezamTyr?3Z%;uQ99yg}#4#jH`>6I2B60=bGM7YEkSijFSgRya5xH2S4+0gN>D z>`wbj@6GTQy@Jpz+sz1z_%WW@j|BMWI0c5U9%Y*Gyn39~RGXpPH;lJ6b+4h^7l}(c zsc*VTSw&a0{XZ(Dr{B2>hHnxtJB*bV$WS`g1iE9)KKW4xzxO9VUn1+^<(o_${9bmZ zg=XFuR%{LHO&z=|y}MZlQxKYUFdJc29UNmFOt*@1z_8|5XvXtQ32W*O6Ucpr&)3xM zKB4woMN2gGgrYpfEd#>~k3O22VDa+SXq_o;#xb`P~KU9du6Egtm;DL$R;gFm#jg|JB=|6zmGiIRVUxI(d9@^jR8=h$e zZhH_(uS-*PrCv(>JyuSVb=x5jUogaWzK^1%&heGAFt?om`IsVonNd{HNl=_ZeooQ; zyL_0vxa~Z(QsarH=%TiL+t^yPy$bCIj;&SXM?M*2Eb0cer{+V-hC&;avNhxLXh1P? z@jeLhpsdiGDd?JHh5mv~rXS*w!y#oi3ErD!^}Wv8TSTv{y87@}|8Z31~tk$vlK7buqW15?rl*2i9GV^NH#(iT0Y zZG)02@!#c#ZP^iMVK*RR1wI{=*2+KPat99i#;!y41g6N@Io~RTO6bCKRx7O3 z!vPeQRn`M4#Y>H?LE!_dRlu(>;MdTgw8BcQ8=wOoVn8po@=QP2?Nk8+Q^8jAdACbW z7pD9KUA&S1#UuaRBmdGP|Js$URl`i8RsWOGPT<~2-zPrbJ&09J=YJw^BQ>4>iFyW2 z_#=wtI}+o2*0DMw`)Fl#M0Ut>(*H+Nw8nlL#r9Ro(7y9dph_8aikyXCrJ`Q_4c_|e zeILRo8H*NeY=&0l>^Nv2@m0=4z4w3Em%4h8uJXAdEOxmI;7QyPp%%d9J_xl!F84tw z(OR<~6&G9J^Q}ZktS-jRR|!vl2$z4*w|t#YPweP~s2;ZyaOq=rsGQ^Bq#w*X{LnIel8ZvKRGPX&Hxrb@Hp^2`oK)wk6g*~=WwlQC2ldf z5a$nbA?`_xsN_PNf1z54`&ci;`EOMVarF1z%!N3A5f|eA*EEFZDx7~E^PiT3`5kUn zIe`T8q40O!nE~}%P#px9#=1X6;WUJ?c@U04n6e1Z51OaH58t*@NY+|zIl)6W(8

g7682 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 z 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 Y3p*?MLlS0Jbc@fP7XC>@cG!LYAMmH>i2wiq literal 196072 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%0DTTfgL^l{!eXB!*)G_@Hwjq_%IhkBB(%D zn-uW6XeGphaI+LgJNjtCxD9XH;T9r7sh~-#B0B)P6-l@TZjjTpd-v|bzUx3ARVu>s zQgxM7k!BnS%MN~m6jc*a;Nn=0sbT}jHl<-~FDsJp3Y<0~c~WTz3|wpM2v~S1e3$4* z>vF;jIN@~pWZoMMLxQvm4#VgP(z&v&v<30 zbvr423=ng8>Iu80{wgQ_JPv_fnwHW>0pl2^%F~lGvVCyycPHSeA_**36e-~aC4C8S zN|7d6lfmleXhelLnzIrP6@dirS@$ECr}wyd;pV zl-hDaHJr*gsSQeD5=2{y*-H@DN_ABoKv{aBc0jZpE`Vm9J+;f3-bZeSmaLlE0|`0o z4B$vkm$M2sv|BQDI*g}#J%>n!)-j@ay1Y;15wG>`f!{I=xDK=bj&>}A(^w%M+$_cy;**_i{M5I9l!5Bp2IST2s z(!dLpM(;^cIe}LN`v*#cH>5!Y!5BmXod++)a8}}J^r#e-6L^WRf1s2egNvyYG<*XN z&yT=Mbp8F&;2mjDK`;hZV&J71&ZiC&vovW`Cq?B1-c{=#C=J$0g9?H%hz5Eiq_;@} zuh?jGM2gA@yb{(wP#QcS4Jru6AR6dNNZ*kLUZ6C>@qT8Xz&m681EoQhG^ijLgJ__X z;BY=eAn*cN{}5>Kpfso;7=vgCl#GQ#2n1ff>K_6PMoNPUf-#7OuoBX>(!i_CG>S-3 zIf0j-`Ugsb&C;NPU<{&x-UjL2(!eV%8a*pT<%F^sCQwr4aL59IcbfXgMxQTBpA`h- zv!XBRv%>ZnO$L2FBYjp9jL%BxbES;4l3?Pj^m_M4U_MS7teyZURU`wTEoOhF;nVOH zIF4UAP~}N=rAZpa1DU47EK8bJ5$KDi19>}&(4U6Ga8FQ??R4hC%RIO^r^ms(ha^J@ zfDun&%`qh!R`mVAg+;vdw8hDu;H9huqC;>Ps_q0lu1J$^YInmifyCRTy7~^lVMYEs z%NwP-@@Bw6MH1+dVG&hS-W$|Oh)!uW@ijQ)oA3slaC&@RqIoH7FC6L(f%mie*Bct# zAPp)Aw@9*va1f5R6@8@W)9Qet-YV&hTD&7Rnmpp*iVkWuJwF47>VP9;IvlTNL=CGM zC!Oo`4l(g_j$4sBgkcex`=Z{wEWL-2R20?J#>+sfM*>v%Ub<<>fL-URA@2imP8-oz5ws^$ zob)(NYRd^T;8YGt%~J}(d{05DS}6!Ep27|?C=DtICdi6DQdvqtFhN%Iky@q{gcdke zbSB6cgOvjsP>RZE{4kU*B_do8*Zo1LWwiNo0z{NRpB2JRm0&all zX6dV(z{_I&W1zu7X;48h2GI`kIY?iY241{0Ix9ux1YXDLA1Dnzlm-<9V-O8A4PLU~ ztolZyN+~KQ@JdquKxt4e4Jru6AQ~tQmPvz3f-#8p*feN_V|fwV;P5mE9g?iZMTNkA zCA|f3haw60NV56?z@th^;N2@U%hv#JC@DdaUQK7TEpUDZ=Oy|`?N!`vUmq!60b`Pg zKY&A$o&fwtk-X0Jsv=FbSq*kAT%5zZXMH5=r9}myE2<&Mv{}W>QW=EveTam>bAkPf znFfAoP(d&T(PE~-IB1w;VwyBACrp!MbuOS-NlO8hiX_xYvbq`2p`?UeO3GVe`<0ZS zNUszbZ4$&RMJ$bhnx{CFA}QVmW0HssaL6DpeSJxhrs(3q4ujK0M{;7F2}5k7!ZrAvzUJ)j`)(uq=#Itd2_ffr7c zf>hZUsUSQHrxc`k$pJnHA9@N>yy?I=0N7O1K1gkcgMx6>Q;=GDp;Qp=g;Q~m8j17o z@Im0odZi$B4~|7cLBPj3w1O1ZMxiie{r{H>79$5Jmm5(@Ts&Q@^YKboAL#%bIuh0f zmZDLaqQn=O1A~UJg70(^fWu%%n)bX`Kzasnsiv0!&*9)X<;2l=R>B!_zK_H>IOzeH zV-#~iFlH*u&v6|qQu8Sj%9ux@_8LCc&ULm3+TbuA!r3B{fEzU32HdLY>wq_F`VjE2 zrXK}9t?3iMS2X=5@O@3=bZ#I4j^U35rf7O5aIU6{f#sTB2i&CTtw5ZOl74Rn-l6Gx zfbVD;N7DlCP-TNdYk_f^#*wr@NYmIR4isy8C9qc0IM*HM(DYW|9!)a1mgCdq(i_wO&0=JYPu4*PSYEJ5lwFeUa#pJfzN9C zdEiT$eg*i3rg7aZa8}bF0MBXK9fq{Q$vOrctLX{Apr-L*|G-R53Cj)UWN7CuQ98J#!7HYZ}xKh)Vz&cH@2exP$e?TCBZ!*Ym?gZYa=?8#MX!
1Y zeVV=lc#ozZ1U{kZqrhi0{T%RRO`inftFSWs!V!oIj%mZUBLbT=jc=L;_G$Vc@IFny z0c3wg``Eq;uNv&CaAgMlZWTfIT7LFgwMtB2$Ayud(4nLRc43eb_9-cWof)KrJC&5c zZVghx<4Q_k2L~zPMI|M$tAmt)Q#l~32<-GAB@B{e6@lF!q=a!wN?=C_DIuh!1a^s# z5|%0{ft@3yg!M{FU^fXV0Uta9Sw&!n2`S-#k`mZ;LP|KLqy%=NkP<#rQo=bUCFma3 z&mMLd93KH-v?R+3y5IG)-%XR^Dnhy>%LySkJXt?`J3W z@SY^g31{JG@d@yp6ju@a=#CLGL5~c6jtrxvxQc+!q0)k&#|uBli*zZjB5=rn1!23A z5;%B3O1NH02^>ZsCETv0gnN~gaG#PA9#>MrlS)e9AcGJH&nYS4WhEt?R8qowN=i7b zq=ZkDl;EJ}#}gyqi$)BWFic4aI3+|WA*iH;kdhK|l$21Yq=aH6B~&UYVYQMHID8>o zLYI;fy5X?6G`Nq19^L#L-L8W}IthB9^WO;ixDpedmt;8sceiOw;HZaa2q%@4!0``K z!aGVz;7AB5;X@@Qa7=`hFi4VBgajoe3{z49$4S@{CMzj{BPOJTX-Z1q*a;~iS4jyR zMIj{=C@F#CDWrrlB_(iVg_N*XNeRtLN@!710!Lfe5)LaVf#WWugh!N=z!4Zy!Z9T! za4d$D@SKtoPAe(ltdbHqKEsyaV8~+y18}5^Af3FDNMFj+|nK_w+{9EU9- zq@)Cn=#UcTDJg+tJEVlAN=o1;4=JHqNeSzfl(0cb2^{%hOE{pUggcd#aF>!2I2(X1 z;Xx%O992@nF(oBDucU+%N=i7Tq=Yw=l)za7!X=zlQUd1>kP-$-vWmc&1f&F9T?JW1 z;G6QHzP3v9Vd|AM+B5 zgu0xujpKX>wDof7a&op+%dMA7mlLtWT5i2uy4K63%c+)rxpX z=i|U%X_^E6i<;&z|CXjXxPPc=4(a;k(&a!tjsqBM_^lnER}@;Yh1rE?thV`sLE)sCri0a4bEiX^x=!<<7la0E?th1 zGqpSmI8W0Y50`4%dbxBt_HEE|j(8oK<~a9&ra8Jjp=pk3`sLE)NcMu3bNu>H(;T&2 zcCtv@AfSG^bVq~MFPARIrD@v6dbxD1mrJ)8`jy(I5~yD;U5+yP<gU`bP`_Nd?DzAuyb!2gE?xHV z>$RLcdzYr!pX;96WzVgo0i6^5VTeXMCKJiis5-wMxfh3B`! z)9G`q^to1et`(kZh38t~dF98iK{1@za@Y*nb~qk1vG%9A+ z7zv!J=@~#Bzvv&oVEk`rvv+`JG|j|(s%fTXFdQp%JaD+C`5CHpn&t+@FEsrt;Io>3 z4tPS-F983j=~sY%(exX@w>6EwMiKajrau7wm!{7F1xkcz7z7-u>0!W8njQ;G(lqx) zj%fN3;1ilY20X6m=YS_PZ9g?#%&t|;u2sygRm`qc%&t|;ZvSF-S{`X_ zTE*;I#q3(e>{`X_vY2&ox>j+zR&lykak^Gj+zR&nyL)0*ORS)9{U@whC`A8MM# z`IM$voX={S#rcw^O>q_=&nyZ)w*EyT_;Irc9A^5D09ZmGZI6#jQO!|L>+NgPFFkM@ z(fF{6$y-CDj74U(BUX?*;VjYZTEx>g*3ry2Am*o~VjDK)nULdv4L8}ot;i#QM-}-D z;17y?5%4!fnsn0pWGSj7q`;}ZKrpl$m4z(!&)4Tr7{|ecld^}a6=FQ zxWs92`Xn}^(P6s``xkIDGXat|A(FNeuFFG?lSV!d{%hgloZQVg(9j5Sca$|&XCd-q zv&)ob05m_XW%yV-#4Ko&3`d%qW+6@I0Ox8N_oDP>+7`jhv>Gj63tXq^Mqr1gW8=Yz zX%h`d#*z*PlAt5>n+PFhd_~H_LA=%8I2hn>oCNX|Sq7+6Bw+&_bJ+}JEHM6T1QpQ;DxwioFoHqSPX!?X4nc`wz(ge` z;4iO8aT2gViJ69SMG~sv=y5f$R*4BZX@W_^-&;Y_DhOS0w2nC1FpQNfEy0PWUmL?1#kDk#XceO7{AsD21fTQI3$C&xcf*yqj=u??t2sTJBp8x zCyj4AdiKk(son*L7aTlMXm&uDgk{SIV=f5v2V~27u!B|CdR>y+F3Q?_hNQc@qq#@vJ!BLqZ zyC?L`0GHKILT_DgQ5*A=_$@x#yH25(t9{_#fSZc+7->Vg~W^x)>%lTII*tKh6^&X4&WhO<*Td4QDivwm|2kn=l! z_(-#kk<rDgSM0RDC%NmJzfLZJ9)CS_6p7Z>= z7-i&l!3}k~g#6?fg%sQjX9bOK)&}l{!!e)J-lO9O@?Mg5 zd>+7Wz(L9kF!fgOFMHl==)F*SuOSq{1#p8jH*K?%+()hyF5Za@Kj2fcO7QF8PLcC;hhFjl z08K%fkoes{)>WkLIj?GLLOJkzR(QsI)cgn&NPJ{5fWO8`()ezJ;d^j6!cO>DlI4V) z*-}cFE6H-gDJ3N&BH%$N$su2v(8owd&y^nb0QdnNgh;?AUu1dXVcp|J?{(t*q~K_T zg{;>V0xMbK!d$d;YVm1Wm2 zm&OiRGbUCpjaIf|biu~N@UgM6l^Gk-Mt?x38nQC#x5_$jQ`rF^dj-m4ZBZsP-2n%3 zzqYh0+v=!iud6TfY7-G#0G-^z2^^zL z_!A&i-Roua*9?c0x9QYanTQ(J(6Cw>)@#4ynHxz=*AkP`h1*EKb_@fpw zcmVkrIDR(LNOj*{7C`w^3Hl7@7pk5-ZXg-$h#7Ufjogfa}2)sikbdvC_wWqYF_H#*PzW$ z5(w9M4oUM%5kK5jiSji+{89x!sKD<-RKjh5<6k7_hZOjs17pX#RB3R$3snhc-x+_!%ij(hg_-kdxu`5KUW_2=NYPd^fld-OBl zxIbSA$G!QraNL)Vz;RFhMmX-r-v!6L__J`_hsT6Ez&-fMaNK{-h2!3PDIE9R*THem zJp#x5_I+^NYkwAw`|PLSxX1n>9QW6UB_K_3X>i`{ZVi-0Y8=y>YWIZuZ2@ez@5SH~Zk;9ys=ux&LkUzRkY3+4DC0 z-Da=b>~otvZnM8__O{Kww%OA*``KnM+w5bTJ#4doZT7CszO~u2Hv83PuiETWn>}i? zKW+A=&AznRlQ#R&-d=Pf@(Py-$31AX|C|Myd(URy+3Y!+{buep<4@QHcEH^R$NlCb zaAvRB>@zM5Ot@OO zy>QpTJq>pp?isje;hu*(0rw)@OK>OQPQkqi_ZHlHaNHO**N*UKxdQLNorQZJu6Z=t zARPCcP5j(@{lATmd$;CBlO1j&R!znLAnL3Kln9O*rE~Pk`fY5%<1~oHnQ6xV`cr+$V5{v9rN_6z+`} zJJP4&xZ3Yx9X$ZY>pwH#xa(o;NFRke2KO}Fui&^E&lO{?qZ>Q^(U2W*T(#v|FIQ^0 zsB83Q{gZ2+X07uqXs&T``Ic*`OR?Uy49+ZYZU@c9&FkTAfZGpuGu%PA+u#nt-3j+5 z92fR-Fy=SHaqKtonkC3sIhXtXPvJfe8!q}We6G7Od=suovsp}wm75hcBbR^J0%PaL zaOdDKNCvntz2Y|HdExfWwn;$KalZI}VqC1stR2Ut*|*;}RE_p}OGAI@5Ka_rdLl;}TPD zmRjWEas&S4k6cSB$ieuYtJa9P!ZlF1b?|HCX4&iC#bfNaTy+BOML4cinT0B@64~(^ zd;Tqlk#J+-#=#}QO@`wti?Qcgh_UCNG-!b{Yae`<FeG*ee&ehEK%sAiWT$c`u76Hz8 zPr?;q9>uvG{cx^J$4?<~zRS5T9p}1qoa@qYu1m+cE*(X(q zOUKLcobPh3OUJn`9p}1qoYS&QSf(sPevy{*-6A;Z66QspbJJ+fcc)=S?E3y|*aeOc zKX@i^zMjtB?uI5uLAWQ<9`5XD+lD_1+S<|3*4x-bk<&20uD-jyZev5kEa0q;&W@&8 zP4ydEXI(riCo6m2tgCWn^>#JZN1A4BY3-PuL*uAXoert4y}qHPwWI0(QD{BedhjL1 zrk+p(^U>S00SN_-JT`ApiBTLh%A{vYD-B@W6X|VkR^+Bg{YFK#b}DRctM6%1TRU2{yrI3PwI_@MR=yg0+q+a~;l?KEJsjEAh0M0_jRnu75r6Cm3_j+l zbKb(xjg8D>`|OH?6tZqen27@&8A4)X z7hfOb3l)p4!5K@llMC9#wqROP+QPu7RFM!A+e4`Go2Q6%^$`@iQkVesXm%IV&?$WQ4@NZ zBZdSg=Zm|2d17)%9QWNJ{;?ykNQ{q&*3g>#Ecsvj%oh@`?hJ`hdE$F+1o_yWB_8zc z5wCA473ZA1LUCwtNZflh%5%>Y6ws9Xtoubmskk7re(hR!1&Y@%P%i8}#f`3SwD@#q zaDvzxno+o7+N9KlIho?8zKFQMrykjy$teY5|J9+%DU(yaH3QE=EJ9{VS7amMsmUv6 zi)($M>6s~$l2gSuuMTF41tC!u$}G%Zm6@5JzcMp(73j>&m11bAc=YO!_?r{LMQ)u0 zcGTil*C&SfmWyDXC(~yj^)a=yM)Zv*aGO;iU zV)($P(0yYrO$}T=>3S4Z&XnY|wB+Pe6q_$K4Mk*357G2-m`+N~To^cz^sRguT1sM; zss0>;#8>@3RL9JPZrYffkDXXmfT%*;tn&CJeD9+7F%%u!F=AMZoU zPGyt4rc7*ao-VePqROtEw4zKVV2DZpM@I1xQYJd3W@(b#l5bMQL0$X@bJdC*t3>Hi;W#f|iawTg@_FI!2cX}i>aVU3 zJ?1o2T@-2b_k@tx91`<`;$bxD$w4ubR7j+UL@+4A!Tgoe*cD~wWMzpVk%_ZcqC?9> z`$(QSRm3-o+h962vu1zL?}~?3h}Xx4Dvy<%?}A? zCW~PqF$Di>qk(aTBL3?5#2DY~iBqpb<4ww0kmEAHGBVCw#H~KxG;z{7E)HFtCsJ$0 z6{X^$W^q|iToe+Q<%y@92)mTmoDd9x;wU=Y#UYUw6s38&B0V@qtO^y0ks&dqmcK6# zO)JV(3BaF`bvY#xzjJ(Jm!@T|y1WI6ObpJRxEPf=GZ!6WuSgD|h{;wkCf?_N2n3>}1s!(UKFhF-ZCLylImw)A01_k_uH<6b~(@YvOI;8{=F090emS)h51@9T&aXuMVw<^K76+7^ z?}@K^O4TK>a?1{qvp{hzI@^RG2Te0v4rM>dadgdW4i?ws-jrQ-P4dDTP zGe_}TpAVxo$8I^4<9CARHz%`Cd0bhtu`*S*DA|2;swrms#AF`^SXN&3dt5NbKUCaz zbzqO*FHSf?Fo*H%uN8sg5PW+V1%KX^Cq6Hl#pid10*{Gv?tXC%#=KA6!(uP+6X12g zkAeGu9|FG!{Fl2&To3#J{0+eO!QTix3;$mMo^kIG`+=vSzX|wv;CF%l0lXjhTi88} z7{4!m3F;9@jst%T`~~na;Lm|S0saj51n?+g_$lxy@J|7M3jSw112BT%7zB?)@N?i} z;GYIQ3Va24C-4p6ZNRr>ln2~q@h&7^#i;%s@Mhp?;C|p);Elk40Ke?kiuZvxfd2q^ zJ@^lS`{4g0;1_@&1FwVrzkt^Qzls^gyBOEM0es!pj6x1A6fc4J-mXx-I052;UCj1x ze5K++*gOM#2>5H@kAS}f{uuZR;G@8&F-3U{_;X*aoW1-E{7=C@1^tu2CxK4^e+vCk z;1j@?fOi8=0q=nRuQJAip#BEQt-!Z{w*cP(9ss_#>$tcX_;>I(A%@ey{RrVK@J8_O z18;!-pTI8xKLB12{l9=;1bzj*-x;S?+$yIYrQ-IhLz#h5;*`@Y`XG80cnEkBcqi}` z;9bC%f!_iC5nk^GzJxyN9^i}M?*+a9{r7->03HUO0Dd3%d)1dMjEItuxVTxAqANw0 zIrBA96A~Hw#cFihwc@gnxTsdthQy3!u_m-!ObcPcDyFzo(MT}wdsH;!iAje=W1dKQ zR5ay@iEf%tJg~Fb9}uO1Qr%(#vc*i@FD?(%iWfw!`1OvUct`{dCg-Q5q)u8t5%F)t z*r|UqiP^3B_*tGj1vAz>M45#kpGEik2fV*c5%GHHL2Oq9b9%FuXRVpLCKD6yq|DUE zu0&HjyDNYaaYG_4Pt*lPN}gC3T(~kRYj1vX7UmU+!DO*DZ{yAR$pxIDCIv-fP>jjj z0!lhzXt*9y$mmC+DmSQl7h$pTt72h9p zIKMb)({CmQ)-J?MDQ8kDho{7#=n9JQA@M^@LQXjQ(S0FUM)6xGPb4#zuOgN=zy}m!u}Ai!bgfMZ9w_V&p^fGFN2g`|&4qWGX&FM&ra6kc5f*MN>$O zZca-Qd7-Sy$y091Tv;|He@bTN28@~cikOnu3jyk5sb~&iwtY)_@|3g%$y2i7D?aES zyc8Mx8-g5+A`6O)J)#CvNh zIcwo-cE~>njg@8nbzczlUv~vtF;-y)y=A389#v!QcFz6IJBQJB^Dw6nt$Az;V?$zk zZGlVk}a;WZHw zF1(1bK7qe}QHh{}DSY$H3Qo%{^N$emrT#=rOZ+3|YMim6O^htX16s2Nl8v=|yS^%z z0@HWVTt?CS%U9RVPR-8rj}$+=It2btm{g4l6(g+?vI#*_L8S2@I*i+{uI0$Tpd@V# z=5n=Y>6lMquC*9O58^F0UOXd0sN1WqTs|emKT2HtIm$lr2a~~k@pHjRsbGKS59}}5 z0v|`w#^dq6oi_v82R|2DnJHe!bGQ?=dQ@nYc-m=(`euJ{Bh=scT;444HqwUXDK5%e zJUMGErdD{HpSuQ=w`t2;L{q6q4XvJXNm_au8cJd63bg4@;)3wIcRSnnCvhQ<{=y*A zA8k`|yv+pB$OB`SXJ`Kd3kD&Cn7V>*!zcr}RB%}SE|tHzY=8zbO8jLTUWKN(b9_kU zf8a&_0&#~df_Fu*yzPpKQ~g84i#wVBd)*-D-|q~jiunBnoAdR*0uKQ!9St2J<%;Wa52rN@hOh9i=la;tTO>Zm@Xb)QOlnV+#1lP8L00_m+!ayBIs+ zzZbc$ou87qR^08@7V#lr;*gh4liS@=u3$`)3jtd&D-TW<6G~}|w7o8BVT;_nzP%KQ z{FxKN3*z!?_9idi*n$F>oYI?-nzcq;UJB{jLtb5&XV%%N@sI@TWe#uzOk`8+}^XnA+apn*k0drrK6T8 z!)l4K$7$&7h;(8{@r-ca9h zC5o~>(%a)mIzmHdOLuFeDcn`Rv58BAVY3(-?rDnjb~#O3yRyPvy=`s1UExSmPbAb; zk44QKXI1r@@+Fmst``f7^TH9QYH?Ax8cU8&V{1E#1iB#g$G& zZ+CdZwn&o`X=?AvaoXD(a>ETR-87L4sWen6YVPf5=!$eZy&Y|x4OiwkD^?XF!mbUQ zu*BR@-{CaWx3x7js$9zj+At-~r7LTKmzJz3FIy74I5azy9pr*@*4&(&;Ee93wx;@? zri+4?FREOT+0?$Fsj;!C5o^*Ly6Za{T7un8n_GLZEE~+3n|(>v#a9GpwMSZd+cy9k zx_a}mP8(_3I;%bF-^(`!XRYc{uDQKF(lV>5ySt+^IIFp*bz=vj+TPUN34L>Lh0yn%4^DtE3suz*vsuopNXRF{!7FSg|Sn=;{hZk8jdcxgJT=sT~swyiTZ?Qbg+9@M8CE;{8MZzsx zIuT-bW0+D|t7fAD8F2)Q@JL-#w@h|pZ+#mV<(Y<(s_IGy6{fR+iBru=HJENT7?X8a zq7{abhlo?O7^S+XyeOxVeiyIAud?zLD*deyl|I&0Cl76;wYjySwZ5$YEw#P9zN0Z) zmAq`IXox+|meuuby-m)l^6KSF)>I-dJ&c3dMT2hcL`&`NZHPEMU5$;c-Ql*T4u^@% zlE1U%@7WHv9wOn^#;r2ns$H>b3D={BY(~Cx<1umT$H}&iA_#YNqP?I!w??)(%dqXR zl-myKsZ^J&$eyc67CRD$qV8^L=-k}Yz0K)HYBok%oKoyMRCg}w>S}96DWYyVtE$SE zEI}!$eqnYFYSNPO*_94!UASw5v!PvAG1*nHklS;@ZJk?KYueE!ka_fhe1PE8Bc+k| z;QA%q>#CZugMx&i7O--giq_AT53sch-Ca@jqN1`TviuNPSN%5b%Qy{fSB4updpl6x zEI;nEcvahBVdSd9z{X9F?ksz{>Km?XikRn%+Rn%?EiYLm`@!O-X4P5Yi6eA8Ul~#5 z;>Dg?R_%^PbjApiJ+iZbnmAEm+dA;r37tl_Gfy|o)*;ZU~h-&Zi1-! zPJ2_k+zOI8&M~P~(X}=Abcbi>=nl7gvn+7-xzRDfD|%bj(9znlsoq&sQn|QNHTu{t zd`WpOIv^G$Gspf$Rw1Y8FNnHN?pcI2~8_=IpsnOJ`36b(aBtW-LQLg}71i;o+)qXD(8Yc2vSGXqfC%m+F4|GLEyVO6V@Z;jWz; z!1QjR>fbh^t$E#^UGAvkt>4P^De`~~B&YP5DD>*vgt9Rz#IY}r$C z%x5pc2B5RcQCzl{#-_IVZFVtL$!Q1nE0x|$yi>el5gtcNeMd)Ao7XrvZ-~vbtR5VW zDwn9q75;=aM=y3cY?Vfw<59CcD%Ydtdep@pHP53iaUzYKDur@JBO9+bkqSq8dOExG zFqoyPwAUybu*2(AE#t6ZQc~OP&5(&ko7H=24HWT$ztiiShx5=z2mKUXH0s)oK-mnnfb@*my^c!qnF@ zEK@@;JS-{CsdSoKyL&Jwuu`JmksbbJm6-Q{RF9tnx|~MnIRpmwXgz3e&*@ihbHcM# z0@V13AvWS=pa?x6+5%dN(`EV$`Mf+&93S!W&{f|mhitElkn;s+WoO3ip6=P^` z=wPFZ?eOJ9UbjTl{pe(#H7+ZxYpUIbbHln8_Unbzlty;f-taE#LceJMW(%@o=*eu#j94R0$fs_RVj;& zBTT>H0)71ArI%Lb$ltR$wy61+tb8bU@3}5=IOfa8A?L@j-IeNZWsckN>LhzbQ>hno zbe;X#9&Tffe1Yp}>2BTF5|OW5mzH!M?k)@}bo=mJaK|(1;>kvC=nwr8x$G#aI zmF(R(c=mtcL`h-*mQ!xka!u#j(1_CgZ1t$D)DR;A%Zseh9)rA0B$9*?Teq*yu7=LWCZ}q(j+PTjOoU{DIhFPDtq(Gp zWrj>f8|rZu&#$ZLY3lB&>%yG4uDH9iYeVPOI+SsDXSi!)dv{&Q%CcFKoz>Odxse0; zEDp;9$m`IBv~Q{JZj!I2i>iV-q1joXEGGf$80YbWKTf=37!I)WjsbsokmeY0(Xi2b z-FCvob9cS4GW1@^+HjE4$yN5t5fyCRFV-8dTI z=QS)+^6p5{u*ALoYq67Lg<cKJP~r4N!MY zxtY6DMKSf$))uU9+fu)+C)ixy+GgyX@Rij3kA2Zvm&E`OpiHRcX6HzWIvXq0X-DUz$9o^L z2`YO(!O8Ng=8w~Mk~hDEgTG2{{Rn5U#W6k^ttZ2UbdM$>ocI`?f3Z9IBfMI#WWu>1 zsstsRVKMyh7(P+wSc(14ne($qnuiH~UOyja&KD_OC*0>O0q;k>QDUD%eR>Q()8c8L zi!sO8D^$N3KlL0FjeZ%3`}G*3o!OyBhXEBw9+d>4@Z{|J22(!U1&n8kC;!UmCxO4u;+bFDKhta5Q~!)*Pko_PA1*?8i@+B{ZpvearKdgT76APCocXZN z2G4t~w5OhP4Qi<`fqoTu_WwrDxrbCk&wHFr;5ipD@$I+t43F~>W4{*myf@5xV(b$z z=P-KO2Q7XR?32OohTPcSVCiXp$l|xd{#)QVhcWi!F#iCHAC*7OV+?;S?6bjhOg8qn zTY84ixs9>k5BrC}+vR)O($k*v9b^9|*nbpbpNlz-(bJxDAj5wL_WZoSJrJ1mJZI@? z&pDB?KLY#L!Q1Jt#Q{;Hr#KY`z2*)PKZQlqCm z=TL^nohFAj-1k}b&scieb6#caKZX6P;O+D*n;O;Ao^vf@KMEa14ftvZO!{xP^t9*v z%h=C^{dd80tT*y*Y0o*IvA-Gi z_2BC)`y-Z~_M8J6`@3NO6YzzW{X3SP_M9Uc`yayoQ}CQKn)DpT;ZvihJ?D;wKMwnc zz#l`sF!s4P7Hagg=Ume8zk~fY@GTG+`xh-e?Rl)!*#8CguY%9j_SADuY4qrZ`^)zh3K$fF~_I?Ku|(;K%1ogZ;bU?fROF zQ=~>ud(KY{zX106;2(s*3Etxf)T z|Jv}>j~*N4>7O5jwe@>(&(`qNKWXvw|ANI+f70Tqf7-i)tIC((9fTM^D*Z)CQJ(&J z2Un`K{0cP{ULIvUjIbl}{e-blUo3_%Mv&>7Vy54Nw0sdUrlm zd7AeboV;3E#{W3zpR(*(9^{Qa1^QQG{F68O5cH>F^yH0xKJv^ld>8D=17!HyK_tZZCvW@b z-CD)_oNHiDex&s8bG`!pMvMOjcsvh$OpW3DoO?jr1-@GI4}t#>e4gf+zA=NM;j{gY zwfLh9NdK7k=VGhB`NIJEt(N}H82#wD=(;OL-t*(Z&oB{yp9DVY<;?js@O+l)=gj#T z;LjTt_F3S47LRv->j&!#;G?S)XU^w?kFJ7Xy&=YbDR|cl;mr9;@OFCEfw$AMDMsG| zeyrtx322@!R3e|V1NtYogKJoN9r!cgS%-{$!hB<|#;b7_-wXTk;BU9= z@3HhtAb-%}uYvtT;Msl{{@1||S%CZPntvSp81Sqk)W5*+!LtsL$6AXs2|U{y`47Oa z0e@WcET5#jXnM(;^+EbzdV-dID39CIje-a5~ zdT4*Lu)qCl7GGd3DVpciwm52EI)MI2aa4a9^!J0$K|ChD-K9n^oEGR`hu-985BN{P zv%whq6W;T8o!bV8uWXqK&*$7ZfWFSs9~nUZnx$uX6?*Zh@+r6Y9}nQa+S0Q;w^}^I z+hOrP8^HfwOHcp%EgoxI-j6B&1D2llhb;d01K8hX>Hj!@{vJ!u^d7eOLfvyQ5saVl z;U_46Ls9}g{s(8E0rQep?KGeGGp`41a$N&-iPt@rV2k z7XJ&_SD=1nK|T^Es9ym;743`doBYS%uSNdZ$B#sgTs2q(!J^;yJ0rl?KtDt4$Ah1P z@LljJu%8*jF93fD^jv9Ycq?M`8)Eow@ZZ$!i|P3n_+%@+`(o^Gjp4ry{)ld0iRf>C z5TpMo_}9_CWqJ_)3o-WiBjC;?v~6?@3r7xhy7Y@kMGSnJMld5 z*kt)01V38OpAwxx4!%R@)i+#`aUKBwHH6=#;H$NRKIx z+rY0t{yC?i{UPvYEdBj4{*QtGu8xoPzlzbn6vMv_{(dX}gD}w9=@}oxXM&FlsPT>A z=f~*lz<=Ee?`T~A=W{3Gv(w)T`+uT-$o7Zw`!aabU$Fh%2L256Y;P>@?}4||hj08@ z&p*yN9;3(K&Fg3XP7EK1EiOB}G2r8t;F~x4`KHI{7l8kkmA}>Czl`)P)#=+5W4|5z zcP;xnV)Q?V;g5pd6L=E8xchbr?`Pk{`#!%vN&oM~ z*nb?u4?@MV+s`oY+mN5p2#@7G1NBWEM{21^*w$hsg{-2lX{vP@NB{~{={8()KqaGz zgi~HU5u9l13T0m+ExhyA`o4f|adFI{uz?N<#uYgagjmppoqAe>c}_dU8Av|)p>Ys5FEyb#+uar_oBnsb!u>~+lf zN$Tzd?*BbuKi8y&+GWHbZz-KE>V2o_QW8N~X zfev2|czW>PUeKaqpksu+^2BHCxy9&Btk0gN^-gX7H>WebI|0^tS$)7gD(Qbj-CQuT zD`D2a7Z8y1?9ZH=lxGU%eK<+Ui#}E@QAf|^RXKT&04EC@c~sOpYpjmi%cGa-?i^2T z+Bb4?OdmTgh!80e&!6kbz&5Uk3VzyNnUP{w}lW#XigSB^~Xbt{q6?If;X25 zBqL9cN=jcl@tzHi6~|rzTmbdD%aoiO5UV5);ML*SF)Iw4JBbWnrbIa%E%&pFXZBZ3Y(-+~k zn7)=+f^*6%SA}tmw%l2?c)7E3(Q;?m66kSfvC^r!tYk&FvRL6|nqO8GE-I;3GSDlk z;G-&ByrgW=8mG(xN5Z``cwb~fN<1&#)H<0=p@H-h6eKNOO=T+xaXy7Fju zH=bc{1UEDroh|jSW8d6SeK`vQ@no#Jse!=M*(Y4k z#9?p*;V7dp?izM><35)>9j>|F4t!v*kssm1xvHL~wq{&I3U@X)qXV9u4MBZ(LrZu` zNp)D&=WuvqM{ihp;wdb&AbA^AHp3<)5~r|u{|k2n`O!Lj*AKU*Ky){4>~X?1GBTW~ zZot`FdFe=AWW#CRP-{ZkLuaOi{xNSUmT)leHn+G$UT_J+#A(>9r zz-Aq0Vq8!tdxlOjm^e+(Ow68K_8-{8;!*IZ;9(EzA0X&S1aEruDtH#Wh~M|BzV7PI zqA8ek{do23y;rY#D(|ZSuYAePrgBce;=79l0I$Ba>J(aXtDEA6F@x){dc0k(ZUb`` z`o}V6DxM0a!DRw~+Sz>S8-~_Y^~Q2tg#%Nni(+Qz*UXk$cCoc_p3MMC#H`^?x2{X{>LVTy;M_4B*IiN9Kp;>*I~iWP zox$QdG*w-izk6IS%22&7nR3P8JrkxEUJzT5DKb)BVw~|*uXNKT{xBrL^`XUnwOlhx5VN8?aqI5@lBjHIzboXH2DGm_! zB~Y2hNJ079vVu2ZYLU$<;7VW@P{njeOo7&o%M(Bz2#6JCgJw>Fpz(fsgP8 z=-e}SeGA#@r5%h!=9SZSIza0^Quz&M=+AbXs@~I2TmMn(UQ{uLr)h$VB!Oxem{Yj~ z92#Uw86Cw#Yi4vmI5@bMC&S&L8*bl?WimR--BF(Jzt?FL)nLcfVjqCB<^I1zD!XQ! z146%wm!w~c+=;LdgY1S2dh7!1$O##WSlxTQ@YDips4Rx2DK8$bL5P}yaLK9C9cy1+ zma}!}z9+dz!^BTa&*hL>w+L&D!@m}H;uXay8?H$si||j%>fw^G4muKpoyFIm3w-&( zc1{F~>ID!DlNfK{c|7j_u%uV4h8g_sw9T|py@rh_VHggvwT;WO9c;rOhdG*ka>%t6 zwhv-;bUAvBI?tQ!E^$`L=|2J%+_h!h$5go%TY#C>rP2ia}!#nsePCA~2Za$wTJP%Y* zl^tY&rcyrXUQ+^3j-6qQ591p9J`begkQTIGUkKm9w4bWOMZKtCSOMx;>)8R-GeXit2#J;R8W;Kdvv3((&Quf z?G*jXo*_GV`eT~hz`3@9KNd178grp@9imS$HZyRnz)0Ebi;;EZ7BubM;#t-f9%u043 zxBd2e|M)%rxcD=gnKLtI&YYP!=ggT|KnILU4eIGCP|w5w|C@iL&PXvy|9>6YDNq** z+HSq4P)Jv1dG!2bA=6W7mP?^=4umgBkt~EJudr)ZAI~*#^Be&8_!j z*3uORyn1)GhxQyaXI!E^*&cO8de#B2#!Y)jNqTL%pz&nz=~g{g#xCVLy~%FvnbaDk zM~^LTo>#NU?oUD~HsCZElo;wTEX1$~1C3z`20aE?4V>F8NpHU(Nr3r-wf)`6o`ZE@ zn&sDcT7?etv;eSl{(kF$`!n1Jtltd&7moA(J^mM{IV66eX5#e0Ju3J2Yo<+Cxu37W zsdBsXpR3tSk$7JX{xXAm_6m@|y7vk?o168&&<6_s{GL66$EtS&(#?9ZykLU9-v(LF zZtM5%&*0p~44x%$6`BRW}JbgcrLqxFudFuD=YXae{6K$0<%2Lo*r)&oxyi{XX7|oPpvhB!+?3#U4x@$as5>bdahb%;0}0=?n0sOg;lD= zi*Dmofp9d>dVWu-z`Fa-*bK8h$sA|86`1YGFn=5841 za2?Z}-u;V^&oVZ?&hC8`cQK|DaLti5NY-Tn1~mp6VT&;6FrAGd7egK9nF?%k1%fLu z4Y*EUNCjAiWm*h7l%OW-o2+y9PAq#{l8O}oxfovfz9f-#P1g9^2rnxGNXK+4uJd#X zXbC{=oAAC$K~pqPNpw0;6u2vrlyO0$R3s^j6}9jXd>b72>wrgKJuJlVFw|l0yK<@& zn&3OIc|Nlu`;wT3X~uZjW~{l5T{Q#*NMf#|aGSnvcnEO7WIej;yiG zTdsv@w%M8CIf)@l^A~3y;>eJ3Xk{Gdbfi2P%ai5uw?oN7vh}j<-$VQI{w4JNykCUe ztjXCO`Z58h`VO9u^^da%a0`M;7*I+7Fa4V!Otf}-Gj>f7I=xGGiI(iLRBNiBEK`l^NtC4Kni9iA4tiD0?Gmh&N ziOYaHae~zP-~XHUt+L9bT8&jBbm|o!C};m}g@4iD`|4V?6__P@`UB-G&!VCC>G0wq z6dCoh{%6XRAct{@*lYJ#K`$=dwp?7TyY4+^9vfJ?O;huG-O{ZJ*Gm04FXaSgr|y6EE?`OCBFBSwh9yyc#e0-e^fryreBe z86Otz?)&@k+7FG^UZRNM*@=5^!#8Sw4{KBZh5k*UwSuiyFOE>(ql{s&#c?-`;_gw! zN|we;mV8|jZ)1s^5D^3Mj@-HSe?94NM9V1b(3PBv5sIJH(I_*5o?irQ^`ItTCT)$>JBP~ zZn)Wpt$oUo_Fvu@p{h?6YyX$8A<7u!>L_GYyv`+r+=(@CLya2OdbP#aqgpH`&PLgS zBYszgnh{DFdQ?lreKPddHwZsx$^86mZ~|n55eiY}OhcY>umA*D3@f0D{`zmNoclJe zay9PPjz(bHZ?v%5c)AtSOg#NOrin}y z{+`f*Dd~C)iX+Ed|8?5H4>^Nt;l#O5-~k-;^&f&Cd`AY&cLzlM1- z-jV!Em?vW%$+u(PeMf%(b;@`^7%AO5TG|6K{5z4Vy`$yZu$+u|r2bYM^==&XNPZ)h zlhVHAJ_Vt!aTMPHDu!?6D5NJ2S@aE@HP?Y{az0-<|GJxf$l6E8^sPhK6xS`6#EsUN z{;0gZPWbjHbbTCJc>O`Ey*5Kk=7{VtTwi5>`s)wWX3=RfG_PJQ@b5RY^@^z^Bh@|Wl>uV|glFesW2SSfOCu*G;3Wk^8m!;{!~Tb1=*A%Iftyj*$#OM6rqVilg% zGHm768KYE7k$2-Q)8v*Jwjyik=qRMfF9ur}pUUi*QhNk6oX_wq6mc5fY-g;6HH&dP z6elq%t_bNIFHXV{7x8Jf#SS&6z%kKmtG%@`L)6K=5-M8;$?x-n&*Sf2`FD@}yIcO< zDgQnp|8AFmU4w_vqEeJVAQ;s5Ldga{h3PH97xTXzBzuVLD_KuT#KK&@e9>}ZXAVfG zPoP#pJ5hmlwGvxUSKKAn1F;p==z6_Oi|0lY@_|i^{@d7D*_`HOBzBZ zIdUC7OAZE~C0qXWSu!2ZVJ`NU>7e$H)F&7ym}pK5q`?HVKk4%E=H!5)e4JSwXtF5F zGt9~W)%nNrzC^efnEAHQ?tD1-wl%{^g&!Vzt1jPpMtIqqm(s8k+79oGo}t3xP>WHE zbJ}W86T_86&a2th#x$`?PBX||H;c0->m~O{PS!vth1YA2*fYhGbz}G(n>&A=;}*`$ zJcJl{9&+qxq zhx)vKF}I>jM{*N|0_j`UukPY$~8P~(A#!c z)0{i38MZ%$f~X@$Y~T^hFQklX2PYQsa;tJr^AKIyXt+pZgJONFZjPlsM~ z{mFI6lU53Wc~_SAsxhv*qU%*+oOVUiOJUp@L31Yy&8-aSD<$&US{rpBsdmf(IE6BTuGHv+S0zj2}5lSgjY(-4K)}q zmyQ}1V7yo&7$ICQ9c6d{=u8)ct0mIM>V75oEF|?n|8Dc&0=2<>#MK?l>SZwY1(SO- zF#Z&K2?fWMo(#k&%eXx~Xe?dthn}AWSuC%)GF8YcJsik!76o@x>ev0QtVq+@t+(yoc@?O@Wy?N(8j_=q&x$s=2zHtVo$9aSMP(4LQMe& zbQ!{EhOEq7@x7W7ZvyTCrr<@)m7`2p=`e7q{8~GdP?xoa{f%UoV{EV0?Z=g^MQ>C~ zd=!<@eeu-gp=ab275->&XXuy0QVcon9dVfb_V?oT`iHm1VH1Zo$5U4a#ds>~c2m6G zZ-yU?r*1`8##1jxm&H?GNcYE6zmu#X%Ftr8JBe&pGy70NoENou`%vmLY)j)od#in^ z>co)ez0UF(?1Nt5s6#_|u^bH%;2WaLGfo!ozl8DP*~hId9#ham_r0{=#Fi6YOIG`L6)q=^!MJ;oZe;9FY80@w` zESgBV;4jGk@zy41x@&xGE0=-ZpL7vDQQ?>Sk2*iYG8zEKL50HuU&*;9rT zlju^SW62&Rd+;6%WDiS|07mwx5@?{=7?#O{HurBst;j>ADc7IaOPd&felKOp@b6)x zk$qC4X|iA0t1?9bXN63sDyTN)`Q4^)fC@YN0c&iN-m<2Qb?@~+qIAqSN47(OVp#a zch#v+$r@|i(zNAI=s(;?xGxHDUZ?lG>_oh{@_!$CM%WBl;zvu~4LxNQAWi(eE(5K- zMjYXjSfUq~XXe<7&~HwpEM0lb=?!_1vX7&Lx3nqAuP}}EQzmWTQEQSi%|@txKf3h} zivEUvn1=+t?eox6SoVkLepfP-&7Nw~_xfFm!g0OP$hDyfIy&v!!r~$bJRU6UEiZb& zpV|vWGyG*mg8vO{_4DXj;j>UTrhXcIQ203Xpzxoe%AzHH>-j}Rp9Xx!9x%G~+g^5F zMvgaZGj8eF*0`m^g&f~;ZHp8+F!*EY=EZr-}oJvSaG<2;;uGRBS319(ewX{-KWl53K4 zD+wAg2~Z-Rvs#?zMWRTFT4^0xryH<-vtlR5)vIH*uOOUCDAC@|y5N~?&;ZR#4(Z$Lj zN&7K`JFOoITlQ0P+t|!M&9QS&6&$q`7Bp(Klw0R#c&qG zGz`SQ*@nS};Smf~80s)w!*CSCa~O!SC_oQ-H1g1JZz1^WLvCiZ*o!{h6+Nc8Bp@jL;ClQah8lLM{hgHX;DznDecowY3Qx7KwtLLiE~(j*jeWY4c2!sS43KkBTrQ8Cd17NI6bkEd zL};19XWJ&%taeN);(OisMSK!{-D}`i+G#^f%Ny#{T#EtkUYT<$Ph*Ya5cmpSu`t{e zcoU{^3@_!?*jG4o_vdp}oQhwAniI9giwdMZ2PrSn;0s zio78tDx(gU@;>i__M_$-m)z_=ndJt;-=iJxmI2jBu`&QSt8P}uJFENn z#kqZ64fjO|H!rxogl`nu25sis0cSPd<#i_-sl23GwYXpmuWsge?%z`Tyv-ani{&`z z@#=Ue{yd1NSB(g~UMs~w=3!b$n1+%$eQ zT1eyTfG*&3(S{s%e<}C11*sFY1yyJhs+pF?7aMhA60JmDuW%G{cxoXQhM^tprFJ}p zq;ivNFWSRre3rkbPh+-hW^GwFvD9|MvtW>IweiA)`jtpa5z;b+BXgE5rlZwkkS$ep z-WZNH6ymy!&EuFFcRukUXblJL`x_6%Ej67Z$Q`o#yayZi+spnz|2aZgcU#>0((x_% zw^YrJ%(`81zKlb@G~4mMXp}F-+&JV*wwPfBdK`{;wIhk1f-7ajvd$LA)+q7Rmn|C6 zKhfYQ=I}H|_+jiosyfh;#+zVU*%@Lx{5^i?@21CaP9-=dSa+kH-6LIoe1#(_!zx6KHY`>CbK4J8He^u%*wt7di5eXmEBbVGN9^ zIbo0@-@)@)at+=A;rUFB@dl{~7m*ZclF09INrh)Jk~$_G$1|Dp%<}O7C-eY!;;4_~ zsEy-T5XUi3#_`N3j-7Yn&;WX<)#w8VcN1Gar|#+aoJ^6|s$R%iNO(VulM1GDQ*cgl z#EEtJcq(7(P-$jxCG;HJuXO$q`;o>;VtPGzr{X$fCjS6)_sa7&ObHzQiriFiH_~47?qQR)s8zU%>IWIPWY!3 zs_`sFcK_XfvGa$voSf0dBh_S|5qoun?h*MI=~h9uK<&?UWebnMBoAY_H}e%QnYlLU zgh7WhyDfS&%k9E#$mP>}7df;G7csnXHX2W-Q7&4feJ|@-Z3%zCwsBMM~1K zpXt%%hBS=Jqel&6F)oQ>ZS)1?xQehB4(k_TTPZSIDwo${PLxpD7#&%QYod3o#dx3n zIR3GaDbR*&&rh=7_EuqwEbMPQ;vXKiWxKr;(vprNClq`+OdCiI4UT*a=06$6Hyy5Z zx}!K|z+TB{uMU&n$)jU7%46=wF@JNsF&U??b;>eMDtH>DT#+p0CI}O1S39P2De?-= z7RS{R`L^0Y;dwoYF26%ljjaPO@nDUt*E?5(&Y@+0$Ki?H+iG|I134Glk4JHg%c8Lz zyh!HS&qjCO>+#)3Y93|AfR9>+wV%Z~Al#i9Z#7+R_2Ou&{oiOcM(|OYE-A7(dP0^P z4xCF3a&SH3NyOM5$FoMpvlUwppw#eL$hug55oHH@GYJJgqyT6#CpCzP%+ma*j{$j| z%#E*)*$AOz$UTTX1?yBGBt`ZbNs%e>o(koj=8RHY6{px|S$-(i-^iLA16o<;r6PW^ z?vfEJk$s7AOp54HCMk}6c$jb{eH81MI97QKAAh~hM{wR4j^VsA9K-p+aBLPX4Z9gy z9>WD0<42>b_NVWGWL3N>eZ6}P!?E4li9SWLUPdHViM)HAXXL%R9M?thopTt|g*)SV>~X|P zbm3!hJ@%-q$5KXTE^$Qu#PNi?3x%hq0YF^%UWYT9)#HS?SoiarUzRPdXeL?02{1TVpluNtkCA;U@5kyiBJn)9Qd zJ79Ag641Y$2`ao5P+8mYbqZq|L<^U+Bj>^q`n269JP)Z&3;h|rMRf|(On(A;Rto*J zso0+{d}^E(Ou*Ngb9$BNU7?JOA&oHvQ?Xp#n_D-=GzmFA*7R|JF=(0bLANQvud9>r zS8EC)^^<~9f(0=ce=L1xR4_r+QD z)8ra67mn0eN0A!Jyz%0zcq4LA%;zuKa>S=mrhI_EAJ}RfReX(IE0*Ew#EasT8WooN z^6$rcl{t7q8ZS;kI_SKk`3D=b@m7VL(@P{g?=C;;7BWRv zY8rXLb6KSBnT6C{_rB@9Ox}~l@5&?HV_*VElSwai+werb?V9&x?4?=mg@KJ?6&F}d zbyCxGyxZGV{fhTih%QPDqzYPVn_1^?F((CdkQh`HB?L4=a&0m~lLKmSRx68!0trF_ z=2iZL+7|PdewEc@z8TO$82cabvDk3UK7zs7oq*>6RbClT_o7WVc->nBWgtbK9N4Ue zDPN%8mZTAD0caX^^-Z*>hy-4CJ0^h_-Hu7%y4y!b_40+d)HL5FGJDVM5vy(2?U>bu z`ffbR-?-iOwJo4R{BI(DVvpT7uw0hxvj&bDk}!YIKunufpwn22R1c2eG!KsAB(fN7 zi%2(md-IF#rw+_=!G0Cr$|(&;nSzBS%1&<)Um^M^2>)PM2~^>nz-(6%a~RM4uCim^ z3K4D3G6+8_mrcd83h^*k1joE6)51^4(7XUXuGXMk*?&iA*eRDy2sB%CXcvv?H^OYR zV>`H3#0g>hFx4hS=(}1xfGvXF=$R4Ua*XE5_e0Ap7Zs=3$K;LD>_(dB$h}krlGq%6 zw#$cfSBS@OzBqvJRJpA98#L$1&`EeNtJ6dyXQex7o*+o6|cGI1S9lu=yOSU zm#WA+9ZxCqek%O*{%mKJt*00Q-@8)j`YUQ(Fw(OtoyXB*df7SM^TAJDH7^+5XM>&NdYqq19VI^&0So_>(JeY2%eNOg(oME-kr&?}Y>FuD-)w zbG{(txWcHtA)G#RVBs|JnyU>xMG#INdR}0F;2RtUw#@d9^V+r>&H@*~vG!UzS`HBY zY)~uL{bKOicEH#4W#F#zd3Rb3xML0sU)xTN!XB4lZy}5xg*_(2ya-c{!XA}jk05Ml z6t+c%ZA6%66t-E0*$_5t8XuU;u%0rmGfC0fY;hN4ZBO7;tsA!e8gIKQ=`3$TE4z*A zz?byrpSZeV>$UB6w}1OB&LjW7bNgLCg1a_VRO_{uY8rOiuMyK(8B?~&fOpRIHPOgO&)OyLU&gmp{Twoj5V-G?oIikRkLd;&4e!uZFC$yqfsjwv+M635gb zp`9nUKZL0mrWVBXozc;i$fNti(3h;ybIo~dTc?h7Pr63tCViN~Te@4`SIv?0Xd?Qn za39RZHRWe3o#$?%K<3_ikDT&j@{Q;@U@+K#yZ2Q|nup&NJ&l3bP)9KkA3BlqBQpLl zrim~8ND-)WrsDTU7+;zU>dg$c!#E8CdF6a!FZS^?eoIgQ>JuH9J_N8H)BlD6SStT? zC>__@53evt;cGX~ZcoKqkIpMeR1vS(w##+SYZH;*L;Hd()*8e+`Y(g!n0h)`f%W&t z>pyjc7n3MO>r<{VJk_e$cEze}y&`P(W{SD^7MFO_K0@DVj~911-fzbITbJe6tHhcd zxwl^IpxXXe@5U3hFFz4Z!BlQ0FHK&IuQUR+Rh)*?qHoM+`420wsskd#HYQ;zQvKy*5{4A1scOE+aI;J zn|ph-h9BTbs%h(+xcf6b9ov@Z^zL5cWoPcqd)c$wHPFF>KjjL$?PXUvPdM|+kZtRK zhR$xkmyMN0gS_~%l|oLG^M@^pZ7% z^FD8WzsJ6HCw>K#L=)fV=@3}~XSbL0LpaZK*(XEq;I2*%_?S~k#>$VpK>v^@H&uii zZo^+f*|;JaLr0mN1|JoT)JEORtt3(_8sYK$Jrn&B(a3$##fT+}HS0s0v2+dYJ^gT# zxExo^F&CbNh!i=ZYF#3n0`h)ll7XzAv0SkH9=tcdlV{diVIi@_V)yy-Ylp^`#zl@d zEM=Uppa|~)%H?^Mj4K`UYQ}RE-fNJ1fR_9;NNBmGQoKmsQYkw?<6lm-Q8TEr-*~A5 zFG8b5bVyz;r|77_6(`ygI#yu+T29rGfG-bzWxm!Ed)eA*cg=2XR9CjzH*5{vB%HDt z9HHN`>KkAv#8I8YGwo!QXjK1lLjmT8@$AWBd|N`@yqy(P?LM8`i*ji=;YgD>hd<@L zw5Aa6X+M(4TN%{rQDqB>&qS4-Pno|AG>OXg%WEbGd(9;Qs$+aDgyJ~C)TRu?P#1q-f$A>BHPF(P7uE$@h=jYA2DHq0wAUmwq}z`O?Y)_8sq=94jB9naTbo~)#KHw+%WrZ(vu za`Vf<6NY&;>$gQCj=|-Ixk%^w!8tXI0qGwknnyvO_9}3V{n|XHXZ=>x77Wrq2zdI7 zMivdCe8+sKL)3^s{nuoB0~4f-quvTKlPA@LJ~v2iwuRC~jke4H6= zKriOiQqwi~bs0G&oReSdyN%S01Jo_=+c+y{Ls%liNBH~8P#M_DbT}rW!#=!y`8u%| z#^YHzjM`s{e1GsM`KEC1pcGltFGZd~Dn|TD7mc7kQwr+!`Jmp9>Cf{pje*QBvBQ_E z0KX86y?g%|8`CA^lr-`$++A&Pzmbrw&W05HYUJXC$@o3bWJrWmw?$$oZkd>$ox>mI zzfxp8t+{x&|N5Xi_R zY4h0^;O4-Wn!s0O)7W1X)<){ET_w`?@x_d%54s7KDgA`%vTV13X4|>3To!&8I#2!J zyxM;fzN=QB=hQ?3*Kp|FEK>%@GITJBfgmvMw|;3se@xXddOeUju>lkpR>3N@Pv@-0 zZxRzS_}h3!3wJ+YS!nstvcMAT-f4NN>wpD{^8G??rv)Zct*b19y7yDB>jcX>?G1P^ zlkAtv64mLp95W~T3qf60Ghd1XB>w{Rnp7=Xkkqpw`+8{60@bCTm}!3#VnM$~K^Z8z z?tQDp(r$U#a+1(gnB=DmRetn6`^o(wT{9G-YX&g%hYsN`HDha&^yjqH{!1Yp1*uZx4XnfGw#`$soVkrpDhuH&5rX4= zyeU;-n?HvD|FzVCntU^*5Vh!4zMQDKP*c{KIQAlhHx0331E%ze85jE!louEXl#vtO zrXlSae3vMfh7syVSOeztiGRV|V!6(@Fn>Kns0DwPPKPJ!B;*U3H*#Jb1L~k@Q!zBz z4L~uhqpez9m>4M9M9!w0B`6G|#r{+@v2ZW|OwlHM!7LT#Kv**r?*4-XcT)E|VrgBQ z<<Ug^a!ds&FV*Zq}l?{fCrcF!WVS5qmI1b_U(H$qsq0+%XTlL<~ zL}*^8Xca7Qh-$5XN;Equ##ar6lLBGmj@Opp-35f}qL8PaItghaD}FB~k@+d|>Ik1nocd*e0WyZ2k_ss~J~(Aa zlDJLCi|*ey4|FB3Q{t@)XH=Feurw`7v8&8pE0obKm zB0?uH(HTcJ3K!n7491mA%FSyHsAy5OJSfzAW?K5Cb4sSTJr@hA>JE8=1S zeIg%91dp>@Uw6Lw)%h9gh|ebTcv=o;gzySHJFGJ6TE_)b47%g=3DR#7=#F>cdPol> zbm~sfuc^zZ*0yRTs0uayB;;9PCw)9N8xwIhuKJVmbT|`hqYQriLFOKB22jt3yFauL zNkrt(1W*{qKpO1pnuN3XmrWFxodf$5U&|8rS=0w%YO^0-f+<&85?g6DdFyax2GwlV`H0&7zz}v7DvD(#D_M zlxk?V?3_l z5jxhwlWHj55FoQhcL1K)cLYg)uLW^8U&elBybaeg-wLfnEsZDZK`7MXicG#sA~uQY zX>FG7P!^qtGFQK|J)~xCg>b%2G_DHpKOa<1>y-0)>}P_X75|*tBz9z9_7}s7ii87H zB?Qg{nH(wd!EnM!3TBaADa%TH7amkkdptD8PzF;sqHKunF@F^}x$&_13*2c^LFSITv*=ps>#uL!{jR>ZZRmDl1J*Y!1GrY(gI3 zIG+hp$Zt;wrk40uu!k+L&u_AzMU#VahHbMXoHT;6bvD$YJn~xFETym?^`&y!R9LXU z>{sA^O~Bpyg==aKz7nUH*P3bc0**5){A0xq_}4|sa;j2k`Z7=j zuQfrq=r+o#pu$uT7^h@YCZx1kzR+n+lX}&0Ty1e&8Mn=rlg(d2HbAl3e*ylg&(8dn zE>jFFQdW|=f4zzH80|-&0Iu&mKh5x6Bhot~Wt_6jl9xi2mikqtp9ius8Plh|W=m?Z z^U_NenDRv6L^E$W(UfX}-i{z@6jPsHL_KsKvEeu1tXBD2Go(=WRNy$YW~DzB$8kdU zfQ^hqYx)AU+cD+8UwEzQ-$GfLTGQEH-jZti*ItvDi#~CMu@G8$ldT4|>#O}SzP!|b zq8X;-;Tq}#Nr&IjS=OP9dj$e3ZpTL>Skg1UgLI_&Ig7RsdbEsSxrBAJRX(WFU0Cs3 ztk;gCUZSH)UkWg%l@(QR0=c;rDc%)oT`%R+Ks5ct|gltV_-Kj1CQ={{J8RR37+ zC1y#~_9uiG)O$1fZK2p`i7jzY{~tppG1;8>js6PaTrl>(gn04eTK~4t+z^#Lt-R`- za`s_Mj_t=5Dw`?4_uPnOMrEtZhtACtLA+rBT&J@Afx7CS#ncl~W(1W_} z(Kvp3n*w)7a=^R|@c$*DW|_B|#k8DxHiaQwq_*POV-~%Y7PVv3X}!%^-GzD_Wq_=& zp*6)A)3S*}F@3G=mLi{%J3`qGUx1c4u)*#SG2H@6tvRy9?ik<>aVN;whkYj7%}9e`>HPfw`dSJZxD%Uv+4e z1xsY>gOt64U;aEbTfvPn{n4*FMRRb7jFXfc7$j+|E9XuRcA`vOlchTJVd!UtkNCYf zmj4y}IsWbr4zUXE4bz)`vVvliQU;18IJP3C5O^YVJfy^96yDcJ?tF$Xp^uw?>5Fc*kJ9raZFm{`{h`M~ z?-thi|Gn@*{|MK7rp^A}6>jyPLtU^DWjgvzq%cb>@Q#%;%QQX^QglKd>Ina;km?j1 z8XF(yM0wPy@!Yh*I=S^#w16P6AT%;>q}_cX8nrGNCHg|JG&wX~uKQl}?w-CUL(hH# zs^=A~LT(+DTYqwMf?V%Zl+J~K7JHg!*@r8H^pq4*$~Av4*Zk8>D#Tlk8nZcSTDro> zUzXeLkMb7OBYclnTcP996;v6`-@K_h39X%EzT+6Y2>|*BH@b*I}J~=&w_$`&T6rmb-8zZCOwJv9UjRr{~GOni^N^W-RjR{@NpP-b)9h6V0>7To>c!e23KNy zV(v`$B8*A>)pC5oeK?-)!kFNFJ)VCfp1=1CY?tbFzk=}!#JA(CSo=1Nmtp?P{#d(p z1JaYQTj_oTV}hT=_yOIMtA}Io9T*e%L5xX1Y5)c!`QMi`Fsl{7{1!tT^#8kv&`kb~ gt^ALZ)6zHJ{NzIwB*#Gi^ZP#>_#Y1ZKg@yu8=qM4h5!Hn literal 0 HcmV?d00001 diff --git a/firmware/firmware release notes.txt b/firmware/firmware release notes.txt new file mode 100644 index 0000000..66ae32a --- /dev/null +++ b/firmware/firmware release notes.txt @@ -0,0 +1,27 @@ +Firmware release process: + +nightly: +make all +push build_*** folders + + +full version release: update APP_VERSION in shared_dict_bootloader.h so all firmwares know their version +make all +stm32 firmwares: address 0x800 insert "AV##" number of application version and rename file to match + Create DFU files so people have that as an update option + Creating required .hex files with AV## requires opening the binary with STM32 ST-LINK utility + and then saving the binary as .hex which can be used to then create .dfu file +commit build_*** folders +update inlretro script app version number checked to suggest to people to update their firmware + + +RELEASE HISTORY: + +AV03: Long overdue release.. Fixed N64 dumping including delays for RE2 needed in testing + MMC2/4 flashing support, NES GTROM support, action53 & easyNSF tssop flash support, and others.. + +AV02: Late versioning, but was a build from ~Feb 2018 I was recommending people try with early + N64 and GBA support. + +AV01/00: Oldies, don't really recall. Just the begining of updates without bootloader + diff --git a/firmware/source/bootload.c b/firmware/source/bootload.c index e49ef7b..114a2b2 100644 --- a/firmware/source/bootload.c +++ b/firmware/source/bootload.c @@ -120,18 +120,21 @@ uint8_t bootload_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8 //can use the pointer to read 4bytes at 0x08000800 //which is the begining of application code space //should include ascii "AV00" with the digits for version -// case GET_APP_VER: -// rdata[RD_LEN] = WORD_LEN; -// rdata[RD0] = app_version[0]; -// rdata[RD1] = app_version[1]; -// rdata[RD2] = app_version[2]; -// rdata[RD3] = app_version[3]; -// break; +#endif //STM_CORE + //application version supported by all devices starting with AV03 + case GET_APP_VER: + rdata[RD_LEN] = BYTE_LEN; + rdata[RD0] = APP_VERSION; //defined in shared_dict_bootload.h + //rdata[RD_LEN] = WORD_LEN; + //rdata[RD0] = (uint8_t)'A'; + //rdata[RD1] = (uint8_t)'V'; + //rdata[RD2] = (uint8_t)'0'; + //rdata[RD3] = (uint8_t)'3'; + break; default: //opcode doesn't exist return ERR_UNKN_BOOTLOAD_OPCODE; -#endif } return SUCCESS; diff --git a/firmware/source/dump.c b/firmware/source/dump.c index 41793af..4eb0096 100644 --- a/firmware/source/dump.c +++ b/firmware/source/dump.c @@ -25,6 +25,18 @@ uint8_t dump_buff( buffer *buff ) { buff->last_idx, ~FALSE ); break; + case NESCPU_4KB_TOGGLE: + //mapper lower nibble specifies NES CPU A12-15 + if (buff->mapper > 0x0F) { + //mapper can only be 4bits (0-15) + return ERR_BUFF_PART_NUM_RANGE; + } + addrH |= (buff->mapper << 4); // 8 << 12 = shift by 4 + buff->cur_byte = nes_cpu_page_rd_toggle( buff->data, addrH, buff->id, + //id contains MSb of page when <256B buffer + buff->last_idx, ~FALSE ); + break; + case NESPPU_1KB: //mapper bits 2-5 specifies NES PPU A10-13 if (buff->mapper & 0xC3) { //make sure bits 7, 6, 1, & 0 aren't set @@ -36,6 +48,17 @@ uint8_t dump_buff( buffer *buff ) { buff->last_idx, ~FALSE ); break; + case NESPPU_1KB_TOGGLE: + //mapper bits 2-5 specifies NES PPU A10-13 + if (buff->mapper & 0xC3) { //make sure bits 7, 6, 1, & 0 aren't set + //mapper can only have bits 2-5 set + return ERR_BUFF_PART_NUM_RANGE; + } + addrH |= buff->mapper; // PPU A10-13 get set based on mapper + buff->cur_byte = nes_ppu_page_rd_toggle( buff->data, addrH, buff->id, + buff->last_idx, ~FALSE ); + break; + case NESCPU_PAGE: //mapper byte specifies CPU A15-8 addrH |= buff->mapper; @@ -149,6 +172,7 @@ uint8_t dump_buff( buffer *buff ) { nes_cpu_wr(0x8000, bank); //outer bank nes_cpu_wr(0x5000, 0x00); //chr reg select act like CNROM } + /* migrated to script controlled if (buff->mapper == EZNSF) { //addrH &= 0b1000 1111 A14-12 must always be low addrH &= 0x8F; @@ -160,6 +184,7 @@ uint8_t dump_buff( buffer *buff ) { buff->cur_byte = nes_cpu_page_rd_poll( buff->data, addrH, buff->id, //id contains MSb of page when <256B buffer buff->last_idx, ~FALSE ); + */ break; case CHRROM: //$0000 diff --git a/firmware/source/flash.c b/firmware/source/flash.c index 59d044c..e6d3943 100644 --- a/firmware/source/flash.c +++ b/firmware/source/flash.c @@ -1,5 +1,6 @@ #include "flash.h" +//TODO replace all use of this function with write_page_verify below uint8_t write_page( uint8_t addrH, buffer *buff, write_funcptr wr_func ) { uint16_t cur = buff->cur_byte; @@ -402,9 +403,20 @@ uint8_t flash_buff( buffer *buff ) { if (buff->mapper == MMC3) { write_page_verify( (0x80+addrH), buff, mmc3_prgrom_flash_wr); } + if (buff->mapper == MMC3S) { + write_page_verify( (0x80+addrH), buff, mmc3s_prgrom_flash_wr); + } + //SOP-44 + /* if (buff->mapper == MMC4) { write_page( (0x80+addrH), buff, mmc4_prgrom_sop_flash_wr); } + */ + //TODO use mapper variant to differentiate between the two + //PLCC-32 + if (buff->mapper == MMC4) { + write_page_verify( (0x80+addrH), buff, mmc4_prgrom_flash_wr); + } if (buff->mapper == MM2) { //addrH &= 0b1011 1111 A14 must always be low addrH &= 0x3F; @@ -430,6 +442,28 @@ uint8_t flash_buff( buffer *buff ) { write_page_cninja( 0, addrH, 0xD555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd ); } if (buff->mapper == A53) { + + //enter unlock bypass mode + nes_m2_high_wr( 0x8AAA, 0xAA ); + nes_m2_high_wr( 0x8555, 0x55 ); + nes_m2_high_wr( 0x8AAA, 0x20 ); + + write_page_verify( (0x80+addrH), buff, a53_tssop_prgrom_flash_wr); + + //exit unlock bypass mode + nes_m2_high_wr( 0x8000, 0x90 ); + nes_m2_high_wr( 0x8000, 0x00 ); + //reset the flash chip, supposed to exit too + nes_m2_high_wr( 0x8000, 0xF0 ); + + ////////////// + // OLD WAY, still used by PLCC flash + // need to uncomment and reflash firmware to get it to work + // Long term solution is to have a mapper variant for each + // or PRG-ROM part number type variable..? + ////////////// + /* + //write bank value to bank table //page_num shift by 7 bits A15 >> A8(0) bank = (buff->page_num)>>7; @@ -446,11 +480,14 @@ uint8_t flash_buff( buffer *buff ) { //break; //WORKS PLCC Action53: //had problems later not all bytes getting programmed.. - //write_page_old( bank, (0x80 | addrH), 0xD555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd ); + write_page_old( bank, (0x80 | addrH), 0xD555, 0xAAAA, buff, nes_cpu_wr, nes_cpu_rd ); //TSSOP-28 action53: - write_page_a53( bank, (0x80 | addrH), buff, nes_cpu_wr, nes_cpu_rd ); + //write_page_a53( bank, (0x80 | addrH), buff, nes_m2_high_wr, nes_cpu_rd ); + //write_page_verify( (0x80+addrH), buff, mmc3_prgrom_flash_wr); + */ } if (buff->mapper == EZNSF) { + /* //addrH &= 0b1000 1111 A14-12 must always be low addrH &= 0x8F; //write bank value to bank table @@ -459,6 +496,19 @@ uint8_t flash_buff( buffer *buff ) { nes_cpu_wr(0x5000, bank); //bank @ $8000-8FFF write_page_tssop( bank, (0x80 | addrH), buff, nes_cpu_wr, nes_cpu_rd ); + */ + //enter unlock bypass mode + nes_m2_high_wr( 0x9AAA, 0xAA ); + nes_m2_high_wr( 0x9555, 0x55 ); + nes_m2_high_wr( 0x9AAA, 0x20 ); + + write_page_verify( (0x90+addrH), buff, tssop_prgrom_flash_wr); + + //exit unlock bypass mode + nes_m2_high_wr( 0x9000, 0x90 ); + nes_m2_high_wr( 0x9000, 0x00 ); + //reset the flash chip, supposed to exit too + nes_m2_high_wr( 0x9000, 0xF0 ); } if (buff->mapper == GTROM) { write_page_verify( (0x80+addrH), buff, gtrom_prgrom_flash_wr); diff --git a/firmware/source/io.c b/firmware/source/io.c index 7353d47..c475ef3 100644 --- a/firmware/source/io.c +++ b/firmware/source/io.c @@ -56,8 +56,10 @@ uint8_t io_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *rd #ifdef N64_CONN case N64_INIT: n64_init(); break; #endif + #ifdef STM_CORE case SWIM_INIT: return swim_init(operand); break; + #endif case JTAG_INIT: return jtag_init(operand); break; @@ -177,14 +179,14 @@ void nes_init() //enable control outputs and disable memories //PRG-ROM - ROMSEL_OP(); ROMSEL_HI(); + ROMSEL_OP(); //WRAM (and state of m2 during first half of CPU cycle) - M2_OP(); M2_LO(); + M2_OP(); //CPU RD - PRGRW_OP(); PRGRW_HI(); + PRGRW_OP(); //other control pins are inputs, leave as IP pullup from reset @@ -192,10 +194,10 @@ void nes_init() //prior to setting PPU A13 & /A13 which are /CE pins //doing this helps ensure data bus is clear before //using it for AHL clocking - CSRD_OP(); CSRD_HI(); - CSWR_OP(); + CSRD_OP(); CSWR_HI(); + CSWR_OP(); //memories are now disabled Data bus should be clear DATA_ENABLE(); @@ -466,14 +468,17 @@ void sega_init() //memories are now disabled Data bus should be clear - // SEGA D0-7 - DATA_ENABLE(); - DATA_IP_PU(); - - //SEGA D8-15 - HADDR_ENABLE(); - HADDR_IP(); - HADDR_PU(); +// // SEGA D0-7 +// DATA_ENABLE(); +// DATA_IP_PU(); +// +// //SEGA D8-15 +// HADDR_ENABLE(); +// HADDR_IP(); +// HADDR_PU(); + DATA16_ENABLE(); +// DATA16_IP(); +// DATA16_PU(); } #endif @@ -547,6 +552,7 @@ void n64_init() //that swim lane will be used for all subsequent communications. //TODO setup to control SWIM pin as (psuedo) open drain. //if swim lane is unknown or other problem return error, else return SUCCESS +#ifdef STM_CORE uint8_t swim_init( uint8_t swim_lane ) { switch (swim_lane) { @@ -587,6 +593,7 @@ uint8_t swim_init( uint8_t swim_lane ) } return SUCCESS; } +#endif //Initialization of JTAG communications //the JTAG pin depends on INL board design. diff --git a/firmware/source/main.c b/firmware/source/main.c index df2521b..37ded83 100644 --- a/firmware/source/main.c +++ b/firmware/source/main.c @@ -18,6 +18,22 @@ #endif +#ifdef AVR_CORE +void wdt_off(void) +{ +// __disable_interrupt(); +// __watchdog_reset(); + /* Clear WDRF in MCUSR */ + MCUSR &= ~(1< would be ~50cycles + //But that seems crazy long... and not necessary + NOP(); NOP(); NOP(); NOP(); + NOP(); NOP(); NOP(); NOP(); +// NOP(); NOP(); NOP(); NOP(); +// NOP(); NOP(); NOP(); NOP(); +// NOP(); NOP(); NOP(); NOP(); +// NOP(); NOP(); NOP(); NOP(); +// NOP(); NOP(); NOP(); NOP(); +// NOP(); NOP(); NOP(); NOP(); + return; } @@ -135,6 +148,13 @@ uint16_t n64_rd() NOP(); NOP(); + //added more delay helps RE2 second read and some other bad reads + NOP(); + NOP(); + + //N64 console appears to have a /RD low time of 300nsec + //But that seems crazy long... and not necessary + read = ADDR_VAL; CSRD_HI(); @@ -149,9 +169,23 @@ uint8_t n64_page_rd( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len ) uint16_t read; uint8_t i; - n64_latch_addr( addrH<<8 | first ); + //need to set the addr every 512Bytes, else will wrap around + //effectively every 0x0200 bytes, the address needs latched + //read0 addrH=0 first=0 (128B read) + //read0 addrH=0 first=128 (128B read) + //read0 addrH=1 first=0 (128B read) <-- odd addrH values don't need address latched + //read0 addrH=1 first=128 (128B read) + //read0 addrH=2 first=0 (128B read) <== latch addrH again + if ((first == 0) && (addrH|0x01)) + n64_latch_addr( addrH<<8 | first ); + //only need to latch address on even buffers + //odd buffers are reading second half of 256Byte page, + //so the previous latching should be valid //now can call n64_rd to get 16bits of data + + //needed a delay between latching address, and reading data for the first time + //NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); // --> Moved to the n64_latch_addr function for( i=0; i<=len; i++ ) { @@ -160,14 +194,13 @@ uint8_t n64_page_rd( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len ) //read 16bits read = n64_rd(); - //store lower byte little endian - //now stores entire 16bit read at once + //store upper byte big endian data[i] = read>>8; - //upper byte + //lower byte i++; - //store upper byte + //store lower byte data[i] = read; } diff --git a/firmware/source/nes.c b/firmware/source/nes.c index 2e43df2..2b1ccee 100644 --- a/firmware/source/nes.c +++ b/firmware/source/nes.c @@ -51,9 +51,12 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r case NES_CPU_WR: nes_cpu_wr( operand, miscdata ); break; - case NES_M2_LOW_WR: + case M2_LOW_WR: nes_m2_low_wr( operand, miscdata ); break; + case M2_HIGH_WR: + nes_m2_high_wr( operand, miscdata ); + break; case NES_DUALPORT_WR: nes_dualport_wr( operand, miscdata ); break; @@ -99,6 +102,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r case MMC4_PRG_SOP_FLASH_WR: mmc4_prgrom_sop_flash_wr( operand, miscdata ); break; + case MMC4_PRG_FLASH_WR: + mmc4_prgrom_flash_wr( operand, miscdata ); + break; case MMC4_CHR_FLASH_WR: mmc4_chrrom_flash_wr( operand, miscdata ); break; @@ -111,6 +117,9 @@ uint8_t nes_call( uint8_t opcode, uint8_t miscdata, uint16_t operand, uint8_t *r case GTROM_PRG_FLASH_WR: gtrom_prgrom_flash_wr( operand, miscdata ); break; + case MMC3S_PRG_FLASH_WR: + mmc3s_prgrom_flash_wr( operand, miscdata ); + break; //8bit return values: @@ -397,13 +406,14 @@ uint8_t nes_cpu_rd( uint16_t addr ) ADDR_SET(addr); //set M2 and /ROMSEL - M2_HI(); if( addr >= 0x8000 ) { //addressing cart rom space ROMSEL_LO(); //romsel trails M2 during CPU operations } + M2_HI(); //couple more NOP's waiting for data //zero nop's returned previous databus value +//wdt_reset(); NOP(); //one nop got most of the bits right NOP(); //two nop got all the bits right NOP(); //add third nop for some extra @@ -455,14 +465,23 @@ void nes_cpu_wr( uint16_t addr, uint8_t data ) DATA_SET(data); //set M2 and /ROMSEL - M2_HI(); +//this was bad for $6000 WRAM decoding! +//we're creating our own /ROMSEL delay which can cause problems!!! if( addr >= 0x8000 ) { //addressing cart rom space ROMSEL_LO(); //romsel trails M2 during CPU operations } + M2_HI(); //give some time NOP(); NOP(); + NOP(); //Writting to MMC4 SRAM 2 NOPs wasn't enough.. + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); //latch data to cart memory/mapper M2_LO(); @@ -531,6 +550,69 @@ void nes_m2_low_wr( uint16_t addr, uint8_t data ) } +/* Desc:NES CPU Write, but M2 remains high + * Created for action53 mapper where board's level shifter /OE pin + * is driven by inverse of M2. So for address to be applied to flash, + * M2 must be high. + * A15 decoded to enable /ROMSEL + * Note:addrH bit7 has no effect (ends up on PPU /A13) + * EXP0 as-is + * Pre: nes_init() setup of io pins + * Post:data latched by anything listening on the bus + * address left on bus + * data left on bus, but pullup only + * Rtn: None + */ +void nes_m2_high_wr( uint16_t addr, uint8_t data ) +{ + M2_HI(); + + //Float EXP0 as it should be in NES + //EXP0_IP_FL(); + + //need for whole function + //_DATA_OP(); + + //set addrL + //ADDR_OUT = addrL; + //latch addrH + //DATA_OUT = addrH; + //_AHL_CLK(); + ADDR_SET(addr); + + //PRG R/W LO + PRGRW_LO(); + + //put data on bus + DATA_OP(); + DATA_SET(data); + + //set M2 and /ROMSEL +// M2_HI(); + if( addr >= 0x8000 ) { //addressing cart rom space + ROMSEL_LO(); //romsel trails M2 during CPU operations + } + + //give some time + NOP(); + NOP(); + + //latch data to cart memory/mapper +// M2_LO(); + ROMSEL_HI(); + + //retore PRG R/W to default + PRGRW_HI(); + + //Free data bus + DATA_IP(); + + //return M2 to default state + M2_LO(); +} + + + /* Desc:NES PPU Read * decode A13 from addrH to set /A13 as expected @@ -775,6 +857,10 @@ uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8 } else { usbPoll(); //Call usbdrv.h usb polling while waiting for data } + + //add some delay for 4-8MByte 3v flash + NOP(); + //latch data DATA_RD(data[i]); //set lower address bits @@ -791,6 +877,61 @@ uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8 return i; } + +uint8_t nes_cpu_page_rd_toggle( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ) +{ + uint8_t i; + + //set address bus + ADDRH(addrH); + + //set M2 and /ROMSEL + if( addrH >= 0x80 ) { //addressing cart rom space + ROMSEL_LO(); //romsel trails M2 during CPU operations + } + + //set lower address bits + ADDRL(first); //doing this prior to entry and right after latching + //extra NOP was needed on stm6 as address hadn't settled in time for the very first read + NOP(); + //gives longest delay between address out and latching data + for( i=0; i<=len; i++ ) { + M2_HI(); + //testing shows that having this if statement doesn't affect overall dumping speed + if ( poll == FALSE ) { + NOP(); //couple more NOP's waiting for data + NOP(); //one prob good enough considering the if/else + } else { + usbPoll(); //Call usbdrv.h usb polling while waiting for data + } + + //add some delay for 4-8MByte 3v flash + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); + NOP(); + + //latch data + DATA_RD(data[i]); + M2_LO(); + //set lower address bits + //ADDRL(++first); THIS broke things, on stm adapter because macro expands it twice! + first++; + ADDRL(first); + } + + //return bus to default + M2_LO(); + ROMSEL_HI(); + + //return index of last byte read + return i; +} + /* Desc:NES PPU Page Read with optional USB polling * decode A13 from addrH to set /A13 as expected * if poll is true calls usbdrv.h usbPoll fuction @@ -845,6 +986,64 @@ uint8_t nes_ppu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8 return i; } + +uint8_t nes_ppu_page_rd_toggle( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ) +{ + uint8_t i; + + if (addrH < 0x20) { //below $2000 A13 clear, /A13 set + //ADDRH(addrH | PPU_A13N_BYTE); + //Don't do weird stuff like above! logic inside macro expansions can have weird effects!! + addrH |= PPU_A13N_BYTE; + ADDRH(addrH); + } else { //above PPU $1FFF, A13 set, /A13 clear + ADDRH(addrH); + } + + //set lower address bits + ADDRL(first); //doing this prior to entry and right after latching + + //dual port assumes address is valid shortly after /RD & /WR are both high + CSRD_LO(); + CSRD_HI(); + NOP(); + NOP(); + NOP(); + //now it'll go fetch the current address + + for( i=0; i<=len; i++ ) { + //set CHR /RD and /WR + CSRD_LO(); + //couple more NOP's waiting for data + NOP(); + NOP(); + + if ( poll == FALSE ) { + NOP(); //one prob good enough considering the if/else + NOP(); + } else { + usbPoll(); + } + + //latch data + DATA_RD(data[i]); + + //set lower address bits + first ++; + ADDRL(first); + + //return bus to default + //also triggers fetch of the current address + CSRD_HI(); + NOP(); + NOP(); + } + + + //return index of last byte read + return i; +} + /* Desc:NES PPU Page Write Random from LFSR * decode A13 from addrH to set /A13 as expected * NOTE: this is a /WE controlled write @@ -1203,7 +1402,7 @@ uint8_t mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data ) nes_cpu_wr(addr, data); //reset $8000 bank select register to a CHR reg - nes_cpu_wr(0x8000, 0x00); + nes_cpu_wr(0x8000, 0x02); //0x02 also maintains flash mode for custom do { rv = nes_cpu_rd(addr); @@ -1213,6 +1412,21 @@ uint8_t mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data ) return rv; } +/* Desc:NES MMC3 PRG-ROM FLASH Write + * Pre: nes_init() setup of io pins + * MMC3 must be properly inialized for flashing + * addr must be between $8000-9FFF as prescribed by init + * Post:Byte written and ready for another write + * Rtn: None + */ +uint8_t mmc3s_prgrom_flash_wr( uint16_t addr, uint8_t data ) +{ + + uint8_t rv; + + + return rv; +} /* Desc:NES MMC3 CHR-ROM FLASH Write * Pre: nes_init() setup of io pins @@ -1274,6 +1488,40 @@ void mmc4_prgrom_sop_flash_wr( uint16_t addr, uint8_t data ) return; } +/* Desc:NES MMC4 PRG-ROM FLASH Write for standard PLCC SST flash + * Pre: nes_init() setup of io pins + * MMC4 must be properly inialized for flashing + * addr must be between $8000-BFFF as prescribed by init + * desired bank must already be selected + * cur_bank must be set to desired bank for recovery + * Post:Byte written and ready for another write + * Rtn: None + */ +uint8_t mmc4_prgrom_flash_wr( uint16_t addr, uint8_t data ) +{ + + uint8_t rv; + + //unlock and write data SOP-44 flash + nes_cpu_wr(0xD555, 0xAA); + nes_cpu_wr(0xEAAA, 0x55); + nes_cpu_wr(0xD555, 0xA0); + nes_cpu_wr(addr, data); //corrupts bank register if addr $A000-AFFF + + //recover bank register as data write would have corrupted + nes_cpu_wr(0xA000, cur_bank); + + do { + rv = nes_cpu_rd(addr); + usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data + } while (rv != nes_cpu_rd(addr)); + //TODO handle timeout + + return rv; +} + + + /* Desc:NES MMC4 CHR-ROM FLASH Write * Pre: nes_init() setup of io pins @@ -1418,6 +1666,10 @@ uint8_t gtrom_prgrom_flash_wr( uint16_t addr, uint8_t data ) { uint8_t rv; + //uint8_t rv1; + + //select bank, don't think needed, but having problems... + nes_cpu_wr(0x5000, cur_bank); //unlock the flash nes_cpu_wr(0xD555, 0xAA); @@ -1427,6 +1679,46 @@ uint8_t gtrom_prgrom_flash_wr( uint16_t addr, uint8_t data ) //write the data nes_cpu_wr(addr, data); +// nes_cpu_wr(0x5000, cur_bank); + + /* + do { + rv = nes_cpu_rd(0x8000); + rv1 = nes_cpu_rd(0x8000); + usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data + //} while (rv != nes_cpu_rd(8000)); + } while (rv != rv1); + */ +// while( data != nes_cpu_rd(addr)) { } + + + //requires final data to be present + rv = nes_cpu_rd(addr); + while (rv != data) { + rv = nes_cpu_rd(addr); + } + + return rv; +} + +/* Desc:NES ACTION53 TSSOP PRG-ROM FLASH Write + * Pre: nes_init() setup of io pins + * Flash must already be in unlock bypass mode + * Post:Byte written and ready for another write + * Rtn: None + */ +uint8_t a53_tssop_prgrom_flash_wr( uint16_t addr, uint8_t data ) +{ + + uint8_t rv; + + //chr reg select act like CNROM & enable flash writes + nes_cpu_wr(0x5000, 0x54); + + //unlock and write data + nes_m2_high_wr(addr, 0xA0); + nes_m2_high_wr(addr, data); + do { rv = nes_cpu_rd(addr); usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data @@ -1435,5 +1727,26 @@ uint8_t gtrom_prgrom_flash_wr( uint16_t addr, uint8_t data ) return rv; } +/* Desc:NES TSSOP PRG-ROM FLASH Write + * Pre: nes_init() setup of io pins + * Flash must already be in unlock bypass mode + * Rtn: None + */ +uint8_t tssop_prgrom_flash_wr( uint16_t addr, uint8_t data ) +{ + + uint8_t rv; + + //unlock and write data + nes_m2_high_wr(addr, 0xA0); + nes_m2_high_wr(addr, data); + + do { + rv = nes_cpu_rd(addr); + usbPoll(); //orignal kazzo needs this frequently to slurp up incoming data + } while (rv != nes_cpu_rd(addr)); + + return rv; +} #endif //NES_CONN diff --git a/firmware/source/nes.h b/firmware/source/nes.h index 06f5251..ec5fd7d 100644 --- a/firmware/source/nes.h +++ b/firmware/source/nes.h @@ -16,13 +16,17 @@ uint8_t emulate_nes_cpu_rd( uint16_t addr ); uint8_t nes_cpu_rd( uint16_t addr ); void nes_cpu_wr( uint16_t addr, uint8_t data ); void nes_m2_low_wr( uint16_t addr, uint8_t data ); +//TODO combine m2_low & m2_high into one function with an arg +void nes_m2_high_wr( uint16_t addr, uint8_t data ); uint8_t nes_ppu_rd( uint16_t addr ); void nes_ppu_wr( uint16_t addr, uint8_t data ); uint8_t nes_dualport_rd( uint16_t addr ); void nes_dualport_wr( uint16_t addr, uint8_t data ); //uint8_t ciram_a10_mirroring( void ); uint8_t nes_cpu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t last, uint8_t poll ); +uint8_t nes_cpu_page_rd_toggle( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t last, uint8_t poll ); uint8_t nes_ppu_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t last, uint8_t poll ); +uint8_t nes_ppu_page_rd_toggle( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ); uint8_t nes_dualport_page_rd_poll( uint8_t *data, uint8_t addrH, uint8_t first, uint8_t len, uint8_t poll ); void mmc1_wr( uint16_t addr, uint8_t data, uint8_t reset ); @@ -34,13 +38,18 @@ void mmc1_chrrom_flash_wr( uint16_t addr, uint8_t data ); void unrom_prgrom_flash_wr( uint16_t addr, uint8_t data ); void cnrom_chrrom_flash_wr( uint16_t addr, uint8_t data ); uint8_t mmc3_prgrom_flash_wr( uint16_t addr, uint8_t data ); +uint8_t mmc3s_prgrom_flash_wr( uint16_t addr, uint8_t data ); void mmc3_chrrom_flash_wr( uint16_t addr, uint8_t data ); void mmc4_prgrom_sop_flash_wr( uint16_t addr, uint8_t data ); +uint8_t mmc4_prgrom_flash_wr( uint16_t addr, uint8_t data ); +void mmc2_prgrom_flash_wr( uint16_t addr, uint8_t data ); void mmc4_chrrom_flash_wr( uint16_t addr, uint8_t data ); void cdream_chrrom_flash_wr( uint16_t addr, uint8_t data ); uint8_t map30_prgrom_flash_wr( uint16_t addr, uint8_t data ); uint8_t gtrom_prgrom_flash_wr( uint16_t addr, uint8_t data ); void ppu_page_wr_lfsr( uint16_t addr, uint8_t data ); +uint8_t a53_tssop_prgrom_flash_wr( uint16_t addr, uint8_t data ); +uint8_t tssop_prgrom_flash_wr( uint16_t addr, uint8_t data ); diff --git a/firmware/source/swim.c b/firmware/source/swim.c index c7ee53d..7cf9da4 100644 --- a/firmware/source/swim.c +++ b/firmware/source/swim.c @@ -1,5 +1,7 @@ #include "swim.h" +#ifdef STM_CORE + //================================================================================================= // // SWIM operations @@ -475,3 +477,5 @@ __asm("stream_end:\n\t"); return ACK; } */ + +#endif diff --git a/firmware/source/usb.c b/firmware/source/usb.c index 0ca3418..8495eb7 100644 --- a/firmware/source/usb.c +++ b/firmware/source/usb.c @@ -150,9 +150,11 @@ USBSETUP uint16_t usbFunctionSetup(uint8_t data[8]) { break; #endif + #ifdef STM_CORE case DICT_SWIM: rv[RETURN_ERR_IDX] = swim_call( spacket->opcode, spacket->miscdata, spacket->operand, &rv[RETURN_LEN_IDX] ); break; + #endif case DICT_JTAG: rv[RETURN_ERR_IDX] = jtag_call( spacket->opcode, spacket->miscdata, spacket->operand, &rv[RETURN_LEN_IDX] ); diff --git a/host/scripts/app/dict.lua b/host/scripts/app/dict.lua index 1271288..596d094 100644 --- a/host/scripts/app/dict.lua +++ b/host/scripts/app/dict.lua @@ -629,7 +629,7 @@ local function jtag( opcode, operand, misc, data ) end -- external call for bootload dictionary -local function bootload( opcode, operand, misc, data ) +local function bootload( opcode, operand, misc, data, permiterror ) assert ( op_bootload[opcode] , "\nERROR undefined opcode: " .. opcode .. " must be defined in shared_dict_bootload.h") @@ -657,7 +657,14 @@ local function bootload( opcode, operand, misc, data ) end --print("error:", error_code, "data_len:", data_len) - assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code) + if not permiterror then + assert ( (error_code == err_codes["SUCCESS"]), "\n ERROR!!! problem with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code) + else + --called with permission of error + if error_code ~= err_codes["SUCCESS"] then + print("Permitted Error with opcode: " .. opcode .. " operand: " .. operand .. " misc: " .. misc .. " device error code: " .. error_code) + end + end if data_len and data_len ~= (wLength - RETURN_LEN_IDX) then print("WARNING!! Device's return data length:", data_len, "did not match expected:", wLength-RETURN_LEN_IDX) diff --git a/host/scripts/app/flash.lua b/host/scripts/app/flash.lua index 4f1d81d..45a73db 100644 --- a/host/scripts/app/flash.lua +++ b/host/scripts/app/flash.lua @@ -54,7 +54,9 @@ local function write_file( file, sizeKB, map, mem, debug ) local i = 1 local nak = 0 + --print("file is:", file) for bytes in file:lines(buff_size) do + --if debug then print("payload out") end dict.buffer_payload_out( buff_size, bytes ) cur_buff_status = dict.buffer("GET_CUR_BUFF_STATUS") diff --git a/host/scripts/app/fwupdate.lua b/host/scripts/app/fwupdate.lua index 956437b..d2ab057 100644 --- a/host/scripts/app/fwupdate.lua +++ b/host/scripts/app/fwupdate.lua @@ -41,6 +41,23 @@ local function erase_main() end +local function get_fw_appver(printit) + + dict.bootload("SET_PTR_HI", 0x0800) + dict.bootload("SET_PTR_LO", 0x0800) --application version 0x08000800 "AV00" + local av = dict.bootload("RD_PTR_OFFSET") + local ver = dict.bootload("RD_PTR_OFFSET",1) + local avstring = string.format("%s%s%s%s", string.char(av&0x00FF), string.char(av>>8), + string.char(ver&0x00FF), string.char(ver>>8)) + + if (printit) then + print("device firmware app ver:", avstring) + end + + return avstring + +end + --skip is used because there is a ram pointer that often varies between builds --we're never going back to main so this mismatch is allowed local function update_firmware(newbuild, skip, forceup) @@ -55,18 +72,14 @@ local function update_firmware(newbuild, skip, forceup) --TODO read the fwupdater & app version from the provided file --compare to current device and determine if they're compatible - --test let's tinker with SRAM - dict.bootload("SET_PTR_HI", 0x0800) - dict.bootload("SET_PTR_LO", 0x0800) --application version 0x08000800 "AV00" - local av = dict.bootload("RD_PTR_OFFSET") - local ver = dict.bootload("RD_PTR_OFFSET",1) - local avstring = string.format("%s%s%s%s", string.char(av&0x00FF), string.char(av>>8), - string.char(ver&0x00FF), string.char(ver>>8)) + print("current firmware prior to update:") + local avstring = get_fw_appver(true) - if avstring == "AV00" then - print("application version:", avstring) + if string.sub(avstring, 1, 2) ~= "AV" then + print("current firmware is not versioned, may need to update to firmware v2.3 or later using STmicro dfuse") + print("may be running nightly build in which case can probably ignore") else - print("app version", avstring, "unknown, may need to update to firmware v2.3 or later using STmicro dfuse") + print("current firmware", avstring, "expected to support USB update process") end @@ -237,6 +250,7 @@ end -- functions other modules are able to call fwupdate.update_firmware = update_firmware +fwupdate.get_fw_appver = get_fw_appver -- return the module's table return fwupdate diff --git a/host/scripts/gb/mbc1.lua b/host/scripts/gb/mbc1.lua index 4698a81..fd00d54 100644 --- a/host/scripts/gb/mbc1.lua +++ b/host/scripts/gb/mbc1.lua @@ -6,6 +6,7 @@ local mbc1 = {} local dict = require "scripts.app.dict" local dump = require "scripts.app.dump" local flash = require "scripts.app.flash" +local files = require "scripts.app.files" -- file constants local mapname = "MBC1" @@ -69,7 +70,8 @@ local function process(process_opts, console_opts) -- TODO: test the cart if process_opts["test"] then - unsupported("test") + print("no test function yet") + --unsupported("test") end -- Dump the cart to dumpfile @@ -114,6 +116,11 @@ local function process(process_opts, console_opts) assert(file:close()) print("DONE post dumping ROM") + if (files.compare( process_opts["verify_filename"], "ignore/madden96_bank0.gb", true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end end dict.io("IO_RESET") @@ -129,4 +136,4 @@ end mbc1.process = process -- return the module's table -return mbc1 \ No newline at end of file +return mbc1 diff --git a/host/scripts/gb/romonly.lua b/host/scripts/gb/romonly.lua index 7fdd55d..4644d17 100644 --- a/host/scripts/gb/romonly.lua +++ b/host/scripts/gb/romonly.lua @@ -4,6 +4,8 @@ local romonly = {} -- import required modules local dict = require "scripts.app.dict" local dump = require "scripts.app.dump" +local files = require "scripts.app.files" +local jtag = require "scripts.app.jtag" -- file constants local mapname = "ROMONLY" @@ -46,7 +48,25 @@ local function process(process_opts, console_opts) -- test the cart if process_opts["test"] then - unsupported("test") + print("no test function yet") +-- unsupported("test") + + -- 5v - 3v power cycle test + --[[ + dict.io("GB_POWER_3V") + print("GBP high 3v GBA") + jtag.sleep(1) + dict.io("GB_POWER_5V") + print("GBP low 5v GB") + jtag.sleep(1) + dict.io("GB_POWER_3V") + print("GBP high 3v GBA") + jtag.sleep(1) + dict.io("GB_POWER_5V") + print("GBP low 5v GB") + jtag.sleep(1) + print("GBP reset (pullup) = 3v") + --]] end -- dump the cart to dumpfile @@ -89,6 +109,12 @@ local function process(process_opts, console_opts) --close file assert(file:close()) print("DONE post dumping ROM") + + if (files.compare( process_opts["verify_filename"], "ignore/Boxxle.gb", true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end end dict.io("IO_RESET") @@ -105,4 +131,4 @@ end romonly.process = process -- return the module's table -return romonly \ No newline at end of file +return romonly diff --git a/host/scripts/gb/romonly_paul.lua b/host/scripts/gb/romonly_paul.lua new file mode 100644 index 0000000..ce97986 --- /dev/null +++ b/host/scripts/gb/romonly_paul.lua @@ -0,0 +1,296 @@ + +-- create the module's table +local romonly = {} + +-- import required modules +local dict = require "scripts.app.dict" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" +local files = require "scripts.app.files" + +-- file constants +local mapname = "ROMONLY" + +-- local functions + +--read PRG-ROM flash ID +local function rom_manf_id( debug ) + + --init_mapper() + + if debug then print("reading PRG-ROM manf ID") end + + --enter software mode + --ROMSEL controls PRG-ROM /OE which needs to be low for flash writes + --So unlock commands need to be addressed below $8000 + --DISCRETE_EXP0_PRGROM_WR doesn't toggle /ROMSEL by definition though, so A15 is unused + -- 15 14 13 12 + -- 0x5 = 0b 0 1 0 1 -> $5555 + -- 0x2 = 0b 0 0 1 0 -> $2AAA + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0x90) + + --read manf ID + local rv = dict.nes("NES_CPU_RD", 0x8000) + if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end + + --read prod ID + rv = dict.nes("NES_CPU_RD", 0x8001) + if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x8000, 0xF0) + + --verify exited +-- rv = dict.nes("NES_CPU_RD", 0x8001) +-- if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end + +end + + + +--dump the ROM +local function dump_rom( file, rom_size_KB, debug ) + + --ROM ONLY dump all 32KB, most of this code is overkill for no MBC. + -- but follows same format as MBC's + local KB_per_read = 32 --$0000-7FFF is ROM space (32KByte) + local num_reads = rom_size_KB / KB_per_read + local read_count = 0 + local addr_base = 0x00 -- $0000 base address for ROM + + while ( read_count < num_reads ) do + + if debug then print( "dump ROM part ", read_count, " of ", num_reads) end + + dump.dumptofile( file, KB_per_read, addr_base, "GAMEBOY_PAGE", false ) + + read_count = read_count + 1 + end + +end + +--write a single byte to ROM flash +local function wr_flash_byte(addr, value, debug) + + if (addr < 0x8000 or addr > 0xFFFF) then + print("\n ERROR! flash write to PRG-ROM", string.format("$%X", addr), "must be $8000-FFFF \n\n") + return + end + + --send unlock command and write byte + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) + dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xA0) + dict.nes("DISCRETE_EXP0_PRGROM_WR", addr, value) + + local rv = dict.nes("NES_CPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_CPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end + + --TODO handle timeout for problems + + --TODO return pass/fail/info +end + + + +--fast host flash one bank at a time... +--this is controlled from the host side one bank at a time +--but requires specific firmware MMC3 flashing functions +--there is super slow version commented out that doesn't require MMC3 specific firmware code +local function flash_rom(file, rom_size_KB, debug) + + --init_mapper() + + --test some bytes + --wr_flash_byte(0x8000, 0xA5, true) + --wr_flash_byte(0xFFFF, 0x5A, true) + + + print("\nProgramming PRG-ROM flash") + + --most of this is overkill for NROM, but it's how we want to handle things for bigger mappers + local base_addr = 0x8000 --writes occur $8000-9FFF + local bank_size = 32*1024 --MMC3 8KByte per PRG bank + local buff_size = 1 --number of bytes to write at a time + local cur_bank = 0 + local total_banks = rom_size_KB*1024/bank_size + + local byte_num --byte number gets reset for each bank + local byte_str, data, readdata + + while cur_bank < total_banks do + + if (cur_bank %8 == 0) then + print("writting PRG bank: ", cur_bank, " of ", total_banks-1) + end + + --program the entire bank's worth of data + flash.write_file( file, 32, mapname, "PRGROM", false ) + + cur_bank = cur_bank + 1 + end + + print("Done Programming PRG-ROM flash") + +end + + + + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +--local function process( test, read, erase, program, verify, dumpfile, flashfile, verifyfile, mirror) +local function process(process_opts, console_opts) + local test = process_opts["test"] + local read = process_opts["read"] + local erase = process_opts["erase"] + local program = process_opts["program"] + local verify = process_opts["verify"] + local dumpfile = process_opts["dump_filename"] + local flashfile = process_opts["flash_filename"] + local verifyfile = process_opts["verify_filename"] + + local rv = nil + local file + local rom_size = 32 + local ram_size = 0 + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("GAMEBOY_INIT") + + dict.io("GB_POWER_5V") --gameboy carts prob run fine at 3v if want to be safe + +--test the cart + if test then + -- print("Testing ", mapname) + + -- nes.detect_mapper_mirroring(true) + -- print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + -- --nes.read_flashID_prgrom_exp0(true) + -- rom_manf_id(true) + -- --nes.read_flashID_chrrom_8K(true) + -- chrrom_manf_id(true) + end + +--dump the cart to dumpfile + if read then + + print("\nDumping ROM...") + + --init_mapper() + + file = assert(io.open(dumpfile, "wb")) + + --dump cart into file + dump_rom(file, rom_size, false) + + --close file + assert(file:close()) + print("DONE Dumping ROM") + end + + +--erase the cart + if erase then + +-- print("\nErasing ", mapname); +-- +-- --init_mapper() +-- +-- print("erasing PRG-ROM"); +-- dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) +-- dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) +-- dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0x80) +-- dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0xAA) +-- dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x2AAA, 0x55) +-- dict.nes("DISCRETE_EXP0_PRGROM_WR", 0x5555, 0x10) +-- rv = dict.nes("NES_CPU_RD", 0x8000) +-- +-- local i = 0 +-- +-- --TODO create some function to pass the read value +-- --that's smart enough to figure out if the board is actually erasing or not +-- while ( rv ~= 0xFF ) do +-- rv = dict.nes("NES_CPU_RD", 0x8000) +-- i = i + 1 +-- end +-- print(i, "naks, done erasing prg."); +-- +-- print("erasing CHR-ROM"); +-- dict.nes("NES_PPU_WR", 0x1555, 0xAA) +-- dict.nes("NES_PPU_WR", 0x0AAA, 0x55) +-- dict.nes("NES_PPU_WR", 0x1555, 0x80) +-- dict.nes("NES_PPU_WR", 0x1555, 0xAA) +-- dict.nes("NES_PPU_WR", 0x0AAA, 0x55) +-- dict.nes("NES_PPU_WR", 0x1555, 0x10) +-- rv = dict.nes("NES_PPU_RD", 0x0000) +-- +-- i = 0 +-- while ( rv ~= 0xFF ) do +-- rv = dict.nes("NES_PPU_RD", 0x0000) +-- i = i + 1 +-- end +-- print(i, "naks, done erasing chr.\n"); + end + + +--program flashfile to the cart + if program then +-- --open file +-- file = assert(io.open(flashfile, "rb")) +-- --determine if auto-doubling, deinterleaving, etc, +-- --needs done to make board compatible with rom +-- --flash cart +-- flash_rom(file, rom_size, true) +-- --close file +-- assert(file:close()) +-- + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + print("\nPost dumping ROM...") + + --init_mapper() + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump_rom(file, rom_size, false) + + --close file + assert(file:close()) + + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +romonly.process = process + +-- return the module's table +return romonly diff --git a/host/scripts/inlretro2.lua b/host/scripts/inlretro2.lua index 641aa63..e86342d 100644 --- a/host/scripts/inlretro2.lua +++ b/host/scripts/inlretro2.lua @@ -75,17 +75,19 @@ function nes_exec(process_opts, console_opts) mapper30 = require "scripts.nes.mapper30", mapper30v2 = require "scripts.nes.mapper30v2", mmc1 = require "scripts.nes.mmc1", + mmc2 = require "scripts.nes.mmc2", mmc3 = require "scripts.nes.mmc3", mmc4 = require "scripts.nes.mmc4", mmc5 = require "scripts.nes.mmc5", nrom = require "scripts.nes.nrom", unrom = require "scripts.nes.unrom", - gtrom = require "scripts.nes.gtrom" + unrom_tsop = require "scripts.nes.unrom_tsop", + gtrom = require "scripts.nes.gtrom", } - dict.io("IO_RESET") - dict.io("NES_INIT") - nes.detect_mapper_mirroring(true) + --dict.io("IO_RESET") +-- dict.io("NES_INIT") + --nes.detect_mapper_mirroring(true) m = mappers[console_opts["mapper"]] if m == nil then @@ -117,6 +119,23 @@ function main() -- TODO: This should probably be one level up. -- TODO: Ram probably needs a verify file as well? + -- Print application version of the firmware for debug/support + -- Should work on all hardware versions + local dict = require "scripts.app.dict" + local help = require "scripts.app.help" + local appver = help.hex(dict.bootload("GET_APP_VER", nil, nil, nil, true )) + print("firmware app ver request:", appver ) + if appver < "3" then + print("firmware is out of date, recommend updating") + end + +-- this method only works for STM32 based devices and reads version from flash address 0x0800-0800 +-- local fwupdate = require "scripts.app.fwupdate" +-- local appver = fwupdate.get_fw_appver(true) +-- if appver ~= "AV03" then +-- print("new firmware has been released, recommend upgrading") +-- end + -- Always test! local do_test = true @@ -166,7 +185,9 @@ function main() nes = require "scripts.app.nes", gba = require "scripts.gba.basic", genesis = require "scripts.sega.genesis_v1", + --genesis = require "scripts.sega.genesis_v2", snes = require "scripts.snes.v2proto_hirom" + --snes = require "scripts.snes.v2manual_hirom" } local console_exec = consoles[console_name] local console_process_script = console_scripts[console_name] diff --git a/host/scripts/inlretro_inl6fwupdate.lua b/host/scripts/inlretro_inl6fwupdate.lua new file mode 100644 index 0000000..354e55c --- /dev/null +++ b/host/scripts/inlretro_inl6fwupdate.lua @@ -0,0 +1,42 @@ +-- main script that runs application logic and flow + + +-- initial function called from C main +function main () + + + print("\n") + + local dict = require "scripts.app.dict" + local fwupdate = require "scripts.app.fwupdate" + + + + --Firmware update without bootloader + --fwupdate.get_fw_appver(true) + + --active development path (based on makefile in use) + --fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", 0x6DC, false) --INL6 skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", 0x6E8, false) --INL_NES skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", nil, true ) --Know what I'm doing? force the update + + --released INL6 path (big square boards) + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV00.bin") + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV01.bin", 0x6DC, false) --INL6 skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV02.bin", 0x6DC, false) --INL6 skip ram pointer + fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV03.bin", 0x6DC, false) --INL6 skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm.bin", 0x6DC, false) --nightly build + + --released INL_N path (smaller NESmaker boards) + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV00.bin") + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV01.bin", 0x6E8, false) --INL_NES skip ram pointer + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV03.bin", 0x6E8, false) --INL_NES skip ram pointer + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm.bin", 0x6E8, false) --nightly build + + + +end + + +main () + diff --git a/host/scripts/inlretro_inlNESfwupdate.lua b/host/scripts/inlretro_inlNESfwupdate.lua new file mode 100644 index 0000000..816789c --- /dev/null +++ b/host/scripts/inlretro_inlNESfwupdate.lua @@ -0,0 +1,42 @@ +-- main script that runs application logic and flow + + +-- initial function called from C main +function main () + + + print("\n") + + local dict = require "scripts.app.dict" + local fwupdate = require "scripts.app.fwupdate" + + + + --Firmware update without bootloader + --fwupdate.get_fw_appver(true) + + --active development path (based on makefile in use) + --fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", 0x6DC, false) --INL6 skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", 0x6E8, false) --INL_NES skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm/inlretro_stm.bin", nil, true ) --Know what I'm doing? force the update + + --released INL6 path (big square boards) + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV00.bin") + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV01.bin", 0x6DC, false) --INL6 skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV02.bin", 0x6DC, false) --INL6 skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm_AV03.bin", 0x6DC, false) --INL6 skip ram pointer + --fwupdate.update_firmware("../firmware/build_stm6/inlretro_stm.bin", 0x6DC, false) --nightly build + + --released INL_N path (smaller NESmaker boards) + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV00.bin") + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV01.bin", 0x6E8, false) --INL_NES skip ram pointer + fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm_AV03.bin", 0x6E8, false) --INL_NES skip ram pointer + --fwupdate.update_firmware("../firmware/build_stmn/inlretro_stm.bin", 0x6E8, false) --nightly build + + + +end + + +main () + diff --git a/host/scripts/n64/basic.lua b/host/scripts/n64/basic.lua index 05b6770..fac9f8a 100644 --- a/host/scripts/n64/basic.lua +++ b/host/scripts/n64/basic.lua @@ -7,6 +7,7 @@ local dict = require "scripts.app.dict" local dump = require "scripts.app.dump" local flash = require "scripts.app.flash" local help = require "scripts.app.help" +local time = require "scripts.app.time" -- file constants @@ -23,16 +24,24 @@ local function dump_rom( file, rom_size_KB, debug ) local num_reads = rom_size_KB / KB_per_bank local read_count = 0 +-- local read_count = 512 --second half of RE2 --- dict.n64("N64_SET_BANK", bank_base + 0) --- dict.n64("N64_LATCH_ADDR", 0x0000) --- print("read: ", help.hex(dict.n64("N64_RD"))) --- print("read: ", help.hex(dict.n64("N64_RD"))) --- dict.n64("N64_SET_BANK", bank_base + 0) --- dict.n64("N64_LATCH_ADDR", 0x0000) --- dump.dumptofile( file, KB_per_bank, addr_base, "N64_ROM_PAGE", false ) --- dict.n64("N64_RELEASE_BUS") + --[[ + dict.n64("N64_SET_BANK", bank_base + 0) + dict.n64("N64_LATCH_ADDR", 0x0000) + print("read: ", help.hex(dict.n64("N64_RD"))) + print("read: ", help.hex(dict.n64("N64_RD"))) + dict.n64("N64_SET_BANK", bank_base + 0) + dict.n64("N64_LATCH_ADDR", 0x0000) + dump.dumptofile( file, KB_per_bank, addr_base, "N64_ROM_PAGE", false ) + + dict.n64("N64_LATCH_ADDR", 0x0000) + print("read: ", help.hex(dict.n64("N64_RD"))) + print("read: ", help.hex(dict.n64("N64_RD"))) + dict.n64("N64_LATCH_ADDR", 0x0000) + dump.dumptofile( file, KB_per_bank, addr_base, "N64_ROM_PAGE", false ) + --]] while ( read_count < num_reads ) do @@ -85,6 +94,37 @@ local function process(process_opts, console_opts) --test cart by reading manf/prod ID if test then + --read rom header + print("\nN64 attempt to read in rom header:") + + local bank_base = 0x1000 --N64 roms start at address 0x1000_0000 + dict.n64("N64_SET_BANK", bank_base + 0) + + local i = 0, rv + + local header = {} + local header_start = 0x0020 + dict.n64("N64_LATCH_ADDR", header_start) + + local header_len = 32 + while i < header_len do + + rv = dict.n64("N64_RD") + header[i+1] = rv>>8 + i = i+1 + header[i+1] = (rv & 0x00FF) + i = i+1 + end + + i = 1 + while header[i] do + io.write(string.char(header[i])) + --io.write("B-",i,"=",header[i], " ") + i = i+1 + end + print("\n") + + -- print("Testing SNES board"); -- -- --SNES detect HiROM or LoROM & RAM @@ -120,11 +160,14 @@ local function process(process_opts, console_opts) --dump the cart to dumpfile if read then print("\nDumping N64 ROM...") + print("Ouput format is Big Endian (.z64 format)") file = assert(io.open(dumpfile, "wb")) --dump cart into file + time.start() dump_rom(file, rom_size, false) + time.report(rom_size) --close file assert(file:close()) @@ -200,4 +243,4 @@ end n64.process = process -- return the module's table -return n64 \ No newline at end of file +return n64 diff --git a/host/scripts/nes/action53_tsop.lua b/host/scripts/nes/action53_tsop.lua index 683c9f4..927e2d2 100644 --- a/host/scripts/nes/action53_tsop.lua +++ b/host/scripts/nes/action53_tsop.lua @@ -7,6 +7,7 @@ local nes = require "scripts.app.nes" local dict = require "scripts.app.dict" local dump = require "scripts.app.dump" local flash = require "scripts.app.flash" +local files = require "scripts.app.files" local buffers = require "scripts.app.buffers" -- file constants @@ -71,20 +72,145 @@ local function prgrom_manf_id( debug ) if debug then print("reading PRG-ROM manf ID") end --A0-A14 are all directly addressable in CNROM mode --and mapper writes don't affect PRG banking - dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) - dict.nes("NES_CPU_WR", 0x8555, 0x55) - dict.nes("NES_CPU_WR", 0x8AAA, 0x90) +--address doesn't get applied to flash unless M2 is high +--prg_data-addr_oe levelshifter pin is driven by ~M2 + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0x90) rv = dict.nes("NES_CPU_RD", 0x8000) if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end --0x01 rv = dict.nes("NES_CPU_RD", 0x8002) if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end --0xDA(top), 0x5B(bot) --exit software - dict.nes("NES_CPU_WR", 0x8000, 0xF0) + dict.nes("FLASH_3V_WR", 0x8000, 0xF0) end +--host flash one bank at a time... +--this is controlled from the host side one bank at a time +--but requires mapper specific firmware flashing functions +--there is super slow version commented out that doesn't require MMC3 specific firmware code +local function flash_prgrom(file, rom_size_KB, debug) + + init_mapper() + + --test some bytes + --wr_prg_flash_byte(0x0000, 0xA5, true) + --wr_prg_flash_byte(0x0FFF, 0x5A, true) + + print("\nProgramming PRG-ROM flash") + --initial testing of MMC3 with no specific MMC3 flash firmware functions 6min per 256KByte = 0.7KBps + + + local base_addr = 0x8000 --writes occur $8000-9FFF + local bank_size = 32*1024 --in CNROM mode 32KB PRG bank + local buff_size = 1 --number of bytes to write at a time + local cur_bank = 0 + local total_banks = rom_size_KB*1024/bank_size + + local byte_num --byte number gets reset for each bank + local byte_str, data, readdata + + + while cur_bank < total_banks do + + if (cur_bank %8 == 0) then + print("writting PRG bank: ", cur_bank, " of ", total_banks-1) + end + + --write the current bank to the mapper register + --nes_cpu_wr(0x5000, 0x81); //outer reg select mode + dict.nes("NES_CPU_WR", 0x5000, 0x81) + --nes_cpu_wr(0x8000, bank); //outer bank + dict.nes("NES_CPU_WR", 0x8000, cur_bank) + --nes_cpu_wr(0x5000, 0x54); // + dict.nes("NES_CPU_WR", 0x5000, 0x54) + + + --program the entire bank's worth of data + + --[[ This version of the code programs a single byte at a time but doesn't require + -- MMC3 specific functions in the firmware + print("This is slow as molasses, but gets the job done") + byte_num = 0 --current byte within the bank + while byte_num < bank_size do + + --read next byte from the file and convert to binary + byte_str = file:read(buff_size) + data = string.unpack("B", byte_str, 1) + + --write the data + --SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo: + --wr_prg_flash_byte(base_addr+byte_num, data, false) --0.7KBps + + --EASIEST FIRMWARE SPEEDUP: 5x faster, create MMC3 write byte function: + dict.nes("MMC3_PRG_FLASH_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above) + --NEXT STEP: firmware write page/bank function can use function pointer for the function above + -- this may cause issues with more complex algos + -- sometimes cur bank is needed + -- for this to work, need to have function post conditions meet the preconditions + -- that way host intervention is only needed for bank controls + -- Is there a way to allow for double buffering though..? + -- YES! just think of the bank as a complete memory + -- this greatly simplifies things and is exactly where we want to go + -- This is completed below outside the byte while loop @ 39KBps + + if (verify) then + readdata = dict.nes("NES_CPU_RD", base_addr+byte_num) + if readdata ~= data then + print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata) + end + end + + byte_num = byte_num + 1 + end + --]] + + --Have the device write a banks worth of data + --FAST! 13sec for 512KB = 39KBps + flash.write_file( file, bank_size/1024, mapname, "PRGROM", false ) + + cur_bank = cur_bank + 1 + end + + print("Done Programming PRG-ROM flash") + +end + + +--dump the PRG ROM +local function dump_prgrom( file, rom_size_KB, debug ) + + --PRG-ROM dump 32KB at a time in CNROM mode with supervisor register + local KB_per_read = 32 + local num_reads = rom_size_KB / KB_per_read + local read_count = 0 + local addr_base = 0x80 -- $8000 PAGE + + while ( read_count < num_reads ) do + + if debug then print( "dump PRG part ", read_count, " of ", num_reads) end + + --select desired bank(s) to dump + --nes_cpu_wr(0x5000, 0x81); //outer reg select mode + --nes_cpu_wr(0x8000, bank); //outer bank + --nes_cpu_wr(0x5000, 0x00); //chr reg select act like CNROM + dict.nes("NES_CPU_WR", 0x5000, 0x81) + dict.nes("NES_CPU_WR", 0x8000, read_count) + dict.nes("NES_CPU_WR", 0x5000, 0x54) + + --dump bank's worth of data + dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false ) + + read_count = read_count + 1 + end + +end + + + local function read_gift( base, len ) local rv @@ -127,19 +253,19 @@ local function write_gift(base, off) dict.nes("NES_CPU_WR", 0x5000, 0x54) --enter unlock bypass mode - dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) - dict.nes("NES_CPU_WR", 0x8555, 0x55) - dict.nes("NES_CPU_WR", 0x8AAA, 0x20) + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0x20) --write 0xA0 to address of byte to write, then write data - dict.nes("NES_CPU_WR", base+off, 0xA0) - dict.nes("NES_CPU_WR", base+off, 0x00) --end previous line + dict.nes("FLASH_3V_WR", base+off, 0xA0) + dict.nes("FLASH_3V_WR", base+off, 0x00) --end previous line off=off+1 - dict.nes("NES_CPU_WR", base+off, 0xA0) - dict.nes("NES_CPU_WR", base+off, 0x15) --line number..? + dict.nes("FLASH_3V_WR", base+off, 0xA0) + dict.nes("FLASH_3V_WR", base+off, 0x15) --line number..? off=off+1 - dict.nes("NES_CPU_WR", base+off, 0xA0) - dict.nes("NES_CPU_WR", base+off, string.byte("(",1)) --start with open parenth + dict.nes("FLASH_3V_WR", base+off, 0xA0) + dict.nes("FLASH_3V_WR", base+off, string.byte("(",1)) --start with open parenth --off = off + 1 --increase to start of message but index starting at 1 @@ -156,22 +282,22 @@ local function write_gift(base, off) local len = string.len(msg1) while (i <= len) do - dict.nes("NES_CPU_WR", base+off+i, 0xA0) - dict.nes("NES_CPU_WR", base+off+i, string.byte(msg1,i)) --line 1 of message + dict.nes("FLASH_3V_WR", base+off+i, 0xA0) + dict.nes("FLASH_3V_WR", base+off+i, string.byte(msg1,i)) --line 1 of message print("write:", string.byte(msg1,i)) i=i+1 end off = off + i - dict.nes("NES_CPU_WR", base+off, 0xA0) - dict.nes("NES_CPU_WR", base+off, 0x00) --end current line + dict.nes("FLASH_3V_WR", base+off, 0xA0) + dict.nes("FLASH_3V_WR", base+off, 0x00) --end current line off=off+1 - dict.nes("NES_CPU_WR", base+off, 0xA0) - dict.nes("NES_CPU_WR", base+off, 0x16) --line number..? + dict.nes("FLASH_3V_WR", base+off, 0xA0) + dict.nes("FLASH_3V_WR", base+off, 0x16) --line number..? off=off+1 - dict.nes("NES_CPU_WR", base+off, 0xA0) - dict.nes("NES_CPU_WR", base+off, string.byte("(",1)) --start with open parenth + dict.nes("FLASH_3V_WR", base+off, 0xA0) + dict.nes("FLASH_3V_WR", base+off, string.byte("(",1)) --start with open parenth i = 1 @@ -179,16 +305,16 @@ local function write_gift(base, off) len = string.len(msg2) while (i <= len) do - dict.nes("NES_CPU_WR", base+off+i, 0xA0) - dict.nes("NES_CPU_WR", base+off+i, string.byte(msg2,i)) --line 2 of message + dict.nes("FLASH_3V_WR", base+off+i, 0xA0) + dict.nes("FLASH_3V_WR", base+off+i, string.byte(msg2,i)) --line 2 of message print("write:", string.byte(msg2,i)) i=i+1 end off = off + i - dict.nes("NES_CPU_WR", base+off, 0xA0) - dict.nes("NES_CPU_WR", base+off, 0x00) --end current line + dict.nes("FLASH_3V_WR", base+off, 0xA0) + dict.nes("FLASH_3V_WR", base+off, 0x00) --end current line --]] @@ -199,10 +325,10 @@ local function write_gift(base, off) --exit unlock bypass - dict.nes("NES_CPU_WR", 0x8000, 0x90) - dict.nes("NES_CPU_WR", 0x8000, 0x00) + dict.nes("FLASH_3V_WR", 0x8000, 0x90) + dict.nes("FLASH_3V_WR", 0x8000, 0x00) --reset the flash chip - dict.nes("NES_CPU_WR", 0x8000, 0xF0) + dict.nes("FLASH_3V_WR", 0x8000, 0xF0) end @@ -246,6 +372,8 @@ local function process(process_opts, console_opts) --dump the cart to dumpfile if read then + print("\nDumping PRG & CHR ROMs...") + --initialize the mapper for dumping init_mapper(debug) @@ -255,13 +383,16 @@ local function process(process_opts, console_opts) create_header(file, prg_size, chr_size) --dump cart into file - dump.dumptofile( file, prg_size, "A53", "PRGROM", true ) + dump_prgrom(file, prg_size, false) --close file assert(file:close()) + + print("DONE Dumping PRG & CHR ROMs") end --erase the cart +-- erase = nil if erase then --initialize the mapper for erasing @@ -273,12 +404,12 @@ local function process(process_opts, console_opts) --A0-A14 are all directly addressable in CNROM mode --only A0-A11 are required to be valid for tsop-48 --and mapper writes don't affect PRG banking - dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) - dict.nes("NES_CPU_WR", 0x8555, 0x55) - dict.nes("NES_CPU_WR", 0x8AAA, 0x80) - dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) - dict.nes("NES_CPU_WR", 0x8555, 0x55) - dict.nes("NES_CPU_WR", 0x8AAA, 0x10) + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0x80) + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0x10) rv = dict.nes("NES_CPU_RD", 0x8000) local i = 0 @@ -308,7 +439,8 @@ local function process(process_opts, console_opts) --not susceptible to bus conflicts --flash cart - flash.write_file( file, 1024, "A53", "PRGROM", true ) + flash_prgrom(file, prg_size, true) + --close file assert(file:close()) @@ -324,10 +456,17 @@ local function process(process_opts, console_opts) file = assert(io.open(verifyfile, "wb")) --dump cart into file - dump.dumptofile( file, 1024, "A53", "PRGROM", true ) + dump_prgrom(file, prg_size, false) --close file assert(file:close()) + + --compare the flash file vs post dump file + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end end dict.io("IO_RESET") diff --git a/host/scripts/nes/cdream.lua b/host/scripts/nes/cdream.lua index 0bd1e9e..fbb952e 100644 --- a/host/scripts/nes/cdream.lua +++ b/host/scripts/nes/cdream.lua @@ -7,18 +7,38 @@ local dict = require "scripts.app.dict" local nes = require "scripts.app.nes" local dump = require "scripts.app.dump" local flash = require "scripts.app.flash" +local help = require "scripts.app.help" +local time = require "scripts.app.time" +local files = require "scripts.app.files" +local buffers = require "scripts.app.buffers" -- file constants & variables local mapname = "CDREAM" -local banktable_base = 0xCC43 --MTales, bank0 only though.. -local rom_FF_addr = 0xCD42 --this is only present in first bank, so go there first -local rom_00_addr = 0x800C +--local banktable_base = 0xCC43 --MTales, bank0 only though.. +--local banktable_base = 0xCC29 --MTales, bank0 only though.. +----local rom_FF_addr = 0xCD42 --Alfonzo present in each bank write any value here will work if zeros always win +--local rom_FF_addr = 0xCD28 --Alfonzo present in each bank write any value here will work if zeros always win +--local rom_00_addr = 0x800C --Alfonzo present in each bank write 0 here to ensure bank 0 +--local num_prg_banks = 16 --bank table size and organization depends on number of PRG banks + +local banktable_base = 0xFF9E --Alfonzo all banks +local num_prg_banks = 4 --bank table size and organization depends on number of PRG banks +local rom_FF_addr = 0x8008 --Alfonzo present in each bank write any value here will work if zeros always win +local rom_00_addr = 0xFF9E --Alfonzo present in each bank write 0 here to ensure bank 0 --perhaps can use this to always get back to first bank which has a complete bank table --MTales does have a zero in each and every bank at $800C which could be used to get back to bank0 --but for now let's rely on 0 always overriding 1 to allow us to always be able to get to bank0 -- local functions +local function create_header( file, prgKB, chrKB ) + + local mirroring = nes.detect_mapper_mirroring() + + --write_header( file, prgKB, chrKB, mapper, mirroring ) + nes.write_header( file, prgKB, chrKB, op_buffer[mapname], mirroring) +end + --read PRG-ROM flash ID local function prgrom_manf_id( debug ) @@ -129,26 +149,26 @@ local function wr_chr_flash_byte(bank, addr, value, debug) --send unlock command --dict.nes("NES_CPU_WR", rom_00_addr, 0x00) --assumes mcu wins bus conflicts if rom is high --dict.nes("NES_CPU_WR", rom_FF_addr, 0x20) --assumes mcu wins bus conflicts if rom is high - dict.nes("NES_CPU_WR", banktable_base+0x20, 0x20) - --dict.nes("NES_CPU_WR", banktable_base+2, 0x02) + --dict.nes("NES_CPU_WR", banktable_base+0x20, 0x20) --alfonzo doesn't have this large of bank table + dict.nes("NES_CPU_WR", banktable_base+ num_prg_banks*2 , 0x20) dict.nes("NES_PPU_WR", 0x1555, 0xAA) --dict.nes("NES_CPU_WR", rom_00_addr, 0x00) --assumes mcu wins bus conflicts if rom is high --dict.nes("NES_CPU_WR", rom_FF_addr, 0x10) --assumes mcu wins bus conflicts if rom is high - dict.nes("NES_CPU_WR", banktable_base+0x10, 0x10) - --dict.nes("NES_CPU_WR", banktable_base+1, 0x01) + --dict.nes("NES_CPU_WR", banktable_base+0x10, 0x10) + dict.nes("NES_CPU_WR", banktable_base+ num_prg_banks*1 , 0x10) dict.nes("NES_PPU_WR", 0x0AAA, 0x55) --dict.nes("NES_CPU_WR", rom_00_addr, 0x00) --assumes mcu wins bus conflicts if rom is high --dict.nes("NES_CPU_WR", rom_FF_addr, 0x20) --assumes mcu wins bus conflicts if rom is high - dict.nes("NES_CPU_WR", banktable_base+0x20, 0x20) - --dict.nes("NES_CPU_WR", banktable_base+2, 0x02) + --dict.nes("NES_CPU_WR", banktable_base+0x20, 0x20) + dict.nes("NES_CPU_WR", banktable_base+ num_prg_banks*2 , 0x20) dict.nes("NES_PPU_WR", 0x1555, 0xA0) --select desired bank --dict.nes("NES_CPU_WR", rom_00_addr, 0x00) --assumes mcu wins bus conflicts if rom is high --dict.nes("NES_CPU_WR", rom_FF_addr, bank<<4) --assumes mcu wins bus conflicts if rom is high - dict.nes("NES_CPU_WR", banktable_base+(bank<<4), (bank<<4)) + dict.nes("NES_CPU_WR", banktable_base+(bank*num_prg_banks), (bank<<4)) --dict.nes("NES_CPU_WR", banktable_base+bank, bank) --write the byte dict.nes("NES_PPU_WR", addr, value) @@ -157,9 +177,15 @@ local function wr_chr_flash_byte(bank, addr, value, debug) local i = 0 - while ( rv ~= value ) do - rv = dict.nes("NES_PPU_RD", addr) + while ( rv ~= dict.nes("NES_PPU_RD", addr) ) do i = i + 1 + + print(help.hex(rv)) + + if i > 100 then + print("naks > 100, write failed, addr:", help.hex(addr), "data:", help.hex(value),"readback:", help.hex(rv) ) + return + end end if debug then print(i, "naks, done writing byte.") end @@ -251,8 +277,8 @@ local function dump_chrrom( file, rom_size_KB, debug ) --select the proper CHR-ROM bank --dump/read size is equal to bank size, so read_count is equal to bank number - --dict.nes("NES_CPU_WR", rom_FF_addr, read_count) - dict.nes("NES_CPU_WR", banktable_base+(read_count<<4), (read_count<<4)) + dict.nes("NES_CPU_WR", rom_FF_addr, read_count<<4) + --dict.nes("NES_CPU_WR", banktable_base+(read_count<<4), (read_count<<4)) --dump the bank dump.dumptofile( file, KB_per_read, addr_base, "NESPPU_1KB", false ) @@ -345,42 +371,29 @@ local function flash_chrrom(file, rom_size_KB, debug) --init_mapper() --test some bytes - --wr_chr_flash_byte(0x00, 0x0000, 0x03, true) - --wr_chr_flash_byte(0x00, 0x1FFF, 0x0C, true) - --wr_chr_flash_byte(0x01, 0x0000, 0x13, true) - --wr_chr_flash_byte(0x01, 0x1FFF, 0x1C, true) - --wr_chr_flash_byte(0x02, 0x0000, 0x23, true) - --wr_chr_flash_byte(0x02, 0x1FFF, 0x2C, true) - --wr_chr_flash_byte(0x03, 0x0000, 0x33, true) - --wr_chr_flash_byte(0x03, 0x1FFF, 0x3C, true) - --wr_chr_flash_byte(0x04, 0x0000, 0x43, true) - --wr_chr_flash_byte(0x04, 0x1FFF, 0x4C, true) - --wr_chr_flash_byte(0x05, 0x0000, 0x53, true) - --wr_chr_flash_byte(0x05, 0x1FFF, 0x5C, true) - --wr_chr_flash_byte(0x06, 0x0000, 0x63, true) - --wr_chr_flash_byte(0x06, 0x1FFF, 0x6C, true) - --wr_chr_flash_byte(0x07, 0x0000, 0x73, true) - --wr_chr_flash_byte(0x07, 0x1FFF, 0x7C, true) - --wr_chr_flash_byte(0x08, 0x0000, 0x83, true) - --wr_chr_flash_byte(0x08, 0x1FFF, 0x8C, true) - --wr_chr_flash_byte(0x09, 0x0000, 0x93, true) - --wr_chr_flash_byte(0x09, 0x1FFF, 0x9C, true) - --wr_chr_flash_byte(0x0A, 0x0000, 0xA3, true) - --wr_chr_flash_byte(0x0A, 0x1FFF, 0xAC, true) - --wr_chr_flash_byte(0x0B, 0x0000, 0xB3, true) - --wr_chr_flash_byte(0x0B, 0x1FFF, 0xBC, true) - --wr_chr_flash_byte(0x0C, 0x0000, 0xC3, true) - --wr_chr_flash_byte(0x0C, 0x1FFF, 0xCC, true) - --wr_chr_flash_byte(0x0D, 0x0000, 0xD3, true) - --wr_chr_flash_byte(0x0D, 0x1FFF, 0xDC, true) - --wr_chr_flash_byte(0x0E, 0x0000, 0xE3, true) - --wr_chr_flash_byte(0x0E, 0x1FFF, 0xEC, true) - --wr_chr_flash_byte(0x0F, 0x0000, 0xF3, true) - --wr_chr_flash_byte(0x0F, 0x1FFF, 0xFC, true) + --print("test writes") + --wr_chr_flash_byte(0x00, 0x0000, 0x03, true) wr_chr_flash_byte(0x00, 0x1FFF, 0x0C, true) + --wr_chr_flash_byte(0x01, 0x0000, 0x13, true) wr_chr_flash_byte(0x01, 0x1FFF, 0x1C, true) + --wr_chr_flash_byte(0x02, 0x0000, 0x23, true) wr_chr_flash_byte(0x02, 0x1FFF, 0x2C, true) + --wr_chr_flash_byte(0x03, 0x0000, 0x33, true) wr_chr_flash_byte(0x03, 0x1FFF, 0x3C, true) + --wr_chr_flash_byte(0x04, 0x0000, 0x43, true) wr_chr_flash_byte(0x04, 0x1FFF, 0x4C, true) + --wr_chr_flash_byte(0x05, 0x0000, 0x53, true) wr_chr_flash_byte(0x05, 0x1FFF, 0x5C, true) + --wr_chr_flash_byte(0x06, 0x0000, 0x63, true) wr_chr_flash_byte(0x06, 0x1FFF, 0x6C, true) + --wr_chr_flash_byte(0x07, 0x0000, 0x73, true) wr_chr_flash_byte(0x07, 0x1FFF, 0x7C, true) + --wr_chr_flash_byte(0x08, 0x0000, 0x83, true) wr_chr_flash_byte(0x08, 0x1FFF, 0x8C, true) + --wr_chr_flash_byte(0x09, 0x0000, 0x93, true) wr_chr_flash_byte(0x09, 0x1FFF, 0x9C, true) + --wr_chr_flash_byte(0x0A, 0x0000, 0xA3, true) wr_chr_flash_byte(0x0A, 0x1FFF, 0xAC, true) + --wr_chr_flash_byte(0x0B, 0x0000, 0xB3, true) wr_chr_flash_byte(0x0B, 0x1FFF, 0xBC, true) + --wr_chr_flash_byte(0x0C, 0x0000, 0xC3, true) wr_chr_flash_byte(0x0C, 0x1FFF, 0xCC, true) + --wr_chr_flash_byte(0x0D, 0x0000, 0xD3, true) wr_chr_flash_byte(0x0D, 0x1FFF, 0xDC, true) + --wr_chr_flash_byte(0x0E, 0x0000, 0xE3, true) wr_chr_flash_byte(0x0E, 0x1FFF, 0xEC, true) + --wr_chr_flash_byte(0x0F, 0x0000, 0xF3, true) wr_chr_flash_byte(0x0F, 0x1FFF, 0xFC, true) print("\nProgramming CHR-ROM flash") --most of this is overkill for NROM, but it's how we want to handle things for bigger mappers + --if 1 then return end + local base_addr = 0x0000 local bank_size = 8*1024 local buff_size = 1 --number of bytes to write at a time @@ -391,12 +404,18 @@ local function flash_chrrom(file, rom_size_KB, debug) local byte_str, data, readdata --start with the first bank selected so the bank table is visible + --only really need banktable present in a single PRG bank + --having it in the first bank is easiest to access with assumption that 0 beats 1 on bus conflicts dict.nes("NES_CPU_WR", rom_00_addr, 0x00) --assumes mcu wins bus conflicts if rom is high --set the bank table address dict.nes("SET_BANK_TABLE", banktable_base) if debug then print("get banktable:", string.format("%X", dict.nes("GET_BANK_TABLE"))) end + --tell firmware number of PRG-ROM banks so it knows the structure of the banktable + dict.nes("SET_NUM_PRG_BANKS", num_prg_banks) + if debug then print("get num prg banks:", dict.nes("GET_NUM_PRG_BANKS")) end + while cur_bank < total_banks do if (cur_bank %2 == 0) then @@ -424,7 +443,7 @@ local function flash_chrrom(file, rom_size_KB, debug) --SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo: --wr_chr_flash_byte(cur_bank, base_addr+byte_num, data, false) --0.7KBps --EASIEST FIRMWARE SPEEDUP: 5x faster, create mapper write byte function: - dict.nes("CDREAM_CHR_FLASH_WR", base_addr+byte_num, data) + --dict.nes("CDREAM_CHR_FLASH_WR", base_addr+byte_num, data) --FASTEST have the firmware handle flashing a bank's worth of data --control the init and banking from the host side @@ -482,6 +501,22 @@ local function process(process_opts, console_opts) prgrom_manf_id(true) chrrom_manf_id(true) + + --verify mirroring if desired + --if ( nes.detect_mapper_mirroring() == "VERT" ) then + -- if debug then print("pass VERT mirror test") end + --else + -- print("\n\n\nFAIL MIRRORING JUMPER IS NOT VERTICAL!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n") + -- --don't continue + -- return false + --end + --if ( nes.detect_mapper_mirroring() == "HORZ" ) then + -- if debug then print("pass VERT mirror test") end + --else + -- print("\n\n\nFAIL MIRRORING JUMPER IS NOT HORIZONTAL!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n\n\n") + -- --don't continue + -- return false + --end end --dump the cart to dumpfile @@ -489,6 +524,9 @@ local function process(process_opts, console_opts) print("\nDumping PRG & CHR ROMs...") file = assert(io.open(dumpfile, "wb")) + --create header: pass open & empty file & rom sizes + create_header(file, prg_size, chr_size) + --TODO find bank table to avoid bus conflicts! --dump cart into file dump_prgrom(file, prg_size, false) @@ -554,7 +592,8 @@ local function process(process_opts, console_opts) --find bank table in the rom --write bank table to all banks of cartridge --Mojontales bank table is at $CC43 so hard code that for now - wr_bank_table(banktable_base, 256) + --wr_bank_table(banktable_base, 256) + wr_bank_table(banktable_base, 4) --flash cart flash_prgrom(file, prg_size, false) @@ -567,19 +606,24 @@ local function process(process_opts, console_opts) --verify flashfile is on the cart if verify then - --for now let's just dump the file and verify manually - print("\nPost dumping PRG & CHR ROMs...") file = assert(io.open(verifyfile, "wb")) --dump cart into file + time.start() dump_prgrom(file, prg_size, false) dump_chrrom(file, chr_size, false) + time.report(prg_size+chr_size) --close file assert(file:close()) - print("DONE post dumping PRG & CHR ROMs") + --compare the flash file vs post dump file + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end end dict.io("IO_RESET") diff --git a/host/scripts/nes/cnrom.lua b/host/scripts/nes/cnrom.lua index 9800710..b61d5ae 100644 --- a/host/scripts/nes/cnrom.lua +++ b/host/scripts/nes/cnrom.lua @@ -13,8 +13,8 @@ local buffers = require "scripts.app.buffers" -- file constants & variables local mapname = "CNROM" -local banktable_base = 0xFFC8 --galf -local rom_FF_addr = 0x8008 --galf +local banktable_base = 0x8000 --alwa +local rom_FF_addr = banktable_base+3 --generic 32KB CHR-ROM -- local functions diff --git a/host/scripts/nes/easyNSF.lua b/host/scripts/nes/easyNSF.lua index 1149e1d..3590be1 100644 --- a/host/scripts/nes/easyNSF.lua +++ b/host/scripts/nes/easyNSF.lua @@ -8,6 +8,8 @@ local dump = require "scripts.app.dump" local flash = require "scripts.app.flash" local buffers = require "scripts.app.buffers" local nes = require "scripts.app.nes" +local files = require "scripts.app.files" +local time = require "scripts.app.time" -- file constants local mapname = "EZNSF" @@ -54,6 +56,8 @@ local function init_mapper( debug ) dict.nes("NES_CPU_WR", 0x5006, 0x00) dict.nes("NES_CPU_WR", 0x5007, 0x00) + --flash /WE signal only goes low for $9000-9FFF + end @@ -66,19 +70,128 @@ local function prgrom_manf_id( debug ) if debug then print("reading PRG-ROM manf ID") end --A0-A14 are all directly addressable in CNROM mode --and mapper writes don't affect PRG banking - dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) - dict.nes("NES_CPU_WR", 0x8555, 0x55) - dict.nes("NES_CPU_WR", 0x8AAA, 0x90) + dict.nes("FLASH_3V_WR", 0x9AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x9555, 0x55) + dict.nes("FLASH_3V_WR", 0x9AAA, 0x90) rv = dict.nes("NES_CPU_RD", 0x8000) if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end --0x01 rv = dict.nes("NES_CPU_RD", 0x8002) if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end --0xDA(top), 0x5B(bot) --exit software - dict.nes("NES_CPU_WR", 0x8000, 0xF0) + dict.nes("FLASH_3V_WR", 0x9000, 0xF0) end +--host flash one bank at a time... +--this is controlled from the host side one bank at a time +--but requires mapper specific firmware flashing functions +--there is super slow version commented out that doesn't require MMC3 specific firmware code +local function flash_prgrom(file, rom_size_KB, debug) + + init_mapper() + + --test some bytes + --wr_prg_flash_byte(0x0000, 0xA5, true) + --wr_prg_flash_byte(0x0FFF, 0x5A, true) + + print("\nProgramming PRG-ROM flash") + --initial testing of MMC3 with no specific MMC3 flash firmware functions 6min per 256KByte = 0.7KBps + + + local base_addr = 0x9000 --writes occur $9000-9FFF + local bank_size = 4*1024 --4KB PRG bank + local buff_size = 1 --number of bytes to write at a time + local cur_bank = 0 + local total_banks = rom_size_KB*1024/bank_size + + local byte_num --byte number gets reset for each bank + local byte_str, data, readdata + + + while cur_bank < total_banks do + + if (cur_bank %32 == 0) then + print("writting PRG bank: ", cur_bank, " of ", total_banks-1) + end + + --write the current bank to the mapper register + dict.nes("NES_CPU_WR", 0x5001, cur_bank) --bank at $9000 + + + --program the entire bank's worth of data + + --[[ This version of the code programs a single byte at a time but doesn't require + -- MMC3 specific functions in the firmware + print("This is slow as molasses, but gets the job done") + byte_num = 0 --current byte within the bank + while byte_num < bank_size do + + --read next byte from the file and convert to binary + byte_str = file:read(buff_size) + data = string.unpack("B", byte_str, 1) + + --write the data + --SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo: + --wr_prg_flash_byte(base_addr+byte_num, data, false) --0.7KBps + + --EASIEST FIRMWARE SPEEDUP: 5x faster, create MMC3 write byte function: + dict.nes("MMC3_PRG_FLASH_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above) + --NEXT STEP: firmware write page/bank function can use function pointer for the function above + -- this may cause issues with more complex algos + -- sometimes cur bank is needed + -- for this to work, need to have function post conditions meet the preconditions + -- that way host intervention is only needed for bank controls + -- Is there a way to allow for double buffering though..? + -- YES! just think of the bank as a complete memory + -- this greatly simplifies things and is exactly where we want to go + -- This is completed below outside the byte while loop @ 39KBps + + if (verify) then + readdata = dict.nes("NES_CPU_RD", base_addr+byte_num) + if readdata ~= data then + print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata) + end + end + + byte_num = byte_num + 1 + end + --]] + + --Have the device write a banks worth of data + --FAST! 13sec for 512KB = 39KBps + flash.write_file( file, bank_size/1024, mapname, "PRGROM", false ) + + cur_bank = cur_bank + 1 + end + + print("Done Programming PRG-ROM flash") + +end + + +--dump the PRG ROM +local function dump_prgrom( file, rom_size_KB, debug ) + + local KB_per_read = 4 + local num_reads = rom_size_KB / KB_per_read + local read_count = 0 + local addr_base = 0x80 -- $8000 + + while ( read_count < num_reads ) do + + if debug then print( "dump PRG part ", read_count, " of ", num_reads) end + + --select desired bank(s) to dump + --mapper 30 bank register is $C000-FFFF + dict.nes("NES_CPU_WR", 0x5000, read_count) --16KB @ CPU $8000 + + dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false ) + + read_count = read_count + 1 + end + +end @@ -113,6 +226,8 @@ local function process(process_opts, console_opts) --dump the cart to dumpfile if read then + print("\nDumping PRG-ROM...") + --initialize the mapper for dumping init_mapper(debug) @@ -122,10 +237,13 @@ local function process(process_opts, console_opts) create_header(file, prg_size, chr_size) --dump cart into file - dump.dumptofile( file, 1024, "EZNSF", "PRGROM", true ) + time.start() + dump_prgrom(file, prg_size, false) + time.report(prg_size) --close file assert(file:close()) + print("DONE Dumping PRG-ROM") end --erase the cart @@ -140,12 +258,12 @@ local function process(process_opts, console_opts) --A0-A14 are all directly addressable in CNROM mode --only A0-A11 are required to be valid for tsop-48 --and mapper writes don't affect PRG banking - dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) - dict.nes("NES_CPU_WR", 0x8555, 0x55) - dict.nes("NES_CPU_WR", 0x8AAA, 0x80) - dict.nes("NES_CPU_WR", 0x8AAA, 0xAA) - dict.nes("NES_CPU_WR", 0x8555, 0x55) - dict.nes("NES_CPU_WR", 0x8AAA, 0x10) + dict.nes("FLASH_3V_WR", 0x9AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x9555, 0x55) + dict.nes("FLASH_3V_WR", 0x9AAA, 0x80) + dict.nes("FLASH_3V_WR", 0x9AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x9555, 0x55) + dict.nes("FLASH_3V_WR", 0x9AAA, 0x10) rv = dict.nes("NES_CPU_RD", 0x8000) local i = 0 @@ -175,7 +293,10 @@ local function process(process_opts, console_opts) --not susceptible to bus conflicts --flash cart - flash.write_file( file, 1024, "EZNSF", "PRGROM", true ) + --flash.write_file( file, 1024, "EZNSF", "PRGROM", true ) + time.start() + flash_prgrom(file, prg_size, true) + time.report(prg_size) --close file assert(file:close()) @@ -184,6 +305,7 @@ local function process(process_opts, console_opts) --verify flashfile is on the cart if verify then --for now let's just dump the file and verify manually + print("\nVerifing PRG-ROM...") --initialize the mapper for dumping init_mapper(debug) @@ -191,10 +313,20 @@ local function process(process_opts, console_opts) file = assert(io.open(verifyfile, "wb")) --dump cart into file - dump.dumptofile( file, 1024, "EZNSF", "PRGROM", true ) + time.start() + --dump.dumptofile( file, 1024, "EZNSF", "PRGROM", true ) + dump_prgrom(file, prg_size, false) + time.report(prg_size) --close file assert(file:close()) + + --compare the flash file vs post dump file + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end end dict.io("IO_RESET") diff --git a/host/scripts/nes/mapper30v2.lua b/host/scripts/nes/mapper30v2.lua index 493ec1f..2f567af 100644 --- a/host/scripts/nes/mapper30v2.lua +++ b/host/scripts/nes/mapper30v2.lua @@ -10,7 +10,6 @@ local flash = require "scripts.app.flash" local time = require "scripts.app.time" local files = require "scripts.app.files" local ciccom = require "scripts.app.ciccom" -local time = require "scripts.app.time" local swim = require "scripts.app.swim" local mapper30_legacy = require "scripts.nes.mapper30" local buffers = require "scripts.app.buffers" diff --git a/host/scripts/nes/mmc1.lua b/host/scripts/nes/mmc1.lua index cbe0a4e..6fa0c23 100644 --- a/host/scripts/nes/mmc1.lua +++ b/host/scripts/nes/mmc1.lua @@ -217,6 +217,7 @@ local function dump_wram( file, rom_size_KB, debug ) local num_reads = rom_size_KB / KB_per_read local read_count = 0 local addr_base = 0x06 -- $6000 + --TODO update to NES_CPU_PAGE instead of NES_CPU_4KB while ( read_count < num_reads ) do diff --git a/host/scripts/nes/mmc2.lua b/host/scripts/nes/mmc2.lua new file mode 100644 index 0000000..ac00ff0 --- /dev/null +++ b/host/scripts/nes/mmc2.lua @@ -0,0 +1,762 @@ + +-- create the module's table +local mmc2 = {} + +-- import required modules +local dict = require "scripts.app.dict" +local nes = require "scripts.app.nes" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" +local buffers = require "scripts.app.buffers" +local time = require "scripts.app.time" +local files = require "scripts.app.files" + +-- file constants +local mapname = "MMC2" + +-- local functions + +local function create_header( file, prgKB, chrKB ) + + --write_header( file, prgKB, chrKB, mapper, mirroring ) + nes.write_header( file, prgKB, chrKB, op_buffer[mapname], 0) +end + + +--disables WRAM, selects Vertical mirroring +--sets up CHR-ROM flash PT0 for DATA, Commands: $5555->$1555 $2AAA->$1AAA +--sets up PRG-ROM flash DATA: $8000-9FFF, Commands: $5555->D555 $2AAA->$AAAA +--leaves $8000 control reg selected to IRQ value selected so $A000 writes don't affect banking +local function init_mapper( debug ) + + + --RAM is always enabled.. + + --set mirroring + dict.nes("NES_CPU_WR", 0xF000, 0x00) --bit0: 0-vert 1-horz + + + --For CHR-ROM flash writes, use lower 4KB (PT0) for writting data & upper 4KB (PT1) for commands + dict.nes("NES_CPU_WR", 0xB000, 0x02) --4KB @ PPU $0000 -> $2AAA cmd & writes + dict.nes("NES_CPU_WR", 0xC000, 0x02) --4KB @ PPU $0000 + dict.nes("NES_CPU_WR", 0xD000, 0x05) --4KB @ PPU $1000 -> $5555 cmd + dict.nes("NES_CPU_WR", 0xE000, 0x05) --4KB @ PPU $1000 + + + --can use upper 16KB $D555 for $5555 commands + --need lower bank for $AAAA commands and writes + dict.nes("NES_CPU_WR", 0xA000, 0x00) --16KB @ CPU $8000 + +end + + +--test the mapper's mirroring modes to verify working properly +--can be used to help identify board: returns true if pass, false if failed +local function mirror_test( debug ) + + --put mapper in known state (mirror bits cleared) + init_mapper() + + --Vertical + --dict.nes("NES_CPU_WR", 0xF000, 0x00) --bit0: 0-vert 1-horz + if (nes.detect_mapper_mirroring(false) ~= "VERT") then + print(mapname, " vert mirror test fail") + return false + end + + --Horizontal + dict.nes("NES_CPU_WR", 0xF000, 0x01) --bit0: 0-vert 1-horz + if (nes.detect_mapper_mirroring(false) ~= "HORZ") then + print(mapname, " horz mirror test fail") + return false + end + + --passed all tests + if(debug) then print(mapname, " mirror test passed") end + return true + +end + +--debug CHR-ROM banking with special CHR-ROM image where first +--byte in bank is set to bank number +local function chr_bank_test() + + print("TESTING CHR-ROM BANKS") + + --address that has different values in different banks + local addr = 0x0017 + + dict.nes("NES_CPU_WR", 0xB000, 0) -- 0FD8 register + dict.nes("NES_CPU_WR", 0xC000, 0) -- 0FE8 register + print("BANK 0 @ addr:", dict.nes("NES_PPU_RD", addr)) + dict.nes("NES_CPU_WR", 0xB000, 1) -- 0FD8 register + dict.nes("NES_CPU_WR", 0xC000, 1) -- 0FE8 register + print("BANK 1 @ addr:", dict.nes("NES_PPU_RD", addr)) + dict.nes("NES_CPU_WR", 0xB000, 2) -- 0FD8 register + dict.nes("NES_CPU_WR", 0xC000, 2) -- 0FE8 register + print("BANK 2 @ addr:", dict.nes("NES_PPU_RD", addr)) + dict.nes("NES_CPU_WR", 0xB000, 3) -- 0FD8 register + dict.nes("NES_CPU_WR", 0xC000, 3) -- 0FE8 register + print("BANK 3 @ addr:", dict.nes("NES_PPU_RD", addr)) + + + dict.nes("NES_CPU_WR", 0xB000, 0) -- 0FD8 register + dict.nes("NES_CPU_WR", 0xC000, 1) -- 0FE8 register + dict.nes("NES_CPU_WR", 0xD000, 2) -- 1FD8 register + dict.nes("NES_CPU_WR", 0xE000, 3) -- 1FE8 register + + print("$0FD7:", dict.nes("NES_PPU_RD", 0x0FE8)) + + print("$0017:", dict.nes("NES_PPU_RD", 0x0017)) + print("$0017:", dict.nes("NES_PPU_RD", 0x0017)) + + print("$0FD8:", dict.nes("NES_PPU_RD", 0x0FD8)) + + print("$0017:", dict.nes("NES_PPU_RD", 0x0017)) + print("$0017:", dict.nes("NES_PPU_RD", 0x0017)) + + print("$1FE8:", dict.nes("NES_PPU_RD", 0x1FE8)) + + print("$1017:", dict.nes("NES_PPU_RD", 0x1017)) + print("$1017:", dict.nes("NES_PPU_RD", 0x1017)) + + print("$1FE8:", dict.nes("NES_PPU_RD", 0x1FD8)) + + print("$1017:", dict.nes("NES_PPU_RD", 0x1017)) + print("$1017:", dict.nes("NES_PPU_RD", 0x1017)) +end + +--read PRG-ROM flash ID +local function prgrom_manf_id( debug ) + + init_mapper() + + if debug then print("reading PRG-ROM manf ID") end + --SOP + --dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) + --dict.nes("NES_CPU_WR", 0xF555, 0x55) + --dict.nes("NES_CPU_WR", 0xFAAA, 0x90) + --PLCC + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xEAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x90) + rv = dict.nes("NES_CPU_RD", 0x8000) --0xC2 = MXIC + if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end + --rv = dict.nes("NES_CPU_RD", 0x8002) --SOP 0x23/0xAB 512KB top/bottom + --SOP 0x51/0x57 256KB top/bottom + --SOP 0xD6/0x58 1MB top/bottom + rv = dict.nes("NES_CPU_RD", 0x8001) --PLCC 0xB5/B6/B7 128-512KB SST + if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_CPU_WR", 0x8000, 0xF0) + +end + +--read CHR-ROM flash ID +local function chrrom_manf_id( debug ) + + init_mapper() + + if debug then print("reading CHR-ROM manf ID") end + --A0-A14 are all directly addressable in CNROM mode + --and mapper writes don't affect PRG banking + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + dict.nes("NES_PPU_WR", 0x1555, 0x90) + rv = dict.nes("NES_PPU_RD", 0x0000) + if debug then print("attempted read CHR-ROM manf ID:", string.format("%X", rv)) end + rv = dict.nes("NES_PPU_RD", 0x0001) + if debug then print("attempted read CHR-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("NES_PPU_WR", 0x8000, 0xF0) + +end + + +--dump the PRG ROM +local function dump_prgrom( file, rom_size_KB, debug ) + + --PRG-ROM dump 8KB at a time + local KB_per_read = 8 + local num_reads = rom_size_KB / KB_per_read + local read_count = 0 + local addr_base = 0x80 -- $8000 + + while ( read_count < num_reads ) do + + if debug then print( "dump PRG part ", read_count, " of ", num_reads) end + + --select desired bank(s) to dump + dict.nes("NES_CPU_WR", 0xA000, read_count) --8KB @ CPU $8000 + + --16 = number of KB to dump per loop + --0x08 = starting read address A12-15 -> $8000 + --NESCPU_4KB designate mapper independent read of NES CPU address space + --mapper must be 0-15 to designate A12-15 + --dump.dumptofile( file, 16, 0x08, "NESCPU_4KB", true ) + dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_PAGE", false ) + + read_count = read_count + 1 + end + +end + +--dump the CHR ROM +local function dump_chrrom( file, rom_size_KB, debug ) + + local KB_per_read = 8 --dump both PT at once + local num_reads = rom_size_KB / KB_per_read + local read_count = 0 + local addr_base = 0x00 -- $0000 + + while ( read_count < num_reads ) do + + if debug then print( "dump CHR part ", read_count, " of ", num_reads) end + --the bank is half the size of KB per read so must multiply by 2 + dict.nes("NES_CPU_WR", 0xB000, (read_count*2)) --4KB @ PPU $0000 + dict.nes("NES_CPU_WR", 0xC000, (read_count*2)) --4KB @ PPU $0000 + + --the bank is half the size of KB per read so must multiply by 2 and add 1 for second 1KB + dict.nes("NES_CPU_WR", 0xD000, (read_count*2+1))--4KB @ PPU $1000 + dict.nes("NES_CPU_WR", 0xE000, (read_count*2+1))--4KB @ PPU $1000 + + --4 = number of KB to dump per loop + --0x00 = starting read address A10-13 -> $0000 + --mapper must be 0x00 or 0x04-0x3C to designate A10-13 + -- bits 7, 6, 1, & 0 CAN NOT BE SET! + -- 0x04 would designate that A10 is set -> $0400 (the second 1KB PT bank) + -- 0x20 would designate that A13 is set -> $2000 (first name table) + dump.dumptofile( file, KB_per_read, addr_base, "NESPPU_PAGE", false ) + + read_count = read_count + 1 + end + +end + + +--dump the WRAM, assumes the WRAM was enabled/disabled as desired prior to calling +local function dump_wram( file, rom_size_KB, debug ) + + local KB_per_read = 8 + local num_reads = rom_size_KB / KB_per_read + local read_count = 0 + local addr_base = 0x06 -- $6000 + + while ( read_count < num_reads ) do + + if debug then print( "dump WRAM part ", read_count, " of ", num_reads) end + + dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_4KB", false ) + + read_count = read_count + 1 + end + +end + + +--write a single byte to PRG-ROM flash +--PRE: assumes mapper is initialized and bank is selected as prescribed in mapper_init +--REQ: addr must be in the first bank $8000-BFFF +local function wr_prg_flash_byte(addr, value, bank, debug) + + if (addr < 0x8000 or addr > 0xBFFF) then + print("\n ERROR! flash write to PRG-ROM", string.format("$%X", addr), "must be $8000-BFFF \n\n") + return + end + + --select bank + dict.nes("NES_CPU_WR", 0xA000, bank) + + --send unlock command and write byte + --dict.nes("NES_CPU_WR", 0xD555, 0xAA) + --dict.nes("NES_CPU_WR", 0xAAAA, 0x55) + --dict.nes("NES_CPU_WR", 0xD555, 0xA0) + dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) + dict.nes("NES_CPU_WR", 0xF555, 0x55) + dict.nes("NES_CPU_WR", 0xFAAA, 0xA0) + dict.nes("NES_CPU_WR", addr, value) --if this write was $A000-AFFF it will also corrupt the bank + + --recover bank + dict.nes("NES_CPU_WR", 0xA000, bank) + + local rv = dict.nes("NES_CPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_CPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end + + --TODO handle timeout for problems + + --TODO return pass/fail/info +end + + +--write a single byte to CHR-ROM flash +--PRE: assumes mapper is initialized and bank is selected as prescribed in mapper_init +--REQ: addr must be in the first 2 banks $0000-0FFF +local function wr_chr_flash_byte(addr, value, bank, debug) + + if (addr < 0x0000 or addr > 0x0FFF) then + print("\n ERROR! flash write to CHR-ROM", string.format("$%X", addr), "must be $0000-0FFF \n\n") + return + end + + --set bank for unlock command + dict.nes("NES_CPU_WR", 0xB000, 0x0A) --4KB @ PPU $0000 -> $2AAA cmd & writes + dict.nes("NES_CPU_WR", 0xC000, 0x0A) --4KB @ PPU $0000 + + --send unlock command + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + dict.nes("NES_PPU_WR", 0x1555, 0xA0) + + --select desired bank + dict.nes("NES_CPU_WR", 0xB000, bank) --4KB @ PPU $0000 -> $2AAA cmd & writes + dict.nes("NES_CPU_WR", 0xC000, bank) --4KB @ PPU $0000 + + --write data + dict.nes("NES_PPU_WR", addr, value) + + local rv = dict.nes("NES_PPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_PPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end + + --TODO handle timeout for problems + + --TODO return pass/fail/info +end + + +--host flash one bank at a time... +--this is controlled from the host side one bank at a time +--but requires mapper specific firmware flashing functions +--there is super slow version commented out that doesn't require mapper specific firmware code +local function flash_prgrom(file, rom_size_KB, debug) + + init_mapper() + + --test some bytes +-- wr_prg_flash_byte(0x8000, 0xA5, 0, true) +-- wr_prg_flash_byte(0xBFFF, 0x5A, 0, true) +-- wr_prg_flash_byte(0x8000, 0x15, 1, true) +-- wr_prg_flash_byte(0xBFFF, 0x1A, 1, true) +-- wr_prg_flash_byte(0x8000, 0xF5, 0xF, true) +-- wr_prg_flash_byte(0xBFFF, 0xFA, 0xF, true) + + print("\nProgramming PRG-ROM flash") + + + local base_addr = 0x8000 --writes occur $8000-BFFF + local bank_size = 8*1024 --MMC2 8KByte per PRG bank + local buff_size = 1 --number of bytes to write at a time + local cur_bank = 0 + local total_banks = rom_size_KB*1024/bank_size + + local byte_num --byte number gets reset for each bank + local byte_str, data, readdata + + + while cur_bank < total_banks do + + if (cur_bank %8 == 0) then + print("writting PRG bank: ", cur_bank, " of ", total_banks-1) + end + + --select desired bank, needed for first write + dict.nes("NES_CPU_WR", 0xA000, cur_bank) --16KB @ CPU $8000 + --set cur_bank for recovery and subsequent bytes + dict.nes("SET_CUR_BANK", cur_bank) + if debug then print("get bank:", dict.nes("GET_CUR_BANK")) end + + --program the entire bank's worth of data + + --[[ This version of the code programs a single byte at a time but doesn't require + -- mapper specific functions in the firmware + print("This is slow as molasses, but gets the job done") + byte_num = 0 --current byte within the bank + while byte_num < bank_size do + + --read next byte from the file and convert to binary + byte_str = file:read(buff_size) + data = string.unpack("B", byte_str, 1) + + --write the data + --SLOWEST OPTION: no firmware mapper specific functions 100% host flash algo: + --wr_prg_flash_byte(base_addr+byte_num, data, cur_bank, false) --0.7KBps + + --EASIEST FIRMWARE SPEEDUP: 5x faster, create mapper write byte function: + --MMC3 function works on FME7 just fine + dict.nes("MMC4_PRG_SOP_FLASH_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above) + --NEXT STEP: firmware write page/bank function can use function pointer for the function above + -- this may cause issues with more complex algos + -- sometimes cur bank is needed + -- for this to work, need to have function post conditions meet the preconditions + -- that way host intervention is only needed for bank controls + -- Is there a way to allow for double buffering though..? + -- YES! just think of the bank as a complete memory + -- this greatly simplifies things and is exactly where we want to go + -- This is completed below outside the byte while loop @ 39KBps + + if (verify) then + readdata = dict.nes("NES_CPU_RD", base_addr+byte_num) + if readdata ~= data then + print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata) + end + end + + byte_num = byte_num + 1 + end + --]] + + --Have the device write a banks worth of data + --FAST! but needs firmware specific functions and flash control + flash.write_file( file, bank_size/1024, "MMC4", "PRGROM", false ) + + cur_bank = cur_bank + 1 + end + + print("Done Programming PRG-ROM flash") + +end + + +--slow host flash one byte at a time... +--this is controlled from the host side byte by byte making it slow +--but doesn't require specific firmware mapper flashing functions +local function flash_chrrom(file, rom_size_KB, debug) + + init_mapper() + + --test some bytes + --wr_chr_flash_byte(0x0000, 0xA5, 0, true) + --wr_chr_flash_byte(0x0FFF, 0x5A, 0, true) + + print("\nProgramming CHR-ROM flash") + + local base_addr = 0x0000 + local bank_size = 4*1024 --MMC4 4KByte CHR bank + local buff_size = 1 --number of bytes to write at a time + local cur_bank = 0 + local total_banks = rom_size_KB*1024/bank_size + + local byte_num --byte number gets reset for each bank + local byte_str, data, readdata + + + while cur_bank < total_banks do + + if (cur_bank %8 == 0) then + print("writting CHR bank: ", cur_bank, " of ", total_banks-1) + end + + --set cur_bank so firmware can select desired bank during the write + dict.nes("SET_CUR_BANK", cur_bank) + if debug then print("get bank:", dict.nes("GET_CUR_BANK")) end + + --program the entire bank's worth of data + --[[ This version of the code programs a single byte at a time but doesn't require + -- mapper specific functions in the firmware + print("This is slow as molasses, but gets the job done") + byte_num = 0 --current byte within the bank + while byte_num < bank_size do + + --read next byte from the file and convert to binary + byte_str = file:read(buff_size) + data = string.unpack("B", byte_str, 1) + + --write the data + --SLOWEST OPTION: no firmware mapper specific functions 100% host flash algo: + wr_chr_flash_byte(base_addr+byte_num, data, cur_bank, false) --0.7KBps + --EASIEST FIRMWARE SPEEDUP: 5x faster, create mapper write byte function: + --dict.nes("MMC4_CHR_FLASH_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above) + --FASTEST have the firmware handle flashing a bank's worth of data + --control the init and banking from the host side + + if (verify) then + readdata = dict.nes("NES_PPU_RD", base_addr+byte_num) + if readdata ~= data then + print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata) + end + end + + byte_num = byte_num + 1 + end + --]] + + --Have the device write a "banks" worth of data, actually 2x banks of 2KB each + --FAST! 13sec for 512KB = 39KBps + flash.write_file( file, bank_size/1024, "MMC4", "CHRROM", false ) + + cur_bank = cur_bank + 1 + end + + print("Done Programming CHR-ROM flash") +end + + +--Cart should be in reset state upon calling this function +local function process(process_opts, console_opts) + local test = process_opts["test"] + local read = process_opts["read"] + local erase = process_opts["erase"] + local program = process_opts["program"] + local verify = process_opts["verify"] + local dumpfile = process_opts["dump_filename"] + local flashfile = process_opts["flash_filename"] + local verifyfile = process_opts["verify_filename"] + -- MMC4 has RAM capability present in some carts. + local dumpram = process_opts["dumpram"] + local ramdumpfile = process_opts["dumpram_filename"] + local writeram = process_opts["writeram"] + local ramwritefile = process_opts["writeram_filename"] + + local rv = nil + local file + local prg_size = console_opts["prg_rom_size_kb"] + local chr_size = console_opts["chr_rom_size_kb"] + local wram_size = console_opts["wram_size_kb"] + + local filetype = "nes" + --local filetype = "bin" + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + print("Testing ", mapname) + + init_mapper() + + --verify mirroring is behaving as expected + mirror_test(true) + + nes.ppu_ram_sense(0x1000, true) + print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + + --attempt to read PRG-ROM flash ID + prgrom_manf_id(true) + --attempt to read CHR-ROM flash ID + chrrom_manf_id(true) + + --debug CHR-ROM banking with special CHR-ROM image where first + --byte in bank is set to bank number + --chr_bank_test() + end + +--dump the ram to file + if dumpram then + + print("\nDumping WRAM...") + + init_mapper() + + --SRAM always enabled + + file = assert(io.open(ramdumpfile, "wb")) + + --dump cart into file + dump_wram(file, wram_size, false) + + --close file + assert(file:close()) + + print("DONE Dumping WRAM") + end + + + +--dump the cart to dumpfile + if read then + + print("\nDumping PRG & CHR ROMs...") + + init_mapper() + + file = assert(io.open(dumpfile, "wb")) + + --create header: pass open & empty file & rom sizes + create_header(file, prg_size, chr_size) + + --dump cart into file + dump_prgrom(file, prg_size, false) + dump_chrrom(file, chr_size, false) + + --close file + assert(file:close()) + + print("DONE Dumping PRG & CHR ROMs") + end + + +--erase the cart + if erase then + + print("\nerasing ", mapname) + + init_mapper() + + --PLCC + print("erasing PRG-ROM PLCC-32"); + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xEAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x80) + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xEAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x10) + + --SOP + --print("erasing PRG-ROM SOP-44 flash takes a couple sec..."); + --dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) + --dict.nes("NES_CPU_WR", 0xF555, 0x55) + --dict.nes("NES_CPU_WR", 0xFAAA, 0x80) + --dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) + --dict.nes("NES_CPU_WR", 0xF555, 0x55) + --dict.nes("NES_CPU_WR", 0xFAAA, 0x10) + rv = dict.nes("NES_CPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_CPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing prg."); + + + --TODO erase CHR-ROM only if present + init_mapper() + + print("erasing CHR-ROM"); + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + dict.nes("NES_PPU_WR", 0x1555, 0x80) + dict.nes("NES_PPU_WR", 0x1555, 0xAA) + dict.nes("NES_PPU_WR", 0x0AAA, 0x55) + dict.nes("NES_PPU_WR", 0x1555, 0x10) + rv = dict.nes("NES_PPU_RD", 0x0000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_PPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing chr."); + + + end + +--write to wram on the cart + if writeram then + + print("\nWritting to WRAM...") + + init_mapper() + + --SRAM always enabled + + file = assert(io.open(ramwritefile, "rb")) + + flash.write_file( file, wram_size, "NOVAR", "PRGRAM", false ) + + --close file + assert(file:close()) + + print("DONE Writting WRAM") + end + +--program flashfile to the cart + if program then + + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + if filetype == "nes" then + --advance past the 16byte header + --TODO set mirroring bit via ciccom + local buffsize = 1 + local byte + local count = 1 + + for byte in file:lines(buffsize) do + local data = string.unpack("B", byte, 1) + --print(string.format("%X", data)) + count = count + 1 + if count == 17 then break end + end + end + + + flash_prgrom(file, prg_size, false) + flash_chrrom(file, chr_size, false) + + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + print("\nPost dumping PRG & CHR ROMs...") + + init_mapper() + + file = assert(io.open(verifyfile, "wb")) + + --create header: pass open & empty file & rom sizes + create_header(file, prg_size, chr_size) + + print("DONE post dumping PRG & CHR ROMs") + --dump cart into file + time.start() + dump_prgrom(file, prg_size, false) + dump_chrrom(file, chr_size, false) + time.report(prg_size+chr_size) + + --close file + assert(file:close()) + + --compare the flash file vs post dump file + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +mmc2.process = process + +-- return the module's table +return mmc2 diff --git a/host/scripts/nes/mmc3.lua b/host/scripts/nes/mmc3.lua index 63bd133..ddaf94c 100644 --- a/host/scripts/nes/mmc3.lua +++ b/host/scripts/nes/mmc3.lua @@ -8,6 +8,8 @@ local nes = require "scripts.app.nes" local dump = require "scripts.app.dump" local flash = require "scripts.app.flash" local buffers = require "scripts.app.buffers" +local time = require "scripts.app.time" +local files = require "scripts.app.files" -- file constants local mapname = "MMC3" @@ -192,6 +194,7 @@ local function dump_prgrom( file, rom_size_KB, debug ) local num_reads = rom_size_KB / KB_per_read local read_count = 0 local addr_base = 0x08 -- $8000 + --TODO update to NES_CPU_PAGE instead of NES_CPU_4KB while ( read_count < num_reads ) do @@ -422,7 +425,7 @@ local function flash_prgrom(file, rom_size_KB, debug) --Have the device write a banks worth of data --FAST! 13sec for 512KB = 39KBps - flash.write_file( file, 8, mapname, "PRGROM", false ) + flash.write_file( file, bank_size/1024, mapname, "PRGROM", false ) cur_bank = cur_bank + 1 end @@ -533,8 +536,8 @@ local function process(process_opts, console_opts) local wram_size = console_opts["wram_size_kb"] - --local filetype = "nes" - local filetype = "bin" + local filetype = "nes" + --local filetype = "bin" --initialize device i/o for NES dict.io("IO_RESET") @@ -720,14 +723,25 @@ local function process(process_opts, console_opts) file = assert(io.open(verifyfile, "wb")) + --create header: pass open & empty file & rom sizes + create_header(file, prg_size, chr_size) + + print("DONE post dumping PRG & CHR ROMs") --dump cart into file + time.start() dump_prgrom(file, prg_size, false) dump_chrrom(file, chr_size, false) + time.report(prg_size+chr_size) --close file assert(file:close()) - print("DONE post dumping PRG & CHR ROMs") + --compare the flash file vs post dump file + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end end dict.io("IO_RESET") diff --git a/host/scripts/nes/mmc4.lua b/host/scripts/nes/mmc4.lua index e6fcfc2..57fd3f0 100644 --- a/host/scripts/nes/mmc4.lua +++ b/host/scripts/nes/mmc4.lua @@ -8,6 +8,8 @@ local nes = require "scripts.app.nes" local dump = require "scripts.app.dump" local flash = require "scripts.app.flash" local buffers = require "scripts.app.buffers" +local time = require "scripts.app.time" +local files = require "scripts.app.files" -- file constants local mapname = "MMC4" @@ -43,8 +45,19 @@ local function init_mapper( debug ) --can use upper 16KB $D555 for $5555 commands --need lower bank for $AAAA commands and writes + --this only allows for writting to even banks when A14=0 dict.nes("NES_CPU_WR", 0xA000, 0x00) --16KB @ CPU $8000 + --mapper control A14-18 + --even bank A14 = 0 + --odd bank A14 = 1 + --$8000-BFFF bank selected + --$C000-FFFF fixed to last 16KB (A14 always high) + --$C000-DFFF A14 is low + --$E000-FFFF A14 is high + --ROM A14 = MAP assign A14 XOR with CPU A13 + --With this mapper modification $5555 -> $D555, $2AAA -> $EAAA + end @@ -81,18 +94,20 @@ local function prgrom_manf_id( debug ) if debug then print("reading PRG-ROM manf ID") end --SOP - dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) - dict.nes("NES_CPU_WR", 0xF555, 0x55) - dict.nes("NES_CPU_WR", 0xFAAA, 0x90) + --dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) + --dict.nes("NES_CPU_WR", 0xF555, 0x55) + --dict.nes("NES_CPU_WR", 0xFAAA, 0x90) --PLCC - --dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xD555, 0xAA) --dict.nes("NES_CPU_WR", 0xAAAA, 0x55) - --dict.nes("NES_CPU_WR", 0xD555, 0x90) + dict.nes("NES_CPU_WR", 0xEAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x90) rv = dict.nes("NES_CPU_RD", 0x8000) --0xC2 = MXIC if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end - rv = dict.nes("NES_CPU_RD", 0x8002) --SOP 0x23/0xAB 512KB top/bottom + --rv = dict.nes("NES_CPU_RD", 0x8002) --SOP 0x23/0xAB 512KB top/bottom --SOP 0x51/0x57 256KB top/bottom --SOP 0xD6/0x58 1MB top/bottom + rv = dict.nes("NES_CPU_RD", 0x8001) --PLCC 0xB5/B6/B7 128-512KB SST if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end --exit software @@ -369,7 +384,7 @@ local function flash_prgrom(file, rom_size_KB, debug) --Have the device write a banks worth of data --FAST! but needs firmware specific functions and flash control - flash.write_file( file, bank_size/1024, "MMC4", "PRGROM", false ) + flash.write_file( file, bank_size/1024, mapname, "PRGROM", false ) cur_bank = cur_bank + 1 end @@ -475,6 +490,9 @@ local function process(process_opts, console_opts) local chr_size = console_opts["chr_rom_size_kb"] local wram_size = console_opts["wram_size_kb"] + local filetype = "nes" + --local filetype = "bin" + --initialize device i/o for NES dict.io("IO_RESET") dict.io("NES_INIT") @@ -550,22 +568,23 @@ local function process(process_opts, console_opts) init_mapper() --PLCC - --print("erasing PRG-ROM"); - --dict.nes("NES_CPU_WR", 0xD555, 0xAA) - --dict.nes("NES_CPU_WR", 0xAAAA, 0x55) - --dict.nes("NES_CPU_WR", 0xD555, 0x80) - --dict.nes("NES_CPU_WR", 0xD555, 0xAA) - --dict.nes("NES_CPU_WR", 0xAAAA, 0x55) - --dict.nes("NES_CPU_WR", 0xD555, 0x10) + print("erasing PRG-ROM PLCC-32"); + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xEAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x80) + dict.nes("NES_CPU_WR", 0xD555, 0xAA) + dict.nes("NES_CPU_WR", 0xEAAA, 0x55) + dict.nes("NES_CPU_WR", 0xD555, 0x10) --SOP - print("erasing PRG-ROM SOP-44 flash takes a couple sec..."); - dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) - dict.nes("NES_CPU_WR", 0xF555, 0x55) - dict.nes("NES_CPU_WR", 0xFAAA, 0x80) - dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) - dict.nes("NES_CPU_WR", 0xF555, 0x55) - dict.nes("NES_CPU_WR", 0xFAAA, 0x10) + --print("erasing PRG-ROM SOP-44 flash takes a couple sec..."); + --dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) + --dict.nes("NES_CPU_WR", 0xF555, 0x55) + --dict.nes("NES_CPU_WR", 0xFAAA, 0x80) + --dict.nes("NES_CPU_WR", 0xFAAA, 0xAA) + --dict.nes("NES_CPU_WR", 0xF555, 0x55) + --dict.nes("NES_CPU_WR", 0xFAAA, 0x10) + rv = dict.nes("NES_CPU_RD", 0x8000) local i = 0 @@ -630,6 +649,21 @@ local function process(process_opts, console_opts) file = assert(io.open(flashfile, "rb")) --determine if auto-doubling, deinterleaving, etc, --needs done to make board compatible with rom + + if filetype == "nes" then + --advance past the 16byte header + --TODO set mirroring bit via ciccom + local buffsize = 1 + local byte + local count = 1 + + for byte in file:lines(buffsize) do + local data = string.unpack("B", byte, 1) + --print(string.format("%X", data)) + count = count + 1 + if count == 17 then break end + end + end flash_prgrom(file, prg_size, false) flash_chrrom(file, chr_size, false) @@ -648,14 +682,25 @@ local function process(process_opts, console_opts) file = assert(io.open(verifyfile, "wb")) + --create header: pass open & empty file & rom sizes + create_header(file, prg_size, chr_size) + + print("DONE post dumping PRG & CHR ROMs") --dump cart into file + time.start() dump_prgrom(file, prg_size, false) dump_chrrom(file, chr_size, false) + time.report(prg_size+chr_size) --close file assert(file:close()) - print("DONE post dumping PRG & CHR ROMs") + --compare the flash file vs post dump file + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end end dict.io("IO_RESET") diff --git a/host/scripts/nes/nrom.lua b/host/scripts/nes/nrom.lua index 7b2a715..61bc8e0 100644 --- a/host/scripts/nes/nrom.lua +++ b/host/scripts/nes/nrom.lua @@ -133,6 +133,18 @@ local function dump_chrrom( file, rom_size_KB, debug ) read_count = read_count + 1 end + --Zorchenhimer had issues dumping "Popeye no Eigo Asobi" http://bootgod.dyndns.org:7777/profile.php?id=3867 + --which appears to have 2 transistors with connections to PPU A12 and CHR-ROM /OE.? + --not sure what's going on there, but slowly dumping one byte at at time instead of 128Byte read bursts + --with normal dumping method above corrected the issue. + --[[ + for i = 0x0000,0x1FFF,1 do + val = dict.nes("NES_PPU_RD", i) + file:write(string.char(val)) + end + file:flush() + --]] + end @@ -300,6 +312,9 @@ local function process(process_opts, console_opts) local wram_size = console_opts["wram_size_kb"] local mirror = console_opts["mirror"] + local filetype = "nes" + --local filetype = "bin" + --initialize device i/o for NES dict.io("IO_RESET") dict.io("NES_INIT") @@ -433,6 +448,22 @@ local function process(process_opts, console_opts) file = assert(io.open(flashfile, "rb")) --determine if auto-doubling, deinterleaving, etc, --needs done to make board compatible with rom + + if filetype == "nes" then + --advance past the 16byte header + --TODO set mirroring bit via ciccom + local buffsize = 1 + local byte + local count = 1 + + for byte in file:lines(buffsize) do + local data = string.unpack("B", byte, 1) + --print(string.format("%X", data)) + count = count + 1 + if count == 17 then break end + end + end + --flash cart --flash.write_file( file, 32, "NROM", "PRGROM", true ) --flash.write_file( file, 8, "NROM", "CHRROM", true ) diff --git a/host/scripts/nes/unrom_tsop.lua b/host/scripts/nes/unrom_tsop.lua new file mode 100644 index 0000000..d087846 --- /dev/null +++ b/host/scripts/nes/unrom_tsop.lua @@ -0,0 +1,459 @@ + +-- create the module's table +local unrom = {} + +-- import required modules +local dict = require "scripts.app.dict" +local nes = require "scripts.app.nes" +local dump = require "scripts.app.dump" +local flash = require "scripts.app.flash" +local files = require "scripts.app.files" +local swim = require "scripts.app.swim" +local buffers = require "scripts.app.buffers" + +-- file constants & variables +local mapname = "UxROM" + +--local banktable_base = nil +local banktable_base = 0xCC84 + --Nomolos' bank table is at $CC84 + --wr_bank_table(0xCC84, 32) + --Owlia bank table + --wr_bank_table(0xE473, 32) + --rushnattack + --wr_bank_table(0x8000, 8) + --twindragons + --wr_bank_table(0xC000, 32) + --Armed for Battle + --wr_bank_table(0xFD69, 8) +--local rom_FF_addr = 0x8000 + + +-- local functions + +local function create_header( file, prgKB, chrKB ) + + local mirroring = nes.detect_mapper_mirroring() + + --write_header( file, prgKB, chrKB, mapper, mirroring ) + nes.write_header( file, prgKB, 0, op_buffer[mapname], mirroring) +end + +local function init_mapper( debug ) + --need to select bank0 so PRG-ROM A14 is low when writting to lower bank + --TODO this needs to be written to rom where value is 0x00 due to bus conflicts + --so need to find the bank table first! + --this could present an even larger problem with a blank flash chip + --would have to get a byte written to 0x00 first before able to change the bank.. + --becomes catch 22 situation. Will have to rely on mcu over powering PRG-ROM.. + --ahh but a way out would be to disable the PRG-ROM with exp0 (/WE) going low + --for now the write below seems to be working fine though.. + dict.nes("NES_CPU_WR", 0x8000, 0x00) +end + +--read PRG-ROM flash ID +local function prgrom_manf_id( debug ) + + init_mapper() + + if debug then print("reading PRG-ROM manf ID") end + + --enter software mode + --ROMSEL controls PRG-ROM /OE which needs to be low for flash writes + --So unlock commands need to be addressed below $8000 + --DISCRETE_EXP0_PRGROM_WR doesn't toggle /ROMSEL by definition though, so A15 is unused + -- 15 14 13 12 + -- 0x5 = 0b 0 1 0 1 -> $5555 + -- 0x2 = 0b 0 0 1 0 -> $2AAA + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0x90) + + --read manf ID + local rv = dict.nes("NES_CPU_RD", 0x8000) + if debug then print("attempted read PRG-ROM manf ID:", string.format("%X", rv)) end + + --read prod ID + rv = dict.nes("NES_CPU_RD", 0x8002) + if debug then print("attempted read PRG-ROM prod ID:", string.format("%X", rv)) end + + --exit software + dict.nes("FLASH_3V_WR", 0x8000, 0xF0) + +end + +--find a viable banktable location +local function find_banktable( banktable_size ) + local search_base = 0x0C -- search in $C000-$F000, the fixed bank + local KB_search_space = 16 + + --get the fixed bank's content + local search_data = "" + dump.dumptocallback( + function (data) + search_data = search_data .. data + end, + KB_search_space, search_base, "NESCPU_4KB", false + ) + + --construct the byte sequence that we need + local searched_sequence = "" + while ( searched_sequence:len() < banktable_size ) do + searched_sequence = searched_sequence .. string.char(searched_sequence:len()) + end + + --search for the banktable in the fixed bank + position_in_fixed_bank = string.find( search_data, searched_sequence, 1, true ) + if ( position_in_fixed_bank == nil ) then + return nil + end + + --compute the cpu offset of this data + return 0xC000 + position_in_fixed_bank - 1 +end + +--dump the PRG ROM +local function dump_prgrom( file, rom_size_KB, debug ) + + local KB_per_read = 16 + local num_reads = rom_size_KB / KB_per_read + local read_count = 0 + local addr_base = 0x08 -- $8000 + + while ( read_count < num_reads ) do + + if debug then print( "dump PRG part ", read_count, " of ", num_reads) end + + --select desired bank(s) to dump + dict.nes("NES_CPU_WR", banktable_base+read_count, read_count) --16KB @ CPU $8000 + + dump.dumptofile( file, KB_per_read, addr_base, "NESCPU_4KB", false ) + + read_count = read_count + 1 + end + +end + + +local function wr_prg_flash_byte(addr, value, bank, debug) + + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0xA0) --without unlock bypass + + dict.nes("FLASH_3V_WR", addr, value) + + local rv = dict.nes("NES_CPU_RD", addr) + + local i = 0 + + while ( rv ~= value ) do + rv = dict.nes("NES_CPU_RD", addr) + i = i + 1 + end + if debug then print(i, "naks, done writing byte.") end + + --TODO report error if write failed + +end + +--base is the actual NES CPU address, not the rom offset (ie $FFF0, not $7FF0) +local function wr_bank_table(base, entries, numtables) + + local cur_bank + + --need to have A14 clear when lower bank enabled + init_mapper() + + --UxROM can have a single bank table in $C000-FFFF (assuming this is most likely) + --or a bank table in all other banks in $8000-BFFF + + local i = 0 + while( i < entries) do + wr_prg_flash_byte(base+i, i, 0) + i = i+1; + end + + --[[ + if( base >= 0xC000 ) then + --only need one bank table in last bank + cur_bank = entries - 1 --16 minus 1 is 15 = 0x0F + else + --need bank table in all banks except last + cur_bank = entries - 2 --16 minus 2 is 14 = 0x0E + end + + + while( cur_bank >= 0 ) do + --select bank to write to (last bank first) + --use the bank table to make the switch + dict.nes("NES_CPU_WR", base+cur_bank, cur_bank) + + --write bank table to selected bank + local i = 0 + while( i < entries) do + print("write entry", i, "bank:", cur_bank) + wr_prg_flash_byte(base+i, i) + i = i+1; + end + + cur_bank = cur_bank-1 + + if( base >= 0xC000 ) then + --only need one bank table in last bank + break + end + end + --]] + + --TODO verify the bank table was successfully written before continuing! + +end + + +--this is controlled from the host side one bank at a time +--but requires mapper specific firmware flashing functions +local function flash_prgrom(file, rom_size_KB, debug) + + --init_mapper() + + --bank table should already be written + + --test some bytes + --wr_prg_flash_byte(0x0000, 0xA5, true) + --wr_prg_flash_byte(0xFFFF, 0x5A, true) + + print("\nProgramming PRG-ROM flash") + + local base_addr = 0x8000 --writes occur $8000-9FFF + local bank_size = 16*1024 --UNROM 16KByte per PRG bank + local buff_size = 1 --number of bytes to write at a time + local cur_bank = 0 + local total_banks = rom_size_KB*1024/bank_size + + local byte_num --byte number gets reset for each bank + local byte_str, data, readdata + + --set the bank table address + --dict.nes("SET_BANK_TABLE", banktable_base) + if debug then print("get banktable:", string.format("%X", dict.nes("GET_BANK_TABLE"))) end + + while cur_bank < total_banks do + + if (cur_bank %4 == 0) then + print("writting PRG bank: ", cur_bank, " of ", total_banks-1) + end + + --select bank to flash + --dict.nes("SET_CUR_BANK", cur_bank) + --if debug then print("get bank:", dict.nes("GET_CUR_BANK")) end + dict.nes("NES_CPU_WR", 0x8000, cur_bank) + + --program the entire bank's worth of data + + --[[ This version of the code programs a single byte at a time but doesn't require + -- MMC3 specific functions in the firmware + print("This is slow as molasses, but gets the job done") + byte_num = 0 --current byte within the bank + while byte_num < bank_size do + + --read next byte from the file and convert to binary + byte_str = file:read(buff_size) + data = string.unpack("B", byte_str, 1) + + --write the data + --SLOWEST OPTION: no firmware MMC3 specific functions 100% host flash algo: + wr_prg_flash_byte(base_addr+byte_num, data, cur_bank, false) --0.7KBps + --EASIEST FIRMWARE SPEEDUP: 5x faster, create MMC3 write byte function: + --can use same write function as NROM + --dict.nes("UNROM_PRG_FLASH_WR", base_addr+byte_num, data) --3.8KBps (5.5x faster than above) + + if (verify) then + readdata = dict.nes("NES_CPU_RD", base_addr+byte_num) + if readdata ~= data then + print("ERROR flashing byte number", byte_num, " in bank",cur_bank, " to flash ", data, readdata) + end + end + + byte_num = byte_num + 1 + end + --]] + + --Have the device write a banks worth of data + --Same as NROM + flash.write_file( file, bank_size/1024, "A53", "PRGROM", false ) + + cur_bank = cur_bank + 1 + end + + print("Done Programming PRG-ROM flash") + +end + + + +--Cart should be in reset state upon calling this function +--this function processes all user requests for this specific board/mapper +local function process(process_opts, console_opts) + local test = process_opts["test"] + local read = process_opts["read"] + local erase = process_opts["erase"] + local program = process_opts["program"] + local verify = process_opts["verify"] + local dumpfile = process_opts["dump_filename"] + local flashfile = process_opts["flash_filename"] + local verifyfile = process_opts["verify_filename"] + + local rv = nil + local file + local prg_size = console_opts["prg_rom_size_kb"] + local chr_size = console_opts["chr_rom_size_kb"] + local wram_size = console_opts["wram_size_kb"] + +--initialize device i/o for NES + dict.io("IO_RESET") + dict.io("NES_INIT") + +--test cart by reading manf/prod ID + if test then + print("Testing ", mapname) + + nes.detect_mapper_mirroring(true) + nes.ppu_ram_sense(0x1000, true) + print("EXP0 pull-up test:", dict.io("EXP0_PULLUP_TEST")) + + prgrom_manf_id(true) + + --[[ + --test reading back CIC version + dict.io("SWIM_INIT", "SWIM_ON_A0") + --dict.io("SWIM_INIT", "SWIM_ON_EXP0") + if swim.start() then + swim.read_stack() + else + print("ERROR trying to read back CIC signature stack data") + end + swim.stop_and_reset() + --]] + dict.io("IO_RESET") + dict.io("NES_INIT") + end + +--dump the cart to dumpfile + if read then + print("\nDumping PRG-ROM...") + file = assert(io.open(dumpfile, "wb")) + + --find bank table to avoid bus conflicts + if ( banktable_base == nil ) then + local KB_per_bank = 16 + banktable_base = find_banktable( prg_size / KB_per_bank ) + if ( banktable_base == nil ) then + print( "BANKTABLE NOT FOUND" ) + return + else + print( "found banktable addr = " .. banktable_base ) + end + end + + --create header: pass open & empty file & rom sizes + create_header(file, prg_size, chr_size) + + --dump cart into file + --dump.dumptofile( file, prg_size, "UxROM", "PRGROM", true ) + dump_prgrom(file, prg_size, false) + + --close file + assert(file:close()) + print("DONE Dumping PRG-ROM") + end + + +--erase the cart + if erase then + + print("\nErasing", mapname); + + init_mapper() + + print("erasing PRG-ROM"); + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0x80) + dict.nes("FLASH_3V_WR", 0x8AAA, 0xAA) + dict.nes("FLASH_3V_WR", 0x8555, 0x55) + dict.nes("FLASH_3V_WR", 0x8AAA, 0x10) + + rv = dict.nes("NES_CPU_RD", 0x8000) + + local i = 0 + + --TODO create some function to pass the read value + --that's smart enough to figure out if the board is actually erasing or not + while ( rv ~= 0xFF ) do + rv = dict.nes("NES_CPU_RD", 0x8000) + i = i + 1 + end + print(i, "naks, done erasing prg."); + + end + + +--program flashfile to the cart + if program then + + --open file + file = assert(io.open(flashfile, "rb")) + --determine if auto-doubling, deinterleaving, etc, + --needs done to make board compatible with rom + + --find bank table in the rom + --write bank table to all banks of cartridge + --wr_bank_table(banktable_base, prg_size/16) --16KB per bank gives number of entries + + --flash cart + flash_prgrom(file, prg_size, false) + + --close file + assert(file:close()) + + end + +--verify flashfile is on the cart + if verify then + --for now let's just dump the file and verify manually + print("\nPost dumping PRG-ROM") + + file = assert(io.open(verifyfile, "wb")) + + --dump cart into file + dump_prgrom(file, prg_size, false) + + --close file + assert(file:close()) + + --compare the flash file vs post dump file + if (files.compare( verifyfile, flashfile, true ) ) then + print("\nSUCCESS! Flash verified") + else + print("\n\n\n FAILURE! Flash verification did not match") + end + + print("DONE post dumping PRG-ROM") + end + + dict.io("IO_RESET") +end + + +-- global variables so other modules can use them + + +-- call functions desired to run when script is called/imported + + +-- functions other modules are able to call +unrom.process = process + +-- return the module's table +return unrom diff --git a/shared/shared_dict_bootload.h b/shared/shared_dict_bootload.h index 1422aef..3f8bac5 100644 --- a/shared/shared_dict_bootload.h +++ b/shared/shared_dict_bootload.h @@ -75,13 +75,15 @@ //application code version //this is updated more frequently than the USB firmware version -//#define GET_APP_VER 12 //RL=3 0-error, 1-len, 2-version -//just set pointer to 0x08000800 and read 4 bytes for now +#define GET_APP_VER 12 //RL=3 0-error, 1-len, 2-version (2345-version if string "AV##") +//STM32 just set pointer to 0x08000800 and read 4 bytes for now +//AVR has to use this method.. //APPLICATION VERSION NUMBERS //#define APP_VERSION "AV00" //released with usb firmware v2.3 //main update was addition of usb firmware updater //also added the bootloader pointer memory access //include ram functions & starting to have NES flash algos return data + #define APP_VERSION 3 //released 8/16 with N64 dump fix and MMC2/4 support #endif diff --git a/shared/shared_dict_buffer.h b/shared/shared_dict_buffer.h index d2433bd..cc3fd6d 100644 --- a/shared/shared_dict_buffer.h +++ b/shared/shared_dict_buffer.h @@ -127,6 +127,10 @@ #define GENESIS_ROM_PAGE1 0x29 //bank address A17-23 must have been latched already #define N64_ROM_PAGE 0x30 + + #define NESPPU_1KB_TOGGLE 0x31 //similar to PPU page read but /RD signal toggles with each read + #define NESCPU_4KB_TOGGLE 0x32 //similar to CPU page read but M2 toggles with each read + //operand LSB //SST 39SF0x0 manf/prod IDs #define SST_MANF_ID 0xBF @@ -174,6 +178,7 @@ #define HDIVER 78 #define GTROM 111 #define DxROM 205 + #define MM2 253 #define DPROM 254 //just a random mapper number for whatever I need it for // UNKNOWN 255 don't assign to something meaningful diff --git a/shared/shared_dict_nes.h b/shared/shared_dict_nes.h index 75c50ce..b7b54b6 100644 --- a/shared/shared_dict_nes.h +++ b/shared/shared_dict_nes.h @@ -60,12 +60,13 @@ #define MMC4_CHR_FLASH_WR 0x11 //needs cur_bank set prior to calling #define MAP30_PRG_FLASH_WR 0x12 //needs cur_bank set prior to calling #define GTROM_PRG_FLASH_WR 0x13 //desired bank must be selected +#define MMC4_PRG_FLASH_WR 0x14 //mapper mod to XOR A14 with A13 #define SET_CUR_BANK 0x20 #define SET_BANK_TABLE 0x21 -#define NES_M2_LOW_WR 0x22 //like CPU WR, but M2 stays low +#define M2_LOW_WR 0x22 //like CPU WR, but M2 stays low //write a page worth of random data to ppu //make sure the LSFR is initialized first in misc dict @@ -74,6 +75,10 @@ #define PPU_PAGE_WR_LFSR 0x23 #define SET_NUM_PRG_BANKS 0x24 //used for determining banktable structure for mapper 11 and such +#define M2_HIGH_WR 0x25 //like CPU WR, but M2 stays high +#define FLASH_3V_WR 0x25 //same as above but easier to remember when + //being used to write to 3v tssop flash +#define MMC3S_PRG_FLASH_WR 0x26 //TODO set return lengths for all these functions //============================================================================================= // OPCODES WITH OPERAND AND RETURN VALUE plus SUCCESS/ERROR_CODE