mirror of https://github.com/n64decomp/mk64.git
Match Segment 3 -> Matched code_80280650.c (#363)
* Match & doc code_80280650.c * Update readme
This commit is contained in:
parent
04e9e00227
commit
baaa2f930d
|
|
@ -6,7 +6,7 @@
|
|||
[](https://ci.valandil.ca/job/mk64/job/master/)
|
||||
[](https://ci.valandil.ca/job/mk64/job/master/)
|
||||
|
||||
C Files left: ~21 out of 35
|
||||
C files left: ~17 out of 40 (not counting audio)
|
||||
# Mario Kart 64
|
||||
|
||||
This repo contains a work-in-progress decompilation of Mario Kart 64 (U). The project pursues historical and educational elements within the game found via taking it apart and putting it back together. Inspiration to do so not only emanates from the game's hardware and technology but also its immensely positive effects on the cultures and families of nearly every nationality. See [progress](#Progress) for more information.
|
||||
|
|
|
|||
|
|
@ -47,20 +47,20 @@ glabel D_802874F8
|
|||
glabel D_802874FC
|
||||
.skip 4
|
||||
|
||||
glabel D_80287500
|
||||
.skip 64
|
||||
#glabel D_80287500
|
||||
#.skip 64
|
||||
|
||||
glabel D_80287540
|
||||
.skip 16
|
||||
#glabel D_80287540
|
||||
#.skip 16
|
||||
|
||||
glabel gMenuSelectionFromEndingSequence
|
||||
.skip 4
|
||||
#glabel gMenuSelectionFromEndingSequence
|
||||
#.skip 4
|
||||
|
||||
glabel D_80287554
|
||||
.skip 12
|
||||
#glabel D_80287554
|
||||
#.skip 12
|
||||
|
||||
glabel D_80287560
|
||||
.skip 368
|
||||
#glabel D_80287560 80281C40.c
|
||||
#.skip 368
|
||||
|
||||
#glabel sCutsceneShot # Begin 80281fa0.c
|
||||
#.skip 2
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
.section .late_rodata
|
||||
|
||||
glabel D_80286B70
|
||||
.float 0.8
|
||||
|
||||
.section .text
|
||||
|
||||
glabel func_8028088C
|
||||
/* 123ECC 8028088C 27BDFFE0 */ addiu $sp, $sp, -0x20
|
||||
/* 123ED0 80280890 AFB00018 */ sw $s0, 0x18($sp)
|
||||
/* 123ED4 80280894 00808025 */ move $s0, $a0
|
||||
/* 123ED8 80280898 AFBF001C */ sw $ra, 0x1c($sp)
|
||||
/* 123EDC 8028089C 8607002C */ lh $a3, 0x2c($s0)
|
||||
/* 123EE0 802808A0 8606002E */ lh $a2, 0x2e($s0)
|
||||
/* 123EE4 802808A4 24840010 */ addiu $a0, $a0, 0x10
|
||||
/* 123EE8 802808A8 0C01AECD */ jal func_8006BB34
|
||||
/* 123EEC 802808AC 3C053F80 */ lui $a1, 0x3f80
|
||||
/* 123EF0 802808B0 3C018028 */ lui $at, %hi(D_80286B70) # $at, 0x8028
|
||||
/* 123EF4 802808B4 C4266B70 */ lwc1 $f6, %lo(D_80286B70)($at)
|
||||
/* 123EF8 802808B8 C6040014 */ lwc1 $f4, 0x14($s0)
|
||||
/* 123EFC 802808BC 96040030 */ lhu $a0, 0x30($s0)
|
||||
/* 123F00 802808C0 46062200 */ add.s $f8, $f4, $f6
|
||||
/* 123F04 802808C4 0C0AE006 */ jal sins
|
||||
/* 123F08 802808C8 E6080014 */ swc1 $f8, 0x14($s0)
|
||||
/* 123F0C 802808CC 860E0034 */ lh $t6, 0x34($s0)
|
||||
/* 123F10 802808D0 8E0A003C */ lw $t2, 0x3c($s0)
|
||||
/* 123F14 802808D4 86190030 */ lh $t9, 0x30($s0)
|
||||
/* 123F18 802808D8 448E5000 */ mtc1 $t6, $f10
|
||||
/* 123F1C 802808DC 86080032 */ lh $t0, 0x32($s0)
|
||||
/* 123F20 802808E0 254B0001 */ addiu $t3, $t2, 1
|
||||
/* 123F24 802808E4 46805420 */ cvt.s.w $f16, $f10
|
||||
/* 123F28 802808E8 29610321 */ slti $at, $t3, 0x321
|
||||
/* 123F2C 802808EC 03284821 */ addu $t1, $t9, $t0
|
||||
/* 123F30 802808F0 A6090030 */ sh $t1, 0x30($s0)
|
||||
/* 123F34 802808F4 AE0B003C */ sw $t3, 0x3c($s0)
|
||||
/* 123F38 802808F8 3C0D8028 */ lui $t5, %hi(D_802874CA) # $t5, 0x8028
|
||||
/* 123F3C 802808FC 46100482 */ mul.s $f18, $f0, $f16
|
||||
/* 123F40 80280900 4600910D */ trunc.w.s $f4, $f18
|
||||
/* 123F44 80280904 44182000 */ mfc1 $t8, $f4
|
||||
/* 123F48 80280908 14200002 */ bnez $at, .L80280914
|
||||
/* 123F4C 8028090C A618002E */ sh $t8, 0x2e($s0)
|
||||
/* 123F50 80280910 AE000000 */ sw $zero, ($s0)
|
||||
.L80280914:
|
||||
/* 123F54 80280914 85AD74CA */ lh $t5, %lo(D_802874CA)($t5)
|
||||
/* 123F58 80280918 24010001 */ li $at, 1
|
||||
/* 123F5C 8028091C 55A10003 */ bnel $t5, $at, .L8028092C
|
||||
/* 123F60 80280920 8FBF001C */ lw $ra, 0x1c($sp)
|
||||
/* 123F64 80280924 AE000000 */ sw $zero, ($s0)
|
||||
/* 123F68 80280928 8FBF001C */ lw $ra, 0x1c($sp)
|
||||
.L8028092C:
|
||||
/* 123F6C 8028092C 8FB00018 */ lw $s0, 0x18($sp)
|
||||
/* 123F70 80280930 27BD0020 */ addiu $sp, $sp, 0x20
|
||||
/* 123F74 80280934 03E00008 */ jr $ra
|
||||
/* 123F78 80280938 00000000 */ nop
|
||||
|
|
@ -1,170 +0,0 @@
|
|||
glabel func_80280D1C
|
||||
/* 12435C 80280D1C 27BDFF98 */ addiu $sp, $sp, -0x68
|
||||
/* 124360 80280D20 AFBF004C */ sw $ra, 0x4c($sp)
|
||||
/* 124364 80280D24 AFB70048 */ sw $s7, 0x48($sp)
|
||||
/* 124368 80280D28 AFB60044 */ sw $s6, 0x44($sp)
|
||||
/* 12436C 80280D2C AFB50040 */ sw $s5, 0x40($sp)
|
||||
/* 124370 80280D30 AFB4003C */ sw $s4, 0x3c($sp)
|
||||
/* 124374 80280D34 AFB30038 */ sw $s3, 0x38($sp)
|
||||
/* 124378 80280D38 AFB20034 */ sw $s2, 0x34($sp)
|
||||
/* 12437C 80280D3C AFB10030 */ sw $s1, 0x30($sp)
|
||||
/* 124380 80280D40 AFB0002C */ sw $s0, 0x2c($sp)
|
||||
/* 124384 80280D44 F7B80020 */ sdc1 $f24, 0x20($sp)
|
||||
/* 124388 80280D48 F7B60018 */ sdc1 $f22, 0x18($sp)
|
||||
/* 12438C 80280D4C F7B40010 */ sdc1 $f20, 0x10($sp)
|
||||
/* 124390 80280D50 8C8E0044 */ lw $t6, 0x44($a0)
|
||||
/* 124394 80280D54 00809025 */ move $s2, $a0
|
||||
/* 124398 80280D58 00008025 */ move $s0, $zero
|
||||
/* 12439C 80280D5C 29C1001E */ slti $at, $t6, 0x1e
|
||||
/* 1243A0 80280D60 10200034 */ beqz $at, .L80280E34
|
||||
/* 1243A4 80280D64 00008825 */ move $s1, $zero
|
||||
/* 1243A8 80280D68 3C0141F0 */ li $at, 0x41F00000 # 30.000000
|
||||
/* 1243AC 80280D6C 4481C000 */ mtc1 $at, $f24
|
||||
/* 1243B0 80280D70 3C014000 */ li $at, 0x40000000 # 2.000000
|
||||
/* 1243B4 80280D74 4481B000 */ mtc1 $at, $f22
|
||||
/* 1243B8 80280D78 3C014120 */ li $at, 0x41200000 # 10.000000
|
||||
/* 1243BC 80280D7C 3C158028 */ lui $s5, %hi(D_80284E50) # $s5, 0x8028
|
||||
/* 1243C0 80280D80 4481A000 */ mtc1 $at, $f20
|
||||
/* 1243C4 80280D84 26B54E50 */ addiu $s5, %lo(D_80284E50) # addiu $s5, $s5, 0x4e50
|
||||
/* 1243C8 80280D88 24170064 */ li $s7, 100
|
||||
/* 1243CC 80280D8C 2416001E */ li $s6, 30
|
||||
/* 1243D0 80280D90 27B40058 */ addiu $s4, $sp, 0x58
|
||||
/* 1243D4 80280D94 2413000A */ li $s3, 10
|
||||
.L80280D98:
|
||||
/* 1243D8 80280D98 44914000 */ mtc1 $s1, $f8
|
||||
/* 1243DC 80280D9C C6440010 */ lwc1 $f4, 0x10($s2)
|
||||
/* 1243E0 80280DA0 02707823 */ subu $t7, $s3, $s0
|
||||
/* 1243E4 80280DA4 468042A0 */ cvt.s.w $f10, $f8
|
||||
/* 1243E8 80280DA8 E7A40058 */ swc1 $f4, 0x58($sp)
|
||||
/* 1243EC 80280DAC C6460014 */ lwc1 $f6, 0x14($s2)
|
||||
/* 1243F0 80280DB0 448F2000 */ mtc1 $t7, $f4
|
||||
/* 1243F4 80280DB4 02802025 */ move $a0, $s4
|
||||
/* 1243F8 80280DB8 460A3401 */ sub.s $f16, $f6, $f10
|
||||
/* 1243FC 80280DBC 46802220 */ cvt.s.w $f8, $f4
|
||||
/* 124400 80280DC0 E7B0005C */ swc1 $f16, 0x5c($sp)
|
||||
/* 124404 80280DC4 C6520018 */ lwc1 $f18, 0x18($s2)
|
||||
/* 124408 80280DC8 E7B20060 */ swc1 $f18, 0x60($sp)
|
||||
/* 12440C 80280DCC 8E490044 */ lw $t1, 0x44($s2)
|
||||
/* 124410 80280DD0 46144183 */ div.s $f6, $f8, $f20
|
||||
/* 124414 80280DD4 8E580048 */ lw $t8, 0x48($s2)
|
||||
/* 124418 80280DD8 02C95023 */ subu $t2, $s6, $t1
|
||||
/* 12441C 80280DDC 01570019 */ multu $t2, $s7
|
||||
/* 124420 80280DE0 0018C880 */ sll $t9, $t8, 2
|
||||
/* 124424 80280DE4 02B94021 */ addu $t0, $s5, $t9
|
||||
/* 124428 80280DE8 8D060000 */ lw $a2, ($t0)
|
||||
/* 12442C 80280DEC 00005812 */ mflo $t3
|
||||
/* 124430 80280DF0 448B8000 */ mtc1 $t3, $f16
|
||||
/* 124434 80280DF4 00000000 */ nop
|
||||
/* 124438 80280DF8 468084A0 */ cvt.s.w $f18, $f16
|
||||
/* 12443C 80280DFC 46163282 */ mul.s $f10, $f6, $f22
|
||||
/* 124440 80280E00 46189103 */ div.s $f4, $f18, $f24
|
||||
/* 124444 80280E04 44055000 */ mfc1 $a1, $f10
|
||||
/* 124448 80280E08 4600220D */ trunc.w.s $f8, $f4
|
||||
/* 12444C 80280E0C 44074000 */ mfc1 $a3, $f8
|
||||
/* 124450 80280E10 00000000 */ nop
|
||||
/* 124454 80280E14 00076C00 */ sll $t5, $a3, 0x10
|
||||
/* 124458 80280E18 0C0A02D4 */ jal func_80280B50
|
||||
/* 12445C 80280E1C 000D3C03 */ sra $a3, $t5, 0x10
|
||||
/* 124460 80280E20 26100001 */ addiu $s0, $s0, 1
|
||||
/* 124464 80280E24 1613FFDC */ bne $s0, $s3, .L80280D98
|
||||
/* 124468 80280E28 26310002 */ addiu $s1, $s1, 2
|
||||
/* 12446C 80280E2C 1000004C */ b .L80280F60
|
||||
/* 124470 80280E30 8E480044 */ lw $t0, 0x44($s2)
|
||||
.L80280E34:
|
||||
/* 124474 80280E34 8E42002C */ lw $v0, 0x2c($s2)
|
||||
/* 124478 80280E38 26440010 */ addiu $a0, $s2, 0x10
|
||||
/* 12447C 80280E3C 28410005 */ slti $at, $v0, 5
|
||||
/* 124480 80280E40 1020000F */ beqz $at, .L80280E80
|
||||
/* 124484 80280E44 000248C0 */ sll $t1, $v0, 3
|
||||
/* 124488 80280E48 3C014000 */ li $at, 0x40000000 # 2.000000
|
||||
/* 12448C 80280E4C 4481B000 */ mtc1 $at, $f22
|
||||
/* 124490 80280E50 C64A0038 */ lwc1 $f10, 0x38($s2)
|
||||
/* 124494 80280E54 C6460034 */ lwc1 $f6, 0x34($s2)
|
||||
/* 124498 80280E58 8E580040 */ lw $t8, 0x40($s2)
|
||||
/* 12449C 80280E5C 46165402 */ mul.s $f16, $f10, $f22
|
||||
/* 1244A0 80280E60 8E4F003C */ lw $t7, 0x3c($s2)
|
||||
/* 1244A4 80280E64 0018C840 */ sll $t9, $t8, 1
|
||||
/* 1244A8 80280E68 8E42002C */ lw $v0, 0x2c($s2)
|
||||
/* 1244AC 80280E6C 01F91821 */ addu $v1, $t7, $t9
|
||||
/* 1244B0 80280E70 AE43003C */ sw $v1, 0x3c($s2)
|
||||
/* 1244B4 80280E74 46103480 */ add.s $f18, $f6, $f16
|
||||
/* 1244B8 80280E78 10000020 */ b .L80280EFC
|
||||
/* 1244BC 80280E7C E6520034 */ swc1 $f18, 0x34($s2)
|
||||
.L80280E80:
|
||||
/* 1244C0 80280E80 01224823 */ subu $t1, $t1, $v0
|
||||
/* 1244C4 80280E84 252AFFDD */ addiu $t2, $t1, -0x23
|
||||
/* 1244C8 80280E88 448A4000 */ mtc1 $t2, $f8
|
||||
/* 1244CC 80280E8C 3C014120 */ li $at, 0x41200000 # 10.000000
|
||||
/* 1244D0 80280E90 4481A000 */ mtc1 $at, $f20
|
||||
/* 1244D4 80280E94 468042A0 */ cvt.s.w $f10, $f8
|
||||
/* 1244D8 80280E98 8E4C0040 */ lw $t4, 0x40($s2)
|
||||
/* 1244DC 80280E9C 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
||||
/* 1244E0 80280EA0 44812000 */ mtc1 $at, $f4
|
||||
/* 1244E4 80280EA4 448C4000 */ mtc1 $t4, $f8
|
||||
/* 1244E8 80280EA8 8E4B003C */ lw $t3, 0x3c($s2)
|
||||
/* 1244EC 80280EAC 46145183 */ div.s $f6, $f10, $f20
|
||||
/* 1244F0 80280EB0 448B8000 */ mtc1 $t3, $f16
|
||||
/* 1244F4 80280EB4 468042A0 */ cvt.s.w $f10, $f8
|
||||
/* 1244F8 80280EB8 C6480034 */ lwc1 $f8, 0x34($s2)
|
||||
/* 1244FC 80280EBC 468084A0 */ cvt.s.w $f18, $f16
|
||||
/* 124500 80280EC0 46062000 */ add.s $f0, $f4, $f6
|
||||
/* 124504 80280EC4 46005103 */ div.s $f4, $f10, $f0
|
||||
/* 124508 80280EC8 C64A0038 */ lwc1 $f10, 0x38($s2)
|
||||
/* 12450C 80280ECC 46049180 */ add.s $f6, $f18, $f4
|
||||
/* 124510 80280ED0 46005483 */ div.s $f18, $f10, $f0
|
||||
/* 124514 80280ED4 4600340D */ trunc.w.s $f16, $f6
|
||||
/* 124518 80280ED8 44038000 */ mfc1 $v1, $f16
|
||||
/* 12451C 80280EDC 00000000 */ nop
|
||||
/* 124520 80280EE0 AE43003C */ sw $v1, 0x3c($s2)
|
||||
/* 124524 80280EE4 46124100 */ add.s $f4, $f8, $f18
|
||||
/* 124528 80280EE8 04610004 */ bgez $v1, .L80280EFC
|
||||
/* 12452C 80280EEC E6440034 */ swc1 $f4, 0x34($s2)
|
||||
/* 124530 80280EF0 AE40003C */ sw $zero, 0x3c($s2)
|
||||
/* 124534 80280EF4 8E42002C */ lw $v0, 0x2c($s2)
|
||||
/* 124538 80280EF8 00001825 */ move $v1, $zero
|
||||
.L80280EFC:
|
||||
/* 12453C 80280EFC 24580001 */ addiu $t8, $v0, 1
|
||||
/* 124540 80280F00 18600008 */ blez $v1, .L80280F24
|
||||
/* 124544 80280F04 AE58002C */ sw $t8, 0x2c($s2)
|
||||
/* 124548 80280F08 C6400034 */ lwc1 $f0, 0x34($s2)
|
||||
/* 12454C 80280F0C 44803000 */ mtc1 $zero, $f6
|
||||
/* 124550 80280F10 00000000 */ nop
|
||||
/* 124554 80280F14 4600303C */ c.lt.s $f6, $f0
|
||||
/* 124558 80280F18 00000000 */ nop
|
||||
/* 12455C 80280F1C 45030007 */ bc1tl .L80280F3C
|
||||
/* 124560 80280F20 00033C00 */ sll $a3, $v1, 0x10
|
||||
.L80280F24:
|
||||
/* 124564 80280F24 8E4F002C */ lw $t7, 0x2c($s2)
|
||||
/* 124568 80280F28 29E1001E */ slti $at, $t7, 0x1e
|
||||
/* 12456C 80280F2C 5020000B */ beql $at, $zero, .L80280F5C
|
||||
/* 124570 80280F30 AE400000 */ sw $zero, ($s2)
|
||||
/* 124574 80280F34 C6400034 */ lwc1 $f0, 0x34($s2)
|
||||
/* 124578 80280F38 00033C00 */ sll $a3, $v1, 0x10
|
||||
.L80280F3C:
|
||||
/* 12457C 80280F3C 0007CC03 */ sra $t9, $a3, 0x10
|
||||
/* 124580 80280F40 44050000 */ mfc1 $a1, $f0
|
||||
/* 124584 80280F44 03203825 */ move $a3, $t9
|
||||
/* 124588 80280F48 0C0A02D4 */ jal func_80280B50
|
||||
/* 12458C 80280F4C 8E460030 */ lw $a2, 0x30($s2)
|
||||
/* 124590 80280F50 10000003 */ b .L80280F60
|
||||
/* 124594 80280F54 8E480044 */ lw $t0, 0x44($s2)
|
||||
/* 124598 80280F58 AE400000 */ sw $zero, ($s2)
|
||||
.L80280F5C:
|
||||
/* 12459C 80280F5C 8E480044 */ lw $t0, 0x44($s2)
|
||||
.L80280F60:
|
||||
/* 1245A0 80280F60 25090001 */ addiu $t1, $t0, 1
|
||||
/* 1245A4 80280F64 AE490044 */ sw $t1, 0x44($s2)
|
||||
/* 1245A8 80280F68 8FBF004C */ lw $ra, 0x4c($sp)
|
||||
/* 1245AC 80280F6C 8FB70048 */ lw $s7, 0x48($sp)
|
||||
/* 1245B0 80280F70 8FB60044 */ lw $s6, 0x44($sp)
|
||||
/* 1245B4 80280F74 8FB50040 */ lw $s5, 0x40($sp)
|
||||
/* 1245B8 80280F78 8FB4003C */ lw $s4, 0x3c($sp)
|
||||
/* 1245BC 80280F7C 8FB30038 */ lw $s3, 0x38($sp)
|
||||
/* 1245C0 80280F80 8FB20034 */ lw $s2, 0x34($sp)
|
||||
/* 1245C4 80280F84 8FB10030 */ lw $s1, 0x30($sp)
|
||||
/* 1245C8 80280F88 8FB0002C */ lw $s0, 0x2c($sp)
|
||||
/* 1245CC 80280F8C D7B80020 */ ldc1 $f24, 0x20($sp)
|
||||
/* 1245D0 80280F90 D7B60018 */ ldc1 $f22, 0x18($sp)
|
||||
/* 1245D4 80280F94 D7B40010 */ ldc1 $f20, 0x10($sp)
|
||||
/* 1245D8 80280F98 03E00008 */ jr $ra
|
||||
/* 1245DC 80280F9C 27BD0068 */ addiu $sp, $sp, 0x68
|
||||
|
|
@ -1,101 +0,0 @@
|
|||
.section .late_rodata
|
||||
|
||||
glabel D_80286B80
|
||||
.float 3000
|
||||
|
||||
.section .text
|
||||
|
||||
glabel func_8028101C
|
||||
/* 12465C 8028101C 27BDFF90 */ addiu $sp, $sp, -0x70
|
||||
/* 124660 80281020 F7BE0038 */ sdc1 $f30, 0x38($sp)
|
||||
/* 124664 80281024 3C014461 */ li $at, 0x44610000 # 900.000000
|
||||
/* 124668 80281028 4481F000 */ mtc1 $at, $f30
|
||||
/* 12466C 8028102C F7BC0030 */ sdc1 $f28, 0x30($sp)
|
||||
/* 124670 80281030 3C0143C8 */ li $at, 0x43C80000 # 400.000000
|
||||
/* 124674 80281034 44842000 */ mtc1 $a0, $f4
|
||||
/* 124678 80281038 44854000 */ mtc1 $a1, $f8
|
||||
/* 12467C 8028103C 44868000 */ mtc1 $a2, $f16
|
||||
/* 124680 80281040 4481E000 */ mtc1 $at, $f28
|
||||
/* 124684 80281044 F7BA0028 */ sdc1 $f26, 0x28($sp)
|
||||
/* 124688 80281048 3C0140E0 */ li $at, 0x40E00000 # 7.000000
|
||||
/* 12468C 8028104C 4481D000 */ mtc1 $at, $f26
|
||||
/* 124690 80281050 468021A0 */ cvt.s.w $f6, $f4
|
||||
/* 124694 80281054 F7B80020 */ sdc1 $f24, 0x20($sp)
|
||||
/* 124698 80281058 3C014416 */ li $at, 0x44160000 # 600.000000
|
||||
/* 12469C 8028105C 4481C000 */ mtc1 $at, $f24
|
||||
/* 1246A0 80281060 F7B60018 */ sdc1 $f22, 0x18($sp)
|
||||
/* 1246A4 80281064 468042A0 */ cvt.s.w $f10, $f8
|
||||
/* 1246A8 80281068 3C0143BE */ li $at, 0x43BE0000 # 380.000000
|
||||
/* 1246AC 8028106C 4481B000 */ mtc1 $at, $f22
|
||||
/* 1246B0 80281070 AFB2004C */ sw $s2, 0x4c($sp)
|
||||
/* 1246B4 80281074 F7B40010 */ sdc1 $f20, 0x10($sp)
|
||||
/* 1246B8 80281078 468084A0 */ cvt.s.w $f18, $f16
|
||||
/* 1246BC 8028107C 3C014348 */ li $at, 0x43480000 # 200.000000
|
||||
/* 1246C0 80281080 AFB30050 */ sw $s3, 0x50($sp)
|
||||
/* 1246C4 80281084 AFB10048 */ sw $s1, 0x48($sp)
|
||||
/* 1246C8 80281088 3C128028 */ lui $s2, %hi(D_80284E64) # $s2, 0x8028
|
||||
/* 1246CC 8028108C 4481A000 */ mtc1 $at, $f20
|
||||
/* 1246D0 80281090 AFBF0054 */ sw $ra, 0x54($sp)
|
||||
/* 1246D4 80281094 AFB00044 */ sw $s0, 0x44($sp)
|
||||
/* 1246D8 80281098 26524E64 */ addiu $s2, %lo(D_80284E64) # addiu $s2, $s2, 0x4e64
|
||||
/* 1246DC 8028109C 00008825 */ move $s1, $zero
|
||||
/* 1246E0 802810A0 24130064 */ li $s3, 100
|
||||
/* 1246E4 802810A4 E7B2005C */ swc1 $f18, 0x5c($sp)
|
||||
/* 1246E8 802810A8 E7AA0060 */ swc1 $f10, 0x60($sp)
|
||||
/* 1246EC 802810AC E7A60064 */ swc1 $f6, 0x64($sp)
|
||||
.L802810B0:
|
||||
/* 1246F0 802810B0 0C0A01CD */ jal func_80280734
|
||||
/* 1246F4 802810B4 02402025 */ move $a0, $s2
|
||||
/* 1246F8 802810B8 00408025 */ move $s0, $v0
|
||||
/* 1246FC 802810BC 0C0A0214 */ jal func_80280850
|
||||
/* 124700 802810C0 4600A306 */ mov.s $f12, $f20
|
||||
/* 124704 802810C4 C7A40064 */ lwc1 $f4, 0x64($sp)
|
||||
/* 124708 802810C8 4600B306 */ mov.s $f12, $f22
|
||||
/* 12470C 802810CC 46040180 */ add.s $f6, $f0, $f4
|
||||
/* 124710 802810D0 0C0A0214 */ jal func_80280850
|
||||
/* 124714 802810D4 E6060010 */ swc1 $f6, 0x10($s0)
|
||||
/* 124718 802810D8 C7A80060 */ lwc1 $f8, 0x60($sp)
|
||||
/* 12471C 802810DC 4600C306 */ mov.s $f12, $f24
|
||||
/* 124720 802810E0 46080280 */ add.s $f10, $f0, $f8
|
||||
/* 124724 802810E4 0C0A0214 */ jal func_80280850
|
||||
/* 124728 802810E8 E60A0014 */ swc1 $f10, 0x14($s0)
|
||||
/* 12472C 802810EC C7B0005C */ lwc1 $f16, 0x5c($sp)
|
||||
/* 124730 802810F0 46100480 */ add.s $f18, $f0, $f16
|
||||
/* 124734 802810F4 0C0A0203 */ jal random_float_between_0_and_1
|
||||
/* 124738 802810F8 E6120018 */ swc1 $f18, 0x18($s0)
|
||||
/* 12473C 802810FC 461A0102 */ mul.s $f4, $f0, $f26
|
||||
/* 124740 80281100 4600218D */ trunc.w.s $f6, $f4
|
||||
/* 124744 80281104 440F3000 */ mfc1 $t7, $f6
|
||||
/* 124748 80281108 0C0A01DB */ jal random_u16_credits
|
||||
/* 12474C 8028110C A60F002C */ sh $t7, 0x2c($s0)
|
||||
/* 124750 80281110 A6020030 */ sh $v0, 0x30($s0)
|
||||
/* 124754 80281114 0C0A0214 */ jal func_80280850
|
||||
/* 124758 80281118 4600E306 */ mov.s $f12, $f28
|
||||
/* 12475C 8028111C 461E0200 */ add.s $f8, $f0, $f30
|
||||
/* 124760 80281120 3C0144FA */ li $at, 0x44FA0000 # 2000.000000
|
||||
/* 124764 80281124 44816000 */ mtc1 $at, $f12
|
||||
/* 124768 80281128 4600428D */ trunc.w.s $f10, $f8
|
||||
/* 12476C 8028112C 44195000 */ mfc1 $t9, $f10
|
||||
/* 124770 80281130 0C0A0214 */ jal func_80280850
|
||||
/* 124774 80281134 A6190032 */ sh $t9, 0x32($s0)
|
||||
/* 124778 80281138 3C018028 */ lui $at, %hi(D_80286B80) # $at, 0x8028
|
||||
/* 12477C 8028113C C4306B80 */ lwc1 $f16, %lo(D_80286B80)($at)
|
||||
/* 124780 80281140 26310001 */ addiu $s1, $s1, 1
|
||||
/* 124784 80281144 46100480 */ add.s $f18, $f0, $f16
|
||||
/* 124788 80281148 4600910D */ trunc.w.s $f4, $f18
|
||||
/* 12478C 8028114C 44092000 */ mfc1 $t1, $f4
|
||||
/* 124790 80281150 1633FFD7 */ bne $s1, $s3, .L802810B0
|
||||
/* 124794 80281154 A6090034 */ sh $t1, 0x34($s0)
|
||||
/* 124798 80281158 8FBF0054 */ lw $ra, 0x54($sp)
|
||||
/* 12479C 8028115C D7B40010 */ ldc1 $f20, 0x10($sp)
|
||||
/* 1247A0 80281160 D7B60018 */ ldc1 $f22, 0x18($sp)
|
||||
/* 1247A4 80281164 D7B80020 */ ldc1 $f24, 0x20($sp)
|
||||
/* 1247A8 80281168 D7BA0028 */ ldc1 $f26, 0x28($sp)
|
||||
/* 1247AC 8028116C D7BC0030 */ ldc1 $f28, 0x30($sp)
|
||||
/* 1247B0 80281170 D7BE0038 */ ldc1 $f30, 0x38($sp)
|
||||
/* 1247B4 80281174 8FB00044 */ lw $s0, 0x44($sp)
|
||||
/* 1247B8 80281178 8FB10048 */ lw $s1, 0x48($sp)
|
||||
/* 1247BC 8028117C 8FB2004C */ lw $s2, 0x4c($sp)
|
||||
/* 1247C0 80281180 8FB30050 */ lw $s3, 0x50($sp)
|
||||
/* 1247C4 80281184 03E00008 */ jr $ra
|
||||
/* 1247C8 80281188 27BD0070 */ addiu $sp, $sp, 0x70
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
.section .late_rodata
|
||||
|
||||
glabel D_80286B84
|
||||
.float 1.1
|
||||
|
||||
.section .text
|
||||
|
||||
glabel func_8028118C
|
||||
/* 1247CC 8028118C 27BDFFE0 */ addiu $sp, $sp, -0x20
|
||||
/* 1247D0 80281190 AFBF001C */ sw $ra, 0x1c($sp)
|
||||
/* 1247D4 80281194 AFB00018 */ sw $s0, 0x18($sp)
|
||||
/* 1247D8 80281198 AFA40020 */ sw $a0, 0x20($sp)
|
||||
/* 1247DC 8028119C AFA50024 */ sw $a1, 0x24($sp)
|
||||
/* 1247E0 802811A0 0C0A0203 */ jal random_float_between_0_and_1
|
||||
/* 1247E4 802811A4 AFA60028 */ sw $a2, 0x28($sp)
|
||||
/* 1247E8 802811A8 3C0E8028 */ lui $t6, %hi(D_802874BE) # $t6, 0x8028
|
||||
/* 1247EC 802811AC 85CE74BE */ lh $t6, %lo(D_802874BE)($t6)
|
||||
/* 1247F0 802811B0 3C013F80 */ li $at, 0x3F800000 # 1.000000
|
||||
/* 1247F4 802811B4 44815000 */ mtc1 $at, $f10
|
||||
/* 1247F8 802811B8 25CF000D */ addiu $t7, $t6, 0xd
|
||||
/* 1247FC 802811BC 448F2000 */ mtc1 $t7, $f4
|
||||
/* 124800 802811C0 3C048028 */ lui $a0, %hi(D_80284E70) # $a0, 0x8028
|
||||
/* 124804 802811C4 468021A0 */ cvt.s.w $f6, $f4
|
||||
/* 124808 802811C8 46003202 */ mul.s $f8, $f6, $f0
|
||||
/* 12480C 802811CC 460A403C */ c.lt.s $f8, $f10
|
||||
/* 124810 802811D0 00000000 */ nop
|
||||
/* 124814 802811D4 45020038 */ bc1fl .L802812B8
|
||||
/* 124818 802811D8 8FBF001C */ lw $ra, 0x1c($sp)
|
||||
/* 12481C 802811DC 0C0A01CD */ jal func_80280734
|
||||
/* 124820 802811E0 24844E70 */ addiu $a0, %lo(D_80284E70) # addiu $a0, $a0, 0x4e70
|
||||
/* 124824 802811E4 44806000 */ mtc1 $zero, $f12
|
||||
/* 124828 802811E8 0C0A0214 */ jal func_80280850
|
||||
/* 12482C 802811EC 00408025 */ move $s0, $v0
|
||||
/* 124830 802811F0 8FB80020 */ lw $t8, 0x20($sp)
|
||||
/* 124834 802811F4 3C198028 */ lui $t9, %hi(D_802874C6) # $t9, 0x8028
|
||||
/* 124838 802811F8 44988000 */ mtc1 $t8, $f16
|
||||
/* 12483C 802811FC 00000000 */ nop
|
||||
/* 124840 80281200 468084A0 */ cvt.s.w $f18, $f16
|
||||
/* 124844 80281204 46120100 */ add.s $f4, $f0, $f18
|
||||
/* 124848 80281208 E6040010 */ swc1 $f4, 0x10($s0)
|
||||
/* 12484C 8028120C 873974C6 */ lh $t9, %lo(D_802874C6)($t9)
|
||||
/* 124850 80281210 27280064 */ addiu $t0, $t9, 0x64
|
||||
/* 124854 80281214 44883000 */ mtc1 $t0, $f6
|
||||
/* 124858 80281218 0C0A0214 */ jal func_80280850
|
||||
/* 12485C 8028121C 46803320 */ cvt.s.w $f12, $f6
|
||||
/* 124860 80281220 8FA90024 */ lw $t1, 0x24($sp)
|
||||
/* 124864 80281224 3C0A8028 */ lui $t2, %hi(D_802874C8) # $t2, 0x8028
|
||||
/* 124868 80281228 44894000 */ mtc1 $t1, $f8
|
||||
/* 12486C 8028122C 00000000 */ nop
|
||||
/* 124870 80281230 468042A0 */ cvt.s.w $f10, $f8
|
||||
/* 124874 80281234 460A0400 */ add.s $f16, $f0, $f10
|
||||
/* 124878 80281238 E6100014 */ swc1 $f16, 0x14($s0)
|
||||
/* 12487C 8028123C 854A74C8 */ lh $t2, %lo(D_802874C8)($t2)
|
||||
/* 124880 80281240 254B02BC */ addiu $t3, $t2, 0x2bc
|
||||
/* 124884 80281244 448B9000 */ mtc1 $t3, $f18
|
||||
/* 124888 80281248 0C0A0214 */ jal func_80280850
|
||||
/* 12488C 8028124C 46809320 */ cvt.s.w $f12, $f18
|
||||
/* 124890 80281250 8FAC0028 */ lw $t4, 0x28($sp)
|
||||
/* 124894 80281254 3C038028 */ lui $v1, %hi(D_80287540) # $v1, 0x8028
|
||||
/* 124898 80281258 8C637540 */ lw $v1, %lo(D_80287540)($v1)
|
||||
/* 12489C 8028125C 448C2000 */ mtc1 $t4, $f4
|
||||
/* 1248A0 80281260 3C018028 */ lui $at, %hi(D_80286B84) # $at, 0x8028
|
||||
/* 1248A4 80281264 C4226B84 */ lwc1 $f2, %lo(D_80286B84)($at)
|
||||
/* 1248A8 80281268 468021A0 */ cvt.s.w $f6, $f4
|
||||
/* 1248AC 8028126C 30620003 */ andi $v0, $v1, 3
|
||||
/* 1248B0 80281270 00026880 */ sll $t5, $v0, 2
|
||||
/* 1248B4 80281274 3C0E8028 */ lui $t6, %hi(D_80284E50) # 0x8028
|
||||
/* 1248B8 80281278 AE020048 */ sw $v0, 0x48($s0)
|
||||
/* 1248BC 8028127C 01CD7021 */ addu $t6, $t6, $t5
|
||||
/* 1248C0 80281280 46060200 */ add.s $f8, $f0, $f6
|
||||
/* 1248C4 80281284 240F00FF */ li $t7, 255
|
||||
/* 1248C8 80281288 2418FFEF */ li $t8, -17
|
||||
/* 1248CC 8028128C 3C018028 */ lui $at, %hi(D_80287540) # $at, 0x8028
|
||||
/* 1248D0 80281290 E6080018 */ swc1 $f8, 0x18($s0)
|
||||
/* 1248D4 80281294 8DCE4E50 */ lw $t6, %lo(D_80284E50)($t6) # 0x4e50($t6)
|
||||
/* 1248D8 80281298 AE0F003C */ sw $t7, 0x3c($s0)
|
||||
/* 1248DC 8028129C AE180040 */ sw $t8, 0x40($s0)
|
||||
/* 1248E0 802812A0 24630001 */ addiu $v1, $v1, 1
|
||||
/* 1248E4 802812A4 E6020034 */ swc1 $f2, 0x34($s0)
|
||||
/* 1248E8 802812A8 E6020038 */ swc1 $f2, 0x38($s0)
|
||||
/* 1248EC 802812AC AE0E0030 */ sw $t6, 0x30($s0)
|
||||
/* 1248F0 802812B0 AC237540 */ sw $v1, %lo(D_80287540)($at)
|
||||
/* 1248F4 802812B4 8FBF001C */ lw $ra, 0x1c($sp)
|
||||
.L802812B8:
|
||||
/* 1248F8 802812B8 8FB00018 */ lw $s0, 0x18($sp)
|
||||
/* 1248FC 802812BC 27BD0020 */ addiu $sp, $sp, 0x20
|
||||
/* 124900 802812C0 03E00008 */ jr $ra
|
||||
/* 124904 802812C4 00000000 */ nop
|
||||
|
|
@ -1,97 +0,0 @@
|
|||
glabel func_802812C8
|
||||
/* 124908 802812C8 3C028016 */ lui $v0, %hi(cameras) # $v0, 0x8016
|
||||
/* 12490C 802812CC 244246F0 */ addiu $v0, %lo(cameras) # addiu $v0, $v0, 0x46f0
|
||||
/* 124910 802812D0 27BDFFD0 */ addiu $sp, $sp, -0x30
|
||||
/* 124914 802812D4 C444000C */ lwc1 $f4, 0xc($v0)
|
||||
/* 124918 802812D8 C4460010 */ lwc1 $f6, 0x10($v0)
|
||||
/* 12491C 802812DC C4480014 */ lwc1 $f8, 0x14($v0)
|
||||
/* 124920 802812E0 C44A0018 */ lwc1 $f10, 0x18($v0)
|
||||
/* 124924 802812E4 C450001C */ lwc1 $f16, 0x1c($v0)
|
||||
/* 124928 802812E8 C4520020 */ lwc1 $f18, 0x20($v0)
|
||||
/* 12492C 802812EC AFBF002C */ sw $ra, 0x2c($sp)
|
||||
/* 124930 802812F0 3C048028 */ lui $a0, %hi(D_80287500) # $a0, 0x8028
|
||||
/* 124934 802812F4 24847500 */ addiu $a0, %lo(D_80287500) # addiu $a0, $a0, 0x7500
|
||||
/* 124938 802812F8 8C450000 */ lw $a1, ($v0)
|
||||
/* 12493C 802812FC 8C460004 */ lw $a2, 4($v0)
|
||||
/* 124940 80281300 8C470008 */ lw $a3, 8($v0)
|
||||
/* 124944 80281304 E7A40010 */ swc1 $f4, 0x10($sp)
|
||||
/* 124948 80281308 E7A60014 */ swc1 $f6, 0x14($sp)
|
||||
/* 12494C 8028130C E7A80018 */ swc1 $f8, 0x18($sp)
|
||||
/* 124950 80281310 E7AA001C */ swc1 $f10, 0x1c($sp)
|
||||
/* 124954 80281314 E7B00020 */ swc1 $f16, 0x20($sp)
|
||||
/* 124958 80281318 0C033CE4 */ jal guLookAtF
|
||||
/* 12495C 8028131C E7B20024 */ swc1 $f18, 0x24($sp)
|
||||
/* 124960 80281320 3C0E8028 */ lui $t6, %hi(D_802874F5) # $t6, 0x8028
|
||||
/* 124964 80281324 81CE74F5 */ lb $t6, %lo(D_802874F5)($t6)
|
||||
/* 124968 80281328 3C028028 */ lui $v0, %hi(D_802874E0) # 0x8028
|
||||
/* 12496C 8028132C 29C10003 */ slti $at, $t6, 3
|
||||
/* 124970 80281330 10200028 */ beqz $at, .L802813D4
|
||||
/* 124974 80281334 00000000 */ nop
|
||||
/* 124978 80281338 3C028028 */ lui $v0, %hi(D_802874E0) # $v0, 0x8028
|
||||
/* 12497C 8028133C 8C4274E0 */ lw $v0, %lo(D_802874E0)($v0)
|
||||
/* 124980 80281340 2841012C */ slti $at, $v0, 0x12c
|
||||
/* 124984 80281344 10200011 */ beqz $at, .L8028138C
|
||||
/* 124988 80281348 3C018016 */ lui $at, %hi(cameras+0x10) # $at, 0x8016
|
||||
/* 12498C 8028134C C4204700 */ lwc1 $f0, %lo(cameras+0x10)($at)
|
||||
/* 124990 80281350 3C018016 */ lui $at, %hi(cameras+0x4) # $at, 0x8016
|
||||
/* 124994 80281354 C42446F4 */ lwc1 $f4, %lo(cameras+0x4)($at)
|
||||
/* 124998 80281358 3C013FC0 */ li $at, 0x3FC00000 # 1.500000
|
||||
/* 12499C 8028135C 44814000 */ mtc1 $at, $f8
|
||||
/* 1249A0 80281360 46040181 */ sub.s $f6, $f0, $f4
|
||||
/* 1249A4 80281364 2404F1F2 */ li $a0, -3598
|
||||
/* 1249A8 80281368 2406FDA8 */ li $a2, -600
|
||||
/* 1249AC 8028136C 46083282 */ mul.s $f10, $f6, $f8
|
||||
/* 1249B0 80281370 46005400 */ add.s $f16, $f10, $f0
|
||||
/* 1249B4 80281374 4600848D */ trunc.w.s $f18, $f16
|
||||
/* 1249B8 80281378 44059000 */ mfc1 $a1, $f18
|
||||
/* 1249BC 8028137C 0C0A0463 */ jal func_8028118C
|
||||
/* 1249C0 80281380 00000000 */ nop
|
||||
/* 1249C4 80281384 3C028028 */ lui $v0, %hi(D_802874E0) # $v0, 0x8028
|
||||
/* 1249C8 80281388 8C4274E0 */ lw $v0, %lo(D_802874E0)($v0)
|
||||
.L8028138C:
|
||||
/* 1249CC 8028138C 24010078 */ li $at, 120
|
||||
/* 1249D0 80281390 14410023 */ bne $v0, $at, .L80281420
|
||||
/* 1249D4 80281394 3C188028 */ lui $t8, %hi(D_802874C4) # $t8, 0x8028
|
||||
/* 1249D8 80281398 871874C4 */ lh $t8, %lo(D_802874C4)($t8)
|
||||
/* 1249DC 8028139C 3C014352 */ li $at, 0x43520000 # 210.000000
|
||||
/* 1249E0 802813A0 44814000 */ mtc1 $at, $f8
|
||||
/* 1249E4 802813A4 44982000 */ mtc1 $t8, $f4
|
||||
/* 1249E8 802813A8 2404F394 */ li $a0, -3180
|
||||
/* 1249EC 802813AC 2406FE11 */ li $a2, -495
|
||||
/* 1249F0 802813B0 468021A0 */ cvt.s.w $f6, $f4
|
||||
/* 1249F4 802813B4 46083280 */ add.s $f10, $f6, $f8
|
||||
/* 1249F8 802813B8 4600540D */ trunc.w.s $f16, $f10
|
||||
/* 1249FC 802813BC 44058000 */ mfc1 $a1, $f16
|
||||
/* 124A00 802813C0 0C0A0407 */ jal func_8028101C
|
||||
/* 124A04 802813C4 00000000 */ nop
|
||||
/* 124A08 802813C8 3C028028 */ lui $v0, %hi(D_802874E0) # $v0, 0x8028
|
||||
/* 124A0C 802813CC 10000014 */ b .L80281420
|
||||
/* 124A10 802813D0 8C4274E0 */ lw $v0, %lo(D_802874E0)($v0)
|
||||
.L802813D4:
|
||||
/* 124A14 802813D4 8C4274E0 */ lw $v0, %lo(D_802874E0)($v0) # 0x74e0($v0)
|
||||
/* 124A18 802813D8 24010002 */ li $at, 2
|
||||
/* 124A1C 802813DC 3C088028 */ lui $t0, %hi(D_802874C4) # $t0, 0x8028
|
||||
/* 124A20 802813E0 54410010 */ bnel $v0, $at, .L80281424
|
||||
/* 124A24 802813E4 8FBF002C */ lw $ra, 0x2c($sp)
|
||||
/* 124A28 802813E8 850874C4 */ lh $t0, %lo(D_802874C4)($t0)
|
||||
/* 124A2C 802813EC 3C014352 */ li $at, 0x43520000 # 210.000000
|
||||
/* 124A30 802813F0 44813000 */ mtc1 $at, $f6
|
||||
/* 124A34 802813F4 44889000 */ mtc1 $t0, $f18
|
||||
/* 124A38 802813F8 2404F394 */ li $a0, -3180
|
||||
/* 124A3C 802813FC 2406FE11 */ li $a2, -495
|
||||
/* 124A40 80281400 46809120 */ cvt.s.w $f4, $f18
|
||||
/* 124A44 80281404 46062200 */ add.s $f8, $f4, $f6
|
||||
/* 124A48 80281408 4600428D */ trunc.w.s $f10, $f8
|
||||
/* 124A4C 8028140C 44055000 */ mfc1 $a1, $f10
|
||||
/* 124A50 80281410 0C0A0407 */ jal func_8028101C
|
||||
/* 124A54 80281414 00000000 */ nop
|
||||
/* 124A58 80281418 3C028028 */ lui $v0, %hi(D_802874E0) # $v0, 0x8028
|
||||
/* 124A5C 8028141C 8C4274E0 */ lw $v0, %lo(D_802874E0)($v0)
|
||||
.L80281420:
|
||||
/* 124A60 80281420 8FBF002C */ lw $ra, 0x2c($sp)
|
||||
.L80281424:
|
||||
/* 124A64 80281424 244A0001 */ addiu $t2, $v0, 1
|
||||
/* 124A68 80281428 3C018028 */ lui $at, %hi(D_802874E0) # $at, 0x8028
|
||||
/* 124A6C 8028142C AC2A74E0 */ sw $t2, %lo(D_802874E0)($at)
|
||||
/* 124A70 80281430 03E00008 */ jr $ra
|
||||
/* 124A74 80281434 27BD0030 */ addiu $sp, $sp, 0x30
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
glabel func_80281438
|
||||
/* 124A78 80281438 27BDFFC8 */ addiu $sp, $sp, -0x38
|
||||
/* 124A7C 8028143C AFBF0034 */ sw $ra, 0x34($sp)
|
||||
/* 124A80 80281440 AFB60030 */ sw $s6, 0x30($sp)
|
||||
/* 124A84 80281444 AFB5002C */ sw $s5, 0x2c($sp)
|
||||
/* 124A88 80281448 AFB40028 */ sw $s4, 0x28($sp)
|
||||
/* 124A8C 8028144C AFB30024 */ sw $s3, 0x24($sp)
|
||||
/* 124A90 80281450 AFB20020 */ sw $s2, 0x20($sp)
|
||||
/* 124A94 80281454 AFB1001C */ sw $s1, 0x1c($sp)
|
||||
/* 124A98 80281458 0C0A04B2 */ jal func_802812C8
|
||||
/* 124A9C 8028145C AFB00018 */ sw $s0, 0x18($sp)
|
||||
/* 124AA0 80281460 3C018028 */ lui $at, %hi(D_802874D0) # $at, 0x8028
|
||||
/* 124AA4 80281464 3C158028 */ lui $s5, %hi(D_802874F8) # $s5, 0x8028
|
||||
/* 124AA8 80281468 3C138028 */ lui $s3, %hi(D_80284E94) # $s3, 0x8028
|
||||
/* 124AAC 8028146C A42074D0 */ sh $zero, %lo(D_802874D0)($at)
|
||||
/* 124AB0 80281470 26734E94 */ addiu $s3, %lo(D_80284E94) # addiu $s3, $s3, 0x4e94
|
||||
/* 124AB4 80281474 26B574F8 */ addiu $s5, %lo(D_802874F8) # addiu $s5, $s5, 0x74f8
|
||||
/* 124AB8 80281478 00009025 */ move $s2, $zero
|
||||
/* 124ABC 8028147C 24160003 */ li $s6, 3
|
||||
/* 124AC0 80281480 241400C8 */ li $s4, 200
|
||||
/* 124AC4 80281484 8EB00000 */ lw $s0, ($s5)
|
||||
.L80281488:
|
||||
/* 124AC8 80281488 00008825 */ move $s1, $zero
|
||||
.L8028148C:
|
||||
/* 124ACC 8028148C 8E0E0000 */ lw $t6, ($s0)
|
||||
/* 124AD0 80281490 31CF0001 */ andi $t7, $t6, 1
|
||||
/* 124AD4 80281494 51E0000E */ beql $t7, $zero, .L802814D0
|
||||
/* 124AD8 80281498 26310001 */ addiu $s1, $s1, 1
|
||||
/* 124ADC 8028149C 86180004 */ lh $t8, 4($s0)
|
||||
/* 124AE0 802814A0 00124880 */ sll $t1, $s2, 2
|
||||
/* 124AE4 802814A4 0018C880 */ sll $t9, $t8, 2
|
||||
/* 124AE8 802814A8 0338C823 */ subu $t9, $t9, $t8
|
||||
/* 124AEC 802814AC 0019C880 */ sll $t9, $t9, 2
|
||||
/* 124AF0 802814B0 02794021 */ addu $t0, $s3, $t9
|
||||
/* 124AF4 802814B4 01095021 */ addu $t2, $t0, $t1
|
||||
/* 124AF8 802814B8 8D420000 */ lw $v0, ($t2)
|
||||
/* 124AFC 802814BC 50400004 */ beql $v0, $zero, .L802814D0
|
||||
/* 124B00 802814C0 26310001 */ addiu $s1, $s1, 1
|
||||
/* 124B04 802814C4 0040F809 */ jalr $v0
|
||||
/* 124B08 802814C8 02002025 */ move $a0, $s0
|
||||
/* 124B0C 802814CC 26310001 */ addiu $s1, $s1, 1
|
||||
.L802814D0:
|
||||
/* 124B10 802814D0 1634FFEE */ bne $s1, $s4, .L8028148C
|
||||
/* 124B14 802814D4 2610004C */ addiu $s0, $s0, 0x4c
|
||||
/* 124B18 802814D8 26520001 */ addiu $s2, $s2, 1
|
||||
/* 124B1C 802814DC 5656FFEA */ bnel $s2, $s6, .L80281488
|
||||
/* 124B20 802814E0 8EB00000 */ lw $s0, ($s5)
|
||||
/* 124B24 802814E4 8FBF0034 */ lw $ra, 0x34($sp)
|
||||
/* 124B28 802814E8 8FB00018 */ lw $s0, 0x18($sp)
|
||||
/* 124B2C 802814EC 8FB1001C */ lw $s1, 0x1c($sp)
|
||||
/* 124B30 802814F0 8FB20020 */ lw $s2, 0x20($sp)
|
||||
/* 124B34 802814F4 8FB30024 */ lw $s3, 0x24($sp)
|
||||
/* 124B38 802814F8 8FB40028 */ lw $s4, 0x28($sp)
|
||||
/* 124B3C 802814FC 8FB5002C */ lw $s5, 0x2c($sp)
|
||||
/* 124B40 80281500 8FB60030 */ lw $s6, 0x30($sp)
|
||||
/* 124B44 80281504 03E00008 */ jr $ra
|
||||
/* 124B48 80281508 27BD0038 */ addiu $sp, $sp, 0x38
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
.include "macros.inc"
|
||||
|
||||
.data
|
||||
|
||||
# Credits
|
||||
# 128480-12AAE0 [2660]
|
||||
|
||||
# D_8028461C
|
||||
#glabel D_80284E40
|
||||
#.word 0x00FF4080
|
||||
#.word 0x008040FF
|
||||
#.word 0x0040FF40
|
||||
#.word 0x00FFFF40
|
||||
|
||||
glabel D_80284E50
|
||||
.word 0x007F2040
|
||||
.word 0x0040207F
|
||||
.word 0x00207F20
|
||||
.word 0x007F7F20
|
||||
|
||||
glabel sRandomSeed16
|
||||
.word 0x00000000
|
||||
|
||||
glabel D_80284E64
|
||||
.word 0x0001F3AF
|
||||
.word 0x0022FE2D
|
||||
.word 0x00000000
|
||||
|
||||
glabel D_80284E70
|
||||
.word 0x0003F3AF
|
||||
.word 0x0022FE2D
|
||||
.word 0x00000000
|
||||
|
||||
glabel D_80284E7C
|
||||
.word 0x0002F3AF
|
||||
.word 0x0022FE2D
|
||||
.word 0x00000000
|
||||
|
||||
glabel D_80284E88
|
||||
.word 0x0000F2CC
|
||||
.word 0x00FAFE11
|
||||
.word 0x00000000
|
||||
|
||||
glabel D_80284E94
|
||||
.word func_80280FA8
|
||||
.word func_80280FA0
|
||||
.word 0x00000000
|
||||
.word func_80280FA8
|
||||
.word func_8028088C
|
||||
.word 0x00000000
|
||||
.word func_80280FA8
|
||||
.word func_80280D1C
|
||||
.word 0x00000000
|
||||
.word func_8028093C
|
||||
.word 0x00000000
|
||||
.word func_80280D1C
|
||||
.word 0x00000000
|
||||
.word 0x00000000
|
||||
.word 0x00000000
|
||||
|
||||
glabel D_80284ED0
|
||||
.word 0x01020304, 0x05060700
|
||||
|
||||
#.word 0x00000000 # padding
|
||||
|
||||
# start of DLs see 128480.bin
|
||||
#.word 0xBA001402, 0x00000000, 0xBA001701, 0x00800000
|
||||
#.word 0xBA001001, 0x00000000, 0xBA000E02, 0x00000000
|
||||
#.word 0xBA001102, 0x00000000, 0xBA001301, 0x00080000
|
||||
#.word 0xBA000C02, 0x00002000, 0xBA000903, 0x00000C00
|
||||
#.word 0xBA000801, 0x00000000, 0xB9000002, 0x00000000
|
||||
#.word 0xBA000602, 0x000000C0, 0xBA000602, 0x00000000
|
||||
#.word 0xB900031D, 0x0F0A4000, 0xFCFFFFFF, 0xFFFE793C
|
||||
#.word 0xB6000000, 0x001F3000, 0xB7000000, 0x00000204
|
||||
#.word 0xBB000000, 0x00000000, 0xB8000000, 0x00000000
|
||||
#.word 0xFC121824, 0xFF33FFFF, 0xB900031D, 0x00552078
|
||||
#.word 0xBB000001, 0xFFFFFFFF, 0x06000000, 0x070067E8
|
||||
#.word 0x06000000, 0x0700AEF8, 0x06000000, 0x07001438
|
||||
#.word 0x06000000, 0x0700A970, 0x06000000, 0x07000CE0
|
||||
#.word 0x06000000, 0x07000E88, 0x06000000, 0x0700A618
|
||||
#.word 0x06000000, 0x0700AC30, 0x06000000, 0x07003728
|
||||
#.word 0x06000000, 0x070036B8, 0x06000000, 0x07003628
|
||||
#.word 0x06000000, 0x07003540, 0x06000000, 0x07003DC0
|
||||
#.word 0x06000000, 0x07003E50, 0x06000000, 0x07003F18
|
||||
#.word 0x06000000, 0x070050B0, 0x06000000, 0x07005138
|
||||
#.word 0x06000000, 0x070055D0, 0x06000000, 0x07005B50
|
||||
#.word 0x06000000, 0x07005C00, 0x06000000, 0x07005D18
|
||||
#.word 0x06000000, 0x07005DC8, 0x06000000, 0x07005EF8
|
||||
#.word 0x06000000, 0x07005740, 0x06000000, 0x070057F0
|
||||
#.word 0x06000000, 0x070058E8, 0x06000000, 0x07001788
|
||||
#.word 0x06000000, 0x07001AA0, 0x06000000, 0x07001A30
|
||||
#.word 0x06000000, 0x070023F8, 0x06000000, 0x07002478
|
||||
#.word 0x06000000, 0x07003790, 0xFC127E24, 0xFFFFF3F9
|
||||
#.word 0xB900031D, 0x00553078, 0x06000000, 0x070006D0
|
||||
#.word 0x06000000, 0x070004D0, 0x06000000, 0x07000840
|
||||
#.word 0xB8000000
|
||||
|
|
@ -36,6 +36,17 @@ void guLookAt(Mtx *,
|
|||
f32,
|
||||
f32);
|
||||
|
||||
void guLookAtF(f32[4][4],
|
||||
f32,
|
||||
f32,
|
||||
f32,
|
||||
f32,
|
||||
f32,
|
||||
f32,
|
||||
f32,
|
||||
f32,
|
||||
f32);
|
||||
|
||||
/* Used only in Fast3DEX2 */
|
||||
void guLookAtReflect (Mtx *m, LookAt *l, float xEye, float yEye, float zEye,
|
||||
float xAt, float yAt, float zAt,
|
||||
|
|
|
|||
10
mk64.ld
10
mk64.ld
|
|
@ -424,17 +424,17 @@ SECTIONS
|
|||
BEGIN_SEG(code_80280000, SEG_80280000)
|
||||
{
|
||||
BUILD_DIR/src/code_80280000.o(.text);
|
||||
BUILD_DIR/src/code_80280650.o(.text);
|
||||
BUILD_DIR/src/podium_ceremony_actors.o(.text);
|
||||
BUILD_DIR/src/camera_junk.o(.text);
|
||||
BUILD_DIR/src/code_80281780.o(.text);
|
||||
BUILD_DIR/src/code_80281C40.o(.text);
|
||||
BUILD_DIR/src/ceremony_and_credits.o(.text);
|
||||
BUILD_DIR/src/code_80280650.o(.data);
|
||||
BUILD_DIR/data/data_credits_128480.o(.data);
|
||||
BUILD_DIR/src/podium_ceremony_actors.o(.data);
|
||||
BUILD_DIR/src/code_80281780.o(.data);
|
||||
BUILD_DIR/src/dl_unk_80284EE0.inc.o(.data);
|
||||
BUILD_DIR/src/credits.jp.o(.data);
|
||||
BUILD_DIR/src/ceremony_and_credits.o(.data);
|
||||
BUILD_DIR/src/code_80280650.o(.rodata);
|
||||
BUILD_DIR/src/podium_ceremony_actors.o(.rodata);
|
||||
BUILD_DIR/src/camera_junk.o(.rodata);
|
||||
BUILD_DIR/src/credits.jp.o(.rodata);
|
||||
BUILD_DIR/src/ceremony_and_credits.o(.rodata);
|
||||
|
|
@ -443,6 +443,8 @@ SECTIONS
|
|||
|
||||
BEGIN_NOLOAD(code_80280000) {
|
||||
BUILD_DIR/asm/bss_credits.o(.bss);
|
||||
BUILD_DIR/src/podium_ceremony_actors.o(.bss);
|
||||
BUILD_DIR/src/code_80281C40.o(.bss);
|
||||
BUILD_DIR/src/ceremony_and_credits.o(.bss);
|
||||
}
|
||||
END_NOLOAD(code_80280000)
|
||||
|
|
|
|||
31
progress.py
31
progress.py
|
|
@ -84,15 +84,11 @@ seg2Files2 = [
|
|||
"asm/non_matchings/actors",
|
||||
"asm/non_matchings/math_util",
|
||||
"asm/non_matchings/memory",
|
||||
"asm/non_matchings/code_802AAA70",
|
||||
"asm/non_matchings/race_logic",
|
||||
"asm/non_matchings/render_courses",
|
||||
"asm/non_matchings/skybox",
|
||||
]
|
||||
seg3Files2 = [
|
||||
"asm/non_matchings/code_80280650",
|
||||
"asm/non_matchings/code_802AAA70",
|
||||
"asm/non_matchings/ceremony_and_credits",
|
||||
]
|
||||
audioFiles2 = [
|
||||
"asm/non_matchings/audio"
|
||||
]
|
||||
|
|
@ -108,10 +104,6 @@ def GetNonMatchingSize(path):
|
|||
for file in seg2Files2:
|
||||
size += getData(file)
|
||||
|
||||
elif (path == "seg3"):
|
||||
for file in seg3Files2:
|
||||
size += getData(file)
|
||||
|
||||
elif (path == "os"):
|
||||
size = getData("asm/os/func_800CE720.s")
|
||||
|
||||
|
|
@ -149,7 +141,6 @@ mapFile = ReadAllLines("build/us/mk64.us.map")
|
|||
src = 0
|
||||
mainSeg = 0
|
||||
seg2 = 0
|
||||
seg3 = 0
|
||||
audio = 0
|
||||
libultra = 0
|
||||
|
||||
|
|
@ -182,19 +173,11 @@ seg2Files = [
|
|||
"build/us/src/actors_extended",
|
||||
"build/us/src/math_util",
|
||||
"build/us/src/memory",
|
||||
"build/us/src/code_802AAA70",
|
||||
"build/us/src/race_logic",
|
||||
"build/us/src/render_courses",
|
||||
"build/us/src/skybox_and_splitscreen",
|
||||
]
|
||||
seg3Files = [
|
||||
"build/us/src/camera_junk",
|
||||
"build/us/src/code_80280000",
|
||||
"build/us/src/code_80280650",
|
||||
"build/us/src/code_80281780",
|
||||
"build/us/src/code_80281C40",
|
||||
"build/us/src/code_802AAA70",
|
||||
"build/us/src/ceremony_and_credits",
|
||||
]
|
||||
segAudioFiles = [
|
||||
"build/us/src/audio/effects",
|
||||
"build/us/src/audio/external",
|
||||
|
|
@ -224,9 +207,6 @@ for line in mapFile:
|
|||
if (objFile.startswith(tuple(seg2Files))):
|
||||
seg2 += size
|
||||
|
||||
if (objFile.startswith(tuple(seg3Files))):
|
||||
seg3 += size
|
||||
|
||||
if (objFile.startswith("build/us/src/os")):
|
||||
libultra += size
|
||||
|
||||
|
|
@ -236,7 +216,6 @@ for line in mapFile:
|
|||
nonMatchingASM = GetNonMatchingSize("asm/non_matchings")
|
||||
nonMatchingMain = GetNonMatchingSize("main")
|
||||
nonMatchingSeg2 = GetNonMatchingSize("seg2")
|
||||
nonMatchingSeg3 = GetNonMatchingSize("seg3")
|
||||
nonMatchingLibultra = GetNonMatchingSize("os")
|
||||
nonMatchingASMAudio = GetNonMatchingSize("audio")
|
||||
|
||||
|
|
@ -248,14 +227,13 @@ mainSeg += libultra
|
|||
mainSeg -= nonMatchingMain
|
||||
|
||||
seg2 -= nonMatchingSeg2
|
||||
seg3 -= nonMatchingSeg3
|
||||
audio -= nonMatchingASMAudio
|
||||
libultra -= nonMatchingLibultra
|
||||
|
||||
|
||||
mainSeg_size = 831024
|
||||
seg2_size = 174224
|
||||
seg3_size = 20032
|
||||
# Segment 3 size = 20032
|
||||
mk64Code_size = 1025280
|
||||
# handwritten is likely 4400 bytes which brings us to the grand total of 53248.
|
||||
# for now the total is just a guess. 544 being non_matching funcs.
|
||||
|
|
@ -280,7 +258,6 @@ libultraPct = 100 * libultra / libultra_size
|
|||
audioPct = 100 * audio / audio_size
|
||||
mainSegPct = 100 * mainSeg / mainSeg_size
|
||||
seg2Pct = 100 * seg2 / seg2_size
|
||||
seg3Pct = 100 * seg3 / seg3_size
|
||||
|
||||
bytesPerHeartPiece = text_size // 80
|
||||
|
||||
|
|
@ -329,7 +306,7 @@ elif args.format == 'text':
|
|||
print(str(libultra) + "/" + str(libultra_size) + " bytes " + adjective + " in libultra " + str(libultraPct) + "%\n")
|
||||
print(str(mainSeg) + "/" + str(mainSeg_size) + " bytes " + adjective + " in mainSeg " + str(mainSegPct) + "%\n")
|
||||
print(str(seg2) + "/" + str(seg2_size) + " bytes " + adjective + " in seg2 " + str(seg2Pct) + "%\n")
|
||||
print(str(seg3) + "/" + str(seg3_size) + " bytes " + adjective + " in seg3 " + str(seg3Pct) + "%\n")
|
||||
print(str(20032) + "/" + str(20032) + " bytes " + adjective + " in seg3 " + str(100.0) + "%\n")
|
||||
print("------------------------------------\n")
|
||||
|
||||
heartPieces = int(src / bytesPerHeartPiece)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
#include "math_util.h"
|
||||
#include "ceremony_and_credits.h"
|
||||
|
||||
void setup_camera_ending_sequence(void) {
|
||||
void setup_camera_podium_ceremony(void) {
|
||||
Camera *camera;
|
||||
f32 x_dist;
|
||||
f32 y_dist;
|
||||
|
|
@ -23,7 +23,7 @@ void setup_camera_ending_sequence(void) {
|
|||
camera->rot[2] = 0;
|
||||
}
|
||||
|
||||
// GP Ending sequence camera settings?
|
||||
// GP podium ceremony camera settings?
|
||||
void func_802816B8(void) {
|
||||
cameras[0].pos[0] = -3133.0f;
|
||||
cameras[0].pos[1] = 19.0f;
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
/* Function Prototypes */
|
||||
|
||||
void setup_camera_ending_sequence();
|
||||
void setup_camera_podium_ceremony();
|
||||
void func_802816B8();
|
||||
|
||||
// guPerspective params
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
#include "camera.h"
|
||||
#include "audio/external.h"
|
||||
#include <sounds.h>
|
||||
#include "code_80280650.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "code_80091750.h"
|
||||
|
||||
extern f32 D_80150130[];
|
||||
|
|
|
|||
|
|
@ -1,479 +0,0 @@
|
|||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include <types.h>
|
||||
#include <debug.h>
|
||||
#include <common_structs.h>
|
||||
#include "main.h"
|
||||
#include "memory.h"
|
||||
#include "variables.h"
|
||||
#include "common_textures.h"
|
||||
#include "code_8001F980.h"
|
||||
#include "hud_renderer.h"
|
||||
#include "code_80280650.h"
|
||||
#include "camera_junk.h"
|
||||
#include "code_80027D00.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "code_80005FD0.h"
|
||||
#include "code_80281C40.h"
|
||||
|
||||
void func_80280650(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80280658(struct UnkStruct_80280658 *arg0) {
|
||||
struct UnkStruct_80280658_2 *temp_v0 = arg0->unk28;
|
||||
|
||||
arg0->unk10 = temp_v0->unk2;
|
||||
arg0->unk14 = temp_v0->unk4;
|
||||
arg0->unk18 = temp_v0->unk6;
|
||||
arg0->unkA = temp_v0->unk8 << 8;
|
||||
arg0->unkC = temp_v0->unk9 << 8;
|
||||
arg0->unkE = temp_v0->unkA << 8;
|
||||
arg0->unk4 = temp_v0->unk0;
|
||||
}
|
||||
|
||||
struct UnkStruct_80280658 *func_802806C8(void) {
|
||||
UNUSED s32 pad[2];
|
||||
struct UnkStruct_80280658 *phi_a0 = D_802874F8;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 0xC8 ; i++) {
|
||||
|
||||
if ((phi_a0->unk0 & 1) == 0) {
|
||||
bzero(phi_a0, 0x4C);
|
||||
phi_a0->unk0 = 1;
|
||||
phi_a0->unk24 = 1.0f;
|
||||
return phi_a0;
|
||||
}
|
||||
|
||||
phi_a0++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658 *arg0) {
|
||||
struct UnkStruct_80280658 *temp_v0 = func_802806C8();
|
||||
|
||||
temp_v0->unk28 = (struct UnkStruct_80280658_2 *) arg0;
|
||||
func_80280658(temp_v0);
|
||||
return temp_v0;
|
||||
}
|
||||
|
||||
extern u16 sRandomSeed16; // = 0; todo: import
|
||||
|
||||
u16 random_u16_credits(void) {
|
||||
u16 temp1, temp2;
|
||||
|
||||
if (sRandomSeed16 == 22026) {
|
||||
sRandomSeed16 = 0;
|
||||
}
|
||||
|
||||
temp1 = (sRandomSeed16 & 0x00FF) << 8;
|
||||
temp1 = temp1 ^ sRandomSeed16;
|
||||
|
||||
sRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8);
|
||||
|
||||
temp1 = ((temp1 & 0x00FF) << 1) ^ sRandomSeed16;
|
||||
temp2 = (temp1 >> 1) ^ 0xFF80;
|
||||
|
||||
if ((temp1 & 1) == 0) {
|
||||
if (temp2 == 43605) {
|
||||
sRandomSeed16 = 0;
|
||||
} else {
|
||||
sRandomSeed16 = temp2 ^ 0x1FF4;
|
||||
}
|
||||
} else {
|
||||
sRandomSeed16 = temp2 ^ 0x8180;
|
||||
}
|
||||
|
||||
return sRandomSeed16;
|
||||
}
|
||||
|
||||
f32 random_float_between_0_and_1(void) {
|
||||
return random_u16_credits() / 65536.0f;
|
||||
}
|
||||
|
||||
f32 func_80280850(f32 arg0) {
|
||||
return (random_float_between_0_and_1() * arg0) - (arg0 * 0.5f);
|
||||
}
|
||||
|
||||
void func_80280884(void) {
|
||||
|
||||
}
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
f32 sins(u16);
|
||||
extern f32 D_80286B70;
|
||||
extern s16 D_802874CA;
|
||||
|
||||
void func_8028088C(struct UnkStruct_8028088C *arg0) {
|
||||
f32 temp_f0;
|
||||
s32 temp_at;
|
||||
s32 temp_t3;
|
||||
|
||||
func_8006BB34(arg0+1, 0x3F800000, arg0->unk2E, arg0->unk2C);
|
||||
arg0->unk14 += D_80286B70;
|
||||
temp_f0 = sins(arg0->unk30);
|
||||
temp_t3 = arg0->unk3C + 1;
|
||||
temp_at = temp_t3 < 0x321;
|
||||
arg0->unk30 += arg0->unk32;
|
||||
arg0->unk3C = temp_t3;
|
||||
arg0->unk2E = temp_f0 * arg0->unk34;
|
||||
if (temp_at == 0) {
|
||||
arg0->unk0 = 0;
|
||||
}
|
||||
if (D_802874CA == 1) {
|
||||
arg0->unk0 = 0;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028088C.s")
|
||||
#endif
|
||||
|
||||
s32 D_80284E40[] = {
|
||||
0x00FF4080, 0x008040FF, 0x0040FF40, 0x00FFFF40
|
||||
};
|
||||
|
||||
void func_8028093C(struct UnkStruct_80280658 *arg0) {
|
||||
struct UnkStruct_80280658 *temp_v0;
|
||||
|
||||
if (arg0->unk44 < 0x1E) {
|
||||
arg0->unk14 += 2.5f;
|
||||
arg0->unk10 += func_80280850(0.2f);
|
||||
arg0->unk18 += func_80280850(0.2f);
|
||||
} else if (arg0->unk2C == 4) {
|
||||
temp_v0 = func_80280734((struct UnkStruct_80280658 *)&D_80284E7C);
|
||||
temp_v0->unk10 = arg0->unk10;
|
||||
temp_v0->unk14 = arg0->unk14;
|
||||
temp_v0->unk18 = arg0->unk18;
|
||||
temp_v0->unk30 = D_80284E40[arg0->unk48];
|
||||
temp_v0->unk3C = 0xFF;
|
||||
temp_v0->unk40 = -0x11;
|
||||
temp_v0->unk44 = 0x64;
|
||||
temp_v0->unk34 = 1.8700001f;
|
||||
temp_v0->unk38 = 1.8700001f;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80280A28(Vec3f arg0, Vec3s arg1, f32 arg2) {
|
||||
Mat4 sp20;
|
||||
|
||||
func_80021E10(sp20, arg0, arg1);
|
||||
sp20[0][0] = D_80287500[0][0] * arg2;
|
||||
sp20[0][1] = D_80287500[1][0] * arg2;
|
||||
sp20[0][2] = D_80287500[2][0] * arg2;
|
||||
sp20[1][0] = D_80287500[0][1] * arg2;
|
||||
sp20[1][1] = D_80287500[1][1] * arg2;
|
||||
sp20[1][2] = D_80287500[2][1] * arg2;
|
||||
sp20[2][0] = D_80287500[0][2] * arg2;
|
||||
sp20[2][1] = D_80287500[1][2] * arg2;
|
||||
sp20[2][2] = D_80287500[2][2] * arg2;
|
||||
func_80022180(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB], sp20);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
}
|
||||
|
||||
void func_80280B50(Vec3f arg0, f32 arg1, s32 rgb, s16 alpha) {
|
||||
Vec3f sp4C;
|
||||
Vec3s sp44;
|
||||
s16 red;
|
||||
s16 green;
|
||||
s16 blue;
|
||||
|
||||
sp4C[0] = arg0[0];
|
||||
sp4C[1] = arg0[1];
|
||||
sp4C[2] = arg0[2];
|
||||
sp44[0] = 0;
|
||||
sp44[1] = camera1->rot[1];
|
||||
sp44[2] = 0;
|
||||
func_80280A28(sp4C, sp44, arg1);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, D_8018D48C, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
// ???????????????????????????????????
|
||||
red = ((rgb >> 0x10) & 0xFF) & 0xFF;
|
||||
green = ((rgb >> 0x08) & 0xFF) & 0xFF;
|
||||
blue = ((rgb >> 0x00) & 0xFF) & 0xFF;
|
||||
// ???????????????????????????????????
|
||||
func_8004B35C(red, green, blue, alpha);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008E48);
|
||||
D_80164AF0 += 1;
|
||||
}
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit d9d3d6575355663122de59f6b2882d8f174e2355 on Dec-10-2022
|
||||
static s32 D_80284E50[4] = { 0x007F2040, 0x0040207F, 0x00207F20, 0x007F7F20 };
|
||||
|
||||
void func_80280D1C(void *arg0) {
|
||||
f32 sp60;
|
||||
f32 sp5C;
|
||||
f32 sp58;
|
||||
f32 temp_f0;
|
||||
s32 temp_v0;
|
||||
s32 var_s0;
|
||||
s32 var_s1;
|
||||
s32 var_v1;
|
||||
|
||||
var_s0 = 0;
|
||||
var_s1 = 0;
|
||||
if (arg0->unk44 < 0x1E) {
|
||||
do {
|
||||
sp58 = arg0->unk10;
|
||||
sp5C = arg0->unk14 - (f32) var_s1;
|
||||
sp60 = arg0->unk18;
|
||||
func_80280B50(&sp58, ((f32) (0xA - var_s0) / 10.0f) * 2.0f, D_80284E50[arg0->unk48], (s16) (s32) ((f32) ((0x1E - arg0->unk44) * 0x64) / 30.0f));
|
||||
var_s0 += 1;
|
||||
var_s1 += 2;
|
||||
} while (var_s0 != 0xA);
|
||||
} else {
|
||||
temp_v0 = arg0->unk2C;
|
||||
if (temp_v0 < 5) {
|
||||
var_v1 = arg0->unk3C + (arg0->unk40 * 2);
|
||||
arg0->unk3C = var_v1;
|
||||
arg0->unk34 = (f32) (arg0->unk34 + (arg0->unk38 * 2.0f));
|
||||
} else {
|
||||
temp_f0 = 1.0f + ((f32) ((temp_v0 * 7) - 0x23) / 10.0f);
|
||||
var_v1 = (s32) ((f32) arg0->unk3C + ((f32) arg0->unk40 / temp_f0));
|
||||
arg0->unk3C = var_v1;
|
||||
arg0->unk34 = (f32) (arg0->unk34 + (arg0->unk38 / temp_f0));
|
||||
if (var_v1 < 0) {
|
||||
arg0->unk3C = 0;
|
||||
var_v1 = 0;
|
||||
}
|
||||
}
|
||||
arg0->unk2C = (s32) (arg0->unk2C + 1);
|
||||
if ((var_v1 <= 0) || !(arg0->unk34 > 0.0f)) {
|
||||
if (arg0->unk2C < 0x1E) {
|
||||
goto block_12;
|
||||
}
|
||||
arg0->unk0 = 0;
|
||||
} else {
|
||||
block_12:
|
||||
func_80280B50(arg0 + 0x10, arg0->unk34, arg0->unk30, (s16) var_v1);
|
||||
}
|
||||
}
|
||||
arg0->unk44 = (s32) (arg0->unk44 + 1);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80280650/func_80280D1C.s")
|
||||
#endif
|
||||
|
||||
void func_80280FA0(UNUSED s32 arg0) {
|
||||
|
||||
}
|
||||
|
||||
void func_80280FA8(UNUSED s32 arg0) {
|
||||
|
||||
}
|
||||
|
||||
void func_80280FB0(void) {
|
||||
D_802874E0 = 0;
|
||||
D_802874F8 = (struct UnkStruct_80280658 *) get_next_available_memory_addr(0x3B60);
|
||||
bzero(D_802874F8, 0x3B60);
|
||||
func_80280734((struct UnkStruct_80280658 *)&D_80284E88);
|
||||
}
|
||||
|
||||
void func_80280FFC(void) {
|
||||
D_802874F4 = 1;
|
||||
}
|
||||
|
||||
void func_8028100C(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) {
|
||||
|
||||
}
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc
|
||||
static struct UnkStruct_80280658 D_80284E64; /* type too large by 0x40; unable to generate initializer */
|
||||
static f32 D_80286B80 = 3000.0f;
|
||||
|
||||
void func_8028101C(s32 arg0, s32 arg1, s32 arg2) {
|
||||
f32 sp64;
|
||||
f32 sp60;
|
||||
f32 sp5C;
|
||||
s32 var_s1;
|
||||
struct UnkStruct_80280658 *temp_s0;
|
||||
|
||||
var_s1 = 0;
|
||||
sp5C = (f32) arg2;
|
||||
sp60 = (f32) arg1;
|
||||
sp64 = (f32) arg0;
|
||||
do {
|
||||
temp_s0 = func_80280734(&D_80284E64);
|
||||
temp_s0->unk10 = func_80280850(200.0f) + sp64;
|
||||
temp_s0->unk14 = func_80280850(380.0f) + sp60;
|
||||
temp_s0->unk18 = func_80280850(600.0f) + sp5C;
|
||||
temp_s0->unk2C = (s16) (s32) (random_float_between_0_and_1() * 7.0f);
|
||||
temp_s0->unk30 = random_u16_credits();
|
||||
temp_s0->unk32 = (s16) (s32) (func_80280850(400.0f) + 900.0f);
|
||||
var_s1 += 1;
|
||||
temp_s0->unk34 = (s16) (s32) (func_80280850(2000.0f) + D_80286B80);
|
||||
} while (var_s1 != 0x64);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028101C.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit 8267401fa4ef7a38942dcca43353cc1bcc6efabc
|
||||
extern s16 D_802874BE;
|
||||
extern s16 D_802874C6;
|
||||
extern s16 D_802874C8;
|
||||
extern s32 D_80287540;
|
||||
static s32 D_80284E50[4] = { 0x007F2040, 0x0040207F, 0x00207F20, 0x007F7F20 };
|
||||
static struct UnkStruct_80280658 D_80284E70; /* type too large by 0x40; unable to generate initializer */
|
||||
static f32 D_80286B84 = 1.1f;
|
||||
|
||||
void func_8028118C(s32 arg0, s32 arg1, s32 arg2) {
|
||||
f32 temp_f0;
|
||||
f32 temp_f2;
|
||||
s32 temp_v0;
|
||||
s32 temp_v1;
|
||||
struct UnkStruct_80280658 *temp_s0;
|
||||
|
||||
if (((f32) (D_802874BE + 0xD) * random_float_between_0_and_1()) < 1.0f) {
|
||||
temp_s0 = func_80280734(&D_80284E70);
|
||||
temp_s0->unk10 = func_80280850(0.0f) + (f32) arg0;
|
||||
temp_s0->unk14 = func_80280850((f32) (D_802874C6 + 0x64)) + (f32) arg1;
|
||||
temp_f0 = func_80280850((f32) (D_802874C8 + 0x2BC));
|
||||
temp_v1 = D_80287540;
|
||||
temp_f2 = D_80286B84;
|
||||
temp_v0 = temp_v1 & 3;
|
||||
temp_s0->unk48 = temp_v0;
|
||||
temp_s0->unk18 = temp_f0 + (f32) arg2;
|
||||
temp_s0->unk3C = 0x000000FF;
|
||||
temp_s0->unk40 = -0x00000011;
|
||||
temp_s0->unk34 = temp_f2;
|
||||
temp_s0->unk38 = temp_f2;
|
||||
temp_s0->unk30 = D_80284E50[temp_v0];
|
||||
D_80287540 = temp_v1 + 1;
|
||||
}
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80280650/func_8028118C.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by m2c commit 3b40ab93768f52ac241c5ae84ef58ef6bc4cb1de
|
||||
void func_8028101C(?, s32, ?); /* extern */
|
||||
void func_8028118C(?, s32, ?); /* extern */
|
||||
void guLookAtF(? *, f32, f32, f32, f32, f32, f32, f32, f32, f32); /* extern */
|
||||
extern s16 D_802874C4;
|
||||
extern s32 D_802874E0;
|
||||
extern Mat4 D_80287500;
|
||||
|
||||
void func_802812C8(void) {
|
||||
f32 temp_f0;
|
||||
s32 var_v0;
|
||||
|
||||
guLookAtF(&D_80287500, cameras->pos[0], cameras->pos[1], cameras->pos[2], cameras->lookAt[0], cameras->lookAt[1], cameras->lookAt[2], cameras->up[0], cameras->up[1], cameras->up[2]);
|
||||
if (D_802874F5 < 3) {
|
||||
var_v0 = D_802874E0;
|
||||
if (var_v0 < 0x12C) {
|
||||
temp_f0 = cameras->lookAt[1];
|
||||
func_8028118C(-0xE0E, (s32) (((temp_f0 - cameras->pos[1]) * 1.5f) + temp_f0), -0x258);
|
||||
var_v0 = D_802874E0;
|
||||
}
|
||||
if (var_v0 == 0x00000078) {
|
||||
func_8028101C(-0xC6C, (s32) ((f32) D_802874C4 + 210.0f), -0x1EF);
|
||||
goto block_7;
|
||||
}
|
||||
} else {
|
||||
var_v0 = D_802874E0;
|
||||
if (var_v0 == 2) {
|
||||
func_8028101C(-0xC6C, (s32) ((f32) D_802874C4 + 210.0f), -0x1EF);
|
||||
block_7:
|
||||
var_v0 = D_802874E0;
|
||||
}
|
||||
}
|
||||
D_802874E0 = var_v0 + 1;
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80280650/func_802812C8.s")
|
||||
#endif
|
||||
|
||||
#ifdef MIPS_TO_C
|
||||
//generated by mips_to_c commit 3c3b0cede1a99430bfd3edf8d385802b94f91307
|
||||
void func_802812C8(); // extern
|
||||
extern ? D_80284E94;
|
||||
extern s16 D_802874D0;
|
||||
extern void *D_802874F8;
|
||||
|
||||
void func_80281438(void) {
|
||||
? (*temp_v0)(void *);
|
||||
s32 temp_s1;
|
||||
s32 temp_s2;
|
||||
void *phi_s0;
|
||||
s32 phi_s2;
|
||||
s32 phi_s1;
|
||||
|
||||
func_802812C8();
|
||||
D_802874D0 = 0;
|
||||
phi_s2 = 0;
|
||||
do {
|
||||
phi_s0 = D_802874F8;
|
||||
phi_s1 = 0;
|
||||
loop_2:
|
||||
if ((phi_s0->unk0 & 1) != 0) {
|
||||
temp_v0 = *(&D_80284E94 + (phi_s0->unk4 * 0xC) + (phi_s2 * 4));
|
||||
if (temp_v0 != 0) {
|
||||
temp_v0(phi_s0);
|
||||
}
|
||||
}
|
||||
temp_s1 = phi_s1 + 1;
|
||||
phi_s0 += 0x4C;
|
||||
phi_s1 = temp_s1;
|
||||
if (temp_s1 != 0xC8) {
|
||||
goto loop_2;
|
||||
}
|
||||
temp_s2 = phi_s2 + 1;
|
||||
phi_s2 = temp_s2;
|
||||
} while (temp_s2 != 3);
|
||||
}
|
||||
#else
|
||||
GLOBAL_ASM("asm/non_matchings/code_80280650/func_80281438.s")
|
||||
#endif
|
||||
|
||||
void func_8028150C(void) {
|
||||
D_802874D4 = gDisplayListHead;
|
||||
}
|
||||
|
||||
void func_80281520(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281528(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281530(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281538(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281540(void) {
|
||||
|
||||
}
|
||||
|
||||
void ending_sequence_loop(void) {
|
||||
D_80150112 = 0;
|
||||
D_802874FC = 0;
|
||||
setup_camera_ending_sequence();
|
||||
func_80028F70();
|
||||
func_80022744();
|
||||
func_80059AC8();
|
||||
func_80059AC8();
|
||||
func_8005A070();
|
||||
if (D_802874F4 != 0) {
|
||||
func_8001C14C();
|
||||
func_800097E0();
|
||||
}
|
||||
func_80281D00();
|
||||
func_80281540();
|
||||
#if VARIABLE_WATCH_DEBUG_LIST
|
||||
display_dvdl();
|
||||
#endif
|
||||
gDPFullSync(gDisplayListHead++);
|
||||
gSPEndDisplayList(gDisplayListHead++);
|
||||
}
|
||||
|
|
@ -1,105 +0,0 @@
|
|||
#ifndef CODE_80280650_H
|
||||
#define CODE_80280650_H
|
||||
|
||||
#include "common_structs.h"
|
||||
|
||||
struct UnkStruct_80280658 {
|
||||
s32 unk0;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s8 unk8;
|
||||
s8 unk9;
|
||||
s16 unkA;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
f32 unk10;
|
||||
f32 unk14;
|
||||
f32 unk18;
|
||||
f32 unk1C;
|
||||
f32 unk20;
|
||||
f32 unk24;
|
||||
struct UnkStruct_80280658_2 *unk28;
|
||||
s32 unk2C;
|
||||
s32 unk30;
|
||||
f32 unk34;
|
||||
f32 unk38;
|
||||
s32 unk3C;
|
||||
s32 unk40;
|
||||
s32 unk44;
|
||||
s32 unk48;
|
||||
};
|
||||
|
||||
struct UnkStruct_80280658_2 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s8 unk8;
|
||||
s8 unk9;
|
||||
s8 unkA;
|
||||
f32 unkC;
|
||||
};
|
||||
|
||||
struct UnkStruct_8028088C {
|
||||
s32 unk0;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s8 unk8;
|
||||
s8 unk9;
|
||||
s16 unkA;
|
||||
s16 unkC;
|
||||
s16 unkE;
|
||||
f32 unk10;
|
||||
f32 unk14;
|
||||
f32 unk18;
|
||||
f32 unk1C;
|
||||
f32 unk20;
|
||||
f32 unk24;
|
||||
struct UnkStruct_80280658_2 *unk28;
|
||||
s16 unk2C;
|
||||
s16 unk2E;
|
||||
s16 unk30;
|
||||
s16 unk32;
|
||||
s16 unk34;
|
||||
s16 unk36;
|
||||
s32 unk38;
|
||||
s32 unk3C;
|
||||
};
|
||||
|
||||
void func_80281438(void);
|
||||
void func_80280650();
|
||||
void func_80280658(struct UnkStruct_80280658*);
|
||||
struct UnkStruct_80280658 *func_802806C8();
|
||||
struct UnkStruct_80280658 *func_80280734(struct UnkStruct_80280658*);
|
||||
u16 random_u16_credits();
|
||||
f32 random_float_between_0_and_1();
|
||||
f32 func_80280850(f32);
|
||||
void func_80280884();
|
||||
void func_8028093C(struct UnkStruct_80280658*);
|
||||
void func_80280A28(Vec3f, Vec3s, f32 );
|
||||
void func_80280B50(Vec3f, f32, s32, s16);
|
||||
void func_80280FA0(s32);
|
||||
void func_80280FA8(s32);
|
||||
void func_80280FB0();
|
||||
void func_80280FFC();
|
||||
void func_8028100C(s32, s32, s32);
|
||||
void func_8028150C();
|
||||
void func_80281520();
|
||||
void func_80281528();
|
||||
void func_80281530();
|
||||
void func_80281538();
|
||||
void func_80281540();
|
||||
void ending_sequence_loop();
|
||||
|
||||
extern struct UnkStruct_80280658 *D_802874F8;
|
||||
extern struct UnkStruct_80280658 *D_80284E7C;
|
||||
extern struct UnkStruct_80280658 *D_80284E88;
|
||||
|
||||
extern s32 D_802874E0;
|
||||
extern s8 D_802874F4;
|
||||
extern Gfx *D_802874D4;
|
||||
extern s32 D_802874FC;
|
||||
extern Mat4 D_80287500;
|
||||
extern s16 D_80164AF0;
|
||||
|
||||
#endif
|
||||
|
|
@ -9,10 +9,15 @@
|
|||
#include "spawn_players.h"
|
||||
#include "skybox_and_splitscreen.h"
|
||||
#include "code_8006E9C0.h"
|
||||
#include "code_80280650.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "code_80281780.h"
|
||||
#include "code_80005FD0.h"
|
||||
#include "code_802AAA70.h"
|
||||
#include "code_80281C40.h"
|
||||
|
||||
u8 defaultCharacterIds[] = {
|
||||
1, 2, 3, 4, 5, 6, 7, 0
|
||||
};
|
||||
|
||||
void debug_switch_character_ceremony_cutscene(void) {
|
||||
if (gEnableDebugMode) {
|
||||
|
|
@ -41,8 +46,9 @@ void debug_switch_character_ceremony_cutscene(void) {
|
|||
} else {
|
||||
gCharacterSelections[0] = MARIO;
|
||||
}
|
||||
// D_80284ED0 appears to be unused.
|
||||
bcopy(&D_80284ED0, &gCharacterIdByGPOverallRank, 8);
|
||||
// todo: confirm this.
|
||||
// Resets gCharacterIdByGPOverallRank to default?
|
||||
bcopy(&defaultCharacterIds, &gCharacterIdByGPOverallRank, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -137,7 +143,7 @@ void load_ceremony_cutscene(void) {
|
|||
func_8003D080();
|
||||
func_8006E9C0();
|
||||
func_8001C05C();
|
||||
func_80280FB0();
|
||||
balloons_and_fireworks_init();
|
||||
func_802816B8();
|
||||
func_80093E60();
|
||||
D_801625F8 = (s32) gHeapEndPtr - gNextFreeMemoryAddress;
|
||||
|
|
|
|||
|
|
@ -29,7 +29,6 @@ extern u16 D_800DC5BC;
|
|||
extern u16 D_800DC5C8;
|
||||
extern struct UnkStruct_800DC5EC *D_800DC5EC;
|
||||
|
||||
extern u32 gMenuSelectionFromEndingSequence; //D_80287550;
|
||||
extern s32 D_80287554;
|
||||
extern f32 D_801647A4;
|
||||
extern f32 D_80150130[];
|
||||
|
|
@ -61,7 +60,7 @@ extern struct Controller *gControllerOne;
|
|||
extern s8 gCharacterSelections[];
|
||||
extern u16 gEnableDebugMode;
|
||||
|
||||
extern void *D_80284ED0;
|
||||
extern u8 defaultCharacterIds[];
|
||||
extern s8 gGPOverallRanks[8];
|
||||
extern s8 D_8018EDF3;
|
||||
|
||||
|
|
|
|||
|
|
@ -7,11 +7,24 @@
|
|||
#include "hud_renderer.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "code_80091750.h"
|
||||
#include "code_80280650.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "code_80281C40.h"
|
||||
#include "ceremony_and_credits.h"
|
||||
#include "code_8001F980.h"
|
||||
|
||||
struct UnkStruct80287560 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
}; // 0xC
|
||||
|
||||
/** bss **/
|
||||
u32 gMenuSelectionFromEndingSequence;
|
||||
s32 D_80287554;
|
||||
s32 D_80281C40_pad[2];
|
||||
struct UnkStruct80287560 D_80287560[30];
|
||||
|
||||
void func_80281C40(void) {
|
||||
s32 i;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,24 +1,15 @@
|
|||
#ifndef CODE_80281C40_H
|
||||
#define CODE_80281C40_h
|
||||
|
||||
struct UnkStruct80287560 {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s32 unk4;
|
||||
s32 unk8;
|
||||
}; // 0xC
|
||||
|
||||
/* Function Prototypes */
|
||||
|
||||
void func_80281C40();
|
||||
void func_80281CB4(s32, s32, s32, s32);
|
||||
void func_80281D00();
|
||||
|
||||
extern struct UnkStruct80287560 D_80287560[];
|
||||
extern s32 D_802874FC;
|
||||
|
||||
extern u32 gMenuSelectionFromEndingSequence;
|
||||
extern s32 D_80287554;
|
||||
extern u16 gIsInQuitToMenuTransition;
|
||||
extern Gfx D_00284F70[];
|
||||
extern Gfx D_00284EE0[];
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@
|
|||
#include <code_800AF9B0.h>
|
||||
#include <code_800B45E0.h>
|
||||
#include <code_80280000.h>
|
||||
#include <code_80280650.h>
|
||||
#include <podium_ceremony_actors.h>
|
||||
#include <code_80281780.h>
|
||||
#include <code_80281C40.h>
|
||||
#include <code_802AAA70.h>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
#include "audio/external.h"
|
||||
#include "code_800029B0.h"
|
||||
#include "code_80280000.h"
|
||||
#include "code_80280650.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "code_80091750.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "profiler.h"
|
||||
|
|
@ -872,7 +872,7 @@ void game_state_handler(void) {
|
|||
race_logic_loop();
|
||||
break;
|
||||
case ENDING_SEQUENCE:
|
||||
ending_sequence_loop();
|
||||
podium_ceremony_loop();
|
||||
break;
|
||||
case CREDITS_SEQUENCE:
|
||||
credits_loop();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,484 @@
|
|||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include <PR/gu.h>
|
||||
#include <mk64.h>
|
||||
#include <types.h>
|
||||
#include <debug.h>
|
||||
#include <common_structs.h>
|
||||
#include "main.h"
|
||||
#include "memory.h"
|
||||
#include "variables.h"
|
||||
#include "common_textures.h"
|
||||
#include "code_8001F980.h"
|
||||
#include "hud_renderer.h"
|
||||
#include "podium_ceremony_actors.h"
|
||||
#include "camera_junk.h"
|
||||
#include "code_80027D00.h"
|
||||
#include "code_80057C60.h"
|
||||
#include "code_80005FD0.h"
|
||||
#include "code_80281C40.h"
|
||||
#include "math_util.h"
|
||||
|
||||
s32 fireworkConeColour[] = {
|
||||
0x00FF4080, // pink
|
||||
0x008040FF, // purple
|
||||
0x0040FF40, // green
|
||||
0x00FFFF40 // yellow
|
||||
};
|
||||
|
||||
/**
|
||||
* Mainly colours the explosion effect.
|
||||
* Appears to colour the cones as well.
|
||||
*/
|
||||
s32 fireworkColour[] = {
|
||||
0x007F2040, // red
|
||||
0x0040207F, // purple
|
||||
0x00207F20, // green
|
||||
0x007F7F20 // gold/yellow
|
||||
};
|
||||
|
||||
u16 sRandomSeed16 = 0;
|
||||
|
||||
UnkStruct_80284E64 D_80284E64 = {
|
||||
1,
|
||||
0xF3AF,
|
||||
34,
|
||||
0xFE2D,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
UnkStruct_80284E64 D_80284E70 = {
|
||||
3,
|
||||
0xF3AF,
|
||||
34,
|
||||
0xFE2D,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
UnkStruct_80284E64 D_80284E7C = {
|
||||
2,
|
||||
0xF3AF,
|
||||
34,
|
||||
0xFE2D,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
UnkStruct_80284E64 D_80284E88 = {
|
||||
0,
|
||||
0xF2CC,
|
||||
250,
|
||||
0xFE11,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
0,
|
||||
};
|
||||
|
||||
void func_80280650(void) {
|
||||
|
||||
}
|
||||
|
||||
void set_actor_with_next(struct UnkStruct_80280658 *arg0) {
|
||||
UnkStruct_80284E64 *temp_v0 = arg0->unk28;
|
||||
|
||||
arg0->unk10[0] = temp_v0->unk2;
|
||||
arg0->unk10[1] = temp_v0->unk4;
|
||||
arg0->unk10[2] = temp_v0->unk6;
|
||||
|
||||
// Place value in the high bits of s16.
|
||||
// Example: 85, 0b01010101 -> 0b0101010100000000
|
||||
arg0->unkA = temp_v0->unk8 << 8;
|
||||
arg0->unkC = temp_v0->unk9 << 8;
|
||||
arg0->unkE = temp_v0->unkA << 8;
|
||||
arg0->unk4 = temp_v0->unk0;
|
||||
}
|
||||
|
||||
struct UnkStruct_80280658 *find_available_entry(void) {
|
||||
UNUSED s32 pad[2];
|
||||
struct UnkStruct_80280658 *phi_a0 = D_802874F8;
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 200 ; i++) {
|
||||
|
||||
// Find an unused actor, initialize and return it.
|
||||
if ((phi_a0->unk0 & 1) == 0) {
|
||||
bzero(phi_a0, 0x4C);
|
||||
phi_a0->unk0 = 1;
|
||||
phi_a0->unk24 = 1.0f;
|
||||
return phi_a0;
|
||||
}
|
||||
|
||||
phi_a0++;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
struct UnkStruct_80280658 *new_actor(UnkStruct_80284E64 *arg0) {
|
||||
struct UnkStruct_80280658 *actor = find_available_entry();
|
||||
|
||||
// @bug No null check.
|
||||
// todo: What am I even supposed to return here?
|
||||
// I guess the other funcs need checks too
|
||||
#ifdef AVOID_UB
|
||||
if (actor == NULL) {
|
||||
// Something has gone terribly wrongg
|
||||
while(1);
|
||||
return NULL; // prevent warnings
|
||||
}
|
||||
#endif
|
||||
|
||||
// Linked list?
|
||||
actor->unk28 = arg0;
|
||||
set_actor_with_next(actor);
|
||||
return actor;
|
||||
}
|
||||
|
||||
u16 random_u16_credits(void) {
|
||||
u16 temp1, temp2;
|
||||
|
||||
if (sRandomSeed16 == 22026) {
|
||||
sRandomSeed16 = 0;
|
||||
}
|
||||
|
||||
temp1 = (sRandomSeed16 & 0x00FF) << 8;
|
||||
temp1 = temp1 ^ sRandomSeed16;
|
||||
|
||||
sRandomSeed16 = ((temp1 & 0x00FF) << 8) + ((temp1 & 0xFF00) >> 8);
|
||||
|
||||
temp1 = ((temp1 & 0x00FF) << 1) ^ sRandomSeed16;
|
||||
temp2 = (temp1 >> 1) ^ 0xFF80;
|
||||
|
||||
if ((temp1 & 1) == 0) {
|
||||
if (temp2 == 43605) {
|
||||
sRandomSeed16 = 0;
|
||||
} else {
|
||||
sRandomSeed16 = temp2 ^ 0x1FF4;
|
||||
}
|
||||
} else {
|
||||
sRandomSeed16 = temp2 ^ 0x8180;
|
||||
}
|
||||
|
||||
return sRandomSeed16;
|
||||
}
|
||||
|
||||
f32 random_float_between_0_and_1(void) {
|
||||
return random_u16_credits() / 65536.0f;
|
||||
}
|
||||
|
||||
f32 random_who_knows(f32 arg0) {
|
||||
return (random_float_between_0_and_1() * arg0) - (arg0 * 0.5f);
|
||||
}
|
||||
|
||||
void func_80280884(void) {
|
||||
|
||||
}
|
||||
|
||||
extern s16 D_802874CA;
|
||||
|
||||
void func_8028088C(struct UnkStruct_80280658 *arg0) {
|
||||
func_8006BB34(arg0->unk10, 1.0f, arg0->unk2E, arg0->unk2C);
|
||||
arg0->unk10[1] += 0.8f;
|
||||
arg0->unk2E = sins(arg0->unk30) * arg0->unk34;
|
||||
arg0->unk30 += arg0->unk32;
|
||||
arg0->unk3C++;
|
||||
if (arg0->unk3C >= 0x321) {
|
||||
arg0->unk0 = 0;
|
||||
}
|
||||
if (D_802874CA == 1) {
|
||||
arg0->unk0 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Spawns an aerial shell that ascends into the sky.
|
||||
* (note that the explode effect is a different actor)
|
||||
*/
|
||||
void spawn_firework_cone(Firework *cone) {
|
||||
Firework *actor;
|
||||
|
||||
if (cone->unk44 < 0x1E) {
|
||||
cone->unk10[1] += 2.5f;
|
||||
cone->unk10[0] += random_who_knows(0.2f);
|
||||
cone->unk10[2] += random_who_knows(0.2f);
|
||||
} else if (cone->unk2C == 4) {
|
||||
actor = (Firework *) new_actor(&D_80284E7C);
|
||||
actor->unk10[0] = cone->unk10[0];
|
||||
actor->unk10[1] = cone->unk10[1];
|
||||
actor->unk10[2] = cone->unk10[2];
|
||||
actor->unk30 = fireworkConeColour[cone->unk48];
|
||||
actor->unk3C = 0xFF;
|
||||
actor->unk40 = -0x11;
|
||||
actor->unk44 = 0x64;
|
||||
actor->unk34 = 1.8700001f;
|
||||
actor->unk38 = 1.8700001f;
|
||||
}
|
||||
}
|
||||
|
||||
Mat4 D_80287500;
|
||||
|
||||
void func_80280A28(Vec3f arg0, Vec3s arg1, f32 arg2) {
|
||||
Mat4 sp20;
|
||||
|
||||
func_80021E10(sp20, arg0, arg1);
|
||||
sp20[0][0] = D_80287500[0][0] * arg2;
|
||||
sp20[0][1] = D_80287500[1][0] * arg2;
|
||||
sp20[0][2] = D_80287500[2][0] * arg2;
|
||||
sp20[1][0] = D_80287500[0][1] * arg2;
|
||||
sp20[1][1] = D_80287500[1][1] * arg2;
|
||||
sp20[1][2] = D_80287500[2][1] * arg2;
|
||||
sp20[2][0] = D_80287500[0][2] * arg2;
|
||||
sp20[2][1] = D_80287500[1][2] * arg2;
|
||||
sp20[2][2] = D_80287500[2][2] * arg2;
|
||||
func_80022180(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB], sp20);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(&gGfxPool->mtxPool[D_80164AF0 + 0x3EB]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
}
|
||||
|
||||
void render_fireworks(Vec3f arg0, f32 arg1, s32 rgb, s16 alpha) {
|
||||
Vec3f sp4C;
|
||||
Vec3s sp44;
|
||||
s16 red;
|
||||
s16 green;
|
||||
s16 blue;
|
||||
|
||||
sp4C[0] = arg0[0];
|
||||
sp4C[1] = arg0[1];
|
||||
sp4C[2] = arg0[2];
|
||||
sp44[0] = 0;
|
||||
sp44[1] = camera1->rot[1];
|
||||
sp44[2] = 0;
|
||||
func_80280A28(sp4C, sp44, arg1);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008DB8);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, D_8018D48C, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
// ???????????????????????????????????
|
||||
red = ((rgb >> 0x10) & 0xFF) & 0xFF;
|
||||
green = ((rgb >> 0x08) & 0xFF) & 0xFF;
|
||||
blue = ((rgb >> 0x00) & 0xFF) & 0xFF;
|
||||
// ???????????????????????????????????
|
||||
func_8004B35C(red, green, blue, alpha);
|
||||
gSPDisplayList(gDisplayListHead++, D_0D008E48);
|
||||
D_80164AF0 += 1;
|
||||
}
|
||||
|
||||
void func_80280D1C(Firework *actor) {
|
||||
s32 i;
|
||||
Vec3f sp58;
|
||||
if (actor->unk44 < 30) {
|
||||
for (i = 0; i < 10; i++) {
|
||||
sp58[0] = actor->unk10[0];
|
||||
sp58[1] = actor->unk10[1] - i * 2;
|
||||
sp58[2] = actor->unk10[2];
|
||||
render_fireworks(sp58, ((10 - i) / 10.0f) * 2, fireworkColour[actor->unk48], ( ((((30 - actor->unk44) * 100)) / 30.0f)));
|
||||
}
|
||||
|
||||
} else {
|
||||
if (actor->unk2C < 5) {
|
||||
actor->unk3C += actor->unk40 * 2;
|
||||
actor->unk34 += actor->unk38 * 2;
|
||||
} else {
|
||||
actor->unk3C += actor->unk40 / ( 1.0f + ( ( (actor->unk2C * 7) - 0x23 ) / 10.0f ) );
|
||||
actor->unk34 += actor->unk38 / ( 1.0f + ( ( (actor->unk2C * 7) - 0x23 ) / 10.0f ) );
|
||||
if (actor->unk3C < 0) {
|
||||
actor->unk3C = 0;
|
||||
}
|
||||
}
|
||||
actor->unk2C += 1;
|
||||
if (((actor->unk3C > 0) && ((actor->unk34 > 0.0f))) || (actor->unk2C < 30)) {
|
||||
render_fireworks(actor->unk10, actor->unk34, actor->unk30, (s16) actor->unk3C);
|
||||
} else {
|
||||
actor->unk0 = 0;
|
||||
}
|
||||
}
|
||||
actor->unk44 += 1;
|
||||
}
|
||||
|
||||
void func_80280FA0(UNUSED s32 arg0) {
|
||||
|
||||
}
|
||||
|
||||
void func_80280FA8(UNUSED s32 arg0) {
|
||||
|
||||
}
|
||||
|
||||
void balloons_and_fireworks_init(void) {
|
||||
D_802874E0 = 0;
|
||||
D_802874F8 = (struct UnkStruct_80280658 *) get_next_available_memory_addr(0x3B60);
|
||||
bzero(D_802874F8, 0x3B60);
|
||||
new_actor(&D_80284E88);
|
||||
}
|
||||
|
||||
void func_80280FFC(void) {
|
||||
D_802874F4 = 1;
|
||||
}
|
||||
|
||||
void func_8028100C(UNUSED s32 arg0, UNUSED s32 arg1, UNUSED s32 arg2) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Spawn balloons!
|
||||
* The floats passed to random_who_knows appears to effect the spread of the balloons
|
||||
*/
|
||||
void spawn_balloons(s32 arg0, s32 arg1, s32 arg2) {
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 100; i++) {
|
||||
struct UnkStruct_80280658 *balloon;
|
||||
balloon = new_actor(&D_80284E64);
|
||||
balloon->unk10[0] = random_who_knows(200.0f) + arg0;
|
||||
balloon->unk10[1] = random_who_knows(380.0f) + arg1;
|
||||
balloon->unk10[2] = random_who_knows(600.0f) + arg2;
|
||||
balloon->unk2C = (s16) (s32) (random_float_between_0_and_1() * 7.0f);
|
||||
balloon->unk30 = random_u16_credits();
|
||||
balloon->unk32 = (s16) (s32) (random_who_knows(400.0f) + 900.0f);
|
||||
balloon->unk34 = (s16) (s32) (random_who_knows(2000.0f) + 3000.0f);
|
||||
}
|
||||
}
|
||||
|
||||
extern s16 D_802874BE[];
|
||||
extern s16 D_802874C6;
|
||||
extern s16 D_802874C8;
|
||||
extern s32 fireworkColour[];
|
||||
|
||||
/**
|
||||
* The explosive effect when the firework's charge detonates
|
||||
* resulting in a small variety of amusing colours.
|
||||
*/
|
||||
void spawn_firework_burst(s32 arg0, s32 arg1, s32 arg2) {
|
||||
f32 num;
|
||||
static u32 D_80287540;
|
||||
|
||||
if (((f32) random_float_between_0_and_1() * (D_802874BE[0] + 0xD)) < 1.0f) {
|
||||
Firework *burst;
|
||||
burst = (Firework *) new_actor(&D_80284E70);
|
||||
burst->unk10[0] = random_who_knows(0.0f) + arg0;
|
||||
burst->unk10[1] = random_who_knows((f32) (D_802874C6 + 100)) + (f32) arg1;
|
||||
burst->unk10[2] = random_who_knows((f32) (D_802874C8 + 700)) + (f32) arg2;
|
||||
|
||||
num = 1.1f;
|
||||
|
||||
// Wrap the counter from zero to three
|
||||
burst->unk48 = D_80287540 % 4U;
|
||||
burst->unk30 = fireworkColour[D_80287540 % 4U];
|
||||
burst->unk34 = num;
|
||||
burst->unk38 = num;
|
||||
D_80287540 += 1;
|
||||
burst->unk3C = 0xFF;
|
||||
burst->unk40 = -0x11;
|
||||
}
|
||||
}
|
||||
|
||||
extern s16 D_802874C4;
|
||||
extern s32 D_802874E0;
|
||||
extern Mat4 D_80287500;
|
||||
|
||||
extern s8 D_802874F5;
|
||||
|
||||
/**
|
||||
* Allegedly controls fireworks movement.
|
||||
*/
|
||||
void fireworks_update(void) {
|
||||
Camera *camera = &cameras[0];
|
||||
f32 temp_f0;
|
||||
|
||||
guLookAtF(D_80287500, camera->pos[0], camera->pos[1], camera->pos[2], camera->lookAt[0], camera->lookAt[1], camera->lookAt[2], camera->up[0], camera->up[1], camera->up[2]);
|
||||
if (D_802874F5 < 3) {
|
||||
if (D_802874E0 < 300) {
|
||||
temp_f0 = camera->lookAt[1];
|
||||
spawn_firework_burst(-0xE0E, (s32) (((temp_f0 - camera->pos[1]) * 1.5f) + temp_f0), -0x258);
|
||||
}
|
||||
if (D_802874E0 == 120) {
|
||||
spawn_balloons(-0xC6C, (s32) ((f32) D_802874C4 + 210.0f), -0x1EF);
|
||||
}
|
||||
} else if (D_802874E0 == 2) {
|
||||
spawn_balloons(-0xC6C, (s32) ((f32) D_802874C4 + 210.0f), -0x1EF);
|
||||
}
|
||||
|
||||
D_802874E0 += 1;
|
||||
}
|
||||
|
||||
void *D_80284E94[][3] = {
|
||||
{func_80280FA8, func_80280FA0, 0},
|
||||
{func_80280FA8, func_8028088C, 0},
|
||||
{func_80280FA8, func_80280D1C, 0},
|
||||
{spawn_firework_cone, 0, func_80280D1C},
|
||||
};
|
||||
|
||||
extern s16 D_802874D0;
|
||||
|
||||
void func_80281438(void) {
|
||||
void (*func)(void *);
|
||||
struct UnkStruct_80280658 *phi_s0;
|
||||
s32 i;
|
||||
s32 j;
|
||||
fireworks_update();
|
||||
D_802874D0 = 0;
|
||||
for (i = 0; i < 3; i++) {
|
||||
phi_s0 = D_802874F8;
|
||||
for (j = 0; j < 200; j++) {
|
||||
if ((phi_s0->unk0 & 1) != 0) {
|
||||
|
||||
func = D_80284E94[phi_s0->unk4][i];
|
||||
|
||||
if (func != 0) {
|
||||
func(phi_s0);
|
||||
}
|
||||
}
|
||||
phi_s0++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8028150C(void) {
|
||||
D_802874D4 = gDisplayListHead;
|
||||
}
|
||||
|
||||
void func_80281520(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281528(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281530(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281538(void) {
|
||||
|
||||
}
|
||||
|
||||
void func_80281540(void) {
|
||||
|
||||
}
|
||||
|
||||
void podium_ceremony_loop(void) {
|
||||
D_80150112 = 0;
|
||||
D_802874FC = 0;
|
||||
setup_camera_podium_ceremony();
|
||||
func_80028F70();
|
||||
func_80022744();
|
||||
func_80059AC8();
|
||||
func_80059AC8();
|
||||
func_8005A070();
|
||||
if (D_802874F4 != 0) {
|
||||
func_8001C14C();
|
||||
func_800097E0();
|
||||
}
|
||||
func_80281D00();
|
||||
func_80281540();
|
||||
#if VARIABLE_WATCH_DEBUG_LIST
|
||||
display_dvdl();
|
||||
#endif
|
||||
gDPFullSync(gDisplayListHead++);
|
||||
gSPEndDisplayList(gDisplayListHead++);
|
||||
}
|
||||
|
|
@ -0,0 +1,108 @@
|
|||
#ifndef podium_ceremony_actors_H
|
||||
#define podium_ceremony_actors_H
|
||||
|
||||
#include "common_structs.h"
|
||||
|
||||
typedef struct {
|
||||
s16 unk0;
|
||||
s16 unk2;
|
||||
s16 unk4;
|
||||
s16 unk6;
|
||||
s8 unk8;
|
||||
s8 unk9;
|
||||
s8 unkA;
|
||||
s8 unkB;
|
||||
} UnkStruct_80284E64;
|
||||
|
||||
struct UnkStruct_80280658 {
|
||||
/* 0x00 */ s32 unk0;
|
||||
/* 0x04 */ s16 unk4;
|
||||
/* 0x06 */ s16 unk6;
|
||||
/* 0x08 */ s8 unk8;
|
||||
/* 0x09 */ s8 unk9;
|
||||
/* 0x0A */ s16 unkA;
|
||||
/* 0x0C */ s16 unkC;
|
||||
/* 0x0E */ s16 unkE;
|
||||
/* 0x10 */ Vec3f unk10;
|
||||
/* 0x1C */ f32 unk1C;
|
||||
/* 0x20 */ f32 unk20;
|
||||
/* 0x24 */ f32 unk24;
|
||||
/* 0x28 */ UnkStruct_80284E64 *unk28;
|
||||
/* 0x2C */ s16 unk2C;
|
||||
/* 0x2E */ s16 unk2E;
|
||||
/* 0x30 */ s16 unk30;
|
||||
/* 0x32 */ s16 unk32;
|
||||
/* 0x34 */ s16 unk34;
|
||||
/* 0x36 */ s16 unk36;
|
||||
/* 0x38 */ f32 unk38;
|
||||
/* 0x3C */ s32 unk3C;
|
||||
/* 0x40 */ s32 unk40;
|
||||
/* 0x44 */ s32 unk44;
|
||||
/* 0x48 */ s32 unk48;
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s32 unk0;
|
||||
/* 0x04 */ s16 unk4;
|
||||
/* 0x06 */ s16 unk6;
|
||||
/* 0x08 */ s8 unk8;
|
||||
/* 0x09 */ s8 unk9;
|
||||
/* 0x0A */ s16 unkA;
|
||||
/* 0x0C */ s16 unkC;
|
||||
/* 0x0E */ s16 unkE;
|
||||
/* 0x10 */ Vec3f unk10;
|
||||
/* 0x1C */ f32 unk1C;
|
||||
/* 0x20 */ f32 unk20;
|
||||
/* 0x24 */ f32 unk24;
|
||||
/* 0x28 */ UnkStruct_80284E64 *unk28;
|
||||
/* 0x2C */ s32 unk2C;
|
||||
/* 0x30 */ s32 unk30; // s32 instead of s16
|
||||
/* 0x34 */ f32 unk34; // f32 instead of s16
|
||||
/* 0x38 */ f32 unk38;
|
||||
/* 0x3C */ s32 unk3C;
|
||||
/* 0x40 */ s32 unk40;
|
||||
/* 0x44 */ s32 unk44;
|
||||
/* 0x48 */ s32 unk48;
|
||||
} Firework;
|
||||
|
||||
void func_80281438(void);
|
||||
void func_80280650();
|
||||
void set_actor_with_next(struct UnkStruct_80280658*);
|
||||
struct UnkStruct_80280658 *find_available_entry();
|
||||
struct UnkStruct_80280658 *new_actor(UnkStruct_80284E64*);
|
||||
u16 random_u16_credits();
|
||||
f32 random_float_between_0_and_1();
|
||||
f32 random_who_knows(f32);
|
||||
void func_80280884();
|
||||
void spawn_firework_cone(Firework *);
|
||||
void func_80280A28(Vec3f, Vec3s, f32 );
|
||||
void render_fireworks(Vec3f, f32, s32, s16);
|
||||
void func_80280FA0(s32);
|
||||
void func_80280FA8(s32);
|
||||
void balloons_and_fireworks_init();
|
||||
void func_80280FFC();
|
||||
void func_8028100C(s32, s32, s32);
|
||||
void func_8028150C();
|
||||
void func_80281520();
|
||||
void func_80281528();
|
||||
void func_80281530();
|
||||
void func_80281538();
|
||||
void func_80281540();
|
||||
void podium_ceremony_loop();
|
||||
|
||||
|
||||
extern struct UnkStruct_80280658 *D_802874F8;
|
||||
|
||||
extern UnkStruct_80284E64 D_80284E64;
|
||||
extern UnkStruct_80284E64 D_80284E7C;
|
||||
extern UnkStruct_80284E64 D_80284E88;
|
||||
extern UnkStruct_80284E64 D_80284E70;
|
||||
|
||||
extern s32 D_802874E0;
|
||||
extern s8 D_802874F4;
|
||||
extern Gfx *D_802874D4;
|
||||
extern s32 D_802874FC;
|
||||
extern Mat4 D_80287500;
|
||||
extern s16 D_80164AF0;
|
||||
|
||||
#endif
|
||||
Loading…
Reference in New Issue