mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-25 09:45:02 +00:00
Bg_Breakwall OK and documented (#684)
* cleanup breakwall * fix mistake in header * make some data static * reloc stuffs * ready for pr * Remove asm * Update src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.c Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> * fix petrie's stuff * fixed all feedback * Update src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.h Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com> Co-authored-by: petrie911 <69443847+petrie911@users.noreply.github.com> Co-authored-by: Roman971 <32455037+Roman971@users.noreply.github.com>
This commit is contained in:
parent
6d01247f34
commit
4d30626033
14 changed files with 275 additions and 910 deletions
|
@ -1,14 +0,0 @@
|
|||
glabel BgBreakwall_Destroy
|
||||
/* 001B0 8086FD90 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 001B4 8086FD94 AFA40018 */ sw $a0, 0x0018($sp)
|
||||
/* 001B8 8086FD98 8FAE0018 */ lw $t6, 0x0018($sp)
|
||||
/* 001BC 8086FD9C AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 001C0 8086FDA0 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
|
||||
/* 001C4 8086FDA4 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810
|
||||
/* 001C8 8086FDA8 0C00FB56 */ jal DynaPoly_DeleteBgActor
|
||||
## DynaPoly_DeleteBgActor
|
||||
/* 001CC 8086FDAC 8DC6014C */ lw $a2, 0x014C($t6) ## 0000014C
|
||||
/* 001D0 8086FDB0 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 001D4 8086FDB4 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 001D8 8086FDB8 03E00008 */ jr $ra
|
||||
/* 001DC 8086FDBC 00000000 */ nop
|
|
@ -1,123 +0,0 @@
|
|||
glabel BgBreakwall_Init
|
||||
/* 00008 8086FBE8 27BDFFC8 */ addiu $sp, $sp, 0xFFC8 ## $sp = FFFFFFC8
|
||||
/* 0000C 8086FBEC AFBF001C */ sw $ra, 0x001C($sp)
|
||||
/* 00010 8086FBF0 AFB00018 */ sw $s0, 0x0018($sp)
|
||||
/* 00014 8086FBF4 AFA5003C */ sw $a1, 0x003C($sp)
|
||||
/* 00018 8086FBF8 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
|
||||
/* 0001C 8086FBFC 3C058087 */ lui $a1, %hi(D_808707E0) ## $a1 = 80870000
|
||||
/* 00020 8086FC00 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 00024 8086FC04 000EC343 */ sra $t8, $t6, 13
|
||||
/* 00028 8086FC08 33190003 */ andi $t9, $t8, 0x0003 ## $t9 = 00000000
|
||||
/* 0002C 8086FC0C AFB9002C */ sw $t9, 0x002C($sp)
|
||||
/* 00030 8086FC10 0C01E037 */ jal Actor_ProcessInitChain
|
||||
|
||||
/* 00034 8086FC14 24A507E0 */ addiu $a1, $a1, %lo(D_808707E0) ## $a1 = 808707E0
|
||||
/* 00038 8086FC18 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 0003C 8086FC1C 0C010D20 */ jal DynaPolyActor_Init
|
||||
|
||||
/* 00040 8086FC20 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
|
||||
/* 00044 8086FC24 8FA8002C */ lw $t0, 0x002C($sp)
|
||||
/* 00048 8086FC28 3C0A8087 */ lui $t2, %hi(D_808707B0) ## $t2 = 80870000
|
||||
/* 0004C 8086FC2C 254A07B0 */ addiu $t2, $t2, %lo(D_808707B0) ## $t2 = 808707B0
|
||||
/* 00050 8086FC30 00084880 */ sll $t1, $t0, 2
|
||||
/* 00054 8086FC34 01284823 */ subu $t1, $t1, $t0
|
||||
/* 00058 8086FC38 00094880 */ sll $t1, $t1, 2
|
||||
/* 0005C 8086FC3C 012A1021 */ addu $v0, $t1, $t2
|
||||
/* 00060 8086FC40 8C4B0004 */ lw $t3, 0x0004($v0) ## 00000004
|
||||
/* 00064 8086FC44 24010001 */ addiu $at, $zero, 0x0001 ## $at = 00000001
|
||||
/* 00068 8086FC48 240E4000 */ addiu $t6, $zero, 0x4000 ## $t6 = 00004000
|
||||
/* 0006C 8086FC4C AE0B0164 */ sw $t3, 0x0164($s0) ## 00000164
|
||||
/* 00070 8086FC50 804C0008 */ lb $t4, 0x0008($v0) ## 00000008
|
||||
/* 00074 8086FC54 A20C0168 */ sb $t4, 0x0168($s0) ## 00000168
|
||||
/* 00078 8086FC58 820D0168 */ lb $t5, 0x0168($s0) ## 00000168
|
||||
/* 0007C 8086FC5C 55A10003 */ bnel $t5, $at, .L8086FC6C
|
||||
/* 00080 8086FC60 8E0F0164 */ lw $t7, 0x0164($s0) ## 00000164
|
||||
/* 00084 8086FC64 A60E0030 */ sh $t6, 0x0030($s0) ## 00000030
|
||||
/* 00088 8086FC68 8E0F0164 */ lw $t7, 0x0164($s0) ## 00000164
|
||||
.L8086FC6C:
|
||||
/* 0008C 8086FC6C 8FA4003C */ lw $a0, 0x003C($sp)
|
||||
/* 00090 8086FC70 3C014220 */ lui $at, 0x4220 ## $at = 42200000
|
||||
/* 00094 8086FC74 51E0001F */ beql $t7, $zero, .L8086FCF4
|
||||
/* 00098 8086FC78 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028
|
||||
/* 0009C 8086FC7C 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
|
||||
/* 000A0 8086FC80 AFA20028 */ sw $v0, 0x0028($sp)
|
||||
/* 000A4 8086FC84 0C00B2D0 */ jal Flags_GetSwitch
|
||||
|
||||
/* 000A8 8086FC88 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000
|
||||
/* 000AC 8086FC8C 50400006 */ beql $v0, $zero, .L8086FCA8
|
||||
/* 000B0 8086FC90 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
|
||||
/* 000B4 8086FC94 0C00B55C */ jal Actor_Kill
|
||||
|
||||
/* 000B8 8086FC98 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 000BC 8086FC9C 10000038 */ beq $zero, $zero, .L8086FD80
|
||||
/* 000C0 8086FCA0 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
/* 000C4 8086FCA4 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
|
||||
.L8086FCA8:
|
||||
/* 000C8 8086FCA8 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4
|
||||
/* 000CC 8086FCAC 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
|
||||
/* 000D0 8086FCB0 44050000 */ mfc1 $a1, $f0
|
||||
/* 000D4 8086FCB4 44070000 */ mfc1 $a3, $f0
|
||||
/* 000D8 8086FCB8 0C00AC78 */ jal ActorShape_Init
|
||||
|
||||
/* 000DC 8086FCBC 00000000 */ nop
|
||||
/* 000E0 8086FCC0 2605016C */ addiu $a1, $s0, 0x016C ## $a1 = 0000016C
|
||||
/* 000E4 8086FCC4 AFA50024 */ sw $a1, 0x0024($sp)
|
||||
/* 000E8 8086FCC8 0C017406 */ jal Collider_InitQuad
|
||||
/* 000EC 8086FCCC 8FA4003C */ lw $a0, 0x003C($sp)
|
||||
/* 000F0 8086FCD0 3C078087 */ lui $a3, %hi(D_80870760) ## $a3 = 80870000
|
||||
/* 000F4 8086FCD4 8FA50024 */ lw $a1, 0x0024($sp)
|
||||
/* 000F8 8086FCD8 24E70760 */ addiu $a3, $a3, %lo(D_80870760) ## $a3 = 80870760
|
||||
/* 000FC 8086FCDC 8FA4003C */ lw $a0, 0x003C($sp)
|
||||
/* 00100 8086FCE0 0C017441 */ jal Collider_SetQuad
|
||||
/* 00104 8086FCE4 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
|
||||
/* 00108 8086FCE8 10000006 */ beq $zero, $zero, .L8086FD04
|
||||
/* 0010C 8086FCEC 8FA20028 */ lw $v0, 0x0028($sp)
|
||||
/* 00110 8086FCF0 C6040028 */ lwc1 $f4, 0x0028($s0) ## 00000028
|
||||
.L8086FCF4:
|
||||
/* 00114 8086FCF4 44813000 */ mtc1 $at, $f6 ## $f6 = 0.00
|
||||
/* 00118 8086FCF8 00000000 */ nop
|
||||
/* 0011C 8086FCFC 46062201 */ sub.s $f8, $f4, $f6
|
||||
/* 00120 8086FD00 E6080028 */ swc1 $f8, 0x0028($s0) ## 00000028
|
||||
.L8086FD04:
|
||||
/* 00124 8086FD04 3C188087 */ lui $t8, %hi(D_808707C8) ## $t8 = 80870000
|
||||
/* 00128 8086FD08 271807C8 */ addiu $t8, $t8, %lo(D_808707C8) ## $t8 = 808707C8
|
||||
/* 0012C 8086FD0C 0058082B */ sltu $at, $v0, $t8
|
||||
/* 00130 8086FD10 14200009 */ bne $at, $zero, .L8086FD38
|
||||
/* 00134 8086FD14 8FA4003C */ lw $a0, 0x003C($sp)
|
||||
/* 00138 8086FD18 8FA4003C */ lw $a0, 0x003C($sp)
|
||||
/* 0013C 8086FD1C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 00140 8086FD20 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
|
||||
/* 00144 8086FD24 24050019 */ addiu $a1, $zero, 0x0019 ## $a1 = 00000019
|
||||
/* 00148 8086FD28 0C02604B */ jal Object_GetIndex
|
||||
## ObjectIndex
|
||||
/* 0014C 8086FD2C 00812021 */ addu $a0, $a0, $at
|
||||
/* 00150 8086FD30 10000007 */ beq $zero, $zero, .L8086FD50
|
||||
/* 00154 8086FD34 A2020169 */ sb $v0, 0x0169($s0) ## 00000169
|
||||
.L8086FD38:
|
||||
/* 00158 8086FD38 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 0015C 8086FD3C 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
|
||||
/* 00160 8086FD40 00812021 */ addu $a0, $a0, $at
|
||||
/* 00164 8086FD44 0C02604B */ jal Object_GetIndex
|
||||
## ObjectIndex
|
||||
/* 00168 8086FD48 2405018A */ addiu $a1, $zero, 0x018A ## $a1 = 0000018A
|
||||
/* 0016C 8086FD4C A2020169 */ sb $v0, 0x0169($s0) ## 00000169
|
||||
.L8086FD50:
|
||||
/* 00170 8086FD50 82190169 */ lb $t9, 0x0169($s0) ## 00000169
|
||||
/* 00174 8086FD54 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00178 8086FD58 3C058087 */ lui $a1, %hi(func_80870290) ## $a1 = 80870000
|
||||
/* 0017C 8086FD5C 07210005 */ bgez $t9, .L8086FD74
|
||||
/* 00180 8086FD60 00000000 */ nop
|
||||
/* 00184 8086FD64 0C00B55C */ jal Actor_Kill
|
||||
|
||||
/* 00188 8086FD68 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 0018C 8086FD6C 10000004 */ beq $zero, $zero, .L8086FD80
|
||||
/* 00190 8086FD70 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
.L8086FD74:
|
||||
/* 00194 8086FD74 0C21BEF8 */ jal BgBreakwall_SetupAction
|
||||
/* 00198 8086FD78 24A50290 */ addiu $a1, $a1, %lo(func_80870290) ## $a1 = 00000290
|
||||
/* 0019C 8086FD7C 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
.L8086FD80:
|
||||
/* 001A0 8086FD80 8FB00018 */ lw $s0, 0x0018($sp)
|
||||
/* 001A4 8086FD84 27BD0038 */ addiu $sp, $sp, 0x0038 ## $sp = 00000000
|
||||
/* 001A8 8086FD88 03E00008 */ jr $ra
|
||||
/* 001AC 8086FD8C 00000000 */ nop
|
|
@ -1,3 +0,0 @@
|
|||
glabel BgBreakwall_SetupAction
|
||||
/* 00000 8086FBE0 03E00008 */ jr $ra
|
||||
/* 00004 8086FBE4 AC8501EC */ sw $a1, 0x01EC($a0) ## 000001EC
|
|
@ -1,10 +0,0 @@
|
|||
glabel BgBreakwall_Update
|
||||
/* 009D4 808705B4 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 009D8 808705B8 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 009DC 808705BC 8C9901EC */ lw $t9, 0x01EC($a0) ## 000001EC
|
||||
/* 009E0 808705C0 0320F809 */ jalr $ra, $t9
|
||||
/* 009E4 808705C4 00000000 */ nop
|
||||
/* 009E8 808705C8 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 009EC 808705CC 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 009F0 808705D0 03E00008 */ jr $ra
|
||||
/* 009F4 808705D4 00000000 */ nop
|
|
@ -1,348 +0,0 @@
|
|||
.late_rodata
|
||||
glabel D_808709AC
|
||||
.float 3500.0
|
||||
|
||||
glabel D_808709B0
|
||||
.float 0.001
|
||||
|
||||
glabel D_808709B4
|
||||
.float 0.6
|
||||
|
||||
glabel D_808709B8
|
||||
.float 3000.0
|
||||
|
||||
.text
|
||||
glabel func_8086FDC0
|
||||
/* 001E0 8086FDC0 27BDFE08 */ addiu $sp, $sp, 0xFE08 ## $sp = FFFFFE08
|
||||
/* 001E4 8086FDC4 3C0F8087 */ lui $t7, %hi(D_808707F0) ## $t7 = 80870000
|
||||
/* 001E8 8086FDC8 AFBF0084 */ sw $ra, 0x0084($sp)
|
||||
/* 001EC 8086FDCC AFBE0080 */ sw $s8, 0x0080($sp)
|
||||
/* 001F0 8086FDD0 AFB7007C */ sw $s7, 0x007C($sp)
|
||||
/* 001F4 8086FDD4 AFB60078 */ sw $s6, 0x0078($sp)
|
||||
/* 001F8 8086FDD8 AFB50074 */ sw $s5, 0x0074($sp)
|
||||
/* 001FC 8086FDDC AFB40070 */ sw $s4, 0x0070($sp)
|
||||
/* 00200 8086FDE0 AFB3006C */ sw $s3, 0x006C($sp)
|
||||
/* 00204 8086FDE4 AFB20068 */ sw $s2, 0x0068($sp)
|
||||
/* 00208 8086FDE8 AFB10064 */ sw $s1, 0x0064($sp)
|
||||
/* 0020C 8086FDEC AFB00060 */ sw $s0, 0x0060($sp)
|
||||
/* 00210 8086FDF0 F7BE0058 */ sdc1 $f30, 0x0058($sp)
|
||||
/* 00214 8086FDF4 F7BC0050 */ sdc1 $f28, 0x0050($sp)
|
||||
/* 00218 8086FDF8 F7BA0048 */ sdc1 $f26, 0x0048($sp)
|
||||
/* 0021C 8086FDFC F7B80040 */ sdc1 $f24, 0x0040($sp)
|
||||
/* 00220 8086FE00 F7B60038 */ sdc1 $f22, 0x0038($sp)
|
||||
/* 00224 8086FE04 F7B40030 */ sdc1 $f20, 0x0030($sp)
|
||||
/* 00228 8086FE08 AFA60200 */ sw $a2, 0x0200($sp)
|
||||
/* 0022C 8086FE0C AFA70204 */ sw $a3, 0x0204($sp)
|
||||
/* 00230 8086FE10 A7A001D8 */ sh $zero, 0x01D8($sp)
|
||||
/* 00234 8086FE14 25EF07F0 */ addiu $t7, $t7, %lo(D_808707F0) ## $t7 = 808707F0
|
||||
/* 00238 8086FE18 8DF90000 */ lw $t9, 0x0000($t7) ## 808707F0
|
||||
/* 0023C 8086FE1C 27AE01CC */ addiu $t6, $sp, 0x01CC ## $t6 = FFFFFFD4
|
||||
/* 00240 8086FE20 8DF80004 */ lw $t8, 0x0004($t7) ## 808707F4
|
||||
/* 00244 8086FE24 ADD90000 */ sw $t9, 0x0000($t6) ## FFFFFFD4
|
||||
/* 00248 8086FE28 8DF90008 */ lw $t9, 0x0008($t7) ## 808707F8
|
||||
/* 0024C 8086FE2C 3C098087 */ lui $t1, %hi(D_808707FC) ## $t1 = 80870000
|
||||
/* 00250 8086FE30 252907FC */ addiu $t1, $t1, %lo(D_808707FC) ## $t1 = 808707FC
|
||||
/* 00254 8086FE34 ADD80004 */ sw $t8, 0x0004($t6) ## FFFFFFD8
|
||||
/* 00258 8086FE38 ADD90008 */ sw $t9, 0x0008($t6) ## FFFFFFDC
|
||||
/* 0025C 8086FE3C 8D2A0004 */ lw $t2, 0x0004($t1) ## 80870800
|
||||
/* 00260 8086FE40 8D2B0000 */ lw $t3, 0x0000($t1) ## 808707FC
|
||||
/* 00264 8086FE44 27A801B4 */ addiu $t0, $sp, 0x01B4 ## $t0 = FFFFFFBC
|
||||
/* 00268 8086FE48 AD0A0004 */ sw $t2, 0x0004($t0) ## FFFFFFC0
|
||||
/* 0026C 8086FE4C AD0B0000 */ sw $t3, 0x0000($t0) ## FFFFFFBC
|
||||
/* 00270 8086FE50 8D2B0008 */ lw $t3, 0x0008($t1) ## 80870804
|
||||
/* 00274 8086FE54 8D2A000C */ lw $t2, 0x000C($t1) ## 80870808
|
||||
/* 00278 8086FE58 3C0D8087 */ lui $t5, %hi(D_80870814) ## $t5 = 80870000
|
||||
/* 0027C 8086FE5C AD0B0008 */ sw $t3, 0x0008($t0) ## FFFFFFC4
|
||||
/* 00280 8086FE60 AD0A000C */ sw $t2, 0x000C($t0) ## FFFFFFC8
|
||||
/* 00284 8086FE64 8D2A0014 */ lw $t2, 0x0014($t1) ## 80870810
|
||||
/* 00288 8086FE68 8D2B0010 */ lw $t3, 0x0010($t1) ## 8087080C
|
||||
/* 0028C 8086FE6C 25AD0814 */ addiu $t5, $t5, %lo(D_80870814) ## $t5 = 80870814
|
||||
/* 00290 8086FE70 0080B825 */ or $s7, $a0, $zero ## $s7 = 00000000
|
||||
/* 00294 8086FE74 25B80030 */ addiu $t8, $t5, 0x0030 ## $t8 = 80870844
|
||||
/* 00298 8086FE78 27AC0184 */ addiu $t4, $sp, 0x0184 ## $t4 = FFFFFF8C
|
||||
/* 0029C 8086FE7C AD0A0014 */ sw $t2, 0x0014($t0) ## FFFFFFD0
|
||||
/* 002A0 8086FE80 AD0B0010 */ sw $t3, 0x0010($t0) ## FFFFFFCC
|
||||
.L8086FE84:
|
||||
/* 002A4 8086FE84 8DAF0000 */ lw $t7, 0x0000($t5) ## 80870814
|
||||
/* 002A8 8086FE88 25AD000C */ addiu $t5, $t5, 0x000C ## $t5 = 80870820
|
||||
/* 002AC 8086FE8C 258C000C */ addiu $t4, $t4, 0x000C ## $t4 = FFFFFF98
|
||||
/* 002B0 8086FE90 AD8FFFF4 */ sw $t7, -0x000C($t4) ## FFFFFF8C
|
||||
/* 002B4 8086FE94 8DAEFFF8 */ lw $t6, -0x0008($t5) ## 80870818
|
||||
/* 002B8 8086FE98 AD8EFFF8 */ sw $t6, -0x0008($t4) ## FFFFFF90
|
||||
/* 002BC 8086FE9C 8DAFFFFC */ lw $t7, -0x0004($t5) ## 8087081C
|
||||
/* 002C0 8086FEA0 15B8FFF8 */ bne $t5, $t8, .L8086FE84
|
||||
/* 002C4 8086FEA4 AD8FFFFC */ sw $t7, -0x0004($t4) ## FFFFFF94
|
||||
/* 002C8 8086FEA8 3C088087 */ lui $t0, %hi(D_80870844) ## $t0 = 80870000
|
||||
/* 002CC 8086FEAC 25080844 */ addiu $t0, $t0, %lo(D_80870844) ## $t0 = 80870844
|
||||
/* 002D0 8086FEB0 250B00C0 */ addiu $t3, $t0, 0x00C0 ## $t3 = 80870904
|
||||
/* 002D4 8086FEB4 27B900C4 */ addiu $t9, $sp, 0x00C4 ## $t9 = FFFFFECC
|
||||
.L8086FEB8:
|
||||
/* 002D8 8086FEB8 8D0A0000 */ lw $t2, 0x0000($t0) ## 80870844
|
||||
/* 002DC 8086FEBC 2508000C */ addiu $t0, $t0, 0x000C ## $t0 = 80870850
|
||||
/* 002E0 8086FEC0 2739000C */ addiu $t9, $t9, 0x000C ## $t9 = FFFFFED8
|
||||
/* 002E4 8086FEC4 AF2AFFF4 */ sw $t2, -0x000C($t9) ## FFFFFECC
|
||||
/* 002E8 8086FEC8 8D09FFF8 */ lw $t1, -0x0008($t0) ## 80870848
|
||||
/* 002EC 8086FECC AF29FFF8 */ sw $t1, -0x0008($t9) ## FFFFFED0
|
||||
/* 002F0 8086FED0 8D0AFFFC */ lw $t2, -0x0004($t0) ## 8087084C
|
||||
/* 002F4 8086FED4 150BFFF8 */ bne $t0, $t3, .L8086FEB8
|
||||
/* 002F8 8086FED8 AF2AFFFC */ sw $t2, -0x0004($t9) ## FFFFFED4
|
||||
/* 002FC 8086FEDC 27A20184 */ addiu $v0, $sp, 0x0184 ## $v0 = FFFFFF8C
|
||||
/* 00300 8086FEE0 00402025 */ or $a0, $v0, $zero ## $a0 = FFFFFF8C
|
||||
/* 00304 8086FEE4 27B201A8 */ addiu $s2, $sp, 0x01A8 ## $s2 = FFFFFFB0
|
||||
/* 00308 8086FEE8 C7A20208 */ lwc1 $f2, 0x0208($sp)
|
||||
/* 0030C 8086FEEC C7A0020C */ lwc1 $f0, 0x020C($sp)
|
||||
/* 00310 8086FEF0 27A301A8 */ addiu $v1, $sp, 0x01A8 ## $v1 = FFFFFFB0
|
||||
.L8086FEF4:
|
||||
/* 00314 8086FEF4 52420004 */ beql $s2, $v0, .L8086FF08
|
||||
/* 00318 8086FEF8 C6440000 */ lwc1 $f4, 0x0000($s2) ## FFFFFFB0
|
||||
/* 0031C 8086FEFC 5643000E */ bnel $s2, $v1, .L8086FF38
|
||||
/* 00320 8086FF00 C6440000 */ lwc1 $f4, 0x0000($s2) ## FFFFFFB0
|
||||
/* 00324 8086FF04 C6440000 */ lwc1 $f4, 0x0000($s2) ## FFFFFFB0
|
||||
.L8086FF08:
|
||||
/* 00328 8086FF08 C6480004 */ lwc1 $f8, 0x0004($s2) ## FFFFFFB4
|
||||
/* 0032C 8086FF0C C6500008 */ lwc1 $f16, 0x0008($s2) ## FFFFFFB8
|
||||
/* 00330 8086FF10 46002182 */ mul.s $f6, $f4, $f0
|
||||
/* 00334 8086FF14 00000000 */ nop
|
||||
/* 00338 8086FF18 46024282 */ mul.s $f10, $f8, $f2
|
||||
/* 0033C 8086FF1C 00000000 */ nop
|
||||
/* 00340 8086FF20 46028482 */ mul.s $f18, $f16, $f2
|
||||
/* 00344 8086FF24 E6460000 */ swc1 $f6, 0x0000($s2) ## FFFFFFB0
|
||||
/* 00348 8086FF28 E64A0004 */ swc1 $f10, 0x0004($s2) ## FFFFFFB4
|
||||
/* 0034C 8086FF2C 1000000C */ beq $zero, $zero, .L8086FF60
|
||||
/* 00350 8086FF30 E6520008 */ swc1 $f18, 0x0008($s2) ## FFFFFFB8
|
||||
/* 00354 8086FF34 C6440000 */ lwc1 $f4, 0x0000($s2) ## FFFFFFB0
|
||||
.L8086FF38:
|
||||
/* 00358 8086FF38 C6480004 */ lwc1 $f8, 0x0004($s2) ## FFFFFFB4
|
||||
/* 0035C 8086FF3C C6500008 */ lwc1 $f16, 0x0008($s2) ## FFFFFFB8
|
||||
/* 00360 8086FF40 46022182 */ mul.s $f6, $f4, $f2
|
||||
/* 00364 8086FF44 00000000 */ nop
|
||||
/* 00368 8086FF48 46004282 */ mul.s $f10, $f8, $f0
|
||||
/* 0036C 8086FF4C 00000000 */ nop
|
||||
/* 00370 8086FF50 46008482 */ mul.s $f18, $f16, $f0
|
||||
/* 00374 8086FF54 E6460000 */ swc1 $f6, 0x0000($s2) ## FFFFFFB0
|
||||
/* 00378 8086FF58 E64A0004 */ swc1 $f10, 0x0004($s2) ## FFFFFFB4
|
||||
/* 0037C 8086FF5C E6520008 */ swc1 $f18, 0x0008($s2) ## FFFFFFB8
|
||||
.L8086FF60:
|
||||
/* 00380 8086FF60 2652FFF4 */ addiu $s2, $s2, 0xFFF4 ## $s2 = FFFFFFA4
|
||||
/* 00384 8086FF64 0244082B */ sltu $at, $s2, $a0
|
||||
/* 00388 8086FF68 1020FFE2 */ beq $at, $zero, .L8086FEF4
|
||||
/* 0038C 8086FF6C 00000000 */ nop
|
||||
/* 00390 8086FF70 8FAD0210 */ lw $t5, 0x0210($sp)
|
||||
/* 00394 8086FF74 AFA001DC */ sw $zero, 0x01DC($sp)
|
||||
/* 00398 8086FF78 26EC1C24 */ addiu $t4, $s7, 0x1C24 ## $t4 = 00001C24
|
||||
/* 0039C 8086FF7C 19A000B1 */ blez $t5, .L80870244
|
||||
/* 003A0 8086FF80 3C018087 */ lui $at, %hi(D_808709AC) ## $at = 80870000
|
||||
/* 003A4 8086FF84 C43C09AC */ lwc1 $f28, %lo(D_808709AC)($at)
|
||||
/* 003A8 8086FF88 3C018087 */ lui $at, %hi(D_808709B0) ## $at = 80870000
|
||||
/* 003AC 8086FF8C C43A09B0 */ lwc1 $f26, %lo(D_808709B0)($at)
|
||||
/* 003B0 8086FF90 3C0141A0 */ lui $at, 0x41A0 ## $at = 41A00000
|
||||
/* 003B4 8086FF94 4481C000 */ mtc1 $at, $f24 ## $f24 = 20.00
|
||||
/* 003B8 8086FF98 AFAC009C */ sw $t4, 0x009C($sp)
|
||||
/* 003BC 8086FF9C AFA501FC */ sw $a1, 0x01FC($sp)
|
||||
/* 003C0 8086FFA0 C7BE0214 */ lwc1 $f30, 0x0214($sp)
|
||||
/* 003C4 8086FFA4 27B501E8 */ addiu $s5, $sp, 0x01E8 ## $s5 = FFFFFFF0
|
||||
.L8086FFA8:
|
||||
/* 003C8 8086FFA8 8FA501FC */ lw $a1, 0x01FC($sp)
|
||||
/* 003CC 8086FFAC 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
|
||||
/* 003D0 8086FFB0 84A20032 */ lh $v0, 0x0032($a1) ## 00000032
|
||||
/* 003D4 8086FFB4 04400003 */ bltz $v0, .L8086FFC4
|
||||
/* 003D8 8086FFB8 00028023 */ subu $s0, $zero, $v0
|
||||
/* 003DC 8086FFBC 10000001 */ beq $zero, $zero, .L8086FFC4
|
||||
/* 003E0 8086FFC0 00408025 */ or $s0, $v0, $zero ## $s0 = FFFFFF8C
|
||||
.L8086FFC4:
|
||||
/* 003E4 8086FFC4 C4AC0024 */ lwc1 $f12, 0x0024($a1) ## 00000024
|
||||
/* 003E8 8086FFC8 C4AE0028 */ lwc1 $f14, 0x0028($a1) ## 00000028
|
||||
/* 003EC 8086FFCC 8CA6002C */ lw $a2, 0x002C($a1) ## 0000002C
|
||||
/* 003F0 8086FFD0 0C034261 */ jal Matrix_Translate
|
||||
/* 003F4 8086FFD4 AFA501FC */ sw $a1, 0x01FC($sp)
|
||||
/* 003F8 8086FFD8 8FA201FC */ lw $v0, 0x01FC($sp)
|
||||
/* 003FC 8086FFDC 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
|
||||
/* 00400 8086FFE0 84440030 */ lh $a0, 0x0030($v0) ## 00000030
|
||||
/* 00404 8086FFE4 84450032 */ lh $a1, 0x0032($v0) ## 00000032
|
||||
/* 00408 8086FFE8 0C034421 */ jal Matrix_RotateRPY
|
||||
/* 0040C 8086FFEC 84460034 */ lh $a2, 0x0034($v0) ## 00000034
|
||||
/* 00410 8086FFF0 8FA20200 */ lw $v0, 0x0200($sp)
|
||||
/* 00414 8086FFF4 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
|
||||
/* 00418 8086FFF8 C44C0000 */ lwc1 $f12, 0x0000($v0) ## 00000000
|
||||
/* 0041C 8086FFFC C44E0004 */ lwc1 $f14, 0x0004($v0) ## 00000004
|
||||
/* 00420 80870000 0C034261 */ jal Matrix_Translate
|
||||
/* 00424 80870004 8C460008 */ lw $a2, 0x0008($v0) ## 00000008
|
||||
/* 00428 80870008 87AE01D8 */ lh $t6, 0x01D8($sp)
|
||||
/* 0042C 8087000C 24030003 */ addiu $v1, $zero, 0x0003 ## $v1 = 00000003
|
||||
/* 00430 80870010 27A60154 */ addiu $a2, $sp, 0x0154 ## $a2 = FFFFFF5C
|
||||
/* 00434 80870014 020EF021 */ addu $s8, $s0, $t6
|
||||
/* 00438 80870018 001EF400 */ sll $s8, $s8, 16
|
||||
/* 0043C 8087001C 001EF403 */ sra $s8, $s8, 16
|
||||
/* 00440 80870020 AFA600A4 */ sw $a2, 0x00A4($sp)
|
||||
/* 00444 80870024 AFA301E0 */ sw $v1, 0x01E0($sp)
|
||||
.L80870028:
|
||||
/* 00448 80870028 8FA301E0 */ lw $v1, 0x01E0($sp)
|
||||
/* 0044C 8087002C 8FA600A4 */ lw $a2, 0x00A4($sp)
|
||||
/* 00450 80870030 24130024 */ addiu $s3, $zero, 0x0024 ## $s3 = 00000024
|
||||
/* 00454 80870034 27B101C6 */ addiu $s1, $sp, 0x01C6 ## $s1 = FFFFFFCE
|
||||
/* 00458 80870038 30760001 */ andi $s6, $v1, 0x0001 ## $s6 = 00000001
|
||||
/* 0045C 8087003C 24D40024 */ addiu $s4, $a2, 0x0024 ## $s4 = FFFFFF80
|
||||
.L80870040:
|
||||
/* 00460 80870040 02802025 */ or $a0, $s4, $zero ## $a0 = FFFFFF80
|
||||
/* 00464 80870044 0C0346BD */ jal Matrix_MultVec3f
|
||||
/* 00468 80870048 02A02825 */ or $a1, $s5, $zero ## $a1 = FFFFFFF0
|
||||
/* 0046C 8087004C 0C00CFC8 */ jal Rand_CenteredFloat
|
||||
|
||||
/* 00470 80870050 4600C306 */ mov.s $f12, $f24
|
||||
/* 00474 80870054 46000506 */ mov.s $f20, $f0
|
||||
/* 00478 80870058 0C00CFC8 */ jal Rand_CenteredFloat
|
||||
|
||||
/* 0047C 8087005C 4600C306 */ mov.s $f12, $f24
|
||||
/* 00480 80870060 46000586 */ mov.s $f22, $f0
|
||||
/* 00484 80870064 0C00CFC8 */ jal Rand_CenteredFloat
|
||||
|
||||
/* 00488 80870068 4600C306 */ mov.s $f12, $f24
|
||||
/* 0048C 8087006C C7A801EC */ lwc1 $f8, 0x01EC($sp)
|
||||
/* 00490 80870070 C7B001F0 */ lwc1 $f16, 0x01F0($sp)
|
||||
/* 00494 80870074 C7A401E8 */ lwc1 $f4, 0x01E8($sp)
|
||||
/* 00498 80870078 4608B280 */ add.s $f10, $f22, $f8
|
||||
/* 0049C 8087007C 2409000B */ addiu $t1, $zero, 0x000B ## $t1 = 0000000B
|
||||
/* 004A0 80870080 8FA4009C */ lw $a0, 0x009C($sp)
|
||||
/* 004A4 80870084 46100480 */ add.s $f18, $f0, $f16
|
||||
/* 004A8 80870088 E7AA0010 */ swc1 $f10, 0x0010($sp)
|
||||
/* 004AC 8087008C 02E02825 */ or $a1, $s7, $zero ## $a1 = 00000000
|
||||
/* 004B0 80870090 4604A180 */ add.s $f6, $f20, $f4
|
||||
/* 004B4 80870094 E7B20014 */ swc1 $f18, 0x0014($sp)
|
||||
/* 004B8 80870098 862F0000 */ lh $t7, 0x0000($s1) ## FFFFFFCE
|
||||
/* 004BC 8087009C 24060039 */ addiu $a2, $zero, 0x0039 ## $a2 = 00000039
|
||||
/* 004C0 808700A0 44073000 */ mfc1 $a3, $f6
|
||||
/* 004C4 808700A4 AFAF0018 */ sw $t7, 0x0018($sp)
|
||||
/* 004C8 808700A8 862B0002 */ lh $t3, 0x0002($s1) ## FFFFFFD0
|
||||
/* 004CC 808700AC 017E4021 */ addu $t0, $t3, $s8
|
||||
/* 004D0 808700B0 AFA8001C */ sw $t0, 0x001C($sp)
|
||||
/* 004D4 808700B4 86390004 */ lh $t9, 0x0004($s1) ## FFFFFFD2
|
||||
/* 004D8 808700B8 AFA90024 */ sw $t1, 0x0024($sp)
|
||||
/* 004DC 808700BC 0C00C7D4 */ jal Actor_Spawn
|
||||
## ActorSpawn
|
||||
/* 004E0 808700C0 AFB90020 */ sw $t9, 0x0020($sp)
|
||||
/* 004E4 808700C4 16C00010 */ bne $s6, $zero, .L80870108
|
||||
/* 004E8 808700C8 00408025 */ or $s0, $v0, $zero ## $s0 = 00000000
|
||||
/* 004EC 808700CC 3C014348 */ lui $at, 0x4348 ## $at = 43480000
|
||||
/* 004F0 808700D0 44813000 */ mtc1 $at, $f6 ## $f6 = 200.00
|
||||
/* 004F4 808700D4 C7A40204 */ lwc1 $f4, 0x0204($sp)
|
||||
/* 004F8 808700D8 240A028A */ addiu $t2, $zero, 0x028A ## $t2 = 0000028A
|
||||
/* 004FC 808700DC 24180096 */ addiu $t8, $zero, 0x0096 ## $t8 = 00000096
|
||||
/* 00500 808700E0 46062202 */ mul.s $f8, $f4, $f6
|
||||
/* 00504 808700E4 240D0001 */ addiu $t5, $zero, 0x0001 ## $t5 = 00000001
|
||||
/* 00508 808700E8 AFAD0018 */ sw $t5, 0x0018($sp)
|
||||
/* 0050C 808700EC AFB80014 */ sw $t8, 0x0014($sp)
|
||||
/* 00510 808700F0 AFAA0010 */ sw $t2, 0x0010($sp)
|
||||
/* 00514 808700F4 02E02025 */ or $a0, $s7, $zero ## $a0 = 00000000
|
||||
/* 00518 808700F8 02A02825 */ or $a1, $s5, $zero ## $a1 = FFFFFFF0
|
||||
/* 0051C 808700FC 44064000 */ mfc1 $a2, $f8
|
||||
/* 00520 80870100 0C00CD20 */ jal func_80033480
|
||||
/* 00524 80870104 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
|
||||
.L80870108:
|
||||
/* 00528 80870108 12000038 */ beq $s0, $zero, .L808701EC
|
||||
/* 0052C 8087010C 3C018087 */ lui $at, %hi(D_808709B4) ## $at = 80870000
|
||||
/* 00530 80870110 C42A09B4 */ lwc1 $f10, %lo(D_808709B4)($at)
|
||||
/* 00534 80870114 27AC0184 */ addiu $t4, $sp, 0x0184 ## $t4 = FFFFFF8C
|
||||
/* 00538 80870118 026C9021 */ addu $s2, $s3, $t4
|
||||
/* 0053C 8087011C 460AF502 */ mul.s $f20, $f30, $f10
|
||||
/* 00540 80870120 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 00544 80870124 00000000 */ nop
|
||||
/* 00548 80870128 46140400 */ add.s $f16, $f0, $f20
|
||||
/* 0054C 8087012C 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 00550 80870130 E6100068 */ swc1 $f16, 0x0068($s0) ## 00000068
|
||||
/* 00554 80870134 46140480 */ add.s $f18, $f0, $f20
|
||||
/* 00558 80870138 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 0055C 8087013C E6120060 */ swc1 $f18, 0x0060($s0) ## 00000060
|
||||
/* 00560 80870140 3C013F00 */ lui $at, 0x3F00 ## $at = 3F000000
|
||||
/* 00564 80870144 44812000 */ mtc1 $at, $f4 ## $f4 = 0.50
|
||||
/* 00568 80870148 3C018087 */ lui $at, %hi(D_808709B8) ## $at = 80870000
|
||||
/* 0056C 8087014C C42809B8 */ lwc1 $f8, %lo(D_808709B8)($at)
|
||||
/* 00570 80870150 46040181 */ sub.s $f6, $f0, $f4
|
||||
/* 00574 80870154 86190032 */ lh $t9, 0x0032($s0) ## 00000032
|
||||
/* 00578 80870158 46083282 */ mul.s $f10, $f6, $f8
|
||||
/* 0057C 8087015C 4600540D */ trunc.w.s $f16, $f10
|
||||
/* 00580 80870160 44088000 */ mfc1 $t0, $f16
|
||||
/* 00584 80870164 00000000 */ nop
|
||||
/* 00588 80870168 03284821 */ addu $t1, $t9, $t0
|
||||
/* 0058C 8087016C 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 00590 80870170 A6090032 */ sh $t1, 0x0032($s0) ## 00000032
|
||||
/* 00594 80870174 461C0482 */ mul.s $f18, $f0, $f28
|
||||
/* 00598 80870178 4600910D */ trunc.w.s $f4, $f18
|
||||
/* 0059C 8087017C 440C2000 */ mfc1 $t4, $f4
|
||||
/* 005A0 80870180 00000000 */ nop
|
||||
/* 005A4 80870184 258E07D0 */ addiu $t6, $t4, 0x07D0 ## $t6 = 000007D0
|
||||
/* 005A8 80870188 0C03F66B */ jal Rand_ZeroOne
|
||||
## Rand.Next() float
|
||||
/* 005AC 8087018C A60E0030 */ sh $t6, 0x0030($s0) ## 00000030
|
||||
/* 005B0 80870190 461C0182 */ mul.s $f6, $f0, $f28
|
||||
/* 005B4 80870194 4600D306 */ mov.s $f12, $f26
|
||||
/* 005B8 80870198 4600320D */ trunc.w.s $f8, $f6
|
||||
/* 005BC 8087019C 44084000 */ mfc1 $t0, $f8
|
||||
/* 005C0 808701A0 00000000 */ nop
|
||||
/* 005C4 808701A4 250907D0 */ addiu $t1, $t0, 0x07D0 ## $t1 = 000007D0
|
||||
/* 005C8 808701A8 A6090034 */ sh $t1, 0x0034($s0) ## 00000034
|
||||
/* 005CC 808701AC 8FAA01FC */ lw $t2, 0x01FC($sp)
|
||||
/* 005D0 808701B0 0C00CFC8 */ jal Rand_CenteredFloat
|
||||
|
||||
/* 005D4 808701B4 AE0A0118 */ sw $t2, 0x0118($s0) ## 00000118
|
||||
/* 005D8 808701B8 C64A0000 */ lwc1 $f10, 0x0000($s2) ## FFFFFFA4
|
||||
/* 005DC 808701BC 4600D306 */ mov.s $f12, $f26
|
||||
/* 005E0 808701C0 460A0400 */ add.s $f16, $f0, $f10
|
||||
/* 005E4 808701C4 0C00CFC8 */ jal Rand_CenteredFloat
|
||||
|
||||
/* 005E8 808701C8 E6100050 */ swc1 $f16, 0x0050($s0) ## 00000050
|
||||
/* 005EC 808701CC C6520004 */ lwc1 $f18, 0x0004($s2) ## FFFFFFA8
|
||||
/* 005F0 808701D0 4600D306 */ mov.s $f12, $f26
|
||||
/* 005F4 808701D4 46120100 */ add.s $f4, $f0, $f18
|
||||
/* 005F8 808701D8 0C00CFC8 */ jal Rand_CenteredFloat
|
||||
|
||||
/* 005FC 808701DC E6040054 */ swc1 $f4, 0x0054($s0) ## 00000054
|
||||
/* 00600 808701E0 C6460008 */ lwc1 $f6, 0x0008($s2) ## FFFFFFAC
|
||||
/* 00604 808701E4 46060200 */ add.s $f8, $f0, $f6
|
||||
/* 00608 808701E8 E6080058 */ swc1 $f8, 0x0058($s0) ## 00000058
|
||||
.L808701EC:
|
||||
/* 0060C 808701EC 2631FFFA */ addiu $s1, $s1, 0xFFFA ## $s1 = FFFFFFC8
|
||||
/* 00610 808701F0 27B801B4 */ addiu $t8, $sp, 0x01B4 ## $t8 = FFFFFFBC
|
||||
/* 00614 808701F4 0238082B */ sltu $at, $s1, $t8
|
||||
/* 00618 808701F8 2673FFF4 */ addiu $s3, $s3, 0xFFF4 ## $s3 = 00000018
|
||||
/* 0061C 808701FC 1020FF90 */ beq $at, $zero, .L80870040
|
||||
/* 00620 80870200 2694FFF4 */ addiu $s4, $s4, 0xFFF4 ## $s4 = FFFFFF74
|
||||
/* 00624 80870204 8FAD01E0 */ lw $t5, 0x01E0($sp)
|
||||
/* 00628 80870208 8FAE00A4 */ lw $t6, 0x00A4($sp)
|
||||
/* 0062C 8087020C 25ACFFFF */ addiu $t4, $t5, 0xFFFF ## $t4 = FFFFFFFF
|
||||
/* 00630 80870210 25CFFFD0 */ addiu $t7, $t6, 0xFFD0 ## $t7 = FFFFFFD0
|
||||
/* 00634 80870214 AFAF00A4 */ sw $t7, 0x00A4($sp)
|
||||
/* 00638 80870218 0581FF83 */ bgez $t4, .L80870028
|
||||
/* 0063C 8087021C AFAC01E0 */ sw $t4, 0x01E0($sp)
|
||||
/* 00640 80870220 87AB01D8 */ lh $t3, 0x01D8($sp)
|
||||
/* 00644 80870224 8FA201DC */ lw $v0, 0x01DC($sp)
|
||||
/* 00648 80870228 8FA80210 */ lw $t0, 0x0210($sp)
|
||||
/* 0064C 8087022C 25794000 */ addiu $t9, $t3, 0x4000 ## $t9 = 00004000
|
||||
/* 00650 80870230 24420001 */ addiu $v0, $v0, 0x0001 ## $v0 = 00000001
|
||||
/* 00654 80870234 AFA201DC */ sw $v0, 0x01DC($sp)
|
||||
/* 00658 80870238 1448FF5B */ bne $v0, $t0, .L8086FFA8
|
||||
/* 0065C 8087023C A7B901D8 */ sh $t9, 0x01D8($sp)
|
||||
/* 00660 80870240 AFB001F4 */ sw $s0, 0x01F4($sp)
|
||||
.L80870244:
|
||||
/* 00664 80870244 8FBF0084 */ lw $ra, 0x0084($sp)
|
||||
/* 00668 80870248 8FA201F4 */ lw $v0, 0x01F4($sp)
|
||||
/* 0066C 8087024C D7B40030 */ ldc1 $f20, 0x0030($sp)
|
||||
/* 00670 80870250 D7B60038 */ ldc1 $f22, 0x0038($sp)
|
||||
/* 00674 80870254 D7B80040 */ ldc1 $f24, 0x0040($sp)
|
||||
/* 00678 80870258 D7BA0048 */ ldc1 $f26, 0x0048($sp)
|
||||
/* 0067C 8087025C D7BC0050 */ ldc1 $f28, 0x0050($sp)
|
||||
/* 00680 80870260 D7BE0058 */ ldc1 $f30, 0x0058($sp)
|
||||
/* 00684 80870264 8FB00060 */ lw $s0, 0x0060($sp)
|
||||
/* 00688 80870268 8FB10064 */ lw $s1, 0x0064($sp)
|
||||
/* 0068C 8087026C 8FB20068 */ lw $s2, 0x0068($sp)
|
||||
/* 00690 80870270 8FB3006C */ lw $s3, 0x006C($sp)
|
||||
/* 00694 80870274 8FB40070 */ lw $s4, 0x0070($sp)
|
||||
/* 00698 80870278 8FB50074 */ lw $s5, 0x0074($sp)
|
||||
/* 0069C 8087027C 8FB60078 */ lw $s6, 0x0078($sp)
|
||||
/* 006A0 80870280 8FB7007C */ lw $s7, 0x007C($sp)
|
||||
/* 006A4 80870284 8FBE0080 */ lw $s8, 0x0080($sp)
|
||||
/* 006A8 80870288 03E00008 */ jr $ra
|
||||
/* 006AC 8087028C 27BD01F8 */ addiu $sp, $sp, 0x01F8 ## $sp = 00000000
|
|
@ -1,72 +0,0 @@
|
|||
glabel func_80870290
|
||||
/* 006B0 80870290 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
|
||||
/* 006B4 80870294 AFB00018 */ sw $s0, 0x0018($sp)
|
||||
/* 006B8 80870298 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 006BC 8087029C 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 006C0 808702A0 342117A4 */ ori $at, $at, 0x17A4 ## $at = 000117A4
|
||||
/* 006C4 808702A4 AFBF001C */ sw $ra, 0x001C($sp)
|
||||
/* 006C8 808702A8 AFA50034 */ sw $a1, 0x0034($sp)
|
||||
/* 006CC 808702AC 00A12021 */ addu $a0, $a1, $at
|
||||
/* 006D0 808702B0 0C026062 */ jal Object_IsLoaded
|
||||
|
||||
/* 006D4 808702B4 82050169 */ lb $a1, 0x0169($s0) ## 00000169
|
||||
/* 006D8 808702B8 50400032 */ beql $v0, $zero, .L80870384
|
||||
/* 006DC 808702BC 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
/* 006E0 808702C0 AFA0002C */ sw $zero, 0x002C($sp)
|
||||
/* 006E4 808702C4 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
|
||||
/* 006E8 808702C8 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
|
||||
/* 006EC 808702CC 000EC343 */ sra $t8, $t6, 13
|
||||
/* 006F0 808702D0 33190003 */ andi $t9, $t8, 0x0003 ## $t9 = 00000000
|
||||
/* 006F4 808702D4 AFB90028 */ sw $t9, 0x0028($sp)
|
||||
/* 006F8 808702D8 82080169 */ lb $t0, 0x0169($s0) ## 00000169
|
||||
/* 006FC 808702DC A208001E */ sb $t0, 0x001E($s0) ## 0000001E
|
||||
/* 00700 808702E0 0C00B591 */ jal Actor_SetObjectDependency
|
||||
|
||||
/* 00704 808702E4 8FA40034 */ lw $a0, 0x0034($sp)
|
||||
/* 00708 808702E8 8E090004 */ lw $t1, 0x0004($s0) ## 00000004
|
||||
/* 0070C 808702EC 2401FFEF */ addiu $at, $zero, 0xFFEF ## $at = FFFFFFEF
|
||||
/* 00710 808702F0 3C0B8087 */ lui $t3, %hi(func_808705D8) ## $t3 = 80870000
|
||||
/* 00714 808702F4 256B05D8 */ addiu $t3, $t3, %lo(func_808705D8) ## $t3 = 808705D8
|
||||
/* 00718 808702F8 01215024 */ and $t2, $t1, $at
|
||||
/* 0071C 808702FC AE0A0004 */ sw $t2, 0x0004($s0) ## 00000004
|
||||
/* 00720 80870300 AE0B0134 */ sw $t3, 0x0134($s0) ## 00000134
|
||||
/* 00724 80870304 8FAC0028 */ lw $t4, 0x0028($sp)
|
||||
/* 00728 80870308 3C0E8087 */ lui $t6, %hi(D_808707B0) ## $t6 = 80870000
|
||||
/* 0072C 8087030C 25CE07B0 */ addiu $t6, $t6, %lo(D_808707B0) ## $t6 = 808707B0
|
||||
/* 00730 80870310 000C6880 */ sll $t5, $t4, 2
|
||||
/* 00734 80870314 01AC6823 */ subu $t5, $t5, $t4
|
||||
/* 00738 80870318 000D6880 */ sll $t5, $t5, 2
|
||||
/* 0073C 8087031C 01AE1021 */ addu $v0, $t5, $t6
|
||||
/* 00740 80870320 8C440000 */ lw $a0, 0x0000($v0) ## 00000000
|
||||
/* 00744 80870324 AFA20024 */ sw $v0, 0x0024($sp)
|
||||
/* 00748 80870328 0C010620 */ jal CollisionHeader_GetVirtual
|
||||
|
||||
/* 0074C 8087032C 27A5002C */ addiu $a1, $sp, 0x002C ## $a1 = FFFFFFFC
|
||||
/* 00750 80870330 8FA40034 */ lw $a0, 0x0034($sp)
|
||||
/* 00754 80870334 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
|
||||
/* 00758 80870338 8FA7002C */ lw $a3, 0x002C($sp)
|
||||
/* 0075C 8087033C 0C00FA9D */ jal DynaPoly_SetBgActor
|
||||
## DynaPoly_SetBgActor
|
||||
/* 00760 80870340 24850810 */ addiu $a1, $a0, 0x0810 ## $a1 = 00000810
|
||||
/* 00764 80870344 AE02014C */ sw $v0, 0x014C($s0) ## 0000014C
|
||||
/* 00768 80870348 8FB80024 */ lw $t8, 0x0024($sp)
|
||||
/* 0076C 8087034C 3C198087 */ lui $t9, %hi(D_808707D4) ## $t9 = 80870000
|
||||
/* 00770 80870350 273907D4 */ addiu $t9, $t9, %lo(D_808707D4) ## $t9 = 808707D4
|
||||
/* 00774 80870354 17190007 */ bne $t8, $t9, .L80870374
|
||||
/* 00778 80870358 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 0077C 8087035C 3C058087 */ lui $a1, %hi(func_80870564) ## $a1 = 80870000
|
||||
/* 00780 80870360 24A50564 */ addiu $a1, $a1, %lo(func_80870564) ## $a1 = 80870564
|
||||
/* 00784 80870364 0C21BEF8 */ jal BgBreakwall_SetupAction
|
||||
/* 00788 80870368 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 0078C 8087036C 10000005 */ beq $zero, $zero, .L80870384
|
||||
/* 00790 80870370 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
.L80870374:
|
||||
/* 00794 80870374 3C058087 */ lui $a1, %hi(func_80870394) ## $a1 = 80870000
|
||||
/* 00798 80870378 0C21BEF8 */ jal BgBreakwall_SetupAction
|
||||
/* 0079C 8087037C 24A50394 */ addiu $a1, $a1, %lo(func_80870394) ## $a1 = 80870394
|
||||
/* 007A0 80870380 8FBF001C */ lw $ra, 0x001C($sp)
|
||||
.L80870384:
|
||||
/* 007A4 80870384 8FB00018 */ lw $s0, 0x0018($sp)
|
||||
/* 007A8 80870388 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000
|
||||
/* 007AC 8087038C 03E00008 */ jr $ra
|
||||
/* 007B0 80870390 00000000 */ nop
|
|
@ -1,139 +0,0 @@
|
|||
.late_rodata
|
||||
glabel D_808709BC
|
||||
.float 6.400000095367432
|
||||
|
||||
.text
|
||||
glabel func_80870394
|
||||
/* 007B4 80870394 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
|
||||
/* 007B8 80870398 AFBF002C */ sw $ra, 0x002C($sp)
|
||||
/* 007BC 8087039C AFB00028 */ sw $s0, 0x0028($sp)
|
||||
/* 007C0 808703A0 908E017D */ lbu $t6, 0x017D($a0) ## 0000017D
|
||||
/* 007C4 808703A4 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
|
||||
/* 007C8 808703A8 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000
|
||||
/* 007CC 808703AC 31CF0002 */ andi $t7, $t6, 0x0002 ## $t7 = 00000000
|
||||
/* 007D0 808703B0 51E00068 */ beql $t7, $zero, .L80870554
|
||||
/* 007D4 808703B4 8FBF002C */ lw $ra, 0x002C($sp)
|
||||
/* 007D8 808703B8 8498001C */ lh $t8, 0x001C($a0) ## 0000001C
|
||||
/* 007DC 808703BC 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
|
||||
/* 007E0 808703C0 24A50810 */ addiu $a1, $a1, 0x0810 ## $a1 = 00000810
|
||||
/* 007E4 808703C4 00184343 */ sra $t0, $t8, 13
|
||||
/* 007E8 808703C8 31090003 */ andi $t1, $t0, 0x0003 ## $t1 = 00000000
|
||||
/* 007EC 808703CC AFA90030 */ sw $t1, 0x0030($sp)
|
||||
/* 007F0 808703D0 8E06014C */ lw $a2, 0x014C($s0) ## 0000014C
|
||||
/* 007F4 808703D4 0C00FB56 */ jal DynaPoly_DeleteBgActor
|
||||
## DynaPoly_DeleteBgActor
|
||||
/* 007F8 808703D8 AFA70044 */ sw $a3, 0x0044($sp)
|
||||
/* 007FC 808703DC 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
|
||||
/* 00800 808703E0 3C0141C8 */ lui $at, 0x41C8 ## $at = 41C80000
|
||||
/* 00804 808703E4 02002825 */ or $a1, $s0, $zero ## $a1 = 00000000
|
||||
/* 00808 808703E8 E7A00034 */ swc1 $f0, 0x0034($sp)
|
||||
/* 0080C 808703EC E7A0003C */ swc1 $f0, 0x003C($sp)
|
||||
/* 00810 808703F0 E7A00038 */ swc1 $f0, 0x0038($sp)
|
||||
/* 00814 808703F4 860A0030 */ lh $t2, 0x0030($s0) ## 00000030
|
||||
/* 00818 808703F8 44070000 */ mfc1 $a3, $f0
|
||||
/* 0081C 808703FC 27A60034 */ addiu $a2, $sp, 0x0034 ## $a2 = FFFFFFF4
|
||||
/* 00820 80870400 15400005 */ bne $t2, $zero, .L80870418
|
||||
/* 00824 80870404 240B0001 */ addiu $t3, $zero, 0x0001 ## $t3 = 00000001
|
||||
/* 00828 80870408 3C01425C */ lui $at, 0x425C ## $at = 425C0000
|
||||
/* 0082C 8087040C 44812000 */ mtc1 $at, $f4 ## $f4 = 55.00
|
||||
/* 00830 80870410 10000006 */ beq $zero, $zero, .L8087042C
|
||||
/* 00834 80870414 E7A40038 */ swc1 $f4, 0x0038($sp)
|
||||
.L80870418:
|
||||
/* 00838 80870418 44813000 */ mtc1 $at, $f6 ## $f6 = 55.00
|
||||
/* 0083C 8087041C 3C01C120 */ lui $at, 0xC120 ## $at = C1200000
|
||||
/* 00840 80870420 44814000 */ mtc1 $at, $f8 ## $f8 = -10.00
|
||||
/* 00844 80870424 E7A6003C */ swc1 $f6, 0x003C($sp)
|
||||
/* 00848 80870428 E7A80038 */ swc1 $f8, 0x0038($sp)
|
||||
.L8087042C:
|
||||
/* 0084C 8087042C 3C018087 */ lui $at, %hi(D_808709BC) ## $at = 80870000
|
||||
/* 00850 80870430 C42A09BC */ lwc1 $f10, %lo(D_808709BC)($at)
|
||||
/* 00854 80870434 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
|
||||
/* 00858 80870438 44818000 */ mtc1 $at, $f16 ## $f16 = 5.00
|
||||
/* 0085C 8087043C 3C014000 */ lui $at, 0x4000 ## $at = 40000000
|
||||
/* 00860 80870440 44819000 */ mtc1 $at, $f18 ## $f18 = 2.00
|
||||
/* 00864 80870444 8FA40044 */ lw $a0, 0x0044($sp)
|
||||
/* 00868 80870448 AFAB0018 */ sw $t3, 0x0018($sp)
|
||||
/* 0086C 8087044C E7AA0010 */ swc1 $f10, 0x0010($sp)
|
||||
/* 00870 80870450 E7B00014 */ swc1 $f16, 0x0014($sp)
|
||||
/* 00874 80870454 0C21BF70 */ jal func_8086FDC0
|
||||
/* 00878 80870458 E7B2001C */ swc1 $f18, 0x001C($sp)
|
||||
/* 0087C 8087045C 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
|
||||
/* 00880 80870460 8FA40044 */ lw $a0, 0x0044($sp)
|
||||
/* 00884 80870464 0C00B2DD */ jal Flags_SetSwitch
|
||||
|
||||
/* 00888 80870468 30A5003F */ andi $a1, $a1, 0x003F ## $a1 = 00000000
|
||||
/* 0088C 8087046C 8FAC0030 */ lw $t4, 0x0030($sp)
|
||||
/* 00890 80870470 24010002 */ addiu $at, $zero, 0x0002 ## $at = 00000002
|
||||
/* 00894 80870474 24052802 */ addiu $a1, $zero, 0x2802 ## $a1 = 00002802
|
||||
/* 00898 80870478 15810005 */ bne $t4, $at, .L80870490
|
||||
/* 0089C 8087047C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 008A0 80870480 0C00BE0A */ jal Audio_PlayActorSound2
|
||||
|
||||
/* 008A4 80870484 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 008A8 80870488 10000004 */ beq $zero, $zero, .L8087049C
|
||||
/* 008AC 8087048C 8FAD0030 */ lw $t5, 0x0030($sp)
|
||||
.L80870490:
|
||||
/* 008B0 80870490 0C00BE0A */ jal Audio_PlayActorSound2
|
||||
|
||||
/* 008B4 80870494 24052810 */ addiu $a1, $zero, 0x2810 ## $a1 = 00002810
|
||||
/* 008B8 80870498 8FAD0030 */ lw $t5, 0x0030($sp)
|
||||
.L8087049C:
|
||||
/* 008BC 8087049C 55A0001E */ bnel $t5, $zero, .L80870518
|
||||
/* 008C0 808704A0 8618001C */ lh $t8, 0x001C($s0) ## 0000001C
|
||||
/* 008C4 808704A4 0C00D6D3 */ jal Flags_GetEventChkInf
|
||||
|
||||
/* 008C8 808704A8 240400B0 */ addiu $a0, $zero, 0x00B0 ## $a0 = 000000B0
|
||||
/* 008CC 808704AC 5440001A */ bnel $v0, $zero, .L80870518
|
||||
/* 008D0 808704B0 8618001C */ lh $t8, 0x001C($s0) ## 0000001C
|
||||
/* 008D4 808704B4 0C00D6DD */ jal Flags_SetEventChkInf
|
||||
|
||||
/* 008D8 808704B8 240400B0 */ addiu $a0, $zero, 0x00B0 ## $a0 = 000000B0
|
||||
/* 008DC 808704BC 3C050201 */ lui $a1, %hi(D_02014F80) ## $a1 = 02010000
|
||||
/* 008E0 808704C0 24A54F80 */ addiu $a1, $a1, %lo(D_02014F80) ## $a1 = 02014F80
|
||||
/* 008E4 808704C4 0C01A4F6 */ jal Cutscene_SetSegment
|
||||
|
||||
/* 008E8 808704C8 8FA40044 */ lw $a0, 0x0044($sp)
|
||||
/* 008EC 808704CC 3C078013 */ lui $a3, %hi(D_801333E0)
|
||||
/* 008F0 808704D0 3C0F8013 */ lui $t7, %hi(D_801333E8)
|
||||
/* 008F4 808704D4 24E733E0 */ addiu $a3, %lo(D_801333E0)
|
||||
/* 008F8 808704D8 240E0001 */ addiu $t6, $zero, 0x0001 ## $t6 = 00000001
|
||||
/* 008FC 808704DC 3C018016 */ lui $at, %hi(gSaveContext+0x1414)
|
||||
/* 00900 808704E0 25EF33E8 */ addiu $t7, %lo(D_801333E8)
|
||||
/* 00904 808704E4 3C058013 */ lui $a1, %hi(D_801333D4)
|
||||
/* 00908 808704E8 A02EFA74 */ sb $t6, %lo(gSaveContext+0x1414)($at)
|
||||
/* 0090C 808704EC 24A533D4 */ addiu $a1, %lo(D_801333D4)
|
||||
/* 00910 808704F0 AFAF0014 */ sw $t7, 0x0014($sp)
|
||||
/* 00914 808704F4 AFA70010 */ sw $a3, 0x0010($sp)
|
||||
/* 00918 808704F8 24044802 */ addiu $a0, $zero, 0x4802 ## $a0 = 00004802
|
||||
/* 0091C 808704FC 0C03DCE3 */ jal Audio_PlaySoundGeneral
|
||||
|
||||
/* 00920 80870500 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
|
||||
/* 00924 80870504 8FA40044 */ lw $a0, 0x0044($sp)
|
||||
/* 00928 80870508 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
|
||||
/* 0092C 8087050C 0C00B7D5 */ jal func_8002DF54
|
||||
/* 00930 80870510 24060031 */ addiu $a2, $zero, 0x0031 ## $a2 = 00000031
|
||||
/* 00934 80870514 8618001C */ lh $t8, 0x001C($s0) ## 0000001C
|
||||
.L80870518:
|
||||
/* 00938 80870518 3C058013 */ lui $a1, %hi(D_801333D4)
|
||||
/* 0093C 8087051C 24A533D4 */ addiu $a1, %lo(D_801333D4)
|
||||
/* 00940 80870520 07010009 */ bgez $t8, .L80870548
|
||||
/* 00944 80870524 24044807 */ addiu $a0, $zero, 0x4807 ## $a0 = 00004807
|
||||
/* 00948 80870528 3C198013 */ lui $t9, %hi(D_801333E0)
|
||||
/* 0094C 8087052C 3C088013 */ lui $t0, %hi(D_801333E8)
|
||||
/* 00950 80870530 250833E8 */ addiu $t0, %lo(D_801333E8)
|
||||
/* 00954 80870534 272733E0 */ addiu $a3, $t9, %lo(D_801333E0)
|
||||
/* 00958 80870538 AFA70010 */ sw $a3, 0x0010($sp)
|
||||
/* 0095C 8087053C AFA80014 */ sw $t0, 0x0014($sp)
|
||||
/* 00960 80870540 0C03DCE3 */ jal Audio_PlaySoundGeneral
|
||||
|
||||
/* 00964 80870544 24060004 */ addiu $a2, $zero, 0x0004 ## $a2 = 00000004
|
||||
.L80870548:
|
||||
/* 00968 80870548 0C00B55C */ jal Actor_Kill
|
||||
|
||||
/* 0096C 8087054C 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
/* 00970 80870550 8FBF002C */ lw $ra, 0x002C($sp)
|
||||
.L80870554:
|
||||
/* 00974 80870554 8FB00028 */ lw $s0, 0x0028($sp)
|
||||
/* 00978 80870558 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000
|
||||
/* 0097C 8087055C 03E00008 */ jr $ra
|
||||
/* 00980 80870560 00000000 */ nop
|
|
@ -1,22 +0,0 @@
|
|||
glabel func_80870564
|
||||
/* 00984 80870564 3C0E8016 */ lui $t6, %hi(gGameInfo)
|
||||
/* 00988 80870568 8DCEFA90 */ lw $t6, %lo(gGameInfo)($t6)
|
||||
/* 0098C 8087056C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
|
||||
/* 00990 80870570 AFBF0014 */ sw $ra, 0x0014($sp)
|
||||
/* 00994 80870574 AFA5001C */ sw $a1, 0x001C($sp)
|
||||
/* 00998 80870578 85CF0A74 */ lh $t7, 0x0A74($t6) ## 80160A74
|
||||
/* 0099C 8087057C 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
|
||||
/* 009A0 80870580 C4E8000C */ lwc1 $f8, 0x000C($a3) ## 0000000C
|
||||
/* 009A4 80870584 448F2000 */ mtc1 $t7, $f4 ## $f4 = 0.00
|
||||
/* 009A8 80870588 24840028 */ addiu $a0, $a0, 0x0028 ## $a0 = 00000028
|
||||
/* 009AC 8087058C 3C063F80 */ lui $a2, 0x3F80 ## $a2 = 3F800000
|
||||
/* 009B0 80870590 468021A0 */ cvt.s.w $f6, $f4
|
||||
/* 009B4 80870594 46083280 */ add.s $f10, $f6, $f8
|
||||
/* 009B8 80870598 44055000 */ mfc1 $a1, $f10
|
||||
/* 009BC 8087059C 0C01DE80 */ jal Math_StepToF
|
||||
|
||||
/* 009C0 808705A0 00000000 */ nop
|
||||
/* 009C4 808705A4 8FBF0014 */ lw $ra, 0x0014($sp)
|
||||
/* 009C8 808705A8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
|
||||
/* 009CC 808705AC 03E00008 */ jr $ra
|
||||
/* 009D0 808705B0 00000000 */ nop
|
|
@ -1,109 +0,0 @@
|
|||
.rdata
|
||||
glabel D_80870970
|
||||
.asciz "../z_bg_breakwall.c"
|
||||
.balign 4
|
||||
|
||||
glabel D_80870984
|
||||
.asciz "../z_bg_breakwall.c"
|
||||
.balign 4
|
||||
|
||||
glabel D_80870998
|
||||
.asciz "../z_bg_breakwall.c"
|
||||
.balign 4
|
||||
|
||||
.text
|
||||
glabel func_808705D8
|
||||
/* 009F8 808705D8 27BDFF60 */ addiu $sp, $sp, 0xFF60 ## $sp = FFFFFF60
|
||||
/* 009FC 808705DC AFBF0034 */ sw $ra, 0x0034($sp)
|
||||
/* 00A00 808705E0 AFB50030 */ sw $s5, 0x0030($sp)
|
||||
/* 00A04 808705E4 AFB4002C */ sw $s4, 0x002C($sp)
|
||||
/* 00A08 808705E8 AFB30028 */ sw $s3, 0x0028($sp)
|
||||
/* 00A0C 808705EC AFB20024 */ sw $s2, 0x0024($sp)
|
||||
/* 00A10 808705F0 AFB10020 */ sw $s1, 0x0020($sp)
|
||||
/* 00A14 808705F4 AFB0001C */ sw $s0, 0x001C($sp)
|
||||
/* 00A18 808705F8 8C8E0164 */ lw $t6, 0x0164($a0) ## 00000164
|
||||
/* 00A1C 808705FC 0080A025 */ or $s4, $a0, $zero ## $s4 = 00000000
|
||||
/* 00A20 80870600 00A0A825 */ or $s5, $a1, $zero ## $s5 = 00000000
|
||||
/* 00A24 80870604 11C00044 */ beq $t6, $zero, .L80870718
|
||||
/* 00A28 80870608 27A40084 */ addiu $a0, $sp, 0x0084 ## $a0 = FFFFFFE4
|
||||
/* 00A2C 8087060C 8CA50000 */ lw $a1, 0x0000($a1) ## 00000000
|
||||
/* 00A30 80870610 3C068087 */ lui $a2, %hi(D_80870970) ## $a2 = 80870000
|
||||
/* 00A34 80870614 24C60970 */ addiu $a2, $a2, %lo(D_80870970) ## $a2 = 80870970
|
||||
/* 00A38 80870618 240702FF */ addiu $a3, $zero, 0x02FF ## $a3 = 000002FF
|
||||
/* 00A3C 8087061C 0C031AB1 */ jal Graph_OpenDisps
|
||||
/* 00A40 80870620 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
|
||||
/* 00A44 80870624 0C024F46 */ jal func_80093D18
|
||||
/* 00A48 80870628 8EA40000 */ lw $a0, 0x0000($s5) ## 00000000
|
||||
/* 00A4C 8087062C 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0
|
||||
/* 00A50 80870630 3C18DA38 */ lui $t8, 0xDA38 ## $t8 = DA380000
|
||||
/* 00A54 80870634 37180003 */ ori $t8, $t8, 0x0003 ## $t8 = DA380003
|
||||
/* 00A58 80870638 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008
|
||||
/* 00A5C 8087063C AE0F02C0 */ sw $t7, 0x02C0($s0) ## 000002C0
|
||||
/* 00A60 80870640 3C058087 */ lui $a1, %hi(D_80870984) ## $a1 = 80870000
|
||||
/* 00A64 80870644 AC580000 */ sw $t8, 0x0000($v0) ## 00000000
|
||||
/* 00A68 80870648 8EA40000 */ lw $a0, 0x0000($s5) ## 00000000
|
||||
/* 00A6C 8087064C 24A50984 */ addiu $a1, $a1, %lo(D_80870984) ## $a1 = 80870984
|
||||
/* 00A70 80870650 24060303 */ addiu $a2, $zero, 0x0303 ## $a2 = 00000303
|
||||
/* 00A74 80870654 0C0346A2 */ jal Matrix_NewMtx
|
||||
/* 00A78 80870658 00408825 */ or $s1, $v0, $zero ## $s1 = 00000000
|
||||
/* 00A7C 8087065C AE220004 */ sw $v0, 0x0004($s1) ## 00000004
|
||||
/* 00A80 80870660 8E0202C0 */ lw $v0, 0x02C0($s0) ## 000002C0
|
||||
/* 00A84 80870664 3C08DE00 */ lui $t0, 0xDE00 ## $t0 = DE000000
|
||||
/* 00A88 80870668 3C0B8087 */ lui $t3, %hi(D_80870904) ## $t3 = 80870000
|
||||
/* 00A8C 8087066C 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
|
||||
/* 00A90 80870670 AE1902C0 */ sw $t9, 0x02C0($s0) ## 000002C0
|
||||
/* 00A94 80870674 AC480000 */ sw $t0, 0x0000($v0) ## 00000000
|
||||
/* 00A98 80870678 8E890164 */ lw $t1, 0x0164($s4) ## 00000164
|
||||
/* 00A9C 8087067C 256B0904 */ addiu $t3, $t3, %lo(D_80870904) ## $t3 = 80870904
|
||||
/* 00AA0 80870680 27B1004C */ addiu $s1, $sp, 0x004C ## $s1 = FFFFFFAC
|
||||
/* 00AA4 80870684 AC490004 */ sw $t1, 0x0004($v0) ## 00000004
|
||||
/* 00AA8 80870688 82820168 */ lb $v0, 0x0168($s4) ## 00000168
|
||||
/* 00AAC 8087068C 00009025 */ or $s2, $zero, $zero ## $s2 = 00000000
|
||||
/* 00AB0 80870690 24130004 */ addiu $s3, $zero, 0x0004 ## $s3 = 00000004
|
||||
/* 00AB4 80870694 0440001A */ bltz $v0, .L80870700
|
||||
/* 00AB8 80870698 00025080 */ sll $t2, $v0, 2
|
||||
/* 00ABC 8087069C 01425023 */ subu $t2, $t2, $v0
|
||||
/* 00AC0 808706A0 000A5100 */ sll $t2, $t2, 4
|
||||
/* 00AC4 808706A4 014B8021 */ addu $s0, $t2, $t3
|
||||
/* 00AC8 808706A8 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
|
||||
.L808706AC:
|
||||
/* 00ACC 808706AC 02202825 */ or $a1, $s1, $zero ## $a1 = FFFFFFAC
|
||||
/* 00AD0 808706B0 2631000C */ addiu $s1, $s1, 0x000C ## $s1 = FFFFFFB8
|
||||
/* 00AD4 808706B4 0C0346BD */ jal Matrix_MultVec3f
|
||||
/* 00AD8 808706B8 2610000C */ addiu $s0, $s0, 0x000C ## $s0 = 0000000C
|
||||
/* 00ADC 808706BC 26520001 */ addiu $s2, $s2, 0x0001 ## $s2 = 00000001
|
||||
/* 00AE0 808706C0 5653FFFA */ bnel $s2, $s3, .L808706AC
|
||||
/* 00AE4 808706C4 02002025 */ or $a0, $s0, $zero ## $a0 = 0000000C
|
||||
/* 00AE8 808706C8 2690016C */ addiu $s0, $s4, 0x016C ## $s0 = 0000016C
|
||||
/* 00AEC 808706CC 27AC0070 */ addiu $t4, $sp, 0x0070 ## $t4 = FFFFFFD0
|
||||
/* 00AF0 808706D0 AFAC0010 */ sw $t4, 0x0010($sp)
|
||||
/* 00AF4 808706D4 02002025 */ or $a0, $s0, $zero ## $a0 = 0000016C
|
||||
/* 00AF8 808706D8 27A5004C */ addiu $a1, $sp, 0x004C ## $a1 = FFFFFFAC
|
||||
/* 00AFC 808706DC 27A60058 */ addiu $a2, $sp, 0x0058 ## $a2 = FFFFFFB8
|
||||
/* 00B00 808706E0 0C0189CD */ jal Collider_SetQuadVertices
|
||||
/* 00B04 808706E4 27A70064 */ addiu $a3, $sp, 0x0064 ## $a3 = FFFFFFC4
|
||||
/* 00B08 808706E8 3C010001 */ lui $at, 0x0001 ## $at = 00010000
|
||||
/* 00B0C 808706EC 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
|
||||
/* 00B10 808706F0 02A12821 */ addu $a1, $s5, $at
|
||||
/* 00B14 808706F4 02A02025 */ or $a0, $s5, $zero ## $a0 = 00000000
|
||||
/* 00B18 808706F8 0C01767D */ jal CollisionCheck_SetAC
|
||||
## CollisionCheck_setAC
|
||||
/* 00B1C 808706FC 02003025 */ or $a2, $s0, $zero ## $a2 = 0000016C
|
||||
.L80870700:
|
||||
/* 00B20 80870700 3C068087 */ lui $a2, %hi(D_80870998) ## $a2 = 80870000
|
||||
/* 00B24 80870704 24C60998 */ addiu $a2, $a2, %lo(D_80870998) ## $a2 = 80870998
|
||||
/* 00B28 80870708 27A40084 */ addiu $a0, $sp, 0x0084 ## $a0 = FFFFFFE4
|
||||
/* 00B2C 8087070C 8EA50000 */ lw $a1, 0x0000($s5) ## 00000000
|
||||
/* 00B30 80870710 0C031AD5 */ jal Graph_CloseDisps
|
||||
/* 00B34 80870714 24070336 */ addiu $a3, $zero, 0x0336 ## $a3 = 00000336
|
||||
.L80870718:
|
||||
/* 00B38 80870718 8FBF0034 */ lw $ra, 0x0034($sp)
|
||||
/* 00B3C 8087071C 8FB0001C */ lw $s0, 0x001C($sp)
|
||||
/* 00B40 80870720 8FB10020 */ lw $s1, 0x0020($sp)
|
||||
/* 00B44 80870724 8FB20024 */ lw $s2, 0x0024($sp)
|
||||
/* 00B48 80870728 8FB30028 */ lw $s3, 0x0028($sp)
|
||||
/* 00B4C 8087072C 8FB4002C */ lw $s4, 0x002C($sp)
|
||||
/* 00B50 80870730 8FB50030 */ lw $s5, 0x0030($sp)
|
||||
/* 00B54 80870734 03E00008 */ jr $ra
|
||||
/* 00B58 80870738 27BD00A0 */ addiu $sp, $sp, 0x00A0 ## $sp = 00000000
|
||||
/* 00B5C 8087073C 00000000 */ nop
|
|
@ -1,38 +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_Breakwall_InitVars
|
||||
.word 0x00590100, 0x00000010, 0x00010000, 0x000001F0
|
||||
.word BgBreakwall_Init
|
||||
.word BgBreakwall_Destroy
|
||||
.word BgBreakwall_Update
|
||||
.word 0x00000000
|
||||
glabel D_80870760
|
||||
.word 0x0A002900, 0x20030000, 0x00000000, 0x00000048, 0x00000000, 0x00000048, 0x00000000, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
|
||||
glabel D_808707B0
|
||||
.word 0x06000118, 0x06000040, 0x00000000, 0x06000118, 0x06000040, 0x00000000
|
||||
glabel D_808707C8
|
||||
.word 0x060264A8, 0x06025BD0, 0x01000000
|
||||
glabel D_808707D4
|
||||
.word 0x06025B64, 0x00000000, 0xFF000000
|
||||
glabel D_808707E0
|
||||
.word 0xC8500064, 0xB0F40FA0, 0xB0F80190, 0x30FC0190
|
||||
glabel D_808707F0
|
||||
.word 0x00000000, 0x00000000, 0x00000000
|
||||
glabel D_808707FC
|
||||
.word 0x00000000, 0x00000000, 0x00004000, 0x00000000, 0xC0000000, 0x00000000
|
||||
glabel D_80870814
|
||||
.word 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F, 0x3B83126F
|
||||
glabel D_80870844
|
||||
.word 0x42200000, 0x41700000, 0x00000000, 0x41F00000, 0x42640000, 0x00000000, 0x42480000, 0x42640000, 0x00000000, 0x42200000, 0x428C0000, 0x00000000, 0x425C0000, 0xC1700000, 0x00000000, 0x41F00000, 0xC2000000, 0x00000000, 0x42480000, 0xC2000000, 0x00000000, 0x41A00000, 0xC1200000, 0x00000000, 0xC2200000, 0x41600000, 0x00000000, 0xC2480000, 0x42640000, 0x00000000, 0xC1F00000, 0x42640000, 0x00000000, 0xC2200000, 0x428C0000, 0x00000000, 0xC25C0000, 0xC1700000, 0x00000000, 0xC25C0000, 0xC2000000, 0x00000000, 0xC1F00000, 0xC2000000, 0x00000000, 0xC1A00000, 0xC1200000, 0x00000000
|
||||
glabel D_80870904
|
||||
.word 0x44480000, 0x44C80000, 0x42C80000, 0xC4480000, 0x44C80000, 0x42C80000, 0x44480000, 0x00000000, 0x42C80000, 0xC4480000, 0x00000000, 0x42C80000, 0x41200000, 0x00000000, 0x41200000, 0xC1200000, 0x00000000, 0x41200000, 0x41200000, 0x00000000, 0xC1200000, 0xC1200000, 0x00000000, 0xC1200000, 0x00000000, 0x00000000, 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_808709C0
|
||||
.incbin "baserom/ovl_Bg_Breakwall", 0xDE0, 0x000000F0
|
3
spec
3
spec
|
@ -642,8 +642,7 @@ endseg
|
|||
beginseg
|
||||
name "ovl_Bg_Breakwall"
|
||||
include "build/src/overlays/actors/ovl_Bg_Breakwall/z_bg_breakwall.o"
|
||||
include "build/data/overlays/actors/z_bg_breakwall.data.o"
|
||||
include "build/data/overlays/actors/z_bg_breakwall.reloc.o"
|
||||
include "build/src/overlays/actors/ovl_Bg_Breakwall/ovl_Bg_Breakwall_reloc.o"
|
||||
endseg
|
||||
|
||||
beginseg
|
||||
|
|
|
@ -10,18 +10,23 @@
|
|||
|
||||
#define THIS ((BgBreakwall*)thisx)
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ CollisionHeader* colHeader;
|
||||
/* 0x04 */ Gfx* dList;
|
||||
/* 0x08 */ s8 colType;
|
||||
} BombableWallInfo;
|
||||
|
||||
void BgBreakwall_Init(Actor* thisx, GlobalContext* globalCtx);
|
||||
void BgBreakwall_Destroy(Actor* thisx, GlobalContext* globalCtx);
|
||||
void BgBreakwall_Update(Actor* thisx, GlobalContext* globalCtx);
|
||||
void BgBreakwall_Draw(Actor* thisx, GlobalContext* globalCtx);
|
||||
|
||||
void func_80870290(BgBreakwall* this, GlobalContext* globalCtx);
|
||||
void func_80870394(BgBreakwall* this, GlobalContext* globalCtx);
|
||||
void func_80870564(BgBreakwall* this, GlobalContext* globalCtx);
|
||||
void func_808705D8(BgBreakwall* this, GlobalContext* globalCtx);
|
||||
void BgBreakwall_WaitForObject(BgBreakwall* this, GlobalContext* globalCtx);
|
||||
void BgBreakwall_Wait(BgBreakwall* this, GlobalContext* globalCtx);
|
||||
void BgBreakwall_LavaCoverMove(BgBreakwall* this, GlobalContext* globalCtx);
|
||||
|
||||
extern UNK_TYPE D_02014F80;
|
||||
|
||||
/*
|
||||
const ActorInit Bg_Breakwall_InitVars = {
|
||||
ACTOR_BG_BREAKWALL,
|
||||
ACTORCAT_BG,
|
||||
|
@ -34,7 +39,7 @@ const ActorInit Bg_Breakwall_InitVars = {
|
|||
NULL,
|
||||
};
|
||||
|
||||
static ColliderQuadInit D_80870760 = {
|
||||
static ColliderQuadInit sQuadInit = {
|
||||
{
|
||||
COLTYPE_NONE,
|
||||
AT_NONE,
|
||||
|
@ -53,21 +58,263 @@ static ColliderQuadInit D_80870760 = {
|
|||
},
|
||||
{ { { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f }, { 0.0f, 0.0f, 0.0f } } },
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/BgBreakwall_SetupAction.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/BgBreakwall_Init.s")
|
||||
static BombableWallInfo sBombableWallInfo[] = {
|
||||
{ 0x06000118, 0x06000040, 0 },
|
||||
{ 0x06000118, 0x06000040, 0 },
|
||||
{ 0x060264A8, 0x06025BD0, 1 },
|
||||
{ 0x06025B64, NULL, -1 },
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/BgBreakwall_Destroy.s")
|
||||
static InitChainEntry sInitChain[] = {
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneScale, 400, ICHAIN_CONTINUE),
|
||||
ICHAIN_F32(uncullZoneDownward, 400, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/func_8086FDC0.s")
|
||||
void BgBreakwall_SetupAction(BgBreakwall* this, BgBreakwallActionFunc actionFunc) {
|
||||
this->actionFunc = actionFunc;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/func_80870290.s")
|
||||
void BgBreakwall_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BgBreakwall* this = THIS;
|
||||
s32 pad;
|
||||
s32 wallType = ((this->dyna.actor.params >> 13) & 3) & 0xFF;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/func_80870394.s")
|
||||
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
||||
DynaPolyActor_Init(&this->dyna, DPM_UNK);
|
||||
this->bombableWallDList = sBombableWallInfo[wallType].dList;
|
||||
this->colType = sBombableWallInfo[wallType].colType;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/func_80870564.s")
|
||||
if (this->colType == 1) {
|
||||
this->dyna.actor.world.rot.x = 0x4000;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/BgBreakwall_Update.s")
|
||||
if (this->bombableWallDList != NULL) {
|
||||
if (Flags_GetSwitch(globalCtx, this->dyna.actor.params & 0x3F)) {
|
||||
Actor_Kill(&this->dyna.actor);
|
||||
return;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Breakwall/func_808705D8.s")
|
||||
ActorShape_Init(&this->dyna.actor.shape, 0.0f, NULL, 0.0f);
|
||||
Collider_InitQuad(globalCtx, &this->collider);
|
||||
Collider_SetQuad(globalCtx, &this->collider, &this->dyna.actor, &sQuadInit);
|
||||
} else {
|
||||
this->dyna.actor.world.pos.y -= 40.0f;
|
||||
}
|
||||
|
||||
this->bankIndex = (wallType >= BWALL_KD_FLOOR) ? Object_GetIndex(&globalCtx->objectCtx, OBJECT_KINGDODONGO)
|
||||
: Object_GetIndex(&globalCtx->objectCtx, OBJECT_BWALL);
|
||||
|
||||
if (this->bankIndex < 0) {
|
||||
Actor_Kill(&this->dyna.actor);
|
||||
} else {
|
||||
BgBreakwall_SetupAction(this, BgBreakwall_WaitForObject);
|
||||
}
|
||||
}
|
||||
|
||||
void BgBreakwall_Destroy(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BgBreakwall* this = THIS;
|
||||
|
||||
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Spawns fragments using ACTOR_EN_A_OBJ whenever the wall or floor is exploded.
|
||||
* Returns the last spawned actor
|
||||
*/
|
||||
Actor* BgBreakwall_SpawnFragments(GlobalContext* globalCtx, BgBreakwall* this, Vec3f* pos, f32 velocity, f32 scaleY,
|
||||
f32 scaleX, s32 count, f32 accel) {
|
||||
Actor* actor;
|
||||
Vec3f actorPos;
|
||||
s32 k;
|
||||
s32 j;
|
||||
s32 i;
|
||||
s16 angle1;
|
||||
s16 angle2 = 0;
|
||||
Vec3f zeroVec = { 0.0f, 0.0f, 0.0f }; // unused
|
||||
Vec3s actorRotList[] = { { 0, 0, 0 }, { 0, 0, 0x4000 }, { 0, 0, -0x4000 }, { 0, 0, 0 } };
|
||||
Vec3f actorScaleList[] = {
|
||||
{ 0.004f, 0.004f, 0.004f },
|
||||
{ 0.004f, 0.004f, 0.004f },
|
||||
{ 0.004f, 0.004f, 0.004f },
|
||||
{ 0.004f, 0.004f, 0.004f },
|
||||
};
|
||||
Vec3f actorPosList[][4] = {
|
||||
{ { 40.0f, 15.0f, 0.0f }, { 30.0f, 57.0f, 0.0f }, { 50.0f, 57.0f, 0.0f }, { 40.0f, 70.0f, 0.0f } },
|
||||
{ { 55.0f, -15.0f, 0.0f }, { 30.0f, -32.0f, 0.0f }, { 50.0f, -32.0f, 0.0f }, { 20.0f, -10.0f, 0.0f } },
|
||||
{ { -40.0f, 14.0f, 0.0f }, { -50.0f, 57.0f, 0.0f }, { -30.0f, 57.0f, 0.0f }, { -40.0f, 70.0f, 0.0f } },
|
||||
{ { -55.0f, -15.0f, 0.0f }, { -55.0f, -32.0f, 0.0f }, { -30.0f, -32.0f, 0.0f }, { -20.0f, -10.0f, 0.0f } },
|
||||
};
|
||||
s32 pad;
|
||||
|
||||
for (k = 3; k >= 0; k--) {
|
||||
if ((k == 0) || (k == 3)) {
|
||||
actorScaleList[k].x *= scaleX;
|
||||
actorScaleList[k].y *= scaleY;
|
||||
actorScaleList[k].z *= scaleY;
|
||||
} else {
|
||||
actorScaleList[k].x *= scaleY;
|
||||
actorScaleList[k].y *= scaleX;
|
||||
actorScaleList[k].z *= scaleX;
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < count; angle2 += 0x4000, i++) {
|
||||
angle1 = ABS(this->dyna.actor.world.rot.y) + angle2;
|
||||
Matrix_Translate(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, this->dyna.actor.world.pos.z,
|
||||
MTXMODE_NEW);
|
||||
Matrix_RotateRPY(this->dyna.actor.world.rot.x, this->dyna.actor.world.rot.y, this->dyna.actor.world.rot.z,
|
||||
MTXMODE_APPLY);
|
||||
Matrix_Translate(pos->x, pos->y, pos->z, MTXMODE_APPLY);
|
||||
|
||||
for (j = 3; j >= 0; j--) {
|
||||
for (k = 3; k >= 0; k--) {
|
||||
Matrix_MultVec3f(&actorPosList[j][k], &actorPos);
|
||||
actor =
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_A_OBJ, Rand_CenteredFloat(20.0f) + actorPos.x,
|
||||
Rand_CenteredFloat(20.0f) + actorPos.y, Rand_CenteredFloat(20.0f) + actorPos.z,
|
||||
actorRotList[k].x, actorRotList[k].y + angle1, actorRotList[k].z, 0x000B);
|
||||
|
||||
if ((j & 1) == 0) {
|
||||
func_80033480(globalCtx, &actorPos, velocity * 200.0f, 1, 650, 150, 1);
|
||||
}
|
||||
|
||||
if (actor != NULL) {
|
||||
actor->speedXZ = Rand_ZeroOne() + (accel * 0.6f);
|
||||
actor->velocity.y = Rand_ZeroOne() + (accel * 0.6f);
|
||||
actor->world.rot.y += (s16)((Rand_ZeroOne() - 0.5f) * 3000.0f);
|
||||
actor->world.rot.x = (s16)(Rand_ZeroOne() * 3500.0f) + 2000;
|
||||
actor->world.rot.z = (s16)(Rand_ZeroOne() * 3500.0f) + 2000;
|
||||
actor->parent = &this->dyna.actor;
|
||||
actor->scale.x = actorScaleList[k].x + Rand_CenteredFloat(0.001f);
|
||||
actor->scale.y = actorScaleList[k].y + Rand_CenteredFloat(0.001f);
|
||||
actor->scale.z = actorScaleList[k].z + Rand_CenteredFloat(0.001f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return actor;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets up the collision model as well is the object dependency and action function to use.
|
||||
*/
|
||||
void BgBreakwall_WaitForObject(BgBreakwall* this, GlobalContext* globalCtx) {
|
||||
if (Object_IsLoaded(&globalCtx->objectCtx, this->bankIndex)) {
|
||||
CollisionHeader* colHeader = NULL;
|
||||
s32 wallType = ((this->dyna.actor.params >> 13) & 3) & 0xFF;
|
||||
|
||||
this->dyna.actor.objBankIndex = this->bankIndex;
|
||||
Actor_SetObjectDependency(globalCtx, &this->dyna.actor);
|
||||
this->dyna.actor.flags &= ~0x10;
|
||||
this->dyna.actor.draw = BgBreakwall_Draw;
|
||||
CollisionHeader_GetVirtual(sBombableWallInfo[wallType].colHeader, &colHeader);
|
||||
this->dyna.bgId = DynaPoly_SetBgActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, colHeader);
|
||||
|
||||
if (wallType == BWALL_KD_LAVA_COVER) {
|
||||
BgBreakwall_SetupAction(this, BgBreakwall_LavaCoverMove);
|
||||
} else {
|
||||
BgBreakwall_SetupAction(this, BgBreakwall_Wait);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks for an explosion using quad collision. If the wall or floor is exploded then it will spawn fragments and
|
||||
* despawn itself.
|
||||
*/
|
||||
void BgBreakwall_Wait(BgBreakwall* this, GlobalContext* globalCtx) {
|
||||
if (this->collider.base.acFlags & 2) {
|
||||
Vec3f effectPos;
|
||||
s32 wallType = ((this->dyna.actor.params >> 13) & 3) & 0xFF;
|
||||
|
||||
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
|
||||
effectPos.y = effectPos.z = effectPos.x = 0.0f;
|
||||
|
||||
if (this->dyna.actor.world.rot.x == 0) {
|
||||
effectPos.y = 55.0f;
|
||||
} else {
|
||||
effectPos.z = 25.0f;
|
||||
effectPos.y = -10.0f;
|
||||
}
|
||||
|
||||
BgBreakwall_SpawnFragments(globalCtx, this, &effectPos, 0.0f, 6.4f, 5.0f, 1, 2.0f);
|
||||
Flags_SetSwitch(globalCtx, this->dyna.actor.params & 0x3F);
|
||||
|
||||
if (wallType == BWALL_KD_FLOOR) {
|
||||
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_EXPLOSION);
|
||||
} else {
|
||||
Audio_PlayActorSound2(&this->dyna.actor, NA_SE_EV_WALL_BROKEN);
|
||||
}
|
||||
|
||||
if ((wallType == BWALL_DC_ENTRANCE) && (!(Flags_GetEventChkInf(0xB0)))) {
|
||||
Flags_SetEventChkInf(0xB0);
|
||||
Cutscene_SetSegment(globalCtx, &D_02014F80);
|
||||
gSaveContext.cutsceneTrigger = 1;
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_CORRECT_CHIME, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
func_8002DF54(globalCtx, NULL, 0x31);
|
||||
}
|
||||
|
||||
if (this->dyna.actor.params < 0) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_TRE_BOX_APPEAR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
}
|
||||
|
||||
Actor_Kill(&this->dyna.actor);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves the actor's y position to cover the lava floor in King Dodongo's lair after he is defeated so the player is no
|
||||
* longer hurt by the lava.
|
||||
*/
|
||||
void BgBreakwall_LavaCoverMove(BgBreakwall* this, GlobalContext* globalCtx) {
|
||||
Math_StepToF(&this->dyna.actor.world.pos.y, KREG(80) + this->dyna.actor.home.pos.y, 1.0f);
|
||||
}
|
||||
|
||||
void BgBreakwall_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
BgBreakwall* this = THIS;
|
||||
|
||||
this->actionFunc(this, globalCtx);
|
||||
}
|
||||
|
||||
/**
|
||||
* These are the quads used for the wall and floor collision. These are used for the detecting when a bomb explosion has
|
||||
* collided with a wall, and can be adjusted for different wall or floor sizes.
|
||||
*/
|
||||
static Vec3f sColQuadList[][4] = {
|
||||
{ { 800.0f, 1600.0f, 100.0f }, { -800.0f, 1600.0f, 100.0f }, { 800.0f, 0.0f, 100.0f }, { -800.0f, 0.0f, 100.0f } },
|
||||
{ { 10.0f, 0.0f, 10.0f }, { -10.0f, 0.0f, 10.0f }, { 10.0f, 0.0f, -10.0f }, { -10.0f, 0.0f, -10.0f } },
|
||||
};
|
||||
|
||||
void BgBreakwall_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
BgBreakwall* this = THIS;
|
||||
|
||||
if (this->bombableWallDList != NULL) {
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_breakwall.c", 767);
|
||||
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_breakwall.c", 771),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(POLY_OPA_DISP++, this->bombableWallDList);
|
||||
|
||||
if (this->colType >= 0) {
|
||||
Vec3f colQuad[4];
|
||||
Vec3f* src = &sColQuadList[this->colType][0];
|
||||
Vec3f* dst = &colQuad[0];
|
||||
s32 i;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
Matrix_MultVec3f(src++, dst++);
|
||||
}
|
||||
|
||||
Collider_SetQuadVertices(&this->collider, &colQuad[0], &colQuad[1], &colQuad[2], &colQuad[3]);
|
||||
CollisionCheck_SetAC(globalCtx, &globalCtx->colChkCtx, &this->collider.base);
|
||||
}
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_breakwall.c", 822);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,10 +10,20 @@ typedef void (*BgBreakwallActionFunc)(struct BgBreakwall*, GlobalContext*);
|
|||
|
||||
typedef struct BgBreakwall {
|
||||
/* 0x0000 */ DynaPolyActor dyna;
|
||||
/* 0x0164 */ char unk_164[0x88];
|
||||
/* 0x0164 */ Gfx* bombableWallDList;
|
||||
/* 0x0168 */ s8 colType;
|
||||
/* 0x0169 */ s8 bankIndex;
|
||||
/* 0x016C */ ColliderQuad collider;
|
||||
/* 0x01EC */ BgBreakwallActionFunc actionFunc;
|
||||
} BgBreakwall; // size = 0x01F0
|
||||
|
||||
typedef enum {
|
||||
/* 0 */ BWALL_DC_ENTRANCE, // When exploded it will play the Dodongo's Cavern intro cutscene
|
||||
/* 1 */ BWALL_WALL, // Used a lot in Dodongo's Cavern and other places
|
||||
/* 2 */ BWALL_KD_FLOOR, // Used in the King Dodongo boss room
|
||||
/* 3 */ BWALL_KD_LAVA_COVER // Spawned after the KD fight in order to cover the lava floor to disable damage
|
||||
} BombableWallType;
|
||||
|
||||
extern const ActorInit Bg_Breakwall_InitVars;
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue