From ad4f4db1375db5a20058c458575d6af438556a42 Mon Sep 17 00:00:00 2001 From: Mateusz Faderewski Date: Fri, 3 Mar 2023 17:01:14 +0100 Subject: [PATCH] progress --- sw/deployer/data/mupen64plus.ini | 273 ++++++++++++++++++++++++++----- sw/deployer/src/debug.rs | 18 +- sw/deployer/src/main.rs | 15 +- sw/deployer/src/n64.rs | 48 +++--- 4 files changed, 286 insertions(+), 68 deletions(-) diff --git a/sw/deployer/data/mupen64plus.ini b/sw/deployer/data/mupen64plus.ini index d86e3e0..a4792bc 100644 --- a/sw/deployer/data/mupen64plus.ini +++ b/sw/deployer/data/mupen64plus.ini @@ -11,6 +11,7 @@ CRC=B2242748 FFBD61DA Status=1 Rumble=Yes Players=4 +CountPerOp=1 [34AB1DEA3111A233A8B5C5679DE22E83] GoodName=007 - The World is Not Enough (E) (M3) [!] @@ -226,6 +227,7 @@ SaveType=Eeprom 4KB Mempak=Yes Rumble=Yes Status=5 +CountPerOp=1 [88763C3FD50E036BBB9CF504F77C0741] GoodName=64 Oozumou (J) [b1] @@ -271,6 +273,7 @@ Players=4 Status=2 SaveType=Eeprom 4KB Mempak=Yes +CountPerOp=1 [11B20CFE8E3ECCC680AA8157A7906D6D] GoodName=64 de Hakken!! Tamagotchi Minna de Tamagotchi World (J) [b1] @@ -619,6 +622,7 @@ SaveType=Eeprom 4KB Mempak=Yes Status=4 Rumble=Yes +CountPerOp=1 [DCFB92A4B106FE61E54579B1D3B7336E] GoodName=Airboarder 64 (E) [f1] (NTSC) @@ -638,6 +642,7 @@ Status=4 Rumble=Yes SaveType=Eeprom 4KB Mempak=Yes +CountPerOp=1 [F558165311C9CDCA73FB089E298F2056] GoodName=Airboarder 64 (J) [b1] @@ -945,6 +950,7 @@ Status=3 [53E2872612760133AB7B2CC2E22B847C] GoodName=Army Men - Sarge's Heroes (E) (M3) [!] CRC=B210DF19 98B58D1A +CountPerOp=1 Players=4 SaveType=None Mempak=Yes @@ -953,6 +959,7 @@ Rumble=Yes [B8085C2EDB1C6D23E52ED8C06D92B4F8] GoodName=Army Men - Sarge's Heroes (U) [!] CRC=862C0657 8DFD896D +CountPerOp=1 SaveType=None Mempak=Yes Players=4 @@ -987,6 +994,7 @@ RefMD5=B8085C2EDB1C6D23E52ED8C06D92B4F8 [6EEA5C4A6256092ED8F9BA8861C689C6] GoodName=Army Men - Sarge's Heroes 2 (U) [!] CRC=B20F73B6 2975FC34 +CountPerOp=1 Players=4 SaveType=None Mempak=Yes @@ -1357,6 +1365,7 @@ GoodName=Bass Hunter 64 (E) [!] CRC=B088FBB4 441E4B1D Players=1 SaveType=Eeprom 4KB +CountPerOp=1 Rumble=Yes [2C618F6C69C3B4803F08762A03835139] @@ -1364,6 +1373,7 @@ GoodName=Bass Rush - ECOGEAR PowerWorm Championship (J) [!] CRC=D76333AC 0CB6219D Players=1 Rumble=Yes +CountPerOp=1 [B1AB1D5B3B92B0ACA380D0291DA0689E] GoodName=Bass Rush - ECOGEAR PowerWorm Championship (J) [b1] @@ -1381,6 +1391,7 @@ CRC=BCFACCAA B814D8EF Players=4 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [D8903586B5E479E6C4937879650D0D2D] @@ -1432,6 +1443,7 @@ RefMD5=A5EE8A6C34863E3D0EB8C06AE8668B30 [3406A505C22BAC2F40D9BFC6FF08CF86] GoodName=BattleTanx (U) [!] CRC=6AA4DDE7 E3E2F4E7 +CountPerOp=3 SaveType=None Mempak=Yes Players=4 @@ -1460,6 +1472,7 @@ RefMD5=3406A505C22BAC2F40D9BFC6FF08CF86 [D6E667FE10AFE8F7116888EFDE98AE0E] GoodName=BattleTanx - Global Assault (E) (M3) [!] CRC=0CAD17E6 71A5B797 +CountPerOp=1 Players=4 SaveType=None Mempak=Yes @@ -1468,6 +1481,7 @@ Rumble=Yes [654557C316F901A2CA6F7F4B43343147] GoodName=BattleTanx - Global Assault (U) [!] CRC=75A4E247 6008963D +CountPerOp=3 Players=4 SaveType=None Mempak=Yes @@ -1497,6 +1511,7 @@ CRC=A1B64A61 D014940B Players=4 SaveType=None Mempak=Yes +CountPerOp=3 Rumble=Yes [9D5A1B779F8B43E63E8CE8427675A7EF] @@ -1515,6 +1530,7 @@ CRC=9C7318D2 24AE0DC1 Players=4 SaveType=None Mempak=Yes +CountPerOp=3 Rumble=Yes [E126B84FA242916289D04D68C0E20BFE] @@ -1528,6 +1544,7 @@ CRC=EDF419A8 BF1904CC SaveType=None Mempak=Yes Players=4 +CountPerOp=3 Rumble=Yes [D11BC38F26EA2835FBF017FE9BD404FE] @@ -1662,6 +1679,7 @@ GoodName=Biohazard 2 (J) [!] CRC=7EAE2488 9D40A35A SaveType=SRAM Players=1 +CountPerOp=1 Rumble=Yes [13D7834291A311077B84B9A2816AF6FC] @@ -1761,6 +1779,7 @@ GoodName=Body Harvest (E) (M3) [!] CRC=0B58B8CD B7B291D2 SaveType=Eeprom 4KB Players=1 +CountPerOp=1 Rumble=Yes [0EF2448C243F86C4C9F194F49CFD8352] @@ -1773,6 +1792,7 @@ GoodName=Body Harvest (U) [!] CRC=5326696F FE9A99C3 Players=1 SaveType=Eeprom 4KB +CountPerOp=1 Rumble=Yes [77554810629D4EF4D93519745FA6066B] @@ -1800,6 +1820,7 @@ GoodName=Bokujou Monogatari 2 (J) (V1.0) [!] CRC=B3D451C6 E1CB58E2 Players=1 Mempak=Yes +CountPerOp=1 [C902BB7203C6C77DDA16ABCDF8995E32] GoodName=Bokujou Monogatari 2 (J) (V1.0) [b1] @@ -2009,6 +2030,7 @@ CRC=D72FD14D 1FED32C4 SaveType=None Mempak=Yes Players=2 +CountPerOp=1 [6E207C47FAAD2A4F64AE721A3A8F6161] GoodName=Bottom of the 9th (U) [b1] @@ -2088,6 +2110,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [5BF0F2351AEE577A8345D6E13D197E06] GoodName=Bug's Life, A (E) [f1] (NTSC) @@ -2101,6 +2124,7 @@ SaveType=None Mempak=Yes Rumble=Yes Players=1 +CountPerOp=1 [504C92A5978B7EAE7A3FD30645E06D39] GoodName=Bug's Life, A (F) [f1] (NTSC) @@ -2114,6 +2138,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [919E5D60A7F9A79D89AC179123D47EEE] GoodName=Bug's Life, A (G) [f1] (NTSC) @@ -2127,6 +2152,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [7FD6BFFB80F920E01EF869829D485EA3] GoodName=Bug's Life, A (U) [!] @@ -2135,6 +2161,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [14ACC20454B0C2789C9F7EF7A556231A] GoodName=Bug's Life, A (U) [b1] @@ -2370,6 +2397,7 @@ CRC=CA2A7444 71DAB71C SaveType=None Mempak=Yes Players=2 +CountPerOp=1 Rumble=Yes [965AD2FA317F0644E49A89A3219719CB] @@ -2378,6 +2406,7 @@ CRC=AC16400E CF5D071A SaveType=None Mempak=Yes Players=2 +CountPerOp=1 Rumble=Yes [C95353C14C4AE3DC95D1D91D6566EF92] @@ -2402,6 +2431,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [A5DB496C328C36682EB770CEFE6C2064] GoodName=Carmageddon 64 (E) (M4) (Eng-Spa-Fre-Ger) [f1] (NTSC) @@ -2415,6 +2445,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [D5271DB3CBE6B24099DCC6878C137FF7] GoodName=Carmageddon 64 (E) (M4) (Eng-Spa-Fre-Ita) [b1] @@ -2438,6 +2469,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [57146B6CD8EE7D96B01A811F98A1AC61] GoodName=Castlevania (E) (M3) [!] @@ -2733,6 +2765,7 @@ GoodName=Charlie Blast's Territory (E) [!] CRC=FB3C48D0 8D28F69F SaveType=None Players=4 +CountPerOp=1 Rumble=Yes [A7C15E0C1E7D898C1B20276DF7A62660] @@ -2745,6 +2778,7 @@ GoodName=Charlie Blast's Territory (U) [!] CRC=1E0E96E8 4E28826B SaveType=None Players=4 +CountPerOp=1 Rumble=Yes [7FFD84FC7D112EAB4EEF15CB10189A38] @@ -2902,6 +2936,7 @@ Players=2 SaveType=Eeprom 16KB Mempak=Yes Rumble=Yes +CountPerOp=1 [4808E8129B22AC8B3185B37243113005] GoodName=City-Tour GP - Zennihon GT Senshuken (J) [b1] @@ -3374,6 +3409,7 @@ CRC=17C54A61 4A83F2E7 Players=1 SaveType=Eeprom 16KB Rumble=Yes +CountPerOp=1 [BA99C445ADC6994C97FE6463F3E0EC10] GoodName=Densha de Go! 64 (J) [f1] (PAL) @@ -3406,6 +3442,7 @@ CRC=630AA37D 896BD7DB Players=4 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [7FCCB47498EEC06E96AE9372247D1E90] @@ -3414,6 +3451,7 @@ CRC=DEE584A2 0F161187 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [02EEF6ED11174664A548626337879E8C] @@ -3480,10 +3518,6 @@ GoodName=Dezaemon 3D (J) [t1] CRC=33487563 AC0AE62A RefMD5=54BE265E7B2C28AB92BF1A4130ACB5A2 -[C229888693BCEB66BD2F4601223E9365] -GoodName=Dezaemon DD (J) [CART HACK] -CRC=0C056DD6 7263BBE9 - [820929EBBE6FD332AC1720F94B745A8B] GoodName=Die Hard 64 (U) (Prototype) (Level 1) CRC=870611BA D8B1226C @@ -3654,6 +3688,7 @@ CRC=C16C421B A21580F7 Players=1 SaveType=None Mempak=Yes +CountPerOp=3 [BD1DE2FC1CF31096423563A40ECBF933] GoodName=Disney's Tarzan (E) [!] @@ -3662,6 +3697,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [AF740B224E5DD0BD09F7254811559ADF] GoodName=Disney's Tarzan (E) [h1C] @@ -3675,6 +3711,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [DF3CDD959E8C63B45F557FC197CE0E63] GoodName=Disney's Tarzan (G) [!] @@ -3683,6 +3720,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [A29E203DDB6293B7D105BF4A2EEEDD1E] GoodName=Disney's Tarzan (G) [h1C] @@ -3696,6 +3734,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [C56AD8ABD0FB5EFEF1FA0229F9A2EFF0] GoodName=Disney's Tarzan (U) [f1] (PAL) @@ -3958,6 +3997,7 @@ CRC=3DF17480 193DED5A Players=1 SaveType=None Mempak=Yes +CountPerOp=3 [07C4944DDAAD234F1F6B0B200BEA60B2] GoodName=Donald Duck - Quack Attack (E) (M5) [b1] @@ -3984,6 +4024,7 @@ CRC=11936D8C 6F2C4B43 SaveType=Eeprom 16KB Players=4 Rumble=Yes +CountPerOp=1 [428067DC7DB42DFC977A775F0A6E55B1] GoodName=Donkey Kong 64 (E) [b1] @@ -4005,12 +4046,14 @@ GoodName=Donkey Kong 64 (J) [!] CRC=053C89A7 A5064302 SaveType=Eeprom 16KB Players=4 +CountPerOp=1 Rumble=Yes [98A5836E3A5DA7BD0B5819E7498ACEA2] GoodName=Donkey Kong 64 (U) (Kiosk Demo) [!] CRC=0DD4ABAB B5A2A91E SaveType=Eeprom 16KB +CountPerOp=1 Rumble=Yes [843DB032839BF1AA74759F2E39A2ABDC] @@ -4033,6 +4076,7 @@ GoodName=Donkey Kong 64 (U) [!] CRC=EC58EABF AD7C7169 SaveType=Eeprom 16KB Players=4 +CountPerOp=1 Rumble=Yes [6B4772AA1743FEAC1919618B3FC6B3E1] @@ -4197,10 +4241,6 @@ GoodName=Doraemon 3 - Nobita no Machi SOS! (J) [f1] (PAL-NTSC) CRC=D8059804 92739B11 RefMD5=A4A1D490BA67831775FC381B846E2168 -[A91E882C7A73E754FF8F07E23100EADE] -GoodName=Doshin The Giant 1 (U) [CART HACK] -CRC=8654B491 0BA85380 - [A4F7C57C180297B2E7BA5A5FEB44FE0B] GoodName=Doubutsu no Mori (J) [!] CRC=BD8E206D 98C35E1C @@ -4327,6 +4367,7 @@ GoodName=Duck Dodgers Starring Daffy Duck (U) (M3) [!] CRC=FBB9F1FA 6BF88689 Players=1 SaveType=Eeprom 4KB +CountPerOp=1 Rumble=Yes [B5A5A71483679DCCACBDA770647A9DBF] @@ -4340,6 +4381,7 @@ CRC=DC36626A 3F3770CB Players=4 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [51A1EEE441240229BEB2E6CD8FAB285C] @@ -4353,6 +4395,7 @@ CRC=32CA974B B2C29C50 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [026789D47DB5FE202A76F89797B33AC7] @@ -4361,6 +4404,7 @@ CRC=04DAF07F 0D18E688 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [69ED326664E48BAA9CE743E6E9C450DA] @@ -4590,6 +4634,7 @@ GoodName=Elmo's Letter Adventure (U) [!] CRC=F2A653CB 60633B3B SaveType=None Players=1 +CountPerOp=1 [F733453ED26AFA0ACA8D3EB3B5B6D8EA] GoodName=Elmo's Number Journey (U) [!] @@ -4633,6 +4678,7 @@ CRC=D49DFF90 8DB53A8C [F4B41863440137C6A3BA22942F3E0DA2] GoodName=Excitebike 64 (Ch) (iQue) [!] Players=4 +CountPerOp=1 [876F87C91A4B6339DAA8FC1F41EB7ACD] GoodName=Excitebike 64 (Ch) (iQue) (Manual) [!] @@ -4642,6 +4688,7 @@ GoodName=Excitebike 64 (E) [!] CRC=202A8EE4 83F88B89 SaveType=Eeprom 16KB Players=4 +CountPerOp=1 Mempak=Yes Rumble=Yes @@ -4665,6 +4712,7 @@ GoodName=Excitebike 64 (U) (V1.0) [!] CRC=07861842 A12EBC9F SaveType=Eeprom 16KB Players=4 +CountPerOp=1 Mempak=Yes Rumble=Yes @@ -4688,6 +4736,7 @@ GoodName=Excitebike 64 (U) (V1.1) [!] CRC=F9D411E3 7CB29BC0 SaveType=Eeprom 16KB Players=4 +CountPerOp=1 Mempak=Yes Rumble=Yes @@ -5282,6 +5331,7 @@ CRC=66CF0FFE AD697F9C Players=2 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [E7008D17FD71D9C2BDA1362C885388B2] @@ -5290,6 +5340,7 @@ CRC=32EFC7CB C3EA3F20 Players=2 SaveType=None Mempak=Yes +CountPerOp=1 Rumble=Yes [13962910EFD82C2A2333CF38EE1FCD96] @@ -5329,6 +5380,7 @@ CRC=22E9623F B60E52AD SaveType=None Mempak=Yes Players=2 +CountPerOp=1 Rumble=Yes [272B359D8F8AC48ACBF053C262F422E4] @@ -5337,6 +5389,7 @@ CRC=A92D52E5 1D26B655 SaveType=None Mempak=Yes Players=2 +CountPerOp=1 Rumble=Yes [46E9A352AD6AFB83B0557EC659957B2E] @@ -5473,6 +5526,7 @@ CRC=F774EAEE F0D8B13E Players=1 SaveType=SRAM Mempak=Yes +CountPerOp=1 [316C59DAE45C20250A0419A937E7D65B] GoodName=G.A.S.P!! Fighter's NEXTream (E) [!] @@ -5516,6 +5570,7 @@ GoodName=GT 64 - Championship Edition (E) (M3) [!] CRC=EE4A0E33 8FD588C9 SaveType=Eeprom 16KB Players=2 +CountPerOp=1 Mempak=Yes Rumble=Yes @@ -5539,6 +5594,7 @@ GoodName=GT 64 - Championship Edition (U) [!] CRC=C49ADCA2 F1501B62 Players=2 SaveType=Eeprom 16KB +CountPerOp=1 Mempak=Yes Rumble=Yes @@ -5609,6 +5665,7 @@ CRC=457B9CD9 09C55352 Players=2 SaveType=SRAM Rumble=Yes +CountPerOp=1 [7EB07675E2E9CB547A3B238AA71F57CC] GoodName=Ganbare Goemon - Derodero Douchuu Obake Tenkomori (J) [t1] @@ -5634,6 +5691,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [7F4E8F2ECF04BE27E660AC2EFDAC0C68] GoodName=Ganbare Goemon - Neo Momoyama Bakufu no Odori (J) [b1] @@ -5669,6 +5727,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [0806E6DB8B2BF0501BE9F2D78D280DCF] GoodName=Gauntlet Legends (E) [b1] @@ -5682,6 +5741,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [9CB963E8B71F18568F78EC1AF120362E] GoodName=Gauntlet Legends (U) [!] @@ -5690,6 +5750,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [50F8E73CA0160EB1A339AC2137A7B559] GoodName=Gauntlet Legends (U) [f1] (PAL) @@ -5830,6 +5891,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [231BAC1AFB3DE138072C2D697783059B] GoodName=Golden Nugget 64 (U) [!] @@ -6007,6 +6069,7 @@ GoodName=HSV Adventure Racing (A) [!] CRC=72611D7D 9919BDD2 Players=4 SaveType=None +CountPerOp=3 Rumble=Yes Mempak=Yes @@ -6025,14 +6088,17 @@ GoodName=Hamster Monogatari 64 (J) [!] CRC=95A80114 E0B72A7F Players=1 Mempak=Yes +CountPerOp=1 [617197EF2B6B51E58488C9F6B75F112E] GoodName=Hard Coded Demo by Silo and Fractal (PD) [a1] CRC=775AFA9C 0EB52EF6 +CountPerOp=1 [FB8974C6130A6B8585EA98D6661553BC] GoodName=Hard Coded Demo by Silo and Fractal (PD) CRC=775AFA9C 0EB52EF6 +CountPerOp=1 [193913BB063F3D945019E8F765F48F1C] GoodName=Hard Pom '99 Demo by TS_Garp (POM '99) (PD) @@ -6065,6 +6131,7 @@ GoodName=Harvest Moon 64 (U) [!] CRC=98DF9DFC 6606C189 Players=1 SaveType=SRAM +CountPerOp=1 [3CDD87026EFEC9A03648D225F97858A5] GoodName=Harvest Moon 64 (U) [T+Pol001] @@ -6132,6 +6199,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [6BBD8C42F6EF8F5B9541D6F4DB657DD7] GoodName=Hercules - The Legendary Journeys (U) [!] @@ -6140,6 +6208,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [57D8E020643146B325A11612FEFACF74] GoodName=Hercules - The Legendary Journeys (U) [o1] @@ -6167,6 +6236,7 @@ CRC=95B2B30B 2B6415C1 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [E86A8BF46985B7CE8459AFBE5FC3DCC3] GoodName=Hexen (E) [h1C] @@ -6179,6 +6249,7 @@ CRC=5C1B5FBD 7E961634 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [08CBB141DEC604E4DAD2787F237D57A2] GoodName=Hexen (G) [!] @@ -6186,6 +6257,7 @@ CRC=9AB3B50A BC666105 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [35E9ECE11306EF7D8F5F09F65761D365] GoodName=Hexen (G) [h1C] @@ -6198,6 +6270,7 @@ CRC=66751A57 54A29D6E Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [EB98F1B8C6898AF7417F6882946DA9B3] GoodName=Hexen (U) [!] @@ -6205,6 +6278,7 @@ CRC=9CAB6AEA 87C61C00 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [B06625703DB3A03BAE3D02FD0F904541] GoodName=Hexen (U) [b1] @@ -6232,6 +6306,7 @@ CRC=D3F10E5D 052EA579 Players=1 SaveType=Eeprom 4KB Rumble=Yes +AiDmaModifier=88 [DCC316EFFC4928F5B0AE8D273D8024BF] GoodName=HiRes CFB Demo (PD) @@ -6244,6 +6319,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [8976913EFBE98EFED3B0B32CBCAA8B49] GoodName=Hiryuu no Ken Twin (J) [h1C] @@ -6458,6 +6534,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [1F57194EA272CF5DB500D228E9C94D75] GoodName=Hydro Thunder (E) [f1] (NTSC) @@ -6471,6 +6548,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [54F43E6B68782E98CAABEA5E7976B2BE] GoodName=Hydro Thunder (U) [!] @@ -6479,6 +6557,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [22AAD544C062FB8A2DC6B2DEB32DE188] GoodName=Hydro Thunder (U) [b1] @@ -6591,6 +6670,7 @@ CRC=8C138BE0 95700E46 SaveType=Eeprom 4KB Players=1 Rumble=Yes +CountPerOp=1 [1AF93922A67085AB2C777B1F08AF365B] GoodName=In-Fisherman Bass Hunter 64 (U) [f1] (PAL) @@ -6680,6 +6760,7 @@ CRC=E2D37CF0 F57E4EAE Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [7FCC22F4BF1FC82F886C455981D2A420] GoodName=International Superstar Soccer 64 (E) [b1] @@ -6707,6 +6788,7 @@ CRC=5F2763C4 62412AE5 Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [C0969E1C141BE6E144E651CAB1AEA3D8] GoodName=International Superstar Soccer 64 (U) [b1] @@ -6864,10 +6946,6 @@ RefMD5=8EE01DE7DA2E9AD08D7ED913A5EE8632 GoodName=Japan Pro Golf Tour 64 (J) [CART HACK] CRC=C99936D1 23D1D65D -[F3E0CE9CD23572BA237C51F4AED295BF] -GoodName=Japan Pro Golf Tour 64 (J) (Fix) [CART HACK] -CRC=09FB5C1D 7A73C976 - [A45F7200537C0D928A88CBBA2DFEB680] GoodName=Jeopardy! (U) [!] CRC=69256460 B9A3F586 @@ -7052,12 +7130,14 @@ GoodName=Jikkyou Powerful Pro Yakyuu - Basic Ban 2001 (J) (V1.0) [!] CRC=6EDD4766 A93E9BA8 Players=4 Mempak=Yes +CountPerOp=3 [F13D0803885B73B4A6B35EDDD40B9253] GoodName=Jikkyou Powerful Pro Yakyuu - Basic Ban 2001 (J) (V1.1) [!] CRC=B00E3829 29F232D1 Players=4 Mempak=Yes +CountPerOp=3 [23409668A6E6C4ECE7B5FB0B7D0E8F2C] GoodName=Jikkyou Powerful Pro Yakyuu 2000 (J) (V1.0) [!] @@ -7194,6 +7274,7 @@ GoodName=Jikkyou World Soccer 3 (J) [!] CRC=E0A79F8C 32CC97FA Players=4 Mempak=Yes +CountPerOp=1 [68230D510015FF6817EF898C0B8B636C] GoodName=Jinsei Game 64 (J) [!] @@ -7577,10 +7658,6 @@ CRC=0837F87A D1436FF8 GoodName=Kyojin no Doshin 1 (J) (Kiosk Demo) [CART HACK] CRC=E7BDA0BE ADA09CAC -[4D172A81AEF09E0718F3BBEF990AE38A] -GoodName=Kyojin no Doshin 1 (J) (Save Fix) [CART HACK] -CRC=DD31606C 331AB533 - [C57C4DD678748C6ED7CBF498445DE247] GoodName=Kyojin no Doshin: Kaihou Sensen Chibikko Chikko Daishuugou (J) [CART HACK] CRC=8C47CE8B 06019FEF @@ -7603,6 +7680,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=3 [26B5EAA13DC5B5E35307FE8C0CF5B6BA] GoodName=LEGO Racers (U) (M10) [!] @@ -7611,6 +7689,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=3 [97C4CAE584F427EC44266E9B98FBF7B6] GoodName=LEGO Racers (U) (M10) [b1] @@ -8321,6 +8400,7 @@ GoodName=Lt. Duck Dodgers (Prototype) CRC=FBB9F1FA 6BF88689 Players=1 Rumble=Yes +CountPerOp=1 [7A99628EDF0A6602D0C408F31B701435] GoodName=Lylat Wars (A) (M3) [!] @@ -8655,6 +8735,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [441FA65FAA5C12339F89A0BB7DB43C8F] GoodName=Madden NFL 2001 (U) [!] @@ -8663,6 +8744,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [AD0F2EC565D7575FB37512BC8DF8A092] GoodName=Madden NFL 2002 (U) [!] @@ -8671,6 +8753,7 @@ SaveType=None Mempak=Yes Rumble=Yes Players=4 +CountPerOp=1 [E7BF80861A0AB2A788959463D953B5D5] GoodName=Madden NFL 99 (E) [!] @@ -8679,6 +8762,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [9CB5F5CD6AB141454D645C92FD9BF67C] GoodName=Madden NFL 99 (E) [h1C] @@ -8692,6 +8776,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [C049FCD4CB185A553D8122CFE6C30139] GoodName=Madden NFL 99 (U) [o1] @@ -8705,6 +8790,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [5F3D42D5F96191F3CE50D70E0E42127A] GoodName=Madden NFL 99 (Beta) (1998-08-05) [!] @@ -8898,10 +8984,6 @@ CRC=AB9EB27D 5F05605F GoodName=Mario Artist: Polygon Studio (J) [CART HACK] CRC=2D5EFCC5 98CF79D2 -[21355C932726BE2DB0959A1CAA75939E] -GoodName=Mario Artist: Polygon Studio (U) [CART HACK] -CRC=8C2B46EB 66EA4FC8 - [9C1E3D607B1CC5FB90AD62D3F02A50ED] GoodName=Mario Artist: Paint Studio (J) [CART HACK] CRC=3A3EB7FB 0DDD515C @@ -8911,12 +8993,8 @@ Transferpak=Yes [E811554E6C6A61BE750A1ED315909840] GoodName=Mario Artist: Paint Studio (J) [CART HACK] [T+Eng0.2_LuigiBlood] CRC=DD16F47C A8B748C7 -RefMD5=9C1E3D607B1CC5FB90AD62D3F02A50ED - -[B63CE8F56B2E246C37FABC3927AEAA43] -GoodName=Mario Artist: Paint Studio (U) [CART HACK] -CRC=E2EA8C91 43582578 -RefMD5=9C1E3D607B1CC5FB90AD62D3F02A50ED +Players=4 +Transferpak=Yes [ED1CBFC5D3756A1520CD2D57F6998BDF] GoodName=Mario Artist: Talent Studio (J) [CART HACK] @@ -8927,12 +9005,8 @@ Transferpak=Yes [336AE63BD1EBACC64D9D92370B555537] GoodName=Mario Artist: Talent Studio (J) [CART HACK] [T+Eng0.1_LuigiBlood] CRC=73C0403D E821D951 -RefMD5=ED1CBFC5D3756A1520CD2D57F6998BDF - -[1C84AED224BC0A98095937BBC591243C] -GoodName=Mario Artist: Talent Studio (U) [CART HACK] -CRC=54C8AD15 E04E8676 -RefMD5=ED1CBFC5D3756A1520CD2D57F6998BDF +Players=1 +Transferpak=Yes [55634FF90EE997790781F79A5B0097EE] GoodName=Mario Golf (E) [!] @@ -9070,6 +9144,8 @@ Status=3 SaveType=Eeprom 4KB Players=4 Mempak=Yes +; Multiplayer Timing Fix +Cheat0=81001A1C 2409,81001A1E 0002,81001C74 240A,81001C76 0002 [EC0FAE8002AC6356E0470CE21BFEFA4F] GoodName=Mario Kart 64 (E) (V1.0) (Super W00ting Hack) @@ -9098,6 +9174,8 @@ Status=3 SaveType=Eeprom 4KB Players=4 Mempak=Yes +; Multiplayer Timing Fix +Cheat0=81001A1C 2409,81001A1E 0002,81001C74 240A,81001C76 0002 [2A64632C71FFB90DF3AE83836DEDD7A6] GoodName=Mario Kart 64 (E) (V1.1) [T+Ita_Cattivik66][b1] @@ -9116,6 +9194,8 @@ Status=3 SaveType=Eeprom 4KB Players=4 Mempak=Yes +; Multiplayer Timing Fix +Cheat0=81001A1C 2409,81001A1E 0002,81001C74 240A,81001C76 0002 [8FD3C06ED13CD27BB3D664C92A455AA8] GoodName=Mario Kart 64 (J) (V1.0) [T+Ita_Cattivik66][b1] @@ -9144,6 +9224,8 @@ Status=3 SaveType=Eeprom 4KB Players=4 Mempak=Yes +; Multiplayer Timing Fix +Cheat0=81001A1C 2409,81001A1E 0002,81001C74 240A,81001C76 0002 [231F0134D2899C08930F6E34682D2C0B] GoodName=Mario Kart 64 (J) (V1.1) [b1] @@ -9167,6 +9249,8 @@ Status=3 SaveType=Eeprom 4KB Players=4 Mempak=Yes +; Multiplayer Timing Fix +Cheat0=81001A38 2409,81001A3A 0002,81001A3C 2409,81001A3E 0002,81001C90 240A,81001C92 0002,81001C94 240A,81001C96 0002 [B63346465FE70DA3B1E7493CE5A15A31] GoodName=Mario Kart 64 (U) (Super W00ting Hack) @@ -9244,6 +9328,7 @@ CRC=9C663069 80F24A80 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [2608A4D7A695D0B1A1BBC47695EACE0E] GoodName=Mario Party (E) (M3) [b1] @@ -9261,6 +9346,7 @@ CRC=ADA815BE 6028622F Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [8BC2712139FBF0C56C8EA835802C52DC] GoodName=Mario Party (U) [!] @@ -9268,6 +9354,7 @@ CRC=2829657E A0621877 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [D072DDBCC5961AE85E6FA9BF50241370] GoodName=Mario Party (U) [f1] (PAL) @@ -9280,6 +9367,7 @@ CRC=82380387 DFC744D9 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [F23E4CD437465F3E725262253CF3EA59] GoodName=Mario Party 2 (J) [!] @@ -9287,6 +9375,7 @@ CRC=ED567D0F 38B08915 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [04840612A35ECE222AFDB2DFBF926409] GoodName=Mario Party 2 (U) [!] @@ -9294,6 +9383,7 @@ CRC=9EA95858 AF72B618 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [F253C5A0FB69AB56A1548D435AF84D0F] GoodName=Mario Party 2 (U) [f1] (PAL) @@ -9311,6 +9401,7 @@ CRC=C5674160 0F5F453C SaveType=Eeprom 16KB Players=4 Rumble=Yes +CountPerOp=1 [ED99F330CE7A2638AB13351012EEB86B] GoodName=Mario Party 3 (J) [!] @@ -9318,6 +9409,7 @@ CRC=0B0AB4CD 7B158937 SaveType=Eeprom 16KB Players=4 Rumble=Yes +CountPerOp=1 [76A8BBC81BC2060EC99C9645867237CC] GoodName=Mario Party 3 (U) [!] @@ -9325,6 +9417,7 @@ CRC=7C3829D9 6E8247CE SaveType=Eeprom 16KB Players=4 Rumble=Yes +CountPerOp=1 [BDD79F498F37D01B8958F56EC6FFA097] GoodName=Mario Party 3 (U) [f1] @@ -9348,6 +9441,7 @@ Status=2 Players=1 SaveType=Flash RAM Rumble=Yes +CountPerOp=1 [FFF9B3E22ABB9B60215DAFB13AD5A4DE] GoodName=Mario Tennis (E) [!] @@ -9674,6 +9768,7 @@ GoodName=Mischief Makers (E) [!] CRC=418BDA98 248A0F58 Players=1 SaveType=Eeprom 4KB +CountPerOp=1 [5690D74157C6623E2928A6F0353EF4AF] GoodName=Mischief Makers (E) [b1] @@ -9685,6 +9780,7 @@ GoodName=Mischief Makers (U) (V1.0) [!] CRC=0B93051B 603D81F9 Players=1 SaveType=Eeprom 4KB +CountPerOp=1 [CCF012DF82022D4797CE4CC5405E084F] GoodName=Mischief Makers (U) (V1.0) [b1] @@ -9701,6 +9797,7 @@ GoodName=Mischief Makers (U) (V1.1) [!] CRC=BFA526B4 0691E430 Players=1 SaveType=Eeprom 4KB +CountPerOp=1 [599B5D40B51F53C2C9A909E0139702FC] GoodName=Mission Impossible (E) [!] @@ -9830,6 +9927,7 @@ GoodName=Monopoly (U) [!] CRC=5AC383E1 D712E387 Players=4 SaveType=Eeprom 4KB +CountPerOp=1 [26C3654D20B8718A75B5FE8DA5B3284A] GoodName=Monopoly (U) [f1] (PAL) @@ -9842,6 +9940,7 @@ CRC=D3D806FC B43AA2A8 Players=4 SaveType=None Rumble=Yes +CountPerOp=3 [12534DAB32DBFC6CA4F66D05729102E6] GoodName=Monster Truck Madness 64 (E) (M5) [f1] (NTSC) @@ -9854,6 +9953,7 @@ CRC=B19AD999 7E585118 Players=4 SaveType=None Rumble=Yes +CountPerOp=3 [3C9F329D5E0C7FE57355B8DC68F79331] GoodName=Monster Truck Madness 64 (U) [t1] @@ -10209,6 +10309,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [75AD771425CBE2B1E8C7B4D94E67B1CA] GoodName=Mystical Ninja 2 Starring Goemon (E) (M3) [hI] @@ -10227,6 +10328,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [DBD2BC43FCDADACD234AEFC8130A5413] GoodName=Mystical Ninja Starring Goemon (E) [b1] @@ -10250,6 +10352,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [42E282A3F208C4BDE50A4A4301181B16] GoodName=Mystical Ninja Starring Goemon (U) [h1C] @@ -10493,6 +10596,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [F8F87AEB2C537C9CB2E9913050BFC928] GoodName=NBA In the Zone 2 (J) [!] @@ -10652,6 +10756,7 @@ CRC=3FFE80F4 A7C15F7E Players=4 SaveType=None Mempak=Yes +CountPerOp=1 [76DB89759121710C416ECFB1736B5E39] GoodName=NBA Showtime - NBA on NBC (U) [f1] (Country Check) @@ -11179,6 +11284,7 @@ RefMD5=4116CF435DB315A2481AF8D1E9352FEB GoodName=Nintama Rantarou 64 Game Gallery (J) [!] CRC=CD3C3CDF 317793FA Players=4 +CountPerOp=1 [66DB457B130D31A286A23D6E4DD9726E] GoodName=Nintendo All-Star! Dairantou Smash Brothers (J) [!] @@ -11187,6 +11293,7 @@ Status=3 Players=4 SaveType=SRAM Rumble=Yes +CountPerOp=1 [B2DF29627E0219A9C14605F46803C94C] GoodName=Nintendo All-Star! Dairantou Smash Brothers (J) [b1] @@ -11258,6 +11365,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [59C28E02BAF4065051C63EA51736892A] GoodName=Nuclear Strike 64 (E) (M2) [h1C] @@ -11271,6 +11379,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [FFC584040D0D052FBAB4CB6C19245449] GoodName=Nuclear Strike 64 (U) [!] @@ -11279,6 +11388,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [76C8EFDD11F6D2E553055B801A022653] GoodName=Nuclear Strike 64 (U) [b1] @@ -11302,6 +11412,7 @@ Players=1 Mempak=Yes Rumble=Yes Transferpak=Yes +CountPerOp=1 [7412417C50A42427637575A3CD2E652E] GoodName=Nushi Tsuri 64 (J) (V1.0) [b1] @@ -11335,6 +11446,7 @@ Players=1 Mempak=Yes Rumble=Yes Transferpak=Yes +CountPerOp=1 [828E0C399C0AA7E3B047859F4FAD3550] GoodName=Nushi Tsuri 64 - Shiokaze ni Notte (J) [b1] @@ -11352,6 +11464,7 @@ CRC=5B9B1618 1B43C649 Players=1 Rumble=Yes Transferpak=Yes +CountPerOp=1 [E2FB4F16A039A0E302D28ACA94D5D928] GoodName=O.D.T. (E) (M5) [!] @@ -11624,6 +11737,7 @@ Status=2 Players=1 SaveType=Flash RAM Rumble=Yes +CountPerOp=1 [A722F8161FF489943191330BF8416496] GoodName=Paper Mario (U) [!] @@ -11632,6 +11746,7 @@ Status=2 Players=1 SaveType=Flash RAM Rumble=Yes +CountPerOp=1 [8595BA0A0D2EA73944228BDED4A969AD] GoodName=Paper Mario (U) [T+Chi] @@ -11796,6 +11911,7 @@ CRC=3F245305 FC0B74AA Players=1 SaveType=Eeprom 4KB Rumble=Yes +AiDmaModifier=88 [D0AE6C07AC0481EBA5FF9CE798A69574] GoodName=Pikachu Genki Dechu (J) [b1] @@ -11807,6 +11923,7 @@ GoodName=Pilotwings 64 (E) (M3) [!] CRC=1AA05AD5 46F52D80 Players=1 SaveType=Eeprom 4KB +CountPerOp=3 [F21E2A3A05ACF49586F32DCE5C449FE4] GoodName=Pilotwings 64 (E) (M3) [b1] @@ -11828,6 +11945,7 @@ GoodName=Pilotwings 64 (J) [!] CRC=09CC4801 E42EE491 Players=1 SaveType=Eeprom 4KB +CountPerOp=3 [2740F1B89CE7D78A5D31CF60C97A0C11] GoodName=Pilotwings 64 (J) [b1] @@ -11839,6 +11957,7 @@ GoodName=Pilotwings 64 (U) [!] CRC=C851961C 78FCAAFA Players=1 SaveType=Eeprom 4KB +CountPerOp=3 [E28F8F19E56CC6C7A0F3A3286AEB60C1] GoodName=Pilotwings 64 (U) [h1C] @@ -11947,6 +12066,7 @@ GoodName=Pocket Monsters Snap (J) [!] CRC=EC0F690D 32A7438C Players=1 SaveType=Flash RAM +CountPerOp=1 [33FDAB9712D9FEA793A3AE44293999C3] GoodName=Pocket Monsters Snap (J) (VC) [!] @@ -12092,6 +12212,7 @@ GoodName=Pokemon Snap (A) [!] CRC=7BB18D40 83138559 Players=1 SaveType=Flash RAM +CountPerOp=1 [A88FCF3FF00F21D3CEC44D2E0FAAAAD8] GoodName=Pokemon Snap (A) [f1] (GameShark) @@ -12103,12 +12224,14 @@ GoodName=Pokemon Snap (E) [!] CRC=4FF5976F ACF559D8 Players=1 SaveType=Flash RAM +CountPerOp=1 [E9028F9CCC307806695DD81742D05D5D] GoodName=Pokemon Snap (F) [!] CRC=BA6C293A 9FAFA338 Players=1 SaveType=Flash RAM +CountPerOp=1 [5FA70A63E352EA804607999674381749] GoodName=Pokemon Snap (F) [b1] @@ -12120,24 +12243,28 @@ GoodName=Pokemon Snap (G) [!] CRC=5753720D 2A8A884D Players=1 SaveType=Flash RAM +CountPerOp=1 [D0453459095F69BE36D675D8F743069B] GoodName=Pokemon Snap (I) [!] CRC=C0C85046 61051B05 Players=1 SaveType=Flash RAM +CountPerOp=1 [A45D7115BE5A06FD1567F9F913C3BDF8] GoodName=Pokemon Snap (S) [!] CRC=817D286A EF417416 Players=1 SaveType=Flash RAM +CountPerOp=1 [FC3C9329B7CDD67CF7650ABF63B9A580] GoodName=Pokemon Snap (U) [!] CRC=CA12B547 71FA4EE4 Players=1 SaveType=Flash RAM +CountPerOp=1 [CCA6F7593302D46ADA66C991C976DA2D] GoodName=Pokemon Snap (U) [T+Spa] @@ -12169,6 +12296,7 @@ GoodName=Pokemon Snap Station (U) [!] CRC=39119872 07722E9F Players=1 SaveType=Flash RAM +CountPerOp=1 [B88F0EC125C54685FA516D233B564842] GoodName=Pokemon Snap Station (U) [f1] @@ -12442,6 +12570,7 @@ GoodName=Pro Mahjong Kiwame 64 (J) (V1.0) [!] CRC=9BA10C4E 0408ABD3 Players=1 Mempak=Yes +CountPerOp=1 [D1624977A3C25192671772623FA76438] GoodName=Pro Mahjong Kiwame 64 (J) (V1.0) [b1] @@ -12458,12 +12587,14 @@ GoodName=Pro Mahjong Kiwame 64 (J) (V1.1) [!] CRC=0AE2B37C FBC174F0 Players=1 Mempak=Yes +CountPerOp=1 [F1A2E4DD22ADF4F90DA4BDDCA37D5F18] GoodName=Pro Mahjong Tsuwamono 64 - Jansou Battle ni Chousen (J) [!] CRC=1BDCB30F A132D876 Players=1 Mempak=Yes +CountPerOp=1 [4FA4DC582C23EEE81FEB39B7EEBD15D6] GoodName=Psychodelic Demo by Ste (POM '98) (PD) [b1] @@ -12589,6 +12720,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [55A789C553827114306E29D71E26E5DC] GoodName=Quake II (E) [h1C] @@ -12602,6 +12734,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [920FAACCE1F8A80022433ACFD5CD2BC3] GoodName=Quake II (U) [f1] (PAL) @@ -12865,6 +12998,8 @@ CRC=20FD0BF1 F5CF1D87 Players=4 SaveType=None Mempak=Yes +; Allows the game to boot +Cheat0=F117DAEC 8014,F117DAEE A1D0 [E0BB65C30C1185FD9997020A1994B07E] GoodName=Rat Attack (E) (M6) [f1] (NTSC) @@ -12882,6 +13017,8 @@ CRC=0304C48E AC4001B8 Players=4 SaveType=None Mempak=Yes +; Allows the game to boot +Cheat0=F117E34C 8014,F117E34E A8F0 [5DBBFD5ACE8222FA8FE51BE113453C13] GoodName=Rayman 2 - The Great Escape (E) (M5) [!] @@ -12919,6 +13056,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [FAA64ABB0D222FCC0C6E2515D3805D9F] GoodName=Re-Volt (E) (M4) [!] @@ -12989,6 +13127,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [CB97350D5CAB48EAB8B954D91C0E5DAC] GoodName=Ready 2 Rumble Boxing - Round 2 (U) [t1] @@ -13001,6 +13140,7 @@ CRC=9B500E8E E90550B3 Players=1 SaveType=SRAM Rumble=Yes +CountPerOp=1 [DD21150CBC21C05420304599EC57411C] GoodName=Resident Evil 2 (U) (V1.0) [!] @@ -13008,6 +13148,7 @@ CRC=2F493DD0 2E64DFD9 Players=1 SaveType=SRAM Rumble=Yes +CountPerOp=1 [1ADD2C0217662B307CDFD876B35FBF7A] GoodName=Resident Evil 2 (U) (V1.1) [!] @@ -13015,6 +13156,7 @@ CRC=AA18B1A5 07DB6AEB Players=1 SaveType=SRAM Rumble=Yes +CountPerOp=1 [AD922DAE446A301E1AAFE1DFBAD75A2E] GoodName=Road Rash 64 (E) [!] @@ -13023,6 +13165,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=3 [5EB2B1892B68767EB1D310FF7507D34E] GoodName=Road Rash 64 (E) [h1C] @@ -13036,6 +13179,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=3 [7966F17F36C43D3807C0949AAD45168A] GoodName=Road Rash 64 (U) [f1] (PAL) @@ -13062,6 +13206,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [AE705F25C57ACABBD0E8BAE5EC6E237F] GoodName=Roadsters Trophy (U) (M3) [f1] (PAL) @@ -13252,6 +13397,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [8A59477C29B4353FEAB85303C58B98F0] GoodName=Rush 2 - Extreme Racing USA (E) (M6) [h1I] @@ -13270,6 +13416,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [7ED3F10BC32CF76F172D8C31D15A2799] GoodName=S.C.A.R.S. (E) (M3) [!] @@ -13502,6 +13649,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [AF5BE0ADFF51A8E9C6D771282C295810] GoodName=San Francisco Rush 2049 (U) [!] @@ -13510,6 +13658,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [1977D63B511A900628DB2A3A104160AC] GoodName=San Francisco Rush 2049 (U) [t1] @@ -13544,6 +13693,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [A485A6E9E30B7D55D23D8DD043770C64] GoodName=Shadow Man (E) (M3) [!] @@ -13552,6 +13702,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [235511BBDB21AF5A767BDB7502A80F06] GoodName=Shadow Man (F) [!] @@ -13560,6 +13711,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [AF40EF12CE923FF1C26E76CC9D9B9ED9] GoodName=Shadow Man (G) [!] @@ -13568,6 +13720,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [CFBDC1C5E419FF162DF02A0065D9BC1D] GoodName=Shadow Man (G) [b1] @@ -13591,6 +13744,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [474647AEDFA95AEF73229A2784897EDD] GoodName=Shadow Man (U) [b1] @@ -13681,6 +13835,7 @@ GoodName=Itoi Shigesato no Bass Tsuri No. 1 Kettei Ban! (J) [!] CRC=D137A2CA 62B65053 Players=1 Rumble=Yes +CountPerOp=1 [16EC788C8A4E7EEE268FDF9072A4F0D4] GoodName=Itoi Shigesato no Bass Tsuri No. 1 Kettei Ban! (J) [b1] @@ -13749,14 +13904,6 @@ RefMD5=244BEA64EA209990E9C69A830B507135 GoodName=Sim City 64 (J) [CART HACK] CRC=909535F8 118FEF8F -[83257408C9D0C4C87B92B891899D41CE] -GoodName=Sim City 64 (J) (Fixed RTC) [CART HACK] -CRC=77ABFD38 F1A44EEC - -[ECA4E86A18DCDDDB87250E3C28C9ACE2] -GoodName=Sim City 64 (U) [CART HACK] -CRC=00AF7C2B 5C670237 - [3E6FF36AE59F9261ED275FEABBF76CED] GoodName=Simon for N64 V0.1a by Jean-Luc Picard (POM '99) (PD) CRC=18531B7D 074AF73E @@ -13782,6 +13929,7 @@ Status=3 SaveType=SRAM Players=4 Rumble=Yes +CountPerOp=1 [983F8A1D9A8D6AA1A6500AF413CE31FF] GoodName=SmashRemix0.9.5b @@ -14118,6 +14266,7 @@ CRC=A3A044B5 6DB1BF5E Players=4 Status=3 SaveType=None +CountPerOp=1 [3A6A249843DDEAFFFD334AB3C5931F8D] GoodName=Spacer by Memir (POM '99) (PD) [t1] @@ -14547,6 +14696,7 @@ CRC=EAE6ACE2 020B4384 Players=1 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [3CB88B934572E7520F35E5458798775B] GoodName=Star Wars Episode I - Battle for Naboo (U) [!] @@ -14554,6 +14704,7 @@ CRC=3D02989B D4A381E2 Players=1 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [B4724120C269A1DC86991D34B1561F3D] GoodName=Star Wars Episode I - Battle for Naboo (U) [b1] @@ -14997,6 +15148,7 @@ Status=3 SaveType=SRAM Players=4 Rumble=Yes +CountPerOp=1 [7F18A06BB16A507E23F9DD636B7046A6] GoodName=Super Smash Bros. (A) [f1] @@ -15017,6 +15169,7 @@ Status=3 SaveType=SRAM Players=4 Rumble=Yes +CountPerOp=1 [4D37726FDFEC039CB36E2AAE65B9727D] GoodName=Super Smash Bros. (E) (M3) [b1] @@ -15035,6 +15188,7 @@ Status=3 SaveType=SRAM Players=4 Rumble=Yes +CountPerOp=1 [508BE860974B75470851A2D25C0FCB36] GoodName=Super Smash Bros. (U) [b1] @@ -15314,6 +15468,7 @@ GoodName=Tetris 64 (J) [!] CRC=963ADBA6 F7D5C89B Players=4 Biopak=Yes +SiDmaDuration=100 [1587B17344A43532B791DCEB237D2BFC] GoodName=Tetris 64 (J) [T+Ita] @@ -15411,12 +15566,14 @@ GoodName=Tigger's Honey Hunt (E) (M7) [!] CRC=E0C4F72F 769E1506 Players=1 SaveType=Flash RAM +CountPerOp=1 [F8636514B5B0EDEBF376C3111D24417A] GoodName=Tigger's Honey Hunt (U) [!] CRC=4EBFDD33 664C9D84 Players=1 SaveType=Flash RAM +CountPerOp=1 [7B41F28A920112F17401D633B368BA0C] GoodName=Tigger's Honey Hunt (U) [t1] @@ -15607,6 +15764,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [0072538EF925645DB310F8E23A480B89] GoodName=Top Gear Hyper Bike (E) [!] @@ -15615,6 +15773,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [561B438F6E8240BEF1DAEB36AAE72675] GoodName=Top Gear Hyper Bike (E) [b1] @@ -15628,6 +15787,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [7258F4AB367B025C95A4F476C461E717] GoodName=Top Gear Hyper Bike (U) [!] @@ -15636,6 +15796,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [6C65A252F227AEF18DF2DD3CE04CC821] GoodName=Top Gear Overdrive (E) [!] @@ -15643,6 +15804,7 @@ CRC=D09BA538 1C1A5489 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [11D6FFF288DE1BD61CCBD7CCA0C4A97B] GoodName=Top Gear Overdrive (E) [h1C] @@ -15655,6 +15817,7 @@ CRC=0578F24F 9175BF17 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [8C0F46FEF9A6034FCF0B7D6952FFEC53] GoodName=Top Gear Overdrive (J) [b1] @@ -15667,6 +15830,7 @@ CRC=D741CD80 ACA9B912 Players=4 SaveType=Eeprom 4KB Rumble=Yes +CountPerOp=1 [773FD446DA7F4E392907505053BF2A42] GoodName=Top Gear Overdrive (U) [o1] @@ -15793,6 +15957,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [FA0F12C15B3655F9F56888C3249B1CED] GoodName=Toy Story 2 - Buzz L'eclair A La Rescousse! (F) [!] @@ -15801,6 +15966,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [3F40F37B0464DD065067523FB21016DD] GoodName=Toy Story 2 - Captain Buzz Lightyear auf Rettungsmission! (G) (V1.0) [!] @@ -15809,6 +15975,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [A4A2B825797E2059B5DF60D733461F34] GoodName=Toy Story 2 - Captain Buzz Lightyear auf Rettungsmission! (G) (V1.1) [!] @@ -15817,6 +15984,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [B44E9C2D9D2F2DE3AF4793B824CCF936] GoodName=Toy Story 2 - Buzz Lightyear to the Rescue! (U) [!] @@ -15825,6 +15993,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [9E4F62BD672E3601F1BBF9CDAB791F9F] GoodName=Toy Story 2 - Buzz Lightyear to the Rescue! (U) (V1.0) [f1] (PAL) @@ -15843,6 +16012,7 @@ Players=1 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [3D22D5BD7997293612ECDD3046BEBA13] GoodName=Transformers - Beast Wars Metals 64 (J) [!] @@ -15866,6 +16036,7 @@ Players=2 SaveType=None Rumble=Yes Mempak=Yes +CountPerOp=1 [25E03763FC8A388A33871C58DFEB7C0E] GoodName=Tristar and Lightforce Quake Intro by Ayatollah & Mike (PD) @@ -16223,6 +16394,7 @@ GoodName=Uchhannanchan no Hono no Challenger - Denryu IraIra Bou (J) [!] CRC=28D5562D E4D5AE50 Players=2 Rumble=Yes +CountPerOp=1 [07B7A5CFDE9BC43F02A622387C5B5C58] GoodName=Uchhannanchan no Hono no Challenger - Denryu IraIra Bou (J) [h1C] @@ -16548,6 +16720,7 @@ CRC=98F9F2D0 03D9F09C Players=2 SaveType=None Mempak=Yes +CountPerOp=1 [C4FD61C707977F1BF48DC15E31BD2FB1] GoodName=Virtual Pool 64 (E) [o1] @@ -16560,6 +16733,7 @@ CRC=4E4A7643 A37439D7 Players=2 SaveType=None Mempak=Yes +CountPerOp=1 [C6855DF00BD5BE8A41DCE809093EE40B] GoodName=Virtual Pool 64 (U) [o1] @@ -16652,6 +16826,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=3 [EC097EB33BAD93A8AC6E15F7839762AB] GoodName=WCW Nitro (U) [b3] @@ -16713,6 +16888,7 @@ CRC=68E8A875 0CE7A486 Players=4 SaveType=SRAM Rumble=Yes +CountPerOp=1 [07F0AD841350BD7CA1E6A99FB7E887E6] GoodName=WCW-nWo Revenge (E) [h1C] @@ -16725,6 +16901,7 @@ CRC=DEE596AB AF3B7AE7 Players=4 SaveType=SRAM Rumble=Yes +CountPerOp=1 [B230D307428F4B69B3A80109AC905A44] GoodName=WCW-nWo Revenge (U) [b1] @@ -16928,12 +17105,14 @@ GoodName=War Gods (E) [!] CRC=D715CC70 271CF5D6 Players=2 SaveType=None +CountPerOp=1 [9FF2BA3C8408DE9F0EDB6D764A97C197] GoodName=War Gods (U) [!] CRC=F7FE28F6 C3F2ACC3 Players=2 SaveType=None +CountPerOp=1 [D08D61E3C244A081C166C6A8D539A181] GoodName=War Gods (U) [o1] @@ -17026,6 +17205,7 @@ Mempak=Yes GoodName=Wave Race 64 - Shindou Edition (J) (V1.2) [!] CRC=535DF3E2 609789F1 Players=2 +CountPerOp=3 SaveType=Eeprom 4KB Mempak=Yes Rumble=Yes @@ -17166,6 +17346,7 @@ CRC=CEA8B54F 7F21D503 Players=4 SaveType=None Mempak=Yes +CountPerOp=3 [15F425829D54DD290451D2F3EBAF953F] GoodName=Wetrix (E) (M6) [f1] (NTSC) @@ -17182,6 +17363,7 @@ GoodName=Wetrix (J) [!] CRC=DCB6EAFA C6BBCFA3 Players=4 SaveType=Eeprom 4KB +CountPerOp=3 [08826E96F3FB022A1C6351774198BA9D] GoodName=Wetrix (J) [o1] @@ -17194,6 +17376,7 @@ CRC=CEA8B54F 7F21D503 Players=4 SaveType=None Mempak=Yes +CountPerOp=3 [2ABE36754E866B9B6C4BDCFFC1D11ABF] GoodName=Wheel of Fortune (U) [!] @@ -17312,6 +17495,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [7260DA1CECD0D8844C5E29AA63476DEF] GoodName=Wipeout 64 (E) (Beta) [!] @@ -17320,6 +17504,7 @@ Players=4 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [73C6D87DBE50F73F3B44E0F237A546D7] GoodName=Wipeout 64 (U) [!] @@ -17328,6 +17513,7 @@ SaveType=None Mempak=Yes Rumble=Yes Players=4 +CountPerOp=1 [361F65D37F41536CDE98F83CAD456217] GoodName=Wipeout 64 (U) [o1] @@ -17350,6 +17536,7 @@ CRC=E43C9765 05B1C1BE Players=1 SaveType=None Mempak=Yes +CountPerOp=1 [D6E56B92EC7DBFB8B14DD5D8CFF6492E] GoodName=Wonder Project J2 - Koruro no Mori no Jozet (J) [b1] @@ -17392,6 +17579,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [9A2B0F3226FB8D129BEB7509C169476A] GoodName=World Driver Championship (E) (M5) [h1C] @@ -17405,6 +17593,7 @@ Players=2 SaveType=None Mempak=Yes Rumble=Yes +CountPerOp=1 [4B86C373533D015860467C5DC1F1C662] GoodName=World Driver Championship (U) [b1] @@ -17446,6 +17635,7 @@ SaveType=Eeprom 4KB [EC2BCB1B7FC7D068BE1F39E79E49A842] GoodName=Xena Warrior Princess - The Talisman of Fate (E) [!] CRC=0A1667C7 293346A6 +CountPerOp=4 Players=4 SaveType=None Mempak=Yes @@ -17454,6 +17644,7 @@ Rumble=Yes [1AC234649D28F09E82C0D11ABB17F03B] GoodName=Xena Warrior Princess - The Talisman of Fate (U) [!] CRC=0553AE9D EAD8E0C1 +CountPerOp=3 Players=4 SaveType=None Mempak=Yes @@ -17494,6 +17685,7 @@ GoodName=Yakouchuu II - Satsujin Kouru (J) [!] CRC=9F8B96C3 A01194DC Players=1 Rumble=Yes +CountPerOp=1 [F7AA4F819F41CB4236792A8145684627] GoodName=Yoshi's Story (Ch) (iQue) [!] @@ -17637,6 +17829,7 @@ GoodName=Yuke Yuke!! Trouble Makers (J) [!] CRC=9FE6162D E97E4037 Players=1 SaveType=Eeprom 4KB +CountPerOp=1 [6F9E56C8A2B6BA5F6DBE5214E352590D] GoodName=Yuke Yuke!! Trouble Makers (J) [a1] diff --git a/sw/deployer/src/debug.rs b/sw/deployer/src/debug.rs index 60c57a7..9d051fe 100644 --- a/sw/deployer/src/debug.rs +++ b/sw/deployer/src/debug.rs @@ -1,8 +1,11 @@ use crate::sc64; use chrono::Local; +use colored::Colorize; +use panic_message::panic_message; use std::{ io::{ErrorKind, Read, Write}, net::{TcpListener, TcpStream}, + panic, sync::mpsc::{channel, Receiver, Sender}, thread::{sleep, spawn}, time::Duration, @@ -77,7 +80,7 @@ impl Handler { let filename = &self.generate_filename("binaryout", "bin"); let mut file = std::fs::File::create(filename)?; file.write_all(data)?; - println!("Wrote {} bytes to {}", data.len(), filename); + println!("Wrote {} bytes to [{}]", data.len(), filename); Ok(()) } @@ -89,7 +92,7 @@ impl Handler { fn handle_datatype_screenshot(&mut self, _data: &[u8]) -> Result<(), sc64::Error> { if let Some(header) = self.header.take() { // TODO: support screenshot datatype - println!("Screenshot datatype not supported yet {:?}", header); + println!("Screenshot datatype not supported yet {:02X?}", header); } else { println!("Got screenshot packet without header data"); } @@ -130,7 +133,7 @@ pub fn new(gdb_port: Option) -> Result { listener.set_nonblocking(true).map_err(|_| { sc64::Error::new("Couldn't set GDB TCP socket listener as non-blocking") })?; - spawn(move || gdb_loop(listener, gdb_loop_tx, gdb_loop_rx)); + spawn(move || gdb_thread(listener, gdb_loop_tx, gdb_loop_rx)); } Ok(Handler { @@ -140,6 +143,15 @@ pub fn new(gdb_port: Option) -> Result { }) } +fn gdb_thread(listener: TcpListener, gdb_tx: Sender>, gdb_rx: Receiver>) { + match panic::catch_unwind(|| gdb_loop(listener, gdb_tx, gdb_rx)) { + Ok(_) => {} + Err(payload) => { + eprintln!("{}", panic_message(&payload).red()); + } + }; +} + fn gdb_loop(listener: TcpListener, gdb_tx: Sender>, gdb_rx: Receiver>) { for tcp_stream in listener.incoming() { match tcp_stream { diff --git a/sw/deployer/src/main.rs b/sw/deployer/src/main.rs index b6e7d4b..3cb40c9 100644 --- a/sw/deployer/src/main.rs +++ b/sw/deployer/src/main.rs @@ -217,7 +217,10 @@ impl From for sc64::TvType { fn main() { let cli = Cli::parse(); - panic::set_hook(Box::new(|_| {})); + #[cfg(not(debug_assertions))] + { + panic::set_hook(Box::new(|_| {})); + } match panic::catch_unwind(|| handle_command(&cli.command, cli.sn)) { Ok(_) => {} @@ -260,10 +263,11 @@ fn handle_upload_command(sn: Option, args: &UploadArgs) -> Result<(), sc let save: SaveType = if let Some(save_type) = args.save_type.clone() { save_type } else { - log_wait(format!("Calculating ROM hash"), || { - n64::guess_save_type(&mut rom_file) - })? - .into() + let (save_type, name) = n64::guess_save_type(&mut rom_file)?; + if let Some(name) = name { + println!("Detected ROM name: {name}"); + }; + save_type.into() }; let save_type: sc64::SaveType = save.into(); @@ -362,6 +366,7 @@ fn handle_debug_command(sn: Option, args: &DebugArgs) -> Result<(), sc64 } else if let Some(gdb_packet) = debug_handler.receive_gdb_packet() { sc64.send_debug_packet(gdb_packet)?; } else { + // TODO: handle user input thread::sleep(Duration::from_millis(1)); } } diff --git a/sw/deployer/src/n64.rs b/sw/deployer/src/n64.rs index b4a98e8..6486072 100644 --- a/sw/deployer/src/n64.rs +++ b/sw/deployer/src/n64.rs @@ -9,23 +9,29 @@ pub enum SaveType { Flashram, } -const HASH_CHUNK_LENGTH: usize = 64 * 1024; +const HASH_CHUNK_LENGTH: usize = 256 * 1024; -pub fn guess_save_type(reader: &mut T) -> Result { +pub fn guess_save_type( + reader: &mut T, +) -> Result<(SaveType, Option), Error> { let mut ed64_header = vec![0u8; 4]; reader.seek(std::io::SeekFrom::Start(0x3C))?; reader.read(&mut ed64_header)?; + if &ed64_header[0..2] == b"ED" { - return Ok(match ed64_header[3] >> 4 { - 1 => SaveType::Eeprom4k, - 2 => SaveType::Eeprom16k, - 3 => SaveType::Sram, - 4 => SaveType::SramBanked, - 5 => SaveType::Flashram, - 6 => SaveType::Sram, - _ => SaveType::None, - }); + return Ok(( + match ed64_header[3] >> 4 { + 1 => SaveType::Eeprom4k, + 2 => SaveType::Eeprom16k, + 3 => SaveType::Sram, + 4 => SaveType::SramBanked, + 5 => SaveType::Flashram, + 6 => SaveType::Sram, + _ => SaveType::None, + }, + None, + )); } let mut pi_config = vec![0u8; 4]; @@ -48,7 +54,6 @@ pub fn guess_save_type(reader: &mut T) -> Result 0 { @@ -66,15 +71,18 @@ pub fn guess_save_type(reader: &mut T) -> Result SaveType::Eeprom4k, - "Eeprom 16KB" => SaveType::Eeprom16k, - "SRAM" => SaveType::Sram, - "Flash RAM" => SaveType::Flashram, - _ => SaveType::None, - }); + return Ok(( + match save_type { + "Eeprom 4KB" => SaveType::Eeprom4k, + "Eeprom 16KB" => SaveType::Eeprom16k, + "SRAM" => SaveType::Sram, + "Flash RAM" => SaveType::Flashram, + _ => SaveType::None, + }, + section.get("GoodName").map(|s| s.to_string()), + )); } } - Ok(SaveType::None) + Ok((SaveType::None, None)) }