Match the BSS segment for code_80005FD0 (#516)

Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
Tyler McGavran 2023-12-28 23:39:35 -05:00 committed by GitHub
parent c187c71bb9
commit c89b4f6fe7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 380 additions and 855 deletions

View File

@ -1,296 +0,0 @@
.include "macros.inc"
.section .bss
#glabel D_80162E70
#.skip 64
#glabel D_80162EB0
#.skip 2
#glabel D_80162EB2
#.skip 6
#glabel D_80162EB8
#.skip 80
#glabel D_80162F08 # fake ptr
#.skip 8
glabel D_80162F10
.skip 64
glabel D_80162F50
.skip 60
glabel D_80162F8C
.skip 20
glabel D_80162FA0
.skip 8
glabel D_80162FA8 # fake var?
.skip 8
glabel D_80162FB0
.skip 16
glabel D_80162FC0
.skip 12
glabel D_80162FCC
.skip 2
glabel D_80162FCE
.skip 2
glabel D_80162FD0
.skip 8
glabel gCourseCompletionPercentByRank
.skip 32
glabel D_80162FF8
.skip 24
glabel D_80163010
.skip 24
glabel D_80163028
.skip 40
glabel D_80163050
.skip 24
glabel D_80163068
.skip 40
glabel D_80163090
.skip 40
glabel D_801630B8
.skip 40
glabel D_801630E0
.skip 2
glabel D_801630E2
.skip 6
glabel D_801630E8
.skip 20
glabel D_801630FC
.skip 4
glabel D_80163100
.skip 40
glabel D_80163128
.skip 40
glabel D_80163150
.skip 40
glabel D_80163178
.skip 40
glabel D_801631A0
.skip 40
glabel D_801631C8
.skip 4
glabel D_801631CC
.skip 4
glabel D_801631D0
.skip 4
glabel D_801631D4
.skip 4
glabel D_801631D8
.skip 4
glabel D_801631DC
.skip 4
glabel D_801631E0
.skip 24
glabel D_801631F8
.skip 20
glabel D_8016320C
.skip 4
glabel D_80163210
.skip 40
glabel D_80163238
.skip 8
glabel D_80163240
.skip 24
glabel D_80163258
.skip 24
glabel D_80163270
.skip 24
glabel D_80163288
.skip 40
glabel D_801632B0
.skip 8
glabel D_801632B8
.skip 24
glabel D_801632D0
.skip 24
glabel D_801632E8
.skip 24
glabel D_80163300
.skip 24
glabel D_80163318
.skip 24
glabel D_80163330
.skip 16
glabel D_80163340
.skip 4
glabel D_80163344
.skip 2
glabel D_80163346
.skip 2
glabel D_80163348
.skip 4
glabel D_8016334C
.skip 4
glabel D_80163350
.skip 24
glabel D_80163368
.skip 16
glabel D_80163378
.skip 4
glabel D_8016337C
.skip 4
glabel D_80163380
.skip 24
glabel D_80163398
.skip 24
glabel D_801633B0
.skip 24
glabel D_801633C8
.skip 24
glabel D_801633E0
.skip 24
glabel D_801633F8
.skip 24
glabel D_80163410
.skip 8
glabel D_80163418
.skip 16
glabel D_80163428
.skip 16
glabel D_80163438
.skip 16
glabel D_80163448
.skip 2
# D_8016344A is fake, its just the lower half-word of D_80163448
glabel D_8016344A
.skip 2
glabel D_8016344C
.skip 4
glabel D_80163450
.skip 40
glabel D_80163478
.skip 2
glabel D_8016347A
.skip 2
glabel D_8016347C
.skip 2
glabel D_8016347E
.skip 2
glabel D_80163480
.skip 4
glabel D_80163484
.skip 4
glabel D_80163488
.skip 4
glabel D_8016348C
.skip 4
glabel D_80163490
.skip 24
glabel D_801634A8
.skip 24
glabel D_801634C0
.skip 24
glabel D_801634D8
.skip 20
glabel D_801634EC
.skip 4
glabel D_801634F0
.skip 4
glabel D_801634F4
.skip 4
glabel D_801634F8 # array ptrs below may be fake
.skip 4
glabel D_801634FC
.skip 8
glabel D_80163504
.skip 148
glabel D_80163598
.skip 4
glabel D_8016359C
.skip 4

View File

@ -1,321 +0,0 @@
.include "macros.inc"
.section .bss
glabel sTrains
.skip 536
glabel isCrossingTriggeredByIndex # Crossing activated boolean
.skip 4
glabel D_801637BC # CrossingTimer
.skip 2
glabel D_801637BE
.skip 2
glabel gFerries
.skip 4
glabel D_801637C4
.skip 4
glabel D_801637C8
.skip 32
glabel D_801637E8
.skip 4
glabel D_801637EC
.skip 4
glabel D_801637F0
.skip 36
glabel D_80163814
.skip 4
glabel gBoxTruckList
.skip 364
glabel D_80163984
.skip 4
glabel gSchoolBusList
.skip 364
glabel D_80163AF4
.skip 4
glabel gTankerTruckList
.skip 364
glabel D_80163C64
.skip 4
glabel gCarList
.skip 364
glabel D_80163DD4
.skip 4
glabel D_80163DD8
.skip 12
glabel D_80163DE4
.skip 4
glabel gBombKarts
.skip 588
glabel D_80164034
.skip 4
# Seemingly an array of UnkActorInner, related to the VS mode Bomb Karts
# D_80164038 should be of size 448 (0x40 * 7)
# D_801640F4 is a fake variable
glabel D_80164038
.skip 188
glabel D_801640F4
.skip 260
# end D_80164038
glabel gUnexpiredActorsList
.skip 224
glabel D_801642D8
.skip 6
glabel D_801642DE
.skip 122
glabel D_80164358
.skip 2
glabel D_8016435A
.skip 2
glabel D_8016435C
.skip 4
glabel gGPCurrentRacePlayerIdByRank
.skip 8
glabel D_80164368
.skip 8
glabel D_80164370
.skip 6
glabel D_80164376
.skip 2
glabel D_80164378
.skip 14
glabel D_80164386
.skip 10
# List of s32's, seemingly indexed by player ID
# Indicates the number of completed laps for that player
glabel gLapCountByPlayerId
.skip 2
glabel D_80164392
.skip 2
glabel D_80164394
.skip 4
glabel D_80164398
.skip 4
glabel D_8016439C
.skip 20
glabel D_801643B0
.skip 8
glabel gGPCurrentRaceRankByPlayerId
.skip 2
glabel D_801643BA
.skip 30
glabel D_801643D8
.skip 8
glabel D_801643E0
.skip 40
glabel D_80164408
.skip 2
glabel D_8016440A
.skip 2
glabel D_8016440C
.skip 36
glabel D_80164430
.skip 8
glabel gNearestWaypointByPlayerId
.skip 6
glabel D_8016443E
.skip 10
glabel D_80164448
.skip 8
glabel D_80164450
.skip 40
glabel D_80164478
.skip 20
glabel D_8016448C
.skip 4
glabel D_80164490
.skip 8
glabel D_80164498
.skip 16
glabel gLapCompletionPercentByPlayerId
.skip 40
glabel gCourseCompletionPercentByPlayerId
.skip 40
glabel D_801644F8
.skip 24
glabel D_80164510
.skip 28
glabel D_8016452C
.skip 12
glabel D_80164538
.skip 24
glabel D_80164550
.skip 12
glabel D_8016455C
.skip 4
glabel D_80164560
.skip 16
glabel D_80164570
.skip 16
glabel D_80164580
.skip 16
glabel D_80164590
.skip 16
glabel D_801645A0
.skip 16
glabel gPathIndexByPlayerId
.skip 24
glabel gWaypointCountByPathIndex
.skip 6
glabel D_801645CE
.skip 2
glabel D_801645D0
.skip 16
glabel D_801645E0
.skip 8
glabel D_801645E8
.skip 16
glabel D_801645F8
.skip 16
glabel D_80164608
.skip 16
glabel D_80164618
.skip 16
glabel D_80164628
.skip 16
glabel D_80164638
.skip 16
glabel D_80164648
.skip 16
glabel D_80164658
.skip 16
glabel gNearestWaypointByCameraId # size 4
.skip 8
glabel D_80164670
.skip 2
glabel D_80164672
.skip 2
glabel D_80164674
.skip 2
glabel D_80164676
.skip 2
glabel D_80164678
.skip 2
glabel D_8016467A
.skip 2
glabel D_8016467C
.skip 2
glabel D_8016467E
.skip 2
glabel D_80164680
.skip 2
glabel D_80164682
.skip 6
glabel D_80164688
.skip 16
glabel D_80164698
.skip 4
glabel D_8016469C
.skip 4
glabel D_801646A0
.skip 32
glabel D_801646C0
.skip 8
glabel D_801646C8
.skip 4
glabel D_801646CC
.skip 4
glabel D_801646D0
.skip 32

View File

@ -414,8 +414,8 @@ glabel func_800074D4
.L80007ABC:
/* 0086BC 80007ABC 3C028016 */ lui $v0, %hi(D_801643E0) # $v0, 0x8016
/* 0086C0 80007AC0 3C038016 */ lui $v1, %hi(gGPCurrentRaceRankByPlayerId) # $v1, 0x8016
/* 0086C4 80007AC4 3C048016 */ lui $a0, %hi(D_801643D8) # $a0, 0x8016
/* 0086C8 80007AC8 248443D8 */ addiu $a0, %lo(D_801643D8) # addiu $a0, $a0, 0x43d8
/* 0086C4 80007AC4 3C048016 */ lui $a0, %hi(gGPCurrentRaceRankByPlayerId + 0x20) # $a0, 0x8016
/* 0086C8 80007AC8 248443D8 */ addiu $a0, %lo(gGPCurrentRaceRankByPlayerId + 0x20) # addiu $a0, $a0, 0x43d8
/* 0086CC 80007ACC 246343B8 */ addiu $v1, %lo(gGPCurrentRaceRankByPlayerId) # addiu $v1, $v1, 0x43b8
/* 0086D0 80007AD0 244243E0 */ addiu $v0, %lo(D_801643E0) # addiu $v0, $v0, 0x43e0
/* 0086D4 80007AD4 24070001 */ li $a3, 1

View File

@ -144,15 +144,15 @@ glabel func_80008424
/* 009210 80008610 3C028016 */ lui $v0, %hi(D_80163350) # 0x8016
/* 009214 80008614 95AD3330 */ lhu $t5, %lo(D_80163330)($t5) # 0x3330($t5)
/* 009218 80008618 8FA40038 */ lw $a0, 0x38($sp)
/* 00921C 8000861C 3C058016 */ lui $a1, %hi(D_80164392) # 0x8016
/* 00921C 8000861C 3C058016 */ lui $a1, %hi(gLapCountByPlayerId + 0x2) # 0x8016
/* 009220 80008620 510D001F */ beql $t0, $t5, .L800086A0
/* 009224 80008624 00461021 */ addu $v0, $v0, $a2
/* 009228 80008628 00041080 */ sll $v0, $a0, 2
/* 00922C 8000862C 3C068016 */ lui $a2, %hi(D_8016440A) # 0x8016
/* 00922C 8000862C 3C068016 */ lui $a2, %hi(D_80164408 + 0x2) # 0x8016
/* 009230 80008630 00C23021 */ addu $a2, $a2, $v0
/* 009234 80008634 00A22821 */ addu $a1, $a1, $v0
/* 009238 80008638 84A54392 */ lh $a1, %lo(D_80164392)($a1) # 0x4392($a1)
/* 00923C 8000863C 84C6440A */ lh $a2, %lo(D_8016440A)($a2) # 0x440a($a2)
/* 009238 80008638 84A54392 */ lh $a1, %lo(gLapCountByPlayerId + 0x2)($a1) # 0x4392($a1)
/* 00923C 8000863C 84C6440A */ lh $a2, %lo(D_80164408 + 0x2)($a2) # 0x440a($a2)
/* 009240 80008640 0C002236 */ jal func_800088D8
/* 009244 80008644 AFA70040 */ sw $a3, 0x40($sp)
/* 009248 80008648 24080001 */ li $t0, 1
@ -270,7 +270,7 @@ glabel func_80008424
.L800087E8:
/* 0093E8 800087E8 95CE3330 */ lhu $t6, %lo(D_80163330)($t6) # 0x3330($t6)
/* 0093EC 800087EC 8FA40038 */ lw $a0, 0x38($sp)
/* 0093F0 800087F0 3C058016 */ lui $a1, %hi(D_80164392) # 0x8016
/* 0093F0 800087F0 3C058016 */ lui $a1, %hi(gLapCountByPlayerId + 0x2) # 0x8016
/* 0093F4 800087F4 150E0006 */ bne $t0, $t6, .L80008810
/* 0093F8 800087F8 00041080 */ sll $v0, $a0, 2
/* 0093FC 800087FC 8FA40038 */ lw $a0, 0x38($sp)
@ -279,11 +279,11 @@ glabel func_80008424
/* 009408 80008808 10000030 */ b .L800088CC
/* 00940C 8000880C 8FBF0014 */ lw $ra, 0x14($sp)
.L80008810:
/* 009410 80008810 3C068016 */ lui $a2, %hi(D_8016440A) # 0x8016
/* 009410 80008810 3C068016 */ lui $a2, %hi(D_80164408 + 0x2) # 0x8016
/* 009414 80008814 00C23021 */ addu $a2, $a2, $v0
/* 009418 80008818 00A22821 */ addu $a1, $a1, $v0
/* 00941C 8000881C 84A54392 */ lh $a1, %lo(D_80164392)($a1) # 0x4392($a1)
/* 009420 80008820 84C6440A */ lh $a2, %lo(D_8016440A)($a2) # 0x440a($a2)
/* 00941C 8000881C 84A54392 */ lh $a1, %lo(gLapCountByPlayerId + 0x2)($a1) # 0x4392($a1)
/* 009420 80008820 84C6440A */ lh $a2, %lo(D_80164408 + 0x2)($a2) # 0x440a($a2)
/* 009424 80008824 0C002236 */ jal func_800088D8
/* 009428 80008828 AFA70040 */ sw $a3, 0x40($sp)
/* 00942C 8000882C 24080001 */ li $t0, 1

View File

@ -73,8 +73,8 @@ glabel func_800088D8
/* 0095E0 800089E0 24844450 */ addiu $a0, %lo(D_80164450) # addiu $a0, $a0, 0x4450
/* 0095E4 800089E4 146E003A */ bne $v1, $t6, .L80008AD0
/* 0095E8 800089E8 0088C021 */ addu $t8, $a0, $t0
/* 0095EC 800089EC 3C188016 */ lui $t8, %hi(D_80164386) # $t8, 0x8016
/* 0095F0 800089F0 87184386 */ lh $t8, %lo(D_80164386)($t8)
/* 0095EC 800089EC 3C188016 */ lui $t8, %hi(D_80164378 + 0xE) # $t8, 0x8016
/* 0095F0 800089F0 87184386 */ lh $t8, %lo(D_80164378 + 0xE)($t8)
/* 0095F4 800089F4 3C048016 */ lui $a0, %hi(D_80164450) # $a0, 0x8016
/* 0095F8 800089F8 24844450 */ addiu $a0, %lo(D_80164450) # addiu $a0, $a0, 0x4450
/* 0095FC 800089FC 0018C880 */ sll $t9, $t8, 2
@ -142,7 +142,7 @@ glabel func_800088D8
/* 0096E4 80008AE4 0301001A */ div $zero, $t8, $at
/* 0096E8 80008AE8 3C0B8016 */ lui $t3, %hi(D_80163478) # $t3, 0x8016
/* 0096EC 80008AEC 856B3478 */ lh $t3, %lo(D_80163478)($t3)
/* 0096F0 80008AF0 3C0D8016 */ lui $t5, %hi(D_801643BA) # 0x8016
/* 0096F0 80008AF0 3C0D8016 */ lui $t5, %hi(gGPCurrentRaceRankByPlayerId + 0x2) # 0x8016
/* 0096F4 80008AF4 000BC880 */ sll $t9, $t3, 2
/* 0096F8 80008AF8 00997021 */ addu $t6, $a0, $t9
/* 0096FC 80008AFC 85C30002 */ lh $v1, 2($t6)
@ -151,13 +151,13 @@ glabel func_800088D8
/* 009708 80008B08 00432823 */ subu $a1, $v0, $v1
/* 00970C 80008B0C 0325082A */ slt $at, $t9, $a1
/* 009710 80008B10 1020000B */ beqz $at, .L80008B40
/* 009714 80008B14 85AD43BA */ lh $t5, %lo(D_801643BA)($t5) # 0x43ba($t5)
/* 009714 80008B14 85AD43BA */ lh $t5, %lo(gGPCurrentRaceRankByPlayerId + 0x2)($t5) # 0x43ba($t5)
/* 009718 80008B18 29A10006 */ slti $at, $t5, 6
/* 00971C 80008B1C 14200008 */ bnez $at, .L80008B40
/* 009720 80008B20 000D7040 */ sll $t6, $t5, 1
/* 009724 80008B24 3C0F8016 */ lui $t7, %hi(D_80164376) # 0x8016
/* 009724 80008B24 3C0F8016 */ lui $t7, %hi(gLapCountByPlayerId - 0x1A) # 0x8016
/* 009728 80008B28 01EE7821 */ addu $t7, $t7, $t6
/* 00972C 80008B2C 85EF4376 */ lh $t7, %lo(D_80164376)($t7) # 0x4376($t7)
/* 00972C 80008B2C 85EF4376 */ lh $t7, %lo(gLapCountByPlayerId - 0x1A)($t7) # 0x4376($t7)
/* 009730 80008B30 000FC080 */ sll $t8, $t7, 2
/* 009734 80008B34 0098C821 */ addu $t9, $a0, $t8
/* 009738 80008B38 87230002 */ lh $v1, 2($t9)

View File

@ -209,8 +209,8 @@ glabel func_8000929C
/* 00A188 80009588 3C028016 */ lui $v0, %hi(gLapCountByPlayerId) # $v0, 0x8016
/* 00A18C 8000958C 15810011 */ bne $t4, $at, .L800095D4
/* 00A190 80009590 24424390 */ addiu $v0, %lo(gLapCountByPlayerId) # addiu $v0, $v0, 0x4390
/* 00A194 80009594 3C038016 */ lui $v1, %hi(D_801643B0) # $v1, 0x8016
/* 00A198 80009598 246343B0 */ addiu $v1, %lo(D_801643B0) # addiu $v1, $v1, 0x43b0
/* 00A194 80009594 3C038016 */ lui $v1, %hi(gLapCountByPlayerId + 0x20) # $v1, 0x8016
/* 00A198 80009598 246343B0 */ addiu $v1, %lo(gLapCountByPlayerId + 0x20) # addiu $v1, $v1, 0x43b0
.L8000959C:
/* 00A19C 8000959C 8C4D0000 */ lw $t5, ($v0)
/* 00A1A0 800095A0 8C4F0004 */ lw $t7, 4($v0)
@ -240,13 +240,13 @@ glabel func_8000929C
/* 00A1F8 800095F8 8FA40050 */ lw $a0, 0x50($sp)
/* 00A1FC 800095FC 3C0F8016 */ lui $t7, %hi(D_8016348C) # $t7, 0x8016
/* 00A200 80009600 85EF348C */ lh $t7, %lo(D_8016348C)($t7)
/* 00A204 80009604 3C018016 */ lui $at, %hi(D_801642DE) # 0x8016
/* 00A204 80009604 3C018016 */ lui $at, %hi(D_801642D8 + 0x6) # 0x8016
/* 00A208 80009608 00047100 */ sll $t6, $a0, 4
/* 00A20C 8000960C 002E0821 */ addu $at, $at, $t6
/* 00A210 80009610 8FA70030 */ lw $a3, 0x30($sp)
/* 00A214 80009614 87A80034 */ lh $t0, 0x34($sp)
/* 00A218 80009618 15E00012 */ bnez $t7, .L80009664
/* 00A21C 8000961C A42042DE */ sh $zero, %lo(D_801642DE)($at) # 0x42de($at)
/* 00A21C 8000961C A42042DE */ sh $zero, %lo(D_801642D8 + 0x6)($at) # 0x42de($at)
/* 00A220 80009620 8FB80054 */ lw $t8, 0x54($sp)
/* 00A224 80009624 8FA50038 */ lw $a1, 0x38($sp)
/* 00A228 80009628 8FA60044 */ lw $a2, 0x44($sp)
@ -343,8 +343,8 @@ glabel func_8000929C
/* 00A37C 8000977C 00000000 */ nop
/* 00A380 80009780 1480000C */ bnez $a0, .L800097B4
/* 00A384 80009784 3C0F8016 */ lui $t7, %hi(D_80164408) # $t7, 0x8016
/* 00A388 80009788 3C188016 */ lui $t8, %hi(D_8016440C) # $t8, 0x8016
/* 00A38C 8000978C 8F18440C */ lw $t8, %lo(D_8016440C)($t8)
/* 00A388 80009788 3C188016 */ lui $t8, %hi(D_80164408 + 0x4) # $t8, 0x8016
/* 00A38C 8000978C 8F18440C */ lw $t8, %lo(D_80164408 + 0x4)($t8)
/* 00A390 80009790 8DEF4408 */ lw $t7, %lo(D_80164408)($t7)
/* 00A394 80009794 24190001 */ li $t9, 1
/* 00A398 80009798 01F8082A */ slt $at, $t7, $t8

View File

@ -317,16 +317,16 @@ glabel func_80009B60
/* 00AB94 80009F94 8FAA00D0 */ lw $t2, 0xd0($sp)
/* 00AB98 80009F98 44808000 */ mtc1 $zero, $f16
/* 00AB9C 80009F9C 000A5900 */ sll $t3, $t2, 4
/* 00ABA0 80009FA0 3C018016 */ lui $at, %hi(D_801634FC)
/* 00ABA0 80009FA0 3C018016 */ lui $at, %hi(D_801634F8 + 4)
/* 00ABA4 80009FA4 002B0821 */ addu $at, $at, $t3
/* 00ABA8 80009FA8 E43034FC */ swc1 $f16, %lo(D_801634FC)($at)
/* 00ABA8 80009FA8 E43034FC */ swc1 $f16, %lo(D_801634F8 + 4)($at)
.L80009FAC:
/* 00ABAC 80009FAC 8FAE00D0 */ lw $t6, 0xd0($sp)
/* 00ABB0 80009FB0 44809000 */ mtc1 $zero, $f18
/* 00ABB4 80009FB4 3C018016 */ lui $at, %hi(D_80163504)
/* 00ABB4 80009FB4 3C018016 */ lui $at, %hi(D_801634F8 + 12)
/* 00ABB8 80009FB8 000E7900 */ sll $t7, $t6, 4
/* 00ABBC 80009FBC 002F0821 */ addu $at, $at, $t7
/* 00ABC0 80009FC0 E4323504 */ swc1 $f18, %lo(D_80163504)($at)
/* 00ABC0 80009FC0 E4323504 */ swc1 $f18, %lo(D_801634F8 + 12)($at)
.L80009FC4:
/* 00ABC4 80009FC4 3C028016 */ lui $v0, %hi(D_80163448) # $v0, 0x8016
/* 00ABC8 80009FC8 8C423448 */ lw $v0, %lo(D_80163448)($v0)
@ -410,10 +410,10 @@ glabel func_80009B60
/* 00ACEC 8000A0EC 00602025 */ move $a0, $v1
.L8000A0F0:
/* 00ACF0 8000A0F0 44803000 */ mtc1 $zero, $f6
/* 00ACF4 8000A0F4 3C018016 */ lui $at, %hi(D_801634FC)
/* 00ACF4 8000A0F4 3C018016 */ lui $at, %hi(D_801634F8 + 4)
/* 00ACF8 8000A0F8 00390821 */ addu $at, $at, $t9
/* 00ACFC 8000A0FC 1000000D */ b .L8000A134
/* 00AD00 8000A100 E42634FC */ swc1 $f6, %lo(D_801634FC)($at)
/* 00AD00 8000A100 E42634FC */ swc1 $f6, %lo(D_801634F8 + 4)($at)
.L8000A104:
/* 00AD04 8000A104 0C005243 */ jal func_8001490C
/* 00AD08 8000A108 AFA5002C */ sw $a1, 0x2c($sp)
@ -637,11 +637,11 @@ glabel func_80009B60
/* 00B050 8000A450 00002010 */ mfhi $a0
/* 00B054 8000A454 3C058016 */ lui $a1, %hi(D_80163090) # 0x8016
/* 00B058 8000A458 308AFFFF */ andi $t2, $a0, 0xffff
/* 00B05C 8000A45C 3C068016 */ lui $a2, %hi(D_8016344A) # $a2, 0x8016
/* 00B05C 8000A45C 3C068016 */ lui $a2, %hi(D_80163448 + 2) # $a2, 0x8016
/* 00B060 8000A460 00B92821 */ addu $a1, $a1, $t9
/* 00B064 8000A464 01402025 */ move $a0, $t2
/* 00B068 8000A468 8CA53090 */ lw $a1, %lo(D_80163090)($a1) # 0x3090($a1)
/* 00B06C 8000A46C 84C6344A */ lh $a2, %lo(D_8016344A)($a2)
/* 00B06C 8000A46C 84C6344A */ lh $a2, %lo(D_80163448 + 2)($a2)
/* 00B070 8000A470 0C002EF6 */ jal func_8000BBD8
/* 00B074 8000A474 AFA8003C */ sw $t0, 0x3c($sp)
/* 00B078 8000A478 3C078016 */ lui $a3, %hi(D_80162FA0) # $a3, 0x8016
@ -984,9 +984,9 @@ glabel func_80009B60
/* 00B538 8000A938 27183068 */ addiu $t8, %lo(D_80163068) # addiu $t8, $t8, 0x3068
/* 00B53C 8000A93C 308CFFFF */ andi $t4, $a0, 0xffff
/* 00B540 8000A940 01384021 */ addu $t0, $t1, $t8
/* 00B544 8000A944 3C068016 */ lui $a2, %hi(D_8016344A) # $a2, 0x8016
/* 00B544 8000A944 3C068016 */ lui $a2, %hi(D_80163448 + 2) # $a2, 0x8016
/* 00B548 8000A948 01802025 */ move $a0, $t4
/* 00B54C 8000A94C 84C6344A */ lh $a2, %lo(D_8016344A)($a2)
/* 00B54C 8000A94C 84C6344A */ lh $a2, %lo(D_80163448 + 2)($a2)
/* 00B550 8000A950 8D050000 */ lw $a1, ($t0)
/* 00B554 8000A954 AFA80020 */ sw $t0, 0x20($sp)
/* 00B558 8000A958 0C002EF6 */ jal func_8000BBD8
@ -1029,9 +1029,9 @@ glabel func_80009B60
.L8000A9E4:
/* 00B5E4 8000A9E4 00002010 */ mfhi $a0
/* 00B5E8 8000A9E8 308BFFFF */ andi $t3, $a0, 0xffff
/* 00B5EC 8000A9EC 3C068016 */ lui $a2, %hi(D_8016344A) # $a2, 0x8016
/* 00B5EC 8000A9EC 3C068016 */ lui $a2, %hi(D_80163448 + 2) # $a2, 0x8016
/* 00B5F0 8000A9F0 01602025 */ move $a0, $t3
/* 00B5F4 8000A9F4 84C6344A */ lh $a2, %lo(D_8016344A)($a2)
/* 00B5F4 8000A9F4 84C6344A */ lh $a2, %lo(D_80163448 + 2)($a2)
/* 00B5F8 8000A9F8 0C002EF6 */ jal func_8000BBD8
/* 00B5FC 8000A9FC 34A53333 */ ori $a1, (0xBF333333 & 0xFFFF) # ori $a1, $a1, 0x3333
.L8000AA00:
@ -1073,9 +1073,9 @@ glabel func_80009B60
/* 00B684 8000AA84 00002010 */ mfhi $a0
/* 00B688 8000AA88 308CFFFF */ andi $t4, $a0, 0xffff
/* 00B68C 8000AA8C 00B82821 */ addu $a1, $a1, $t8
/* 00B690 8000AA90 3C068016 */ lui $a2, %hi(D_8016344A) # $a2, 0x8016
/* 00B690 8000AA90 3C068016 */ lui $a2, %hi(D_80163448 + 2) # $a2, 0x8016
/* 00B694 8000AA94 01802025 */ move $a0, $t4
/* 00B698 8000AA98 84C6344A */ lh $a2, %lo(D_8016344A)($a2)
/* 00B698 8000AA98 84C6344A */ lh $a2, %lo(D_80163448 + 2)($a2)
/* 00B69C 8000AA9C 0C002EF6 */ jal func_8000BBD8
/* 00B6A0 8000AAA0 8CA53090 */ lw $a1, %lo(D_80163090)($a1) # 0x3090($a1)
.L8000AAA4:

View File

@ -100,7 +100,7 @@ glabel func_8000BBD8
/* 00C958 8000BD58 46045200 */ add.s $f8, $f10, $f4
/* 00C95C 8000BD5C E4262FA0 */ swc1 $f6, %lo(D_80162FA0)($at)
/* 00C960 8000BD60 C7A40010 */ lwc1 $f4, 0x10($sp)
/* 00C964 8000BD64 3C018016 */ lui $at, %hi(D_80162FA8)
/* 00C964 8000BD64 3C018016 */ lui $at, %hi(D_80162FA0 + 8)
/* 00C968 8000BD68 46086182 */ mul.s $f6, $f12, $f8
/* 00C96C 8000BD6C 46048200 */ add.s $f8, $f16, $f4
/* 00C970 8000BD70 27BD0028 */ addiu $sp, $sp, 0x28
@ -111,4 +111,4 @@ glabel func_8000BBD8
/* 00C984 8000BD84 46023102 */ mul.s $f4, $f6, $f2
/* 00C988 8000BD88 460A2200 */ add.s $f8, $f4, $f10
/* 00C98C 8000BD8C 03E00008 */ jr $ra
/* 00C990 8000BD90 E4282FA8 */ swc1 $f8, %lo(D_80162FA8)($at)
/* 00C990 8000BD90 E4282FA8 */ swc1 $f8, %lo(D_80162FA0 + 8)($at)

View File

@ -479,10 +479,10 @@ glabel L8000E618
glabel L8000E634
/* 00F234 8000E634 3C0F8016 */ lui $t7, %hi(D_8016347C) # $t7, 0x8016
/* 00F238 8000E638 85EF347C */ lh $t7, %lo(D_8016347C)($t7)
/* 00F23C 8000E63C 3C198016 */ lui $t9, %hi(D_8016443E) # $t9, 0x8016
/* 00F23C 8000E63C 3C198016 */ lui $t9, %hi(gNearestWaypointByPlayerId + 0x6) # $t9, 0x8016
/* 00F240 8000E640 11E00007 */ beqz $t7, .L8000E660
/* 00F244 8000E644 00000000 */ nop
/* 00F248 8000E648 9739443E */ lhu $t9, %lo(D_8016443E)($t9)
/* 00F248 8000E648 9739443E */ lhu $t9, %lo(gNearestWaypointByPlayerId + 0x6)($t9)
/* 00F24C 8000E64C 87A700CA */ lh $a3, 0xca($sp)
/* 00F250 8000E650 240B0003 */ li $t3, 3
/* 00F254 8000E654 2B210005 */ slti $at, $t9, 5
@ -501,8 +501,8 @@ glabel L8000E634
/* 00F280 8000E680 00401825 */ move $v1, $v0
/* 00F284 8000E684 04800006 */ bltz $a0, .L8000E6A0
/* 00F288 8000E688 A7A200CA */ sh $v0, 0xca($sp)
/* 00F28C 8000E68C 3C0A8016 */ lui $t2, %hi(D_801645CE) # $t2, 0x8016
/* 00F290 8000E690 954A45CE */ lhu $t2, %lo(D_801645CE)($t2)
/* 00F28C 8000E68C 3C0A8016 */ lui $t2, %hi(gWaypointCountByPathIndex + 0x6) # $t2, 0x8016
/* 00F290 8000E690 954A45CE */ lhu $t2, %lo(gWaypointCountByPathIndex + 0x6)($t2)
/* 00F294 8000E694 0144082A */ slt $at, $t2, $a0
/* 00F298 8000E698 50200003 */ beql $at, $zero, .L8000E6A8
/* 00F29C 8000E69C 97A900CA */ lhu $t1, 0xca($sp)
@ -515,14 +515,14 @@ glabel L8000E634
/* 00F2B0 8000E6B0 2921001A */ slti $at, $t1, 0x1a
/* 00F2B4 8000E6B4 1020004E */ beqz $at, .L8000E7F0
/* 00F2B8 8000E6B8 3C068016 */ lui $a2, %hi(D_80162FB0) # 0x8016
/* 00F2BC 8000E6BC 3C078016 */ lui $a3, %hi(D_801645CE) # $a3, 0x8016
/* 00F2C0 8000E6C0 94E745CE */ lhu $a3, %lo(D_801645CE)($a3)
/* 00F2BC 8000E6BC 3C078016 */ lui $a3, %hi(gWaypointCountByPathIndex + 0x6) # $a3, 0x8016
/* 00F2C0 8000E6C0 94E745CE */ lhu $a3, %lo(gWaypointCountByPathIndex + 0x6)($a3)
/* 00F2C4 8000E6C4 252C0001 */ addiu $t4, $t1, 1
/* 00F2C8 8000E6C8 252B0002 */ addiu $t3, $t1, 2
/* 00F2CC 8000E6CC 0187001A */ div $zero, $t4, $a3
/* 00F2D0 8000E6D0 00006810 */ mfhi $t5
/* 00F2D4 8000E6D4 3C088016 */ lui $t0, %hi(D_8016455C) # $t0, 0x8016
/* 00F2D8 8000E6D8 8D08455C */ lw $t0, %lo(D_8016455C)($t0)
/* 00F2D4 8000E6D4 3C088016 */ lui $t0, %hi(D_80164550 + 0xC) # $t0, 0x8016
/* 00F2D8 8000E6D8 8D08455C */ lw $t0, %lo(D_80164550 + 0xC)($t0)
/* 00F2DC 8000E6DC 0167001A */ div $zero, $t3, $a3
/* 00F2E0 8000E6E0 000D70C0 */ sll $t6, $t5, 3
/* 00F2E4 8000E6E4 01C81021 */ addu $v0, $t6, $t0

View File

@ -95,26 +95,26 @@ glabel L80011C04
glabel L80011C3C
/* 01283C 80011C3C 44802000 */ mtc1 $zero, $f4
/* 012840 80011C40 00047100 */ sll $t6, $a0, 4
/* 012844 80011C44 3C018016 */ lui $at, %hi(D_801634FC)
/* 012844 80011C44 3C018016 */ lui $at, %hi(D_801634F8 + 4)
/* 012848 80011C48 002E0821 */ addu $at, $at, $t6
/* 01284C 80011C4C 1000003A */ b .L80011D38
/* 012850 80011C50 E42434FC */ swc1 $f4, %lo(D_801634FC)($at)
/* 012850 80011C50 E42434FC */ swc1 $f4, %lo(D_801634F8 + 4)($at)
glabel L80011C54
/* 012854 80011C54 3C01800F */ lui $at, %hi(D_800ED0AC)
/* 012858 80011C58 C426D0AC */ lwc1 $f6, %lo(D_800ED0AC)($at)
/* 01285C 80011C5C 3C018016 */ lui $at, %hi(D_801634FC)
/* 01285C 80011C5C 3C018016 */ lui $at, %hi(D_801634F8 + 4)
/* 012860 80011C60 00047900 */ sll $t7, $a0, 4
/* 012864 80011C64 002F0821 */ addu $at, $at, $t7
/* 012868 80011C68 10000033 */ b .L80011D38
/* 01286C 80011C6C E42634FC */ swc1 $f6, %lo(D_801634FC)($at)
/* 01286C 80011C6C E42634FC */ swc1 $f6, %lo(D_801634F8 + 4)($at)
glabel L80011C70
/* 012870 80011C70 3C01800F */ lui $at, %hi(D_800ED0B0)
/* 012874 80011C74 C428D0B0 */ lwc1 $f8, %lo(D_800ED0B0)($at)
/* 012878 80011C78 3C018016 */ lui $at, %hi(D_801634FC)
/* 012878 80011C78 3C018016 */ lui $at, %hi(D_801634F8 + 4)
/* 01287C 80011C7C 0004C100 */ sll $t8, $a0, 4
/* 012880 80011C80 00380821 */ addu $at, $at, $t8
/* 012884 80011C84 1000002C */ b .L80011D38
/* 012888 80011C88 E42834FC */ swc1 $f8, %lo(D_801634FC)($at)
/* 012888 80011C88 E42834FC */ swc1 $f8, %lo(D_801634F8 + 4)($at)
glabel L80011C8C
/* 01288C 80011C8C 3C018016 */ lui $at, %hi(D_80163350) # 0x8016
/* 012890 80011C90 00230821 */ addu $at, $at, $v1

View File

@ -69,11 +69,11 @@ glabel func_800146B8
/* 015398 80014798 0C00516A */ jal func_800145A8
/* 01539C 8001479C 8604002E */ lh $a0, 0x2e($s0)
/* 0153A0 800147A0 8FAC0020 */ lw $t4, 0x20($sp)
/* 0153A4 800147A4 3C018016 */ lui $at, %hi(D_801634FC)
/* 0153A4 800147A4 3C018016 */ lui $at, %hi(D_801634F8 + 4)
/* 0153A8 800147A8 000C6900 */ sll $t5, $t4, 4
/* 0153AC 800147AC 002D0821 */ addu $at, $at, $t5
/* 0153B0 800147B0 10000006 */ b .L800147CC
/* 0153B4 800147B4 E42034FC */ swc1 $f0, %lo(D_801634FC)($at)
/* 0153B4 800147B4 E42034FC */ swc1 $f0, %lo(D_801634F8 + 4)($at)
.L800147B8:
/* 0153B8 800147B8 1444FFE1 */ bne $v0, $a0, .L80014740
/* 0153BC 800147BC 24630003 */ addiu $v1, $v1, 3

View File

@ -15,13 +15,13 @@ glabel func_8007B040
/* 07BC74 8007B074 1020000B */ beqz $at, .L8007B0A4
/* 07BC78 8007B078 320400FF */ andi $a0, $s0, 0xff
/* 07BC7C 8007B07C 00101080 */ sll $v0, $s0, 2
/* 07BC80 8007B080 3C048016 */ lui $a0, %hi(D_80164392) # 0x8016
/* 07BC84 8007B084 3C058016 */ lui $a1, %hi(D_801643BA) # 0x8016
/* 07BC80 8007B080 3C048016 */ lui $a0, %hi(gLapCountByPlayerId + 0x2) # 0x8016
/* 07BC84 8007B084 3C058016 */ lui $a1, %hi(gGPCurrentRaceRankByPlayerId + 0x2) # 0x8016
/* 07BC88 8007B088 00A22821 */ addu $a1, $a1, $v0
/* 07BC8C 8007B08C 00822021 */ addu $a0, $a0, $v0
/* 07BC90 8007B090 84844392 */ lh $a0, %lo(D_80164392)($a0) # 0x4392($a0)
/* 07BC90 8007B090 84844392 */ lh $a0, %lo(gLapCountByPlayerId + 0x2)($a0) # 0x4392($a0)
/* 07BC94 8007B094 0C01EBD0 */ jal gen_random_item_human
/* 07BC98 8007B098 84A543BA */ lh $a1, %lo(D_801643BA)($a1) # 0x43ba($a1)
/* 07BC98 8007B098 84A543BA */ lh $a1, %lo(gGPCurrentRaceRankByPlayerId + 0x2)($a1) # 0x43ba($a1)
/* 07BC9C 8007B09C 10000006 */ b .L8007B0B8
/* 07BCA0 8007B0A0 00401825 */ move $v1, $v0
.L8007B0A4:

View File

@ -928,10 +928,10 @@ glabel L8009F264
/* 09FEA8 8009F2A8 000F3080 */ sll $a2, $t7, 2
.L8009F2AC:
/* 09FEAC 8009F2AC 8FA60080 */ lw $a2, 0x80($sp)
/* 09FEB0 8009F2B0 3C188016 */ lui $t8, %hi(D_801640F4) # 0x8016
/* 09FEB0 8009F2B0 3C188016 */ lui $t8, %hi(gGPCurrentRaceRankByPlayerId - 0x2C4) # 0x8016
/* 09FEB4 8009F2B4 0006C880 */ sll $t9, $a2, 2
/* 09FEB8 8009F2B8 0319C021 */ addu $t8, $t8, $t9
/* 09FEBC 8009F2BC 8F1840F4 */ lw $t8, %lo(D_801640F4)($t8) # 0x40f4($t8)
/* 09FEBC 8009F2BC 8F1840F4 */ lw $t8, %lo(gGPCurrentRaceRankByPlayerId - 0x2C4)($t8) # 0x40f4($t8)
/* 09FEC0 8009F2C0 03203025 */ move $a2, $t9
/* 09FEC4 8009F2C4 1300000B */ beqz $t8, .L8009F2F4
/* 09FEC8 8009F2C8 00000000 */ nop

View File

@ -7,13 +7,7 @@
extern s8 gCharacterIdByGPOverallRank[8]; // D_8018D9D0
extern s16 gGPCurrentRacePlayerIdByRank[8]; // D_80164360
extern f32 gLapCompletionPercentByPlayerId[8]; // D_801644A8
extern s32 gLapCountByPlayerId[8]; // D_80164390
extern s32 gPlayerIsThrottleActive[]; // D_801653E0
extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8
extern hud_player playerHUD[];

View File

@ -10,7 +10,9 @@
#define NUM_TRAINS 2
#define LOCOMOTIVE_ONLY 0
#define NUM_PADDLE_WHEEL_BOATS 1
// It seems like there's room for 2 Ferries, but only 1 is ever active
#define NUM_ACTIVE_PADDLE_WHEEL_BOATS 1
#define NUM_PADDLE_WHEEL_BOATS 2
#define NUM_RACE_BOX_TRUCKS 7
#define NUM_RACE_SCHOOL_BUSES 7

View File

@ -307,8 +307,6 @@ SECTIONS
BUILD_DIR/src/code_80004740.o(.bss);
BUILD_DIR/src/staff_ghosts.o(.bss);
BUILD_DIR/src/code_80005FD0.jp.o(.bss);
BUILD_DIR/asm/bss_80005FD0.o(.bss);
BUILD_DIR/asm/bss_MainSeg.o(.bss);
BUILD_DIR/src/camera.o(.bss);
BUILD_DIR/src/render_player.o(.bss);
BUILD_DIR/asm/bss_80164AB0.o(.bss);

View File

@ -35,10 +35,183 @@ s32 unk_code_80005FD0_pad[24];
Collision D_80162E70;
s16 D_80162EB0; // Possibly a float.
s16 D_80162EB2; // possibly [3]
s16 code_80005FD0_pad[2];
uintptr_t *D_80162EB8[20];
// more padding?
s32 D_80162F08[2];
s16 D_80162F10[30];
s16 D_80162F50[30];
// padding, seemingly?
s32 D_80162F90[4];
Vec3f D_80162FA0;
Vec3f D_80162FB0;
Vec3f D_80162FC0;
s16 D_80162FCC;
s16 D_80162FCE;
s16 D_80162FD0;
f32 gCourseCompletionPercentByRank[8];
/*
The size of many of these arrays is weird. Based on their usage, they would only need
to be 8 entries long (enough for each player). But some are 10 or even 12 long.
Its plausible that this is just some decompilation artifact?
Or maybe at some point in development they had plans for more players?
*/
s16 D_80162FF8[12];
s16 D_80163010[12];
f32 D_80163028[10];
s16 D_80163050[12];
f32 D_80163068[10];
f32 D_80163090[10];
s32 D_801630B8[10];
s16 D_801630E0;
s16 D_801630E2;
s16 D_801630E8[10];
s16 D_801630FC;
s32 D_80163100[10];
s32 D_80163128[10];
s32 D_80163150[10];
f32 D_80163178[10];
f32 D_801631A0[10];
s16 D_801631C8;
s32 D_801631CC;
TrackWaypoint *D_801631D0;
TrackWaypoint *D_801631D4;
s16 *D_801631D8;
u16 *D_801631DC;
u16 D_801631E0[12];
s16 D_801631F8[10];
f32 D_8016320C;
f32 D_80163210[10];
s32 D_80163238;
s16 D_80163240[12];
u16 D_80163258[12];
u16 D_80163270[12];
s32 D_80163288[10];
// Exact pointer type unknown
// Maybe PathNoY or TrackWaypoint?
void *D_801632B0;
s16 D_801632B8[12];
s16 D_801632D0[12];
u16 D_801632E8[12];
s16 D_80163300[12];
u16 D_80163318[12];
u16 D_80163330[10];
u16 D_80163344[2];
u16 D_80163348[2];
u16 D_8016334C[2];
s16 D_80163350[12];
s32 D_80163368[4];
s32 D_80163378;
s32 D_8016337C;
s16 D_80163380[12];
s16 D_80163398[12];
s16 D_801633B0[12];
s16 D_801633C8[12];
s16 D_801633E0[12];
s16 D_801633F8[12];
s16 D_80163410[4];
f32 D_80163418[4];
f32 D_80163428[4];
f32 D_80163438[4];
s32 D_80163448;
f32 D_8016344C;
f32 D_80163450[10];
s16 D_80163478;
s16 D_8016347A;
s16 D_8016347C;
s16 D_8016347E;
s32 D_80163480;
s32 D_80163484;
s32 D_80163488;
s16 D_8016348C;
s16 D_80163490[12];
s16 D_801634A8[12];
s16 D_801634C0[12];
s16 D_801634D8[10];
s16 D_801634EC;
s32 D_801634F0;
s32 D_801634F4;
Test D_801634F8[10];
PathNoY *D_80163598;
s32 D_8016359C;
TrainStuff sTrains[NUM_TRAINS];
u16 isCrossingTriggeredByIndex[2];
u16 D_801637BC[2];
PaddleWheelBoatStuff gFerries[NUM_PADDLE_WHEEL_BOATS];
VehicleStuff gBoxTruckList[NUM_RACE_BOX_TRUCKS];
VehicleStuff gSchoolBusList[NUM_RACE_SCHOOL_BUSES];
VehicleStuff gTankerTruckList[NUM_RACE_TANKER_TRUCKS];
VehicleStuff gCarList[NUM_RACE_CARS];
s32 D_80163DD8[4];
BombKart gBombKarts[NUM_BOMB_KARTS_MAX];
Collision D_80164038[NUM_BOMB_KARTS_MAX];
struct unexpiredActors gUnexpiredActorsList[8];
D_801642D8_entry D_801642D8[8];
s16 D_80164358;
s16 D_8016435A;
s16 D_8016435C;
s16 gGPCurrentRacePlayerIdByRank[12]; // D_80164360
s16 D_80164378[12];
s32 gLapCountByPlayerId[10]; // D_80164390
s32 gGPCurrentRaceRankByPlayerId[10]; // D_801643B8
s32 D_801643E0[10];
s32 D_80164408[10];
u16 D_80164430;
u16 gNearestWaypointByPlayerId[12];
s32 D_80164450[10];
s16 D_80164478[10];
s32 D_8016448C;
TrackWaypoint *D_80164490;
f32 D_80164498[4];
f32 gLapCompletionPercentByPlayerId[10]; // D_801644A8
f32 gCourseCompletionPercentByPlayerId[10]; // D_801644D0
s16 D_801644F8[12];
f32 D_80164510[10];
s16 D_80164538[12];
TrackWaypoint *D_80164550[4];
TrackWaypoint *D_80164560[4];
TrackWaypoint *D_80164570[4];
s16 *D_80164580[4];
s16 *D_80164590[4];
s16 *D_801645A0[4];
u16 gPathIndexByPlayerId[12]; // D_801645B0
u16 gWaypointCountByPathIndex[4]; // D_801645C8
s32 D_801645D0[4];
s16 *D_801645E0;
s32 D_801645E8[4];
f32 D_801645F8[4];
s32 D_80164608[4];
f32 D_80164618[4];
s32 D_80164628[4];
f32 D_80164638[4];
f32 D_80164648[4];
f32 D_80164658[4];
s16 gNearestWaypointByCameraId[4];
s16 D_80164670[4];
s16 D_80164678[4];
s16 D_80164680[4];
f32 D_80164688[4];
f32 D_80164698;
f32 D_8016469C;
f32 D_801646A0;
// start padding
s32 D_801646A4;
s32 D_801646A8;
s32 D_801646AC;
s32 D_801646B0;
s32 D_801646B4;
s32 D_801646B8;
s32 D_801646BC;
// end padding
s16 D_801646C0[4];
u32 D_801646C8;
s16 D_801646CC;
UnkStruct_46D0 D_801646D0[4];
// Strings, presented by google translate!
// Note that these are EUC-JP encoded, see:
// https://en.wikipedia.org/wiki/Extended_Unix_Code#EUC-JP
@ -376,47 +549,6 @@ char *D_800ECF3C = "4位の人終了\n";
char *D_800ECF4C = "OGA 表彰 move 終了\n";
char *D_800ECF60 = "OGAWA DEBUG DRAW\n";
/* end of bss_Main.s imported. Commented out cause need everything prior too.
s16 *D_801645E0;
s16 D_801645E4_pad[3];
f32 D_801645E8[4];
f32 D_801645F8[4];
s32 D_80164608[4];
f32 D_80164618[4];
f32 D_80164628[4];
f32 D_80164638[4];
f32 D_80164648[4];
f32 D_80164658[4];
s16 gNearestWaypointByCameraId[4];
s16 D_80164670[4];
s16 D_80164678[4];
s16 D_80164680[4];
f32 D_80164688[4];
f32 D_80164698;
f32 D_8016469C;
f32 D_801646A0;
s32 D_801646A4_pad[7];
s16 D_801646C0[2];
s32 D_801646C8;
s16 D_801646CC;
//.skip 4
UnkStruct_46D0 D_801646D0[4];
*/
s16 func_80005FD0(Vec3f arg0, Vec3f arg1) {
s16 temp_ret;
s16 phi_v1;
@ -1173,11 +1305,11 @@ s32 func_800088D8(s32 arg0, s16 arg1, s16 arg2) {
}
return 1;
}
temp_v0 = D_80164450[arg0].unk2;
var_a1_3 = temp_v0 - D_80164450[D_80163478].unk2;
temp_t5_2 = *(&D_801643BA + (D_80163478 * 4));
temp_v0 = D_80164450[arg0 + 1];
var_a1_3 = temp_v0 - D_80164450[D_80163478 + 1];
temp_t5_2 = gGPCurrentRaceRankByPlayerId[D_80163478];
if ((((s32) (*gWaypointCountByPathIndex * 2) / 3) < var_a1_3) && (temp_t5_2 >= 6)) {
var_a1_3 = temp_v0 - D_80164450[*(&D_80164376 + (temp_t5_2 * 2))].unk2;
var_a1_3 = temp_v0 - D_80164450[gLapCountByPlayerId[temp_t5_2 - 6]].unk2;
}
if (var_a1_3 < 0) {
var_a1_3 = -var_a1_3;
@ -3627,7 +3759,7 @@ void func_8000F2DC(void) {
D_80163368[3] = (s32) ptr->unk6;
temp = ptr->unk8;
D_80163598 = (uintptr_t *) get_next_available_memory_addr(temp * 4);
D_80163598 = get_next_available_memory_addr(temp * 4);
// Podium ceremony appears to allocate 1 * 8 bytes of data. Which would be aligned to 0x10.
for (i = 0; i < 4; i++) {
@ -3643,7 +3775,7 @@ void func_8000F2DC(void) {
D_801631D0 = D_80164560[0];
D_801631D4 = D_80164570[0];
D_801631D8 = D_80164580[0];
D_801631DC = *D_80164590;
D_801631DC = D_80164590[0];
D_801645E0 = D_801645A0[0];
// zero allocated memory?
@ -4458,7 +4590,7 @@ GLOBAL_ASM("asm/non_matchings/code_80005FD0/func_80011B14.s")
//generated by mips_to_c commit bd0364fa19633bd6201f8007e2d0a7ed87825909
//extern ? D_80162EB8;
extern s16 D_801630E8[];
extern s32 *D_801632B0;
extern void *D_801632B0;
void func_80011D48(s32 playerIndex, Player *player) {
//s32 temp_a2;
@ -4474,8 +4606,8 @@ void func_80011D48(s32 playerIndex, Player *player) {
D_801632B0 = D_801632D0[playerIndex] + D_80162EB8[gCurrentCourseId];
test = gNearestWaypointByPlayerId[playerIndex];
// temp_a2 = temp_t3;
if (test >= (u16)*D_801632B0) {
switch (*D_801632B0) {
if (test >= (*(u16*)D_801632B0)) {
switch (*(u16*)D_801632B0) {
case 1:
player->effects &= ~0x10;
D_801630E8[playerIndex] = 0;
@ -4555,7 +4687,7 @@ void func_80011EC0(s32 arg0, Player *player, s32 arg2, s32 arg3) {
void func_800120C8(void) {
s32 i;
s16 *temp;
PathNoY *temp;
TrackWaypoint *waypoint = (TrackWaypoint *) VIRTUAL_TO_PHYSICAL2(
gSegmentTable[SEGMENT_NUMBER2(d_course_kalimari_desert_track_unknown_waypoints)]
+ SEGMENT_OFFSET(d_course_kalimari_desert_track_unknown_waypoints));
@ -4566,9 +4698,9 @@ void func_800120C8(void) {
}
}
temp = (s16 *)D_80163598;
temp = D_80163598;
D_8016359C = func_8001168C(temp, waypoint, i - 1);
D_80162EB0 = func_802AE1C0(temp[0], 2000.0f, temp[1]);
D_80162EB0 = func_802AE1C0(temp[0].x, 2000.0f, temp[0].z);
}
void func_80012190(void) {
@ -4664,7 +4796,7 @@ void init_course_vehicles(void) {
}
break;
case COURSE_DK_JUNGLE:
for(loopIndex = 0; loopIndex < NUM_PADDLE_WHEEL_BOATS; loopIndex++) {
for(loopIndex = 0; loopIndex < NUM_ACTIVE_PADDLE_WHEEL_BOATS; loopIndex++) {
tempPaddleWheelBoat = &gFerries[loopIndex];
if(tempPaddleWheelBoat->isActive == 1) {
origXPos = tempPaddleWheelBoat->position[0];
@ -4714,10 +4846,6 @@ void func_80012780(TrainCarStuff *trainCar, s16 *arg1, u16 arg2) {
trainCar->velocity[2] = 0.0f;
}
// This is really Vec2s D_80163598[465] but that does not match.
// Likely because this is a shared pointer between courses.
//extern uintptr_t *D_80163598;
/**
* Set waypoint spawn locations for each rolling stock
* The railroad has 465 waypoints
@ -4725,7 +4853,7 @@ void func_80012780(TrainCarStuff *trainCar, s16 *arg1, u16 arg2) {
void func_800127E0(void) {
u16 waypointOffset;
TrainCarStuff *ptr1;
s32 *ptr2;
PathNoY *ptr2;
s32 i;
s32 j;
@ -4739,19 +4867,19 @@ void func_800127E0(void) {
for (j = 0; j < NUM_PASSENGER_CAR_ENTRIES; j++) {
waypointOffset += 4;
ptr1 = &sTrains[i].passengerCars[j];
ptr2 = &D_80163598[waypointOffset];
ptr2 = &D_80163598[waypointOffset];
func_80012780(ptr1, ptr2, waypointOffset);
}
// Smaller offset for the tender
waypointOffset += 3;
ptr1 = &sTrains[i].tender;
ptr2 = &D_80163598[waypointOffset];
ptr2 = &D_80163598[waypointOffset];
func_80012780(ptr1, ptr2, waypointOffset);
waypointOffset += 4;
ptr1 = &sTrains[i].locomotive;
ptr2 = &D_80163598[waypointOffset];
func_80012780(&sTrains[i].locomotive, ptr2, waypointOffset);
func_80012780(ptr1, ptr2, waypointOffset);
// Only use locomotive unless overwritten below.
sTrains[i].numCars = LOCOMOTIVE_ONLY;
@ -4967,7 +5095,7 @@ void func_800131DC(s32 playerId) {
|| (func_800061DC(gPlayers[playerId].pos, 1000.0f, 0))) {
if ((isCrossingTriggeredByIndex[1] == 1)
&& ((D_801637BE) > 240)) {
&& ((D_801637BC[1]) > 240)) {
if ((D_80162FCE > 176) && (D_80162FCE < 182)) {
D_801634D8[playerId] = 1;
@ -4985,18 +5113,15 @@ void func_800131DC(s32 playerId) {
void func_800132F4(void) {
PaddleWheelBoatStuff *var_a1;
s32 i;
TrackWaypoint *temp_a2;
PathNoY *temp_a2;
u16 temp;
for (i = 0; i < NUM_PADDLE_WHEEL_BOATS; i++) {
for (i = 0; i < NUM_ACTIVE_PADDLE_WHEEL_BOATS; i++) {
temp = i * 0xB4;
var_a1 = &gFerries[i];
temp_a2 = &D_80163598[temp];
var_a1->position[0] = (f32) temp_a2->posX;
var_a1->position[1] = (f32) D_80162EB2;
// Shouldn't this be posZ? Something doesn't seem right here.
// Unless temp_a2 has been converted to X,Z with no Y. In-that case our
// struct is wrong or the member name is wrong.
var_a1->position[2] = (f32) temp_a2->posY;
var_a1->position[0] = temp_a2->x;
var_a1->position[1] = D_80162EB2;
var_a1->position[2] = temp_a2->z;
var_a1->waypointIndex = i * 0xB4;
var_a1->actorIndex = -1;
@ -5008,8 +5133,6 @@ void func_800132F4(void) {
var_a1->velocity[0] = 0.0f;
var_a1->velocity[1] = 0.0f;
var_a1->velocity[2] = 0.0f;
// fakematch
temp_a2 = &D_80163598[temp];
var_a1->someMultiplier = 1.6666666f;
var_a1->rotY = 0;
}
@ -5018,7 +5141,7 @@ void func_800132F4(void) {
void func_800133C4(void) {
PaddleWheelBoatStuff *ferry;
TrackWaypoint *waypoint;
PathNoY *waypoint;
s32 i;
struct Actor *ferryActor;
f32 temp_f26;
@ -5033,7 +5156,7 @@ void func_800133C4(void) {
Vec3f sp78;
s32 pad2;
D_801630FC += 1;
for (i = 0; i < NUM_PADDLE_WHEEL_BOATS; i++) {
for (i = 0; i < NUM_ACTIVE_PADDLE_WHEEL_BOATS; i++) {
ferry = &gFerries[i];
if (ferry->isActive == 1) {
temp_f26 = ferry->position[0];
@ -5063,10 +5186,10 @@ void func_800133C4(void) {
sp94[0] = temp_f26;
sp94[1] = temp_f28;
sp94[2] = temp_f30;
waypoint = (TrackWaypoint *) &D_80163598[(ferry->waypointIndex + 5) % D_8016359C];
sp88[0] = (f32) waypoint->posX;
waypoint = &D_80163598[(ferry->waypointIndex + 5) % D_8016359C];
sp88[0] = (f32) waypoint->x;
sp88[1] = (f32) D_80162EB0;
sp88[2] = (f32) waypoint->posY;
sp88[2] = (f32) waypoint->z;
temp_a1 = func_80005FD0(sp94, sp88);
temp = temp_a1 - ferry->rotY;
var_v1 = temp;
@ -5130,7 +5253,7 @@ void func_80013854(Player *player) {
playerX = player->pos[0];
playerY = player->pos[1];
playerZ = player->pos[2];
for (someIndex = 0; someIndex < NUM_PADDLE_WHEEL_BOATS; someIndex++) {
for (someIndex = 0; someIndex < NUM_ACTIVE_PADDLE_WHEEL_BOATS; someIndex++) {
tempPaddleWheelBoat = &gFerries[someIndex];
if (tempPaddleWheelBoat->isActive == 1) {
x_diff = playerX - tempPaddleWheelBoat->position[0];
@ -7620,8 +7743,6 @@ void func_8001A518(s32 arg0, s32 arg1, s32 arg2) {
}
}
extern u32 D_801646C8;
void func_8001A588(u16 *localD_80152300, Camera *camera, Player *player, s8 index, s32 cameraIndex) {
s32 var_v1;
UnkStruct_46D0 *temp_v0_4;

View File

@ -15,25 +15,23 @@ struct struct_801642D8 {
};
struct unexpiredActors {
s32 unk0;
s32 unk4;
s32 unk8;
u16 unkC;
u16 actorIndex;
s16 unk10;
// s16 compilerPadding;
u32 unk14;
s32 unk18;
};
/* 0x00 */ s32 unk0;
/* 0x04 */ s32 unk4;
/* 0x08 */ s32 unk8;
/* 0x0C */ u16 unkC;
/* 0x0E */ u16 actorIndex;
/* 0x10 */ s16 unk10;
/* 0x12 */ // s16 compilerPadding;
/* 0x14 */ u32 unk14;
/* 0x18 */ s32 unk18;
}; // size = 0x1C
typedef struct {
f32 unk0;
f32 unk4;
f32 unk8;
f32 unkC;
} Test;
extern Test D_801634F8[];
/* 0x00 */ f32 unk0;
/* 0x04 */ f32 unk4;
/* 0x08 */ f32 unk8;
/* 0x0C */ f32 unkC;
} Test; // size = 0x10
// Something related to CPU item usage
typedef struct {
@ -47,8 +45,6 @@ typedef struct {
/* 0x0E */ s16 unk_0E;
} D_801642D8_entry; // size = 0x10
extern D_801642D8_entry D_801642D8[];
typedef struct {
s16 unk0;
s16 unk2;
@ -243,8 +239,6 @@ void func_8001C3C4(s32);
void func_8001C42C(void);
/* This is where I'd put my static data, if I had any */
// 0 or 1, only 1 when when in extra (mirror) mode
extern s16 D_8016347A;
// Suspected to be the "width" of each waypoint. See data_0DD0A0_1.s
extern f32 D_800DCA4C[];
@ -257,118 +251,158 @@ struct _struct_D_800DD9D0_0x10 {
/* 0x08 */ u16 unk8;
/* 0x0A */ char padA[6];
}; // size 0x10
extern uintptr_t *D_80163598;
extern uintptr_t gCoursePathTable[20][4];
extern uintptr_t D_800DC8D0[20][4];
// An array of 21 items. The final element is for podium ceremony.
extern struct _struct_D_800DD9D0_0x10 D_800DD9D0[];
extern Collision D_80162E70;
extern s16 D_80162EB0; // Possibly a float.
extern s16 D_80162EB2; // possibly [3]
extern uintptr_t *D_80162EB8[];
extern s16 D_80162F10[];
extern s16 D_80162F50[];
extern Vec3f D_80162FA0;
extern Vec3f D_80162FB0;
extern Vec3f D_80162FC0;
extern s16 D_80162FCC;
extern s16 D_80162FCE;
extern s16 D_80162FD0;
extern f32 gCourseCompletionPercentByRank[]; // D_80162FD8
extern s16 D_80162FF8[];
extern s16 D_80163010[];
extern f32 D_80163028[];
extern s16 D_80163050[];
extern f32 D_80163068[];
extern f32 D_80163090[];
extern s32 D_801630B8[];
extern s16 D_801630E0;
extern s16 D_801630E2;
extern s16 D_801630E8[];
extern s16 D_801630FC;
extern s32 D_80163100[];
extern s32 D_80163128[];
extern s32 D_80163150[];
extern f32 D_80163178[];
extern f32 D_801631A0[];
extern s16 D_801631C8;
extern s32 D_801631CC;
extern TrackWaypoint *D_801631D0;
extern TrackWaypoint *D_801631D4;
extern s16 *D_801631D8;
extern u16 *D_801631DC;
extern u16 D_801631E0[];
extern s16 D_801631F8[];
extern f32 D_8016320C;
extern f32 D_80163210[];
extern s32 D_80163238;
extern s16 D_80163240[];
extern u16 D_80163258[];
extern u16 D_80163270[];
extern f32 D_80163210[];
extern s32 D_80163288[];
extern u16 D_80163330[]; // static?
// Exact pointer type unknown
extern void *D_801632B0;
extern s16 D_801632B8[];
extern s16 D_801632D0[];
extern u16 D_801632E8[];
extern s16 D_80163300[];
extern u16 D_80163318[];
extern u16 D_80163330[];
extern u16 D_80163344[];
extern u16 D_80163348[];
extern u16 D_8016334C[];
extern s16 D_80163350[];
extern s32 D_80163368[];
extern s32 D_80163378;
extern s32 D_8016337C;
extern s16 D_80163380[];
extern s16 D_80163398[];
extern s16 D_801633B0[];
extern s16 D_801633C8[];
extern s16 D_801633E0[];
extern s16 D_801633F8[];
extern s16 D_80163410[];
extern f32 D_80163418[];
extern f32 D_80163428[];
extern f32 D_80163438[];
extern s32 D_80163448;
extern f32 D_8016344C;
extern f32 D_80163450[];
extern s16 D_80163478;
// 0 or 1, only 1 when when in extra (mirror) mode
extern s16 D_8016347A;
extern s16 D_8016347C;
extern s16 D_8016347E;
extern s32 D_80163480;
extern s32 D_80163484;
extern s32 D_80163488;
extern s16 D_8016348C;
extern s16 D_80163490[];
extern s16 D_801634A8[];
extern s16 D_801634C0[];
extern s16 D_801634D8[];
extern s16 D_801634EC;
extern s32 D_801634F0;
extern s32 D_801634F4;
extern Test D_801634F8[];
extern PathNoY *D_80163598;
extern s32 D_8016359C;
extern u16 isCrossingTriggeredByIndex[];
extern u16 D_801637BC[];
extern s32 D_80163DD8[];
extern struct unexpiredActors gUnexpiredActorsList[];
extern D_801642D8_entry D_801642D8[];
extern s16 D_80164358;
extern s16 D_8016435A;
extern s16 D_8016435C;
extern s16 gGPCurrentRacePlayerIdByRank[]; // D_80164360
extern s16 D_80164378[];
extern s32 gLapCountByPlayerId[]; // D_80164390
extern s32 gGPCurrentRaceRankByPlayerId[]; // D_801643B8
extern s32 D_801643E0[];
extern s32 D_80164408[];
extern u16 D_80164430;
extern u16 gNearestWaypointByPlayerId[];
extern s32 D_80164450[];
extern s16 D_80164478[];
extern s32 D_8016448C;
extern f32 D_80164498[];
extern f32 gLapCompletionPercentByPlayerId[]; // D_801644A8
extern f32 gCourseCompletionPercentByPlayerId[]; // D_801644D0
extern s16 D_801644F8[];
extern f32 D_80164510[];
extern s16 D_80164538[];
extern s32 D_801645D0[];
extern s32 D_801645E8[];
extern s32 D_80164608[];
extern s32 D_80164628[];
extern f32 D_80164698;
extern f32 D_8016469C;
extern f32 D_801646A0;
extern f32 D_800DCAA0[];
// See bss_80005FD0.s
extern Collision D_80162E70;
extern s16 D_80162EB0;
extern s16 D_80162FCC;
extern f32 D_80162FA0[];
extern f32 gCourseCompletionPercentByRank[8]; // D_80162FD8
extern u16 D_80163348[];
extern s16 D_80164378[];
extern s32 D_801643E0[];
extern struct unexpiredActors gUnexpiredActorsList[];
extern s32 D_801643E0[];
extern s32 D_80164408[];
extern s32 D_8016448C;
extern f32 D_80164498[];
extern f32 gCourseCompletionPercentByPlayerId[8]; // D_801644D0
extern f32 D_801645F8[];
extern s32 D_80164608[];
extern f32 D_80164618[];
extern s32 D_80164628[];
extern f32 D_80164638[];
extern f32 D_80164648[];
extern f32 D_80164658[];
extern s16 D_80164670[];
extern s16 D_80164672;
extern s16 D_80164674;
extern s16 D_80164676;
extern s16 D_80164678[]; // Size 4? Is the three below this fake?
extern s16 D_80164678[];
extern s16 D_80164680[];
extern f32 D_80164688[];
extern f32 D_80164698;
extern f32 D_8016469C;
extern f32 D_801646A0;
extern s16 D_801646C0[];
extern u32 D_801646C8;
extern s16 D_801646CC;
extern UnkStruct_46D0 D_801646D0[];
extern s16 D_801630FC;
extern s16 D_801631C8;
extern u16 D_801631E0[8];
extern s32 D_80163238;
extern s16 D_801632B8[];
extern s16 D_801632D0[];
extern u16 D_801632E8[];
extern s32 D_8016337C;
extern s16 D_80163410[]; // One per player?
extern f32 D_80163418[];
extern f32 D_80163428[];
extern f32 D_80163438[];
extern s16 D_80163478;
extern s32 D_80163488;
extern s16 D_8016348C;
extern s16 D_801634D8[8];
extern s32 D_8016359C;
extern u16 D_801637BC[2];
extern f32 D_800DCAA0[];
// See bss_80005FD0.s
extern f32 gCourseCompletionPercentByRank[8];
extern s32 D_801643E0[];
extern s32 D_8016448C;
extern u16 D_801637BE;
extern s32 D_80163DD8[];
extern u16 D_80163E2A;
extern Gfx D_0D0076F8[];

View File

@ -2484,13 +2484,13 @@ void func_8005D0FC(s32 arg0) {
func_8005CB60(arg0, gLapCountByPlayerId[0]);
break;
case 1:
func_8005CB60(arg0, D_80164394);
func_8005CB60(arg0, gLapCountByPlayerId[1]);
break;
case 2:
func_8005CB60(arg0, D_80164398);
func_8005CB60(arg0, gLapCountByPlayerId[2]);
break;
case 3:
func_8005CB60(arg0, D_8016439C);
func_8005CB60(arg0, gLapCountByPlayerId[3]);
break;
}
}

View File

@ -313,9 +313,6 @@ extern u8 *D_8018D4C8;
extern u16 gPlayerBalloonStatus[8][3]; // D_8018D5F0
extern s16 gPlayerBalloonCount[]; // D_8018D8C0
extern s32 D_80164394;
extern s32 D_80164398;
extern s32 D_8016439C;
extern f32 D_801652A0[];
extern s32 D_801655C0;
extern s32 D_801655F0;

View File

@ -4,6 +4,7 @@
#include <defines.h>
#include "code_800029B0.h"
#include "code_80005FD0.h"
#include "code_80057C60.h"
#include "code_8006E9C0.h"
#include "code_80086E70.h"

View File

@ -1753,8 +1753,6 @@ void func_80075B84(s32 objectIndex) {
func_8008BF18(objectIndex);
}
extern s32 D_801637E8;
extern s32 D_80163814;
extern s16 D_8016578C;
extern s16 D_80165790;
@ -1770,7 +1768,7 @@ void func_80075CA8(void) {
if (D_80165790 != 0) {
D_80165790 -= 1;
}
if ((D_801637E8 != 0) || (D_8016578C != 0)) {
if ((gFerries[0].someFlags != 0) || (D_8016578C != 0)) {
count = 0;
for (i = 0; i < 128; i++) {
temp_a0 = D_8018C3F0[i];
@ -1789,7 +1787,7 @@ void func_80075CA8(void) {
D_8016578C = 100;
}
}
if ((D_80163814 != 0) || (D_80165790 != 0)) {
if ((gFerries[1].someFlags != 0) || (D_80165790 != 0)) {
count = 0;
for (i = 0; i < 128; i++) {
temp_a0 = D_8018C630[i];

View File

@ -3736,12 +3736,12 @@ void func_80054414(s32 cameraId) {
func_8004B72C(255, 255, 255, 255, 255, 255, 255);
D_80183E80[0] = 0;
D_80183E80[2] = 0x8000;
if ((D_801637E8 != 0) && (func_80041980(&D_801637C4, camera, 0x4000U) != 0)) {
if ((gFerries[0].someFlags != 0) && (func_80041980(gFerries[0].position, camera, 0x4000U) != 0)) {
for (i = 0; i < D_8018C3F0_SIZE; i++) {
func_80054324(D_8018C3F0[i], cameraId);
}
}
if ((D_80163814 != 0) && (func_80041980(&D_801637F0, camera, 0x4000U) != 0)) {
if ((gFerries[1].someFlags != 0) && (func_80041980(gFerries[1].position, camera, 0x4000U) != 0)) {
for (i = 0; i < D_8018C630_SIZE; i++) {
func_80054324(D_8018C630[i], cameraId);
}

View File

@ -68,9 +68,6 @@ extern StaffGhost *d_mario_raceway_staff_ghost;
extern StaffGhost *d_royal_raceway_staff_ghost;
extern StaffGhost *d_luigi_raceway_staff_ghost;
extern s32 D_80164394;
extern s32 D_80164398;
void func_80004EF0(void) {
D_80162DA4 = (u32 *) &D_802BFB80[0][2][3];
osInvalDCache(&D_80162DA4[0], 0x4000);
@ -542,10 +539,10 @@ void func_80005B18(void) {
void func_80005E6C(void) {
if ((gModeSelection == TIME_TRIALS) && (gModeSelection == TIME_TRIALS) && (gActiveScreenMode == SCREEN_MODE_1P)) {
if ((D_80162DD8 == 0) && (D_80164394 != 3)) {
if ((D_80162DD8 == 0) && (gLapCountByPlayerId[1] != 3)) {
func_800057DC(); //3
}
if ((D_80162DD6 == 0) && (D_80164398 != 3)) {
if ((D_80162DD6 == 0) && (gLapCountByPlayerId[2] != 3)) {
func_8000561C(); //2
}
if ((gPlayerOne->type & PLAYER_CINEMATIC_MODE) != PLAYER_CINEMATIC_MODE) {