mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Match several save data functions (#306)
* Get func_80072C54 to NON_MATCHING * Update the func func_80072C54 * Work on func_80072E28 * Match two funcs * Match func_8007306C * Match func_80074204 * Match erase_save_file * WIP on func_800732E8 Co-authored-by: Ryan Myers <foldor@gmail.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+1
-1
@@ -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;
|
||||
|
||||
+258
-148
@@ -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
|
||||
|
||||
+6
-5
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user