mirror of
https://github.com/zeldaret/oot.git
synced 2025-02-02 09:34:27 +00:00
z_obj_kibako2 (large wooden crate) OK (#582)
* Migrate data to C * Partially decompile Init * func_80B959D0 OK * ObjKibako2_Destroy OK * ObjKibako2_Update OK * ObjKibako2_Draw OK * func_80B95CA4 OK * ObjKibako2_Init OK * func_80B95DFC * func_80B95ED4 OK * func_80B95A28 OK * Name functions * Delete unused asm and update spec * Fixup math post rebase * Name statics * Clean up variable names * Run formatter * xzDistFromLink -> xzDistToLink * Respond to feedback in ObjKibako2_Break * Type sp2C as a CollisionHeader* and initalize it when declaring it * Respond to remaining review feedback * Respond to review feedback from Roman
This commit is contained in:
parent
3e5f6b3485
commit
3b4a1c23d6
14 changed files with 140 additions and 488 deletions
|
@ -1,21 +0,0 @@
|
|||
glabel ObjKibako2_Destroy
|
||||
/* 003E4 80B95DB4 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 003E8 80B95DB8 AFA40018 */ sw $a0, 0x0018($sp)
|
||||
/* 003EC 80B95DBC 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000
|
||||
/* 003F0 80B95DC0 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
|
||||
/* 003F4 80B95DC4 8FA50018 */ lw $a1, 0x0018($sp)
|
||||
/* 003F8 80B95DC8 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 003FC 80B95DCC AFA7001C */ sw $a3, 0x001C($sp)
|
||||
/* 00400 80B95DD0 0C0170EB */ jal Collider_DestroyCylinder
|
||||
|
||||
/* 00404 80B95DD4 24A50164 */ addiu $a1, $a1, 0x0164 ## $a1 = 00000164
|
||||
/* 00408 80B95DD8 8FA4001C */ lw $a0, 0x001C($sp)
|
||||
/* 0040C 80B95DDC 8FAE0018 */ lw $t6, 0x0018($sp)
|
||||
/* 00410 80B95DE0 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810
|
||||
/* 00414 80B95DE4 0C00FB56 */ jal DynaPoly_DeleteBgActor
|
||||
## DynaPoly_DeleteBgActor
|
||||
/* 00418 80B95DE8 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C
|
||||
/* 0041C 80B95DEC 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 00420 80B95DF0 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 00424 80B95DF4 03E00008 */ jr $ra
|
||||
/* 00428 80B95DF8 00000000 */ nop
|
|
@ -1,15 +0,0 @@
|
|||
glabel ObjKibako2_Draw
|
||||
/* 005AC 80B95F7C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 005B0 80B95F80 AFA40018 */ sw $a0, 0x0018($sp)
|
||||
/* 005B4 80B95F84 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
|
||||
/* 005B8 80B95F88 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 005BC 80B95F8C 3C050600 */ lui $a1, %hi(D_06000960) ## $a1 = 06000000
|
||||
/* 005C0 80B95F90 0C00D498 */ jal Gfx_DrawDListOpa
|
||||
|
||||
/* 005C4 80B95F94 24A50960 */ addiu $a1, $a1, %lo(D_06000960) ## $a1 = 06000960
|
||||
/* 005C8 80B95F98 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 005CC 80B95F9C 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 005D0 80B95FA0 03E00008 */ jr $ra
|
||||
/* 005D4 80B95FA4 00000000 */ nop
|
||||
/* 005D8 80B95FA8 00000000 */ nop
|
||||
/* 005DC 80B95FAC 00000000 */ nop
|
|
@ -1,60 +0,0 @@
|
|||
.rdata
|
||||
glabel D_80B96010
|
||||
.asciz "木箱(据置)(arg %04xH)(item %04xH %d)\n"
|
||||
.balign 4
|
||||
|
||||
.text
|
||||
glabel ObjKibako2_Init
|
||||
/* 00324 80B95CF4 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
|
||||
/* 00328 80B95CF8 AFBF001C */ sw $ra, 0x001C($sp)
|
||||
/* 0032C 80B95CFC AFB00018 */ sw $s0, 0x0018($sp)
|
||||
/* 00330 80B95D00 AFA5003C */ sw $a1, 0x003C($sp)
|
||||
/* 00334 80B95D04 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 00338 80B95D08 AFA0002C */ sw $zero, 0x002C($sp)
|
||||
/* 0033C 80B95D0C 0C010D20 */ jal DynaPolyActor_Init
|
||||
|
||||
/* 00340 80B95D10 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
|
||||
/* 00344 80B95D14 3C0580B9 */ lui $a1, %hi(D_80B95FFC) ## $a1 = 80B90000
|
||||
/* 00348 80B95D18 24A55FFC */ addiu $a1, $a1, %lo(D_80B95FFC) ## $a1 = 80B95FFC
|
||||
/* 0034C 80B95D1C 0C01E037 */ jal Actor_ProcessInitChain
|
||||
|
||||
/* 00350 80B95D20 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00354 80B95D24 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00358 80B95D28 0C2E5674 */ jal func_80B959D0
|
||||
/* 0035C 80B95D2C 8FA5003C */ lw $a1, 0x003C($sp)
|
||||
/* 00360 80B95D30 3C040600 */ lui $a0, %hi(D_06000B70) ## $a0 = 06000000
|
||||
/* 00364 80B95D34 24840B70 */ addiu $a0, $a0, %lo(D_06000B70) ## $a0 = 06000B70
|
||||
/* 00368 80B95D38 0C010620 */ jal CollisionHeader_GetVirtual
|
||||
|
||||
/* 0036C 80B95D3C 27A5002C */ addiu $a1, $sp, 0x002C ## $a1 = FFFFFFF4
|
||||
/* 00370 80B95D40 8FA4003C */ lw $a0, 0x003C($sp)
|
||||
/* 00374 80B95D44 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
|
||||
/* 00378 80B95D48 8FA7002C */ lw $a3, 0x002C($sp)
|
||||
/* 0037C 80B95D4C 0C00FA9D */ jal DynaPoly_SetBgActor
|
||||
## DynaPoly_SetBgActor
|
||||
/* 00380 80B95D50 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810
|
||||
/* 00384 80B95D54 A60000B4 */ sh $zero, 0x00B4($s0) ## 000000B4
|
||||
/* 00388 80B95D58 860F0018 */ lh $t7, 0x0018($s0) ## 00000018
|
||||
/* 0038C 80B95D5C 860300B4 */ lh $v1, 0x00B4($s0) ## 000000B4
|
||||
/* 00390 80B95D60 3C1980B9 */ lui $t9, %hi(func_80B95DFC) ## $t9 = 80B90000
|
||||
/* 00394 80B95D64 31F8003F */ andi $t8, $t7, 0x003F ## $t8 = 00000000
|
||||
/* 00398 80B95D68 A61801B4 */ sh $t8, 0x01B4($s0) ## 000001B4
|
||||
/* 0039C 80B95D6C 27395DFC */ addiu $t9, $t9, %lo(func_80B95DFC) ## $t9 = 80B95DFC
|
||||
/* 003A0 80B95D70 3C0480B9 */ lui $a0, %hi(D_80B96010) ## $a0 = 80B90000
|
||||
/* 003A4 80B95D74 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C
|
||||
/* 003A8 80B95D78 AE1901B0 */ sw $t9, 0x01B0($s0) ## 000001B0
|
||||
/* 003AC 80B95D7C 24846010 */ addiu $a0, $a0, %lo(D_80B96010) ## $a0 = 80B96010
|
||||
/* 003B0 80B95D80 860601B4 */ lh $a2, 0x01B4($s0) ## 000001B4
|
||||
/* 003B4 80B95D84 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
|
||||
/* 003B8 80B95D88 86070014 */ lh $a3, 0x0014($s0) ## 00000014
|
||||
/* 003BC 80B95D8C A6030030 */ sh $v1, 0x0030($s0) ## 00000030
|
||||
/* 003C0 80B95D90 A60300B8 */ sh $v1, 0x00B8($s0) ## 000000B8
|
||||
/* 003C4 80B95D94 A6030034 */ sh $v1, 0x0034($s0) ## 00000034
|
||||
/* 003C8 80B95D98 0C00084C */ jal osSyncPrintf
|
||||
|
||||
/* 003CC 80B95D9C A6030018 */ sh $v1, 0x0018($s0) ## 00000018
|
||||
/* 003D0 80B95DA0 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
/* 003D4 80B95DA4 8FB00018 */ lw $s0, 0x0018($sp)
|
||||
/* 003D8 80B95DA8 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
|
||||
/* 003DC 80B95DAC 03E00008 */ jr $ra
|
||||
/* 003E0 80B95DB0 00000000 */ nop
|
|
@ -1,10 +0,0 @@
|
|||
glabel ObjKibako2_Update
|
||||
/* 00588 80B95F58 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 0058C 80B95F5C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00590 80B95F60 8C9901B0 */ lw $t9, 0x01B0($a0) ## 000001B0
|
||||
/* 00594 80B95F64 0320F809 */ jalr $ra, $t9
|
||||
/* 00598 80B95F68 00000000 */ nop
|
||||
/* 0059C 80B95F6C 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 005A0 80B95F70 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 005A4 80B95F74 03E00008 */ jr $ra
|
||||
/* 005A8 80B95F78 00000000 */ nop
|
|
@ -1,26 +0,0 @@
|
|||
glabel func_80B959D0
|
||||
/* 00000 80B959D0 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
|
||||
/* 00004 80B959D4 00803025 */ or $a2, $a0, $zero ## $a2 = 00000000
|
||||
/* 00008 80B959D8 AFA50024 */ sw $a1, 0x0024($sp)
|
||||
/* 0000C 80B959DC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
|
||||
/* 00010 80B959E0 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00014 80B959E4 24C50164 */ addiu $a1, $a2, 0x0164 ## $a1 = 00000164
|
||||
/* 00018 80B959E8 AFA50018 */ sw $a1, 0x0018($sp)
|
||||
/* 0001C 80B959EC 0C0170D9 */ jal Collider_InitCylinder
|
||||
|
||||
/* 00020 80B959F0 AFA60020 */ sw $a2, 0x0020($sp)
|
||||
/* 00024 80B959F4 3C0780B9 */ lui $a3, %hi(D_80B95FD0) ## $a3 = 80B90000
|
||||
/* 00028 80B959F8 8FA60020 */ lw $a2, 0x0020($sp)
|
||||
/* 0002C 80B959FC 24E75FD0 */ addiu $a3, $a3, %lo(D_80B95FD0) ## $a3 = 80B95FD0
|
||||
/* 00030 80B95A00 8FA40024 */ lw $a0, 0x0024($sp)
|
||||
/* 00034 80B95A04 0C01712B */ jal Collider_SetCylinder
|
||||
|
||||
/* 00038 80B95A08 8FA50018 */ lw $a1, 0x0018($sp)
|
||||
/* 0003C 80B95A0C 8FA40020 */ lw $a0, 0x0020($sp)
|
||||
/* 00040 80B95A10 0C0189B7 */ jal Collider_CylinderUpdate
|
||||
|
||||
/* 00044 80B95A14 8FA50018 */ lw $a1, 0x0018($sp)
|
||||
/* 00048 80B95A18 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 0004C 80B95A1C 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
|
||||
/* 00050 80B95A20 03E00008 */ jr $ra
|
||||
/* 00054 80B95A24 00000000 */ nop
|
|
@ -1,184 +0,0 @@
|
|||
.late_rodata
|
||||
glabel D_80B96038
|
||||
.float 0.2
|
||||
|
||||
glabel D_80B9603C
|
||||
.float 0.2
|
||||
|
||||
glabel D_80B96040
|
||||
.float 0.05
|
||||
glabel D_80B96044
|
||||
.float 0.7
|
||||
|
||||
.text
|
||||
glabel func_80B95A28
|
||||
/* 00058 80B95A28 27BDFF18 */ addiu $sp, $sp, 0xFF18 ## $sp = FFFFFF18
|
||||
/* 0005C 80B95A2C F7BE0070 */ sdc1 $f30, 0x0070($sp)
|
||||
/* 00060 80B95A30 3C014000 */ lui $at, 0x4000 ## $at = 40000000
|
||||
/* 00064 80B95A34 4481F000 */ mtc1 $at, $f30 ## $f30 = 2.00
|
||||
/* 00068 80B95A38 F7BC0068 */ sdc1 $f28, 0x0068($sp)
|
||||
/* 0006C 80B95A3C 3C014120 */ lui $at, 0x4120 ## $at = 41200000
|
||||
/* 00070 80B95A40 4481E000 */ mtc1 $at, $f28 ## $f28 = 10.00
|
||||
/* 00074 80B95A44 AFB70094 */ sw $s7, 0x0094($sp)
|
||||
/* 00078 80B95A48 F7BA0060 */ sdc1 $f26, 0x0060($sp)
|
||||
/* 0007C 80B95A4C 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
|
||||
/* 00080 80B95A50 AFBE0098 */ sw $s8, 0x0098($sp)
|
||||
/* 00084 80B95A54 AFB60090 */ sw $s6, 0x0090($sp)
|
||||
/* 00088 80B95A58 AFB5008C */ sw $s5, 0x008C($sp)
|
||||
/* 0008C 80B95A5C AFB40088 */ sw $s4, 0x0088($sp)
|
||||
/* 00090 80B95A60 AFB30084 */ sw $s3, 0x0084($sp)
|
||||
/* 00094 80B95A64 AFB20080 */ sw $s2, 0x0080($sp)
|
||||
/* 00098 80B95A68 AFB1007C */ sw $s1, 0x007C($sp)
|
||||
/* 0009C 80B95A6C 3C170600 */ lui $s7, %hi(D_06001000) ## $s7 = 06000000
|
||||
/* 000A0 80B95A70 4481D000 */ mtc1 $at, $f26 ## $f26 = 30.00
|
||||
/* 000A4 80B95A74 00A0A825 */ or $s5, $a1, $zero ## $s5 = 00000000
|
||||
/* 000A8 80B95A78 AFBF009C */ sw $ra, 0x009C($sp)
|
||||
/* 000AC 80B95A7C AFB00078 */ sw $s0, 0x0078($sp)
|
||||
/* 000B0 80B95A80 F7B80058 */ sdc1 $f24, 0x0058($sp)
|
||||
/* 000B4 80B95A84 F7B60050 */ sdc1 $f22, 0x0050($sp)
|
||||
/* 000B8 80B95A88 F7B40048 */ sdc1 $f20, 0x0048($sp)
|
||||
/* 000BC 80B95A8C 26F71000 */ addiu $s7, $s7, %lo(D_06001000) ## $s7 = 06001000
|
||||
/* 000C0 80B95A90 00008825 */ or $s1, $zero, $zero ## $s1 = 00000000
|
||||
/* 000C4 80B95A94 24920024 */ addiu $s2, $a0, 0x0024 ## $s2 = 00000024
|
||||
/* 000C8 80B95A98 00009825 */ or $s3, $zero, $zero ## $s3 = 00000000
|
||||
/* 000CC 80B95A9C 27B400D0 */ addiu $s4, $sp, 0x00D0 ## $s4 = FFFFFFE8
|
||||
/* 000D0 80B95AA0 27B600C4 */ addiu $s6, $sp, 0x00C4 ## $s6 = FFFFFFDC
|
||||
/* 000D4 80B95AA4 241E0010 */ addiu $s8, $zero, 0x0010 ## $s8 = 00000010
|
||||
.L80B95AA8:
|
||||
/* 000D8 80B95AA8 00112400 */ sll $a0, $s1, 16
|
||||
/* 000DC 80B95AAC 0C01DE1C */ jal Math_SinS
|
||||
## sins?
|
||||
/* 000E0 80B95AB0 00042403 */ sra $a0, $a0, 16
|
||||
/* 000E4 80B95AB4 00112400 */ sll $a0, $s1, 16
|
||||
/* 000E8 80B95AB8 46000506 */ mov.s $f20, $f0
|
||||
/* 000EC 80B95ABC 0C01DE0D */ jal Math_CosS
|
||||
## coss?
|
||||
/* 000F0 80B95AC0 00042403 */ sra $a0, $a0, 16
|
||||
/* 000F4 80B95AC4 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 000F8 80B95AC8 46000586 */ mov.s $f22, $f0
|
||||
/* 000FC 80B95ACC 461A0602 */ mul.s $f24, $f0, $f26
|
||||
/* 00100 80B95AD0 00000000 */ nop
|
||||
/* 00104 80B95AD4 4618A102 */ mul.s $f4, $f20, $f24
|
||||
/* 00108 80B95AD8 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 0010C 80B95ADC E7A400D0 */ swc1 $f4, 0x00D0($sp)
|
||||
/* 00110 80B95AE0 461C0182 */ mul.s $f6, $f0, $f28
|
||||
/* 00114 80B95AE4 3C0180B9 */ lui $at, %hi(D_80B96038) ## $at = 80B90000
|
||||
/* 00118 80B95AE8 C4326038 */ lwc1 $f18, %lo(D_80B96038)($at)
|
||||
/* 0011C 80B95AEC 4618B282 */ mul.s $f10, $f22, $f24
|
||||
/* 00120 80B95AF0 C7B000D0 */ lwc1 $f16, 0x00D0($sp)
|
||||
/* 00124 80B95AF4 46128102 */ mul.s $f4, $f16, $f18
|
||||
/* 00128 80B95AF8 461E3200 */ add.s $f8, $f6, $f30
|
||||
/* 0012C 80B95AFC E7AA00D8 */ swc1 $f10, 0x00D8($sp)
|
||||
/* 00130 80B95B00 E7A800D4 */ swc1 $f8, 0x00D4($sp)
|
||||
/* 00134 80B95B04 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 00138 80B95B08 E7A400C4 */ swc1 $f4, 0x00C4($sp)
|
||||
/* 0013C 80B95B0C 461C0182 */ mul.s $f6, $f0, $f28
|
||||
/* 00140 80B95B10 3C0180B9 */ lui $at, %hi(D_80B9603C) ## $at = 80B90000
|
||||
/* 00144 80B95B14 C430603C */ lwc1 $f16, %lo(D_80B9603C)($at)
|
||||
/* 00148 80B95B18 C7AA00D8 */ lwc1 $f10, 0x00D8($sp)
|
||||
/* 0014C 80B95B1C C7A400D0 */ lwc1 $f4, 0x00D0($sp)
|
||||
/* 00150 80B95B20 46105482 */ mul.s $f18, $f10, $f16
|
||||
/* 00154 80B95B24 461E3200 */ add.s $f8, $f6, $f30
|
||||
/* 00158 80B95B28 C7B000D4 */ lwc1 $f16, 0x00D4($sp)
|
||||
/* 0015C 80B95B2C E7A800C8 */ swc1 $f8, 0x00C8($sp)
|
||||
/* 00160 80B95B30 E7B200CC */ swc1 $f18, 0x00CC($sp)
|
||||
/* 00164 80B95B34 C6460000 */ lwc1 $f6, 0x0000($s2) ## 00000024
|
||||
/* 00168 80B95B38 46062200 */ add.s $f8, $f4, $f6
|
||||
/* 0016C 80B95B3C E7A800D0 */ swc1 $f8, 0x00D0($sp)
|
||||
/* 00170 80B95B40 C6520004 */ lwc1 $f18, 0x0004($s2) ## 00000028
|
||||
/* 00174 80B95B44 46128100 */ add.s $f4, $f16, $f18
|
||||
/* 00178 80B95B48 E7A400D4 */ swc1 $f4, 0x00D4($sp)
|
||||
/* 0017C 80B95B4C C6460008 */ lwc1 $f6, 0x0008($s2) ## 0000002C
|
||||
/* 00180 80B95B50 46065200 */ add.s $f8, $f10, $f6
|
||||
/* 00184 80B95B54 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 00188 80B95B58 E7A800D8 */ swc1 $f8, 0x00D8($sp)
|
||||
/* 0018C 80B95B5C 3C0180B9 */ lui $at, %hi(D_80B96040) ## $at = 80B90000
|
||||
/* 00190 80B95B60 C4306040 */ lwc1 $f16, %lo(D_80B96040)($at)
|
||||
/* 00194 80B95B64 3C0180B9 */ lui $at, %hi(D_80B96044) ## $at = 80B90000
|
||||
/* 00198 80B95B68 4610003C */ c.lt.s $f0, $f16
|
||||
/* 0019C 80B95B6C 00000000 */ nop
|
||||
/* 001A0 80B95B70 45000003 */ bc1f .L80B95B80
|
||||
/* 001A4 80B95B74 00000000 */ nop
|
||||
/* 001A8 80B95B78 10000009 */ beq $zero, $zero, .L80B95BA0
|
||||
/* 001AC 80B95B7C 24100060 */ addiu $s0, $zero, 0x0060 ## $s0 = 00000060
|
||||
.L80B95B80:
|
||||
/* 001B0 80B95B80 C4326044 */ lwc1 $f18, %lo(D_80B96044)($at)
|
||||
/* 001B4 80B95B84 24100020 */ addiu $s0, $zero, 0x0020 ## $s0 = 00000020
|
||||
/* 001B8 80B95B88 4612003C */ c.lt.s $f0, $f18
|
||||
/* 001BC 80B95B8C 00000000 */ nop
|
||||
/* 001C0 80B95B90 45000003 */ bc1f .L80B95BA0
|
||||
/* 001C4 80B95B94 00000000 */ nop
|
||||
/* 001C8 80B95B98 10000001 */ beq $zero, $zero, .L80B95BA0
|
||||
/* 001CC 80B95B9C 24100040 */ addiu $s0, $zero, 0x0040 ## $s0 = 00000040
|
||||
.L80B95BA0:
|
||||
/* 001D0 80B95BA0 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 001D4 80B95BA4 00000000 */ nop
|
||||
/* 001D8 80B95BA8 461A0102 */ mul.s $f4, $f0, $f26
|
||||
/* 001DC 80B95BAC 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
|
||||
/* 001E0 80B95BB0 44815000 */ mtc1 $at, $f10 ## $f10 = 5.00
|
||||
/* 001E4 80B95BB4 240EFF38 */ addiu $t6, $zero, 0xFF38 ## $t6 = FFFFFF38
|
||||
/* 001E8 80B95BB8 240F001C */ addiu $t7, $zero, 0x001C ## $t7 = 0000001C
|
||||
/* 001EC 80B95BBC 24180002 */ addiu $t8, $zero, 0x0002 ## $t8 = 00000002
|
||||
/* 001F0 80B95BC0 24090046 */ addiu $t1, $zero, 0x0046 ## $t1 = 00000046
|
||||
/* 001F4 80B95BC4 460A2180 */ add.s $f6, $f4, $f10
|
||||
/* 001F8 80B95BC8 240AFFFF */ addiu $t2, $zero, 0xFFFF ## $t2 = FFFFFFFF
|
||||
/* 001FC 80B95BCC 240B0170 */ addiu $t3, $zero, 0x0170 ## $t3 = 00000170
|
||||
/* 00200 80B95BD0 AFAB0038 */ sw $t3, 0x0038($sp)
|
||||
/* 00204 80B95BD4 4600320D */ trunc.w.s $f8, $f6
|
||||
/* 00208 80B95BD8 AFAA0034 */ sw $t2, 0x0034($sp)
|
||||
/* 0020C 80B95BDC AFA90030 */ sw $t1, 0x0030($sp)
|
||||
/* 00210 80B95BE0 AFB8001C */ sw $t8, 0x001C($sp)
|
||||
/* 00214 80B95BE4 44084000 */ mfc1 $t0, $f8
|
||||
/* 00218 80B95BE8 AFAF0018 */ sw $t7, 0x0018($sp)
|
||||
/* 0021C 80B95BEC AFAE0010 */ sw $t6, 0x0010($sp)
|
||||
/* 00220 80B95BF0 02A02025 */ or $a0, $s5, $zero ## $a0 = 00000000
|
||||
/* 00224 80B95BF4 02802825 */ or $a1, $s4, $zero ## $a1 = FFFFFFE8
|
||||
/* 00228 80B95BF8 02C03025 */ or $a2, $s6, $zero ## $a2 = FFFFFFDC
|
||||
/* 0022C 80B95BFC 02803825 */ or $a3, $s4, $zero ## $a3 = FFFFFFE8
|
||||
/* 00230 80B95C00 AFB00014 */ sw $s0, 0x0014($sp)
|
||||
/* 00234 80B95C04 AFA00020 */ sw $zero, 0x0020($sp)
|
||||
/* 00238 80B95C08 AFA00028 */ sw $zero, 0x0028($sp)
|
||||
/* 0023C 80B95C0C AFA0002C */ sw $zero, 0x002C($sp)
|
||||
/* 00240 80B95C10 AFB7003C */ sw $s7, 0x003C($sp)
|
||||
/* 00244 80B95C14 0C00A7A3 */ jal EffectSsKakera_Spawn
|
||||
|
||||
/* 00248 80B95C18 AFA80024 */ sw $t0, 0x0024($sp)
|
||||
/* 0024C 80B95C1C 26314E20 */ addiu $s1, $s1, 0x4E20 ## $s1 = 00004E20
|
||||
/* 00250 80B95C20 00118C00 */ sll $s1, $s1, 16
|
||||
/* 00254 80B95C24 26730001 */ addiu $s3, $s3, 0x0001 ## $s3 = 00000001
|
||||
/* 00258 80B95C28 167EFF9F */ bne $s3, $s8, .L80B95AA8
|
||||
/* 0025C 80B95C2C 00118C03 */ sra $s1, $s1, 16
|
||||
/* 00260 80B95C30 240C0064 */ addiu $t4, $zero, 0x0064 ## $t4 = 00000064
|
||||
/* 00264 80B95C34 240D00A0 */ addiu $t5, $zero, 0x00A0 ## $t5 = 000000A0
|
||||
/* 00268 80B95C38 240E0001 */ addiu $t6, $zero, 0x0001 ## $t6 = 00000001
|
||||
/* 0026C 80B95C3C AFAE0018 */ sw $t6, 0x0018($sp)
|
||||
/* 00270 80B95C40 AFAD0014 */ sw $t5, 0x0014($sp)
|
||||
/* 00274 80B95C44 AFAC0010 */ sw $t4, 0x0010($sp)
|
||||
/* 00278 80B95C48 02A02025 */ or $a0, $s5, $zero ## $a0 = 00000000
|
||||
/* 0027C 80B95C4C 02402825 */ or $a1, $s2, $zero ## $a1 = 00000024
|
||||
/* 00280 80B95C50 3C0642B4 */ lui $a2, 0x42B4 ## $a2 = 42B40000
|
||||
/* 00284 80B95C54 0C00CD20 */ jal func_80033480
|
||||
/* 00288 80B95C58 24070006 */ addiu $a3, $zero, 0x0006 ## $a3 = 00000006
|
||||
/* 0028C 80B95C5C 8FBF009C */ lw $ra, 0x009C($sp)
|
||||
/* 00290 80B95C60 D7B40048 */ ldc1 $f20, 0x0048($sp)
|
||||
/* 00294 80B95C64 D7B60050 */ ldc1 $f22, 0x0050($sp)
|
||||
/* 00298 80B95C68 D7B80058 */ ldc1 $f24, 0x0058($sp)
|
||||
/* 0029C 80B95C6C D7BA0060 */ ldc1 $f26, 0x0060($sp)
|
||||
/* 002A0 80B95C70 D7BC0068 */ ldc1 $f28, 0x0068($sp)
|
||||
/* 002A4 80B95C74 D7BE0070 */ ldc1 $f30, 0x0070($sp)
|
||||
/* 002A8 80B95C78 8FB00078 */ lw $s0, 0x0078($sp)
|
||||
/* 002AC 80B95C7C 8FB1007C */ lw $s1, 0x007C($sp)
|
||||
/* 002B0 80B95C80 8FB20080 */ lw $s2, 0x0080($sp)
|
||||
/* 002B4 80B95C84 8FB30084 */ lw $s3, 0x0084($sp)
|
||||
/* 002B8 80B95C88 8FB40088 */ lw $s4, 0x0088($sp)
|
||||
/* 002BC 80B95C8C 8FB5008C */ lw $s5, 0x008C($sp)
|
||||
/* 002C0 80B95C90 8FB60090 */ lw $s6, 0x0090($sp)
|
||||
/* 002C4 80B95C94 8FB70094 */ lw $s7, 0x0094($sp)
|
||||
/* 002C8 80B95C98 8FBE0098 */ lw $s8, 0x0098($sp)
|
||||
/* 002CC 80B95C9C 03E00008 */ jr $ra
|
||||
/* 002D0 80B95CA0 27BD00E8 */ addiu $sp, $sp, 0x00E8 ## $sp = 00000000
|
|
@ -1,23 +0,0 @@
|
|||
glabel func_80B95CA4
|
||||
/* 002D4 80B95CA4 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 002D8 80B95CA8 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 002DC 80B95CAC AFA5001C */ sw $a1, 0x001C($sp)
|
||||
/* 002E0 80B95CB0 84820014 */ lh $v0, 0x0014($a0) ## 00000014
|
||||
/* 002E4 80B95CB4 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
|
||||
/* 002E8 80B95CB8 848301B4 */ lh $v1, 0x01B4($a0) ## 000001B4
|
||||
/* 002EC 80B95CBC 04400009 */ bltz $v0, .L80B95CE4
|
||||
/* 002F0 80B95CC0 2841001A */ slti $at, $v0, 0x001A
|
||||
/* 002F4 80B95CC4 10200007 */ beq $at, $zero, .L80B95CE4
|
||||
/* 002F8 80B95CC8 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
|
||||
/* 002FC 80B95CCC 00037200 */ sll $t6, $v1, 8
|
||||
/* 00300 80B95CD0 004E3025 */ or $a2, $v0, $t6 ## $a2 = 00000000
|
||||
/* 00304 80B95CD4 00063400 */ sll $a2, $a2, 16
|
||||
/* 00308 80B95CD8 00063403 */ sra $a2, $a2, 16
|
||||
/* 0030C 80B95CDC 0C007D52 */ jal Item_DropCollectible
|
||||
|
||||
/* 00310 80B95CE0 24E50024 */ addiu $a1, $a3, 0x0024 ## $a1 = 00000024
|
||||
.L80B95CE4:
|
||||
/* 00314 80B95CE4 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 00318 80B95CE8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 0031C 80B95CEC 03E00008 */ jr $ra
|
||||
/* 00320 80B95CF0 00000000 */ nop
|
|
@ -1,61 +0,0 @@
|
|||
glabel func_80B95DFC
|
||||
/* 0042C 80B95DFC 27BDFFE0 */ addiu $sp, $sp, 0xFFE0 ## $sp = FFFFFFE0
|
||||
/* 00430 80B95E00 AFBF001C */ sw $ra, 0x001C($sp)
|
||||
/* 00434 80B95E04 AFB10018 */ sw $s1, 0x0018($sp)
|
||||
/* 00438 80B95E08 AFB00014 */ sw $s0, 0x0014($sp)
|
||||
/* 0043C 80B95E0C 908E0175 */ lbu $t6, 0x0175($a0) ## 00000175
|
||||
/* 00440 80B95E10 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 00444 80B95E14 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
|
||||
/* 00448 80B95E18 31CF0002 */ andi $t7, $t6, 0x0002 ## $t7 = 00000000
|
||||
/* 0044C 80B95E1C 55E0000A */ bnel $t7, $zero, .L80B95E48
|
||||
/* 00450 80B95E20 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00454 80B95E24 84980018 */ lh $t8, 0x0018($a0) ## 00000018
|
||||
/* 00458 80B95E28 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
|
||||
/* 0045C 80B95E2C 57000006 */ bnel $t8, $zero, .L80B95E48
|
||||
/* 00460 80B95E30 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00464 80B95E34 0C00CDA1 */ jal func_80033684
|
||||
/* 00468 80B95E38 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
|
||||
/* 0046C 80B95E3C 10400015 */ beq $v0, $zero, .L80B95E94
|
||||
/* 00470 80B95E40 3C014416 */ lui $at, 0x4416 ## $at = 44160000
|
||||
/* 00474 80B95E44 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
.L80B95E48:
|
||||
/* 00478 80B95E48 0C2E568A */ jal func_80B95A28
|
||||
/* 0047C 80B95E4C 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
|
||||
/* 00480 80B95E50 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
|
||||
/* 00484 80B95E54 26050024 */ addiu $a1, $s0, 0x0024 ## $a1 = 00000024
|
||||
/* 00488 80B95E58 24060014 */ addiu $a2, $zero, 0x0014 ## $a2 = 00000014
|
||||
/* 0048C 80B95E5C 0C01AEB6 */ jal Audio_PlaySoundAtPosition
|
||||
|
||||
/* 00490 80B95E60 240728AA */ addiu $a3, $zero, 0x28AA ## $a3 = 000028AA
|
||||
/* 00494 80B95E64 8E190004 */ lw $t9, 0x0004($s0) ## 00000004
|
||||
/* 00498 80B95E68 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
|
||||
/* 0049C 80B95E6C 26250810 */ addiu $a1, $s1, 0x0810 ## $a1 = 00000810
|
||||
/* 004A0 80B95E70 37280010 */ ori $t0, $t9, 0x0010 ## $t0 = 00000010
|
||||
/* 004A4 80B95E74 AE080004 */ sw $t0, 0x0004($s0) ## 00000004
|
||||
/* 004A8 80B95E78 0C00FAFE */ jal func_8003EBF8
|
||||
/* 004AC 80B95E7C 8E06014C */ lw $a2, 0x014C($s0) ## 0000014C
|
||||
/* 004B0 80B95E80 3C0980B9 */ lui $t1, %hi(func_80B95ED4) ## $t1 = 80B90000
|
||||
/* 004B4 80B95E84 25295ED4 */ addiu $t1, $t1, %lo(func_80B95ED4) ## $t1 = 80B95ED4
|
||||
/* 004B8 80B95E88 AE000134 */ sw $zero, 0x0134($s0) ## 00000134
|
||||
/* 004BC 80B95E8C 1000000C */ beq $zero, $zero, .L80B95EC0
|
||||
/* 004C0 80B95E90 AE0901B0 */ sw $t1, 0x01B0($s0) ## 000001B0
|
||||
.L80B95E94:
|
||||
/* 004C4 80B95E94 C6040090 */ lwc1 $f4, 0x0090($s0) ## 00000090
|
||||
/* 004C8 80B95E98 44813000 */ mtc1 $at, $f6 ## $f6 = 0.00
|
||||
/* 004CC 80B95E9C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 004D0 80B95EA0 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
|
||||
/* 004D4 80B95EA4 4606203C */ c.lt.s $f4, $f6
|
||||
/* 004D8 80B95EA8 02212821 */ addu $a1, $s1, $at
|
||||
/* 004DC 80B95EAC 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
|
||||
/* 004E0 80B95EB0 45020004 */ bc1fl .L80B95EC4
|
||||
/* 004E4 80B95EB4 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
/* 004E8 80B95EB8 0C01767D */ jal CollisionCheck_SetAC
|
||||
## CollisionCheck_setAC
|
||||
/* 004EC 80B95EBC 26060164 */ addiu $a2, $s0, 0x0164 ## $a2 = 00000164
|
||||
.L80B95EC0:
|
||||
/* 004F0 80B95EC0 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
.L80B95EC4:
|
||||
/* 004F4 80B95EC4 8FB00014 */ lw $s0, 0x0014($sp)
|
||||
/* 004F8 80B95EC8 8FB10018 */ lw $s1, 0x0018($sp)
|
||||
/* 004FC 80B95ECC 03E00008 */ jr $ra
|
||||
/* 00500 80B95ED0 27BD0020 */ addiu $sp, $sp, 0x0020 ## $sp = 00000000
|
|
@ -1,37 +0,0 @@
|
|||
glabel func_80B95ED4
|
||||
/* 00504 80B95ED4 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
|
||||
/* 00508 80B95ED8 AFBF0034 */ sw $ra, 0x0034($sp)
|
||||
/* 0050C 80B95EDC AFB00030 */ sw $s0, 0x0030($sp)
|
||||
/* 00510 80B95EE0 8482001C */ lh $v0, 0x001C($a0) ## 0000001C
|
||||
/* 00514 80B95EE4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 00518 80B95EE8 24A41C24 */ addiu $a0, $a1, 0x1C24 ## $a0 = 00001C24
|
||||
/* 0051C 80B95EEC 304E8000 */ andi $t6, $v0, 0x8000 ## $t6 = 00000000
|
||||
/* 00520 80B95EF0 15C00010 */ bne $t6, $zero, .L80B95F34
|
||||
/* 00524 80B95EF4 00000000 */ nop
|
||||
/* 00528 80B95EF8 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028
|
||||
/* 0052C 80B95EFC 8E070024 */ lw $a3, 0x0024($s0) ## 00000024
|
||||
/* 00530 80B95F00 34588000 */ ori $t8, $v0, 0x8000 ## $t8 = 00008000
|
||||
/* 00534 80B95F04 E7A40010 */ swc1 $f4, 0x0010($sp)
|
||||
/* 00538 80B95F08 C606002C */ lwc1 $f6, 0x002C($s0) ## 0000002C
|
||||
/* 0053C 80B95F0C AFA00018 */ sw $zero, 0x0018($sp)
|
||||
/* 00540 80B95F10 24060095 */ addiu $a2, $zero, 0x0095 ## $a2 = 00000095
|
||||
/* 00544 80B95F14 E7A60014 */ swc1 $f6, 0x0014($sp)
|
||||
/* 00548 80B95F18 860F00B6 */ lh $t7, 0x00B6($s0) ## 000000B6
|
||||
/* 0054C 80B95F1C AFA5003C */ sw $a1, 0x003C($sp)
|
||||
/* 00550 80B95F20 AFB80024 */ sw $t8, 0x0024($sp)
|
||||
/* 00554 80B95F24 AFA00020 */ sw $zero, 0x0020($sp)
|
||||
/* 00558 80B95F28 0C00C7D4 */ jal Actor_Spawn
|
||||
## ActorSpawn
|
||||
/* 0055C 80B95F2C AFAF001C */ sw $t7, 0x001C($sp)
|
||||
/* 00560 80B95F30 8FA5003C */ lw $a1, 0x003C($sp)
|
||||
.L80B95F34:
|
||||
/* 00564 80B95F34 0C2E5729 */ jal func_80B95CA4
|
||||
/* 00568 80B95F38 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 0056C 80B95F3C 0C00B55C */ jal Actor_Kill
|
||||
|
||||
/* 00570 80B95F40 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00574 80B95F44 8FBF0034 */ lw $ra, 0x0034($sp)
|
||||
/* 00578 80B95F48 8FB00030 */ lw $s0, 0x0030($sp)
|
||||
/* 0057C 80B95F4C 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
|
||||
/* 00580 80B95F50 03E00008 */ jr $ra
|
||||
/* 00584 80B95F54 00000000 */ nop
|
|
@ -1,22 +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 Obj_Kibako2_InitVars
|
||||
.word 0x01A00100, 0x00000000, 0x01700000, 0x000001B8
|
||||
.word ObjKibako2_Init
|
||||
.word ObjKibako2_Destroy
|
||||
.word ObjKibako2_Update
|
||||
.word ObjKibako2_Draw
|
||||
glabel D_80B95FD0
|
||||
.word 0x0A000900, 0x20010000, 0x00000000, 0x00000000, 0x00000000, 0x40000040, 0x00000000, 0x00010000, 0x001F0030, 0x00000000, 0x00000000
|
||||
glabel D_80B95FFC
|
||||
.word 0xC8500064, 0xB0F40BB8, 0xB0F801F4, 0x30FC03E8, 0x00000000
|
||||
|
|
@ -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_80B96050
|
||||
.incbin "baserom/ovl_Obj_Kibako2", 0x680, 0x00000080
|
3
spec
3
spec
|
@ -3383,8 +3383,7 @@ endseg
|
|||
beginseg
|
||||
name "ovl_Obj_Kibako2"
|
||||
include "build/src/overlays/actors/ovl_Obj_Kibako2/z_obj_kibako2.o"
|
||||
include "build/data/overlays/actors/z_obj_kibako2.data.o"
|
||||
include "build/data/overlays/actors/z_obj_kibako2.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_Obj_Kibako2/ovl_Obj_Kibako2_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
*/
|
||||
|
||||
#include "z_obj_kibako2.h"
|
||||
#include "overlays/effects/ovl_Effect_Ss_Kakera/z_eff_ss_kakera.h"
|
||||
|
||||
#define FLAGS 0x00000000
|
||||
|
||||
|
@ -14,12 +15,13 @@ void ObjKibako2_Init(Actor* thisx, GlobalContext* globalCtx);
|
|||
void ObjKibako2_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
||||
void ObjKibako2_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
void ObjKibako2_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
void ObjKibako2_Idle(ObjKibako2* this, GlobalContext* globalCtx);
|
||||
void ObjKibako2_Kill(ObjKibako2* this, GlobalContext* globalCtx);
|
||||
|
||||
extern UNK_TYPE D_06000960;
|
||||
extern Gfx D_06000960[];
|
||||
extern UNK_TYPE D_06000B70;
|
||||
extern UNK_TYPE D_06001000;
|
||||
extern Gfx D_06001000[];
|
||||
|
||||
/*
|
||||
const ActorInit Obj_Kibako2_InitVars = {
|
||||
ACTOR_OBJ_KIBAKO2,
|
||||
ACTORTYPE_BG,
|
||||
|
@ -31,21 +33,140 @@ const ActorInit Obj_Kibako2_InitVars = {
|
|||
(ActorFunc)ObjKibako2_Update,
|
||||
(ActorFunc)ObjKibako2_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/func_80B959D0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/func_80B95A28.s")
|
||||
static ColliderCylinderInit sCylinderInit = {
|
||||
{ COLTYPE_UNK10, 0x00, 0x09, 0x00, 0x20, COLSHAPE_CYLINDER },
|
||||
{ 0x00, { 0x00000000, 0x00, 0x00 }, { 0x40000040, 0x00, 0x00 }, 0x00, 0x01, 0x00 },
|
||||
{ 31, 48, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/func_80B95CA4.s")
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneForward, 3000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 500, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 1000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/ObjKibako2_Init.s")
|
||||
void ObjKibako2_InitCollider(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ObjKibako2* this = THIS;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/ObjKibako2_Destroy.s")
|
||||
Collider_InitCylinder(globalCtx, &this->collider);
|
||||
Collider_SetCylinder(globalCtx, &this->collider, &this->dyna.actor, &sCylinderInit);
|
||||
Collider_CylinderUpdate(&this->dyna.actor, &this->collider);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/func_80B95DFC.s")
|
||||
void ObjKibako2_Break(ObjKibako2* this, GlobalContext* globalCtx) {
|
||||
s32 pad[2];
|
||||
Vec3f* thisPos;
|
||||
Vec3f pos;
|
||||
Vec3f velocity;
|
||||
s16 angle;
|
||||
s32 i;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/func_80B95ED4.s")
|
||||
thisPos = &this->dyna.actor.posRot.pos;
|
||||
for (i = 0, angle = 0; i < 0x10; i++, angle += 0x4E20) {
|
||||
f32 sn = Math_SinS(angle);
|
||||
f32 cs = Math_CosS(angle);
|
||||
f32 temp_rand;
|
||||
s32 phi_s0;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/ObjKibako2_Update.s")
|
||||
temp_rand = Rand_ZeroOne() * 30.0f;
|
||||
pos.x = sn * temp_rand;
|
||||
pos.y = (Rand_ZeroOne() * 10.0f) + 2.0f;
|
||||
pos.z = cs * temp_rand;
|
||||
velocity.x = pos.x * 0.2f;
|
||||
velocity.y = (Rand_ZeroOne() * 10.0f) + 2.0f;
|
||||
velocity.z = pos.z * 0.2f;
|
||||
pos.x += thisPos->x;
|
||||
pos.y += thisPos->y;
|
||||
pos.z += thisPos->z;
|
||||
temp_rand = Rand_ZeroOne();
|
||||
if (temp_rand < 0.05f) {
|
||||
phi_s0 = 0x60;
|
||||
} else if (temp_rand < 0.7f) {
|
||||
phi_s0 = 0x40;
|
||||
} else {
|
||||
phi_s0 = 0x20;
|
||||
}
|
||||
EffectSsKakera_Spawn(globalCtx, &pos, &velocity, &pos, -200, phi_s0, 28, 2, 0, (Rand_ZeroOne() * 30.0f) + 5.0f,
|
||||
0, 0, 70, KAKERA_COLOR_NONE, OBJECT_KIBAKO2, D_06001000);
|
||||
}
|
||||
func_80033480(globalCtx, thisPos, 90.0f, 6, 100, 160, 1);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Obj_Kibako2/ObjKibako2_Draw.s")
|
||||
void ObjKibako2_SpawnCollectible(ObjKibako2* this, GlobalContext* globalCtx) {
|
||||
s16 itemDropped;
|
||||
s16 collectibleFlagTemp;
|
||||
|
||||
collectibleFlagTemp = this->collectibleFlag;
|
||||
itemDropped = this->dyna.actor.initPosRot.rot.x;
|
||||
if (itemDropped >= 0 && itemDropped < 0x1A) {
|
||||
Item_DropCollectible(globalCtx, &this->dyna.actor.posRot.pos, itemDropped | (collectibleFlagTemp << 8));
|
||||
}
|
||||
}
|
||||
|
||||
void ObjKibako2_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ObjKibako2* this = THIS;
|
||||
s16 pad;
|
||||
CollisionHeader* colHeader = NULL;
|
||||
u32 bgId;
|
||||
|
||||
DynaPolyActor_Init(&this->dyna, 0);
|
||||
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
||||
ObjKibako2_InitCollider(thisx, globalCtx);
|
||||
CollisionHeader_GetVirtual(&D_06000B70, &colHeader);
|
||||
bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
|
||||
this->collectibleFlag = this->dyna.actor.initPosRot.rot.z & 0x3F;
|
||||
this->dyna.bgId = bgId;
|
||||
this->actionFunc = ObjKibako2_Idle;
|
||||
this->dyna.actor.initPosRot.rot.z = this->dyna.actor.posRot.rot.z = this->dyna.actor.shape.rot.z =
|
||||
this->dyna.actor.posRot.rot.x = this->dyna.actor.shape.rot.x = 0;
|
||||
// Wooden box (stationary)
|
||||
osSyncPrintf("木箱(据置)(arg %04xH)(item %04xH %d)\n", this->dyna.actor.params, this->collectibleFlag,
|
||||
this->dyna.actor.initPosRot.rot.x);
|
||||
}
|
||||
|
||||
void ObjKibako2_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ObjKibako2* this = THIS;
|
||||
|
||||
Collider_DestroyCylinder(globalCtx, &this->collider);
|
||||
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
||||
}
|
||||
|
||||
void ObjKibako2_Idle(ObjKibako2* this, GlobalContext* globalCtx) {
|
||||
if ((this->collider.base.acFlags & 2) || this->dyna.actor.initPosRot.rot.z != 0 ||
|
||||
func_80033684(globalCtx, &this->dyna.actor) != 0) {
|
||||
ObjKibako2_Break(this, globalCtx);
|
||||
Audio_PlaySoundAtPosition(globalCtx, &this->dyna.actor.posRot.pos, 20, NA_SE_EV_WOODBOX_BREAK);
|
||||
this->dyna.actor.flags |= 0x10;
|
||||
func_8003EBF8(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
||||
this->dyna.actor.draw = NULL;
|
||||
this->actionFunc = ObjKibako2_Kill;
|
||||
return;
|
||||
}
|
||||
if (this->dyna.actor.xzDistToLink < 600.0f) {
|
||||
CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
|
||||
}
|
||||
}
|
||||
|
||||
void ObjKibako2_Kill(ObjKibako2* this, GlobalContext* globalCtx) {
|
||||
s16 params = this->dyna.actor.params;
|
||||
|
||||
if ((params & 0x8000) == 0) {
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_SW, this->dyna.actor.posRot.pos.x,
|
||||
this->dyna.actor.posRot.pos.y, this->dyna.actor.posRot.pos.z, 0, this->dyna.actor.shape.rot.y, 0,
|
||||
params | 0x8000);
|
||||
}
|
||||
ObjKibako2_SpawnCollectible(this, globalCtx);
|
||||
Actor_Kill(&this->dyna.actor);
|
||||
}
|
||||
|
||||
void ObjKibako2_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
ObjKibako2* this = THIS;
|
||||
|
||||
this->actionFunc(this, globalCtx);
|
||||
}
|
||||
|
||||
void ObjKibako2_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
Gfx_DrawDListOpa(globalCtx, D_06000960);
|
||||
}
|
||||
|
|
|
@ -6,9 +6,13 @@
|
|||
|
||||
struct ObjKibako2;
|
||||
|
||||
typedef void (*ObjKibako2ActionFunc)(struct ObjKibako2*, GlobalContext*);
|
||||
|
||||
typedef struct ObjKibako2 {
|
||||
/* 0x0000 */ DynaPolyActor dyna;
|
||||
/* 0x0164 */ char unk_164[0x54];
|
||||
/* 0x0164 */ ColliderCylinder collider;
|
||||
/* 0x01B0 */ ObjKibako2ActionFunc actionFunc;
|
||||
/* 0x01B4 */ s16 collectibleFlag;
|
||||
} ObjKibako2; // size = 0x01B8
|
||||
|
||||
extern const ActorInit Obj_Kibako2_InitVars;
|
||||
|
|
Loading…
Add table
Reference in a new issue