diff --git a/asm/non_matchings/camera/func_8006A1C4.s b/asm/non_matchings/camera/func_8006A1C4.s index 56fbb2ef..33386841 100644 --- a/asm/non_matchings/camera/func_8006A1C4.s +++ b/asm/non_matchings/camera/func_8006A1C4.s @@ -89,7 +89,7 @@ glabel func_8006A1C4 /* 06AF04 8006A304 00122283 */ sra $a0, $s2, 0xa /* 06AF08 8006A308 30990003 */ andi $t9, $a0, 3 /* 06AF0C 8006A30C 8FA5004C */ lw $a1, 0x4c($sp) -/* 06AF10 8006A310 0C01D0C7 */ jal func_8007431C +/* 06AF10 8006A310 0C01D0C7 */ jal erase_save_file /* 06AF14 8006A314 03202025 */ move $a0, $t9 .L8006A318: /* 06AF18 8006A318 324C0100 */ andi $t4, $s2, 0x100 diff --git a/asm/non_matchings/save_data/func_80072C54.s b/asm/non_matchings/save_data/func_80072C54.s deleted file mode 100644 index 58c4ab6c..00000000 --- a/asm/non_matchings/save_data/func_80072C54.s +++ /dev/null @@ -1,135 +0,0 @@ -glabel func_80072C54 -/* 073854 80072C54 1C800003 */ bgtz $a0, .L80072C64 -/* 073858 80072C58 00001825 */ move $v1, $zero -/* 07385C 80072C5C 03E00008 */ jr $ra -/* 073860 80072C60 00001025 */ move $v0, $zero - -.L80072C64: -/* 073864 80072C64 248E001F */ addiu $t6, $a0, 0x1f -/* 073868 80072C68 240F0001 */ li $t7, 1 -/* 07386C 80072C6C 1080006B */ beqz $a0, .L80072E1C -/* 073870 80072C70 01CF1004 */ sllv $v0, $t7, $t6 -/* 073874 80072C74 30850003 */ andi $a1, $a0, 3 -/* 073878 80072C78 00052823 */ negu $a1, $a1 -/* 07387C 80072C7C 10A0001D */ beqz $a1, .L80072CF4 -/* 073880 80072C80 00A44021 */ addu $t0, $a1, $a0 -/* 073884 80072C84 3C0B8012 */ lui $t3, %hi(D_801241EC) # $t3, 0x8012 -/* 073888 80072C88 3C0A8012 */ lui $t2, %hi(D_801241F0) # $t2, 0x8012 -/* 07388C 80072C8C 3C098012 */ lui $t1, %hi(D_801241F4) # $t1, 0x8012 -/* 073890 80072C90 252941F4 */ addiu $t1, %lo(D_801241F4) # addiu $t1, $t1, 0x41f4 -/* 073894 80072C94 254A41F0 */ addiu $t2, %lo(D_801241F0) # addiu $t2, $t2, 0x41f0 -/* 073898 80072C98 256B41EC */ addiu $t3, %lo(D_801241EC) # addiu $t3, $t3, 0x41ec -/* 07389C 80072C9C 240C0080 */ li $t4, 128 -.L80072CA0: -/* 0738A0 80072CA0 8D260000 */ lw $a2, ($t1) -/* 0738A4 80072CA4 2485FFFF */ addiu $a1, $a0, -1 -/* 0738A8 80072CA8 14C00008 */ bnez $a2, .L80072CCC -/* 0738AC 80072CAC 00027042 */ srl $t6, $v0, 1 -/* 0738B0 80072CB0 8D670000 */ lw $a3, ($t3) -/* 0738B4 80072CB4 01803025 */ move $a2, $t4 -/* 0738B8 80072CB8 90F80000 */ lbu $t8, ($a3) -/* 0738BC 80072CBC 24F90001 */ addiu $t9, $a3, 1 -/* 0738C0 80072CC0 AD790000 */ sw $t9, ($t3) -/* 0738C4 80072CC4 AD2C0000 */ sw $t4, ($t1) -/* 0738C8 80072CC8 AD580000 */ sw $t8, ($t2) -.L80072CCC: -/* 0738CC 80072CCC 8D4D0000 */ lw $t5, ($t2) -/* 0738D0 80072CD0 0006C042 */ srl $t8, $a2, 1 -/* 0738D4 80072CD4 01A67824 */ and $t7, $t5, $a2 -/* 0738D8 80072CD8 11E00002 */ beqz $t7, .L80072CE4 -/* 0738DC 80072CDC 00A02025 */ move $a0, $a1 -/* 0738E0 80072CE0 00621825 */ or $v1, $v1, $v0 -.L80072CE4: -/* 0738E4 80072CE4 01C01025 */ move $v0, $t6 -/* 0738E8 80072CE8 1505FFED */ bne $t0, $a1, .L80072CA0 -/* 0738EC 80072CEC AD380000 */ sw $t8, ($t1) -/* 0738F0 80072CF0 10A0004A */ beqz $a1, .L80072E1C -.L80072CF4: -/* 0738F4 80072CF4 3C098012 */ lui $t1, %hi(D_801241F4) # $t1, 0x8012 -/* 0738F8 80072CF8 3C0A8012 */ lui $t2, %hi(D_801241F0) # $t2, 0x8012 -/* 0738FC 80072CFC 3C0B8012 */ lui $t3, %hi(D_801241EC) # $t3, 0x8012 -/* 073900 80072D00 256B41EC */ addiu $t3, %lo(D_801241EC) # addiu $t3, $t3, 0x41ec -/* 073904 80072D04 254A41F0 */ addiu $t2, %lo(D_801241F0) # addiu $t2, $t2, 0x41f0 -/* 073908 80072D08 252941F4 */ addiu $t1, %lo(D_801241F4) # addiu $t1, $t1, 0x41f4 -/* 07390C 80072D0C 240C0080 */ li $t4, 128 -.L80072D10: -/* 073910 80072D10 8D260000 */ lw $a2, ($t1) -/* 073914 80072D14 00027042 */ srl $t6, $v0, 1 -/* 073918 80072D18 14C00008 */ bnez $a2, .L80072D3C -/* 07391C 80072D1C 2484FFFC */ addiu $a0, $a0, -4 -/* 073920 80072D20 8D670000 */ lw $a3, ($t3) -/* 073924 80072D24 01803025 */ move $a2, $t4 -/* 073928 80072D28 90F90000 */ lbu $t9, ($a3) -/* 07392C 80072D2C 24ED0001 */ addiu $t5, $a3, 1 -/* 073930 80072D30 AD6D0000 */ sw $t5, ($t3) -/* 073934 80072D34 AD2C0000 */ sw $t4, ($t1) -/* 073938 80072D38 AD590000 */ sw $t9, ($t2) -.L80072D3C: -/* 07393C 80072D3C 8D450000 */ lw $a1, ($t2) -/* 073940 80072D40 0006C042 */ srl $t8, $a2, 1 -/* 073944 80072D44 00A67824 */ and $t7, $a1, $a2 -/* 073948 80072D48 11E00002 */ beqz $t7, .L80072D54 -/* 07394C 80072D4C 03003025 */ move $a2, $t8 -/* 073950 80072D50 00621825 */ or $v1, $v1, $v0 -.L80072D54: -/* 073954 80072D54 01C01025 */ move $v0, $t6 -/* 073958 80072D58 17000008 */ bnez $t8, .L80072D7C -/* 07395C 80072D5C AD380000 */ sw $t8, ($t1) -/* 073960 80072D60 8D670000 */ lw $a3, ($t3) -/* 073964 80072D64 01803025 */ move $a2, $t4 -/* 073968 80072D68 90E50000 */ lbu $a1, ($a3) -/* 07396C 80072D6C 24ED0001 */ addiu $t5, $a3, 1 -/* 073970 80072D70 AD6D0000 */ sw $t5, ($t3) -/* 073974 80072D74 AD2C0000 */ sw $t4, ($t1) -/* 073978 80072D78 AD450000 */ sw $a1, ($t2) -.L80072D7C: -/* 07397C 80072D7C 00A67824 */ and $t7, $a1, $a2 -/* 073980 80072D80 11E00002 */ beqz $t7, .L80072D8C -/* 073984 80072D84 00027042 */ srl $t6, $v0, 1 -/* 073988 80072D88 00621825 */ or $v1, $v1, $v0 -.L80072D8C: -/* 07398C 80072D8C 0006C042 */ srl $t8, $a2, 1 -/* 073990 80072D90 AD380000 */ sw $t8, ($t1) -/* 073994 80072D94 03003025 */ move $a2, $t8 -/* 073998 80072D98 17000008 */ bnez $t8, .L80072DBC -/* 07399C 80072D9C 01C01025 */ move $v0, $t6 -/* 0739A0 80072DA0 8D670000 */ lw $a3, ($t3) -/* 0739A4 80072DA4 01803025 */ move $a2, $t4 -/* 0739A8 80072DA8 90E50000 */ lbu $a1, ($a3) -/* 0739AC 80072DAC 24ED0001 */ addiu $t5, $a3, 1 -/* 0739B0 80072DB0 AD6D0000 */ sw $t5, ($t3) -/* 0739B4 80072DB4 AD2C0000 */ sw $t4, ($t1) -/* 0739B8 80072DB8 AD450000 */ sw $a1, ($t2) -.L80072DBC: -/* 0739BC 80072DBC 00A67824 */ and $t7, $a1, $a2 -/* 0739C0 80072DC0 11E00002 */ beqz $t7, .L80072DCC -/* 0739C4 80072DC4 00027042 */ srl $t6, $v0, 1 -/* 0739C8 80072DC8 00621825 */ or $v1, $v1, $v0 -.L80072DCC: -/* 0739CC 80072DCC 0006C042 */ srl $t8, $a2, 1 -/* 0739D0 80072DD0 AD380000 */ sw $t8, ($t1) -/* 0739D4 80072DD4 03003025 */ move $a2, $t8 -/* 0739D8 80072DD8 17000008 */ bnez $t8, .L80072DFC -/* 0739DC 80072DDC 01C01025 */ move $v0, $t6 -/* 0739E0 80072DE0 8D670000 */ lw $a3, ($t3) -/* 0739E4 80072DE4 01803025 */ move $a2, $t4 -/* 0739E8 80072DE8 90E50000 */ lbu $a1, ($a3) -/* 0739EC 80072DEC 24ED0001 */ addiu $t5, $a3, 1 -/* 0739F0 80072DF0 AD6D0000 */ sw $t5, ($t3) -/* 0739F4 80072DF4 AD2C0000 */ sw $t4, ($t1) -/* 0739F8 80072DF8 AD450000 */ sw $a1, ($t2) -.L80072DFC: -/* 0739FC 80072DFC 00A67824 */ and $t7, $a1, $a2 -/* 073A00 80072E00 11E00002 */ beqz $t7, .L80072E0C -/* 073A04 80072E04 00027042 */ srl $t6, $v0, 1 -/* 073A08 80072E08 00621825 */ or $v1, $v1, $v0 -.L80072E0C: -/* 073A0C 80072E0C 0006C042 */ srl $t8, $a2, 1 -/* 073A10 80072E10 AD380000 */ sw $t8, ($t1) -/* 073A14 80072E14 1480FFBE */ bnez $a0, .L80072D10 -/* 073A18 80072E18 01C01025 */ move $v0, $t6 -.L80072E1C: -/* 073A1C 80072E1C 00601025 */ move $v0, $v1 -/* 073A20 80072E20 03E00008 */ jr $ra -/* 073A24 80072E24 00000000 */ nop - diff --git a/asm/non_matchings/save_data/func_80072E28.s b/asm/non_matchings/save_data/func_80072E28.s deleted file mode 100644 index 9380337d..00000000 --- a/asm/non_matchings/save_data/func_80072E28.s +++ /dev/null @@ -1,162 +0,0 @@ -glabel func_80072E28 -/* 073A28 80072E28 1880008E */ blez $a0, .L80073064 -/* 073A2C 80072E2C 00A03025 */ move $a2, $a1 -/* 073A30 80072E30 248E001F */ addiu $t6, $a0, 0x1f -/* 073A34 80072E34 240F0001 */ li $t7, 1 -/* 073A38 80072E38 10800082 */ beqz $a0, .L80073044 -/* 073A3C 80072E3C 01CF1004 */ sllv $v0, $t7, $t6 -/* 073A40 80072E40 30830003 */ andi $v1, $a0, 3 -/* 073A44 80072E44 00031823 */ negu $v1, $v1 -/* 073A48 80072E48 10600021 */ beqz $v1, .L80072ED0 -/* 073A4C 80072E4C 00643821 */ addu $a3, $v1, $a0 -/* 073A50 80072E50 3C0A8012 */ lui $t2, %hi(D_801241F0) # $t2, 0x8012 -/* 073A54 80072E54 3C098012 */ lui $t1, %hi(D_801241EC) # $t1, 0x8012 -/* 073A58 80072E58 3C088012 */ lui $t0, %hi(D_801241F4) # $t0, 0x8012 -/* 073A5C 80072E5C 250841F4 */ addiu $t0, %lo(D_801241F4) # addiu $t0, $t0, 0x41f4 -/* 073A60 80072E60 252941EC */ addiu $t1, %lo(D_801241EC) # addiu $t1, $t1, 0x41ec -/* 073A64 80072E64 254A41F0 */ addiu $t2, %lo(D_801241F0) # addiu $t2, $t2, 0x41f0 -/* 073A68 80072E68 240B0080 */ li $t3, 128 -.L80072E6C: -/* 073A6C 80072E6C 8D050000 */ lw $a1, ($t0) -/* 073A70 80072E70 2483FFFF */ addiu $v1, $a0, -1 -/* 073A74 80072E74 14A0000A */ bnez $a1, .L80072EA0 -/* 073A78 80072E78 00C27824 */ and $t7, $a2, $v0 -/* 073A7C 80072E7C 8D580000 */ lw $t8, ($t2) -/* 073A80 80072E80 8D390000 */ lw $t9, ($t1) -/* 073A84 80072E84 01602825 */ move $a1, $t3 -/* 073A88 80072E88 A3380000 */ sb $t8, ($t9) -/* 073A8C 80072E8C 8D2C0000 */ lw $t4, ($t1) -/* 073A90 80072E90 AD0B0000 */ sw $t3, ($t0) -/* 073A94 80072E94 258D0001 */ addiu $t5, $t4, 1 -/* 073A98 80072E98 AD2D0000 */ sw $t5, ($t1) -/* 073A9C 80072E9C AD400000 */ sw $zero, ($t2) -.L80072EA0: -/* 073AA0 80072EA0 11E00005 */ beqz $t7, .L80072EB8 -/* 073AA4 80072EA4 0002C842 */ srl $t9, $v0, 1 -/* 073AA8 80072EA8 8D4E0000 */ lw $t6, ($t2) -/* 073AAC 80072EAC 00000000 */ nop -/* 073AB0 80072EB0 01C5C025 */ or $t8, $t6, $a1 -/* 073AB4 80072EB4 AD580000 */ sw $t8, ($t2) -.L80072EB8: -/* 073AB8 80072EB8 00056042 */ srl $t4, $a1, 1 -/* 073ABC 80072EBC AD0C0000 */ sw $t4, ($t0) -/* 073AC0 80072EC0 03201025 */ move $v0, $t9 -/* 073AC4 80072EC4 14E3FFE9 */ bne $a3, $v1, .L80072E6C -/* 073AC8 80072EC8 00602025 */ move $a0, $v1 -/* 073ACC 80072ECC 1060005D */ beqz $v1, .L80073044 -.L80072ED0: -/* 073AD0 80072ED0 3C088012 */ lui $t0, %hi(D_801241F4) # $t0, 0x8012 -/* 073AD4 80072ED4 3C098012 */ lui $t1, %hi(D_801241EC) # $t1, 0x8012 -/* 073AD8 80072ED8 3C0A8012 */ lui $t2, %hi(D_801241F0) # $t2, 0x8012 -/* 073ADC 80072EDC 254A41F0 */ addiu $t2, %lo(D_801241F0) # addiu $t2, $t2, 0x41f0 -/* 073AE0 80072EE0 252941EC */ addiu $t1, %lo(D_801241EC) # addiu $t1, $t1, 0x41ec -/* 073AE4 80072EE4 250841F4 */ addiu $t0, %lo(D_801241F4) # addiu $t0, $t0, 0x41f4 -/* 073AE8 80072EE8 240B0080 */ li $t3, 128 -.L80072EEC: -/* 073AEC 80072EEC 8D050000 */ lw $a1, ($t0) -/* 073AF0 80072EF0 00C2C824 */ and $t9, $a2, $v0 -/* 073AF4 80072EF4 14A0000A */ bnez $a1, .L80072F20 -/* 073AF8 80072EF8 2484FFFC */ addiu $a0, $a0, -4 -/* 073AFC 80072EFC 8D4D0000 */ lw $t5, ($t2) -/* 073B00 80072F00 8D2F0000 */ lw $t7, ($t1) -/* 073B04 80072F04 01602825 */ move $a1, $t3 -/* 073B08 80072F08 A1ED0000 */ sb $t5, ($t7) -/* 073B0C 80072F0C 8D2E0000 */ lw $t6, ($t1) -/* 073B10 80072F10 AD400000 */ sw $zero, ($t2) -/* 073B14 80072F14 25D80001 */ addiu $t8, $t6, 1 -/* 073B18 80072F18 AD380000 */ sw $t8, ($t1) -/* 073B1C 80072F1C AD0B0000 */ sw $t3, ($t0) -.L80072F20: -/* 073B20 80072F20 13200005 */ beqz $t9, .L80072F38 -/* 073B24 80072F24 00027842 */ srl $t7, $v0, 1 -/* 073B28 80072F28 8D4C0000 */ lw $t4, ($t2) -/* 073B2C 80072F2C 00000000 */ nop -/* 073B30 80072F30 01856825 */ or $t5, $t4, $a1 -/* 073B34 80072F34 AD4D0000 */ sw $t5, ($t2) -.L80072F38: -/* 073B38 80072F38 00057042 */ srl $t6, $a1, 1 -/* 073B3C 80072F3C 01E01025 */ move $v0, $t7 -/* 073B40 80072F40 AD0E0000 */ sw $t6, ($t0) -/* 073B44 80072F44 15C0000A */ bnez $t6, .L80072F70 -/* 073B48 80072F48 01C02825 */ move $a1, $t6 -/* 073B4C 80072F4C 8D580000 */ lw $t8, ($t2) -/* 073B50 80072F50 8D390000 */ lw $t9, ($t1) -/* 073B54 80072F54 01602825 */ move $a1, $t3 -/* 073B58 80072F58 A3380000 */ sb $t8, ($t9) -/* 073B5C 80072F5C 8D2C0000 */ lw $t4, ($t1) -/* 073B60 80072F60 AD0B0000 */ sw $t3, ($t0) -/* 073B64 80072F64 258D0001 */ addiu $t5, $t4, 1 -/* 073B68 80072F68 AD2D0000 */ sw $t5, ($t1) -/* 073B6C 80072F6C AD400000 */ sw $zero, ($t2) -.L80072F70: -/* 073B70 80072F70 00C27824 */ and $t7, $a2, $v0 -/* 073B74 80072F74 11E00005 */ beqz $t7, .L80072F8C -/* 073B78 80072F78 0002C842 */ srl $t9, $v0, 1 -/* 073B7C 80072F7C 8D4E0000 */ lw $t6, ($t2) -/* 073B80 80072F80 00000000 */ nop -/* 073B84 80072F84 01C5C025 */ or $t8, $t6, $a1 -/* 073B88 80072F88 AD580000 */ sw $t8, ($t2) -.L80072F8C: -/* 073B8C 80072F8C 00056042 */ srl $t4, $a1, 1 -/* 073B90 80072F90 AD0C0000 */ sw $t4, ($t0) -/* 073B94 80072F94 01802825 */ move $a1, $t4 -/* 073B98 80072F98 1580000A */ bnez $t4, .L80072FC4 -/* 073B9C 80072F9C 03201025 */ move $v0, $t9 -/* 073BA0 80072FA0 8D4D0000 */ lw $t5, ($t2) -/* 073BA4 80072FA4 8D2F0000 */ lw $t7, ($t1) -/* 073BA8 80072FA8 01602825 */ move $a1, $t3 -/* 073BAC 80072FAC A1ED0000 */ sb $t5, ($t7) -/* 073BB0 80072FB0 8D2E0000 */ lw $t6, ($t1) -/* 073BB4 80072FB4 AD0B0000 */ sw $t3, ($t0) -/* 073BB8 80072FB8 25D80001 */ addiu $t8, $t6, 1 -/* 073BBC 80072FBC AD380000 */ sw $t8, ($t1) -/* 073BC0 80072FC0 AD400000 */ sw $zero, ($t2) -.L80072FC4: -/* 073BC4 80072FC4 00C2C824 */ and $t9, $a2, $v0 -/* 073BC8 80072FC8 13200005 */ beqz $t9, .L80072FE0 -/* 073BCC 80072FCC 00027842 */ srl $t7, $v0, 1 -/* 073BD0 80072FD0 8D4C0000 */ lw $t4, ($t2) -/* 073BD4 80072FD4 00000000 */ nop -/* 073BD8 80072FD8 01856825 */ or $t5, $t4, $a1 -/* 073BDC 80072FDC AD4D0000 */ sw $t5, ($t2) -.L80072FE0: -/* 073BE0 80072FE0 00057042 */ srl $t6, $a1, 1 -/* 073BE4 80072FE4 AD0E0000 */ sw $t6, ($t0) -/* 073BE8 80072FE8 01C02825 */ move $a1, $t6 -/* 073BEC 80072FEC 15C0000A */ bnez $t6, .L80073018 -/* 073BF0 80072FF0 01E01025 */ move $v0, $t7 -/* 073BF4 80072FF4 8D580000 */ lw $t8, ($t2) -/* 073BF8 80072FF8 8D390000 */ lw $t9, ($t1) -/* 073BFC 80072FFC 01602825 */ move $a1, $t3 -/* 073C00 80073000 A3380000 */ sb $t8, ($t9) -/* 073C04 80073004 8D2C0000 */ lw $t4, ($t1) -/* 073C08 80073008 AD0B0000 */ sw $t3, ($t0) -/* 073C0C 8007300C 258D0001 */ addiu $t5, $t4, 1 -/* 073C10 80073010 AD2D0000 */ sw $t5, ($t1) -/* 073C14 80073014 AD400000 */ sw $zero, ($t2) -.L80073018: -/* 073C18 80073018 00C27824 */ and $t7, $a2, $v0 -/* 073C1C 8007301C 11E00005 */ beqz $t7, .L80073034 -/* 073C20 80073020 0002C842 */ srl $t9, $v0, 1 -/* 073C24 80073024 8D4E0000 */ lw $t6, ($t2) -/* 073C28 80073028 00000000 */ nop -/* 073C2C 8007302C 01C5C025 */ or $t8, $t6, $a1 -/* 073C30 80073030 AD580000 */ sw $t8, ($t2) -.L80073034: -/* 073C34 80073034 00056042 */ srl $t4, $a1, 1 -/* 073C38 80073038 AD0C0000 */ sw $t4, ($t0) -/* 073C3C 8007303C 1480FFAB */ bnez $a0, .L80072EEC -/* 073C40 80073040 03201025 */ move $v0, $t9 -.L80073044: -/* 073C44 80073044 3C098012 */ lui $t1, %hi(D_801241EC) # $t1, 0x8012 -/* 073C48 80073048 3C0A8012 */ lui $t2, %hi(D_801241F0) # $t2, 0x8012 -/* 073C4C 8007304C 254A41F0 */ addiu $t2, %lo(D_801241F0) # addiu $t2, $t2, 0x41f0 -/* 073C50 80073050 252941EC */ addiu $t1, %lo(D_801241EC) # addiu $t1, $t1, 0x41ec -/* 073C54 80073054 8D2F0000 */ lw $t7, ($t1) -/* 073C58 80073058 8D4D0000 */ lw $t5, ($t2) -/* 073C5C 8007305C 00000000 */ nop -/* 073C60 80073060 A1ED0000 */ sb $t5, ($t7) -.L80073064: -/* 073C64 80073064 03E00008 */ jr $ra -/* 073C68 80073068 00000000 */ nop - diff --git a/asm/non_matchings/save_data/func_8007306C.s b/asm/non_matchings/save_data/func_8007306C.s deleted file mode 100644 index 4677b6e9..00000000 --- a/asm/non_matchings/save_data/func_8007306C.s +++ /dev/null @@ -1,174 +0,0 @@ -glabel func_8007306C -/* 073C6C 8007306C 27BDFFB0 */ addiu $sp, $sp, -0x50 -/* 073C70 80073070 AFBF0024 */ sw $ra, 0x24($sp) -/* 073C74 80073074 AFB20020 */ sw $s2, 0x20($sp) -/* 073C78 80073078 AFB1001C */ sw $s1, 0x1c($sp) -/* 073C7C 8007307C 00A08825 */ move $s1, $a1 -/* 073C80 80073080 00809025 */ move $s2, $a0 -/* 073C84 80073084 0C01BA65 */ jal func_8006E994 -/* 073C88 80073088 AFB00018 */ sw $s0, 0x18($sp) -/* 073C8C 8007308C 27A40048 */ addiu $a0, $sp, 0x48 -/* 073C90 80073090 0C01AC89 */ jal get_number_of_levels_and_worlds -/* 073C94 80073094 27A50044 */ addiu $a1, $sp, 0x44 -/* 073C98 80073098 3C018012 */ lui $at, %hi(D_801241EC) # $at, 0x8012 -/* 073C9C 8007309C 3C028012 */ lui $v0, %hi(D_801241F4) # $v0, 0x8012 -/* 073CA0 800730A0 AC3141EC */ sw $s1, %lo(D_801241EC)($at) -/* 073CA4 800730A4 244241F4 */ addiu $v0, %lo(D_801241F4) # addiu $v0, $v0, 0x41f4 -/* 073CA8 800730A8 AC400000 */ sw $zero, ($v0) -/* 073CAC 800730AC 3C018012 */ lui $at, %hi(D_801241F0) # $at, 0x8012 -/* 073CB0 800730B0 AC2041F0 */ sw $zero, %lo(D_801241F0)($at) -/* 073CB4 800730B4 0C01CB15 */ jal func_80072C54 -/* 073CB8 800730B8 24040010 */ li $a0, 16 -/* 073CBC 800730BC 2444FFFB */ addiu $a0, $v0, -5 -/* 073CC0 800730C0 00047C00 */ sll $t7, $a0, 0x10 -/* 073CC4 800730C4 000F2403 */ sra $a0, $t7, 0x10 -/* 073CC8 800730C8 24100002 */ li $s0, 2 -/* 073CCC 800730CC 26230002 */ addiu $v1, $s1, 2 -.L800730D0: -/* 073CD0 800730D0 90790000 */ lbu $t9, ($v1) -/* 073CD4 800730D4 26100001 */ addiu $s0, $s0, 1 -/* 073CD8 800730D8 00992023 */ subu $a0, $a0, $t9 -/* 073CDC 800730DC 00044400 */ sll $t0, $a0, 0x10 -/* 073CE0 800730E0 00084C03 */ sra $t1, $t0, 0x10 -/* 073CE4 800730E4 2A010028 */ slti $at, $s0, 0x28 -/* 073CE8 800730E8 01202025 */ move $a0, $t1 -/* 073CEC 800730EC 1420FFF8 */ bnez $at, .L800730D0 -/* 073CF0 800730F0 24630001 */ addiu $v1, $v1, 1 -/* 073CF4 800730F4 15200077 */ bnez $t1, .L800732D4 -/* 073CF8 800730F8 8FBF0024 */ lw $ra, 0x24($sp) -/* 073CFC 800730FC 8FAA0048 */ lw $t2, 0x48($sp) -/* 073D00 80073100 00008025 */ move $s0, $zero -/* 073D04 80073104 1940002E */ blez $t2, .L800731C0 -/* 073D08 80073108 00008825 */ move $s1, $zero -.L8007310C: -/* 073D0C 8007310C 0C01AC53 */ jal func_8006B14C -/* 073D10 80073110 02002025 */ move $a0, $s0 -/* 073D14 80073114 10400005 */ beqz $v0, .L8007312C -/* 073D18 80073118 304B0040 */ andi $t3, $v0, 0x40 -/* 073D1C 8007311C 15600003 */ bnez $t3, .L8007312C -/* 073D20 80073120 24010008 */ li $at, 8 -/* 073D24 80073124 14410021 */ bne $v0, $at, .L800731AC -/* 073D28 80073128 8FAE0048 */ lw $t6, 0x48($sp) -.L8007312C: -/* 073D2C 8007312C 0C01CB15 */ jal func_80072C54 -/* 073D30 80073130 24040002 */ li $a0, 2 -/* 073D34 80073134 304300FF */ andi $v1, $v0, 0xff -/* 073D38 80073138 18600008 */ blez $v1, .L8007315C -/* 073D3C 8007313C 28610002 */ slti $at, $v1, 2 -/* 073D40 80073140 8E4C0004 */ lw $t4, 4($s2) -/* 073D44 80073144 00106880 */ sll $t5, $s0, 2 -/* 073D48 80073148 018D1021 */ addu $v0, $t4, $t5 -/* 073D4C 8007314C 8C4E0000 */ lw $t6, ($v0) -/* 073D50 80073150 00000000 */ nop -/* 073D54 80073154 35CF0001 */ ori $t7, $t6, 1 -/* 073D58 80073158 AC4F0000 */ sw $t7, ($v0) -.L8007315C: -/* 073D5C 8007315C 14200008 */ bnez $at, .L80073180 -/* 073D60 80073160 26310002 */ addiu $s1, $s1, 2 -/* 073D64 80073164 8E580004 */ lw $t8, 4($s2) -/* 073D68 80073168 0010C880 */ sll $t9, $s0, 2 -/* 073D6C 8007316C 03191021 */ addu $v0, $t8, $t9 -/* 073D70 80073170 8C480000 */ lw $t0, ($v0) -/* 073D74 80073174 00000000 */ nop -/* 073D78 80073178 35090002 */ ori $t1, $t0, 2 -/* 073D7C 8007317C AC490000 */ sw $t1, ($v0) -.L80073180: -/* 073D80 80073180 28610003 */ slti $at, $v1, 3 -/* 073D84 80073184 14200008 */ bnez $at, .L800731A8 -/* 073D88 80073188 00000000 */ nop -/* 073D8C 8007318C 8E4A0004 */ lw $t2, 4($s2) -/* 073D90 80073190 00105880 */ sll $t3, $s0, 2 -/* 073D94 80073194 014B1021 */ addu $v0, $t2, $t3 -/* 073D98 80073198 8C4C0000 */ lw $t4, ($v0) -/* 073D9C 8007319C 00000000 */ nop -/* 073DA0 800731A0 358D0004 */ ori $t5, $t4, 4 -/* 073DA4 800731A4 AC4D0000 */ sw $t5, ($v0) -.L800731A8: -/* 073DA8 800731A8 8FAE0048 */ lw $t6, 0x48($sp) -.L800731AC: -/* 073DAC 800731AC 26100001 */ addiu $s0, $s0, 1 -/* 073DB0 800731B0 020E082A */ slt $at, $s0, $t6 -/* 073DB4 800731B4 1420FFD5 */ bnez $at, .L8007310C -/* 073DB8 800731B8 00000000 */ nop -/* 073DBC 800731BC 00008025 */ move $s0, $zero -.L800731C0: -/* 073DC0 800731C0 240F0044 */ li $t7, 68 -/* 073DC4 800731C4 0C01CB15 */ jal func_80072C54 -/* 073DC8 800731C8 01F12023 */ subu $a0, $t7, $s1 -/* 073DCC 800731CC 0C01CB15 */ jal func_80072C54 -/* 073DD0 800731D0 24040006 */ li $a0, 6 -/* 073DD4 800731D4 A6420014 */ sh $v0, 0x14($s2) -/* 073DD8 800731D8 0C01CB15 */ jal func_80072C54 -/* 073DDC 800731DC 2404000A */ li $a0, 10 -/* 073DE0 800731E0 A642000E */ sh $v0, 0xe($s2) -/* 073DE4 800731E4 0C01CB15 */ jal func_80072C54 -/* 073DE8 800731E8 2404000C */ li $a0, 12 -/* 073DEC 800731EC A642000C */ sh $v0, 0xc($s2) -/* 073DF0 800731F0 8FB80044 */ lw $t8, 0x44($sp) -/* 073DF4 800731F4 00001825 */ move $v1, $zero -/* 073DF8 800731F8 1B00000E */ blez $t8, .L80073234 -/* 073DFC 800731FC 24040007 */ li $a0, 7 -.L80073200: -/* 073E00 80073200 0C01CB15 */ jal func_80072C54 -/* 073E04 80073204 AFA3002C */ sw $v1, 0x2c($sp) -/* 073E08 80073208 8FA3002C */ lw $v1, 0x2c($sp) -/* 073E0C 8007320C 8E590000 */ lw $t9, ($s2) -/* 073E10 80073210 26100001 */ addiu $s0, $s0, 1 -/* 073E14 80073214 03234021 */ addu $t0, $t9, $v1 -/* 073E18 80073218 A5020000 */ sh $v0, ($t0) -/* 073E1C 8007321C 8FA90044 */ lw $t1, 0x44($sp) -/* 073E20 80073220 24630002 */ addiu $v1, $v1, 2 -/* 073E24 80073224 0209082A */ slt $at, $s0, $t1 -/* 073E28 80073228 1420FFF5 */ bnez $at, .L80073200 -/* 073E2C 8007322C 24040007 */ li $a0, 7 -/* 073E30 80073230 00008025 */ move $s0, $zero -.L80073234: -/* 073E34 80073234 0C01CB15 */ jal func_80072C54 -/* 073E38 80073238 24040003 */ li $a0, 3 -/* 073E3C 8007323C A2420016 */ sb $v0, 0x16($s2) -/* 073E40 80073240 0C01CB15 */ jal func_80072C54 -/* 073E44 80073244 24040003 */ li $a0, 3 -/* 073E48 80073248 A2420017 */ sb $v0, 0x17($s2) -/* 073E4C 8007324C 8FAA0044 */ lw $t2, 0x44($sp) -/* 073E50 80073250 00000000 */ nop -/* 073E54 80073254 19400012 */ blez $t2, .L800732A0 -/* 073E58 80073258 00000000 */ nop -.L8007325C: -/* 073E5C 8007325C 0C01CB15 */ jal func_80072C54 -/* 073E60 80073260 24040010 */ li $a0, 16 -/* 073E64 80073264 00408825 */ move $s1, $v0 -/* 073E68 80073268 0C01AC75 */ jal get_hub_area_id -/* 073E6C 8007326C 02002025 */ move $a0, $s0 -/* 073E70 80073270 8E4B0004 */ lw $t3, 4($s2) -/* 073E74 80073274 00026080 */ sll $t4, $v0, 2 -/* 073E78 80073278 016C1821 */ addu $v1, $t3, $t4 -/* 073E7C 8007327C 8C6D0000 */ lw $t5, ($v1) -/* 073E80 80073280 00117400 */ sll $t6, $s1, 0x10 -/* 073E84 80073284 01AE7825 */ or $t7, $t5, $t6 -/* 073E88 80073288 AC6F0000 */ sw $t7, ($v1) -/* 073E8C 8007328C 8FB80044 */ lw $t8, 0x44($sp) -/* 073E90 80073290 26100001 */ addiu $s0, $s0, 1 -/* 073E94 80073294 0218082A */ slt $at, $s0, $t8 -/* 073E98 80073298 1420FFF0 */ bnez $at, .L8007325C -/* 073E9C 8007329C 00000000 */ nop -.L800732A0: -/* 073EA0 800732A0 0C01CB15 */ jal func_80072C54 -/* 073EA4 800732A4 24040008 */ li $a0, 8 -/* 073EA8 800732A8 A6420008 */ sh $v0, 8($s2) -/* 073EAC 800732AC 0C01CB15 */ jal func_80072C54 -/* 073EB0 800732B0 24040020 */ li $a0, 32 -/* 073EB4 800732B4 AE420010 */ sw $v0, 0x10($s2) -/* 073EB8 800732B8 0C01CB15 */ jal func_80072C54 -/* 073EBC 800732BC 24040010 */ li $a0, 16 -/* 073EC0 800732C0 AE420050 */ sw $v0, 0x50($s2) -/* 073EC4 800732C4 0C01CB15 */ jal func_80072C54 -/* 073EC8 800732C8 24040008 */ li $a0, 8 -/* 073ECC 800732CC A240004B */ sb $zero, 0x4b($s2) -/* 073ED0 800732D0 8FBF0024 */ lw $ra, 0x24($sp) -.L800732D4: -/* 073ED4 800732D4 8FB00018 */ lw $s0, 0x18($sp) -/* 073ED8 800732D8 8FB1001C */ lw $s1, 0x1c($sp) -/* 073EDC 800732DC 8FB20020 */ lw $s2, 0x20($sp) -/* 073EE0 800732E0 03E00008 */ jr $ra -/* 073EE4 800732E4 27BD0050 */ addiu $sp, $sp, 0x50 - diff --git a/asm/non_matchings/save_data/func_80074204.s b/asm/non_matchings/save_data/func_80074204.s deleted file mode 100644 index f1284619..00000000 --- a/asm/non_matchings/save_data/func_80074204.s +++ /dev/null @@ -1,78 +0,0 @@ -glabel func_80074204 -/* 074E04 80074204 27BDFFD0 */ addiu $sp, $sp, -0x30 -/* 074E08 80074208 AFBF0024 */ sw $ra, 0x24($sp) -/* 074E0C 8007420C AFB30020 */ sw $s3, 0x20($sp) -/* 074E10 80074210 AFB2001C */ sw $s2, 0x1c($sp) -/* 074E14 80074214 AFB10018 */ sw $s1, 0x18($sp) -/* 074E18 80074218 AFB00014 */ sw $s0, 0x14($sp) -/* 074E1C 8007421C AFA40030 */ sw $a0, 0x30($sp) -/* 074E20 80074220 0C01A840 */ jal get_si_mesg_queue -/* 074E24 80074224 AFA50034 */ sw $a1, 0x34($sp) -/* 074E28 80074228 0C033884 */ jal osEepromProbe -/* 074E2C 8007422C 00402025 */ move $a0, $v0 -/* 074E30 80074230 14400003 */ bnez $v0, .L80074240 -/* 074E34 80074234 24130005 */ li $s3, 5 -/* 074E38 80074238 10000031 */ b .L80074300 -/* 074E3C 8007423C 2402FFFF */ li $v0, -1 -.L80074240: -/* 074E40 80074240 8FA20030 */ lw $v0, 0x30($sp) -/* 074E44 80074244 24040028 */ li $a0, 40 -/* 074E48 80074248 10400008 */ beqz $v0, .L8007426C -/* 074E4C 8007424C 2405FFFF */ li $a1, -1 -/* 074E50 80074250 24010001 */ li $at, 1 -/* 074E54 80074254 10410007 */ beq $v0, $at, .L80074274 -/* 074E58 80074258 24010002 */ li $at, 2 -/* 074E5C 8007425C 10410007 */ beq $v0, $at, .L8007427C -/* 074E60 80074260 2403000A */ li $v1, 10 -/* 074E64 80074264 10000005 */ b .L8007427C -/* 074E68 80074268 2403000A */ li $v1, 10 -.L8007426C: -/* 074E6C 8007426C 10000003 */ b .L8007427C -/* 074E70 80074270 00001825 */ move $v1, $zero -.L80074274: -/* 074E74 80074274 10000001 */ b .L8007427C -/* 074E78 80074278 24030005 */ li $v1, 5 -.L8007427C: -/* 074E7C 8007427C 0C01C327 */ jal allocate_from_main_pool_safe -/* 074E80 80074280 AFA3002C */ sw $v1, 0x2c($sp) -/* 074E84 80074284 8FB1002C */ lw $s1, 0x2c($sp) -/* 074E88 80074288 00409025 */ move $s2, $v0 -/* 074E8C 8007428C 00008025 */ move $s0, $zero -.L80074290: -/* 074E90 80074290 0C01A840 */ jal get_si_mesg_queue -/* 074E94 80074294 00000000 */ nop -/* 074E98 80074298 001070C0 */ sll $t6, $s0, 3 -/* 074E9C 8007429C 01D23021 */ addu $a2, $t6, $s2 -/* 074EA0 800742A0 00402025 */ move $a0, $v0 -/* 074EA4 800742A4 0C0338A0 */ jal osEepromRead -/* 074EA8 800742A8 322500FF */ andi $a1, $s1, 0xff -/* 074EAC 800742AC 26100001 */ addiu $s0, $s0, 1 -/* 074EB0 800742B0 1613FFF7 */ bne $s0, $s3, .L80074290 -/* 074EB4 800742B4 26310001 */ addiu $s1, $s1, 1 -/* 074EB8 800742B8 8FA40034 */ lw $a0, 0x34($sp) -/* 074EBC 800742BC 0C01CC1B */ jal func_8007306C -/* 074EC0 800742C0 02402825 */ move $a1, $s2 -/* 074EC4 800742C4 0C01C450 */ jal free_from_memory_pool -/* 074EC8 800742C8 02402025 */ move $a0, $s2 -/* 074ECC 800742CC 8FA50034 */ lw $a1, 0x34($sp) -/* 074ED0 800742D0 8FA40030 */ lw $a0, 0x30($sp) -/* 074ED4 800742D4 90A3004B */ lbu $v1, 0x4b($a1) -/* 074ED8 800742D8 00000000 */ nop -/* 074EDC 800742DC 10600008 */ beqz $v1, .L80074300 -/* 074EE0 800742E0 00601025 */ move $v0, $v1 -/* 074EE4 800742E4 0C01D0C7 */ jal func_8007431C -/* 074EE8 800742E8 00000000 */ nop -/* 074EEC 800742EC 8FAF0034 */ lw $t7, 0x34($sp) -/* 074EF0 800742F0 00000000 */ nop -/* 074EF4 800742F4 91E3004B */ lbu $v1, 0x4b($t7) -/* 074EF8 800742F8 00000000 */ nop -/* 074EFC 800742FC 00601025 */ move $v0, $v1 -.L80074300: -/* 074F00 80074300 8FBF0024 */ lw $ra, 0x24($sp) -/* 074F04 80074304 8FB00014 */ lw $s0, 0x14($sp) -/* 074F08 80074308 8FB10018 */ lw $s1, 0x18($sp) -/* 074F0C 8007430C 8FB2001C */ lw $s2, 0x1c($sp) -/* 074F10 80074310 8FB30020 */ lw $s3, 0x20($sp) -/* 074F14 80074314 03E00008 */ jr $ra -/* 074F18 80074318 27BD0030 */ addiu $sp, $sp, 0x30 - diff --git a/asm/non_matchings/save_data/func_8007431C.s b/asm/non_matchings/save_data/func_8007431C.s deleted file mode 100644 index 781483c0..00000000 --- a/asm/non_matchings/save_data/func_8007431C.s +++ /dev/null @@ -1,128 +0,0 @@ -glabel func_8007431C -/* 074F1C 8007431C 27BDFFA8 */ addiu $sp, $sp, -0x58 -/* 074F20 80074320 AFBF0024 */ sw $ra, 0x24($sp) -/* 074F24 80074324 AFB2001C */ sw $s2, 0x1c($sp) -/* 074F28 80074328 AFB10018 */ sw $s1, 0x18($sp) -/* 074F2C 8007432C 00A08825 */ move $s1, $a1 -/* 074F30 80074330 00809025 */ move $s2, $a0 -/* 074F34 80074334 AFB30020 */ sw $s3, 0x20($sp) -/* 074F38 80074338 0C01A840 */ jal get_si_mesg_queue -/* 074F3C 8007433C AFB00014 */ sw $s0, 0x14($sp) -/* 074F40 80074340 0C033884 */ jal osEepromProbe -/* 074F44 80074344 00402025 */ move $a0, $v0 -/* 074F48 80074348 1040005D */ beqz $v0, .L800744C0 -/* 074F4C 8007434C 27A40044 */ addiu $a0, $sp, 0x44 -/* 074F50 80074350 0C01AC89 */ jal get_number_of_levels_and_worlds -/* 074F54 80074354 27A50040 */ addiu $a1, $sp, 0x40 -/* 074F58 80074358 8FAE0044 */ lw $t6, 0x44($sp) -/* 074F5C 8007435C 00008025 */ move $s0, $zero -/* 074F60 80074360 19C0000C */ blez $t6, .L80074394 -/* 074F64 80074364 240C0001 */ li $t4, 1 -/* 074F68 80074368 00001025 */ move $v0, $zero -.L8007436C: -/* 074F6C 8007436C 8E2F0004 */ lw $t7, 4($s1) -/* 074F70 80074370 26100001 */ addiu $s0, $s0, 1 -/* 074F74 80074374 01E2C021 */ addu $t8, $t7, $v0 -/* 074F78 80074378 AF000000 */ sw $zero, ($t8) -/* 074F7C 8007437C 8FB90044 */ lw $t9, 0x44($sp) -/* 074F80 80074380 24420004 */ addiu $v0, $v0, 4 -/* 074F84 80074384 0219082A */ slt $at, $s0, $t9 -/* 074F88 80074388 1420FFF8 */ bnez $at, .L8007436C -/* 074F8C 8007438C 00000000 */ nop -/* 074F90 80074390 00008025 */ move $s0, $zero -.L80074394: -/* 074F94 80074394 8FA80040 */ lw $t0, 0x40($sp) -/* 074F98 80074398 24040028 */ li $a0, 40 -/* 074F9C 8007439C 1900000C */ blez $t0, .L800743D0 -/* 074FA0 800743A0 2405FFFF */ li $a1, -1 -/* 074FA4 800743A4 00001025 */ move $v0, $zero -.L800743A8: -/* 074FA8 800743A8 8E290000 */ lw $t1, ($s1) -/* 074FAC 800743AC 26100001 */ addiu $s0, $s0, 1 -/* 074FB0 800743B0 01225021 */ addu $t2, $t1, $v0 -/* 074FB4 800743B4 A5400000 */ sh $zero, ($t2) -/* 074FB8 800743B8 8FAB0040 */ lw $t3, 0x40($sp) -/* 074FBC 800743BC 24420002 */ addiu $v0, $v0, 2 -/* 074FC0 800743C0 020B082A */ slt $at, $s0, $t3 -/* 074FC4 800743C4 1420FFF8 */ bnez $at, .L800743A8 -/* 074FC8 800743C8 00000000 */ nop -/* 074FCC 800743CC 00008025 */ move $s0, $zero -.L800743D0: -/* 074FD0 800743D0 A620000E */ sh $zero, 0xe($s1) -/* 074FD4 800743D4 A620000C */ sh $zero, 0xc($s1) -/* 074FD8 800743D8 A6200014 */ sh $zero, 0x14($s1) -/* 074FDC 800743DC AE200010 */ sw $zero, 0x10($s1) -/* 074FE0 800743E0 12400008 */ beqz $s2, .L80074404 -/* 074FE4 800743E4 A22C004B */ sb $t4, 0x4b($s1) -/* 074FE8 800743E8 24010001 */ li $at, 1 -/* 074FEC 800743EC 12410007 */ beq $s2, $at, .L8007440C -/* 074FF0 800743F0 24010002 */ li $at, 2 -/* 074FF4 800743F4 12410007 */ beq $s2, $at, .L80074414 -/* 074FF8 800743F8 2406000A */ li $a2, 10 -/* 074FFC 800743FC 10000005 */ b .L80074414 -/* 075000 80074400 2406000A */ li $a2, 10 -.L80074404: -/* 075004 80074404 10000003 */ b .L80074414 -/* 075008 80074408 00003025 */ move $a2, $zero -.L8007440C: -/* 07500C 8007440C 10000001 */ b .L80074414 -/* 075010 80074410 24060005 */ li $a2, 5 -.L80074414: -/* 075014 80074414 24120005 */ li $s2, 5 -/* 075018 80074418 0C01C327 */ jal allocate_from_main_pool_safe -/* 07501C 8007441C AFA60054 */ sw $a2, 0x54($sp) -/* 075020 80074420 8FA60054 */ lw $a2, 0x54($sp) -/* 075024 80074424 1000000A */ b .L80074450 -/* 075028 80074428 00409825 */ move $s3, $v0 -/* 07502C 8007442C 00002825 */ move $a1, $zero -/* 075030 80074430 00501821 */ addu $v1, $v0, $s0 -/* 075034 80074434 240400FF */ li $a0, 255 -.L80074438: -/* 075038 80074438 26100001 */ addiu $s0, $s0, 1 -/* 07503C 8007443C A0640000 */ sb $a0, ($v1) -/* 075040 80074440 14B0FFFD */ bne $a1, $s0, .L80074438 -/* 075044 80074444 24630001 */ addiu $v1, $v1, 1 -/* 075048 80074448 24010028 */ li $at, 40 -/* 07504C 8007444C 1201000A */ beq $s0, $at, .L80074478 -.L80074450: -/* 075050 80074450 240400FF */ li $a0, 255 -/* 075054 80074454 001228C0 */ sll $a1, $s2, 3 -/* 075058 80074458 00501821 */ addu $v1, $v0, $s0 -.L8007445C: -/* 07505C 8007445C 26100004 */ addiu $s0, $s0, 4 -/* 075060 80074460 A0640000 */ sb $a0, ($v1) -/* 075064 80074464 A0640001 */ sb $a0, 1($v1) -/* 075068 80074468 A0640002 */ sb $a0, 2($v1) -/* 07506C 8007446C A0640003 */ sb $a0, 3($v1) -/* 075070 80074470 1605FFFA */ bne $s0, $a1, .L8007445C -/* 075074 80074474 24630004 */ addiu $v1, $v1, 4 -.L80074478: -/* 075078 80074478 0C01BAB0 */ jal is_reset_pressed -/* 07507C 8007447C AFA60054 */ sw $a2, 0x54($sp) -/* 075080 80074480 8FA60054 */ lw $a2, 0x54($sp) -/* 075084 80074484 1440000C */ bnez $v0, .L800744B8 -/* 075088 80074488 00008025 */ move $s0, $zero -/* 07508C 8007448C 00C08825 */ move $s1, $a2 -.L80074490: -/* 075090 80074490 0C01A840 */ jal get_si_mesg_queue -/* 075094 80074494 00000000 */ nop -/* 075098 80074498 001068C0 */ sll $t5, $s0, 3 -/* 07509C 8007449C 01B33021 */ addu $a2, $t5, $s3 -/* 0750A0 800744A0 00402025 */ move $a0, $v0 -/* 0750A4 800744A4 0C033960 */ jal osEepromWrite -/* 0750A8 800744A8 322500FF */ andi $a1, $s1, 0xff -/* 0750AC 800744AC 26100001 */ addiu $s0, $s0, 1 -/* 0750B0 800744B0 1612FFF7 */ bne $s0, $s2, .L80074490 -/* 0750B4 800744B4 26310001 */ addiu $s1, $s1, 1 -.L800744B8: -/* 0750B8 800744B8 0C01C450 */ jal free_from_memory_pool -/* 0750BC 800744BC 02602025 */ move $a0, $s3 -.L800744C0: -/* 0750C0 800744C0 8FBF0024 */ lw $ra, 0x24($sp) -/* 0750C4 800744C4 8FB00014 */ lw $s0, 0x14($sp) -/* 0750C8 800744C8 8FB10018 */ lw $s1, 0x18($sp) -/* 0750CC 800744CC 8FB2001C */ lw $s2, 0x1c($sp) -/* 0750D0 800744D0 8FB30020 */ lw $s3, 0x20($sp) -/* 0750D4 800744D4 03E00008 */ jr $ra -/* 0750D8 800744D8 27BD0058 */ addiu $sp, $sp, 0x58 - diff --git a/src/game.c b/src/game.c index 3b1959a7..bc41ee5f 100644 --- a/src/game.c +++ b/src/game.c @@ -1782,7 +1782,7 @@ void func_8006E994(Settings *settings) { s32 sp1C; get_number_of_levels_and_worlds(&sp1C, &sp20); - settings->newGame = 1; + settings->newGame = TRUE; for (i = 0; i < sp20; i++) { settings->balloonsPtr[i] = 0; diff --git a/src/menu.c b/src/menu.c index 357f1828..9c020dbc 100644 --- a/src/menu.c +++ b/src/menu.c @@ -3202,7 +3202,7 @@ s32 func_800860A8(s32 controllerIndex, s32 *arg1, unk800861C8 *arg2, s32 *arg3, void func_800861C8(unk800861C8 *arg0, s32 *arg1) { s32 i; for (i = 0; i < 3; i++) { - if (gSavefileData[i]->newGame != 0) { + if (gSavefileData[i]->newGame) { arg0[*arg1].unk0 = 1; arg0[*arg1].unk1 = 0; arg0[*arg1].unk2 = 0; diff --git a/src/save_data.c b/src/save_data.c index 02bea823..f1fb4e9c 100644 --- a/src/save_data.c +++ b/src/save_data.c @@ -106,9 +106,9 @@ u8 sRumblePaksPresent; // Bits 0, 1, 2, and 3 of the bit pattern correspond to C u8 D_801241E6; u8 D_801241E7; s32 gRumbleDetectionTimer; -s8 *D_801241EC; -s32 D_801241F0; -s32 D_801241F4; +u8 *D_801241EC; +u32 D_801241F0; +u32 D_801241F4; /*******************************/ @@ -310,158 +310,179 @@ void rumble_controllers(s32 arg0) { } } -#ifdef NON_EQUIVALENT -u16 func_80072C54(s32 arg0) { - // v0 v1 a1 a2 a3 t0 t1 t2 t3 t4 t5 t6 t7 t8 - u32 v0; - u32 v1; - s32 a1; - u32 a2; - u8 *a3; - s32 t0; - u32 *t1; - u32 *t2; - u8 **t3; - u32 t4; - u32 t5; - u32 t6; - u32 t7; - u32 t8; - u32 t9; +s32 func_80072C54(s32 arg0) { + s32 ret; + u32 var_v0; - v1 = 0; if (arg0 <= 0) { - return v1; + return 0; } - // L80072C64 - v0 = 1 << (arg0 + 0x1F); - if (arg0 != 0) { - a1 = -(arg0 & 3); - t0 = a1 + arg0; - if (a1 != 0) { - // L80072CA0 - do { - a2 = D_801241F4; - a1 = arg0 - 1; - t6 = v0 >> 1; - if (a2 == 0) { - a3 = D_801241EC; - a2 = 0x80; - t8 = *a3; - D_801241EC = a3 + 1; - D_801241F4 = 0x80; - D_801241F0 = t8; + + ret = 0; + var_v0 = 1 << (arg0 - 1); + + // Loop backwards through arg0 + while (arg0 != 0) { + // After shifting D_801241F4 right 8 times + if (D_801241F4 == 0) { + D_801241F0 = *D_801241EC++; + D_801241F4 = 128; //1000 0000 in binary. + } + if (D_801241F0 & D_801241F4) { + ret |= var_v0; + } + var_v0 >>= 1; + D_801241F4 >>= 1; + arg0--; + } + + return ret; +} + +void func_80072E28(s32 arg0, s32 arg1) { + u32 var_v0; + + if (arg0 > 0) { + var_v0 = 1 << (arg0 - 1); + while (arg0 != 0 ) { + if (D_801241F4 == 0) { + *D_801241EC++ = D_801241F0; + D_801241F0 = 0; + D_801241F4 = 128; + } + if (arg1 & var_v0) { + D_801241F0 |= D_801241F4; + } + var_v0 >>= 1; + D_801241F4 >>= 1; + arg0--; + } + *D_801241EC = D_801241F0; + } +} + +void populate_settings_from_save_data(Settings *settings, u8 *saveData) { + s32 i; + s32 levelCount; + s32 worldCount; + s32 temp_v0; + s32 var_s1; + s16 var_a0; + u8 temp_v1; + + func_8006E994(settings); + get_number_of_levels_and_worlds(&levelCount, &worldCount); + D_801241EC = saveData; + D_801241F0 = D_801241F4 = 0; + var_a0 = func_80072C54(0x10) - 5; + for (i = 2; i < 40; i++) { var_a0 -= saveData[i]; } // Must be one line + if (var_a0 == 0) { + for (i = 0, var_s1 = 0; i < levelCount; i++) { + temp_v0 = func_8006B14C(i); + if ((temp_v0 == 0) || (temp_v0 & 0x40) || (temp_v0 == 8)) { + temp_v1 = func_80072C54(2); + if (temp_v1 > 0) { + // Set Map Visited + settings->courseFlagsPtr[i] |= 1; } - // L80072CCC - arg0 = a1; - if (D_801241F0 & a2 != 0) { - v1 |= v0; + if (temp_v1 >= 2) { + // Set Map Completed + settings->courseFlagsPtr[i] |= 2; } - // L80072CE4 - v0 = t6; - D_801241F4 = a2 >> 1; - } while (t0 != a1); - if (a1 == 0) { - return v1; // should jump to end + if (temp_v1 >= 3) { + // Set Map Silver Coin Challenge Completed + settings->courseFlagsPtr[i] |= 4; + } + var_s1 += 2; } } - // L80072CF4 - t1 = &D_801241F4; - t2 = &D_801241F0; - t3 = &D_801241EC; - t4 = 128; - // L80072D10 - do { - a2 = *t1; - t6 = v0 >> 1; - arg0 -= 4; - if (a2 == 0) { - a3 = *t3; - a2 = t4; - t9 = *a3; - *t3 = a3 + 1; - *t1 = t4; - *t2 = t9; - } - // L80072D3C - a1 = *t2; - t8 = a2 << 1; - t7 = a1 & a2; - a2 = t8; - if (t7 != 0) { - v1 |= v0; - } - // L80072D54 - v0 = t6; - *t1 = t8; - if (t8 == 0) { - a3 = *t3; - a2 = t4; - a1 = *a3; - *t3 = a3 + 1; - *t1 = t4; - *t2 = a1; - } - // L80072D7C - t7 = a1 & a2; - t6 = v0 >> 1; - if (t7 != 0) { - v1 |= v0; - } - // L80072D8C - t8 = a2 >> 1; - *t1 = t8; - a2 = t8; - v0 = t6; - if (t8 == 0) { - a3 = *t3; - a2 = t4; - a1 = *a3; - *t3 = a3 + 1; - *t1 = t4; - *t2 = a1; - } - // L80072DBC - t7 = a1 & a2; - t6 = v0 >> 1; - if (t7 != 0) { - v1 |= v0; - } - // L80072DCC - t8 = a2 >> 1; - *t1 = t8; - a2 = t8; - v0 = t6; - if (t8 == 0) { - a3 = *t3; - a2 = t4; - a1 = *a3; - *t3 = a3 + 1; - *t1 = t4; - *t2 = a1; - } - // L80072DFC - t7 = a1 & a2; - t6 = v0 >> 1; - if (t7 != 0) { - v1 |= v0; - } - // L80072E0C - t8 = a2 >> 1; - *t1 = t8; - v0 = t6; - } while (arg0 != 0); + func_80072C54(0x44 - var_s1); + settings->tajFlags = func_80072C54(6); + settings->trophies = func_80072C54(0xA); + settings->bosses = func_80072C54(0xC); + for (i = 0; i < worldCount; i++) { + settings->balloonsPtr[i] = func_80072C54(7); + } + settings->ttAmulet = func_80072C54(3); + settings->wizpigAmulet = func_80072C54(3); + for (i = 0; i < worldCount; i++) { + settings->courseFlagsPtr[get_hub_area_id(i)] |= func_80072C54(16) << 16; + } + settings->keys = func_80072C54(8); + settings->cutsceneFlags = func_80072C54(0x20); + settings->filename = func_80072C54(0x10); + func_80072C54(8); + settings->newGame = FALSE; } - // L80072E1C - return v1; +} + +#ifdef NON_EQUIVALENT +void func_800732E8(Settings *settings, u8 *saveData) { + s32 levelCount; + s32 worldCount; + s16 var_v0; + u8 courseStatus; + s32 var_s0; + s32 i; + s8 temp_v0; + s32 blocks; + + get_number_of_levels_and_worlds(&levelCount, &worldCount); + D_801241EC = saveData; + D_801241F0 = 0; + D_801241F4 = 128; // 1000 0000 in binary. + func_80072E28(0x10, 0); + for (i = 0, var_s0 = 0; i < levelCount; i++) { + temp_v0 = func_8006B14C(i); + if ((temp_v0 == 0) || (temp_v0 & 0x40) || (temp_v0 == 8)) { + courseStatus = 0; + // Map visited + if (settings->courseFlagsPtr[i] & 1) { + courseStatus = 1; + } + // Map completed + if (settings->courseFlagsPtr[i] & 2) { + courseStatus++; + } + // Map Silver coin challenge completed + if (settings->courseFlagsPtr[i] & 4) { + courseStatus++; + } + func_80072E28(2, courseStatus); + var_s0 += 2; + } + } + func_80072E28(0x44 - var_s0, 0); + func_80072E28(6, settings->tajFlags); + func_80072E28(0xA, settings->trophies); + func_80072E28(0xC, settings->bosses); + for (i = 0; i < worldCount; i++) { + func_80072E28(7, settings->balloonsPtr[i * 2]); + } + func_80072E28(3, settings->ttAmulet); + func_80072E28(3, settings->wizpigAmulet); + for (i = 0; i < worldCount; i++) { + func_80072E28(0x10, (settings->courseFlagsPtr[get_hub_area_id(i)] >> 16) & 0xFFFF); + } + func_80072E28(8, settings->keys); + func_80072E28(0x20, settings->cutsceneFlags); + func_80072E28(0x10, settings->filename); + func_80072E28(8, 0); + blocks = 5; + var_v0 = saveData[2] + blocks + saveData[2] + 1; + // 40 is the number of bytes in a save file + // This will be +4 so as to skip the first 4 bytes, which will just be GAMD, the save file header. + for (i = 4; i < blocks * (s32)sizeof(u64); i++) { + var_v0 += saveData[i] + saveData[i + 1] + saveData[i + 2] + saveData[i + 3]; + } + D_801241EC = saveData; + D_801241F0 = 0; + D_801241F4 = 128; // 1000 0000 in binary. + func_80072E28(0x10, var_v0); } #else -GLOBAL_ASM("asm/non_matchings/save_data/func_80072C54.s") -#endif - -GLOBAL_ASM("asm/non_matchings/save_data/func_80072E28.s") -GLOBAL_ASM("asm/non_matchings/save_data/func_8007306C.s") GLOBAL_ASM("asm/non_matchings/save_data/func_800732E8.s") +#endif //arg1 is eepromData, from read_eeprom_data //arg2 seems to be a flag for either lap times or course initials? @@ -507,8 +528,8 @@ s32 read_game_data_from_controller_pak(s32 controllerIndex, char *fileExt, Setti if (ret == CONTROLLER_PAK_GOOD) { if (*alloc == GAMD) { - func_8007306C(settings, (s32) (alloc + 1)); - if (settings->newGame != 0) { + populate_settings_from_save_data(settings, (u8 *) (alloc + 1)); + if (settings->newGame) { ret = CONTROLLER_PAK_CHANGED; } } @@ -619,8 +640,97 @@ s32 write_time_data_to_controller_pak(s32 controllerIndex, Settings *arg1) { return ret; } -GLOBAL_ASM("asm/non_matchings/save_data/func_80074204.s") -GLOBAL_ASM("asm/non_matchings/save_data/func_8007431C.s") +// Returns TRUE / FALSE for whether a given save file is a new game. Also populates the settings object. +s32 func_80074204(s32 saveFileNum, Settings *settings) { + s32 startingAddress; + u64 *saveData; + s32 address; + s32 blocks; + s32 block; + s32 ret; + + if (osEepromProbe(get_si_mesg_queue()) == 0) { + return -1; + } + switch(saveFileNum) { + case 0: + startingAddress = 0; + break; + case 1: + startingAddress = 5; + break; + case 2: + startingAddress = 10; + break; + default: + startingAddress = 10; + break; + } + blocks = 5; + saveData = allocate_from_main_pool_safe(blocks * sizeof(u64), COLOUR_TAG_WHITE); + for (block = 0, address = startingAddress; block < blocks; block++, address++) { + osEepromRead(get_si_mesg_queue(), address, (u8 *)&saveData[block]); + } + populate_settings_from_save_data(settings, (u8 *) saveData); + free_from_memory_pool(saveData); + ret = settings->newGame; + if (settings->newGame) { + erase_save_file(saveFileNum, settings); + ret = settings->newGame; + } + return ret; +} + +void erase_save_file(s32 saveFileNum, Settings *settings) { + s32 startingAddress; + u8 *saveData; + u64 *alloc; + s32 blockSize; + s32 levelCount; + s32 worldCount; + s32 address; + s32 i; + + if (osEepromProbe(get_si_mesg_queue()) != 0) { + get_number_of_levels_and_worlds(&levelCount, &worldCount); + for (i = 0; i < levelCount; i++) { + settings->courseFlagsPtr[i] = 0; + } + for (i = 0; i < worldCount; i++) { + settings->balloonsPtr[i] = 0; + } + settings->trophies = 0; + settings->bosses = 0; + settings->tajFlags = 0; + settings->cutsceneFlags = 0; + settings->newGame = TRUE; + switch(saveFileNum) { + case 0: + startingAddress = 0; + break; + case 1: + startingAddress = 5; + break; + case 2: + startingAddress = 10; + break; + default: + startingAddress = 10; + break; + } + blockSize = 5; + alloc = allocate_from_main_pool_safe(blockSize * sizeof(u64), COLOUR_TAG_WHITE); + saveData = (u8 *)alloc; + // Blank out the data before writing it. + for (i = 0; i < blockSize * (s32)sizeof(u64); i++) { saveData[i] = 0xFF; } // Must be one line + if (!is_reset_pressed()) { + for (i = 0, address = startingAddress; i < blockSize; i++, address++) { + osEepromWrite(get_si_mesg_queue(), address, (u8 *)&alloc[i]); + } + } + free_from_memory_pool(alloc); + } +} /** * Writes Eeprom in 5 block chunks of data starting at either 0x0, 0x5, or 0xA diff --git a/src/save_data.h b/src/save_data.h index 4d4246f8..afa0b3e3 100644 --- a/src/save_data.h +++ b/src/save_data.h @@ -79,17 +79,18 @@ void func_80072348(s16 controllerIndex, u8 arg1); void func_80072424(s16 controllerIndex, u8 arg1, f32 arg2); void rumble_controllers(s32 arg0); void init_controller_paks(void); +void func_80072E28(s32 arg0, s32 arg1); +s32 func_80072C54(s32 arg0); +void populate_settings_from_save_data(Settings *settings, u8 *saveData); +s32 func_80074204(s32 saveFileNum, Settings *settings); +void erase_save_file(s32 saveFileNum, Settings *settings); s32 func_800738A4(Settings *arg0, u8 *arg1); //Non matching -void func_800732E8(Settings *arg0, u8 *arg1); //Non matching +//void func_800732E8(Settings *arg0, u8 *arg1); //Non matching void func_80073588(Settings *arg0, u64 *eepromData, s32 arg2); //Non matching s32 func_80073C5C(s32 controllerIndex, s32 arg1, char **arg2); //Non matching -void func_8007306C(Settings *arg0, s32 arg1); //Non matching //Using some context, and best guesses, these could be the names of the variables s32 func_80074B34(s32 controllerIndex, s16 levelID, s16 vehicleID, s16 *ghostCharacterID, s16 *ghostTime, s16 *ghostNodeCount, GhostHeader *arg6); //Non matching -u8 func_80074204(s32 arg0, Settings *arg1); //Non Matching -void func_8007431C(s32 arg0, Settings *arg1); //Non Matching -s32 func_80072E28(s32, s32); //Non Matching arg2 seems to be many different types char *string_to_font_codes(char *inString, char *outString, s32 stringLength); //Reasonably certain about these names for now.