Turn loop unrolling back on for code_8006E9C0 (#523)

Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
Tyler McGavran 2023-12-31 21:04:30 -05:00 committed by GitHub
parent c2c00db97d
commit 2727a5e5dd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 76 additions and 529 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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[];

View File

@ -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

View File

@ -12,6 +12,7 @@
#include "objects.h"
#include "bomb_kart.h"
#include "variables.h"
#include "save.h"
#include "common_textures.h"
#include <sounds.h>
#include <functions.h>
@ -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);

View File

@ -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;

View File

@ -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