1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2024-11-28 19:25:27 +00:00

BgSpot08Iceblock OK, some documentation (#641)

* OK, spec

* all functions and variables named,
some docs on the complicated function

* delete asm

* updated to reflect Actor changes

* simplify one thing into a ternary

* Address review comments
This commit is contained in:
EllipticEllipsis 2021-02-02 22:28:29 +00:00 committed by GitHub
parent 7eaf57be59
commit ced724fb9b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 448 additions and 1148 deletions

View file

@ -1,14 +0,0 @@
glabel BgSpot08Iceblock_Destroy
/* 009F8 808B1358 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 009FC 808B135C AFA40018 */ sw $a0, 0x0018($sp)
/* 00A00 808B1360 8FAE0018 */ lw $t6, 0x0018($sp)
/* 00A04 808B1364 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00A08 808B1368 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00A0C 808B136C 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810
/* 00A10 808B1370 0C00FB56 */ jal DynaPoly_DeleteBgActor
## DynaPoly_DeleteBgActor
/* 00A14 808B1374 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C
/* 00A18 808B1378 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00A1C 808B137C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00A20 808B1380 03E00008 */ jr $ra
/* 00A24 808B1384 00000000 */ nop

View file

@ -1,30 +0,0 @@
glabel BgSpot08Iceblock_Draw
/* 00CCC 808B162C 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00CD0 808B1630 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00CD4 808B1634 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 00CD8 808B1638 00A03025 */ or $a2, $a1, $zero ## $a2 = 00000000
/* 00CDC 808B163C 3C0E0600 */ lui $t6, %hi(D_06002BD0) ## $t6 = 06000000
/* 00CE0 808B1640 30420200 */ andi $v0, $v0, 0x0200 ## $v0 = 00000000
/* 00CE4 808B1644 10400006 */ beq $v0, $zero, .L808B1660
/* 00CE8 808B1648 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
/* 00CEC 808B164C 24010200 */ addiu $at, $zero, 0x0200 ## $at = 00000200
/* 00CF0 808B1650 10410006 */ beq $v0, $at, .L808B166C
/* 00CF4 808B1654 3C0F0600 */ lui $t7, %hi(D_06000DE0) ## $t7 = 06000000
/* 00CF8 808B1658 10000006 */ beq $zero, $zero, .L808B1674
/* 00CFC 808B165C 00000000 */ nop
.L808B1660:
/* 00D00 808B1660 25CE2BD0 */ addiu $t6, $t6, %lo(D_06002BD0) ## $t6 = 06002BD0
/* 00D04 808B1664 10000003 */ beq $zero, $zero, .L808B1674
/* 00D08 808B1668 AFAE001C */ sw $t6, 0x001C($sp)
.L808B166C:
/* 00D0C 808B166C 25EF0DE0 */ addiu $t7, $t7, %lo(D_06000DE0) ## $t7 = 06000DE0
/* 00D10 808B1670 AFAF001C */ sw $t7, 0x001C($sp)
.L808B1674:
/* 00D14 808B1674 0C00D498 */ jal Gfx_DrawDListOpa
/* 00D18 808B1678 8FA5001C */ lw $a1, 0x001C($sp)
/* 00D1C 808B167C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00D20 808B1680 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00D24 808B1684 03E00008 */ jr $ra
/* 00D28 808B1688 00000000 */ nop
/* 00D2C 808B168C 00000000 */ nop

View file

@ -1,179 +0,0 @@
.rdata
glabel D_808B17C4
.asciz "(spot08 )(arg_data 0x%04x)\n"
.balign 4
.late_rodata
glabel D_808B1890
.float 65535.5
glabel D_808B1894
.float 65535.5
glabel jtbl_808B1898
.word L808B1308
.word L808B1308
.word L808B1318
.word L808B1328
.word L808B133C
.text
glabel BgSpot08Iceblock_Init
/* 007F4 808B1154 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 007F8 808B1158 AFB00018 */ sw $s0, 0x0018($sp)
/* 007FC 808B115C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00800 808B1160 AFBF001C */ sw $ra, 0x001C($sp)
/* 00804 808B1164 AFA5002C */ sw $a1, 0x002C($sp)
/* 00808 808B1168 3C04808B */ lui $a0, %hi(D_808B17C4) ## $a0 = 808B0000
/* 0080C 808B116C 248417C4 */ addiu $a0, $a0, %lo(D_808B17C4) ## $a0 = 808B17C4
/* 00810 808B1170 0C00084C */ jal osSyncPrintf
/* 00814 808B1174 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 00818 808B1178 0C22C27C */ jal func_808B09F0
/* 0081C 808B117C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00820 808B1180 8603001C */ lh $v1, 0x001C($s0) ## 0000001C
/* 00824 808B1184 24010200 */ addiu $at, $zero, 0x0200 ## $at = 00000200
/* 00828 808B1188 3C060600 */ lui $a2, %hi(D_06002FD8) ## $a2 = 06000000
/* 0082C 808B118C 30620200 */ andi $v0, $v1, 0x0200 ## $v0 = 00000000
/* 00830 808B1190 10400005 */ beq $v0, $zero, .L808B11A8
/* 00834 808B1194 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00838 808B1198 10410005 */ beq $v0, $at, .L808B11B0
/* 0083C 808B119C 3C060600 */ lui $a2, %hi(D_06001904) ## $a2 = 06000000
/* 00840 808B11A0 10000004 */ beq $zero, $zero, .L808B11B4
/* 00844 808B11A4 8FA60020 */ lw $a2, 0x0020($sp)
.L808B11A8:
/* 00848 808B11A8 10000002 */ beq $zero, $zero, .L808B11B4
/* 0084C 808B11AC 24C62FD8 */ addiu $a2, $a2, %lo(D_06002FD8) ## $a2 = 06002FD8
.L808B11B0:
/* 00850 808B11B0 24C61904 */ addiu $a2, $a2, %lo(D_06001904) ## $a2 = 06001904
.L808B11B4:
/* 00854 808B11B4 3062000F */ andi $v0, $v1, 0x000F ## $v0 = 00000000
/* 00858 808B11B8 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002
/* 0085C 808B11BC 10410004 */ beq $v0, $at, .L808B11D0
/* 00860 808B11C0 8FA5002C */ lw $a1, 0x002C($sp)
/* 00864 808B11C4 24010003 */ addiu $at, $zero, 0x0003 ## $at = 00000003
/* 00868 808B11C8 14410005 */ bne $v0, $at, .L808B11E0
/* 0086C 808B11CC 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
.L808B11D0:
/* 00870 808B11D0 0C22C25A */ jal func_808B0968
/* 00874 808B11D4 24070003 */ addiu $a3, $zero, 0x0003 ## $a3 = 00000003
/* 00878 808B11D8 10000004 */ beq $zero, $zero, .L808B11EC
/* 0087C 808B11DC 00000000 */ nop
.L808B11E0:
/* 00880 808B11E0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00884 808B11E4 0C22C25A */ jal func_808B0968
/* 00888 808B11E8 8FA5002C */ lw $a1, 0x002C($sp)
.L808B11EC:
/* 0088C 808B11EC 3C0E8016 */ lui $t6, %hi(gSaveContext+4)
/* 00890 808B11F0 8DCEE664 */ lw $t6, %lo(gSaveContext+4)($t6)
/* 00894 808B11F4 24010005 */ addiu $at, $zero, 0x0005 ## $at = 00000005
/* 00898 808B11F8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0089C 808B11FC 11C00003 */ beq $t6, $zero, .L808B120C
/* 008A0 808B1200 3C05808B */ lui $a1, %hi(D_808B16F8) ## $a1 = 808B0000
/* 008A4 808B1204 10000002 */ beq $zero, $zero, .L808B1210
/* 008A8 808B1208 24020005 */ addiu $v0, $zero, 0x0005 ## $v0 = 00000005
.L808B120C:
/* 008AC 808B120C 24020011 */ addiu $v0, $zero, 0x0011 ## $v0 = 00000011
.L808B1210:
/* 008B0 808B1210 14410005 */ bne $v0, $at, .L808B1228
/* 008B4 808B1214 00000000 */ nop
/* 008B8 808B1218 0C00B55C */ jal Actor_Kill
/* 008BC 808B121C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 008C0 808B1220 10000049 */ beq $zero, $zero, .L808B1348
/* 008C4 808B1224 8FBF001C */ lw $ra, 0x001C($sp)
.L808B1228:
/* 008C8 808B1228 0C01E037 */ jal Actor_ProcessInitChain
/* 008CC 808B122C 24A516F8 */ addiu $a1, $a1, %lo(D_808B16F8) ## $a1 = 000016F8
/* 008D0 808B1230 8602001C */ lh $v0, 0x001C($s0) ## 0000001C
/* 008D4 808B1234 24010010 */ addiu $at, $zero, 0x0010 ## $at = 00000010
/* 008D8 808B1238 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 008DC 808B123C 304200F0 */ andi $v0, $v0, 0x00F0 ## $v0 = 00000000
/* 008E0 808B1240 10400008 */ beq $v0, $zero, .L808B1264
/* 008E4 808B1244 3C053E4C */ lui $a1, 0x3E4C ## $a1 = 3E4C0000
/* 008E8 808B1248 1041000A */ beq $v0, $at, .L808B1274
/* 008EC 808B124C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 008F0 808B1250 24010020 */ addiu $at, $zero, 0x0020 ## $at = 00000020
/* 008F4 808B1254 1041000C */ beq $v0, $at, .L808B1288
/* 008F8 808B1258 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 008FC 808B125C 1000000D */ beq $zero, $zero, .L808B1294
/* 00900 808B1260 00000000 */ nop
.L808B1264:
/* 00904 808B1264 0C00B58B */ jal Actor_SetScale
/* 00908 808B1268 34A5CCCD */ ori $a1, $a1, 0xCCCD ## $a1 = 3E4CCCCD
/* 0090C 808B126C 10000009 */ beq $zero, $zero, .L808B1294
/* 00910 808B1270 00000000 */ nop
.L808B1274:
/* 00914 808B1274 3C053DCC */ lui $a1, 0x3DCC ## $a1 = 3DCC0000
/* 00918 808B1278 0C00B58B */ jal Actor_SetScale
/* 0091C 808B127C 34A5CCCD */ ori $a1, $a1, 0xCCCD ## $a1 = 3DCCCCCD
/* 00920 808B1280 10000004 */ beq $zero, $zero, .L808B1294
/* 00924 808B1284 00000000 */ nop
.L808B1288:
/* 00928 808B1288 3C053D4C */ lui $a1, 0x3D4C ## $a1 = 3D4C0000
/* 0092C 808B128C 0C00B58B */ jal Actor_SetScale
/* 00930 808B1290 34A5CCCD */ ori $a1, $a1, 0xCCCD ## $a1 = 3D4CCCCD
.L808B1294:
/* 00934 808B1294 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00938 808B1298 00000000 */ nop
/* 0093C 808B129C 3C01808B */ lui $at, %hi(D_808B1890) ## $at = 808B0000
/* 00940 808B12A0 C4241890 */ lwc1 $f4, %lo(D_808B1890)($at)
/* 00944 808B12A4 46040182 */ mul.s $f6, $f0, $f4
/* 00948 808B12A8 4600320D */ trunc.w.s $f8, $f6
/* 0094C 808B12AC 44184000 */ mfc1 $t8, $f8
/* 00950 808B12B0 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00954 808B12B4 A618018C */ sh $t8, 0x018C($s0) ## 0000018C
/* 00958 808B12B8 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 0095C 808B12BC 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
/* 00960 808B12C0 3C01808B */ lui $at, %hi(D_808B1894) ## $at = 808B0000
/* 00964 808B12C4 C42A1894 */ lwc1 $f10, %lo(D_808B1894)($at)
/* 00968 808B12C8 8609001C */ lh $t1, 0x001C($s0) ## 0000001C
/* 0096C 808B12CC E602016C */ swc1 $f2, 0x016C($s0) ## 0000016C
/* 00970 808B12D0 460A0402 */ mul.s $f16, $f0, $f10
/* 00974 808B12D4 312A000F */ andi $t2, $t1, 0x000F ## $t2 = 00000000
/* 00978 808B12D8 2D410005 */ sltiu $at, $t2, 0x0005
/* 0097C 808B12DC 000A5080 */ sll $t2, $t2, 2
/* 00980 808B12E0 E6020180 */ swc1 $f2, 0x0180($s0) ## 00000180
/* 00984 808B12E4 4600848D */ trunc.w.s $f18, $f16
/* 00988 808B12E8 44089000 */ mfc1 $t0, $f18
/* 0098C 808B12EC 10200015 */ beq $at, $zero, .L808B1344
/* 00990 808B12F0 A608018E */ sh $t0, 0x018E($s0) ## 0000018E
/* 00994 808B12F4 3C01808B */ lui $at, %hi(jtbl_808B1898) ## $at = 808B0000
/* 00998 808B12F8 002A0821 */ addu $at, $at, $t2
/* 0099C 808B12FC 8C2A1898 */ lw $t2, %lo(jtbl_808B1898)($at)
/* 009A0 808B1300 01400008 */ jr $t2
/* 009A4 808B1304 00000000 */ nop
glabel L808B1308
/* 009A8 808B1308 0C22C4E2 */ jal func_808B1388
/* 009AC 808B130C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 009B0 808B1310 1000000D */ beq $zero, $zero, .L808B1348
/* 009B4 808B1314 8FBF001C */ lw $ra, 0x001C($sp)
glabel L808B1318
/* 009B8 808B1318 0C22C4FF */ jal func_808B13FC
/* 009BC 808B131C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 009C0 808B1320 10000009 */ beq $zero, $zero, .L808B1348
/* 009C4 808B1324 8FBF001C */ lw $ra, 0x001C($sp)
glabel L808B1328
/* 009C8 808B1328 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 009CC 808B132C 0C22C415 */ jal func_808B1054
/* 009D0 808B1330 8FA5002C */ lw $a1, 0x002C($sp)
/* 009D4 808B1334 10000004 */ beq $zero, $zero, .L808B1348
/* 009D8 808B1338 8FBF001C */ lw $ra, 0x001C($sp)
glabel L808B133C
/* 009DC 808B133C 0C22C55D */ jal func_808B1574
/* 009E0 808B1340 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L808B1344:
/* 009E4 808B1344 8FBF001C */ lw $ra, 0x001C($sp)
.L808B1348:
/* 009E8 808B1348 8FB00018 */ lw $s0, 0x0018($sp)
/* 009EC 808B134C 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
/* 009F0 808B1350 03E00008 */ jr $ra
/* 009F4 808B1354 00000000 */ nop

View file

@ -1,50 +0,0 @@
.late_rodata
glabel D_808B18AC
.float 0.05
.text
glabel BgSpot08Iceblock_Update
/* 00C34 808B1594 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00C38 808B1598 AFBF001C */ sw $ra, 0x001C($sp)
/* 00C3C 808B159C AFB00018 */ sw $s0, 0x0018($sp)
/* 00C40 808B15A0 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00C44 808B15A4 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00C48 808B15A8 AFA50024 */ sw $a1, 0x0024($sp)
/* 00C4C 808B15AC 3C01808B */ lui $at, %hi(D_808B18AC) ## $at = 808B0000
/* 00C50 808B15B0 C42418AC */ lwc1 $f4, %lo(D_808B18AC)($at)
/* 00C54 808B15B4 2404012C */ addiu $a0, $zero, 0x012C ## $a0 = 0000012C
/* 00C58 808B15B8 4604003C */ c.lt.s $f0, $f4
/* 00C5C 808B15BC 00000000 */ nop
/* 00C60 808B15C0 45020009 */ bc1fl .L808B15E8
/* 00C64 808B15C4 860E018C */ lh $t6, 0x018C($s0) ## 0000018C
/* 00C68 808B15C8 0C01DF64 */ jal Rand_S16Offset
/* 00C6C 808B15CC 24050064 */ addiu $a1, $zero, 0x0064 ## $a1 = 00000064
/* 00C70 808B15D0 A6020190 */ sh $v0, 0x0190($s0) ## 00000190
/* 00C74 808B15D4 24040320 */ addiu $a0, $zero, 0x0320 ## $a0 = 00000320
/* 00C78 808B15D8 0C01DF64 */ jal Rand_S16Offset
/* 00C7C 808B15DC 24050190 */ addiu $a1, $zero, 0x0190 ## $a1 = 00000190
/* 00C80 808B15E0 A6020192 */ sh $v0, 0x0192($s0) ## 00000192
/* 00C84 808B15E4 860E018C */ lh $t6, 0x018C($s0) ## 0000018C
.L808B15E8:
/* 00C88 808B15E8 860F0190 */ lh $t7, 0x0190($s0) ## 00000190
/* 00C8C 808B15EC 8619018E */ lh $t9, 0x018E($s0) ## 0000018E
/* 00C90 808B15F0 86080192 */ lh $t0, 0x0192($s0) ## 00000192
/* 00C94 808B15F4 8E020164 */ lw $v0, 0x0164($s0) ## 00000164
/* 00C98 808B15F8 01CFC021 */ addu $t8, $t6, $t7
/* 00C9C 808B15FC 03284821 */ addu $t1, $t9, $t0
/* 00CA0 808B1600 A618018C */ sh $t8, 0x018C($s0) ## 0000018C
/* 00CA4 808B1604 10400004 */ beq $v0, $zero, .L808B1618
/* 00CA8 808B1608 A609018E */ sh $t1, 0x018E($s0) ## 0000018E
/* 00CAC 808B160C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00CB0 808B1610 0040F809 */ jalr $ra, $v0
/* 00CB4 808B1614 8FA50024 */ lw $a1, 0x0024($sp)
.L808B1618:
/* 00CB8 808B1618 8FBF001C */ lw $ra, 0x001C($sp)
/* 00CBC 808B161C 8FB00018 */ lw $s0, 0x0018($sp)
/* 00CC0 808B1620 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00CC4 808B1624 03E00008 */ jr $ra
/* 00CC8 808B1628 00000000 */ nop

View file

@ -1,3 +0,0 @@
glabel func_808B0960
/* 00000 808B0960 03E00008 */ jr $ra
/* 00004 808B0964 AC850164 */ sw $a1, 0x0164($a0) ## 00000164

View file

@ -1,50 +0,0 @@
.rdata
glabel D_808B1710
.asciz "Warning : move BG (%s %d)(name %d)(arg_data 0x%04x)\n"
.balign 4
glabel D_808B1750
.asciz "../z_bg_spot08_iceblock.c"
.balign 4
.text
glabel func_808B0968
/* 00008 808B0968 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
/* 0000C 808B096C AFBF0024 */ sw $ra, 0x0024($sp)
/* 00010 808B0970 AFB00020 */ sw $s0, 0x0020($sp)
/* 00014 808B0974 AFA5003C */ sw $a1, 0x003C($sp)
/* 00018 808B0978 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0001C 808B097C AFA60040 */ sw $a2, 0x0040($sp)
/* 00020 808B0980 AFA00030 */ sw $zero, 0x0030($sp)
/* 00024 808B0984 0C010D20 */ jal DynaPolyActor_Init
/* 00028 808B0988 00E02825 */ or $a1, $a3, $zero ## $a1 = 00000000
/* 0002C 808B098C 8FA40040 */ lw $a0, 0x0040($sp)
/* 00030 808B0990 0C010620 */ jal CollisionHeader_GetVirtual
/* 00034 808B0994 27A50030 */ addiu $a1, $sp, 0x0030 ## $a1 = FFFFFFF8
/* 00038 808B0998 8FA4003C */ lw $a0, 0x003C($sp)
/* 0003C 808B099C 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 00040 808B09A0 8FA70030 */ lw $a3, 0x0030($sp)
/* 00044 808B09A4 0C00FA9D */ jal DynaPoly_SetBgActor
## DynaPoly_SetBgActor
/* 00048 808B09A8 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810
/* 0004C 808B09AC 24010032 */ addiu $at, $zero, 0x0032 ## $at = 00000032
/* 00050 808B09B0 1441000A */ bne $v0, $at, .L808B09DC
/* 00054 808B09B4 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C
/* 00058 808B09B8 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 0005C 808B09BC 3C04808B */ lui $a0, %hi(D_808B1710) ## $a0 = 808B0000
/* 00060 808B09C0 3C05808B */ lui $a1, %hi(D_808B1750) ## $a1 = 808B0000
/* 00064 808B09C4 86070000 */ lh $a3, 0x0000($s0) ## 00000000
/* 00068 808B09C8 24A51750 */ addiu $a1, $a1, %lo(D_808B1750) ## $a1 = 808B1750
/* 0006C 808B09CC 24841710 */ addiu $a0, $a0, %lo(D_808B1710) ## $a0 = 808B1710
/* 00070 808B09D0 240600D9 */ addiu $a2, $zero, 0x00D9 ## $a2 = 000000D9
/* 00074 808B09D4 0C00084C */ jal osSyncPrintf
/* 00078 808B09D8 AFAE0010 */ sw $t6, 0x0010($sp)
.L808B09DC:
/* 0007C 808B09DC 8FBF0024 */ lw $ra, 0x0024($sp)
/* 00080 808B09E0 8FB00020 */ lw $s0, 0x0020($sp)
/* 00084 808B09E4 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
/* 00088 808B09E8 03E00008 */ jr $ra
/* 0008C 808B09EC 00000000 */ nop

View file

@ -1,96 +0,0 @@
.rdata
glabel D_808B176C
.asciz "Error : arg_data (%s %d)(arg_data 0x%04x)\n"
.balign 4
glabel D_808B17A8
.asciz "../z_bg_spot08_iceblock.c"
.balign 4
.late_rodata
glabel jtbl_808B17E4
.word L808B0A74
.word L808B0A50
.word L808B0A50
.word L808B0A74
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A74
.word L808B0A74
.word L808B0A74
.word L808B0A50
.word L808B0A74
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A50
.word L808B0A74
.word L808B0A50
.word L808B0A50
.word L808B0A74
.word L808B0A74
.text
glabel func_808B09F0
/* 00090 808B09F0 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00094 808B09F4 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00098 808B09F8 AFA40018 */ sw $a0, 0x0018($sp)
/* 0009C 808B09FC 8487001C */ lh $a3, 0x001C($a0) ## 0000001C
/* 000A0 808B0A00 30E200FF */ andi $v0, $a3, 0x00FF ## $v0 = 00000000
/* 000A4 808B0A04 28410025 */ slti $at, $v0, 0x0025
/* 000A8 808B0A08 14200006 */ bne $at, $zero, .L808B0A24
/* 000AC 808B0A0C 244FFFFF */ addiu $t7, $v0, 0xFFFF ## $t7 = FFFFFFFF
/* 000B0 808B0A10 240100FF */ addiu $at, $zero, 0x00FF ## $at = 000000FF
/* 000B4 808B0A14 1041000B */ beq $v0, $at, .L808B0A44
/* 000B8 808B0A18 8FB90018 */ lw $t9, 0x0018($sp)
/* 000BC 808B0A1C 1000000C */ beq $zero, $zero, .L808B0A50
/* 000C0 808B0A20 00000000 */ nop
.L808B0A24:
/* 000C4 808B0A24 2DE10024 */ sltiu $at, $t7, 0x0024
/* 000C8 808B0A28 10200009 */ beq $at, $zero, .L808B0A50
/* 000CC 808B0A2C 000F7880 */ sll $t7, $t7, 2
/* 000D0 808B0A30 3C01808B */ lui $at, %hi(jtbl_808B17E4) ## $at = 808B0000
/* 000D4 808B0A34 002F0821 */ addu $at, $at, $t7
/* 000D8 808B0A38 8C2F17E4 */ lw $t7, %lo(jtbl_808B17E4)($at)
/* 000DC 808B0A3C 01E00008 */ jr $t7
/* 000E0 808B0A40 00000000 */ nop
.L808B0A44:
/* 000E4 808B0A44 24180010 */ addiu $t8, $zero, 0x0010 ## $t8 = 00000010
/* 000E8 808B0A48 1000000A */ beq $zero, $zero, .L808B0A74
/* 000EC 808B0A4C A738001C */ sh $t8, 0x001C($t9) ## 0000001C
glabel L808B0A50
.L808B0A50:
/* 000F0 808B0A50 3C04808B */ lui $a0, %hi(D_808B176C) ## $a0 = 808B0000
/* 000F4 808B0A54 3C05808B */ lui $a1, %hi(D_808B17A8) ## $a1 = 808B0000
/* 000F8 808B0A58 24A517A8 */ addiu $a1, $a1, %lo(D_808B17A8) ## $a1 = 808B17A8
/* 000FC 808B0A5C 2484176C */ addiu $a0, $a0, %lo(D_808B176C) ## $a0 = 808B176C
/* 00100 808B0A60 0C00084C */ jal osSyncPrintf
/* 00104 808B0A64 240600F6 */ addiu $a2, $zero, 0x00F6 ## $a2 = 000000F6
/* 00108 808B0A68 8FA90018 */ lw $t1, 0x0018($sp)
/* 0010C 808B0A6C 24080010 */ addiu $t0, $zero, 0x0010 ## $t0 = 00000010
/* 00110 808B0A70 A528001C */ sh $t0, 0x001C($t1) ## 0000001C
glabel L808B0A74
.L808B0A74:
/* 00114 808B0A74 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00118 808B0A78 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 0011C 808B0A7C 03E00008 */ jr $ra
/* 00120 808B0A80 00000000 */ nop

View file

@ -1,26 +0,0 @@
glabel func_808B0A84
/* 00124 808B0A84 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00128 808B0A88 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0012C 808B0A8C AFA40020 */ sw $a0, 0x0020($sp)
/* 00130 808B0A90 0C01DE1C */ jal Math_SinS
## sins?
/* 00134 808B0A94 8484018C */ lh $a0, 0x018C($a0) ## 0000018C
/* 00138 808B0A98 8FAF0020 */ lw $t7, 0x0020($sp)
/* 0013C 808B0A9C E7A0001C */ swc1 $f0, 0x001C($sp)
/* 00140 808B0AA0 0C01DE1C */ jal Math_SinS
## sins?
/* 00144 808B0AA4 85E4018E */ lh $a0, 0x018E($t7) ## 0000018E
/* 00148 808B0AA8 3C014080 */ lui $at, 0x4080 ## $at = 40800000
/* 0014C 808B0AAC 44813000 */ mtc1 $at, $f6 ## $f6 = 4.00
/* 00150 808B0AB0 C7A4001C */ lwc1 $f4, 0x001C($sp)
/* 00154 808B0AB4 3C014040 */ lui $at, 0x4040 ## $at = 40400000
/* 00158 808B0AB8 44815000 */ mtc1 $at, $f10 ## $f10 = 3.00
/* 0015C 808B0ABC 46062202 */ mul.s $f8, $f4, $f6
/* 00160 808B0AC0 8FB80020 */ lw $t8, 0x0020($sp)
/* 00164 808B0AC4 460A0402 */ mul.s $f16, $f0, $f10
/* 00168 808B0AC8 46088480 */ add.s $f18, $f16, $f8
/* 0016C 808B0ACC E7120198 */ swc1 $f18, 0x0198($t8) ## 00000198
/* 00170 808B0AD0 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00174 808B0AD4 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00178 808B0AD8 03E00008 */ jr $ra
/* 0017C 808B0ADC 00000000 */ nop

View file

@ -1,63 +0,0 @@
.late_rodata
glabel D_808B1874
.float 0.15
glabel D_808B1878
.float 0.2
glabel D_808B187C
.float 0.4
.text
glabel func_808B0AE0
/* 00180 808B0AE0 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00184 808B0AE4 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00188 808B0AE8 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 0018C 808B0AEC 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
/* 00190 808B0AF0 3C01808B */ lui $at, %hi(D_808B1874) ## $at = 808B0000
/* 00194 808B0AF4 304200F0 */ andi $v0, $v0, 0x00F0 ## $v0 = 00000000
/* 00198 808B0AF8 10400008 */ beq $v0, $zero, .L808B0B1C
/* 0019C 808B0AFC 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000000
/* 001A0 808B0B00 24010010 */ addiu $at, $zero, 0x0010 ## $at = 00000010
/* 001A4 808B0B04 10410008 */ beq $v0, $at, .L808B0B28
/* 001A8 808B0B08 24010020 */ addiu $at, $zero, 0x0020 ## $at = 00000020
/* 001AC 808B0B0C 1041000A */ beq $v0, $at, .L808B0B38
/* 001B0 808B0B10 00000000 */ nop
/* 001B4 808B0B14 1000000B */ beq $zero, $zero, .L808B0B44
/* 001B8 808B0B18 00000000 */ nop
.L808B0B1C:
/* 001BC 808B0B1C C4241874 */ lwc1 $f4, %lo(D_808B1874)($at)
/* 001C0 808B0B20 10000008 */ beq $zero, $zero, .L808B0B44
/* 001C4 808B0B24 E7A40018 */ swc1 $f4, 0x0018($sp)
.L808B0B28:
/* 001C8 808B0B28 3C01808B */ lui $at, %hi(D_808B1878) ## $at = 808B0000
/* 001CC 808B0B2C C4261878 */ lwc1 $f6, %lo(D_808B1878)($at)
/* 001D0 808B0B30 10000004 */ beq $zero, $zero, .L808B0B44
/* 001D4 808B0B34 E7A60018 */ swc1 $f6, 0x0018($sp)
.L808B0B38:
/* 001D8 808B0B38 3C01808B */ lui $at, %hi(D_808B187C) ## $at = 808B0000
/* 001DC 808B0B3C C428187C */ lwc1 $f8, %lo(D_808B187C)($at)
/* 001E0 808B0B40 E7A80018 */ swc1 $f8, 0x0018($sp)
.L808B0B44:
/* 001E4 808B0B44 0C010D52 */ jal func_80043548
/* 001E8 808B0B48 AFA70020 */ sw $a3, 0x0020($sp)
/* 001EC 808B0B4C 10400005 */ beq $v0, $zero, .L808B0B64
/* 001F0 808B0B50 8FA70020 */ lw $a3, 0x0020($sp)
/* 001F4 808B0B54 3C01C080 */ lui $at, 0xC080 ## $at = C0800000
/* 001F8 808B0B58 44810000 */ mtc1 $at, $f0 ## $f0 = -4.00
/* 001FC 808B0B5C 10000004 */ beq $zero, $zero, .L808B0B70
/* 00200 808B0B60 44050000 */ mfc1 $a1, $f0
.L808B0B64:
/* 00204 808B0B64 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00208 808B0B68 00000000 */ nop
/* 0020C 808B0B6C 44050000 */ mfc1 $a1, $f0
.L808B0B70:
/* 00210 808B0B70 24E40194 */ addiu $a0, $a3, 0x0194 ## $a0 = 00000194
/* 00214 808B0B74 0C01DE80 */ jal Math_StepToF
/* 00218 808B0B78 8FA60018 */ lw $a2, 0x0018($sp)
/* 0021C 808B0B7C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00220 808B0B80 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00224 808B0B84 03E00008 */ jr $ra
/* 00228 808B0B88 00000000 */ nop

View file

@ -1,8 +0,0 @@
glabel func_808B0B8C
/* 0022C 808B0B8C C4840194 */ lwc1 $f4, 0x0194($a0) ## 00000194
/* 00230 808B0B90 C4860198 */ lwc1 $f6, 0x0198($a0) ## 00000198
/* 00234 808B0B94 C48A000C */ lwc1 $f10, 0x000C($a0) ## 0000000C
/* 00238 808B0B98 46062200 */ add.s $f8, $f4, $f6
/* 0023C 808B0B9C 460A4400 */ add.s $f16, $f8, $f10
/* 00240 808B0BA0 03E00008 */ jr $ra
/* 00244 808B0BA4 E4900028 */ swc1 $f16, 0x0028($a0) ## 00000028

View file

@ -1,12 +0,0 @@
glabel func_808B0BA8
/* 00248 808B0BA8 44866000 */ mtc1 $a2, $f12 ## $f12 = 0.00
/* 0024C 808B0BAC C4A40000 */ lwc1 $f4, 0x0000($a1) ## 00000000
/* 00250 808B0BB0 460C2182 */ mul.s $f6, $f4, $f12
/* 00254 808B0BB4 E4860000 */ swc1 $f6, 0x0000($a0) ## 00000000
/* 00258 808B0BB8 C4A80004 */ lwc1 $f8, 0x0004($a1) ## 00000004
/* 0025C 808B0BBC 460C4282 */ mul.s $f10, $f8, $f12
/* 00260 808B0BC0 E48A0004 */ swc1 $f10, 0x0004($a0) ## 00000004
/* 00264 808B0BC4 C4B00008 */ lwc1 $f16, 0x0008($a1) ## 00000008
/* 00268 808B0BC8 460C8482 */ mul.s $f18, $f16, $f12
/* 0026C 808B0BCC 03E00008 */ jr $ra
/* 00270 808B0BD0 E4920008 */ swc1 $f18, 0x0008($a0) ## 00000008

View file

@ -1,29 +0,0 @@
glabel func_808B0BD4
/* 00274 808B0BD4 C4A40004 */ lwc1 $f4, 0x0004($a1) ## 00000004
/* 00278 808B0BD8 C4C60008 */ lwc1 $f6, 0x0008($a2) ## 00000008
/* 0027C 808B0BDC C4AA0008 */ lwc1 $f10, 0x0008($a1) ## 00000008
/* 00280 808B0BE0 C4D00004 */ lwc1 $f16, 0x0004($a2) ## 00000004
/* 00284 808B0BE4 46062202 */ mul.s $f8, $f4, $f6
/* 00288 808B0BE8 00000000 */ nop
/* 0028C 808B0BEC 46105482 */ mul.s $f18, $f10, $f16
/* 00290 808B0BF0 46124101 */ sub.s $f4, $f8, $f18
/* 00294 808B0BF4 E4840000 */ swc1 $f4, 0x0000($a0) ## 00000000
/* 00298 808B0BF8 C4CA0000 */ lwc1 $f10, 0x0000($a2) ## 00000000
/* 0029C 808B0BFC C4A60008 */ lwc1 $f6, 0x0008($a1) ## 00000008
/* 002A0 808B0C00 C4A80000 */ lwc1 $f8, 0x0000($a1) ## 00000000
/* 002A4 808B0C04 C4D20008 */ lwc1 $f18, 0x0008($a2) ## 00000008
/* 002A8 808B0C08 460A3402 */ mul.s $f16, $f6, $f10
/* 002AC 808B0C0C 00000000 */ nop
/* 002B0 808B0C10 46124102 */ mul.s $f4, $f8, $f18
/* 002B4 808B0C14 46048181 */ sub.s $f6, $f16, $f4
/* 002B8 808B0C18 E4860004 */ swc1 $f6, 0x0004($a0) ## 00000004
/* 002BC 808B0C1C C4C80004 */ lwc1 $f8, 0x0004($a2) ## 00000004
/* 002C0 808B0C20 C4AA0000 */ lwc1 $f10, 0x0000($a1) ## 00000000
/* 002C4 808B0C24 C4C40000 */ lwc1 $f4, 0x0000($a2) ## 00000000
/* 002C8 808B0C28 C4B00004 */ lwc1 $f16, 0x0004($a1) ## 00000004
/* 002CC 808B0C2C 46085482 */ mul.s $f18, $f10, $f8
/* 002D0 808B0C30 00000000 */ nop
/* 002D4 808B0C34 46048182 */ mul.s $f6, $f16, $f4
/* 002D8 808B0C38 46069281 */ sub.s $f10, $f18, $f6
/* 002DC 808B0C3C 03E00008 */ jr $ra
/* 002E0 808B0C40 E48A0008 */ swc1 $f10, 0x0008($a0) ## 00000008

View file

@ -1,48 +0,0 @@
.late_rodata
glabel D_808B1880
.float 0.001
.text
glabel func_808B0C44
/* 002E4 808B0C44 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 002E8 808B0C48 AFBF0014 */ sw $ra, 0x0014($sp)
/* 002EC 808B0C4C 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
/* 002F0 808B0C50 AFA60018 */ sw $a2, 0x0018($sp)
/* 002F4 808B0C54 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 002F8 808B0C58 0C032D8A */ jal Math3D_Vec3fMagnitude
/* 002FC 808B0C5C AFA5001C */ sw $a1, 0x001C($sp)
/* 00300 808B0C60 3C01808B */ lui $at, %hi(D_808B1880) ## $at = 808B0000
/* 00304 808B0C64 C4241880 */ lwc1 $f4, %lo(D_808B1880)($at)
/* 00308 808B0C68 8FA5001C */ lw $a1, 0x001C($sp)
/* 0030C 808B0C6C 8FA60018 */ lw $a2, 0x0018($sp)
/* 00310 808B0C70 4604003C */ c.lt.s $f0, $f4
/* 00314 808B0C74 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 00318 808B0C78 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 0031C 808B0C7C 45020009 */ bc1fl .L808B0CA4
/* 00320 808B0C80 44814000 */ mtc1 $at, $f8 ## $f8 = 1.00
/* 00324 808B0C84 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 00328 808B0C88 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 0032C 808B0C8C 44813000 */ mtc1 $at, $f6 ## $f6 = 1.00
/* 00330 808B0C90 E4C00004 */ swc1 $f0, 0x0004($a2) ## 00000004
/* 00334 808B0C94 E4C00000 */ swc1 $f0, 0x0000($a2) ## 00000000
/* 00338 808B0C98 1000000D */ beq $zero, $zero, .L808B0CD0
/* 0033C 808B0C9C E4C60008 */ swc1 $f6, 0x0008($a2) ## 00000008
/* 00340 808B0CA0 44814000 */ mtc1 $at, $f8 ## $f8 = 1.00
.L808B0CA4:
/* 00344 808B0CA4 C4AA0000 */ lwc1 $f10, 0x0000($a1) ## 00000000
/* 00348 808B0CA8 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
/* 0034C 808B0CAC 46004083 */ div.s $f2, $f8, $f0
/* 00350 808B0CB0 46025402 */ mul.s $f16, $f10, $f2
/* 00354 808B0CB4 E4D00000 */ swc1 $f16, 0x0000($a2) ## 00000000
/* 00358 808B0CB8 C4B20004 */ lwc1 $f18, 0x0004($a1) ## 00000004
/* 0035C 808B0CBC 46029102 */ mul.s $f4, $f18, $f2
/* 00360 808B0CC0 E4C40004 */ swc1 $f4, 0x0004($a2) ## 00000004
/* 00364 808B0CC4 C4A60008 */ lwc1 $f6, 0x0008($a1) ## 00000008
/* 00368 808B0CC8 46023202 */ mul.s $f8, $f6, $f2
/* 0036C 808B0CCC E4C80008 */ swc1 $f8, 0x0008($a2) ## 00000008
.L808B0CD0:
/* 00370 808B0CD0 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00374 808B0CD4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00378 808B0CD8 03E00008 */ jr $ra
/* 0037C 808B0CDC 00000000 */ nop

View file

@ -1,251 +0,0 @@
.late_rodata
glabel D_808B1884
.float 0.0016
glabel D_808B1888
.float 0.0016
glabel D_808B188C
.float 9.58738019108e-05
.text
glabel func_808B0CE0
/* 00380 808B0CE0 27BDFF18 */ addiu $sp, $sp, 0xFF18 ## $sp = FFFFFF18
/* 00384 808B0CE4 AFBF001C */ sw $ra, 0x001C($sp)
/* 00388 808B0CE8 AFB00018 */ sw $s0, 0x0018($sp)
/* 0038C 808B0CEC 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
/* 00390 808B0CF0 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
/* 00394 808B0CF4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00398 808B0CF8 304200FF */ andi $v0, $v0, 0x00FF ## $v0 = 00000000
/* 0039C 808B0CFC 10410008 */ beq $v0, $at, .L808B0D20
/* 003A0 808B0D00 8CA31C44 */ lw $v1, 0x1C44($a1) ## 00001C44
/* 003A4 808B0D04 24010011 */ addiu $at, $zero, 0x0011 ## $at = 00000011
/* 003A8 808B0D08 10410003 */ beq $v0, $at, .L808B0D18
/* 003AC 808B0D0C 240E0002 */ addiu $t6, $zero, 0x0002 ## $t6 = 00000002
/* 003B0 808B0D10 10000005 */ beq $zero, $zero, .L808B0D28
/* 003B4 808B0D14 AFAE0084 */ sw $t6, 0x0084($sp)
.L808B0D18:
/* 003B8 808B0D18 10000003 */ beq $zero, $zero, .L808B0D28
/* 003BC 808B0D1C AFA00084 */ sw $zero, 0x0084($sp)
.L808B0D20:
/* 003C0 808B0D20 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
/* 003C4 808B0D24 AFAF0084 */ sw $t7, 0x0084($sp)
.L808B0D28:
/* 003C8 808B0D28 24640024 */ addiu $a0, $v1, 0x0024 ## $a0 = 00000024
/* 003CC 808B0D2C 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
/* 003D0 808B0D30 0C01DFB4 */ jal Math_Vec3f_Diff
## Vec3f_Sub
/* 003D4 808B0D34 27A600C8 */ addiu $a2, $sp, 0x00C8 ## $a2 = FFFFFFE0
/* 003D8 808B0D38 3C014316 */ lui $at, 0x4316 ## $at = 43160000
/* 003DC 808B0D3C 44812000 */ mtc1 $at, $f4 ## $f4 = 150.00
/* 003E0 808B0D40 C6060054 */ lwc1 $f6, 0x0054($s0) ## 00000054
/* 003E4 808B0D44 C7AA00CC */ lwc1 $f10, 0x00CC($sp)
/* 003E8 808B0D48 27A400C8 */ addiu $a0, $sp, 0x00C8 ## $a0 = FFFFFFE0
/* 003EC 808B0D4C 46062202 */ mul.s $f8, $f4, $f6
/* 003F0 808B0D50 46085401 */ sub.s $f16, $f10, $f8
/* 003F4 808B0D54 0C032D8A */ jal Math3D_Vec3fMagnitude
/* 003F8 808B0D58 E7B000CC */ swc1 $f16, 0x00CC($sp)
/* 003FC 808B0D5C 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00400 808B0D60 E7A00088 */ swc1 $f0, 0x0088($sp)
/* 00404 808B0D64 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 00408 808B0D68 44819000 */ mtc1 $at, $f18 ## $f18 = 0.50
/* 0040C 808B0D6C 3C01808B */ lui $at, %hi(D_808B1884) ## $at = 808B0000
/* 00410 808B0D70 C4261884 */ lwc1 $f6, %lo(D_808B1884)($at)
/* 00414 808B0D74 46120101 */ sub.s $f4, $f0, $f18
/* 00418 808B0D78 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00
/* 0041C 808B0D7C 46062282 */ mul.s $f10, $f4, $f6
/* 00420 808B0D80 E7A800A8 */ swc1 $f8, 0x00A8($sp)
/* 00424 808B0D84 0C03F66B */ jal Rand_ZeroOne
## Rand.Next() float
/* 00428 808B0D88 E7AA00A4 */ swc1 $f10, 0x00A4($sp)
/* 0042C 808B0D8C 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
/* 00430 808B0D90 44818000 */ mtc1 $at, $f16 ## $f16 = 0.50
/* 00434 808B0D94 3C01808B */ lui $at, %hi(D_808B1888) ## $at = 808B0000
/* 00438 808B0D98 C4241888 */ lwc1 $f4, %lo(D_808B1888)($at)
/* 0043C 808B0D9C 46100481 */ sub.s $f18, $f0, $f16
/* 00440 808B0DA0 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00
/* 00444 808B0DA4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00448 808B0DA8 46049182 */ mul.s $f6, $f18, $f4
/* 0044C 808B0DAC E7A600AC */ swc1 $f6, 0x00AC($sp)
/* 00450 808B0DB0 C60A0168 */ lwc1 $f10, 0x0168($s0) ## 00000168
/* 00454 808B0DB4 E7A800D8 */ swc1 $f8, 0x00D8($sp)
/* 00458 808B0DB8 E7AA00D4 */ swc1 $f10, 0x00D4($sp)
/* 0045C 808B0DBC C6100170 */ lwc1 $f16, 0x0170($s0) ## 00000170
/* 00460 808B0DC0 0C010D5B */ jal func_8004356C
/* 00464 808B0DC4 E7B000DC */ swc1 $f16, 0x00DC($sp)
/* 00468 808B0DC8 1040001C */ beq $v0, $zero, .L808B0E3C
/* 0046C 808B0DCC 3C014040 */ lui $at, 0x4040 ## $at = 40400000
/* 00470 808B0DD0 44819000 */ mtc1 $at, $f18 ## $f18 = 3.00
/* 00474 808B0DD4 C7A40088 */ lwc1 $f4, 0x0088($sp)
/* 00478 808B0DD8 27A400C8 */ addiu $a0, $sp, 0x00C8 ## $a0 = FFFFFFE0
/* 0047C 808B0DDC 27A500D4 */ addiu $a1, $sp, 0x00D4 ## $a1 = FFFFFFEC
/* 00480 808B0DE0 4604903C */ c.lt.s $f18, $f4
/* 00484 808B0DE4 00000000 */ nop
/* 00488 808B0DE8 45000014 */ bc1f .L808B0E3C
/* 0048C 808B0DEC 00000000 */ nop
/* 00490 808B0DF0 0C01DFB4 */ jal Math_Vec3f_Diff
## Vec3f_Sub
/* 00494 808B0DF4 27A600BC */ addiu $a2, $sp, 0x00BC ## $a2 = FFFFFFD4
/* 00498 808B0DF8 8FA20084 */ lw $v0, 0x0084($sp)
/* 0049C 808B0DFC 3C01808B */ lui $at, %hi(D_808B16C8) ## $at = 808B0000
/* 004A0 808B0E00 C7AA0088 */ lwc1 $f10, 0x0088($sp)
/* 004A4 808B0E04 00021080 */ sll $v0, $v0, 2
/* 004A8 808B0E08 00220821 */ addu $at, $at, $v0
/* 004AC 808B0E0C C42616C8 */ lwc1 $f6, %lo(D_808B16C8)($at)
/* 004B0 808B0E10 C6100050 */ lwc1 $f16, 0x0050($s0) ## 00000050
/* 004B4 808B0E14 27A400BC */ addiu $a0, $sp, 0x00BC ## $a0 = FFFFFFD4
/* 004B8 808B0E18 460A3202 */ mul.s $f8, $f6, $f10
/* 004BC 808B0E1C 00802825 */ or $a1, $a0, $zero ## $a1 = FFFFFFD4
/* 004C0 808B0E20 AFA2002C */ sw $v0, 0x002C($sp)
/* 004C4 808B0E24 46104483 */ div.s $f18, $f8, $f16
/* 004C8 808B0E28 44069000 */ mfc1 $a2, $f18
/* 004CC 808B0E2C 0C22C2EA */ jal func_808B0BA8
/* 004D0 808B0E30 00000000 */ nop
/* 004D4 808B0E34 1000000E */ beq $zero, $zero, .L808B0E70
/* 004D8 808B0E38 3C06BC23 */ lui $a2, 0xBC23 ## $a2 = BC230000
.L808B0E3C:
/* 004DC 808B0E3C 3C19808B */ lui $t9, %hi(D_808B16BC) ## $t9 = 808B0000
/* 004E0 808B0E40 273916BC */ addiu $t9, $t9, %lo(D_808B16BC) ## $t9 = 808B16BC
/* 004E4 808B0E44 8F290000 */ lw $t1, 0x0000($t9) ## 808B16BC
/* 004E8 808B0E48 27B800BC */ addiu $t8, $sp, 0x00BC ## $t8 = FFFFFFD4
/* 004EC 808B0E4C 8F280004 */ lw $t0, 0x0004($t9) ## 808B16C0
/* 004F0 808B0E50 AF090000 */ sw $t1, 0x0000($t8) ## FFFFFFD4
/* 004F4 808B0E54 8F290008 */ lw $t1, 0x0008($t9) ## 808B16C4
/* 004F8 808B0E58 AF080004 */ sw $t0, 0x0004($t8) ## FFFFFFD8
/* 004FC 808B0E5C AF090008 */ sw $t1, 0x0008($t8) ## FFFFFFDC
/* 00500 808B0E60 8FAA0084 */ lw $t2, 0x0084($sp)
/* 00504 808B0E64 000A5880 */ sll $t3, $t2, 2
/* 00508 808B0E68 AFAB002C */ sw $t3, 0x002C($sp)
/* 0050C 808B0E6C 3C06BC23 */ lui $a2, 0xBC23 ## $a2 = BC230000
.L808B0E70:
/* 00510 808B0E70 34C6D70A */ ori $a2, $a2, 0xD70A ## $a2 = BC23D70A
/* 00514 808B0E74 27A400B0 */ addiu $a0, $sp, 0x00B0 ## $a0 = FFFFFFC8
/* 00518 808B0E78 0C22C2EA */ jal func_808B0BA8
/* 0051C 808B0E7C 27A500D4 */ addiu $a1, $sp, 0x00D4 ## $a1 = FFFFFFEC
/* 00520 808B0E80 26070174 */ addiu $a3, $s0, 0x0174 ## $a3 = 00000174
/* 00524 808B0E84 00E02025 */ or $a0, $a3, $zero ## $a0 = 00000174
/* 00528 808B0E88 00E03025 */ or $a2, $a3, $zero ## $a2 = 00000174
/* 0052C 808B0E8C AFA70028 */ sw $a3, 0x0028($sp)
/* 00530 808B0E90 0C01DFA7 */ jal Math_Vec3f_Sum
## Vec3f_Add
/* 00534 808B0E94 27A500BC */ addiu $a1, $sp, 0x00BC ## $a1 = FFFFFFD4
/* 00538 808B0E98 8FA60028 */ lw $a2, 0x0028($sp)
/* 0053C 808B0E9C 27A500B0 */ addiu $a1, $sp, 0x00B0 ## $a1 = FFFFFFC8
/* 00540 808B0EA0 0C01DFA7 */ jal Math_Vec3f_Sum
## Vec3f_Add
/* 00544 808B0EA4 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
/* 00548 808B0EA8 8FA60028 */ lw $a2, 0x0028($sp)
/* 0054C 808B0EAC 27A500A4 */ addiu $a1, $sp, 0x00A4 ## $a1 = FFFFFFBC
/* 00550 808B0EB0 0C01DFA7 */ jal Math_Vec3f_Sum
## Vec3f_Add
/* 00554 808B0EB4 00C02025 */ or $a0, $a2, $zero ## $a0 = 00000000
/* 00558 808B0EB8 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 0055C 808B0EBC 8FA50028 */ lw $a1, 0x0028($sp)
/* 00560 808B0EC0 26040168 */ addiu $a0, $s0, 0x0168 ## $a0 = 00000168
/* 00564 808B0EC4 E6040178 */ swc1 $f4, 0x0178($s0) ## 00000178
/* 00568 808B0EC8 AFA40024 */ sw $a0, 0x0024($sp)
/* 0056C 808B0ECC 0C01DFA7 */ jal Math_Vec3f_Sum
## Vec3f_Add
/* 00570 808B0ED0 27A60098 */ addiu $a2, $sp, 0x0098 ## $a2 = FFFFFFB0
/* 00574 808B0ED4 8FAC002C */ lw $t4, 0x002C($sp)
/* 00578 808B0ED8 3C01808B */ lui $at, %hi(D_808B16D4) ## $at = 808B0000
/* 0057C 808B0EDC C7A60098 */ lwc1 $f6, 0x0098($sp)
/* 00580 808B0EE0 002C0821 */ addu $at, $at, $t4
/* 00584 808B0EE4 C42016D4 */ lwc1 $f0, %lo(D_808B16D4)($at)
/* 00588 808B0EE8 C7A800A0 */ lwc1 $f8, 0x00A0($sp)
/* 0058C 808B0EEC 8FA40024 */ lw $a0, 0x0024($sp)
/* 00590 808B0EF0 46003282 */ mul.s $f10, $f6, $f0
/* 00594 808B0EF4 27A50098 */ addiu $a1, $sp, 0x0098 ## $a1 = FFFFFFB0
/* 00598 808B0EF8 46004402 */ mul.s $f16, $f8, $f0
/* 0059C 808B0EFC E7AA0098 */ swc1 $f10, 0x0098($sp)
/* 005A0 808B0F00 0C22C311 */ jal func_808B0C44
/* 005A4 808B0F04 E7B000A0 */ swc1 $f16, 0x00A0($sp)
/* 005A8 808B0F08 1040002A */ beq $v0, $zero, .L808B0FB4
/* 005AC 808B0F0C 8FA80024 */ lw $t0, 0x0024($sp)
/* 005B0 808B0F10 C60C0170 */ lwc1 $f12, 0x0170($s0) ## 00000170
/* 005B4 808B0F14 0C032D57 */ jal Math3D_Dist1DSq
/* 005B8 808B0F18 C60E0168 */ lwc1 $f14, 0x0168($s0) ## 00000168
/* 005BC 808B0F1C 8FAD002C */ lw $t5, 0x002C($sp)
/* 005C0 808B0F20 3C01808B */ lui $at, %hi(D_808B16E0) ## $at = 808B0000
/* 005C4 808B0F24 3C05808B */ lui $a1, %hi(D_808B16B0) ## $a1 = 808B0000
/* 005C8 808B0F28 002D0821 */ addu $at, $at, $t5
/* 005CC 808B0F2C C42C16E0 */ lwc1 $f12, %lo(D_808B16E0)($at)
/* 005D0 808B0F30 24A516B0 */ addiu $a1, $a1, %lo(D_808B16B0) ## $a1 = 808B16B0
/* 005D4 808B0F34 27A40098 */ addiu $a0, $sp, 0x0098 ## $a0 = FFFFFFB0
/* 005D8 808B0F38 4600603C */ c.lt.s $f12, $f0
/* 005DC 808B0F3C 00000000 */ nop
/* 005E0 808B0F40 4500000D */ bc1f .L808B0F78
/* 005E4 808B0F44 00000000 */ nop
/* 005E8 808B0F48 46006083 */ div.s $f2, $f12, $f0
/* 005EC 808B0F4C C6120168 */ lwc1 $f18, 0x0168($s0) ## 00000168
/* 005F0 808B0F50 C60A0170 */ lwc1 $f10, 0x0170($s0) ## 00000170
/* 005F4 808B0F54 3C01808B */ lui $at, %hi(D_808B16EC) ## $at = 808B0000
/* 005F8 808B0F58 46029102 */ mul.s $f4, $f18, $f2
/* 005FC 808B0F5C E6040168 */ swc1 $f4, 0x0168($s0) ## 00000168
/* 00600 808B0F60 46025202 */ mul.s $f8, $f10, $f2
/* 00604 808B0F64 8FAE002C */ lw $t6, 0x002C($sp)
/* 00608 808B0F68 002E0821 */ addu $at, $at, $t6
/* 0060C 808B0F6C C42616EC */ lwc1 $f6, %lo(D_808B16EC)($at)
/* 00610 808B0F70 E6080170 */ swc1 $f8, 0x0170($s0) ## 00000170
/* 00614 808B0F74 E606016C */ swc1 $f6, 0x016C($s0) ## 0000016C
.L808B0F78:
/* 00618 808B0F78 0C22C2F5 */ jal func_808B0BD4
/* 0061C 808B0F7C 8FA60024 */ lw $a2, 0x0024($sp)
/* 00620 808B0F80 27A4008C */ addiu $a0, $sp, 0x008C ## $a0 = FFFFFFA4
/* 00624 808B0F84 0C22C311 */ jal func_808B0C44
/* 00628 808B0F88 27A50098 */ addiu $a1, $sp, 0x0098 ## $a1 = FFFFFFB0
/* 0062C 808B0F8C 10400007 */ beq $v0, $zero, .L808B0FAC
/* 00630 808B0F90 27AF008C */ addiu $t7, $sp, 0x008C ## $t7 = FFFFFFA4
/* 00634 808B0F94 8DF90000 */ lw $t9, 0x0000($t7) ## FFFFFFA4
/* 00638 808B0F98 AE190180 */ sw $t9, 0x0180($s0) ## 00000180
/* 0063C 808B0F9C 8DF80004 */ lw $t8, 0x0004($t7) ## FFFFFFA8
/* 00640 808B0FA0 AE180184 */ sw $t8, 0x0184($s0) ## 00000184
/* 00644 808B0FA4 8DF90008 */ lw $t9, 0x0008($t7) ## FFFFFFAC
/* 00648 808B0FA8 AE190188 */ sw $t9, 0x0188($s0) ## 00000188
.L808B0FAC:
/* 0064C 808B0FAC 1000000A */ beq $zero, $zero, .L808B0FD8
/* 00650 808B0FB0 26070180 */ addiu $a3, $s0, 0x0180 ## $a3 = 00000180
.L808B0FB4:
/* 00654 808B0FB4 3C09808B */ lui $t1, %hi(D_808B16B0) ## $t1 = 808B0000
/* 00658 808B0FB8 252916B0 */ addiu $t1, $t1, %lo(D_808B16B0) ## $t1 = 808B16B0
/* 0065C 808B0FBC 8D2B0000 */ lw $t3, 0x0000($t1) ## 808B16B0
/* 00660 808B0FC0 26070180 */ addiu $a3, $s0, 0x0180 ## $a3 = 00000180
/* 00664 808B0FC4 AD0B0000 */ sw $t3, 0x0000($t0) ## 00000000
/* 00668 808B0FC8 8D2A0004 */ lw $t2, 0x0004($t1) ## 808B16B4
/* 0066C 808B0FCC AD0A0004 */ sw $t2, 0x0004($t0) ## 00000004
/* 00670 808B0FD0 8D2B0008 */ lw $t3, 0x0008($t1) ## 808B16B8
/* 00674 808B0FD4 AD0B0008 */ sw $t3, 0x0008($t0) ## 00000008
.L808B0FD8:
/* 00678 808B0FD8 3C04808B */ lui $a0, %hi(D_808B16B0) ## $a0 = 808B0000
/* 0067C 808B0FDC 248416B0 */ addiu $a0, $a0, %lo(D_808B16B0) ## $a0 = 808B16B0
/* 00680 808B0FE0 8FA50024 */ lw $a1, 0x0024($sp)
/* 00684 808B0FE4 0C032BFB */ jal Math3D_Cos
/* 00688 808B0FE8 AFA7002C */ sw $a3, 0x002C($sp)
/* 0068C 808B0FEC 0C03F4DA */ jal Math_FAcosF
/* 00690 808B0FF0 46000306 */ mov.s $f12, $f0
/* 00694 808B0FF4 8FA5002C */ lw $a1, 0x002C($sp)
/* 00698 808B0FF8 46000306 */ mov.s $f12, $f0
/* 0069C 808B0FFC 0C0348FF */ jal func_800D23FC
/* 006A0 808B1000 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
/* 006A4 808B1004 860C00B6 */ lh $t4, 0x00B6($s0) ## 000000B6
/* 006A8 808B1008 3C01808B */ lui $at, %hi(D_808B188C) ## $at = 808B0000
/* 006AC 808B100C C424188C */ lwc1 $f4, %lo(D_808B188C)($at)
/* 006B0 808B1010 448C8000 */ mtc1 $t4, $f16 ## $f16 = 0.00
/* 006B4 808B1014 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
/* 006B8 808B1018 468084A0 */ cvt.s.w $f18, $f16
/* 006BC 808B101C 46049302 */ mul.s $f12, $f18, $f4
/* 006C0 808B1020 0C034348 */ jal Matrix_RotateY
/* 006C4 808B1024 00000000 */ nop
/* 006C8 808B1028 0C034236 */ jal Matrix_Get
/* 006CC 808B102C 27A40044 */ addiu $a0, $sp, 0x0044 ## $a0 = FFFFFF5C
/* 006D0 808B1030 27A40044 */ addiu $a0, $sp, 0x0044 ## $a0 = FFFFFF5C
/* 006D4 808B1034 260500B4 */ addiu $a1, $s0, 0x00B4 ## $a1 = 000000B4
/* 006D8 808B1038 0C034833 */ jal func_800D20CC
/* 006DC 808B103C 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
/* 006E0 808B1040 8FBF001C */ lw $ra, 0x001C($sp)
/* 006E4 808B1044 8FB00018 */ lw $s0, 0x0018($sp)
/* 006E8 808B1048 27BD00E8 */ addiu $sp, $sp, 0x00E8 ## $sp = 00000000
/* 006EC 808B104C 03E00008 */ jr $ra
/* 006F0 808B1050 00000000 */ nop

View file

@ -1,70 +0,0 @@
glabel func_808B1054
/* 006F4 808B1054 27BDFFB0 */ addiu $sp, $sp, 0xFFB0 ## $sp = FFFFFFB0
/* 006F8 808B1058 AFB00038 */ sw $s0, 0x0038($sp)
/* 006FC 808B105C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00700 808B1060 AFBF003C */ sw $ra, 0x003C($sp)
/* 00704 808B1064 AFA50054 */ sw $a1, 0x0054($sp)
/* 00708 808B1068 0C01DE1C */ jal Math_SinS
## sins?
/* 0070C 808B106C 84840016 */ lh $a0, 0x0016($a0) ## 00000016
/* 00710 808B1070 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
/* 00714 808B1074 44812000 */ mtc1 $at, $f4 ## $f4 = 100.00
/* 00718 808B1078 00000000 */ nop
/* 0071C 808B107C 46040182 */ mul.s $f6, $f0, $f4
/* 00720 808B1080 E7A60044 */ swc1 $f6, 0x0044($sp)
/* 00724 808B1084 0C01DE0D */ jal Math_CosS
## coss?
/* 00728 808B1088 86040016 */ lh $a0, 0x0016($s0) ## 00000016
/* 0072C 808B108C 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
/* 00730 808B1090 44814000 */ mtc1 $at, $f8 ## $f8 = 100.00
/* 00734 808B1094 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 00738 808B1098 C7A40044 */ lwc1 $f4, 0x0044($sp)
/* 0073C 808B109C 46080082 */ mul.s $f2, $f0, $f8
/* 00740 808B10A0 31CF0100 */ andi $t7, $t6, 0x0100 ## $t7 = 00000000
/* 00744 808B10A4 15E0001E */ bne $t7, $zero, .L808B1120
/* 00748 808B10A8 46001306 */ mov.s $f12, $f2
/* 0074C 808B10AC C60A0008 */ lwc1 $f10, 0x0008($s0) ## 00000008
/* 00750 808B10B0 8FA60054 */ lw $a2, 0x0054($sp)
/* 00754 808B10B4 24090123 */ addiu $t1, $zero, 0x0123 ## $t1 = 00000123
/* 00758 808B10B8 E7AA0010 */ swc1 $f10, 0x0010($sp)
/* 0075C 808B10BC C610000C */ lwc1 $f16, 0x000C($s0) ## 0000000C
/* 00760 808B10C0 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
/* 00764 808B10C4 240700D1 */ addiu $a3, $zero, 0x00D1 ## $a3 = 000000D1
/* 00768 808B10C8 E7B00014 */ swc1 $f16, 0x0014($sp)
/* 0076C 808B10CC C6120010 */ lwc1 $f18, 0x0010($s0) ## 00000010
/* 00770 808B10D0 24C41C24 */ addiu $a0, $a2, 0x1C24 ## $a0 = 00001C24
/* 00774 808B10D4 E7B20018 */ swc1 $f18, 0x0018($sp)
/* 00778 808B10D8 86180014 */ lh $t8, 0x0014($s0) ## 00000014
/* 0077C 808B10DC AFB8001C */ sw $t8, 0x001C($sp)
/* 00780 808B10E0 86190016 */ lh $t9, 0x0016($s0) ## 00000016
/* 00784 808B10E4 AFB90020 */ sw $t9, 0x0020($sp)
/* 00788 808B10E8 86080018 */ lh $t0, 0x0018($s0) ## 00000018
/* 0078C 808B10EC E7AC0040 */ swc1 $f12, 0x0040($sp)
/* 00790 808B10F0 AFA90028 */ sw $t1, 0x0028($sp)
/* 00794 808B10F4 0C00C916 */ jal Actor_SpawnAsChild
/* 00798 808B10F8 AFA80024 */ sw $t0, 0x0024($sp)
/* 0079C 808B10FC C7AC0040 */ lwc1 $f12, 0x0040($sp)
/* 007A0 808B1100 C6040024 */ lwc1 $f4, 0x0024($s0) ## 00000024
/* 007A4 808B1104 C7A60044 */ lwc1 $f6, 0x0044($sp)
/* 007A8 808B1108 C60A002C */ lwc1 $f10, 0x002C($s0) ## 0000002C
/* 007AC 808B110C 46062200 */ add.s $f8, $f4, $f6
/* 007B0 808B1110 460C5400 */ add.s $f16, $f10, $f12
/* 007B4 808B1114 E6080024 */ swc1 $f8, 0x0024($s0) ## 00000024
/* 007B8 808B1118 10000007 */ beq $zero, $zero, .L808B1138
/* 007BC 808B111C E610002C */ swc1 $f16, 0x002C($s0) ## 0000002C
.L808B1120:
/* 007C0 808B1120 C6120024 */ lwc1 $f18, 0x0024($s0) ## 00000024
/* 007C4 808B1124 C608002C */ lwc1 $f8, 0x002C($s0) ## 0000002C
/* 007C8 808B1128 46049181 */ sub.s $f6, $f18, $f4
/* 007CC 808B112C 46024281 */ sub.s $f10, $f8, $f2
/* 007D0 808B1130 E6060024 */ swc1 $f6, 0x0024($s0) ## 00000024
/* 007D4 808B1134 E60A002C */ swc1 $f10, 0x002C($s0) ## 0000002C
.L808B1138:
/* 007D8 808B1138 0C22C51F */ jal func_808B147C
/* 007DC 808B113C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 007E0 808B1140 8FBF003C */ lw $ra, 0x003C($sp)
/* 007E4 808B1144 8FB00038 */ lw $s0, 0x0038($sp)
/* 007E8 808B1148 27BD0050 */ addiu $sp, $sp, 0x0050 ## $sp = 00000000
/* 007EC 808B114C 03E00008 */ jr $ra
/* 007F0 808B1150 00000000 */ nop

View file

@ -1,10 +0,0 @@
glabel func_808B1388
/* 00A28 808B1388 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00A2C 808B138C AFBF0014 */ sw $ra, 0x0014($sp)
/* 00A30 808B1390 3C05808B */ lui $a1, %hi(func_808B13AC) ## $a1 = 808B0000
/* 00A34 808B1394 0C22C258 */ jal func_808B0960
/* 00A38 808B1398 24A513AC */ addiu $a1, $a1, %lo(func_808B13AC) ## $a1 = 808B13AC
/* 00A3C 808B139C 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00A40 808B13A0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00A44 808B13A4 03E00008 */ jr $ra
/* 00A48 808B13A8 00000000 */ nop

View file

@ -1,21 +0,0 @@
glabel func_808B13AC
/* 00A4C 808B13AC 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00A50 808B13B0 AFBF001C */ sw $ra, 0x001C($sp)
/* 00A54 808B13B4 AFB00018 */ sw $s0, 0x0018($sp)
/* 00A58 808B13B8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00A5C 808B13BC 0C22C2A1 */ jal func_808B0A84
/* 00A60 808B13C0 AFA50024 */ sw $a1, 0x0024($sp)
/* 00A64 808B13C4 0C22C2B8 */ jal func_808B0AE0
/* 00A68 808B13C8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00A6C 808B13CC 0C22C2E3 */ jal func_808B0B8C
/* 00A70 808B13D0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00A74 808B13D4 860E0016 */ lh $t6, 0x0016($s0) ## 00000016
/* 00A78 808B13D8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00A7C 808B13DC A60E00B6 */ sh $t6, 0x00B6($s0) ## 000000B6
/* 00A80 808B13E0 0C22C338 */ jal func_808B0CE0
/* 00A84 808B13E4 8FA50024 */ lw $a1, 0x0024($sp)
/* 00A88 808B13E8 8FBF001C */ lw $ra, 0x001C($sp)
/* 00A8C 808B13EC 8FB00018 */ lw $s0, 0x0018($sp)
/* 00A90 808B13F0 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00A94 808B13F4 03E00008 */ jr $ra
/* 00A98 808B13F8 00000000 */ nop

View file

@ -1,10 +0,0 @@
glabel func_808B13FC
/* 00A9C 808B13FC 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00AA0 808B1400 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00AA4 808B1404 3C05808B */ lui $a1, %hi(func_808B1420) ## $a1 = 808B0000
/* 00AA8 808B1408 0C22C258 */ jal func_808B0960
/* 00AAC 808B140C 24A51420 */ addiu $a1, $a1, %lo(func_808B1420) ## $a1 = 808B1420
/* 00AB0 808B1410 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00AB4 808B1414 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00AB8 808B1418 03E00008 */ jr $ra
/* 00ABC 808B141C 00000000 */ nop

View file

@ -1,24 +0,0 @@
glabel func_808B1420
/* 00AC0 808B1420 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
/* 00AC4 808B1424 AFBF001C */ sw $ra, 0x001C($sp)
/* 00AC8 808B1428 AFB00018 */ sw $s0, 0x0018($sp)
/* 00ACC 808B142C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00AD0 808B1430 0C22C2A1 */ jal func_808B0A84
/* 00AD4 808B1434 AFA50024 */ sw $a1, 0x0024($sp)
/* 00AD8 808B1438 0C22C2B8 */ jal func_808B0AE0
/* 00ADC 808B143C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00AE0 808B1440 0C22C2E3 */ jal func_808B0B8C
/* 00AE4 808B1444 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00AE8 808B1448 860E0032 */ lh $t6, 0x0032($s0) ## 00000032
/* 00AEC 808B144C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00AF0 808B1450 25CF0190 */ addiu $t7, $t6, 0x0190 ## $t7 = 00000190
/* 00AF4 808B1454 A60F0032 */ sh $t7, 0x0032($s0) ## 00000032
/* 00AF8 808B1458 86180032 */ lh $t8, 0x0032($s0) ## 00000032
/* 00AFC 808B145C A61800B6 */ sh $t8, 0x00B6($s0) ## 000000B6
/* 00B00 808B1460 0C22C338 */ jal func_808B0CE0
/* 00B04 808B1464 8FA50024 */ lw $a1, 0x0024($sp)
/* 00B08 808B1468 8FBF001C */ lw $ra, 0x001C($sp)
/* 00B0C 808B146C 8FB00018 */ lw $s0, 0x0018($sp)
/* 00B10 808B1470 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
/* 00B14 808B1474 03E00008 */ jr $ra
/* 00B18 808B1478 00000000 */ nop

View file

@ -1,10 +0,0 @@
glabel func_808B147C
/* 00B1C 808B147C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00B20 808B1480 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00B24 808B1484 3C05808B */ lui $a1, %hi(func_808B14A0) ## $a1 = 808B0000
/* 00B28 808B1488 0C22C258 */ jal func_808B0960
/* 00B2C 808B148C 24A514A0 */ addiu $a1, $a1, %lo(func_808B14A0) ## $a1 = 808B14A0
/* 00B30 808B1490 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00B34 808B1494 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00B38 808B1498 03E00008 */ jr $ra
/* 00B3C 808B149C 00000000 */ nop

View file

@ -1,58 +0,0 @@
glabel func_808B14A0
/* 00B40 808B14A0 27BDFFD8 */ addiu $sp, $sp, 0xFFD8 ## $sp = FFFFFFD8
/* 00B44 808B14A4 AFBF001C */ sw $ra, 0x001C($sp)
/* 00B48 808B14A8 AFB00018 */ sw $s0, 0x0018($sp)
/* 00B4C 808B14AC 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 00B50 808B14B0 0C22C2A1 */ jal func_808B0A84
/* 00B54 808B14B4 AFA5002C */ sw $a1, 0x002C($sp)
/* 00B58 808B14B8 0C22C2B8 */ jal func_808B0AE0
/* 00B5C 808B14BC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00B60 808B14C0 0C22C2E3 */ jal func_808B0B8C
/* 00B64 808B14C4 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00B68 808B14C8 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 00B6C 808B14CC 31CF0100 */ andi $t7, $t6, 0x0100 ## $t7 = 00000000
/* 00B70 808B14D0 55E0001F */ bnel $t7, $zero, .L808B1550
/* 00B74 808B14D4 86090016 */ lh $t1, 0x0016($s0) ## 00000016
/* 00B78 808B14D8 86180032 */ lh $t8, 0x0032($s0) ## 00000032
/* 00B7C 808B14DC 27190190 */ addiu $t9, $t8, 0x0190 ## $t9 = 00000190
/* 00B80 808B14E0 A6190032 */ sh $t9, 0x0032($s0) ## 00000032
/* 00B84 808B14E4 0C01DE1C */ jal Math_SinS
## sins?
/* 00B88 808B14E8 86040032 */ lh $a0, 0x0032($s0) ## 00000032
/* 00B8C 808B14EC 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
/* 00B90 808B14F0 44812000 */ mtc1 $at, $f4 ## $f4 = 100.00
/* 00B94 808B14F4 86040032 */ lh $a0, 0x0032($s0) ## 00000032
/* 00B98 808B14F8 46040082 */ mul.s $f2, $f0, $f4
/* 00B9C 808B14FC 0C01DE0D */ jal Math_CosS
## coss?
/* 00BA0 808B1500 E7A20020 */ swc1 $f2, 0x0020($sp)
/* 00BA4 808B1504 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
/* 00BA8 808B1508 44814000 */ mtc1 $at, $f8 ## $f8 = 100.00
/* 00BAC 808B150C C7A20020 */ lwc1 $f2, 0x0020($sp)
/* 00BB0 808B1510 C60E0008 */ lwc1 $f14, 0x0008($s0) ## 00000008
/* 00BB4 808B1514 46080302 */ mul.s $f12, $f0, $f8
/* 00BB8 808B1518 C60A0010 */ lwc1 $f10, 0x0010($s0) ## 00000010
/* 00BBC 808B151C 46027180 */ add.s $f6, $f14, $f2
/* 00BC0 808B1520 8E02011C */ lw $v0, 0x011C($s0) ## 0000011C
/* 00BC4 808B1524 E6060024 */ swc1 $f6, 0x0024($s0) ## 00000024
/* 00BC8 808B1528 460C5400 */ add.s $f16, $f10, $f12
/* 00BCC 808B152C 10400007 */ beq $v0, $zero, .L808B154C
/* 00BD0 808B1530 E610002C */ swc1 $f16, 0x002C($s0) ## 0000002C
/* 00BD4 808B1534 46027481 */ sub.s $f18, $f14, $f2
/* 00BD8 808B1538 E4520024 */ swc1 $f18, 0x0024($v0) ## 00000024
/* 00BDC 808B153C C6040010 */ lwc1 $f4, 0x0010($s0) ## 00000010
/* 00BE0 808B1540 8E08011C */ lw $t0, 0x011C($s0) ## 0000011C
/* 00BE4 808B1544 460C2181 */ sub.s $f6, $f4, $f12
/* 00BE8 808B1548 E506002C */ swc1 $f6, 0x002C($t0) ## 0000002C
.L808B154C:
/* 00BEC 808B154C 86090016 */ lh $t1, 0x0016($s0) ## 00000016
.L808B1550:
/* 00BF0 808B1550 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00BF4 808B1554 A60900B6 */ sh $t1, 0x00B6($s0) ## 000000B6
/* 00BF8 808B1558 0C22C338 */ jal func_808B0CE0
/* 00BFC 808B155C 8FA5002C */ lw $a1, 0x002C($sp)
/* 00C00 808B1560 8FBF001C */ lw $ra, 0x001C($sp)
/* 00C04 808B1564 8FB00018 */ lw $s0, 0x0018($sp)
/* 00C08 808B1568 27BD0028 */ addiu $sp, $sp, 0x0028 ## $sp = 00000000
/* 00C0C 808B156C 03E00008 */ jr $ra
/* 00C10 808B1570 00000000 */ nop

View file

@ -1,9 +0,0 @@
glabel func_808B1574
/* 00C14 808B1574 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00C18 808B1578 AFBF0014 */ sw $ra, 0x0014($sp)
/* 00C1C 808B157C 0C22C258 */ jal func_808B0960
/* 00C20 808B1580 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00C24 808B1584 8FBF0014 */ lw $ra, 0x0014($sp)
/* 00C28 808B1588 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 00C2C 808B158C 03E00008 */ jr $ra
/* 00C30 808B1590 00000000 */ nop

View file

@ -1,32 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .data
.balign 16
glabel Bg_Spot08_Iceblock_InitVars
.word 0x00D10100, 0x00000000, 0x00740000, 0x0000019C
.word BgSpot08Iceblock_Init
.word BgSpot08Iceblock_Destroy
.word BgSpot08Iceblock_Update
.word BgSpot08Iceblock_Draw
glabel D_808B16B0
.word 0x00000000, 0x3F800000, 0x00000000
glabel D_808B16BC
.word 0x00000000, 0x00000000, 0x00000000
glabel D_808B16C8
.word 0x32756D3C, 0x31C45764, 0x30C45764
glabel D_808B16D4
.word 0x3F75C28F, 0x3F75C28F, 0x3F7AE148
glabel D_808B16E0
.word 0x3E665991, 0x3E665991, 0x3D0EF2BF
glabel D_808B16EC
.word 0x3F797051, 0x3F797051, 0x3F7FD814
glabel D_808B16F8
.word 0xB0F40BB8, 0xB0F803E8, 0x30FC0898, 0x00000000, 0x00000000, 0x00000000

View file

@ -1,13 +0,0 @@
.include "macro.inc"
# assembler directives
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
.set gp=64 # allow use of 64-bit general purpose registers
.section .rodata
.balign 16
glabel D_808B18B0
.incbin "baserom/ovl_Bg_Spot08_Iceblock", 0xF50, 0x00000230

3
spec
View file

@ -1213,8 +1213,7 @@ endseg
beginseg
name "ovl_Bg_Spot08_Iceblock"
include "build/src/overlays/actors/ovl_Bg_Spot08_Iceblock/z_bg_spot08_iceblock.o"
include "build/data/overlays/actors/z_bg_spot08_iceblock.data.o"
include "build/data/overlays/actors/z_bg_spot08_iceblock.reloc.o"
include "build/src/overlays/actors/ovl_Bg_Spot08_Iceblock/ovl_Bg_Spot08_Iceblock_reloc.o"
endseg
beginseg

View file

@ -1,3 +1,9 @@
/*
* File: z_bg_spot08_iceblock.c
* Overlay: ovl_Bg_Spot08_Iceblock
* Description: Floating ice platforms
*/
#include "z_bg_spot08_iceblock.h"
#define FLAGS 0x00000000
@ -9,12 +15,14 @@ void BgSpot08Iceblock_Destroy(Actor* thisx, GlobalContext* globalCtx);
void BgSpot08Iceblock_Update(Actor* thisx, GlobalContext* globalCtx);
void BgSpot08Iceblock_Draw(Actor* thisx, GlobalContext* globalCtx);
extern UNK_TYPE D_06000DE0;
extern UNK_TYPE D_06002BD0;
extern UNK_TYPE D_06002FD8;
extern UNK_TYPE D_06001904;
void BgSpot08Iceblock_SetupFloatNonrotating(BgSpot08Iceblock* this);
void BgSpot08Iceblock_FloatNonrotating(BgSpot08Iceblock* this, GlobalContext* globalCtx);
void BgSpot08Iceblock_SetupFloatRotating(BgSpot08Iceblock* this);
void BgSpot08Iceblock_FloatRotating(BgSpot08Iceblock* this, GlobalContext* globalCtx);
void BgSpot08Iceblock_SetupFloatOrbitingTwins(BgSpot08Iceblock* this);
void BgSpot08Iceblock_FloatOrbitingTwins(BgSpot08Iceblock* this, GlobalContext* globalCtx);
void BgSpot08Iceblock_SetupNoAction(BgSpot08Iceblock* this);
/*
const ActorInit Bg_Spot08_Iceblock_InitVars = {
ACTOR_BG_SPOT08_ICEBLOCK,
ACTORCAT_BG,
@ -26,47 +34,418 @@ const ActorInit Bg_Spot08_Iceblock_InitVars = {
(ActorFunc)BgSpot08Iceblock_Update,
(ActorFunc)BgSpot08Iceblock_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0960.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0968.s")
extern Gfx D_06000DE0[]; // Large iceberg spawned in place of Jabu
extern CollisionHeader D_06001904; // Large iceberg spawned in place of Jabu
extern Gfx D_06002BD0[]; // Hexagonal ice floe
extern CollisionHeader D_06002FD8; // Hexagonal ice floe
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B09F0.s")
void BgSpot08Iceblock_SetupAction(BgSpot08Iceblock* this, BgSpot08IceblockActionFunc actionFunc) {
this->actionFunc = actionFunc;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0A84.s")
void BgSpot08Iceblock_InitDynaPoly(BgSpot08Iceblock* this, GlobalContext* globalCtx, CollisionHeader* collision,
DynaPolyMoveFlag flags) {
s32 pad;
CollisionHeader* colHeader = NULL;
s32 pad2;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0AE0.s")
DynaPolyActor_Init(&this->dyna, flags);
CollisionHeader_GetVirtual(collision, &colHeader);
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
if (this->dyna.bgId == BG_ACTOR_MAX) {
// Warning: move BG registration failed
osSyncPrintf("Warning : move BG 登録失敗(%s %d)(name %d)(arg_data 0x%04x)\n", "../z_bg_spot08_iceblock.c", 0xD9,
this->dyna.actor.id, this->dyna.actor.params);
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0B8C.s")
// Sets params to 0x10 (medium, nonrotating) if not in the cases listed.
void BgSpot08Iceblock_CheckParams(BgSpot08Iceblock* this) {
switch (this->dyna.actor.params & 0xFF) {
case 0xFF:
this->dyna.actor.params = 0x10;
break;
default:
// Error: arg_data setting error
osSyncPrintf("Error : arg_data 設定ミスです。(%s %d)(arg_data 0x%04x)\n", "../z_bg_spot08_iceblock.c", 0xF6,
this->dyna.actor.params);
this->dyna.actor.params = 0x10;
break;
case 1:
case 4:
case 0x10:
case 0x11:
case 0x12:
case 0x14:
case 0x20:
case 0x23:
case 0x24:
break;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0BA8.s")
void BgSpot08Iceblock_Bobbing(BgSpot08Iceblock* this) {
this->bobOffset = (Math_SinS(this->bobPhaseSlow) * 4.0f) + (Math_SinS(this->bobPhaseFast) * 3.0f);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0BD4.s")
void BgSpot08Iceblock_SinkUnderPlayer(BgSpot08Iceblock* this) {
f32 target;
f32 step;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0C44.s")
switch (this->dyna.actor.params & 0xF0) {
case 0:
step = 0.15f;
break;
case 0x10:
step = 0.2f;
break;
case 0x20:
step = 0.4f;
break;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B0CE0.s")
// Sink under Player's weight if standing on it
target = (func_80043548(&this->dyna) ? -4.0f : 0.0f);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B1054.s")
Math_StepToF(&this->sinkOffset, target, step);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/BgSpot08Iceblock_Init.s")
void BgSpot08Iceblock_SetWaterline(BgSpot08Iceblock* this) {
this->dyna.actor.world.pos.y = this->sinkOffset + this->bobOffset + this->dyna.actor.home.pos.y;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/BgSpot08Iceblock_Destroy.s")
void BgSpot08Iceblock_MultVectorScalar(Vec3f* dest, Vec3f* v, f32 scale) {
dest->x = v->x * scale;
dest->y = v->y * scale;
dest->z = v->z * scale;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B1388.s")
void BgSpot08Iceblock_CrossProduct(Vec3f* dest, Vec3f* v1, Vec3f* v2) {
dest->x = (v1->y * v2->z) - (v1->z * v2->y);
dest->y = (v1->z * v2->x) - (v1->x * v2->z);
dest->z = (v1->x * v2->y) - (v1->y * v2->x);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B13AC.s")
s32 BgSpot08Iceblock_NormalizeVector(Vec3f* dest, Vec3f* v) {
f32 magnitude;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B13FC.s")
magnitude = Math3D_Vec3fMagnitude(v);
if (magnitude < 0.001f) {
dest->x = dest->y = 0.0f;
dest->z = 1.0f;
return false;
} else {
dest->x = v->x * (1.0f / magnitude);
dest->y = v->y * (1.0f / magnitude);
dest->z = v->z * (1.0f / magnitude);
return true;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B1420.s")
static Vec3f sVerticalVector = { 0.0f, 1.0f, 0.0f };
static Vec3f sZeroVector = { 0.0f, 0.0f, 0.0f };
static f32 sInertias[] = { 1.0f / 70000000, 1.0f / 175000000, 1.0f / 700000000 };
static f32 sDampingFactors[] = { 0.96f, 0.96f, 0.98f };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B147C.s")
static f32 sRollSins[] = {
0.22495104f, // sin(13 degrees)
0.22495104f, // sin(13 degrees)
0.03489947f, // sin(2 degrees)
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B14A0.s")
static f32 sRollCoss[] = {
0.97437006f, // cos(13 degrees)
0.97437006f, // cos(13 degrees)
0.99939084f, // cos(2 degrees)
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/func_808B1574.s")
/**
* Handles all the factors that influence rolling: inertia, random oscillations, and most significantly, player weight,
* and combines them to produce a matrix that rotates the actor to match the surface normal
*/
void BgSpot08Iceblock_Roll(BgSpot08Iceblock* this, GlobalContext* globalCtx) {
f32 deviationFromVertSq;
f32 stabilityCorrection;
Vec3f surfaceNormalHorizontal;
Vec3f playerCentroidDiff;
Vec3f playerMoment;
Vec3f surfaceNormalHorizontalScaled;
Vec3f randomNutation;
Vec3f tempVec; // reused with different meanings
Vec3f torqueDirection;
f32 playerCentroidDist;
s32 rollDataIndex;
MtxF mtx;
s32 pad;
Player* player = PLAYER;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/BgSpot08Iceblock_Update.s")
switch (this->dyna.actor.params & 0xFF) {
case 0x11: // Medium nonrotating
rollDataIndex = 0;
break;
case 1:
rollDataIndex = 1; // Large nonrotating
break;
default:
rollDataIndex = 2;
break;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Spot08_Iceblock/BgSpot08Iceblock_Draw.s")
Math_Vec3f_Diff(&player->actor.world.pos, &this->dyna.actor.world.pos, &playerCentroidDiff);
playerCentroidDiff.y -= (150.0f * this->dyna.actor.scale.y);
playerCentroidDist = Math3D_Vec3fMagnitude(&playerCentroidDiff);
randomNutation.x = (Rand_ZeroOne() - 0.5f) * (1.0f / 625);
randomNutation.y = 0.0f;
randomNutation.z = (Rand_ZeroOne() - 0.5f) * (1.0f / 625);
surfaceNormalHorizontal.x = this->surfaceNormal.x;
surfaceNormalHorizontal.y = 0.0f;
surfaceNormalHorizontal.z = this->surfaceNormal.z;
// If player is standing on it or holding the edge
if (func_8004356C(&this->dyna) && (playerCentroidDist > 3.0f)) {
Math_Vec3f_Diff(&playerCentroidDiff, &surfaceNormalHorizontal, &playerMoment);
BgSpot08Iceblock_MultVectorScalar(&playerMoment, &playerMoment,
(sInertias[rollDataIndex] * playerCentroidDist) / this->dyna.actor.scale.x);
} else {
playerMoment = sZeroVector;
}
BgSpot08Iceblock_MultVectorScalar(&surfaceNormalHorizontalScaled, &surfaceNormalHorizontal, -0.01f);
// Add all three deviations
Math_Vec3f_Sum(&this->normalDelta, &playerMoment, &this->normalDelta);
Math_Vec3f_Sum(&this->normalDelta, &surfaceNormalHorizontalScaled, &this->normalDelta);
Math_Vec3f_Sum(&this->normalDelta, &randomNutation, &this->normalDelta);
this->normalDelta.y = 0.0f;
Math_Vec3f_Sum(&this->surfaceNormal, &this->normalDelta, &tempVec);
tempVec.x *= sDampingFactors[rollDataIndex];
tempVec.z *= sDampingFactors[rollDataIndex];
// Set up roll axis and final new angle
if (BgSpot08Iceblock_NormalizeVector(&this->surfaceNormal, &tempVec)) {
deviationFromVertSq = Math3D_Dist1DSq(this->surfaceNormal.z, this->surfaceNormal.x);
// Prevent overrolling
if (sRollSins[rollDataIndex] < deviationFromVertSq) {
stabilityCorrection = sRollSins[rollDataIndex] / deviationFromVertSq;
this->surfaceNormal.x *= stabilityCorrection;
this->surfaceNormal.y = sRollCoss[rollDataIndex];
this->surfaceNormal.z *= stabilityCorrection;
}
BgSpot08Iceblock_CrossProduct(&tempVec, &sVerticalVector, &this->surfaceNormal);
if (BgSpot08Iceblock_NormalizeVector(&torqueDirection, &tempVec)) {
this->rotationAxis = torqueDirection;
}
} else {
this->surfaceNormal = sVerticalVector;
}
// Rotation by the angle between surfaceNormal and the vertical about rotationAxis
func_800D23FC(Math_FAcosF(Math3D_Cos(&sVerticalVector, &this->surfaceNormal)), &this->rotationAxis, MTXMODE_NEW);
Matrix_RotateY(this->dyna.actor.shape.rot.y * (M_PI / 32768), MTXMODE_APPLY);
Matrix_Get(&mtx);
func_800D20CC(&mtx, &this->dyna.actor.shape.rot, MTXMODE_NEW);
}
void BgSpot08Iceblock_SpawnTwinFloe(BgSpot08Iceblock* this, GlobalContext* globalCtx) {
s32 pad[2];
f32 sin;
f32 cos;
sin = Math_SinS(this->dyna.actor.home.rot.y) * 100.0f;
cos = Math_CosS(this->dyna.actor.home.rot.y) * 100.0f;
if (!(this->dyna.actor.params & 0x100)) {
Actor_SpawnAsChild(&globalCtx->actorCtx, &this->dyna.actor, globalCtx, ACTOR_BG_SPOT08_ICEBLOCK,
this->dyna.actor.home.pos.x, this->dyna.actor.home.pos.y, this->dyna.actor.home.pos.z,
this->dyna.actor.home.rot.x, this->dyna.actor.home.rot.y, this->dyna.actor.home.rot.z,
0x123);
this->dyna.actor.world.pos.x += sin;
this->dyna.actor.world.pos.z += cos;
} else {
this->dyna.actor.world.pos.x -= sin;
this->dyna.actor.world.pos.z -= cos;
}
BgSpot08Iceblock_SetupFloatOrbitingTwins(this);
}
static InitChainEntry sInitChain[] = {
ICHAIN_F32(uncullZoneForward, 3000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneScale, 1000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneDownward, 2200, ICHAIN_STOP),
};
void BgSpot08Iceblock_Init(Actor* thisx, GlobalContext* globalCtx) {
BgSpot08Iceblock* this = THIS;
CollisionHeader* colHeader;
// spot08 ice floe
osSyncPrintf("(spot08 流氷)(arg_data 0x%04x)\n", this->dyna.actor.params);
BgSpot08Iceblock_CheckParams(this);
switch (this->dyna.actor.params & 0x200) {
case 0:
colHeader = &D_06002FD8;
break;
case 0x200:
colHeader = &D_06001904;
break;
}
switch (this->dyna.actor.params & 0xF) {
case 2:
case 3:
BgSpot08Iceblock_InitDynaPoly(this, globalCtx, colHeader, DPM_UNK3);
break;
default:
BgSpot08Iceblock_InitDynaPoly(this, globalCtx, colHeader, DPM_UNK);
break;
}
if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
Actor_Kill(&this->dyna.actor);
return;
}
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
switch (this->dyna.actor.params & 0xF0) {
case 0:
Actor_SetScale(&this->dyna.actor, 0.2f);
break;
case 0x10:
Actor_SetScale(&this->dyna.actor, 0.1f);
break;
case 0x20:
Actor_SetScale(&this->dyna.actor, 0.05f);
break;
}
this->bobPhaseSlow = (s32)(Rand_ZeroOne() * 65535.5f);
this->bobPhaseFast = (s32)(Rand_ZeroOne() * 65535.5f);
this->surfaceNormal.y = 1.0f;
this->rotationAxis.x = 1.0f;
switch (this->dyna.actor.params & 0xF) {
case 0:
case 1:
BgSpot08Iceblock_SetupFloatNonrotating(this);
break;
case 2:
BgSpot08Iceblock_SetupFloatRotating(this);
break;
case 3:
BgSpot08Iceblock_SpawnTwinFloe(this, globalCtx);
break;
case 4:
BgSpot08Iceblock_SetupNoAction(this);
break;
}
}
void BgSpot08Iceblock_Destroy(Actor* thisx, GlobalContext* globalCtx) {
BgSpot08Iceblock* this = THIS;
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
}
void BgSpot08Iceblock_SetupFloatNonrotating(BgSpot08Iceblock* this) {
BgSpot08Iceblock_SetupAction(this, BgSpot08Iceblock_FloatNonrotating);
}
void BgSpot08Iceblock_FloatNonrotating(BgSpot08Iceblock* this, GlobalContext* globalCtx) {
BgSpot08Iceblock_Bobbing(this);
BgSpot08Iceblock_SinkUnderPlayer(this);
BgSpot08Iceblock_SetWaterline(this);
this->dyna.actor.shape.rot.y = this->dyna.actor.home.rot.y;
BgSpot08Iceblock_Roll(this, globalCtx);
}
void BgSpot08Iceblock_SetupFloatRotating(BgSpot08Iceblock* this) {
BgSpot08Iceblock_SetupAction(this, BgSpot08Iceblock_FloatRotating);
}
void BgSpot08Iceblock_FloatRotating(BgSpot08Iceblock* this, GlobalContext* globalCtx) {
BgSpot08Iceblock_Bobbing(this);
BgSpot08Iceblock_SinkUnderPlayer(this);
BgSpot08Iceblock_SetWaterline(this);
this->dyna.actor.world.rot.y = this->dyna.actor.world.rot.y + 0x190;
this->dyna.actor.shape.rot.y = this->dyna.actor.world.rot.y;
BgSpot08Iceblock_Roll(this, globalCtx);
}
void BgSpot08Iceblock_SetupFloatOrbitingTwins(BgSpot08Iceblock* this) {
BgSpot08Iceblock_SetupAction(this, BgSpot08Iceblock_FloatOrbitingTwins);
}
void BgSpot08Iceblock_FloatOrbitingTwins(BgSpot08Iceblock* this, GlobalContext* globalCtx) {
f32 cos;
f32 sin;
BgSpot08Iceblock_Bobbing(this);
BgSpot08Iceblock_SinkUnderPlayer(this);
BgSpot08Iceblock_SetWaterline(this);
// parent handles rotations of both
if (!(this->dyna.actor.params & 0x100)) {
this->dyna.actor.world.rot.y += 0x190;
sin = Math_SinS(this->dyna.actor.world.rot.y) * 100.0f;
cos = Math_CosS(this->dyna.actor.world.rot.y) * 100.0f;
this->dyna.actor.world.pos.x = this->dyna.actor.home.pos.x + sin;
this->dyna.actor.world.pos.z = this->dyna.actor.home.pos.z + cos;
if (this->dyna.actor.child != NULL) {
this->dyna.actor.child->world.pos.x = this->dyna.actor.home.pos.x - sin;
this->dyna.actor.child->world.pos.z = this->dyna.actor.home.pos.z - cos;
}
}
this->dyna.actor.shape.rot.y = this->dyna.actor.home.rot.y;
BgSpot08Iceblock_Roll(this, globalCtx);
}
void BgSpot08Iceblock_SetupNoAction(BgSpot08Iceblock* this) {
BgSpot08Iceblock_SetupAction(this, NULL);
}
void BgSpot08Iceblock_Update(Actor* thisx, GlobalContext* globalCtx) {
BgSpot08Iceblock* this = THIS;
if (Rand_ZeroOne() < 0.05f) {
this->bobIncrSlow = Rand_S16Offset(300, 100);
this->bobIncrFast = Rand_S16Offset(800, 400);
}
this->bobPhaseSlow += this->bobIncrSlow;
this->bobPhaseFast += this->bobIncrFast;
if (this->actionFunc != NULL) {
this->actionFunc(this, globalCtx);
}
}
void BgSpot08Iceblock_Draw(Actor* thisx, GlobalContext* globalCtx) {
Gfx* dList;
BgSpot08Iceblock* this = THIS;
switch (this->dyna.actor.params & 0x200) {
case 0:
dList = D_06002BD0;
break;
case 0x200:
dList = D_06000DE0;
break;
}
Gfx_DrawDListOpa(globalCtx, dList);
}

View file

@ -6,11 +6,49 @@
struct BgSpot08Iceblock;
typedef void (*BgSpot08IceblockActionFunc)(struct BgSpot08Iceblock*, GlobalContext*);
typedef struct BgSpot08Iceblock {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x50];
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ BgSpot08IceblockActionFunc actionFunc;
/* 0x0168 */ Vec3f surfaceNormal;
/* 0x0170 */ Vec3f normalDelta; // y always 0
/* 0x0180 */ Vec3f rotationAxis;
/* 0x018C */ s16 bobPhaseSlow;
/* 0x018E */ s16 bobPhaseFast;
/* 0x0190 */ s16 bobIncrSlow;
/* 0x0192 */ s16 bobIncrFast;
/* 0x0194 */ f32 sinkOffset;
/* 0x0198 */ f32 bobOffset;
} BgSpot08Iceblock; // size = 0x019C
extern const ActorInit Bg_Spot08_Iceblock_InitVars;
// Params
/**
* 0x200: Shape
* 0x200 is the ice ramp where Jabu is as child
*/
/**
* 0x100: Twins
* 0x100 is the spawned twin platform
*/
/**
* 0xF0: Size
* 0x00 is large
* 0x10 is medium
* 0x20 is small
*/
/**
* 0xF: Action
* 0 Floating, nonrotating
* 1 same as 0, but does not roll as much (?)
* 2 Floating, rotating
* 3 Floating orbiting twins
* 4 Completely static, does nothing
*/
#endif