Complete matches in ceremony_and_credits (#280)

* Complete matches in ceremony_and_credits

* struct_D_802876D0 is the real CinematicCamera

* Replaced a bunch of Camera pointer args with
 CinematicCamera pointers instead. Only a couple functions use plain Camera pointers

* Moved some type definitions into the header file

Signed-off-by: Taggerung <tyler.taggerung@gmail.com>
This commit is contained in:
Tyler McGavran
2022-12-05 04:34:17 -05:00
committed by GitHub
parent eeab33814d
commit 10ae9a7970
7 changed files with 579 additions and 1064 deletions
@@ -1,139 +0,0 @@
glabel func_80283430
/* 126A70 80283430 27BDFFD0 */ addiu $sp, $sp, -0x30
/* 126A74 80283434 AFB00020 */ sw $s0, 0x20($sp)
/* 126A78 80283438 3C108028 */ lui $s0, %hi(D_802876E0) # $s0, 0x8028
/* 126A7C 8028343C 3C018028 */ lui $at, %hi(D_802876D8) # $at, 0x8028
/* 126A80 80283440 261076E0 */ addiu $s0, %lo(D_802876E0) # addiu $s0, $s0, 0x76e0
/* 126A84 80283444 AC2076D8 */ sw $zero, %lo(D_802876D8)($at)
/* 126A88 80283448 A200001C */ sb $zero, 0x1c($s0)
/* 126A8C 8028344C 3C0E800E */ lui $t6, %hi(D_800DC5E4) # $t6, 0x800e
/* 126A90 80283450 95CEC5E4 */ lhu $t6, %lo(D_800DC5E4)($t6)
/* 126A94 80283454 AFBF002C */ sw $ra, 0x2c($sp)
/* 126A98 80283458 3C018028 */ lui $at, %hi(D_802856C4) # $at, 0x8028
/* 126A9C 8028345C 3C048028 */ lui $a0, %hi(D_802876E0+0xC) # $a0, 0x8028
/* 126AA0 80283460 AFB20028 */ sw $s2, 0x28($sp)
/* 126AA4 80283464 AFB10024 */ sw $s1, 0x24($sp)
/* 126AA8 80283468 F7B40018 */ sdc1 $f20, 0x18($sp)
/* 126AAC 8028346C 248476EC */ addiu $a0, %lo(D_802876E0+0xC) # addiu $a0, $a0, 0x76ec
/* 126AB0 80283470 0C0A07F7 */ jal vec3f_clear
/* 126AB4 80283474 AC2E56C4 */ sw $t6, %lo(D_802856C4)($at)
/* 126AB8 80283478 4480A000 */ mtc1 $zero, $f20
/* 126ABC 8028347C 02002025 */ move $a0, $s0
/* 126AC0 80283480 3C0743FA */ lui $a3, 0x43fa
/* 126AC4 80283484 4405A000 */ mfc1 $a1, $f20
/* 126AC8 80283488 4406A000 */ mfc1 $a2, $f20
/* 126ACC 8028348C 0C0A07E8 */ jal vec3f_set_dupe
/* 126AD0 80283490 00000000 */ nop
/* 126AD4 80283494 3C048028 */ lui $a0, %hi(D_80287700+0x10) # $a0, 0x8028
/* 126AD8 80283498 0C0A07F7 */ jal vec3f_clear
/* 126ADC 8028349C 24847710 */ addiu $a0, %lo(D_80287700+0x10) # addiu $a0, $a0, 0x7710
/* 126AE0 802834A0 3C048028 */ lui $a0, %hi(D_80287700+0x4) # $a0, 0x8028
/* 126AE4 802834A4 4405A000 */ mfc1 $a1, $f20
/* 126AE8 802834A8 4406A000 */ mfc1 $a2, $f20
/* 126AEC 802834AC 24847704 */ addiu $a0, %lo(D_80287700+0x4) # addiu $a0, $a0, 0x7704
/* 126AF0 802834B0 0C0A07E8 */ jal vec3f_set_dupe
/* 126AF4 802834B4 3C0743FA */ lui $a3, 0x43fa
/* 126AF8 802834B8 3C048028 */ lui $a0, %hi(D_80287700+0x1C) # $a0, 0x8028
/* 126AFC 802834BC 4405A000 */ mfc1 $a1, $f20
/* 126B00 802834C0 4407A000 */ mfc1 $a3, $f20
/* 126B04 802834C4 2484771C */ addiu $a0, %lo(D_80287700+0x1C) # addiu $a0, $a0, 0x771c
/* 126B08 802834C8 0C0A07E8 */ jal vec3f_set_dupe
/* 126B0C 802834CC 3C063F80 */ lui $a2, 0x3f80
/* 126B10 802834D0 3C018028 */ lui $at, %hi(D_802876F8) # $at, 0x8028
/* 126B14 802834D4 3C048028 */ lui $a0, %hi(D_80287728) # $a0, 0x8028
/* 126B18 802834D8 E43476F8 */ swc1 $f20, %lo(D_802876F8)($at)
/* 126B1C 802834DC 0C0A07FD */ jal vec3s_clear
/* 126B20 802834E0 24847728 */ addiu $a0, %lo(D_80287728) # addiu $a0, $a0, 0x7728
/* 126B24 802834E4 3C048028 */ lui $a0, %hi(D_80287728+0x6) # $a0, 0x8028
/* 126B28 802834E8 0C0A07FD */ jal vec3s_clear
/* 126B2C 802834EC 2484772E */ addiu $a0, %lo(D_80287728+0x6) # addiu $a0, $a0, 0x772e
/* 126B30 802834F0 3C048028 */ lui $a0, %hi(D_80287728+0xC) # $a0, 0x8028
/* 126B34 802834F4 0C0A07FD */ jal vec3s_clear
/* 126B38 802834F8 24847734 */ addiu $a0, %lo(D_80287728+0xC) # addiu $a0, $a0, 0x7734
/* 126B3C 802834FC 3C048028 */ lui $a0, %hi(D_80287728+0x12) # $a0, 0x8028
/* 126B40 80283500 0C0A07FD */ jal vec3s_clear
/* 126B44 80283504 2484773A */ addiu $a0, %lo(D_80287728+0x12) # addiu $a0, $a0, 0x773a
/* 126B48 80283508 3C018028 */ lui $at, %hi(D_80287740) # $at, 0x8028
/* 126B4C 8028350C A4207740 */ sh $zero, %lo(D_80287740)($at)
/* 126B50 80283510 E4347744 */ swc1 $f20, %lo(D_80287740+0x4)($at)
/* 126B54 80283514 3C018028 */ lui $at, %hi(D_80287748+0x6) # $at, 0x8028
/* 126B58 80283518 E4347748 */ swc1 $f20, %lo(D_80287740+0x8)($at)
/* 126B5C 8028351C A420774C */ sh $zero, %lo(D_80287740+0xC)($at)
/* 126B60 80283520 A420774E */ sh $zero, %lo(D_80287748+0x6)($at)
/* 126B64 80283524 3C018015 */ lui $at, %hi(D_80150130) # $at, 0x8015
/* 126B68 80283528 C4240130 */ lwc1 $f4, %lo(D_80150130)($at)
/* 126B6C 8028352C 3C018028 */ lui $at, %hi(D_80287700) # $at, 0x8028
/* 126B70 80283530 E4247700 */ swc1 $f4, %lo(D_80287700)($at)
/* 126B74 80283534 3C018028 */ lui $at, %hi(sCutsceneShot) # $at, 0x8028
/* 126B78 80283538 A42076D0 */ sh $zero, %lo(sCutsceneShot)($at)
/* 126B7C 8028353C 3C018028 */ lui $at, %hi(gCutsceneShotTimer) # $at, 0x8028
/* 126B80 80283540 A42076D2 */ sh $zero, %lo(gCutsceneShotTimer)($at)
/* 126B84 80283544 3C018028 */ lui $at, %hi(D_802876D4) # $at, 0x8028
/* 126B88 80283548 0C0A0903 */ jal reset_spline
/* 126B8C 8028354C AC2076D4 */ sw $zero, %lo(D_802876D4)($at)
/* 126B90 80283550 3C048028 */ lui $a0, %hi(D_80287818) # $a0, 0x8028
/* 126B94 80283554 3C028028 */ lui $v0, %hi(D_80287998) # $v0, 0x8028
/* 126B98 80283558 3C058028 */ lui $a1, %hi(sCutsceneSplineSegmentProgress) # $a1, 0x8028
/* 126B9C 8028355C 24A57B18 */ addiu $a1, %lo(sCutsceneSplineSegmentProgress) # addiu $a1, $a1, 0x7b18
/* 126BA0 80283560 24427998 */ addiu $v0, %lo(D_80287998) # addiu $v0, $v0, 0x7998
/* 126BA4 80283564 24847818 */ addiu $a0, %lo(D_80287818) # addiu $a0, $a0, 0x7818
/* 126BA8 80283568 2403FFFF */ li $v1, -1
.L8028356C:
/* 126BAC 8028356C 2442000C */ addiu $v0, $v0, 0xc
/* 126BB0 80283570 0045082B */ sltu $at, $v0, $a1
/* 126BB4 80283574 2484000C */ addiu $a0, $a0, 0xc
/* 126BB8 80283578 A083FFF4 */ sb $v1, -0xc($a0)
/* 126BBC 8028357C 1420FFFB */ bnez $at, .L8028356C
/* 126BC0 80283580 A043FFF4 */ sb $v1, -0xc($v0)
/* 126BC4 80283584 3C118028 */ lui $s1, %hi(D_80287750) # $s1, 0x8028
/* 126BC8 80283588 3C108028 */ lui $s0, 0x8028
/* 126BCC 8028358C 3C128028 */ lui $s2, 0x8028
/* 126BD0 80283590 26527824 */ addiu $s2, $s2, 0x7824
/* 126BD4 80283594 2610775C */ addiu $s0, $s0, 0x775c
/* 126BD8 80283598 26317750 */ addiu $s1, %lo(D_80287750) # addiu $s1, $s1, 0x7750
.L8028359C:
/* 126BDC 8028359C 0C0A07F7 */ jal vec3f_clear
/* 126BE0 802835A0 02202025 */ move $a0, $s1
/* 126BE4 802835A4 0C0A07FD */ jal vec3s_clear
/* 126BE8 802835A8 02002025 */ move $a0, $s0
/* 126BEC 802835AC 26100014 */ addiu $s0, $s0, 0x14
/* 126BF0 802835B0 1612FFFA */ bne $s0, $s2, .L8028359C
/* 126BF4 802835B4 26310014 */ addiu $s1, $s1, 0x14
/* 126BF8 802835B8 3C0F800E */ lui $t7, %hi(gGamestate) # $t7, 0x800e
/* 126BFC 802835BC 8DEFC50C */ lw $t7, %lo(gGamestate)($t7)
/* 126C00 802835C0 3C018028 */ lui $at, %hi(D_802856C0) # $at, 0x8028
/* 126C04 802835C4 E43456C0 */ swc1 $f20, %lo(D_802856C0)($at)
/* 126C08 802835C8 24010005 */ li $at, 5
/* 126C0C 802835CC 15E1000B */ bne $t7, $at, .L802835FC
/* 126C10 802835D0 3C0142F0 */ li $at, 0x42F00000 # 120.000000
/* 126C14 802835D4 44810000 */ mtc1 $at, $f0
/* 126C18 802835D8 3C018028 */ lui $at, %hi(D_802856B0) # $at, 0x8028
/* 126C1C 802835DC E42056B0 */ swc1 $f0, %lo(D_802856B0)($at)
/* 126C20 802835E0 3C014140 */ li $at, 0x41400000 # 12.000000
/* 126C24 802835E4 44813000 */ mtc1 $at, $f6
/* 126C28 802835E8 3C018028 */ lui $at, %hi(D_802856B4) # $at, 0x8028
/* 126C2C 802835EC E42656B4 */ swc1 $f6, %lo(D_802856B4)($at)
/* 126C30 802835F0 3C018028 */ lui $at, %hi(D_802856B8) # $at, 0x8028
/* 126C34 802835F4 1000000D */ b .L8028362C
/* 126C38 802835F8 E42056B8 */ swc1 $f0, %lo(D_802856B8)($at)
.L802835FC:
/* 126C3C 802835FC 3C0142C4 */ li $at, 0x42C40000 # 98.000000
/* 126C40 80283600 44814000 */ mtc1 $at, $f8
/* 126C44 80283604 3C018028 */ lui $at, %hi(D_802856B0) # $at, 0x8028
/* 126C48 80283608 E42856B0 */ swc1 $f8, %lo(D_802856B0)($at)
/* 126C4C 8028360C 3C014140 */ li $at, 0x41400000 # 12.000000
/* 126C50 80283610 44815000 */ mtc1 $at, $f10
/* 126C54 80283614 3C018028 */ lui $at, %hi(D_802856B4) # $at, 0x8028
/* 126C58 80283618 E42A56B4 */ swc1 $f10, %lo(D_802856B4)($at)
/* 126C5C 8028361C 3C014250 */ li $at, 0x42500000 # 52.000000
/* 126C60 80283620 44818000 */ mtc1 $at, $f16
/* 126C64 80283624 3C018028 */ lui $at, %hi(D_802856B8) # $at, 0x8028
/* 126C68 80283628 E43056B8 */ swc1 $f16, %lo(D_802856B8)($at)
.L8028362C:
/* 126C6C 8028362C 8FBF002C */ lw $ra, 0x2c($sp)
/* 126C70 80283630 D7B40018 */ ldc1 $f20, 0x18($sp)
/* 126C74 80283634 8FB00020 */ lw $s0, 0x20($sp)
/* 126C78 80283638 8FB10024 */ lw $s1, 0x24($sp)
/* 126C7C 8028363C 8FB20028 */ lw $s2, 0x28($sp)
/* 126C80 80283640 03E00008 */ jr $ra
/* 126C84 80283644 27BD0030 */ addiu $sp, $sp, 0x30
@@ -1,212 +0,0 @@
glabel func_80283648
/* 126C88 80283648 27BDFF90 */ addiu $sp, $sp, -0x70
/* 126C8C 8028364C AFBF0024 */ sw $ra, 0x24($sp)
/* 126C90 80283650 AFB00020 */ sw $s0, 0x20($sp)
/* 126C94 80283654 0C0A0D0A */ jal func_80283428
/* 126C98 80283658 00808025 */ move $s0, $a0
/* 126C9C 8028365C 27A40058 */ addiu $a0, $sp, 0x58
/* 126CA0 80283660 0C0A0802 */ jal vec3f_copy_dupe
/* 126CA4 80283664 02002825 */ move $a1, $s0
/* 126CA8 80283668 2605000C */ addiu $a1, $s0, 0xc
/* 126CAC 8028366C AFA50034 */ sw $a1, 0x34($sp)
/* 126CB0 80283670 0C0A0802 */ jal vec3f_copy_dupe
/* 126CB4 80283674 27A4004C */ addiu $a0, $sp, 0x4c
/* 126CB8 80283678 26050018 */ addiu $a1, $s0, 0x18
/* 126CBC 8028367C AFA50030 */ sw $a1, 0x30($sp)
/* 126CC0 80283680 0C0A0802 */ jal vec3f_copy_dupe
/* 126CC4 80283684 27A40040 */ addiu $a0, $sp, 0x40
/* 126CC8 80283688 3C048028 */ lui $a0, %hi(D_802876E0) # $a0, 0x8028
/* 126CCC 8028368C 248476E0 */ addiu $a0, %lo(D_802876E0) # addiu $a0, $a0, 0x76e0
/* 126CD0 80283690 0C0A0CDB */ jal func_8028336C
/* 126CD4 80283694 02002825 */ move $a1, $s0
/* 126CD8 80283698 304300FF */ andi $v1, $v0, 0xff
/* 126CDC 8028369C 3C018028 */ lui $at, %hi(D_802876E0+0x1C) # $at, 0x8028
/* 126CE0 802836A0 10600090 */ beqz $v1, .L802838E4
/* 126CE4 802836A4 A02376FC */ sb $v1, %lo(D_802876E0+0x1C)($at)
/* 126CE8 802836A8 3C048028 */ lui $a0, %hi(D_802876E0+0xC) # $a0, 0x8028
/* 126CEC 802836AC 248476EC */ addiu $a0, %lo(D_802876E0+0xC) # addiu $a0, $a0, 0x76ec
/* 126CF0 802836B0 0C0A0802 */ jal vec3f_copy_dupe
/* 126CF4 802836B4 02002825 */ move $a1, $s0
/* 126CF8 802836B8 3C048028 */ lui $a0, %hi(D_802876E0) # $a0, 0x8028
/* 126CFC 802836BC 248476E0 */ addiu $a0, %lo(D_802876E0) # addiu $a0, $a0, 0x76e0
/* 126D00 802836C0 0C0A0802 */ jal vec3f_copy_dupe
/* 126D04 802836C4 8FA50034 */ lw $a1, 0x34($sp)
/* 126D08 802836C8 3C048028 */ lui $a0, %hi(D_802876E0) # $a0, 0x8028
/* 126D0C 802836CC 0C0A12BA */ jal play_cutscene
/* 126D10 802836D0 248476E0 */ addiu $a0, %lo(D_802876E0) # addiu $a0, $a0, 0x76e0
/* 126D14 802836D4 3C048028 */ lui $a0, %hi(D_802876E0+0xC) # $a0, 0x8028
/* 126D18 802836D8 3C058028 */ lui $a1, %hi(D_802876E0) # $a1, 0x8028
/* 126D1C 802836DC 27AE006C */ addiu $t6, $sp, 0x6c
/* 126D20 802836E0 AFAE0010 */ sw $t6, 0x10($sp)
/* 126D24 802836E4 24A576E0 */ addiu $a1, %lo(D_802876E0) # addiu $a1, $a1, 0x76e0
/* 126D28 802836E8 248476EC */ addiu $a0, %lo(D_802876E0+0xC) # addiu $a0, $a0, 0x76ec
/* 126D2C 802836EC 27A60064 */ addiu $a2, $sp, 0x64
/* 126D30 802836F0 0C0A0915 */ jal func_80282454
/* 126D34 802836F4 27A7006E */ addiu $a3, $sp, 0x6e
/* 126D38 802836F8 87A7006E */ lh $a3, 0x6e($sp)
/* 126D3C 802836FC 28E13800 */ slti $at, $a3, 0x3800
/* 126D40 80283700 54200003 */ bnel $at, $zero, .L80283710
/* 126D44 80283704 28E1C801 */ slti $at, $a3, -0x37ff
/* 126D48 80283708 24073800 */ li $a3, 14336
/* 126D4C 8028370C 28E1C801 */ slti $at, $a3, -0x37ff
.L80283710:
/* 126D50 80283710 50200003 */ beql $at, $zero, .L80283720
/* 126D54 80283714 24013800 */ li $at, 14336
/* 126D58 80283718 2407C800 */ li $a3, -14336
/* 126D5C 8028371C 24013800 */ li $at, 14336
.L80283720:
/* 126D60 80283720 10E10003 */ beq $a3, $at, .L80283730
/* 126D64 80283724 2401C800 */ li $at, -14336
/* 126D68 80283728 14E1000A */ bne $a3, $at, .L80283754
/* 126D6C 8028372C A7A7006E */ sh $a3, 0x6e($sp)
.L80283730:
/* 126D70 80283730 87AF006C */ lh $t7, 0x6c($sp)
/* 126D74 80283734 3C048028 */ lui $a0, %hi(D_802876E0+0xC) # $a0, 0x8028
/* 126D78 80283738 3C058028 */ lui $a1, %hi(D_802876E0) # $a1, 0x8028
/* 126D7C 8028373C 24A576E0 */ addiu $a1, %lo(D_802876E0) # addiu $a1, $a1, 0x76e0
/* 126D80 80283740 248476EC */ addiu $a0, %lo(D_802876E0+0xC) # addiu $a0, $a0, 0x76ec
/* 126D84 80283744 8FA60064 */ lw $a2, 0x64($sp)
/* 126D88 80283748 A7A7006E */ sh $a3, 0x6e($sp)
/* 126D8C 8028374C 0C0A0941 */ jal func_80282504
/* 126D90 80283750 AFAF0010 */ sw $t7, 0x10($sp)
.L80283754:
/* 126D94 80283754 3C018028 */ lui $at, %hi(D_802876E0+0x18) # $at, 0x8028
/* 126D98 80283758 C42276F8 */ lwc1 $f2, %lo(D_802876E0+0x18)($at)
/* 126D9C 8028375C 3C014780 */ li $at, 0x47800000 # 65536.000000
/* 126DA0 80283760 44816000 */ mtc1 $at, $f12
/* 126DA4 80283764 3C01C780 */ li $at, 0xC7800000 # -65536.000000
/* 126DA8 80283768 44812000 */ mtc1 $at, $f4
/* 126DAC 8028376C 4602603C */ c.lt.s $f12, $f2
/* 126DB0 80283770 44803000 */ mtc1 $zero, $f6
/* 126DB4 80283774 24040001 */ li $a0, 1
/* 126DB8 80283778 45020003 */ bc1fl .L80283788
/* 126DBC 8028377C 4604103C */ c.lt.s $f2, $f4
/* 126DC0 80283780 460C1081 */ sub.s $f2, $f2, $f12
/* 126DC4 80283784 4604103C */ c.lt.s $f2, $f4
.L80283788:
/* 126DC8 80283788 00000000 */ nop
/* 126DCC 8028378C 45020003 */ bc1fl .L8028379C
/* 126DD0 80283790 4606103C */ c.lt.s $f2, $f6
/* 126DD4 80283794 460C1080 */ add.s $f2, $f2, $f12
/* 126DD8 80283798 4606103C */ c.lt.s $f2, $f6
.L8028379C:
/* 126DDC 8028379C 3C018028 */ lui $at, %hi(D_802876E0+0x18) # $at, 0x8028
/* 126DE0 802837A0 E42276F8 */ swc1 $f2, %lo(D_802876E0+0x18)($at)
/* 126DE4 802837A4 46001006 */ mov.s $f0, $f2
/* 126DE8 802837A8 45020003 */ bc1fl .L802837B8
/* 126DEC 802837AC 4458F800 */ cfc1 $t8, $31
/* 126DF0 802837B0 46026000 */ add.s $f0, $f12, $f2
/* 126DF4 802837B4 4458F800 */ cfc1 $t8, $31
.L802837B8:
/* 126DF8 802837B8 44C4F800 */ ctc1 $a0, $31
/* 126DFC 802837BC 3C014F00 */ li $at, 0x4F000000 # 2147483648.000000
/* 126E00 802837C0 46000224 */ cvt.w.s $f8, $f0
/* 126E04 802837C4 4444F800 */ cfc1 $a0, $31
/* 126E08 802837C8 00000000 */ nop
/* 126E0C 802837CC 30840078 */ andi $a0, $a0, 0x78
/* 126E10 802837D0 50800013 */ beql $a0, $zero, .L80283820
/* 126E14 802837D4 44044000 */ mfc1 $a0, $f8
/* 126E18 802837D8 44814000 */ mtc1 $at, $f8
/* 126E1C 802837DC 24040001 */ li $a0, 1
/* 126E20 802837E0 46080201 */ sub.s $f8, $f0, $f8
/* 126E24 802837E4 44C4F800 */ ctc1 $a0, $31
/* 126E28 802837E8 00000000 */ nop
/* 126E2C 802837EC 46004224 */ cvt.w.s $f8, $f8
/* 126E30 802837F0 4444F800 */ cfc1 $a0, $31
/* 126E34 802837F4 00000000 */ nop
/* 126E38 802837F8 30840078 */ andi $a0, $a0, 0x78
/* 126E3C 802837FC 14800005 */ bnez $a0, .L80283814
/* 126E40 80283800 00000000 */ nop
/* 126E44 80283804 44044000 */ mfc1 $a0, $f8
/* 126E48 80283808 3C018000 */ lui $at, 0x8000
/* 126E4C 8028380C 10000007 */ b .L8028382C
/* 126E50 80283810 00812025 */ or $a0, $a0, $at
.L80283814:
/* 126E54 80283814 10000005 */ b .L8028382C
/* 126E58 80283818 2404FFFF */ li $a0, -1
/* 126E5C 8028381C 44044000 */ mfc1 $a0, $f8
.L80283820:
/* 126E60 80283820 00000000 */ nop
/* 126E64 80283824 0480FFFB */ bltz $a0, .L80283814
/* 126E68 80283828 00000000 */ nop
.L8028382C:
/* 126E6C 8028382C 44D8F800 */ ctc1 $t8, $31
/* 126E70 80283830 3099FFFF */ andi $t9, $a0, 0xffff
/* 126E74 80283834 03202025 */ move $a0, $t9
/* 126E78 80283838 0C0AE006 */ jal sins
/* 126E7C 8028383C AFB9002C */ sw $t9, 0x2c($sp)
/* 126E80 80283840 E7A00038 */ swc1 $f0, 0x38($sp)
/* 126E84 80283844 0C0AE00E */ jal coss
/* 126E88 80283848 97A4006C */ lhu $a0, 0x6c($sp)
/* 126E8C 8028384C C7AA0038 */ lwc1 $f10, 0x38($sp)
/* 126E90 80283850 460A0402 */ mul.s $f16, $f0, $f10
/* 126E94 80283854 E6100018 */ swc1 $f16, 0x18($s0)
/* 126E98 80283858 0C0AE00E */ jal coss
/* 126E9C 8028385C 97A4002E */ lhu $a0, 0x2e($sp)
/* 126EA0 80283860 E600001C */ swc1 $f0, 0x1c($s0)
/* 126EA4 80283864 0C0AE006 */ jal sins
/* 126EA8 80283868 97A4002E */ lhu $a0, 0x2e($sp)
/* 126EAC 8028386C E7A00038 */ swc1 $f0, 0x38($sp)
/* 126EB0 80283870 0C0AE006 */ jal sins
/* 126EB4 80283874 97A4006C */ lhu $a0, 0x6c($sp)
/* 126EB8 80283878 C7B20038 */ lwc1 $f18, 0x38($sp)
/* 126EBC 8028387C 3C058028 */ lui $a1, %hi(D_802876E0+0xC) # $a1, 0x8028
/* 126EC0 80283880 24A576EC */ addiu $a1, %lo(D_802876E0+0xC) # addiu $a1, $a1, 0x76ec
/* 126EC4 80283884 46009107 */ neg.s $f4, $f18
/* 126EC8 80283888 02002025 */ move $a0, $s0
/* 126ECC 8028388C 46040182 */ mul.s $f6, $f0, $f4
/* 126ED0 80283890 0C0A0802 */ jal vec3f_copy_dupe
/* 126ED4 80283894 E6060020 */ swc1 $f6, 0x20($s0)
/* 126ED8 80283898 3C058028 */ lui $a1, %hi(D_802876E0) # $a1, 0x8028
/* 126EDC 8028389C 24A576E0 */ addiu $a1, %lo(D_802876E0) # addiu $a1, $a1, 0x76e0
/* 126EE0 802838A0 0C0A0802 */ jal vec3f_copy_dupe
/* 126EE4 802838A4 8FA40034 */ lw $a0, 0x34($sp)
/* 126EE8 802838A8 3C08800E */ lui $t0, %hi(gGamestate) # $t0, 0x800e
/* 126EEC 802838AC 8D08C50C */ lw $t0, %lo(gGamestate)($t0)
/* 126EF0 802838B0 24010009 */ li $at, 9
/* 126EF4 802838B4 3C09800E */ lui $t1, %hi(gIsMirrorMode) # $t1, 0x800e
/* 126EF8 802838B8 1501000A */ bne $t0, $at, .L802838E4
/* 126EFC 802838BC 00000000 */ nop
/* 126F00 802838C0 8D29C604 */ lw $t1, %lo(gIsMirrorMode)($t1)
/* 126F04 802838C4 11200007 */ beqz $t1, .L802838E4
/* 126F08 802838C8 00000000 */ nop
/* 126F0C 802838CC C6080000 */ lwc1 $f8, ($s0)
/* 126F10 802838D0 C610000C */ lwc1 $f16, 0xc($s0)
/* 126F14 802838D4 46004287 */ neg.s $f10, $f8
/* 126F18 802838D8 46008487 */ neg.s $f18, $f16
/* 126F1C 802838DC E60A0000 */ swc1 $f10, ($s0)
/* 126F20 802838E0 E612000C */ swc1 $f18, 0xc($s0)
.L802838E4:
/* 126F24 802838E4 3C058028 */ lui $a1, %hi(D_802876E0) # $a1, 0x8028
/* 126F28 802838E8 24A576E0 */ addiu $a1, %lo(D_802876E0) # addiu $a1, $a1, 0x76e0
/* 126F2C 802838EC 00002025 */ move $a0, $zero
/* 126F30 802838F0 0C0A0BD1 */ jal func_80282F44
/* 126F34 802838F4 02003025 */ move $a2, $s0
/* 126F38 802838F8 3C058028 */ lui $a1, %hi(D_802876E0) # $a1, 0x8028
/* 126F3C 802838FC 24A576E0 */ addiu $a1, %lo(D_802876E0) # addiu $a1, $a1, 0x76e0
/* 126F40 80283900 24040001 */ li $a0, 1
/* 126F44 80283904 0C0A0BD1 */ jal func_80282F44
/* 126F48 80283908 02003025 */ move $a2, $s0
/* 126F4C 8028390C 3C048028 */ lui $a0, %hi(D_802876E0) # $a0, 0x8028
/* 126F50 80283910 3C058015 */ lui $a1, %hi(D_80150130) # $a1, 0x8015
/* 126F54 80283914 24A50130 */ addiu $a1, %lo(D_80150130) # addiu $a1, $a1, 0x130
/* 126F58 80283918 0C0A0C40 */ jal func_80283100
/* 126F5C 8028391C 248476E0 */ addiu $a0, %lo(D_802876E0) # addiu $a0, $a0, 0x76e0
/* 126F60 80283920 3C048028 */ lui $a0, %hi(D_80287700+0x10) # $a0, 0x8028
/* 126F64 80283924 24847710 */ addiu $a0, %lo(D_80287700+0x10) # addiu $a0, $a0, 0x7710
/* 126F68 80283928 0C0A0802 */ jal vec3f_copy_dupe
/* 126F6C 8028392C 02002825 */ move $a1, $s0
/* 126F70 80283930 3C048028 */ lui $a0, %hi(D_80287700+0x4) # $a0, 0x8028
/* 126F74 80283934 24847704 */ addiu $a0, %lo(D_80287700+0x4) # addiu $a0, $a0, 0x7704
/* 126F78 80283938 0C0A0802 */ jal vec3f_copy_dupe
/* 126F7C 8028393C 8FA50034 */ lw $a1, 0x34($sp)
/* 126F80 80283940 3C048028 */ lui $a0, %hi(D_80287700+0x1C) # $a0, 0x8028
/* 126F84 80283944 2484771C */ addiu $a0, %lo(D_80287700+0x1C) # addiu $a0, $a0, 0x771c
/* 126F88 80283948 0C0A0802 */ jal vec3f_copy_dupe
/* 126F8C 8028394C 8FA50030 */ lw $a1, 0x30($sp)
/* 126F90 80283950 8FBF0024 */ lw $ra, 0x24($sp)
/* 126F94 80283954 3C028028 */ lui $v0, %hi(D_802876D8) # $v0, 0x8028
/* 126F98 80283958 8C4276D8 */ lw $v0, %lo(D_802876D8)($v0)
/* 126F9C 8028395C 8FB00020 */ lw $s0, 0x20($sp)
/* 126FA0 80283960 03E00008 */ jr $ra
/* 126FA4 80283964 27BD0070 */ addiu $sp, $sp, 0x70
+1 -42
View File
@@ -50,50 +50,9 @@ typedef struct {
/* 0xB4 */ f32 unk_B4;
} Camera; /* size = 0xB8 */
typedef BAD_RETURN(s32) (*CameraEvent)(struct Camera *c);
typedef BAD_RETURN(s32) (*CameraEvent)(Camera *c);
typedef CameraEvent CutsceneShot;
// The camera used for cutscenes appears to
// use a slightly different struct.
// Or even no struct at all.
typedef struct {
/* 0x00 */ Vec3f pos;
/* 0x0C */ Vec3f lookAt;
// This is expected to be a normalized vector, indicates what direction is "up" for the camera
/* 0x18 */ f32 unk18;
/* 0x1C */ u8 cutscene; // ?
/* 0x20 */ f32 unk20[10]; // ???
// I think these are the "nautical angles" between pos and lookAt
// rot[0] = pitch, rot[1] = yaw, rot[2] = roll?
/* 0x24 */ Vec3s rot;
/* 0x2A */ s16 rotZ;
/* 0x2C */ s16 unk_2C;
/* 0x2E */ s16 unk_2E;
/* 0x30 */ Vec3f unk_30;
/* 0x3C */ Vec3f unk_3C;
/* 0x48 */ s32 unk_48;
/* 0x4C */ s32 unk_4C;
/* 0x50 */ s32 unk_50;
/* 0x54 */ UnkActorInner unk_54;
// When you hit a wall (or another driver) the camera's pos and lookAt bounce up and down. This is the velocity(?) of that bouncing
/* 0x94 */ f32 unk_94;
/* 0x98 */ s16 unk_98;
/* 0x9A */ s16 unk_9A;
// Timer for wall-hit bounce. Counts up instead of down
/* 0x9C */ s16 unk_9C;
/* 0x9E */ s16 pad_9E;
/* 0xA0 */ f32 unk_A0;
/* 0xA4 */ s32 unk_A4;
/* 0xA8 */ s32 unk_A8;
/* 0xAC */ s16 unk_AC;
// Id of the player the camera is following.
/* 0xAE */ s16 playerId;
// Seems related to camera movement during drifting
/* 0xB0 */ s16 unk_B0;
/* 0xB2 */ s16 unk_B2;
/* 0xB4 */ f32 unk_B4;
} CinematicCamera; /* size = 0xB8 */
void func_8001CA10(Camera*);
void func_8001CA24(Player*, f32);
void func_8001CA78(Player*, Camera*, Vec3f, f32*, f32*, f32*, s16, s8);
+429 -621
View File
File diff suppressed because it is too large Load Diff
+148 -46
View File
@@ -2,6 +2,73 @@
#define CEREMONY_AND_CREDITS_H
#include "common_structs.h"
#include "camera.h"
struct struct_80283431 {
Vec3f unk0;
Vec3s unkC;
};
struct struct_80283430 {
s8 unk0; // index
s8 unk1; // speed
u16 unk2; // point
s8 unk4;
s8 unk5;
Vec3s unk6;
};
struct credits_data_1FA0 {
Vec3f unk0;
s8 pad[0x10];
s8 unk1C;
s8 unk1D;
s16 unk1E;
f32 unk20;
s8 pad2[0x24];
s16 unk48[3];
s16 unk4E[2];
s16 un52;
s16 unk54[2];
s16 unk58;
s16 unk5A[2];
s16 unk5E;
s16 unk60;
s16 unk62;
f32 unk64;
f32 unk68;
s16 unk6C;
s16 unk6E;
};
// Cinematic camera? Camera rails?
// CutsceneVariable?
/**
* Struct used to store cutscene info, like the camera's target position/focus.
*
* See the sCutsceneVars[] array in camera.c for more details.
*/
struct CinematicCamera {
/* 0x00 */ Vec3f pos;
/* 0x0C */ Vec3f lookAt;
/* 0x18 */ f32 unk18;
/* 0x1C */ u8 cutscene;
/* 0x20 */ f32 unk20;
/* 0x24 */ Vec3f unk24;
/* 0x30 */ Vec3f unk30;
/* 0x3C */ Vec3f unk3C;
/* 0x48 */ Vec3s unk48;
/* 0x4E */ Vec3s unk4E;
/* 0x54 */ Vec3s unk54;
/* 0x5A */ Vec3s unk5A;
/* 0x60 */ s16 unk60;
/* 0x62 */ s16 unk62;
/* 0x64 */ f32 unk64;
/* 0x68 */ f32 unk68;
/* 0x6C */ s16 unk6C;
/* 0x6E */ s16 unk6E;
}; // size = 0x70
struct struct_80282C40 {
s8 unk0;
@@ -15,7 +82,7 @@ struct struct_80282C40 {
struct struct_80285D80 {
u8 unk0[6];
s16 unk6[3];
Vec3s unk6;
};
struct struct_80286A04 {
@@ -26,6 +93,19 @@ struct struct_80286A04 {
u16 unkC;
};
struct CutsceneSplinePoint {
s8 index;
u8 speed;
Vec3s point;
};
struct Cutscene {
/* 0x0 */ void (*shot)(struct CinematicCamera*);
/* 0x4 */ s16 duration;
/* 0x6 */ //s16 pad;
}; /* size = 0x8 */
/* Function Prototypes */
void vec3f_set_dupe(Vec3f, f32, f32, f32);
@@ -43,59 +123,80 @@ s32 func_80282200(s16*, s16, s16);
s32 set_transition_colour_fade_alpha_ending(f32*, f32, f32);
s32 func_80282364(s16*, s16, s16);
void reset_spline();
void func_80282434(Camera*);
void func_80282434(struct CinematicCamera*);
void func_80282454(Vec3f, Vec3f, f32*, s16*, s16*);
void func_80282504(Vec3f, Vec3f, f32, s16, s16);
void func_802825C8(Vec3f, Vec3f, Vec3f, Vec3s);
s32 func_80282D90(Camera*, struct struct_80286A04*, struct struct_80286A04*, s32);
void func_80282E58(Camera*, struct struct_80282C40*, s32);
void func_80282700(f32, Vec3f, f32*, f32[], f32[], f32[], f32[]);
s32 move_point_along_spline(Vec3f, f32*, struct struct_80283430[], s16*, f32*);
void func_80282BE4(struct struct_80283430*, s8, u8, s8, Vec3s, s32);
void func_80282C40(struct struct_80283430*, struct struct_80282C40*, s32);
s32 func_80282D90(struct CinematicCamera*, struct struct_80286A04*, struct struct_80286A04*, s32);
void func_80282E58(struct CinematicCamera*, struct struct_80282C40*, s32);
void func_80282EAC(s32, struct CinematicCamera*, s16, s16, s16);
void func_80282F00(s16*, s16);
void func_80282F44(s32, struct CinematicCamera*, Camera*);
void func_802830B4(struct CinematicCamera*, s16, s16, s16);
void func_80283100(struct CinematicCamera*, f32*);
void func_80283240(s16);
s32 cutscene_event(CameraEvent event, Camera*, s16, s16);
s32 cutscene_event(CameraEvent event, struct CinematicCamera*, s16, s16);
s32 func_80283330(s32);
s32 func_8028336C(struct CinematicCamera*, Camera*);
s32 func_80283428();
void func_80283968(Camera*);
void func_80283994(CinematicCamera*);
void func_802839B4(Camera*);
void func_802839CC(Camera*);
void func_802839E0(Camera*);
void func_80283A34(CinematicCamera*);
void func_80283A54(Camera*);
void func_80283A7C(CinematicCamera*);
void func_80283B6C(Camera*);
void func_80283BA4(Camera*);
void func_80283BF0(CinematicCamera*);
void func_80283C14(Camera*);
void func_80283C38(Camera*);
void func_80283C58(CinematicCamera*);
void func_80283C78(s32);
void func_80283CA8(CinematicCamera*);
void func_80283CD0(s32);
void play_sound_farewell(s32);
void func_80283D2C(CinematicCamera*);
void func_80283EA0(Camera*);
void func_80283ED0(Camera*);
void func_80283EF8(Camera*);
void func_80283F6C(Camera*);
void func_80283FCC(Camera*);
void func_80283FF4(Camera*);
void func_80284068(Camera*);
void func_802840C8(Camera*);
void func_80284154(Camera*);
void func_80284184(Camera*);
void func_802841E8(Camera*);
void func_8028422C(Camera*);
void func_802842A8(Camera*);
void func_802842D8(Camera*);
void func_80284418(Camera*);
void func_80284494(Camera*);
void func_802844FC(Camera*);
void func_8028454C(Camera*);
void func_802845EC(Camera*);
void func_8028461C(Camera*);
void func_80284648(Camera*);
void func_80283968(struct CinematicCamera*);
void func_80283994(struct CinematicCamera*);
void func_802839B4(struct CinematicCamera*);
void func_802839CC(struct CinematicCamera*);
void func_802839E0(struct CinematicCamera*);
void play_sound_welcome(struct CinematicCamera*);
void func_80283A34(struct CinematicCamera*);
void play_sound_congratulation(struct CinematicCamera*);
void play_sound_balloon_pop(struct CinematicCamera*);
void play_sound_fish(struct CinematicCamera*);
void play_sound_fish_2(struct CinematicCamera*);
void play_sound_shoot_trophy(struct CinematicCamera*);
void play_sound_podium(struct CinematicCamera*);
void play_sound_trophy(struct CinematicCamera*);
void func_80283A54(struct CinematicCamera*);
void func_80283A7C(struct CinematicCamera*);
void func_80283B6C(struct CinematicCamera*);
void func_80283BA4(struct CinematicCamera*);
void func_80283BF0(struct CinematicCamera*);
void func_80283C14(struct CinematicCamera*);
void func_80283C38(struct CinematicCamera*);
void func_80283C58(struct CinematicCamera*);
void func_80283C78(struct CinematicCamera*);
void func_80283CA8(struct CinematicCamera*);
void func_80283CD0(struct CinematicCamera*);
void play_sound_farewell(struct CinematicCamera*);
void func_80283D2C(struct CinematicCamera*);
void func_80283EA0(struct CinematicCamera*);
void func_80283ED0(struct CinematicCamera*);
void func_80283EF8(struct CinematicCamera*);
void func_80283F6C(struct CinematicCamera*);
void func_80283FCC(struct CinematicCamera*);
void func_80283FF4(struct CinematicCamera*);
void func_80284068(struct CinematicCamera*);
void func_802840C8(struct CinematicCamera*);
void func_80284154(struct CinematicCamera*);
void func_80284184(struct CinematicCamera*);
void func_802841E8(struct CinematicCamera*);
void func_8028422C(struct CinematicCamera*);
void func_802842A8(struct CinematicCamera*);
void func_802842D8(struct CinematicCamera*);
void func_80284308(struct CinematicCamera*);
void func_80284418(struct CinematicCamera*);
void func_80284494(struct CinematicCamera*);
void func_802844FC(struct CinematicCamera*);
void func_8028454C(struct CinematicCamera*);
void func_802845EC(struct CinematicCamera*);
void func_8028461C(struct CinematicCamera*);
void func_80284648(struct CinematicCamera*);
void func_802846AC();
void func_802846B4(Camera*);
void func_802846B4(struct CinematicCamera*);
void func_802846E4(struct CinematicCamera*);
void func_802847CC(struct CinematicCamera*);
void play_cutscene(struct CinematicCamera*);
void func_80284CC0();
/* This is where I'd put my static data, if I had any */
@@ -133,6 +234,7 @@ extern struct struct_80282C40 D_80285B90[];
extern struct struct_80282C40 D_80285BA8[];
extern struct struct_80282C40 D_80285C38[];
extern struct struct_80282C40 D_80285C74[];
extern struct Cutscene D_80285D10[];
extern s16 D_80285D14;
extern s32 D_802876D4;
extern s32 D_802876D8;
+1
View File
@@ -4,6 +4,7 @@
#include <PR/gu.h>
#include "main.h"
#include "variables.h"
#include "types.h"
#include "camera.h"
#include "memory.h"
-4
View File
@@ -18,16 +18,12 @@ extern f32 D_80150130[4];
extern s16 gCreditsCourseId;
extern u16 D_80150112;
extern s16 D_80164AF0;
extern u32 D_8018D120;
extern mk64_surface_map_ram (*D_8015F580)[];
extern u16 D_8015F588; // Number of entires in D_8015F580
extern u16 gIsInQuitToMenuTransition, gQuitToMenuTransitionCounter;
extern s32 D_802874A0;
extern u16 D_80164714, D_80164716, D_80164718;
extern u16 D_800DC5E4;
extern u32 gGamestate;
extern u32 D_802874FC;
extern u16 D_800DC518;