From 2727a5e5ddc3bc439b2d0b7f2e681650b79b2fb5 Mon Sep 17 00:00:00 2001 From: Tyler McGavran Date: Sun, 31 Dec 2023 21:04:30 -0500 Subject: [PATCH] Turn loop unrolling back on for code_8006E9C0 (#523) Signed-off-by: Taggerung --- Makefile | 2 - asm/bss_80165590.s | 53 +--- .../code_8006E9C0/init_hud_one_player.s | 258 ------------------ src/code_80005FD0.c | 2 - src/code_80005FD0.h | 1 + src/code_80057C60.h | 12 + src/code_8006E9C0.c | 243 +++++------------ src/code_8006E9C0.h | 18 -- tools/doxygen_syms.md | 16 -- 9 files changed, 76 insertions(+), 529 deletions(-) delete mode 100644 asm/non_matchings/code_8006E9C0/init_hud_one_player.s diff --git a/Makefile b/Makefile index 1d5a3f408..f1bc1d4d2 100644 --- a/Makefile +++ b/Makefile @@ -613,8 +613,6 @@ ifeq ($(COMPILER),ido) $(BUILD_DIR)/src/audio/%.o: OPT_FLAGS := -O2 -use_readwrite_const $(BUILD_DIR)/src/audio/port_eu.o: OPT_FLAGS := -O2 -framepointer $(BUILD_DIR)/src/audio/external.o: OPT_FLAGS := -O2 -framepointer -# No tab here required -$(BUILD_DIR)/src/code_8006E9C0.o: OPT_FLAGS := -O2 -Wo,-loopunroll,0 endif diff --git a/asm/bss_80165590.s b/asm/bss_80165590.s index abbbbec55..1871c24b0 100644 --- a/asm/bss_80165590.s +++ b/asm/bss_80165590.s @@ -488,7 +488,7 @@ glabel D_8018C970 # some hud related list begin # playerHUD should be of size 528 (0x84 * 0x4) -# D_8018CA74 through D_8018CC7D are all fake +# D_8018CA74 and D_8018CA78 are fake glabel playerHUD .skip 4 @@ -498,56 +498,7 @@ glabel D_8018CA74 # playerHUD[PLAYER_ONE].rankScaling # Refrenced in code_80091750/add_8018D9E0_entry glabel D_8018CA78 # playerHUD[PLAYER_ONE].someTimer -.skip 104 - -# Everything below this point is referenced in code_8006E9C0/reset_object_variable -glabel D_8018CAE0 # playerHUD[PLAYER_ONE].raceCompleteBool -.skip 1 - -glabel D_8018CAE1 # playerHUD[PLAYER_ONE].lapCount -.skip 1 - -glabel D_8018CAE2 # playerHUD[PLAYER_ONE].alsoLapCount -.skip 15 - -glabel D_8018CAF1 # playerHUD[PLAYER_ONE].unk_81 -.skip 115 - -glabel D_8018CB64 # playerHUD[PLAYER_TWO].raceCompleteBool -.skip 1 - -glabel D_8018CB65 # playerHUD[PLAYER_TWO].lapCount -.skip 1 - -glabel D_8018CB66 # playerHUD[PLAYER_TWO].alsoLapCount -.skip 15 - -glabel D_8018CB75 # playerHUD[PLAYER_TWO].unk_81 -.skip 115 - -glabel D_8018CBE8 # playerHUD[PLAYER_THREE].raceCompleteBool -.skip 1 - -glabel D_8018CBE9 # playerHUD[PLAYER_THREE].lapCount -.skip 1 - -glabel D_8018CBEA # playerHUD[PLAYER_THREE].alsoLapCount -.skip 15 - -glabel D_8018CBF9 # playerHUD[PLAYER_THREE].unk_81 -.skip 115 - -glabel D_8018CC6C # playerHUD[PLAYER_FOUR].raceCompleteBool -.skip 1 - -glabel D_8018CC6D # playerHUD[PLAYER_FOUR].lapCount -.skip 1 - -glabel D_8018CC6E # playerHUD[PLAYER_FOUR].alsoLapCount -.skip 15 - -glabel D_8018CC7D # playerHUD[PLAYER_FOUR].unk_81 -.skip 3 +.skip 520 # some hud related list end glabel D_8018CC80 diff --git a/asm/non_matchings/code_8006E9C0/init_hud_one_player.s b/asm/non_matchings/code_8006E9C0/init_hud_one_player.s deleted file mode 100644 index 16c325f52..000000000 --- a/asm/non_matchings/code_8006E9C0/init_hud_one_player.s +++ /dev/null @@ -1,258 +0,0 @@ -glabel init_hud_one_player -/* 072028 80071428 3C018019 */ lui $at, %hi(D_8018D140) # $at, 0x8019 -/* 07202C 8007142C AC20D140 */ sw $zero, %lo(D_8018D140)($at) -/* 072030 80071430 3C018019 */ lui $at, %hi(D_8018D150) # $at, 0x8019 -/* 072034 80071434 AC20D150 */ sw $zero, %lo(D_8018D150)($at) -/* 072038 80071438 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 07203C 8007143C 44812000 */ mtc1 $at, $f4 -/* 072040 80071440 27BDFFE8 */ addiu $sp, $sp, -0x18 -/* 072044 80071444 AFBF0014 */ sw $ra, 0x14($sp) -/* 072048 80071448 3C018019 */ lui $at, %hi(D_8018CFCC) # $at, 0x8019 -/* 07204C 8007144C 3C048018 */ lui $a0, %hi(D_80183DA0) # $a0, 0x8018 -/* 072050 80071450 24843DA0 */ addiu $a0, %lo(D_80183DA0) # addiu $a0, $a0, 0x3da0 -/* 072054 80071454 0C01C7C0 */ jal find_unused_obj_index -/* 072058 80071458 E424CFCC */ swc1 $f4, %lo(D_8018CFCC)($at) -/* 07205C 8007145C 3C048018 */ lui $a0, %hi(D_80183DB8) # $a0, 0x8018 -/* 072060 80071460 0C01C7C0 */ jal find_unused_obj_index -/* 072064 80071464 24843DB8 */ addiu $a0, %lo(D_80183DB8) # addiu $a0, $a0, 0x3db8 -/* 072068 80071468 3C048018 */ lui $a0, %hi(D_80183DBC) # $a0, 0x8018 -/* 07206C 8007146C 0C01C7C0 */ jal find_unused_obj_index -/* 072070 80071470 24843DBC */ addiu $a0, %lo(D_80183DBC) # addiu $a0, $a0, 0x3dbc -/* 072074 80071474 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId) # $a0, 0x8018 -/* 072078 80071478 0C01C7C0 */ jal find_unused_obj_index -/* 07207C 8007147C 24843E88 */ addiu $a0, %lo(gItemWindowObjectByPlayerId) # addiu $a0, $a0, 0x3e88 -/* 072080 80071480 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId + 4) # $a0, 0x8018 -/* 072084 80071484 0C01C7C0 */ jal find_unused_obj_index -/* 072088 80071488 24843E8C */ addiu $a0, %lo(gItemWindowObjectByPlayerId + 4) # addiu $a0, $a0, 0x3e8c -/* 07208C 8007148C 0C01C064 */ jal init_object_list_index -/* 072090 80071490 00000000 */ nop -/* 072094 80071494 0C01C157 */ jal func_8007055C -/* 072098 80071498 00000000 */ nop -/* 07209C 8007149C 0C01C157 */ jal func_8007055C -/* 0720A0 800714A0 00000000 */ nop -/* 0720A4 800714A4 0C01C1E0 */ jal init_course_object -/* 0720A8 800714A8 00000000 */ nop -/* 0720AC 800714AC 3C088019 */ lui $t0, %hi(playerHUD) # $t0, 0x8019 -/* 0720B0 800714B0 2508CA70 */ addiu $t0, %lo(playerHUD) # addiu $t0, $t0, -0x3590 -/* 0720B4 800714B4 240E0156 */ li $t6, 342 -/* 0720B8 800714B8 A50E003E */ sh $t6, 0x3e($t0) -/* 0720BC 800714BC 8518003E */ lh $t8, 0x3e($t0) -/* 0720C0 800714C0 240F0106 */ li $t7, 262 -/* 0720C4 800714C4 A50F0040 */ sh $t7, 0x40($t0) -/* 0720C8 800714C8 27190018 */ addiu $t9, $t8, 0x18 -/* 0720CC 800714CC 44993000 */ mtc1 $t9, $f6 -/* 0720D0 800714D0 3C018019 */ lui $at, %hi(D_8018CFEC) # $at, 0x8019 -/* 0720D4 800714D4 340DDD00 */ li $t5, 56576 -/* 0720D8 800714D8 46803220 */ cvt.s.w $f8, $f6 -/* 0720DC 800714DC 240E0034 */ li $t6, 52 -/* 0720E0 800714E0 240F00C8 */ li $t7, 200 -/* 0720E4 800714E4 3C188016 */ lui $t8, %hi(gGPCurrentRaceRankByPlayerId) # $t8, 0x8016 -/* 0720E8 800714E8 2402012C */ li $v0, 300 -/* 0720EC 800714EC 2403FFD8 */ li $v1, -40 -/* 0720F0 800714F0 E428CFEC */ swc1 $f8, %lo(D_8018CFEC)($at) -/* 0720F4 800714F4 850B0040 */ lh $t3, 0x40($t0) -/* 0720F8 800714F8 3C018019 */ lui $at, %hi(D_8018CFF4) # $at, 0x8019 -/* 0720FC 800714FC 24190011 */ li $t9, 17 -/* 072100 80071500 256C0006 */ addiu $t4, $t3, 6 -/* 072104 80071504 448C5000 */ mtc1 $t4, $f10 -/* 072108 80071508 240B0019 */ li $t3, 25 -/* 07210C 8007150C 240C00A0 */ li $t4, 160 -/* 072110 80071510 468054A0 */ cvt.s.w $f18, $f10 -/* 072114 80071514 3C048018 */ lui $a0, %hi(gItemWindowObjectByPlayerId) # $a0, 0x8018 -/* 072118 80071518 E432CFF4 */ swc1 $f18, %lo(D_8018CFF4)($at) -/* 07211C 8007151C 3C018016 */ lui $at, %hi(D_8016579E) # $at, 0x8016 -/* 072120 80071520 A42D579E */ sh $t5, %lo(D_8016579E)($at) -/* 072124 80071524 A50E0062 */ sh $t6, 0x62($t0) -/* 072128 80071528 A50F0064 */ sh $t7, 0x64($t0) -/* 07212C 8007152C A5000066 */ sh $zero, 0x66($t0) -/* 072130 80071530 A5000068 */ sh $zero, 0x68($t0) -/* 072134 80071534 8F1843B8 */ lw $t8, %lo(gGPCurrentRaceRankByPlayerId)($t8) -/* 072138 80071538 240DFFE0 */ li $t5, -32 -/* 07213C 8007153C A502004E */ sh $v0, 0x4e($t0) -/* 072140 80071540 A5020050 */ sh $v0, 0x50($t0) -/* 072144 80071544 A5020052 */ sh $v0, 0x52($t0) -/* 072148 80071548 A5190058 */ sh $t9, 0x58($t0) -/* 07214C 8007154C A503005A */ sh $v1, 0x5a($t0) -/* 072150 80071550 A503005C */ sh $v1, 0x5c($t0) -/* 072154 80071554 A503005E */ sh $v1, 0x5e($t0) -/* 072158 80071558 A50B0060 */ sh $t3, 0x60($t0) -/* 07215C 8007155C A50C0042 */ sh $t4, 0x42($t0) -/* 072160 80071560 A50D0044 */ sh $t5, 0x44($t0) -/* 072164 80071564 A5000046 */ sh $zero, 0x46($t0) -/* 072168 80071568 A5000048 */ sh $zero, 0x48($t0) -/* 07216C 8007156C A518006A */ sh $t8, 0x6a($t0) -/* 072170 80071570 0C01BB9F */ jal init_item_window -/* 072174 80071574 8C843E88 */ lw $a0, %lo(gItemWindowObjectByPlayerId)($a0) -/* 072178 80071578 3C01420C */ li $at, 0x420C0000 # 35.000000 -/* 07217C 8007157C 44810000 */ mtc1 $at, $f0 -/* 072180 80071580 3C01C1C0 */ li $at, 0xC1C00000 # -24.000000 -/* 072184 80071584 44818000 */ mtc1 $at, $f16 -/* 072188 80071588 3C014220 */ li $at, 0x42200000 # 40.000000 -/* 07218C 8007158C 44817000 */ mtc1 $at, $f14 -/* 072190 80071590 3C014040 */ li $at, 0x40400000 # 3.000000 -/* 072194 80071594 3C088019 */ lui $t0, %hi(playerHUD) # $t0, 0x8019 -/* 072198 80071598 3C038019 */ lui $v1, %hi(D_8018D0C8) # $v1, 0x8019 -/* 07219C 8007159C 3C048019 */ lui $a0, %hi(D_8018D028) # $a0, 0x8019 -/* 0721A0 800715A0 3C058019 */ lui $a1, %hi(D_8018D050) # $a1, 0x8019 -/* 0721A4 800715A4 3C068019 */ lui $a2, %hi(D_8018D0F0) # $a2, 0x8019 -/* 0721A8 800715A8 3C078019 */ lui $a3, %hi(D_8018D0A0) # $a3, 0x8019 -/* 0721AC 800715AC 3C028019 */ lui $v0, %hi(D_8018D078) # $v0, 0x8019 -/* 0721B0 800715B0 3C098019 */ lui $t1, %hi(D_8018D098) # $t1, 0x8019 -/* 0721B4 800715B4 44816800 */ mtc1 $at, $f13 -/* 0721B8 800715B8 44806000 */ mtc1 $zero, $f12 -/* 0721BC 800715BC 44801000 */ mtc1 $zero, $f2 -/* 0721C0 800715C0 2508CA70 */ addiu $t0, %lo(playerHUD) # addiu $t0, $t0, -0x3590 -/* 0721C4 800715C4 240A00A0 */ li $t2, 160 -/* 0721C8 800715C8 2529D098 */ addiu $t1, %lo(D_8018D098) # addiu $t1, $t1, -0x2f68 -/* 0721CC 800715CC 2442D078 */ addiu $v0, %lo(D_8018D078) # addiu $v0, $v0, -0x2f88 -/* 0721D0 800715D0 24E7D0A0 */ addiu $a3, %lo(D_8018D0A0) # addiu $a3, $a3, -0x2f60 -/* 0721D4 800715D4 24C6D0F0 */ addiu $a2, %lo(D_8018D0F0) # addiu $a2, $a2, -0x2f10 -/* 0721D8 800715D8 24A5D050 */ addiu $a1, %lo(D_8018D050) # addiu $a1, $a1, -0x2fb0 -/* 0721DC 800715DC 2484D028 */ addiu $a0, %lo(D_8018D028) # addiu $a0, $a0, -0x2fd8 -/* 0721E0 800715E0 2463D0C8 */ addiu $v1, %lo(D_8018D0C8) # addiu $v1, $v1, -0x2f38 -.L800715E4: -/* 0721E4 800715E4 46000121 */ cvt.d.s $f4, $f0 -/* 0721E8 800715E8 E4A00000 */ swc1 $f0, ($a1) -/* 0721EC 800715EC 462C2180 */ add.d $f6, $f4, $f12 -/* 0721F0 800715F0 E4C00000 */ swc1 $f0, ($a2) -/* 0721F4 800715F4 24420010 */ addiu $v0, $v0, 0x10 -/* 0721F8 800715F8 E46E0004 */ swc1 $f14, 4($v1) -/* 0721FC 800715FC 46203020 */ cvt.s.d $f0, $f6 -/* 072200 80071600 E4900004 */ swc1 $f16, 4($a0) -/* 072204 80071604 E4E20004 */ swc1 $f2, 4($a3) -/* 072208 80071608 E442FFF4 */ swc1 $f2, -0xc($v0) -/* 07220C 8007160C 46000221 */ cvt.d.s $f8, $f0 -/* 072210 80071610 E4A00004 */ swc1 $f0, 4($a1) -/* 072214 80071614 462C4280 */ add.d $f10, $f8, $f12 -/* 072218 80071618 E4C00004 */ swc1 $f0, 4($a2) -/* 07221C 8007161C E46E0008 */ swc1 $f14, 8($v1) -/* 072220 80071620 E4900008 */ swc1 $f16, 8($a0) -/* 072224 80071624 46205020 */ cvt.s.d $f0, $f10 -/* 072228 80071628 E4E20008 */ swc1 $f2, 8($a3) -/* 07222C 8007162C E442FFF8 */ swc1 $f2, -8($v0) -/* 072230 80071630 E46E000C */ swc1 $f14, 0xc($v1) -/* 072234 80071634 460004A1 */ cvt.d.s $f18, $f0 -/* 072238 80071638 E4A00008 */ swc1 $f0, 8($a1) -/* 07223C 8007163C 462C9100 */ add.d $f4, $f18, $f12 -/* 072240 80071640 E4C00008 */ swc1 $f0, 8($a2) -/* 072244 80071644 E490000C */ swc1 $f16, 0xc($a0) -/* 072248 80071648 E4E2000C */ swc1 $f2, 0xc($a3) -/* 07224C 8007164C 46202020 */ cvt.s.d $f0, $f4 -/* 072250 80071650 E442FFFC */ swc1 $f2, -4($v0) -/* 072254 80071654 24630010 */ addiu $v1, $v1, 0x10 -/* 072258 80071658 24840010 */ addiu $a0, $a0, 0x10 -/* 07225C 8007165C 460001A1 */ cvt.d.s $f6, $f0 -/* 072260 80071660 E4A0000C */ swc1 $f0, 0xc($a1) -/* 072264 80071664 462C3200 */ add.d $f8, $f6, $f12 -/* 072268 80071668 E4C0000C */ swc1 $f0, 0xc($a2) -/* 07226C 8007166C 24A50010 */ addiu $a1, $a1, 0x10 -/* 072270 80071670 24C60010 */ addiu $a2, $a2, 0x10 -/* 072274 80071674 46204020 */ cvt.s.d $f0, $f8 -/* 072278 80071678 24E70010 */ addiu $a3, $a3, 0x10 -/* 07227C 8007167C E46EFFF0 */ swc1 $f14, -0x10($v1) -/* 072280 80071680 E490FFF0 */ swc1 $f16, -0x10($a0) -/* 072284 80071684 E4E2FFF0 */ swc1 $f2, -0x10($a3) -/* 072288 80071688 1449FFD6 */ bne $v0, $t1, .L800715E4 -/* 07228C 8007168C E442FFF0 */ swc1 $f2, -0x10($v0) -/* 072290 80071690 3C013F80 */ li $at, 0x3F800000 # 1.000000 -/* 072294 80071694 44815000 */ mtc1 $at, $f10 -/* 072298 80071698 3C018019 */ lui $at, %hi(D_8018CFD4) # $at, 0x8019 -/* 07229C 8007169C 240200FF */ li $v0, 255 -/* 0722A0 800716A0 E42ACFD4 */ swc1 $f10, %lo(D_8018CFD4)($at) -/* 0722A4 800716A4 3C048019 */ lui $a0, %hi(D_8018D3DC) # $a0, 0x8019 -/* 0722A8 800716A8 3C058019 */ lui $a1, %hi(D_8018D3D8) # $a1, 0x8019 -/* 0722AC 800716AC 24A5D3D8 */ addiu $a1, %lo(D_8018D3D8) # addiu $a1, $a1, -0x2c28 -/* 0722B0 800716B0 2484D3DC */ addiu $a0, %lo(D_8018D3DC) # addiu $a0, $a0, -0x2c24 -/* 0722B4 800716B4 AC820000 */ sw $v0, ($a0) -/* 0722B8 800716B8 ACA20000 */ sw $v0, ($a1) -/* 0722BC 800716BC 3C018019 */ lui $at, %hi(D_8018D3D4) # $at, 0x8019 -/* 0722C0 800716C0 AC22D3D4 */ sw $v0, %lo(D_8018D3D4)($at) -/* 0722C4 800716C4 3C018019 */ lui $at, %hi(D_8018D3E0) # $at, 0x8019 -/* 0722C8 800716C8 241800A0 */ li $t8, 160 -/* 0722CC 800716CC AC38D3E0 */ sw $t8, %lo(D_8018D3E0)($at) -/* 0722D0 800716D0 3C018019 */ lui $at, %hi(D_8018D3E4) # $at, 0x8019 -/* 0722D4 800716D4 AC22D3E4 */ sw $v0, %lo(D_8018D3E4)($at) -/* 0722D8 800716D8 3C018019 */ lui $at, %hi(D_8018D3E8) # $at, 0x8019 -/* 0722DC 800716DC AC22D3E8 */ sw $v0, %lo(D_8018D3E8)($at) -/* 0722E0 800716E0 3C018019 */ lui $at, %hi(D_8018D3EC) # $at, 0x8019 -/* 0722E4 800716E4 AC22D3EC */ sw $v0, %lo(D_8018D3EC)($at) -/* 0722E8 800716E8 3C018019 */ lui $at, %hi(D_8018D3F0) # $at, 0x8019 -/* 0722EC 800716EC AC22D3F0 */ sw $v0, %lo(D_8018D3F0)($at) -/* 0722F0 800716F0 3C018019 */ lui $at, %hi(D_8018D3F4) # $at, 0x8019 -/* 0722F4 800716F4 24190001 */ li $t9, 1 -/* 0722F8 800716F8 AC39D3F4 */ sw $t9, %lo(D_8018D3F4)($at) -/* 0722FC 800716FC 3C013F00 */ li $at, 0x3F000000 # 0.500000 -/* 072300 80071700 44819000 */ mtc1 $at, $f18 -/* 072304 80071704 24060078 */ li $a2, 120 -/* 072308 80071708 A506004C */ sh $a2, 0x4c($t0) -/* 07230C 8007170C A50A004A */ sh $t2, 0x4a($t0) -/* 072310 80071710 3C018016 */ lui $at, %hi(D_801656B0) # $at, 0x8016 -/* 072314 80071714 E5120004 */ swc1 $f18, 4($t0) -/* 072318 80071718 A42056B0 */ sh $zero, %lo(D_801656B0)($at) -/* 07231C 8007171C 24070028 */ li $a3, 40 -/* 072320 80071720 3C018016 */ lui $at, %hi(D_80165708) # $at, 0x8016 -/* 072324 80071724 A4275708 */ sh $a3, %lo(D_80165708)($at) -/* 072328 80071728 3C0140A0 */ li $at, 0x40A00000 # 5.000000 -/* 07232C 8007172C 44812000 */ mtc1 $at, $f4 -/* 072330 80071730 3C018019 */ lui $at, %hi(D_8018D00C) # $at, 0x8019 -/* 072334 80071734 240B0004 */ li $t3, 4 -/* 072338 80071738 E424D00C */ swc1 $f4, %lo(D_8018D00C)($at) -/* 07233C 8007173C 3C018019 */ lui $at, %hi(D_8018D388) # $at, 0x8019 -/* 072340 80071740 AC2BD388 */ sw $t3, %lo(D_8018D388)($at) -/* 072344 80071744 3C018019 */ lui $at, %hi(D_8018D380) # $at, 0x8019 -/* 072348 80071748 AC2AD380 */ sw $t2, %lo(D_8018D380)($at) -/* 07234C 8007174C 3C018019 */ lui $at, %hi(D_8018D384) # $at, 0x8019 -/* 072350 80071750 AC26D384 */ sw $a2, %lo(D_8018D384)($at) -/* 072354 80071754 3C018019 */ lui $at, %hi(D_8018D3C4) # $at, 0x8019 -/* 072358 80071758 240C0032 */ li $t4, 50 -/* 07235C 8007175C AC2CD3C4 */ sw $t4, %lo(D_8018D3C4)($at) -/* 072360 80071760 3C018019 */ lui $at, %hi(D_8018D3BC) # $at, 0x8019 -/* 072364 80071764 AC27D3BC */ sw $a3, %lo(D_8018D3BC)($at) -/* 072368 80071768 3C03800E */ lui $v1, %hi(gModeSelection) # $v1, 0x800e -/* 07236C 8007176C 8C63C53C */ lw $v1, %lo(gModeSelection)($v1) -/* 072370 80071770 3C018019 */ lui $at, %hi(D_8018D3C0) # $at, 0x8019 -/* 072374 80071774 240D0050 */ li $t5, 80 -/* 072378 80071778 AC2DD3C0 */ sw $t5, %lo(D_8018D3C0)($at) -/* 07237C 8007177C 3C018016 */ lui $at, %hi(D_801657A2) # $at, 0x8016 -/* 072380 80071780 240E0333 */ li $t6, 819 -/* 072384 80071784 10600006 */ beqz $v1, .L800717A0 -/* 072388 80071788 A42E57A2 */ sh $t6, %lo(D_801657A2)($at) -/* 07238C 8007178C 24050001 */ li $a1, 1 -/* 072390 80071790 10650007 */ beq $v1, $a1, .L800717B0 -/* 072394 80071794 00000000 */ nop -/* 072398 80071798 1000001C */ b .L8007180C -/* 07239C 8007179C 8FBF0014 */ lw $ra, 0x14($sp) -.L800717A0: -/* 0723A0 800717A0 240F0008 */ li $t7, 8 -/* 0723A4 800717A4 3C018019 */ lui $at, %hi(D_8018D158) # $at, 0x8019 -/* 0723A8 800717A8 10000017 */ b .L80071808 -/* 0723AC 800717AC AC2FD158 */ sw $t7, %lo(D_8018D158)($at) -.L800717B0: -/* 0723B0 800717B0 0C02D3CB */ jal func_800B4F2C -/* 0723B4 800717B4 00000000 */ nop -/* 0723B8 800717B8 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf -/* 0723BC 800717BC 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0723C0 800717C0 0041C024 */ and $t8, $v0, $at -/* 0723C4 800717C4 2719FFFF */ addiu $t9, $t8, -1 -/* 0723C8 800717C8 3C018016 */ lui $at, %hi(D_80165638) # $at, 0x8016 -/* 0723CC 800717CC AC395638 */ sw $t9, %lo(D_80165638)($at) -/* 0723D0 800717D0 0C02D389 */ jal func_800B4E24 -/* 0723D4 800717D4 00002025 */ move $a0, $zero -/* 0723D8 800717D8 3C01000F */ lui $at, (0x000FFFFF >> 16) # lui $at, 0xf -/* 0723DC 800717DC 3421FFFF */ ori $at, (0x000FFFFF & 0xFFFF) # ori $at, $at, 0xffff -/* 0723E0 800717E0 00415824 */ and $t3, $v0, $at -/* 0723E4 800717E4 3C018016 */ lui $at, %hi(D_80165648) # $at, 0x8016 -/* 0723E8 800717E8 AC2B5648 */ sw $t3, %lo(D_80165648)($at) -/* 0723EC 800717EC 24050001 */ li $a1, 1 -/* 0723F0 800717F0 3C018016 */ lui $at, %hi(D_80165888) # $at, 0x8016 -/* 0723F4 800717F4 A0255888 */ sb $a1, %lo(D_80165888)($at) -/* 0723F8 800717F8 3C018016 */ lui $at, %hi(D_80165890) # $at, 0x8016 -/* 0723FC 800717FC A0255890 */ sb $a1, %lo(D_80165890)($at) -/* 072400 80071800 3C018019 */ lui $at, %hi(D_8018D158) # $at, 0x8019 -/* 072404 80071804 AC25D158 */ sw $a1, %lo(D_8018D158)($at) -.L80071808: -/* 072408 80071808 8FBF0014 */ lw $ra, 0x14($sp) -.L8007180C: -/* 07240C 8007180C 27BD0018 */ addiu $sp, $sp, 0x18 -/* 072410 80071810 03E00008 */ jr $ra -/* 072414 80071814 00000000 */ nop diff --git a/src/code_80005FD0.c b/src/code_80005FD0.c index 154af62ff..fe2a0d40f 100644 --- a/src/code_80005FD0.c +++ b/src/code_80005FD0.c @@ -30,8 +30,6 @@ #include "ending/podium_ceremony_actors.h" #include "spawn_players.h" -extern UnkCommonTextureStruct0 *D_800DC720[]; - s32 unk_code_80005FD0_pad[24]; Collision D_80162E70; s16 D_80162EB0; // Possibly a float. diff --git a/src/code_80005FD0.h b/src/code_80005FD0.h index 9e925a576..e3a8ffb92 100644 --- a/src/code_80005FD0.h +++ b/src/code_80005FD0.h @@ -250,6 +250,7 @@ void func_8001C42C(void); /* This is where I'd put my static data, if I had any */ +extern UnkCommonTextureStruct0 *D_800DC720[]; // Suspected to be the "width" of each waypoint. See data_0DD0A0_1.s extern f32 D_800DCA4C[]; extern s16 D_800DCA20[]; diff --git a/src/code_80057C60.h b/src/code_80057C60.h index 3e684728c..16b1c2701 100644 --- a/src/code_80057C60.h +++ b/src/code_80057C60.h @@ -335,6 +335,8 @@ extern Player *D_8018CF28[]; extern s16 D_8018CF50[]; extern s16 gGPCurrentRaceCharacterIdByRank[]; // 8018cf80 extern s16 D_8018CF98[]; +extern f32 D_8018CFCC; +extern f32 D_8018CFD4; extern f32 D_8018CFE4; extern f32 D_8018CFEC; extern f32 D_8018CFF4; @@ -342,10 +344,13 @@ extern f32 D_8018CFF4; extern f32 D_8018D028[8]; extern f32 D_8018D050[8]; extern f32 D_8018D078[8]; +extern f32 D_8018D0A0[]; extern f32 D_8018D0C8[8]; +extern f32 D_8018D0F0[]; extern s32 gMatrixHudCount; // 8018d120 extern s32 D_8018D114; +extern s32 D_8018D150; extern s32 D_8018D160; extern s32 D_8018D168; extern s32 D_8018D170; @@ -379,6 +384,13 @@ extern s16 D_8018D2E8; extern s32 D_8018D314; extern s32 D_8018D320; +extern s32 D_8018D380; +extern s32 D_8018D384; +extern s32 D_8018D388; +extern s32 D_8018D3D4; +extern s32 D_8018D3D8; +extern s32 D_8018D3DC; +extern s32 D_8018D3F0; extern s32 D_8018D3F4; extern s32 D_8018D3F8; extern s32 gRaceFrameCounter; // 8018d3fc diff --git a/src/code_8006E9C0.c b/src/code_8006E9C0.c index c38ea0347..26bb991f8 100644 --- a/src/code_8006E9C0.c +++ b/src/code_8006E9C0.c @@ -12,6 +12,7 @@ #include "objects.h" #include "bomb_kart.h" #include "variables.h" +#include "save.h" #include "common_textures.h" #include #include @@ -45,61 +46,24 @@ void init_object_list(void) { } void reset_object_variable(void) { + s32 thing; + s32 thing2; func_8006EB10(); clear_object_list(); bzero(playerHUD, HUD_PLAYERS_SIZE * sizeof(hud_player)); - D_8018CAE1 = 0; - D_8018CAE2 = 0; - D_8018CAF1 = 0; - D_8018CB65 = 0; - D_8018CB66 = 0; - D_8018CB75 = 0; - D_8018CBE9 = 0; - D_8018CBEA = 0; - D_8018CBF9 = 0; - D_8018CC6D = 0; - D_8018CC6E = 0; - D_8018CC7D = 0; - D_8018CAE0 = 0; - D_8018CB64 = 0; - D_8018CBE8 = 0; - D_8018CC6C = 0; - /** - playerHUD[PLAYER_ONE].lapCount = 0; - playerHUD[PLAYER_ONE].alsoLapCount = 0; - playerHUD[PLAYER_ONE].unk_81 = 0; - playerHUD[PLAYER_TWO].lapCount = 0; - playerHUD[PLAYER_TWO].alsoLapCount = 0; - playerHUD[PLAYER_TWO].unk_81 = 0; - playerHUD[PLAYER_THREE].lapCount = 0; - playerHUD[PLAYER_THREE].alsoLapCount = 0; - playerHUD[PLAYER_THREE].unk_81 = 0; - playerHUD[PLAYER_FOUR].lapCount = 0; - playerHUD[PLAYER_FOUR].alsoLapCount = 0; - playerHUD[PLAYER_FOUR].unk_81 = 0; - playerHUD[PLAYER_ONE].raceCompleteBool = 0; - playerHUD[PLAYER_TWO].raceCompleteBool = 0; - playerHUD[PLAYER_THREE].raceCompleteBool = 0; - playerHUD[PLAYER_FOUR].raceCompleteBool = 0; - - // This is close but it puts the raceCompletedBool stuff in the wrong place - // Which makes sense, but its still annoying for (thing = 0; thing < HUD_PLAYERS_SIZE; thing++) { playerHUD[thing].lapCount = 0; playerHUD[thing].alsoLapCount = 0; playerHUD[thing].unk_81 = 0; - // playerHUD[thing].raceCompleteBool = 0; } - // This loop works, but only if we re-enable loop unrolling for this file - for (thing = 0; thing < HUD_PLAYERS_SIZE; thing++) { - playerHUD[thing].raceCompleteBool = 0; + for (thing2 = 0; thing2 < HUD_PLAYERS_SIZE; thing2++) { + playerHUD[thing2].raceCompleteBool = 0; } - **/ } void func_8006EB10(void) { - s32 i = 0; + s32 i; for (i = 0; i < 128; i++) { D_8018C1B0[i] = -1; @@ -117,12 +81,8 @@ void func_8006EB10(void) { D_8018C870[i] = -1; } - for (i = 0; i < 64; i += 4) { - D_8018C970[i + 0] = -1; - D_8018C970[i + 1] = -1; - D_8018C970[i + 2] = -1; - D_8018C970[i + 3] = -1; - } + // Has to be on one line, because IDO hates you :) + for (i = 0; i < D_8018C970_SIZE; i++) { D_8018C970[i] = -1; } D_8018CFA8 = 0; D_8018CF90 = D_8018CFA8; @@ -1135,173 +1095,92 @@ void init_course_object(void) { } } -#ifdef MIPS_TO_C -//generated by m2c commit b52d92c2340f6f4ba1aafb464188bb698752fbb0 on Jul-28-2023 -? init_course_object(); /* extern */ -extern s32 D_80165638; -extern s32 D_80165648; -extern s16 D_801656B0; -extern s16 D_80165708; -extern s16 D_8016579E; -extern s16 D_801657A2; -extern s8 D_80165888; -extern s8 D_80165890; -extern s32 D_80183DA0; -extern s32 D_80183DBC; -extern f32 D_8018CFCC; -extern f32 D_8018CFD4; -extern f32 D_8018CFEC; -extern f32 D_8018CFF4; -extern f32 D_8018D00C; -extern ? D_8018D028; -extern ? D_8018D050; -extern ? D_8018D078; -extern ? D_8018D098; -extern ? D_8018D0A0; -extern ? D_8018D0C8; -extern ? D_8018D0F0; -extern s32 D_8018D150; -extern s32 D_8018D380; -extern s32 D_8018D384; -extern s32 D_8018D388; -extern s32 D_8018D3BC; -extern s32 D_8018D3C0; -extern s32 D_8018D3C4; -extern s32 D_8018D3D4; -extern s32 D_8018D3D8; -extern s32 D_8018D3DC; -extern s32 D_8018D3F0; -extern s32 D_8018D3F4; - void init_hud_one_player(void) { - ? *var_a0; - ? *var_a1; - ? *var_a2; - ? *var_a3; - ? *var_v0; - ? *var_v1; - f32 temp_f0; - f32 temp_f0_2; - f32 temp_f0_3; - f32 var_f0; + s32 someIndex; + f32 something; + // permuter magic + long long why; + s32 one = 1; D_8018D140 = 0; D_8018D150 = 0; D_8018CFCC = 1.0f; find_unused_obj_index(&D_80183DA0); - find_unused_obj_index(D_80183DB8); - find_unused_obj_index(&D_80183DBC); - find_unused_obj_index(gItemWindowObjectByPlayerId); - find_unused_obj_index(gItemWindowObjectByPlayerId + 4); + find_unused_obj_index(&D_80183DB8[0]); + find_unused_obj_index(&D_80183DB8[1]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[0]); + find_unused_obj_index(&gItemWindowObjectByPlayerId[1]); init_object_list_index(); func_8007055C(); func_8007055C(); init_course_object(); - playerHUD->speedometerX = 0x0156; - playerHUD->speedometerY = 0x0106; - D_8018CFEC = (f32) (playerHUD->speedometerX + 0x18); - D_8018CFF4 = (f32) (playerHUD->speedometerY + 6); + playerHUD[0].speedometerX = 0x0156; + playerHUD[0].speedometerY = 0x0106; + D_8018CFEC = playerHUD[0].speedometerX + 0x18; + D_8018CFF4 = playerHUD[0].speedometerY + 6; D_8016579E = 0xDD00; - playerHUD->rankX = 0x0034; - playerHUD->rankY = 0x00C8; - playerHUD->slideRankX = 0; - playerHUD->slideRankY = 0; - playerHUD->timerX = 0x012C; - playerHUD->lap1CompletionTimeX = 0x012C; - playerHUD->lap2CompletionTimeX = 0x012C; - playerHUD->timerY = 0x0011; - playerHUD->lapX = -0x0028; - playerHUD->lapAfterImage1X = -0x0028; - playerHUD->lapAfterImage2X = -0x0028; - playerHUD->lapY = 0x0019; - playerHUD->itemBoxX = 0x00A0; - playerHUD->itemBoxY = -0x0020; - playerHUD->slideItemBoxX = 0; - playerHUD->slideItemBoxY = 0; - playerHUD->stagingPosition = (s16) *gGPCurrentRaceRankByPlayerId; + playerHUD[0].rankX = 0x0034; + playerHUD[0].rankY = 0x00C8; + playerHUD[0].slideRankX = 0; + playerHUD[0].slideRankY = 0; + playerHUD[0].stagingPosition = gGPCurrentRaceRankByPlayerId[0]; + playerHUD[0].timerX = 0x012C; + playerHUD[0].lapCompletionTimeXs[0] = 0x012C; + playerHUD[0].lapCompletionTimeXs[1] = 0x012C; + playerHUD[0].timerY = 0x0011; + playerHUD[0].lapX = -0x0028; + playerHUD[0].lapAfterImage1X = -0x0028; + playerHUD[0].lapAfterImage2X = -0x0028; + playerHUD[0].lapY = 0x0019; + playerHUD[0].itemBoxX = 0x00A0; + playerHUD[0].itemBoxY = -0x0020; + playerHUD[0].slideItemBoxX = 0; + playerHUD[0].slideItemBoxY = 0; + // permuter magic + why = 0x000000A0; init_item_window(gItemWindowObjectByPlayerId[0]); - var_f0 = 35.0f; - var_v0 = &D_8018D078; - var_a3 = &D_8018D0A0; - var_a2 = &D_8018D0F0; - var_a1 = &D_8018D050; - var_a0 = &D_8018D028; - var_v1 = &D_8018D0C8; - do { - var_a1->unk0 = var_f0; - var_a2->unk0 = var_f0; - var_v0 += 0x10; - var_v1->unk4 = 40.0f; - temp_f0 = (f32) ((f64) var_f0 + 32.0); - var_a0->unk4 = -24.0f; - var_a3->unk4 = 0.0f; - var_v0->unk-C = 0.0f; - var_a1->unk4 = temp_f0; - var_a2->unk4 = temp_f0; - var_v1->unk8 = 40.0f; - var_a0->unk8 = -24.0f; - temp_f0_2 = (f32) ((f64) temp_f0 + 32.0); - var_a3->unk8 = 0.0f; - var_v0->unk-8 = 0.0f; - var_v1->unkC = 40.0f; - var_a1->unk8 = temp_f0_2; - var_a2->unk8 = temp_f0_2; - var_a0->unkC = -24.0f; - var_a3->unkC = 0.0f; - temp_f0_3 = (f32) ((f64) temp_f0_2 + 32.0); - var_v0->unk-4 = 0.0f; - var_v1 += 0x10; - var_a0 += 0x10; - var_a1->unkC = temp_f0_3; - var_a2->unkC = temp_f0_3; - var_a1 += 0x10; - var_a2 += 0x10; - var_f0 = (f32) ((f64) temp_f0_3 + 32.0); - var_a3 += 0x10; - var_v1->unk-10 = 40.0f; - var_a0->unk-10 = -24.0f; - var_a3->unk-10 = 0.0f; - var_v0->unk-10 = 0.0f; - } while (var_v0 != &D_8018D098); + for (someIndex = 0, something = 35.0f; someIndex < 8; someIndex++, something+= 32.0) { + D_8018D0C8[someIndex] = 40.0f; + D_8018D028[someIndex] = -24.0f; + D_8018D050[someIndex] = something; + D_8018D0F0[someIndex] = something; + D_8018D0A0[someIndex] = 0.0f; + D_8018D078[someIndex] = 0.0f; + } D_8018CFD4 = 1.0f; - D_8018D3DC = 0x000000FF; - D_8018D3D8 = 0x000000FF; - D_8018D3D4 = 0x000000FF; - D_8018D3E0 = 0x000000A0; + D_8018D3D4 = D_8018D3D8 = D_8018D3DC = 0x000000FF; + D_8018D3E0 = why; D_8018D3E4 = 0x000000FF; D_8018D3E8 = 0x000000FF; D_8018D3EC = 0x000000FF; D_8018D3F0 = 0x000000FF; - D_8018D3F4 = 1; - playerHUD->unk_4C = 0x0078; - playerHUD->unk_4A = 0x00A0; - playerHUD->rankScaling = 0.5f; + D_8018D3F4 = one; + playerHUD[0].unk_4C = 0x0078; + playerHUD[0].unk_4A = 0x00A0; + playerHUD[0].rankScaling = 0.5f; D_801656B0 = 0; D_80165708 = 0x0028; D_8018D00C = 5.0f; D_8018D388 = 4; - D_8018D380 = (s32) 0x00A0; - D_8018D384 = (s32) 0x0078; + D_8018D380 = 0x00A0; + D_8018D384 = 0x0078; D_8018D3C4 = 0x00000032; - D_8018D3BC = (s32) 0x0028; + D_8018D3BC = 0x0028; D_8018D3C0 = 0x00000050; D_801657A2 = 0x0333; switch (gModeSelection) { /* irregular */ case 0: D_8018D158 = 8; - return; + break; case 1: - D_80165638 = (func_800B4F2C(0, 40.0f, &D_8018D3DC, 1, 0x0078, 0x0028) & 0xFFFFF) - 1; + D_80165638 = (func_800B4F2C() & 0xFFFFF) - 1; D_80165648 = func_800B4E24(0) & 0xFFFFF; D_80165888 = 1; D_80165890 = 1; - D_8018D158 = (s32) 1; - return; + D_8018D158 = 1; + break; } } -#else -GLOBAL_ASM("asm/non_matchings/code_8006E9C0/init_hud_one_player.s") -#endif void init_hud_two_player_vertical(void) { find_unused_obj_index(&D_80183DA0); diff --git a/src/code_8006E9C0.h b/src/code_8006E9C0.h index f765a13f1..688127e4f 100644 --- a/src/code_8006E9C0.h +++ b/src/code_8006E9C0.h @@ -67,24 +67,6 @@ extern s32 D_80183DA0; extern s32 D_80183DBC; extern hud_player playerHUD[]; // 8018CA70 - 8018CC70 -// These are all *technically* hardcoded references to spots in playerHUD, but there's something weird -// going on match wise in reset_object_variable that means we have to (for now) leave them as separate variables -extern s8 D_8018CAE0; -extern s8 D_8018CAE1; -extern s8 D_8018CAE2; -extern s8 D_8018CAF1; -extern s8 D_8018CB64; -extern s8 D_8018CB65; -extern s8 D_8018CB66; -extern s8 D_8018CB75; -extern s8 D_8018CBE8; -extern s8 D_8018CBE9; -extern s8 D_8018CBEA; -extern s8 D_8018CBF9; -extern s8 D_8018CC6C; -extern s8 D_8018CC6D; -extern s8 D_8018CC6E; -extern s8 D_8018CC7D; extern s16 D_8018CF18; extern s16 D_8018CF20; diff --git a/tools/doxygen_syms.md b/tools/doxygen_syms.md index c1a8e3515..9fb869aae 100644 --- a/tools/doxygen_syms.md +++ b/tools/doxygen_syms.md @@ -4563,22 +4563,6 @@ Variable Name | Memory Address [playerHUD](@ref playerHUD) | 0x8018CA70 [D_8018CA74](@ref D_8018CA74) | 0x8018CA74 [D_8018CA78](@ref D_8018CA78) | 0x8018CA78 -[D_8018CAE0](@ref D_8018CAE0) | 0x8018CAE0 -[D_8018CAE1](@ref D_8018CAE1) | 0x8018CAE1 -[D_8018CAE2](@ref D_8018CAE2) | 0x8018CAE2 -[D_8018CAF1](@ref D_8018CAF1) | 0x8018CAF1 -[D_8018CB64](@ref D_8018CB64) | 0x8018CB64 -[D_8018CB65](@ref D_8018CB65) | 0x8018CB65 -[D_8018CB66](@ref D_8018CB66) | 0x8018CB66 -[D_8018CB75](@ref D_8018CB75) | 0x8018CB75 -[D_8018CBE8](@ref D_8018CBE8) | 0x8018CBE8 -[D_8018CBE9](@ref D_8018CBE9) | 0x8018CBE9 -[D_8018CBEA](@ref D_8018CBEA) | 0x8018CBEA -[D_8018CBF9](@ref D_8018CBF9) | 0x8018CBF9 -[D_8018CC6C](@ref D_8018CC6C) | 0x8018CC6C -[D_8018CC6D](@ref D_8018CC6D) | 0x8018CC6D -[D_8018CC6E](@ref D_8018CC6E) | 0x8018CC6E -[D_8018CC7D](@ref D_8018CC7D) | 0x8018CC7D [D_8018CC80](@ref D_8018CC80) | 0x8018CC80 [D_8018CE10](@ref D_8018CE10) | 0x8018CE10 [D_8018CF10](@ref D_8018CF10) | 0x8018CF10