mirror of
https://github.com/izzy2lost/Diddy-Kong-Racing.git
synced 2026-06-19 01:16:26 -07:00
Save Data - 3 new matches and some other WIP (#338)
* Match get_file_extension * Match func_80073588 * Match func_800732E8
This commit is contained in:
@@ -1,182 +0,0 @@
|
||||
glabel func_800732E8
|
||||
/* 073EE8 800732E8 27BDFFB8 */ addiu $sp, $sp, -0x48
|
||||
/* 073EEC 800732EC AFB20020 */ sw $s2, 0x20($sp)
|
||||
/* 073EF0 800732F0 00809025 */ move $s2, $a0
|
||||
/* 073EF4 800732F4 AFBF0024 */ sw $ra, 0x24($sp)
|
||||
/* 073EF8 800732F8 AFA5004C */ sw $a1, 0x4c($sp)
|
||||
/* 073EFC 800732FC AFB1001C */ sw $s1, 0x1c($sp)
|
||||
/* 073F00 80073300 AFB00018 */ sw $s0, 0x18($sp)
|
||||
/* 073F04 80073304 27A5003C */ addiu $a1, $sp, 0x3c
|
||||
/* 073F08 80073308 0C01AC89 */ jal get_number_of_levels_and_worlds
|
||||
/* 073F0C 8007330C 27A40040 */ addiu $a0, $sp, 0x40
|
||||
/* 073F10 80073310 8FAE004C */ lw $t6, 0x4c($sp)
|
||||
/* 073F14 80073314 3C018012 */ lui $at, %hi(D_801241EC) # $at, 0x8012
|
||||
/* 073F18 80073318 AC2E41EC */ sw $t6, %lo(D_801241EC)($at)
|
||||
/* 073F1C 8007331C 3C018012 */ lui $at, %hi(D_801241F0) # $at, 0x8012
|
||||
/* 073F20 80073320 AC2041F0 */ sw $zero, %lo(D_801241F0)($at)
|
||||
/* 073F24 80073324 3C018012 */ lui $at, %hi(D_801241F4) # $at, 0x8012
|
||||
/* 073F28 80073328 240F0080 */ li $t7, 128
|
||||
/* 073F2C 8007332C AC2F41F4 */ sw $t7, %lo(D_801241F4)($at)
|
||||
/* 073F30 80073330 24040010 */ li $a0, 16
|
||||
/* 073F34 80073334 0C01CB8A */ jal func_80072E28
|
||||
/* 073F38 80073338 00002825 */ move $a1, $zero
|
||||
/* 073F3C 8007333C 8FB80040 */ lw $t8, 0x40($sp)
|
||||
/* 073F40 80073340 00008825 */ move $s1, $zero
|
||||
/* 073F44 80073344 1B000025 */ blez $t8, .L800733DC
|
||||
/* 073F48 80073348 00008025 */ move $s0, $zero
|
||||
.L8007334C:
|
||||
/* 073F4C 8007334C 0C01AC53 */ jal func_8006B14C
|
||||
/* 073F50 80073350 02202025 */ move $a0, $s1
|
||||
/* 073F54 80073354 10400005 */ beqz $v0, .L8007336C
|
||||
/* 073F58 80073358 30590040 */ andi $t9, $v0, 0x40
|
||||
/* 073F5C 8007335C 17200003 */ bnez $t9, .L8007336C
|
||||
/* 073F60 80073360 24010008 */ li $at, 8
|
||||
/* 073F64 80073364 14410018 */ bne $v0, $at, .L800733C8
|
||||
/* 073F68 80073368 8FB80040 */ lw $t8, 0x40($sp)
|
||||
.L8007336C:
|
||||
/* 073F6C 8007336C 8E480004 */ lw $t0, 4($s2)
|
||||
/* 073F70 80073370 00114880 */ sll $t1, $s1, 2
|
||||
/* 073F74 80073374 01095021 */ addu $t2, $t0, $t1
|
||||
/* 073F78 80073378 8D420000 */ lw $v0, ($t2)
|
||||
/* 073F7C 8007337C 00002825 */ move $a1, $zero
|
||||
/* 073F80 80073380 304B0001 */ andi $t3, $v0, 1
|
||||
/* 073F84 80073384 11600002 */ beqz $t3, .L80073390
|
||||
/* 073F88 80073388 304C0002 */ andi $t4, $v0, 2
|
||||
/* 073F8C 8007338C 24050001 */ li $a1, 1
|
||||
.L80073390:
|
||||
/* 073F90 80073390 11800004 */ beqz $t4, .L800733A4
|
||||
/* 073F94 80073394 304E0004 */ andi $t6, $v0, 4
|
||||
/* 073F98 80073398 24A50001 */ addiu $a1, $a1, 1
|
||||
/* 073F9C 8007339C 30AD00FF */ andi $t5, $a1, 0xff
|
||||
/* 073FA0 800733A0 01A02825 */ move $a1, $t5
|
||||
.L800733A4:
|
||||
/* 073FA4 800733A4 11C00004 */ beqz $t6, .L800733B8
|
||||
/* 073FA8 800733A8 00000000 */ nop
|
||||
/* 073FAC 800733AC 24A50001 */ addiu $a1, $a1, 1
|
||||
/* 073FB0 800733B0 30AF00FF */ andi $t7, $a1, 0xff
|
||||
/* 073FB4 800733B4 01E02825 */ move $a1, $t7
|
||||
.L800733B8:
|
||||
/* 073FB8 800733B8 0C01CB8A */ jal func_80072E28
|
||||
/* 073FBC 800733BC 24040002 */ li $a0, 2
|
||||
/* 073FC0 800733C0 26100002 */ addiu $s0, $s0, 2
|
||||
/* 073FC4 800733C4 8FB80040 */ lw $t8, 0x40($sp)
|
||||
.L800733C8:
|
||||
/* 073FC8 800733C8 26310001 */ addiu $s1, $s1, 1
|
||||
/* 073FCC 800733CC 0238082A */ slt $at, $s1, $t8
|
||||
/* 073FD0 800733D0 1420FFDE */ bnez $at, .L8007334C
|
||||
/* 073FD4 800733D4 00000000 */ nop
|
||||
/* 073FD8 800733D8 00008825 */ move $s1, $zero
|
||||
.L800733DC:
|
||||
/* 073FDC 800733DC 24190044 */ li $t9, 68
|
||||
/* 073FE0 800733E0 03302023 */ subu $a0, $t9, $s0
|
||||
/* 073FE4 800733E4 0C01CB8A */ jal func_80072E28
|
||||
/* 073FE8 800733E8 00002825 */ move $a1, $zero
|
||||
/* 073FEC 800733EC 96450014 */ lhu $a1, 0x14($s2)
|
||||
/* 073FF0 800733F0 0C01CB8A */ jal func_80072E28
|
||||
/* 073FF4 800733F4 24040006 */ li $a0, 6
|
||||
/* 073FF8 800733F8 9645000E */ lhu $a1, 0xe($s2)
|
||||
/* 073FFC 800733FC 0C01CB8A */ jal func_80072E28
|
||||
/* 074000 80073400 2404000A */ li $a0, 10
|
||||
/* 074004 80073404 9645000C */ lhu $a1, 0xc($s2)
|
||||
/* 074008 80073408 0C01CB8A */ jal func_80072E28
|
||||
/* 07400C 8007340C 2404000C */ li $a0, 12
|
||||
/* 074010 80073410 8FA8003C */ lw $t0, 0x3c($sp)
|
||||
/* 074014 80073414 00008025 */ move $s0, $zero
|
||||
/* 074018 80073418 1900000D */ blez $t0, .L80073450
|
||||
/* 07401C 8007341C 00000000 */ nop
|
||||
.L80073420:
|
||||
/* 074020 80073420 8E490000 */ lw $t1, ($s2)
|
||||
/* 074024 80073424 24040007 */ li $a0, 7
|
||||
/* 074028 80073428 01305021 */ addu $t2, $t1, $s0
|
||||
/* 07402C 8007342C 85450000 */ lh $a1, ($t2)
|
||||
/* 074030 80073430 0C01CB8A */ jal func_80072E28
|
||||
/* 074034 80073434 00000000 */ nop
|
||||
/* 074038 80073438 8FAB003C */ lw $t3, 0x3c($sp)
|
||||
/* 07403C 8007343C 26310001 */ addiu $s1, $s1, 1
|
||||
/* 074040 80073440 022B082A */ slt $at, $s1, $t3
|
||||
/* 074044 80073444 1420FFF6 */ bnez $at, .L80073420
|
||||
/* 074048 80073448 26100002 */ addiu $s0, $s0, 2
|
||||
/* 07404C 8007344C 00008825 */ move $s1, $zero
|
||||
.L80073450:
|
||||
/* 074050 80073450 92450016 */ lbu $a1, 0x16($s2)
|
||||
/* 074054 80073454 0C01CB8A */ jal func_80072E28
|
||||
/* 074058 80073458 24040003 */ li $a0, 3
|
||||
/* 07405C 8007345C 92450017 */ lbu $a1, 0x17($s2)
|
||||
/* 074060 80073460 0C01CB8A */ jal func_80072E28
|
||||
/* 074064 80073464 24040003 */ li $a0, 3
|
||||
/* 074068 80073468 8FAC003C */ lw $t4, 0x3c($sp)
|
||||
/* 07406C 8007346C 00000000 */ nop
|
||||
/* 074070 80073470 19800010 */ blez $t4, .L800734B4
|
||||
/* 074074 80073474 00000000 */ nop
|
||||
.L80073478:
|
||||
/* 074078 80073478 0C01AC75 */ jal get_hub_area_id
|
||||
/* 07407C 8007347C 02202025 */ move $a0, $s1
|
||||
/* 074080 80073480 8E4D0004 */ lw $t5, 4($s2)
|
||||
/* 074084 80073484 00027080 */ sll $t6, $v0, 2
|
||||
/* 074088 80073488 01AE7821 */ addu $t7, $t5, $t6
|
||||
/* 07408C 8007348C 8DE50000 */ lw $a1, ($t7)
|
||||
/* 074090 80073490 24040010 */ li $a0, 16
|
||||
/* 074094 80073494 0005C403 */ sra $t8, $a1, 0x10
|
||||
/* 074098 80073498 0C01CB8A */ jal func_80072E28
|
||||
/* 07409C 8007349C 3305FFFF */ andi $a1, $t8, 0xffff
|
||||
/* 0740A0 800734A0 8FA8003C */ lw $t0, 0x3c($sp)
|
||||
/* 0740A4 800734A4 26310001 */ addiu $s1, $s1, 1
|
||||
/* 0740A8 800734A8 0228082A */ slt $at, $s1, $t0
|
||||
/* 0740AC 800734AC 1420FFF2 */ bnez $at, .L80073478
|
||||
/* 0740B0 800734B0 00000000 */ nop
|
||||
.L800734B4:
|
||||
/* 0740B4 800734B4 96450008 */ lhu $a1, 8($s2)
|
||||
/* 0740B8 800734B8 0C01CB8A */ jal func_80072E28
|
||||
/* 0740BC 800734BC 24040008 */ li $a0, 8
|
||||
/* 0740C0 800734C0 8E450010 */ lw $a1, 0x10($s2)
|
||||
/* 0740C4 800734C4 0C01CB8A */ jal func_80072E28
|
||||
/* 0740C8 800734C8 24040020 */ li $a0, 32
|
||||
/* 0740CC 800734CC 8E450050 */ lw $a1, 0x50($s2)
|
||||
/* 0740D0 800734D0 0C01CB8A */ jal func_80072E28
|
||||
/* 0740D4 800734D4 24040010 */ li $a0, 16
|
||||
/* 0740D8 800734D8 24040008 */ li $a0, 8
|
||||
/* 0740DC 800734DC 0C01CB8A */ jal func_80072E28
|
||||
/* 0740E0 800734E0 00002825 */ move $a1, $zero
|
||||
/* 0740E4 800734E4 8FA6004C */ lw $a2, 0x4c($sp)
|
||||
/* 0740E8 800734E8 24110004 */ li $s1, 4
|
||||
/* 0740EC 800734EC 24C40002 */ addiu $a0, $a2, 2
|
||||
/* 0740F0 800734F0 90820000 */ lbu $v0, ($a0)
|
||||
/* 0740F4 800734F4 908B0001 */ lbu $t3, 1($a0)
|
||||
/* 0740F8 800734F8 244A0005 */ addiu $t2, $v0, 5
|
||||
/* 0740FC 800734FC 014B1021 */ addu $v0, $t2, $t3
|
||||
/* 074100 80073500 00026400 */ sll $t4, $v0, 0x10
|
||||
/* 074104 80073504 000C1403 */ sra $v0, $t4, 0x10
|
||||
/* 074108 80073508 24040028 */ li $a0, 40
|
||||
/* 07410C 8007350C 24C30004 */ addiu $v1, $a2, 4
|
||||
.L80073510:
|
||||
/* 074110 80073510 906E0000 */ lbu $t6, ($v1)
|
||||
/* 074114 80073514 90790001 */ lbu $t9, 1($v1)
|
||||
/* 074118 80073518 906A0002 */ lbu $t2, 2($v1)
|
||||
/* 07411C 8007351C 004EC021 */ addu $t8, $v0, $t6
|
||||
/* 074120 80073520 906D0003 */ lbu $t5, 3($v1)
|
||||
/* 074124 80073524 03194821 */ addu $t1, $t8, $t9
|
||||
/* 074128 80073528 012A6021 */ addu $t4, $t1, $t2
|
||||
/* 07412C 8007352C 018D1021 */ addu $v0, $t4, $t5
|
||||
/* 074130 80073530 00027400 */ sll $t6, $v0, 0x10
|
||||
/* 074134 80073534 000E7C03 */ sra $t7, $t6, 0x10
|
||||
/* 074138 80073538 26310004 */ addiu $s1, $s1, 4
|
||||
/* 07413C 8007353C 01E01025 */ move $v0, $t7
|
||||
/* 074140 80073540 1624FFF3 */ bne $s1, $a0, .L80073510
|
||||
/* 074144 80073544 24630004 */ addiu $v1, $v1, 4
|
||||
/* 074148 80073548 3C018012 */ lui $at, %hi(D_801241EC) # $at, 0x8012
|
||||
/* 07414C 8007354C AC2641EC */ sw $a2, %lo(D_801241EC)($at)
|
||||
/* 074150 80073550 3C018012 */ lui $at, %hi(D_801241F0) # $at, 0x8012
|
||||
/* 074154 80073554 AC2041F0 */ sw $zero, %lo(D_801241F0)($at)
|
||||
/* 074158 80073558 3C018012 */ lui $at, %hi(D_801241F4) # $at, 0x8012
|
||||
/* 07415C 8007355C 24180080 */ li $t8, 128
|
||||
/* 074160 80073560 AC3841F4 */ sw $t8, %lo(D_801241F4)($at)
|
||||
/* 074164 80073564 24040010 */ li $a0, 16
|
||||
/* 074168 80073568 0C01CB8A */ jal func_80072E28
|
||||
/* 07416C 8007356C 01E02825 */ move $a1, $t7
|
||||
/* 074170 80073570 8FBF0024 */ lw $ra, 0x24($sp)
|
||||
/* 074174 80073574 8FB00018 */ lw $s0, 0x18($sp)
|
||||
/* 074178 80073578 8FB1001C */ lw $s1, 0x1c($sp)
|
||||
/* 07417C 8007357C 8FB20020 */ lw $s2, 0x20($sp)
|
||||
/* 074180 80073580 03E00008 */ jr $ra
|
||||
/* 074184 80073584 27BD0048 */ addiu $sp, $sp, 0x48
|
||||
|
||||
@@ -1,217 +0,0 @@
|
||||
glabel func_80073588
|
||||
/* 074188 80073588 27BDFFB8 */ addiu $sp, $sp, -0x48
|
||||
/* 07418C 8007358C AFA5004C */ sw $a1, 0x4c($sp)
|
||||
/* 074190 80073590 30C500FF */ andi $a1, $a2, 0xff
|
||||
/* 074194 80073594 AFBF0024 */ sw $ra, 0x24($sp)
|
||||
/* 074198 80073598 AFB30020 */ sw $s3, 0x20($sp)
|
||||
/* 07419C 8007359C 00809825 */ move $s3, $a0
|
||||
/* 0741A0 800735A0 AFB2001C */ sw $s2, 0x1c($sp)
|
||||
/* 0741A4 800735A4 AFB10018 */ sw $s1, 0x18($sp)
|
||||
/* 0741A8 800735A8 AFB00014 */ sw $s0, 0x14($sp)
|
||||
/* 0741AC 800735AC AFA60050 */ sw $a2, 0x50($sp)
|
||||
/* 0741B0 800735B0 0C01B9DC */ jal func_8006E770
|
||||
/* 0741B4 800735B4 AFA5002C */ sw $a1, 0x2c($sp)
|
||||
/* 0741B8 800735B8 27A40040 */ addiu $a0, $sp, 0x40
|
||||
/* 0741BC 800735BC 0C01AC89 */ jal get_number_of_levels_and_worlds
|
||||
/* 0741C0 800735C0 27A5003C */ addiu $a1, $sp, 0x3c
|
||||
/* 0741C4 800735C4 8FAF002C */ lw $t7, 0x2c($sp)
|
||||
/* 0741C8 800735C8 8FB9004C */ lw $t9, 0x4c($sp)
|
||||
/* 0741CC 800735CC 31F80001 */ andi $t8, $t7, 1
|
||||
/* 0741D0 800735D0 13000054 */ beqz $t8, .L80073724
|
||||
/* 0741D4 800735D4 3C018012 */ lui $at, %hi(D_801241EC) # $at, 0x8012
|
||||
/* 0741D8 800735D8 AC3941EC */ sw $t9, %lo(D_801241EC)($at)
|
||||
/* 0741DC 800735DC 3C018012 */ lui $at, %hi(D_801241F0) # $at, 0x8012
|
||||
/* 0741E0 800735E0 AC2041F0 */ sw $zero, %lo(D_801241F0)($at)
|
||||
/* 0741E4 800735E4 3C018012 */ lui $at, %hi(D_801241F4) # $at, 0x8012
|
||||
/* 0741E8 800735E8 AC2041F4 */ sw $zero, %lo(D_801241F4)($at)
|
||||
/* 0741EC 800735EC 24110002 */ li $s1, 2
|
||||
/* 0741F0 800735F0 24100005 */ li $s0, 5
|
||||
/* 0741F4 800735F4 27220002 */ addiu $v0, $t9, 2
|
||||
.L800735F8:
|
||||
/* 0741F8 800735F8 90480000 */ lbu $t0, ($v0)
|
||||
/* 0741FC 800735FC 26310001 */ addiu $s1, $s1, 1
|
||||
/* 074200 80073600 02088021 */ addu $s0, $s0, $t0
|
||||
/* 074204 80073604 2A2100C0 */ slti $at, $s1, 0xc0
|
||||
/* 074208 80073608 00104C00 */ sll $t1, $s0, 0x10
|
||||
/* 07420C 8007360C 24420001 */ addiu $v0, $v0, 1
|
||||
/* 074210 80073610 1420FFF9 */ bnez $at, .L800735F8
|
||||
/* 074214 80073614 00098403 */ sra $s0, $t1, 0x10
|
||||
/* 074218 80073618 0C01CB15 */ jal func_80072C54
|
||||
/* 07421C 8007361C 24040010 */ li $a0, 16
|
||||
/* 074220 80073620 02028023 */ subu $s0, $s0, $v0
|
||||
/* 074224 80073624 00105C00 */ sll $t3, $s0, 0x10
|
||||
/* 074228 80073628 000B6403 */ sra $t4, $t3, 0x10
|
||||
/* 07422C 8007362C 1580003E */ bnez $t4, .L80073728
|
||||
/* 074230 80073630 8FAD002C */ lw $t5, 0x2c($sp)
|
||||
/* 074234 80073634 8FAD0040 */ lw $t5, 0x40($sp)
|
||||
/* 074238 80073638 00008825 */ move $s1, $zero
|
||||
/* 07423C 8007363C 19A0003A */ blez $t5, .L80073728
|
||||
/* 074240 80073640 8FAD002C */ lw $t5, 0x2c($sp)
|
||||
.L80073644:
|
||||
/* 074244 80073644 0C01AC53 */ jal func_8006B14C
|
||||
/* 074248 80073648 02202025 */ move $a0, $s1
|
||||
/* 07424C 8007364C 14400031 */ bnez $v0, .L80073714
|
||||
/* 074250 80073650 8FAC0040 */ lw $t4, 0x40($sp)
|
||||
/* 074254 80073654 0C01AC3E */ jal get_map_available_vehicles
|
||||
/* 074258 80073658 02202025 */ move $a0, $s1
|
||||
/* 07425C 8007365C 00029400 */ sll $s2, $v0, 0x10
|
||||
/* 074260 80073660 00127403 */ sra $t6, $s2, 0x10
|
||||
/* 074264 80073664 30590001 */ andi $t9, $v0, 1
|
||||
/* 074268 80073668 1320000D */ beqz $t9, .L800736A0
|
||||
/* 07426C 8007366C 01C09025 */ move $s2, $t6
|
||||
/* 074270 80073670 24040010 */ li $a0, 16
|
||||
/* 074274 80073674 0C01CB15 */ jal func_80072C54
|
||||
/* 074278 80073678 00118040 */ sll $s0, $s1, 1
|
||||
/* 07427C 8007367C 8E680024 */ lw $t0, 0x24($s3)
|
||||
/* 074280 80073680 24040010 */ li $a0, 16
|
||||
/* 074284 80073684 01104821 */ addu $t1, $t0, $s0
|
||||
/* 074288 80073688 0C01CB15 */ jal func_80072C54
|
||||
/* 07428C 8007368C A5220000 */ sh $v0, ($t1)
|
||||
/* 074290 80073690 8E6A0018 */ lw $t2, 0x18($s3)
|
||||
/* 074294 80073694 00000000 */ nop
|
||||
/* 074298 80073698 01505821 */ addu $t3, $t2, $s0
|
||||
/* 07429C 8007369C A5620000 */ sh $v0, ($t3)
|
||||
.L800736A0:
|
||||
/* 0742A0 800736A0 324C0002 */ andi $t4, $s2, 2
|
||||
/* 0742A4 800736A4 1180000C */ beqz $t4, .L800736D8
|
||||
/* 0742A8 800736A8 24040010 */ li $a0, 16
|
||||
/* 0742AC 800736AC 0C01CB15 */ jal func_80072C54
|
||||
/* 0742B0 800736B0 00118040 */ sll $s0, $s1, 1
|
||||
/* 0742B4 800736B4 8E6D0028 */ lw $t5, 0x28($s3)
|
||||
/* 0742B8 800736B8 24040010 */ li $a0, 16
|
||||
/* 0742BC 800736BC 01B07021 */ addu $t6, $t5, $s0
|
||||
/* 0742C0 800736C0 0C01CB15 */ jal func_80072C54
|
||||
/* 0742C4 800736C4 A5C20000 */ sh $v0, ($t6)
|
||||
/* 0742C8 800736C8 8E6F001C */ lw $t7, 0x1c($s3)
|
||||
/* 0742CC 800736CC 00000000 */ nop
|
||||
/* 0742D0 800736D0 01F0C021 */ addu $t8, $t7, $s0
|
||||
/* 0742D4 800736D4 A7020000 */ sh $v0, ($t8)
|
||||
.L800736D8:
|
||||
/* 0742D8 800736D8 32590004 */ andi $t9, $s2, 4
|
||||
/* 0742DC 800736DC 1320000C */ beqz $t9, .L80073710
|
||||
/* 0742E0 800736E0 24040010 */ li $a0, 16
|
||||
/* 0742E4 800736E4 0C01CB15 */ jal func_80072C54
|
||||
/* 0742E8 800736E8 00118040 */ sll $s0, $s1, 1
|
||||
/* 0742EC 800736EC 8E68002C */ lw $t0, 0x2c($s3)
|
||||
/* 0742F0 800736F0 24040010 */ li $a0, 16
|
||||
/* 0742F4 800736F4 01104821 */ addu $t1, $t0, $s0
|
||||
/* 0742F8 800736F8 0C01CB15 */ jal func_80072C54
|
||||
/* 0742FC 800736FC A5220000 */ sh $v0, ($t1)
|
||||
/* 074300 80073700 8E6A0020 */ lw $t2, 0x20($s3)
|
||||
/* 074304 80073704 00000000 */ nop
|
||||
/* 074308 80073708 01505821 */ addu $t3, $t2, $s0
|
||||
/* 07430C 8007370C A5620000 */ sh $v0, ($t3)
|
||||
.L80073710:
|
||||
/* 074310 80073710 8FAC0040 */ lw $t4, 0x40($sp)
|
||||
.L80073714:
|
||||
/* 074314 80073714 26310001 */ addiu $s1, $s1, 1
|
||||
/* 074318 80073718 022C082A */ slt $at, $s1, $t4
|
||||
/* 07431C 8007371C 1420FFC9 */ bnez $at, .L80073644
|
||||
/* 074320 80073720 00000000 */ nop
|
||||
.L80073724:
|
||||
/* 074324 80073724 8FAD002C */ lw $t5, 0x2c($sp)
|
||||
.L80073728:
|
||||
/* 074328 80073728 8FAF004C */ lw $t7, 0x4c($sp)
|
||||
/* 07432C 8007372C 31AE0002 */ andi $t6, $t5, 2
|
||||
/* 074330 80073730 11C00055 */ beqz $t6, .L80073888
|
||||
/* 074334 80073734 25F800C0 */ addiu $t8, $t7, 0xc0
|
||||
/* 074338 80073738 3C018012 */ lui $at, %hi(D_801241EC) # $at, 0x8012
|
||||
/* 07433C 8007373C AC3841EC */ sw $t8, %lo(D_801241EC)($at)
|
||||
/* 074340 80073740 3C018012 */ lui $at, %hi(D_801241F0) # $at, 0x8012
|
||||
/* 074344 80073744 AC2041F0 */ sw $zero, %lo(D_801241F0)($at)
|
||||
/* 074348 80073748 3C018012 */ lui $at, %hi(D_801241F4) # $at, 0x8012
|
||||
/* 07434C 8007374C AC2041F4 */ sw $zero, %lo(D_801241F4)($at)
|
||||
/* 074350 80073750 24110002 */ li $s1, 2
|
||||
/* 074354 80073754 24100005 */ li $s0, 5
|
||||
/* 074358 80073758 27020002 */ addiu $v0, $t8, 2
|
||||
.L8007375C:
|
||||
/* 07435C 8007375C 90590000 */ lbu $t9, ($v0)
|
||||
/* 074360 80073760 26310001 */ addiu $s1, $s1, 1
|
||||
/* 074364 80073764 02198021 */ addu $s0, $s0, $t9
|
||||
/* 074368 80073768 2A2100C0 */ slti $at, $s1, 0xc0
|
||||
/* 07436C 8007376C 00104400 */ sll $t0, $s0, 0x10
|
||||
/* 074370 80073770 24420001 */ addiu $v0, $v0, 1
|
||||
/* 074374 80073774 1420FFF9 */ bnez $at, .L8007375C
|
||||
/* 074378 80073778 00088403 */ sra $s0, $t0, 0x10
|
||||
/* 07437C 8007377C 0C01CB15 */ jal func_80072C54
|
||||
/* 074380 80073780 24040010 */ li $a0, 16
|
||||
/* 074384 80073784 02028023 */ subu $s0, $s0, $v0
|
||||
/* 074388 80073788 00105400 */ sll $t2, $s0, 0x10
|
||||
/* 07438C 8007378C 000A5C03 */ sra $t3, $t2, 0x10
|
||||
/* 074390 80073790 1560003E */ bnez $t3, .L8007388C
|
||||
/* 074394 80073794 8FBF0024 */ lw $ra, 0x24($sp)
|
||||
/* 074398 80073798 8FAC0040 */ lw $t4, 0x40($sp)
|
||||
/* 07439C 8007379C 00008825 */ move $s1, $zero
|
||||
/* 0743A0 800737A0 1980003A */ blez $t4, .L8007388C
|
||||
/* 0743A4 800737A4 8FBF0024 */ lw $ra, 0x24($sp)
|
||||
.L800737A8:
|
||||
/* 0743A8 800737A8 0C01AC53 */ jal func_8006B14C
|
||||
/* 0743AC 800737AC 02202025 */ move $a0, $s1
|
||||
/* 0743B0 800737B0 14400031 */ bnez $v0, .L80073878
|
||||
/* 0743B4 800737B4 8FAB0040 */ lw $t3, 0x40($sp)
|
||||
/* 0743B8 800737B8 0C01AC3E */ jal get_map_available_vehicles
|
||||
/* 0743BC 800737BC 02202025 */ move $a0, $s1
|
||||
/* 0743C0 800737C0 00029400 */ sll $s2, $v0, 0x10
|
||||
/* 0743C4 800737C4 00126C03 */ sra $t5, $s2, 0x10
|
||||
/* 0743C8 800737C8 30580001 */ andi $t8, $v0, 1
|
||||
/* 0743CC 800737CC 1300000D */ beqz $t8, .L80073804
|
||||
/* 0743D0 800737D0 01A09025 */ move $s2, $t5
|
||||
/* 0743D4 800737D4 24040010 */ li $a0, 16
|
||||
/* 0743D8 800737D8 0C01CB15 */ jal func_80072C54
|
||||
/* 0743DC 800737DC 00118040 */ sll $s0, $s1, 1
|
||||
/* 0743E0 800737E0 8E79003C */ lw $t9, 0x3c($s3)
|
||||
/* 0743E4 800737E4 24040010 */ li $a0, 16
|
||||
/* 0743E8 800737E8 03304021 */ addu $t0, $t9, $s0
|
||||
/* 0743EC 800737EC 0C01CB15 */ jal func_80072C54
|
||||
/* 0743F0 800737F0 A5020000 */ sh $v0, ($t0)
|
||||
/* 0743F4 800737F4 8E690030 */ lw $t1, 0x30($s3)
|
||||
/* 0743F8 800737F8 00000000 */ nop
|
||||
/* 0743FC 800737FC 01305021 */ addu $t2, $t1, $s0
|
||||
/* 074400 80073800 A5420000 */ sh $v0, ($t2)
|
||||
.L80073804:
|
||||
/* 074404 80073804 324B0002 */ andi $t3, $s2, 2
|
||||
/* 074408 80073808 1160000C */ beqz $t3, .L8007383C
|
||||
/* 07440C 8007380C 24040010 */ li $a0, 16
|
||||
/* 074410 80073810 0C01CB15 */ jal func_80072C54
|
||||
/* 074414 80073814 00118040 */ sll $s0, $s1, 1
|
||||
/* 074418 80073818 8E6C0040 */ lw $t4, 0x40($s3)
|
||||
/* 07441C 8007381C 24040010 */ li $a0, 16
|
||||
/* 074420 80073820 01906821 */ addu $t5, $t4, $s0
|
||||
/* 074424 80073824 0C01CB15 */ jal func_80072C54
|
||||
/* 074428 80073828 A5A20000 */ sh $v0, ($t5)
|
||||
/* 07442C 8007382C 8E6E0034 */ lw $t6, 0x34($s3)
|
||||
/* 074430 80073830 00000000 */ nop
|
||||
/* 074434 80073834 01D07821 */ addu $t7, $t6, $s0
|
||||
/* 074438 80073838 A5E20000 */ sh $v0, ($t7)
|
||||
.L8007383C:
|
||||
/* 07443C 8007383C 32580004 */ andi $t8, $s2, 4
|
||||
/* 074440 80073840 1300000C */ beqz $t8, .L80073874
|
||||
/* 074444 80073844 24040010 */ li $a0, 16
|
||||
/* 074448 80073848 0C01CB15 */ jal func_80072C54
|
||||
/* 07444C 8007384C 00118040 */ sll $s0, $s1, 1
|
||||
/* 074450 80073850 8E790044 */ lw $t9, 0x44($s3)
|
||||
/* 074454 80073854 24040010 */ li $a0, 16
|
||||
/* 074458 80073858 03304021 */ addu $t0, $t9, $s0
|
||||
/* 07445C 8007385C 0C01CB15 */ jal func_80072C54
|
||||
/* 074460 80073860 A5020000 */ sh $v0, ($t0)
|
||||
/* 074464 80073864 8E690038 */ lw $t1, 0x38($s3)
|
||||
/* 074468 80073868 00000000 */ nop
|
||||
/* 07446C 8007386C 01305021 */ addu $t2, $t1, $s0
|
||||
/* 074470 80073870 A5420000 */ sh $v0, ($t2)
|
||||
.L80073874:
|
||||
/* 074474 80073874 8FAB0040 */ lw $t3, 0x40($sp)
|
||||
.L80073878:
|
||||
/* 074478 80073878 26310001 */ addiu $s1, $s1, 1
|
||||
/* 07447C 8007387C 022B082A */ slt $at, $s1, $t3
|
||||
/* 074480 80073880 1420FFC9 */ bnez $at, .L800737A8
|
||||
/* 074484 80073884 00000000 */ nop
|
||||
.L80073888:
|
||||
/* 074488 80073888 8FBF0024 */ lw $ra, 0x24($sp)
|
||||
.L8007388C:
|
||||
/* 07448C 8007388C 8FB00014 */ lw $s0, 0x14($sp)
|
||||
/* 074490 80073890 8FB10018 */ lw $s1, 0x18($sp)
|
||||
/* 074494 80073894 8FB2001C */ lw $s2, 0x1c($sp)
|
||||
/* 074498 80073898 8FB30020 */ lw $s3, 0x20($sp)
|
||||
/* 07449C 8007389C 03E00008 */ jr $ra
|
||||
/* 0744A0 800738A0 27BD0048 */ addiu $sp, $sp, 0x48
|
||||
|
||||
@@ -1,126 +0,0 @@
|
||||
glabel func_80073C5C
|
||||
/* 07485C 80073C5C 27BDFEC0 */ addiu $sp, $sp, -0x140
|
||||
/* 074860 80073C60 AFBF0044 */ sw $ra, 0x44($sp)
|
||||
/* 074864 80073C64 AFB20028 */ sw $s2, 0x28($sp)
|
||||
/* 074868 80073C68 AFB10024 */ sw $s1, 0x24($sp)
|
||||
/* 07486C 80073C6C AFA50144 */ sw $a1, 0x144($sp)
|
||||
/* 074870 80073C70 AFA60148 */ sw $a2, 0x148($sp)
|
||||
/* 074874 80073C74 27AE0070 */ addiu $t6, $sp, 0x70
|
||||
/* 074878 80073C78 27AF00B0 */ addiu $t7, $sp, 0xb0
|
||||
/* 07487C 80073C7C AFBE0040 */ sw $fp, 0x40($sp)
|
||||
/* 074880 80073C80 AFB7003C */ sw $s7, 0x3c($sp)
|
||||
/* 074884 80073C84 AFB60038 */ sw $s6, 0x38($sp)
|
||||
/* 074888 80073C88 AFB50034 */ sw $s5, 0x34($sp)
|
||||
/* 07488C 80073C8C AFB40030 */ sw $s4, 0x30($sp)
|
||||
/* 074890 80073C90 AFB3002C */ sw $s3, 0x2c($sp)
|
||||
/* 074894 80073C94 AFB00020 */ sw $s0, 0x20($sp)
|
||||
/* 074898 80073C98 24120020 */ li $s2, 32
|
||||
/* 07489C 80073C9C 00008825 */ move $s1, $zero
|
||||
/* 0748A0 80073CA0 AFAF0014 */ sw $t7, 0x14($sp)
|
||||
/* 0748A4 80073CA4 AFAE0010 */ sw $t6, 0x10($sp)
|
||||
/* 0748A8 80073CA8 27A60100 */ addiu $a2, $sp, 0x100
|
||||
/* 0748AC 80073CAC 24050010 */ li $a1, 16
|
||||
/* 0748B0 80073CB0 0C01D798 */ jal get_controller_pak_file_list
|
||||
/* 0748B4 80073CB4 27A700C0 */ addiu $a3, $sp, 0xc0
|
||||
/* 0748B8 80073CB8 1440004B */ bnez $v0, .L80073DE8
|
||||
/* 0748BC 80073CBC AFA20060 */ sw $v0, 0x60($sp)
|
||||
/* 0748C0 80073CC0 3C1E800E */ lui $fp, %hi(D_800E7630) # $fp, 0x800e
|
||||
/* 0748C4 80073CC4 3C17800E */ lui $s7, %hi(D_800E7640) # $s7, 0x800e
|
||||
/* 0748C8 80073CC8 26F77640 */ addiu $s7, %lo(D_800E7640) # addiu $s7, $s7, 0x7640
|
||||
/* 0748CC 80073CCC 27DE7630 */ addiu $fp, %lo(D_800E7630) # addiu $fp, $fp, 0x7630
|
||||
/* 0748D0 80073CD0 00009825 */ move $s3, $zero
|
||||
/* 0748D4 80073CD4 27B00100 */ addiu $s0, $sp, 0x100
|
||||
/* 0748D8 80073CD8 0240A025 */ move $s4, $s2
|
||||
/* 0748DC 80073CDC 24160003 */ li $s6, 3
|
||||
/* 0748E0 80073CE0 27B50140 */ addiu $s5, $sp, 0x140
|
||||
.L80073CE4:
|
||||
/* 0748E4 80073CE4 8E180000 */ lw $t8, ($s0)
|
||||
/* 0748E8 80073CE8 8FB90144 */ lw $t9, 0x144($sp)
|
||||
/* 0748EC 80073CEC 13000022 */ beqz $t8, .L80073D78
|
||||
/* 0748F0 80073CF0 00000000 */ nop
|
||||
/* 0748F4 80073CF4 1736000B */ bne $t9, $s6, .L80073D24
|
||||
/* 0748F8 80073CF8 3C04800E */ lui $a0, %hi(D_800E7660) # $a0, 0x800e
|
||||
/* 0748FC 80073CFC 0C033867 */ jal strlen
|
||||
/* 074900 80073D00 02E02025 */ move $a0, $s7
|
||||
/* 074904 80073D04 8E040000 */ lw $a0, ($s0)
|
||||
/* 074908 80073D08 03C02825 */ move $a1, $fp
|
||||
/* 07490C 80073D0C 0C033814 */ jal func_800CE050
|
||||
/* 074910 80073D10 00403025 */ move $a2, $v0
|
||||
/* 074914 80073D14 1040000C */ beqz $v0, .L80073D48
|
||||
/* 074918 80073D18 03B34021 */ addu $t0, $sp, $s3
|
||||
/* 07491C 80073D1C 10000017 */ b .L80073D7C
|
||||
/* 074920 80073D20 26100004 */ addiu $s0, $s0, 4
|
||||
.L80073D24:
|
||||
/* 074924 80073D24 0C033867 */ jal strlen
|
||||
/* 074928 80073D28 24847660 */ addiu $a0, %lo(D_800E7660) # addiu $a0, $a0, 0x7660
|
||||
/* 07492C 80073D2C 8E040000 */ lw $a0, ($s0)
|
||||
/* 074930 80073D30 3C05800E */ lui $a1, %hi(D_800E7650) # $a1, 0x800e
|
||||
/* 074934 80073D34 24A57650 */ addiu $a1, %lo(D_800E7650) # addiu $a1, $a1, 0x7650
|
||||
/* 074938 80073D38 0C033814 */ jal func_800CE050
|
||||
/* 07493C 80073D3C 00403025 */ move $a2, $v0
|
||||
/* 074940 80073D40 1440000D */ bnez $v0, .L80073D78
|
||||
/* 074944 80073D44 03B34021 */ addu $t0, $sp, $s3
|
||||
.L80073D48:
|
||||
/* 074948 80073D48 8D0800C0 */ lw $t0, 0xc0($t0)
|
||||
/* 07494C 80073D4C 240A0001 */ li $t2, 1
|
||||
/* 074950 80073D50 91020000 */ lbu $v0, ($t0)
|
||||
/* 074954 80073D54 00000000 */ nop
|
||||
/* 074958 80073D58 0282082A */ slt $at, $s4, $v0
|
||||
/* 07495C 80073D5C 10200003 */ beqz $at, .L80073D6C
|
||||
/* 074960 80073D60 00401825 */ move $v1, $v0
|
||||
/* 074964 80073D64 305200FF */ andi $s2, $v0, 0xff
|
||||
/* 074968 80073D68 0240A025 */ move $s4, $s2
|
||||
.L80073D6C:
|
||||
/* 07496C 80073D6C 2469001F */ addiu $t1, $v1, 0x1f
|
||||
/* 074970 80073D70 012A5804 */ sllv $t3, $t2, $t1
|
||||
/* 074974 80073D74 022B8825 */ or $s1, $s1, $t3
|
||||
.L80073D78:
|
||||
/* 074978 80073D78 26100004 */ addiu $s0, $s0, 4
|
||||
.L80073D7C:
|
||||
/* 07497C 80073D7C 1615FFD9 */ bne $s0, $s5, .L80073CE4
|
||||
/* 074980 80073D80 26730004 */ addiu $s3, $s3, 4
|
||||
/* 074984 80073D84 24010020 */ li $at, 32
|
||||
/* 074988 80073D88 8FA20148 */ lw $v0, 0x148($sp)
|
||||
/* 07498C 80073D8C 16810004 */ bne $s4, $at, .L80073DA0
|
||||
/* 074990 80073D90 2401005A */ li $at, 90
|
||||
/* 074994 80073D94 10000012 */ b .L80073DE0
|
||||
/* 074998 80073D98 24120041 */ li $s2, 65
|
||||
/* 07499C 80073D9C 2401005A */ li $at, 90
|
||||
.L80073DA0:
|
||||
/* 0749A0 80073DA0 1681000D */ bne $s4, $at, .L80073DD8
|
||||
/* 0749A4 80073DA4 26520001 */ addiu $s2, $s2, 1
|
||||
/* 0749A8 80073DA8 24120041 */ li $s2, 65
|
||||
.L80073DAC:
|
||||
/* 0749AC 80073DAC 322C0001 */ andi $t4, $s1, 1
|
||||
/* 0749B0 80073DB0 1180000B */ beqz $t4, .L80073DE0
|
||||
/* 0749B4 80073DB4 00116843 */ sra $t5, $s1, 1
|
||||
/* 0749B8 80073DB8 26520001 */ addiu $s2, $s2, 1
|
||||
/* 0749BC 80073DBC 324E00FF */ andi $t6, $s2, 0xff
|
||||
/* 0749C0 80073DC0 29C1005B */ slti $at, $t6, 0x5b
|
||||
/* 0749C4 80073DC4 01C09025 */ move $s2, $t6
|
||||
/* 0749C8 80073DC8 1420FFF8 */ bnez $at, .L80073DAC
|
||||
/* 0749CC 80073DCC 01A08825 */ move $s1, $t5
|
||||
/* 0749D0 80073DD0 10000004 */ b .L80073DE4
|
||||
/* 0749D4 80073DD4 A0520000 */ sb $s2, ($v0)
|
||||
.L80073DD8:
|
||||
/* 0749D8 80073DD8 324F00FF */ andi $t7, $s2, 0xff
|
||||
/* 0749DC 80073DDC 01E09025 */ move $s2, $t7
|
||||
.L80073DE0:
|
||||
/* 0749E0 80073DE0 A0520000 */ sb $s2, ($v0)
|
||||
.L80073DE4:
|
||||
/* 0749E4 80073DE4 A0400001 */ sb $zero, 1($v0)
|
||||
.L80073DE8:
|
||||
/* 0749E8 80073DE8 8FBF0044 */ lw $ra, 0x44($sp)
|
||||
/* 0749EC 80073DEC 8FA20060 */ lw $v0, 0x60($sp)
|
||||
/* 0749F0 80073DF0 8FB00020 */ lw $s0, 0x20($sp)
|
||||
/* 0749F4 80073DF4 8FB10024 */ lw $s1, 0x24($sp)
|
||||
/* 0749F8 80073DF8 8FB20028 */ lw $s2, 0x28($sp)
|
||||
/* 0749FC 80073DFC 8FB3002C */ lw $s3, 0x2c($sp)
|
||||
/* 074A00 80073E00 8FB40030 */ lw $s4, 0x30($sp)
|
||||
/* 074A04 80073E04 8FB50034 */ lw $s5, 0x34($sp)
|
||||
/* 074A08 80073E08 8FB60038 */ lw $s6, 0x38($sp)
|
||||
/* 074A0C 80073E0C 8FB7003C */ lw $s7, 0x3c($sp)
|
||||
/* 074A10 80073E10 8FBE0040 */ lw $fp, 0x40($sp)
|
||||
/* 074A14 80073E14 03E00008 */ jr $ra
|
||||
/* 074A18 80073E18 27BD0140 */ addiu $sp, $sp, 0x140
|
||||
|
||||
+298
-59
@@ -342,7 +342,7 @@ s32 func_80072C54(s32 arg0) {
|
||||
|
||||
// arg0 is the number of bits we care about
|
||||
// arg1 is the bit being looked for.
|
||||
void func_80072E28(s32 arg0, s32 arg1) {
|
||||
void func_80072E28(s32 arg0, u32 arg1) {
|
||||
u32 var_v0;
|
||||
|
||||
if (arg0 > 0) {
|
||||
@@ -419,22 +419,20 @@ void populate_settings_from_save_data(Settings *settings, u8 *saveData) {
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
void func_800732E8(Settings *settings, u8 *saveData) {
|
||||
s16 var_v0;
|
||||
s8 temp_v0;
|
||||
u8 courseStatus;
|
||||
s32 levelCount;
|
||||
s32 worldCount;
|
||||
s16 var_v0;
|
||||
u8 courseStatus;
|
||||
s32 var_s0;
|
||||
s32 i;
|
||||
s8 temp_v0;
|
||||
s32 blocks;
|
||||
s32 var_s0;
|
||||
|
||||
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);
|
||||
D_801241F4 = 128;
|
||||
func_80072E28(16, 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)) {
|
||||
@@ -455,47 +453,39 @@ void func_800732E8(Settings *settings, u8 *saveData) {
|
||||
var_s0 += 2;
|
||||
}
|
||||
}
|
||||
func_80072E28(0x44 - var_s0, 0);
|
||||
func_80072E28(68 - var_s0, 0);
|
||||
func_80072E28(6, settings->tajFlags);
|
||||
func_80072E28(0xA, settings->trophies);
|
||||
func_80072E28(0xC, settings->bosses);
|
||||
func_80072E28(10, settings->trophies);
|
||||
func_80072E28(12, settings->bosses);
|
||||
for (i = 0; i < worldCount; i++) {
|
||||
func_80072E28(7, settings->balloonsPtr[i * 2]);
|
||||
func_80072E28(7, settings->balloonsPtr[i]);
|
||||
}
|
||||
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(16, (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(32, settings->cutsceneFlags);
|
||||
func_80072E28(16, 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];
|
||||
for (i = 2, var_v0 = 5; i < 40; i++) {
|
||||
var_v0 += saveData[i];
|
||||
}
|
||||
D_801241EC = saveData;
|
||||
D_801241F0 = 0;
|
||||
D_801241F4 = 128; // 1000 0000 in binary.
|
||||
func_80072E28(0x10, var_v0);
|
||||
D_801241F4 = 128;
|
||||
func_80072E28(16, var_v0);
|
||||
}
|
||||
#else
|
||||
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?
|
||||
#ifdef NON_MATCHING
|
||||
void func_80073588(Settings *settings, u8 *saveData, u8 arg2) {
|
||||
s16 availableVehicles;
|
||||
s32 levelCount;
|
||||
s32 worldCount;
|
||||
s32 i;
|
||||
s16 var_s0;
|
||||
s16 sum;
|
||||
|
||||
func_8006E770(settings, arg2);
|
||||
get_number_of_levels_and_worlds(&levelCount, &worldCount);
|
||||
@@ -504,71 +494,154 @@ void func_80073588(Settings *settings, u8 *saveData, u8 arg2) {
|
||||
D_801241EC = saveData;
|
||||
D_801241F0 = 0;
|
||||
D_801241F4 = 0;
|
||||
for (i = 2, var_s0 = 5; i < 192; i++) {
|
||||
var_s0 += saveData[i];
|
||||
for (i = 2, sum = 5; i < 192; i++) {
|
||||
sum += D_801241EC[i];
|
||||
}
|
||||
var_s0 -= func_80072C54(0x10);
|
||||
if (var_s0 == 0) {
|
||||
sum -= func_80072C54(16);
|
||||
if (sum == 0) {
|
||||
for (i = 0; i < levelCount; i++) {
|
||||
if (func_8006B14C(i) == 0) {
|
||||
availableVehicles = get_map_available_vehicles(i);
|
||||
// Car Available
|
||||
if (availableVehicles & 1) {
|
||||
settings->flapTimesPtr[0][i] = func_80072C54(0x10);
|
||||
settings->flapInitialsPtr[0][i] = func_80072C54(0x10);
|
||||
settings->flapTimesPtr[0][i] = func_80072C54(16);
|
||||
settings->flapInitialsPtr[0][i] = func_80072C54(16);
|
||||
}
|
||||
// Hovercraft Available
|
||||
if (availableVehicles & 2) {
|
||||
settings->flapTimesPtr[1][i] = func_80072C54(0x10);
|
||||
settings->flapInitialsPtr[1][i] = func_80072C54(0x10);
|
||||
settings->flapTimesPtr[1][i] = func_80072C54(16);
|
||||
settings->flapInitialsPtr[1][i] = func_80072C54(16);
|
||||
}
|
||||
// Plane Available
|
||||
if (availableVehicles & 4) {
|
||||
settings->flapTimesPtr[2][i] = func_80072C54(0x10);
|
||||
settings->flapInitialsPtr[2][i] = func_80072C54(0x10);
|
||||
settings->flapTimesPtr[2][i] = func_80072C54(16);
|
||||
settings->flapInitialsPtr[2][i] = func_80072C54(16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (arg2 & 2) {
|
||||
saveData += 192;
|
||||
D_801241EC = saveData;
|
||||
D_801241EC = saveData + 192;
|
||||
D_801241F0 = 0;
|
||||
D_801241F4 = 0;
|
||||
for (i = 2, var_s0 = 5; i < 192; i++) {
|
||||
var_s0 += saveData[i];
|
||||
for (i = 2, sum = 5; i < 192; i++) {
|
||||
sum += (s16) D_801241EC[i];
|
||||
}
|
||||
var_s0 -= func_80072C54(0x10);
|
||||
if (var_s0 == 0) {
|
||||
sum -= func_80072C54(16);
|
||||
if (sum == 0) {
|
||||
for (i = 0; i < levelCount; i++) {
|
||||
if (func_8006B14C(i) == 0) {
|
||||
availableVehicles = get_map_available_vehicles(i);
|
||||
// Car Available
|
||||
if (availableVehicles & 1) {
|
||||
settings->courseTimesPtr[0][i] = func_80072C54(0x10);
|
||||
settings->courseInitialsPtr[0][i] = func_80072C54(0x10);
|
||||
settings->courseTimesPtr[0][i] = func_80072C54(16);
|
||||
settings->courseInitialsPtr[0][i] = func_80072C54(16);
|
||||
}
|
||||
// Hovercraft Available
|
||||
if (availableVehicles & 2) {
|
||||
settings->courseTimesPtr[1][i] = func_80072C54(0x10);
|
||||
settings->courseInitialsPtr[1][i] = func_80072C54(0x10);
|
||||
settings->courseTimesPtr[1][i] = func_80072C54(16);
|
||||
settings->courseInitialsPtr[1][i] = func_80072C54(16);
|
||||
}
|
||||
// Plane Available
|
||||
if (availableVehicles & 4) {
|
||||
settings->courseTimesPtr[2][i] = func_80072C54(0x10);
|
||||
settings->courseInitialsPtr[2][i] = func_80072C54(0x10);
|
||||
settings->courseTimesPtr[2][i] = func_80072C54(16);
|
||||
settings->courseInitialsPtr[2][i] = func_80072C54(16);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/save_data/func_80073588.s")
|
||||
#endif
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
void func_800738A4(Settings *settings, u8 *saveData) {
|
||||
s16 availableVehicles;
|
||||
s32 levelCount;
|
||||
s32 worldCount;
|
||||
s32 i;
|
||||
s32 vehicleCount;
|
||||
s16 sum;
|
||||
|
||||
// Fakematch?
|
||||
if (1) {
|
||||
get_number_of_levels_and_worlds(&levelCount, &worldCount);
|
||||
D_801241EC = saveData;
|
||||
D_801241F0 = 0;
|
||||
D_801241F4 = 128;
|
||||
func_80072E28(16, 0);
|
||||
for (vehicleCount = 0, i = 0; i < levelCount; i++) {
|
||||
if (func_8006B14C(i) == 0) {
|
||||
availableVehicles = get_map_available_vehicles(i);
|
||||
// Car Available
|
||||
if (availableVehicles & 1) {
|
||||
func_80072E28(16, settings->flapTimesPtr[0][i]);
|
||||
func_80072E28(16, settings->flapInitialsPtr[0][i]);
|
||||
vehicleCount++;
|
||||
}
|
||||
// Hovercraft Available
|
||||
if (availableVehicles & 2) {
|
||||
func_80072E28(16, settings->flapTimesPtr[1][i]);
|
||||
func_80072E28(16, settings->flapInitialsPtr[1][i]);
|
||||
vehicleCount++;
|
||||
}
|
||||
// Plane Available
|
||||
if (availableVehicles & 4) {
|
||||
func_80072E28(16, settings->flapTimesPtr[2][i]);
|
||||
func_80072E28(16, settings->flapInitialsPtr[2][i]);
|
||||
vehicleCount++;
|
||||
}
|
||||
// How do we make the `b` instruction appear?
|
||||
if (vehicleCount < 48) {
|
||||
continue;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
D_801241EC = saveData;
|
||||
D_801241F0 = 0;
|
||||
D_801241F4 = 128;
|
||||
for (i = 2, sum = 5; i < 192; i++) {
|
||||
sum += (s16) D_801241EC[i];
|
||||
}
|
||||
func_80072E28(16, sum);
|
||||
D_801241EC = saveData + 192;
|
||||
D_801241F0 = 0;
|
||||
D_801241F4 = 128;
|
||||
func_80072E28(16, 0);
|
||||
for (i = 0; i < levelCount; i++) {
|
||||
if (func_8006B14C(i) == 0) {
|
||||
availableVehicles = get_map_available_vehicles(i);
|
||||
// Car Available
|
||||
if (availableVehicles & 1) {
|
||||
func_80072E28(16, settings->courseTimesPtr[0][i]);
|
||||
func_80072E28(16, settings->courseInitialsPtr[0][i]);
|
||||
}
|
||||
// Hovercraft Available
|
||||
if (availableVehicles & 2) {
|
||||
func_80072E28(16, settings->courseTimesPtr[1][i]);
|
||||
func_80072E28(16, settings->courseInitialsPtr[1][i]);
|
||||
}
|
||||
// Plane Available
|
||||
if (availableVehicles & 4) {
|
||||
func_80072E28(16, settings->courseTimesPtr[2][i]);
|
||||
func_80072E28(16, settings->courseInitialsPtr[2][i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
D_801241EC = saveData + 192;
|
||||
D_801241F0 = 0;
|
||||
D_801241F4 = 128;
|
||||
}
|
||||
for (i = 2, sum = 5; i < 192; i++) {
|
||||
sum += D_801241EC[i];
|
||||
}
|
||||
func_80072E28(16, sum);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/save_data/func_800738A4.s")
|
||||
#endif
|
||||
|
||||
s32 get_game_data_file_size(void) {
|
||||
return 256;
|
||||
@@ -578,9 +651,56 @@ s32 get_time_data_file_size(void) {
|
||||
return 512;
|
||||
}
|
||||
|
||||
//Probably get_file_extension
|
||||
//func_80073C5C(s32 controllerIndex, s32 fileType, char **fileExt);
|
||||
GLOBAL_ASM("asm/non_matchings/save_data/func_80073C5C.s")
|
||||
SIDeviceStatus get_file_extension(s32 controllerIndex, s32 fileType, char *fileExt) {
|
||||
#define BLANK_EXT_CHAR ' '
|
||||
char *fileNames[16];
|
||||
char *fileExtensions[16];
|
||||
u8 fileTypes[16];
|
||||
u32 fileSizes[16];
|
||||
s32 var_s1;
|
||||
s32 fileNum;
|
||||
char fileExtChar;
|
||||
SIDeviceStatus ret;
|
||||
|
||||
fileExtChar = BLANK_EXT_CHAR;
|
||||
var_s1 = 0;
|
||||
ret = get_controller_pak_file_list(controllerIndex, 16, fileNames, fileExtensions, fileSizes, fileTypes);
|
||||
if (ret == CONTROLLER_PAK_GOOD) {
|
||||
for (fileNum = 0; fileNum < 16; fileNum++) {
|
||||
if (fileNames[fileNum] == NULL) {
|
||||
continue;
|
||||
}
|
||||
if (fileType == 3) {
|
||||
if((func_800CE050((u8 *) fileNames[fileNum], (char *)D_800E7630, strlen((char *)D_800E7640)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
} else if((func_800CE050((u8 *) fileNames[fileNum], (char *)D_800E7650, strlen((char *)D_800E7660)) != 0)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (fileExtChar < fileExtensions[fileNum][0]) {
|
||||
fileExtChar = fileExtensions[fileNum][0];
|
||||
}
|
||||
var_s1 |= (1 << (fileExtensions[fileNum][0] + (BLANK_EXT_CHAR - 1)));
|
||||
}
|
||||
if (fileExtChar == BLANK_EXT_CHAR) {
|
||||
fileExtChar = 'A';
|
||||
} else if (fileExtChar == 'Z') {
|
||||
for (fileExtChar = 'A'; fileExtChar <= 'Z'; var_s1 >>= 1, fileExtChar++) {
|
||||
if (!(var_s1 & 1)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
fileExtChar++;
|
||||
}
|
||||
// Even though file extensions are technically 4 characters, only the first is used.
|
||||
// So this will set the extension to that character and then a null terminator.
|
||||
fileExt[0] = fileExtChar;
|
||||
fileExt[1] = '\0';
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
//Read DKRACING-ADV data into settings?
|
||||
s32 read_game_data_from_controller_pak(s32 controllerIndex, char *fileExt, Settings *settings) {
|
||||
@@ -640,7 +760,7 @@ s32 write_game_data_to_controller_pak(s32 controllerIndex, Settings *arg1) {
|
||||
gameData = allocate_from_main_pool_safe(fileSize, COLOUR_TAG_WHITE);
|
||||
*((s32 *)gameData) = GAMD;
|
||||
func_800732E8(arg1, gameData + 4);
|
||||
ret = func_80073C5C(controllerIndex, 3, &fileExt);
|
||||
ret = get_file_extension(controllerIndex, 3, (char *)&fileExt);
|
||||
if (ret == CONTROLLER_PAK_GOOD) {
|
||||
// D_800E7680 = DKRACING-ADV
|
||||
ret = write_controller_pak_file(controllerIndex, -1, (char *) D_800E7680, (char *)&fileExt, gameData, fileSize);
|
||||
@@ -708,7 +828,7 @@ s32 write_time_data_to_controller_pak(s32 controllerIndex, Settings *arg1) {
|
||||
timeData = allocate_from_main_pool_safe(fileSize, COLOUR_TAG_WHITE);
|
||||
*((s32 *)timeData) = TIMD;
|
||||
func_800738A4(arg1, timeData + 4);
|
||||
ret = func_80073C5C(controllerIndex, 4, &fileExt);
|
||||
ret = get_file_extension(controllerIndex, 4, (char *)&fileExt);
|
||||
if (ret == CONTROLLER_PAK_GOOD) {
|
||||
//D_800E76A0 = DKRACING-TIMES
|
||||
ret = write_controller_pak_file(controllerIndex, -1, (char *)D_800E76A0, (char *)&fileExt, timeData, fileSize);
|
||||
@@ -1033,7 +1153,125 @@ s32 func_80074B1C(void) {
|
||||
return (&x)[0] * 6 + 0x100;
|
||||
}
|
||||
|
||||
#ifdef NON_EQUIVALENT
|
||||
s32 func_80074B34(s32 controllerIndex, s16 levelId, s16 vehicleId, u16 *ghostCharacterId, s16 *ghostTime, s16 *ghostNodeCount, GhostHeader *ghostData) {
|
||||
#define GHSS_FILE_SIZE 0x100
|
||||
u8 *fileData;
|
||||
s32 fileNumber;
|
||||
s32 fileOffset;
|
||||
s32 fileSize;
|
||||
s32 bytesFree;
|
||||
s32 notesFree;
|
||||
s32 ret;
|
||||
s32 retTemp;
|
||||
s32 var_v1;
|
||||
u8 *temp_a1;
|
||||
GhostHeader *ghostHeader;
|
||||
u8 *var_v0_2;
|
||||
u8 *temp_v0_4;
|
||||
|
||||
fileOffset = 0;
|
||||
ret = get_si_device_status(controllerIndex);
|
||||
if (ret != CONTROLLER_PAK_GOOD) {
|
||||
start_reading_controller_data(controllerIndex);
|
||||
return ret;
|
||||
}
|
||||
if (ghostCharacterId != NULL) {
|
||||
*ghostTime = -1;
|
||||
*ghostCharacterId = -1;
|
||||
}
|
||||
//D_800E773C = "DKRACING-GHOSTS"
|
||||
//D_800E774C = ""
|
||||
ret = get_file_number(controllerIndex, (char *) D_800E773C, (char *) D_800E774C, &fileNumber);
|
||||
if (ret == CONTROLLER_PAK_GOOD) {
|
||||
fileData = allocate_from_main_pool_safe(GHSS_FILE_SIZE, COLOUR_TAG_BLACK);
|
||||
if (!(pfs[controllerIndex].status & PFS_INITIALIZED)) {
|
||||
osPfsInit(sControllerMesgQueue, &pfs[controllerIndex], controllerIndex);
|
||||
}
|
||||
ret = read_data_from_controller_pak(controllerIndex, fileNumber, fileData, GHSS_FILE_SIZE);
|
||||
if (ret == CONTROLLER_PAK_GOOD) {
|
||||
temp_a1 = fileData + 4;
|
||||
if (fileData[0] == GHSS) {
|
||||
var_v1 = 0;
|
||||
var_v0_2 = temp_a1;
|
||||
loop_10:
|
||||
var_v1 += 4;
|
||||
if ((levelId == var_v0_2[0]) && (vehicleId == var_v0_2[1])) {
|
||||
fileOffset = var_v0_2[2];
|
||||
fileSize = var_v0_2[6] - var_v0_2[2];
|
||||
} else {
|
||||
var_v0_2 += 4;
|
||||
if (var_v1 < 24) {
|
||||
goto loop_10;
|
||||
}
|
||||
}
|
||||
if (fileOffset == 0) {
|
||||
ret = CONTROLLER_PAK_UNK6;
|
||||
if (fileData[4] == 0xFF) {
|
||||
ret = CONTROLLER_PAK_UNK8;
|
||||
}
|
||||
temp_v0_4 = temp_a1 + (2 * 4);
|
||||
if (fileData[4] == 0xFF) {
|
||||
ret = CONTROLLER_PAK_UNK8;
|
||||
}
|
||||
if (temp_v0_4[0] == 0xFF) {
|
||||
ret = CONTROLLER_PAK_UNK8;
|
||||
}
|
||||
if (temp_v0_4[4] == 0xFF) {
|
||||
ret = CONTROLLER_PAK_UNK8;
|
||||
}
|
||||
if (temp_v0_4[8] == 0xFF) {
|
||||
ret = CONTROLLER_PAK_UNK8;
|
||||
}
|
||||
if (temp_v0_4[12] == 0xFF) {
|
||||
ret = CONTROLLER_PAK_UNK8;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
ret = CONTROLLER_PAK_BAD_DATA;
|
||||
}
|
||||
}
|
||||
free_from_memory_pool(fileData);
|
||||
if (fileOffset != 0) {
|
||||
if (ghostCharacterId != NULL) {
|
||||
ghostHeader = allocate_from_main_pool_safe(fileSize + GHSS_FILE_SIZE, COLOUR_TAG_BLACK);
|
||||
retTemp = CONTROLLER_PAK_BAD_DATA;
|
||||
if (osPfsReadWriteFile(&pfs[controllerIndex], fileNumber, PFS_READ, fileOffset, fileSize, (u8 *) ghostHeader) == 0) {
|
||||
if (calculate_ghost_header_checksum(ghostHeader) == ghostHeader->checksum) {
|
||||
*ghostCharacterId = ghostHeader->characterID;
|
||||
*ghostTime = ghostHeader->time;
|
||||
*ghostNodeCount = ghostHeader->nodeCount;
|
||||
bcopy(ghostHeader + 8, ghostData, *ghostNodeCount * sizeof(GhostNode));
|
||||
retTemp = CONTROLLER_PAK_GOOD;
|
||||
} else {
|
||||
retTemp = CONTROLLER_PAK_BAD_DATA;
|
||||
}
|
||||
}
|
||||
free_from_memory_pool(ghostHeader);
|
||||
ret = retTemp;
|
||||
}
|
||||
}
|
||||
if ((fileOffset != 0) && (ghostCharacterId == NULL)) {
|
||||
ret = CONTROLLER_PAK_GOOD;
|
||||
}
|
||||
}
|
||||
start_reading_controller_data(controllerIndex);
|
||||
if (ret == CONTROLLER_PAK_CHANGED) {
|
||||
if (get_free_space(controllerIndex, &bytesFree, ¬esFree) == CONTROLLER_PAK_GOOD) {
|
||||
if ((bytesFree < func_80074B1C()) || ((notesFree == 0))) {
|
||||
return CONTROLLER_PAK_FULL;
|
||||
}
|
||||
/* Duplicate return node #48. Try simplifying control flow for better match */
|
||||
return ret;
|
||||
}
|
||||
return CONTROLLER_PAK_BAD_DATA;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/save_data/func_80074B34.s")
|
||||
#endif
|
||||
|
||||
GLOBAL_ASM("asm/non_matchings/save_data/func_80074EB8.s")
|
||||
GLOBAL_ASM("asm/non_matchings/save_data/func_80075000.s")
|
||||
GLOBAL_ASM("asm/non_matchings/save_data/func_800753D8.s")
|
||||
@@ -1364,6 +1602,7 @@ void func_80076164(void) {
|
||||
}
|
||||
|
||||
//Get Available Space in Controller Pak
|
||||
//Upper bytes of return value couldl be controllerIndex
|
||||
s32 get_free_space(s32 controllerIndex, u32 *bytesFree, s32 *notesFree) {
|
||||
s32 ret;
|
||||
s32 bytesNotUsed;
|
||||
|
||||
+7
-6
@@ -38,6 +38,7 @@ extern s8 *D_800DE440;
|
||||
extern u8 gN64FontCodes[68];
|
||||
extern s32 D_800DE48C;
|
||||
extern OSPfs pfs[MAXCONTROLLERS];
|
||||
size_t strlen(const char *str);
|
||||
|
||||
u8 func_80072250(s32 arg0);
|
||||
void func_80072298(u8 arg0);
|
||||
@@ -79,19 +80,19 @@ 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);
|
||||
void func_80072E28(s32 arg0, u32 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);
|
||||
SIDeviceStatus func_800756D4(s32 controllerIndex, u8 *arg1, u8 *arg2, u8 *arg3, s16 *arg4);
|
||||
SIDeviceStatus get_file_extension(s32 controllerIndex, s32 fileType, char *fileExt); //Non matching
|
||||
void func_80073588(Settings *settings, u8 *saveData, u8 arg2);
|
||||
void func_800732E8(Settings *settings, u8 *saveData);
|
||||
|
||||
s32 func_800738A4(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_800738A4(Settings *settings, u8 *saveData);
|
||||
//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
|
||||
s32 func_80074B34(s32 controllerIndex, s16 levelId, s16 vehicleId, u16 *ghostCharacterId, s16 *ghostTime, s16 *ghostNodeCount, GhostHeader *ghostData); //Non matching
|
||||
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