1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-02 09:34:27 +00:00

MirRay OK and documented (#528)

* init, destroy, update, couple of others decomped

* 2 functions remain

* data migrated

* 1 function left

* OK
thanks mostly to Petrie and the permuter,
and no thanks to my find/replace skills

* documented and deleted asm

* updated spec

* delete data

* address review comments

* Apply review suggestions
This commit is contained in:
EllipticEllipsis 2020-12-21 17:28:57 +00:00 committed by GitHub
parent 06ceb6ad40
commit df704a9f80
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
17 changed files with 575 additions and 1615 deletions

View file

@ -1,33 +0,0 @@
glabel MirRay_Destroy
/* 0053C 80B8D58C 27BDFFE8 */ addiu $sp, $sp, 0xFFE8 ## $sp = FFFFFFE8
/* 00540 80B8D590 AFA40018 */ sw $a0, 0x0018($sp)
/* 00544 80B8D594 8FAE0018 */ lw $t6, 0x0018($sp)
/* 00548 80B8D598 AFBF0014 */ sw $ra, 0x0014($sp)
/* 0054C 80B8D59C 00A03825 */ or $a3, $a1, $zero ## $a3 = 00000000
/* 00550 80B8D5A0 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 00554 80B8D5A4 8DC6029C */ lw $a2, 0x029C($t6) ## 0000029C
/* 00558 80B8D5A8 AFA7001C */ sw $a3, 0x001C($sp)
/* 0055C 80B8D5AC 0C01E9F1 */ jal LightContext_RemoveLight
/* 00560 80B8D5B0 24A507A8 */ addiu $a1, $a1, 0x07A8 ## $a1 = 000007A8
/* 00564 80B8D5B4 8FA20018 */ lw $v0, 0x0018($sp)
/* 00568 80B8D5B8 3C1980B9 */ lui $t9, %hi(D_80B8E717) ## $t9 = 80B90000
/* 0056C 80B8D5BC 8FA4001C */ lw $a0, 0x001C($sp)
/* 00570 80B8D5C0 844F001C */ lh $t7, 0x001C($v0) ## 0000001C
/* 00574 80B8D5C4 000FC140 */ sll $t8, $t7, 5
/* 00578 80B8D5C8 0338C821 */ addu $t9, $t9, $t8
/* 0057C 80B8D5CC 9339E717 */ lbu $t9, %lo(D_80B8E717)($t9)
/* 00580 80B8D5D0 33280002 */ andi $t0, $t9, 0x0002 ## $t0 = 00000000
/* 00584 80B8D5D4 51000005 */ beql $t0, $zero, .L80B8D5EC
/* 00588 80B8D5D8 8FA4001C */ lw $a0, 0x001C($sp)
/* 0058C 80B8D5DC 0C016F32 */ jal Collider_DestroyJntSph
/* 00590 80B8D5E0 2445014C */ addiu $a1, $v0, 0x014C ## $a1 = 0000014C
/* 00594 80B8D5E4 8FA20018 */ lw $v0, 0x0018($sp)
/* 00598 80B8D5E8 8FA4001C */ lw $a0, 0x001C($sp)
.L80B8D5EC:
/* 0059C 80B8D5EC 0C017418 */ jal Collider_DestroyQuad
/* 005A0 80B8D5F0 244501AC */ addiu $a1, $v0, 0x01AC ## $a1 = 000001AC
/* 005A4 80B8D5F4 8FBF0014 */ lw $ra, 0x0014($sp)
/* 005A8 80B8D5F8 27BD0018 */ addiu $sp, $sp, 0x0018 ## $sp = 00000000
/* 005AC 80B8D5FC 03E00008 */ jr $ra
/* 005B0 80B8D600 00000000 */ nop

View file

@ -1,230 +0,0 @@
.rdata
glabel D_80B8E8E4
.asciz "../z_mir_ray.c"
.balign 4
glabel D_80B8E8F4
.asciz "../z_mir_ray.c"
.balign 4
glabel D_80B8E904
.asciz "../z_mir_ray.c"
.balign 4
glabel D_80B8E914
.asciz "../z_mir_ray.c"
.balign 4
.late_rodata
glabel D_80B8E93C
.float 0.01
.text
glabel MirRay_Draw
/* 01094 80B8E0E4 27BDFD80 */ addiu $sp, $sp, 0xFD80 ## $sp = FFFFFD80
/* 01098 80B8E0E8 F7B40018 */ sdc1 $f20, 0x0018($sp)
/* 0109C 80B8E0EC 4480A000 */ mtc1 $zero, $f20 ## $f20 = 0.00
/* 010A0 80B8E0F0 AFBF0034 */ sw $ra, 0x0034($sp)
/* 010A4 80B8E0F4 AFB40030 */ sw $s4, 0x0030($sp)
/* 010A8 80B8E0F8 AFB3002C */ sw $s3, 0x002C($sp)
/* 010AC 80B8E0FC AFB20028 */ sw $s2, 0x0028($sp)
/* 010B0 80B8E100 AFB10024 */ sw $s1, 0x0024($sp)
/* 010B4 80B8E104 AFB00020 */ sw $s0, 0x0020($sp)
/* 010B8 80B8E108 8CB01C44 */ lw $s0, 0x1C44($a1) ## 00001C44
/* 010BC 80B8E10C 3C0E80B9 */ lui $t6, %hi(D_80B8E670) ## $t6 = 80B90000
/* 010C0 80B8E110 E494022C */ swc1 $f20, 0x022C($a0) ## 0000022C
/* 010C4 80B8E114 91CEE670 */ lbu $t6, %lo(D_80B8E670)($t6)
/* 010C8 80B8E118 00808825 */ or $s1, $a0, $zero ## $s1 = 00000000
/* 010CC 80B8E11C 00A0A025 */ or $s4, $a1, $zero ## $s4 = 00000000
/* 010D0 80B8E120 55C000B0 */ bnel $t6, $zero, .L80B8E3E4
/* 010D4 80B8E124 8FBF0034 */ lw $ra, 0x0034($sp)
/* 010D8 80B8E128 908F02AE */ lbu $t7, 0x02AE($a0) ## 000002AE
/* 010DC 80B8E12C 55E000AD */ bnel $t7, $zero, .L80B8E3E4
/* 010E0 80B8E130 8FBF0034 */ lw $ra, 0x0034($sp)
/* 010E4 80B8E134 0C023C2B */ jal Player_HasMirrorShieldSetToDraw
/* 010E8 80B8E138 00A02025 */ or $a0, $a1, $zero ## $a0 = 00000000
/* 010EC 80B8E13C 104000A8 */ beq $v0, $zero, .L80B8E3E0
/* 010F0 80B8E140 26040A20 */ addiu $a0, $s0, 0x0A20 ## $a0 = 00000A20
/* 010F4 80B8E144 0C03424C */ jal Matrix_Mult
/* 010F8 80B8E148 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 010FC 80B8E14C 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 01100 80B8E150 0C2E35BC */ jal func_80B8D6F0
/* 01104 80B8E154 02802825 */ or $a1, $s4, $zero ## $a1 = 00000000
/* 01108 80B8E158 C624022C */ lwc1 $f4, 0x022C($s1) ## 0000022C
/* 0110C 80B8E15C 3C0680B9 */ lui $a2, %hi(D_80B8E8E4) ## $a2 = 80B90000
/* 01110 80B8E160 24C6E8E4 */ addiu $a2, $a2, %lo(D_80B8E8E4) ## $a2 = 80B8E8E4
/* 01114 80B8E164 4614203E */ c.le.s $f4, $f20
/* 01118 80B8E168 27A40064 */ addiu $a0, $sp, 0x0064 ## $a0 = FFFFFDE4
/* 0111C 80B8E16C 4503009D */ bc1tl .L80B8E3E4
/* 01120 80B8E170 8FBF0034 */ lw $ra, 0x0034($sp)
/* 01124 80B8E174 8E850000 */ lw $a1, 0x0000($s4) ## 00000000
/* 01128 80B8E178 240703C6 */ addiu $a3, $zero, 0x03C6 ## $a3 = 000003C6
/* 0112C 80B8E17C 0C031AB1 */ jal Graph_OpenDisps
/* 01130 80B8E180 00A09025 */ or $s2, $a1, $zero ## $s2 = 00000000
/* 01134 80B8E184 0C024F61 */ jal func_80093D84
/* 01138 80B8E188 8E840000 */ lw $a0, 0x0000($s4) ## 00000000
/* 0113C 80B8E18C 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 01140 80B8E190 44816000 */ mtc1 $at, $f12 ## $f12 = 1.00
/* 01144 80B8E194 3C0140A0 */ lui $at, 0x40A0 ## $at = 40A00000
/* 01148 80B8E198 44814000 */ mtc1 $at, $f8 ## $f8 = 5.00
/* 0114C 80B8E19C C626022C */ lwc1 $f6, 0x022C($s1) ## 0000022C
/* 01150 80B8E1A0 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
/* 01154 80B8E1A4 46006386 */ mov.s $f14, $f12
/* 01158 80B8E1A8 46083282 */ mul.s $f10, $f6, $f8
/* 0115C 80B8E1AC 44065000 */ mfc1 $a2, $f10
/* 01160 80B8E1B0 0C0342A3 */ jal Matrix_Scale
/* 01164 80B8E1B4 00000000 */ nop
/* 01168 80B8E1B8 8E4202D0 */ lw $v0, 0x02D0($s2) ## 000002D0
/* 0116C 80B8E1BC 3C19DA38 */ lui $t9, 0xDA38 ## $t9 = DA380000
/* 01170 80B8E1C0 37390003 */ ori $t9, $t9, 0x0003 ## $t9 = DA380003
/* 01174 80B8E1C4 24580008 */ addiu $t8, $v0, 0x0008 ## $t8 = 00000008
/* 01178 80B8E1C8 AE5802D0 */ sw $t8, 0x02D0($s2) ## 000002D0
/* 0117C 80B8E1CC 3C0580B9 */ lui $a1, %hi(D_80B8E8F4) ## $a1 = 80B90000
/* 01180 80B8E1D0 AC590000 */ sw $t9, 0x0000($v0) ## 00000000
/* 01184 80B8E1D4 8E840000 */ lw $a0, 0x0000($s4) ## 00000000
/* 01188 80B8E1D8 24A5E8F4 */ addiu $a1, $a1, %lo(D_80B8E8F4) ## $a1 = 80B8E8F4
/* 0118C 80B8E1DC 240603CC */ addiu $a2, $zero, 0x03CC ## $a2 = 000003CC
/* 01190 80B8E1E0 0C0346A2 */ jal Matrix_NewMtx
/* 01194 80B8E1E4 00408025 */ or $s0, $v0, $zero ## $s0 = 00000000
/* 01198 80B8E1E8 AE020004 */ sw $v0, 0x0004($s0) ## 00000004
/* 0119C 80B8E1EC 8E4202D0 */ lw $v0, 0x02D0($s2) ## 000002D0
/* 011A0 80B8E1F0 3C09FA00 */ lui $t1, 0xFA00 ## $t1 = FA000000
/* 011A4 80B8E1F4 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
/* 011A8 80B8E1F8 24480008 */ addiu $t0, $v0, 0x0008 ## $t0 = 00000008
/* 011AC 80B8E1FC AE4802D0 */ sw $t0, 0x02D0($s2) ## 000002D0
/* 011B0 80B8E200 AC490000 */ sw $t1, 0x0000($v0) ## 00000000
/* 011B4 80B8E204 C630022C */ lwc1 $f16, 0x022C($s1) ## 0000022C
/* 011B8 80B8E208 44819000 */ mtc1 $at, $f18 ## $f18 = 100.00
/* 011BC 80B8E20C 24019600 */ addiu $at, $zero, 0x9600 ## $at = FFFF9600
/* 011C0 80B8E210 3C190600 */ lui $t9, %hi(D_06000C50) ## $t9 = 06000000
/* 011C4 80B8E214 46128102 */ mul.s $f4, $f16, $f18
/* 011C8 80B8E218 27390C50 */ addiu $t9, $t9, %lo(D_06000C50) ## $t9 = 06000C50
/* 011CC 80B8E21C 27B0007C */ addiu $s0, $sp, 0x007C ## $s0 = FFFFFDFC
/* 011D0 80B8E220 3C18DE00 */ lui $t8, 0xDE00 ## $t8 = DE000000
/* 011D4 80B8E224 02003025 */ or $a2, $s0, $zero ## $a2 = FFFFFDFC
/* 011D8 80B8E228 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 011DC 80B8E22C 02802825 */ or $a1, $s4, $zero ## $a1 = 00000000
/* 011E0 80B8E230 4600218D */ trunc.w.s $f6, $f4
/* 011E4 80B8E234 440C3000 */ mfc1 $t4, $f6
/* 011E8 80B8E238 00000000 */ nop
/* 011EC 80B8E23C 318D00FF */ andi $t5, $t4, 0x00FF ## $t5 = 00000000
/* 011F0 80B8E240 01A17025 */ or $t6, $t5, $at ## $t6 = FFFF9600
/* 011F4 80B8E244 AC4E0004 */ sw $t6, 0x0004($v0) ## 00000004
/* 011F8 80B8E248 8E4202D0 */ lw $v0, 0x02D0($s2) ## 000002D0
/* 011FC 80B8E24C 244F0008 */ addiu $t7, $v0, 0x0008 ## $t7 = 00000008
/* 01200 80B8E250 AE4F02D0 */ sw $t7, 0x02D0($s2) ## 000002D0
/* 01204 80B8E254 AC590004 */ sw $t9, 0x0004($v0) ## 00000004
/* 01208 80B8E258 0C2E3628 */ jal func_80B8D8A0
/* 0120C 80B8E25C AC580000 */ sw $t8, 0x0000($v0) ## 00000000
/* 01210 80B8E260 0C2E369E */ jal func_80B8DA78
/* 01214 80B8E264 02002025 */ or $a0, $s0, $zero ## $a0 = FFFFFDFC
/* 01218 80B8E268 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 0121C 80B8E26C 02802825 */ or $a1, $s4, $zero ## $a1 = 00000000
/* 01220 80B8E270 0C2E36DF */ jal func_80B8DB7C
/* 01224 80B8E274 02003025 */ or $a2, $s0, $zero ## $a2 = FFFFFDFC
/* 01228 80B8E278 8FA800C8 */ lw $t0, 0x00C8($sp)
/* 0122C 80B8E27C 27B000D0 */ addiu $s0, $sp, 0x00D0 ## $s0 = FFFFFE50
/* 01230 80B8E280 27A30274 */ addiu $v1, $sp, 0x0274 ## $v1 = FFFFFFF4
/* 01234 80B8E284 15000002 */ bne $t0, $zero, .L80B8E290
/* 01238 80B8E288 00000000 */ nop
/* 0123C 80B8E28C A3A000CC */ sb $zero, 0x00CC($sp)
.L80B8E290:
/* 01240 80B8E290 8E09004C */ lw $t1, 0x004C($s0) ## FFFFFE9C
.L80B8E294:
/* 01244 80B8E294 93AA00CC */ lbu $t2, 0x00CC($sp)
/* 01248 80B8E298 51200007 */ beql $t1, $zero, .L80B8E2B8
/* 0124C 80B8E29C 26100054 */ addiu $s0, $s0, 0x0054 ## $s0 = FFFFFEA4
/* 01250 80B8E2A0 92020050 */ lbu $v0, 0x0050($s0) ## FFFFFEF4
/* 01254 80B8E2A4 0142082A */ slt $at, $t2, $v0
/* 01258 80B8E2A8 50200003 */ beql $at, $zero, .L80B8E2B8
/* 0125C 80B8E2AC 26100054 */ addiu $s0, $s0, 0x0054 ## $s0 = FFFFFEF8
/* 01260 80B8E2B0 A3A200CC */ sb $v0, 0x00CC($sp)
/* 01264 80B8E2B4 26100054 */ addiu $s0, $s0, 0x0054 ## $s0 = FFFFFF4C
.L80B8E2B8:
/* 01268 80B8E2B8 0203082B */ sltu $at, $s0, $v1
/* 0126C 80B8E2BC 5420FFF5 */ bnel $at, $zero, .L80B8E294
/* 01270 80B8E2C0 8E09004C */ lw $t1, 0x004C($s0) ## FFFFFF98
/* 01274 80B8E2C4 3C0180B9 */ lui $at, %hi(D_80B8E93C) ## $at = 80B90000
/* 01278 80B8E2C8 C434E93C */ lwc1 $f20, %lo(D_80B8E93C)($at)
/* 0127C 80B8E2CC 27B0007C */ addiu $s0, $sp, 0x007C ## $s0 = FFFFFDFC
/* 01280 80B8E2D0 8E0B004C */ lw $t3, 0x004C($s0) ## FFFFFE48
.L80B8E2D4:
/* 01284 80B8E2D4 00003825 */ or $a3, $zero, $zero ## $a3 = 00000000
/* 01288 80B8E2D8 2611000C */ addiu $s1, $s0, 0x000C ## $s1 = FFFFFE08
/* 0128C 80B8E2DC 11600033 */ beq $t3, $zero, .L80B8E3AC
/* 01290 80B8E2E0 3C130600 */ lui $s3, %hi(D_060000B0) ## $s3 = 06000000
/* 01294 80B8E2E4 C60C0000 */ lwc1 $f12, 0x0000($s0) ## FFFFFDFC
/* 01298 80B8E2E8 C60E0004 */ lwc1 $f14, 0x0004($s0) ## FFFFFE00
/* 0129C 80B8E2EC 8E060008 */ lw $a2, 0x0008($s0) ## FFFFFE04
/* 012A0 80B8E2F0 0C034261 */ jal Matrix_Translate
/* 012A4 80B8E2F4 267300B0 */ addiu $s3, $s3, %lo(D_060000B0) ## $s3 = 060000B0
/* 012A8 80B8E2F8 4406A000 */ mfc1 $a2, $f20
/* 012AC 80B8E2FC 4600A306 */ mov.s $f12, $f20
/* 012B0 80B8E300 4600A386 */ mov.s $f14, $f20
/* 012B4 80B8E304 0C0342A3 */ jal Matrix_Scale
/* 012B8 80B8E308 24070001 */ addiu $a3, $zero, 0x0001 ## $a3 = 00000001
/* 012BC 80B8E30C 02202025 */ or $a0, $s1, $zero ## $a0 = FFFFFE08
/* 012C0 80B8E310 0C03424C */ jal Matrix_Mult
/* 012C4 80B8E314 24050001 */ addiu $a1, $zero, 0x0001 ## $a1 = 00000001
/* 012C8 80B8E318 8E4202D0 */ lw $v0, 0x02D0($s2) ## 000002D0
/* 012CC 80B8E31C 3C0DDA38 */ lui $t5, 0xDA38 ## $t5 = DA380000
/* 012D0 80B8E320 35AD0003 */ ori $t5, $t5, 0x0003 ## $t5 = DA380003
/* 012D4 80B8E324 244C0008 */ addiu $t4, $v0, 0x0008 ## $t4 = 00000008
/* 012D8 80B8E328 AE4C02D0 */ sw $t4, 0x02D0($s2) ## 000002D0
/* 012DC 80B8E32C 3C0580B9 */ lui $a1, %hi(D_80B8E904) ## $a1 = 80B90000
/* 012E0 80B8E330 AC4D0000 */ sw $t5, 0x0000($v0) ## 00000000
/* 012E4 80B8E334 8E840000 */ lw $a0, 0x0000($s4) ## 00000000
/* 012E8 80B8E338 24A5E904 */ addiu $a1, $a1, %lo(D_80B8E904) ## $a1 = 80B8E904
/* 012EC 80B8E33C 240603EE */ addiu $a2, $zero, 0x03EE ## $a2 = 000003EE
/* 012F0 80B8E340 0C0346A2 */ jal Matrix_NewMtx
/* 012F4 80B8E344 00408825 */ or $s1, $v0, $zero ## $s1 = 00000000
/* 012F8 80B8E348 AE220004 */ sw $v0, 0x0004($s1) ## 00000004
/* 012FC 80B8E34C 8E4202D0 */ lw $v0, 0x02D0($s2) ## 000002D0
/* 01300 80B8E350 3C0FE200 */ lui $t7, 0xE200 ## $t7 = E2000000
/* 01304 80B8E354 3C18C810 */ lui $t8, 0xC810 ## $t8 = C8100000
/* 01308 80B8E358 244E0008 */ addiu $t6, $v0, 0x0008 ## $t6 = 00000008
/* 0130C 80B8E35C AE4E02D0 */ sw $t6, 0x02D0($s2) ## 000002D0
/* 01310 80B8E360 37184DD8 */ ori $t8, $t8, 0x4DD8 ## $t8 = C8104DD8
/* 01314 80B8E364 35EF001C */ ori $t7, $t7, 0x001C ## $t7 = E200001C
/* 01318 80B8E368 AC4F0000 */ sw $t7, 0x0000($v0) ## 00000000
/* 0131C 80B8E36C AC580004 */ sw $t8, 0x0004($v0) ## 00000004
/* 01320 80B8E370 8E4202D0 */ lw $v0, 0x02D0($s2) ## 000002D0
/* 01324 80B8E374 3C08FA00 */ lui $t0, 0xFA00 ## $t0 = FA000000
/* 01328 80B8E378 24019600 */ addiu $at, $zero, 0x9600 ## $at = FFFF9600
/* 0132C 80B8E37C 24590008 */ addiu $t9, $v0, 0x0008 ## $t9 = 00000008
/* 01330 80B8E380 AE5902D0 */ sw $t9, 0x02D0($s2) ## 000002D0
/* 01334 80B8E384 AC480000 */ sw $t0, 0x0000($v0) ## 00000000
/* 01338 80B8E388 93AA00CC */ lbu $t2, 0x00CC($sp)
/* 0133C 80B8E38C 3C0DDE00 */ lui $t5, 0xDE00 ## $t5 = DE000000
/* 01340 80B8E390 01415825 */ or $t3, $t2, $at ## $t3 = FFFF9600
/* 01344 80B8E394 AC4B0004 */ sw $t3, 0x0004($v0) ## 00000004
/* 01348 80B8E398 8E4202D0 */ lw $v0, 0x02D0($s2) ## 000002D0
/* 0134C 80B8E39C 244C0008 */ addiu $t4, $v0, 0x0008 ## $t4 = 00000008
/* 01350 80B8E3A0 AE4C02D0 */ sw $t4, 0x02D0($s2) ## 000002D0
/* 01354 80B8E3A4 AC530004 */ sw $s3, 0x0004($v0) ## 00000004
/* 01358 80B8E3A8 AC4D0000 */ sw $t5, 0x0000($v0) ## 00000000
.L80B8E3AC:
/* 0135C 80B8E3AC 26100054 */ addiu $s0, $s0, 0x0054 ## $s0 = FFFFFE50
/* 01360 80B8E3B0 27AE0274 */ addiu $t6, $sp, 0x0274 ## $t6 = FFFFFFF4
/* 01364 80B8E3B4 560EFFC7 */ bnel $s0, $t6, .L80B8E2D4
/* 01368 80B8E3B8 8E0B004C */ lw $t3, 0x004C($s0) ## FFFFFE9C
/* 0136C 80B8E3BC 240F0001 */ addiu $t7, $zero, 0x0001 ## $t7 = 00000001
/* 01370 80B8E3C0 3C0180B9 */ lui $at, %hi(D_80B8E670) ## $at = 80B90000
/* 01374 80B8E3C4 A02FE670 */ sb $t7, %lo(D_80B8E670)($at)
/* 01378 80B8E3C8 3C0680B9 */ lui $a2, %hi(D_80B8E914) ## $a2 = 80B90000
/* 0137C 80B8E3CC 24C6E914 */ addiu $a2, $a2, %lo(D_80B8E914) ## $a2 = 80B8E914
/* 01380 80B8E3D0 8E850000 */ lw $a1, 0x0000($s4) ## 00000000
/* 01384 80B8E3D4 27A40064 */ addiu $a0, $sp, 0x0064 ## $a0 = FFFFFDE4
/* 01388 80B8E3D8 0C031AD5 */ jal Graph_CloseDisps
/* 0138C 80B8E3DC 24070403 */ addiu $a3, $zero, 0x0403 ## $a3 = 00000403
.L80B8E3E0:
/* 01390 80B8E3E0 8FBF0034 */ lw $ra, 0x0034($sp)
.L80B8E3E4:
/* 01394 80B8E3E4 D7B40018 */ ldc1 $f20, 0x0018($sp)
/* 01398 80B8E3E8 8FB00020 */ lw $s0, 0x0020($sp)
/* 0139C 80B8E3EC 8FB10024 */ lw $s1, 0x0024($sp)
/* 013A0 80B8E3F0 8FB20028 */ lw $s2, 0x0028($sp)
/* 013A4 80B8E3F4 8FB3002C */ lw $s3, 0x002C($sp)
/* 013A8 80B8E3F8 8FB40030 */ lw $s4, 0x0030($sp)
/* 013AC 80B8E3FC 03E00008 */ jr $ra
/* 013B0 80B8E400 27BD0280 */ addiu $sp, $sp, 0x0280 ## $sp = 00000000

View file

@ -1,236 +0,0 @@
.rdata
glabel D_80B8E850
.asciz " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
.balign 4
glabel D_80B8E880
.asciz "../z_mir_ray.c"
.balign 4
glabel D_80B8E890
.asciz "this->actor.arg_data = %d\n"
.balign 4
glabel D_80B8E8AC
.asciz "../z_mir_ray.c"
.balign 4
glabel D_80B8E8BC
.asciz "\" \" = %s\n"
.balign 4
glabel D_80B8E8D4
.asciz " "
.balign 4
.late_rodata
glabel D_80B8E924
.float 758.0
glabel D_80B8E928
.float -939.0
glabel D_80B8E92C
.float -1690.0
glabel D_80B8E930
.float 938.0
glabel D_80B8E934
.float 921.0
.text
glabel MirRay_Init
/* 00260 80B8D2B0 27BDFFC0 */ addiu $sp, $sp, 0xFFC0 ## $sp = FFFFFFC0
/* 00264 80B8D2B4 AFBF002C */ sw $ra, 0x002C($sp)
/* 00268 80B8D2B8 AFB10028 */ sw $s1, 0x0028($sp)
/* 0026C 80B8D2BC AFB00024 */ sw $s0, 0x0024($sp)
/* 00270 80B8D2C0 AFA50044 */ sw $a1, 0x0044($sp)
/* 00274 80B8D2C4 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00278 80B8D2C8 3C1880B9 */ lui $t8, %hi(D_80B8E6F8) ## $t8 = 80B90000
/* 0027C 80B8D2CC 2718E6F8 */ addiu $t8, $t8, %lo(D_80B8E6F8) ## $t8 = 80B8E6F8
/* 00280 80B8D2D0 3C0580B9 */ lui $a1, %hi(D_80B8E838) ## $a1 = 80B90000
/* 00284 80B8D2D4 000E7940 */ sll $t7, $t6, 5
/* 00288 80B8D2D8 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 0028C 80B8D2DC 01F88821 */ addu $s1, $t7, $t8
/* 00290 80B8D2E0 0C01E037 */ jal Actor_ProcessInitChain
/* 00294 80B8D2E4 24A5E838 */ addiu $a1, $a1, %lo(D_80B8E838) ## $a1 = 80B8E838
/* 00298 80B8D2E8 44800000 */ mtc1 $zero, $f0 ## $f0 = 0.00
/* 0029C 80B8D2EC 260400B4 */ addiu $a0, $s0, 0x00B4 ## $a0 = 000000B4
/* 002A0 80B8D2F0 00003025 */ or $a2, $zero, $zero ## $a2 = 00000000
/* 002A4 80B8D2F4 44050000 */ mfc1 $a1, $f0
/* 002A8 80B8D2F8 44070000 */ mfc1 $a3, $f0
/* 002AC 80B8D2FC 0C00AC78 */ jal ActorShape_Init
/* 002B0 80B8D300 00000000 */ nop
/* 002B4 80B8D304 3C0480B9 */ lui $a0, %hi(D_80B8E850) ## $a0 = 80B90000
/* 002B8 80B8D308 0C00084C */ jal osSyncPrintf
/* 002BC 80B8D30C 2484E850 */ addiu $a0, $a0, %lo(D_80B8E850) ## $a0 = 80B8E850
/* 002C0 80B8D310 3C0480B9 */ lui $a0, %hi(D_80B8E880) ## $a0 = 80B90000
/* 002C4 80B8D314 2484E880 */ addiu $a0, $a0, %lo(D_80B8E880) ## $a0 = 80B8E880
/* 002C8 80B8D318 0C000B84 */ jal LogUtils_LogThreadId
/* 002CC 80B8D31C 24050206 */ addiu $a1, $zero, 0x0206 ## $a1 = 00000206
/* 002D0 80B8D320 3C0480B9 */ lui $a0, %hi(D_80B8E890) ## $a0 = 80B90000
/* 002D4 80B8D324 2484E890 */ addiu $a0, $a0, %lo(D_80B8E890) ## $a0 = 80B8E890
/* 002D8 80B8D328 0C00084C */ jal osSyncPrintf
/* 002DC 80B8D32C 8605001C */ lh $a1, 0x001C($s0) ## 0000001C
/* 002E0 80B8D330 8619001C */ lh $t9, 0x001C($s0) ## 0000001C
/* 002E4 80B8D334 3C0480B9 */ lui $a0, %hi(D_80B8E8AC) ## $a0 = 80B90000
/* 002E8 80B8D338 2484E8AC */ addiu $a0, $a0, %lo(D_80B8E8AC) ## $a0 = 80B8E8AC
/* 002EC 80B8D33C 2B21000A */ slti $at, $t9, 0x000A
/* 002F0 80B8D340 5420000B */ bnel $at, $zero, .L80B8D370
/* 002F4 80B8D344 86280000 */ lh $t0, 0x0000($s1) ## 00000000
/* 002F8 80B8D348 0C000B84 */ jal LogUtils_LogThreadId
/* 002FC 80B8D34C 24050209 */ addiu $a1, $zero, 0x0209 ## $a1 = 00000209
/* 00300 80B8D350 3C0480B9 */ lui $a0, %hi(D_80B8E8BC) ## $a0 = 80B90000
/* 00304 80B8D354 3C0580B9 */ lui $a1, %hi(D_80B8E8D4) ## $a1 = 80B90000
/* 00308 80B8D358 24A5E8D4 */ addiu $a1, $a1, %lo(D_80B8E8D4) ## $a1 = 80B8E8D4
/* 0030C 80B8D35C 0C00084C */ jal osSyncPrintf
/* 00310 80B8D360 2484E8BC */ addiu $a0, $a0, %lo(D_80B8E8BC) ## $a0 = 80B8E8BC
/* 00314 80B8D364 0C00B55C */ jal Actor_Kill
/* 00318 80B8D368 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 0031C 80B8D36C 86280000 */ lh $t0, 0x0000($s1) ## 00000000
.L80B8D370:
/* 00320 80B8D370 260402A0 */ addiu $a0, $s0, 0x02A0 ## $a0 = 000002A0
/* 00324 80B8D374 44882000 */ mtc1 $t0, $f4 ## $f4 = 0.00
/* 00328 80B8D378 00000000 */ nop
/* 0032C 80B8D37C 468021A0 */ cvt.s.w $f6, $f4
/* 00330 80B8D380 E606027C */ swc1 $f6, 0x027C($s0) ## 0000027C
/* 00334 80B8D384 86290002 */ lh $t1, 0x0002($s1) ## 00000002
/* 00338 80B8D388 44894000 */ mtc1 $t1, $f8 ## $f8 = 0.00
/* 0033C 80B8D38C 240900FF */ addiu $t1, $zero, 0x00FF ## $t1 = 000000FF
/* 00340 80B8D390 468042A0 */ cvt.s.w $f10, $f8
/* 00344 80B8D394 E60A0280 */ swc1 $f10, 0x0280($s0) ## 00000280
/* 00348 80B8D398 862A0004 */ lh $t2, 0x0004($s1) ## 00000004
/* 0034C 80B8D39C 448A8000 */ mtc1 $t2, $f16 ## $f16 = 0.00
/* 00350 80B8D3A0 240A00FF */ addiu $t2, $zero, 0x00FF ## $t2 = 000000FF
/* 00354 80B8D3A4 468084A0 */ cvt.s.w $f18, $f16
/* 00358 80B8D3A8 E6120284 */ swc1 $f18, 0x0284($s0) ## 00000284
/* 0035C 80B8D3AC 862B000C */ lh $t3, 0x000C($s1) ## 0000000C
/* 00360 80B8D3B0 A60B0294 */ sh $t3, 0x0294($s0) ## 00000294
/* 00364 80B8D3B4 862C0006 */ lh $t4, 0x0006($s1) ## 00000006
/* 00368 80B8D3B8 240B00FF */ addiu $t3, $zero, 0x00FF ## $t3 = 000000FF
/* 0036C 80B8D3BC 448C2000 */ mtc1 $t4, $f4 ## $f4 = 0.00
/* 00370 80B8D3C0 240C0064 */ addiu $t4, $zero, 0x0064 ## $t4 = 00000064
/* 00374 80B8D3C4 468021A0 */ cvt.s.w $f6, $f4
/* 00378 80B8D3C8 C604027C */ lwc1 $f4, 0x027C($s0) ## 0000027C
/* 0037C 80B8D3CC E6060288 */ swc1 $f6, 0x0288($s0) ## 00000288
/* 00380 80B8D3D0 862D0008 */ lh $t5, 0x0008($s1) ## 00000008
/* 00384 80B8D3D4 4600218D */ trunc.w.s $f6, $f4
/* 00388 80B8D3D8 448D4000 */ mtc1 $t5, $f8 ## $f8 = 0.00
/* 0038C 80B8D3DC 44053000 */ mfc1 $a1, $f6
/* 00390 80B8D3E0 468042A0 */ cvt.s.w $f10, $f8
/* 00394 80B8D3E4 C6080280 */ lwc1 $f8, 0x0280($s0) ## 00000280
/* 00398 80B8D3E8 00052C00 */ sll $a1, $a1, 16
/* 0039C 80B8D3EC 00052C03 */ sra $a1, $a1, 16
/* 003A0 80B8D3F0 E60A028C */ swc1 $f10, 0x028C($s0) ## 0000028C
/* 003A4 80B8D3F4 862E000A */ lh $t6, 0x000A($s1) ## 0000000A
/* 003A8 80B8D3F8 4600428D */ trunc.w.s $f10, $f8
/* 003AC 80B8D3FC 448E8000 */ mtc1 $t6, $f16 ## $f16 = 0.00
/* 003B0 80B8D400 44065000 */ mfc1 $a2, $f10
/* 003B4 80B8D404 468084A0 */ cvt.s.w $f18, $f16
/* 003B8 80B8D408 C6100284 */ lwc1 $f16, 0x0284($s0) ## 00000284
/* 003BC 80B8D40C 00063400 */ sll $a2, $a2, 16
/* 003C0 80B8D410 00063403 */ sra $a2, $a2, 16
/* 003C4 80B8D414 E6120290 */ swc1 $f18, 0x0290($s0) ## 00000290
/* 003C8 80B8D418 4600848D */ trunc.w.s $f18, $f16
/* 003CC 80B8D41C 862F000E */ lh $t7, 0x000E($s1) ## 0000000E
/* 003D0 80B8D420 44079000 */ mfc1 $a3, $f18
/* 003D4 80B8D424 A60F0296 */ sh $t7, 0x0296($s0) ## 00000296
/* 003D8 80B8D428 AFA40030 */ sw $a0, 0x0030($sp)
/* 003DC 80B8D42C 00073C00 */ sll $a3, $a3, 16
/* 003E0 80B8D430 00073C03 */ sra $a3, $a3, 16
/* 003E4 80B8D434 AFAC001C */ sw $t4, 0x001C($sp)
/* 003E8 80B8D438 AFAB0018 */ sw $t3, 0x0018($sp)
/* 003EC 80B8D43C AFAA0014 */ sw $t2, 0x0014($sp)
/* 003F0 80B8D440 0C01E763 */ jal Lights_PointNoGlowSetInfo
/* 003F4 80B8D444 AFA90010 */ sw $t1, 0x0010($sp)
/* 003F8 80B8D448 8FA40044 */ lw $a0, 0x0044($sp)
/* 003FC 80B8D44C 8FA60030 */ lw $a2, 0x0030($sp)
/* 00400 80B8D450 0C01E9D9 */ jal LightContext_InsertLight
/* 00404 80B8D454 248507A8 */ addiu $a1, $a0, 0x07A8 ## $a1 = 000007A8
/* 00408 80B8D458 3C01C406 */ lui $at, 0xC406 ## $at = C4060000
/* 0040C 80B8D45C 44810000 */ mtc1 $at, $f0 ## $f0 = -536.00
/* 00410 80B8D460 3C0180B9 */ lui $at, %hi(D_80B8E924) ## $at = 80B90000
/* 00414 80B8D464 C422E924 */ lwc1 $f2, %lo(D_80B8E924)($at)
/* 00418 80B8D468 AE02029C */ sw $v0, 0x029C($s0) ## 0000029C
/* 0041C 80B8D46C 3C0180B9 */ lui $at, %hi(D_80B8E928) ## $at = 80B90000
/* 00420 80B8D470 E6000230 */ swc1 $f0, 0x0230($s0) ## 00000230
/* 00424 80B8D474 C424E928 */ lwc1 $f4, %lo(D_80B8E928)($at)
/* 00428 80B8D478 3C0180B9 */ lui $at, %hi(D_80B8E92C) ## $at = 80B90000
/* 0042C 80B8D47C 44806000 */ mtc1 $zero, $f12 ## $f12 = 0.00
/* 00430 80B8D480 E6040234 */ swc1 $f4, 0x0234($s0) ## 00000234
/* 00434 80B8D484 C426E92C */ lwc1 $f6, %lo(D_80B8E92C)($at)
/* 00438 80B8D488 3C0180B9 */ lui $at, %hi(D_80B8E930) ## $at = 80B90000
/* 0043C 80B8D48C E6000248 */ swc1 $f0, 0x0248($s0) ## 00000248
/* 00440 80B8D490 E60C0240 */ swc1 $f12, 0x0240($s0) ## 00000240
/* 00444 80B8D494 E606023C */ swc1 $f6, 0x023C($s0) ## 0000023C
/* 00448 80B8D498 C428E930 */ lwc1 $f8, %lo(D_80B8E930)($at)
/* 0044C 80B8D49C 3C0180B9 */ lui $at, %hi(D_80B8E934) ## $at = 80B90000
/* 00450 80B8D4A0 2605014C */ addiu $a1, $s0, 0x014C ## $a1 = 0000014C
/* 00454 80B8D4A4 E608024C */ swc1 $f8, 0x024C($s0) ## 0000024C
/* 00458 80B8D4A8 C42AE934 */ lwc1 $f10, %lo(D_80B8E934)($at)
/* 0045C 80B8D4AC 3C014448 */ lui $at, 0x4448 ## $at = 44480000
/* 00460 80B8D4B0 44818000 */ mtc1 $at, $f16 ## $f16 = 800.00
/* 00464 80B8D4B4 3C01C448 */ lui $at, 0xC448 ## $at = C4480000
/* 00468 80B8D4B8 44819000 */ mtc1 $at, $f18 ## $f18 = -800.00
/* 0046C 80B8D4BC E6020260 */ swc1 $f2, 0x0260($s0) ## 00000260
/* 00470 80B8D4C0 E602026C */ swc1 $f2, 0x026C($s0) ## 0000026C
/* 00474 80B8D4C4 E60C0258 */ swc1 $f12, 0x0258($s0) ## 00000258
/* 00478 80B8D4C8 E60A0254 */ swc1 $f10, 0x0254($s0) ## 00000254
/* 0047C 80B8D4CC E6100264 */ swc1 $f16, 0x0264($s0) ## 00000264
/* 00480 80B8D4D0 E6120270 */ swc1 $f18, 0x0270($s0) ## 00000270
/* 00484 80B8D4D4 922D001F */ lbu $t5, 0x001F($s1) ## 0000001F
/* 00488 80B8D4D8 8FA40044 */ lw $a0, 0x0044($sp)
/* 0048C 80B8D4DC 31AE0002 */ andi $t6, $t5, 0x0002 ## $t6 = 00000000
/* 00490 80B8D4E0 51C00012 */ beql $t6, $zero, .L80B8D52C
/* 00494 80B8D4E4 261101AC */ addiu $s1, $s0, 0x01AC ## $s1 = 000001AC
/* 00498 80B8D4E8 0C016EFE */ jal Collider_InitJntSph
/* 0049C 80B8D4EC AFA50030 */ sw $a1, 0x0030($sp)
/* 004A0 80B8D4F0 3C0780B9 */ lui $a3, %hi(D_80B8E6E8) ## $a3 = 80B90000
/* 004A4 80B8D4F4 260F016C */ addiu $t7, $s0, 0x016C ## $t7 = 0000016C
/* 004A8 80B8D4F8 8FA50030 */ lw $a1, 0x0030($sp)
/* 004AC 80B8D4FC AFAF0010 */ sw $t7, 0x0010($sp)
/* 004B0 80B8D500 24E7E6E8 */ addiu $a3, $a3, %lo(D_80B8E6E8) ## $a3 = 80B8E6E8
/* 004B4 80B8D504 8FA40044 */ lw $a0, 0x0044($sp)
/* 004B8 80B8D508 0C017014 */ jal Collider_SetJntSph
/* 004BC 80B8D50C 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 004C0 80B8D510 9238001F */ lbu $t8, 0x001F($s1) ## 000001CB
/* 004C4 80B8D514 33190004 */ andi $t9, $t8, 0x0004 ## $t9 = 00000000
/* 004C8 80B8D518 57200004 */ bnel $t9, $zero, .L80B8D52C
/* 004CC 80B8D51C 261101AC */ addiu $s1, $s0, 0x01AC ## $s1 = 000001AC
/* 004D0 80B8D520 0C2E3414 */ jal func_80B8D050
/* 004D4 80B8D524 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 004D8 80B8D528 261101AC */ addiu $s1, $s0, 0x01AC ## $s1 = 000001AC
.L80B8D52C:
/* 004DC 80B8D52C 02202825 */ or $a1, $s1, $zero ## $a1 = 000001AC
/* 004E0 80B8D530 0C017406 */ jal Collider_InitQuad
/* 004E4 80B8D534 8FA40044 */ lw $a0, 0x0044($sp)
/* 004E8 80B8D538 3C0780B9 */ lui $a3, %hi(D_80B8E674) ## $a3 = 80B90000
/* 004EC 80B8D53C 24E7E674 */ addiu $a3, $a3, %lo(D_80B8E674) ## $a3 = 80B8E674
/* 004F0 80B8D540 8FA40044 */ lw $a0, 0x0044($sp)
/* 004F4 80B8D544 02202825 */ or $a1, $s1, $zero ## $a1 = 000001AC
/* 004F8 80B8D548 0C017441 */ jal Collider_SetQuad
/* 004FC 80B8D54C 02003025 */ or $a2, $s0, $zero ## $a2 = 00000000
/* 00500 80B8D550 8603001C */ lh $v1, 0x001C($s0) ## 0000001C
/* 00504 80B8D554 24010005 */ addiu $at, $zero, 0x0005 ## $at = 00000005
/* 00508 80B8D558 2408FFFF */ addiu $t0, $zero, 0xFFFF ## $t0 = FFFFFFFF
/* 0050C 80B8D55C 10610005 */ beq $v1, $at, .L80B8D574
/* 00510 80B8D560 24010007 */ addiu $at, $zero, 0x0007 ## $at = 00000007
/* 00514 80B8D564 10610003 */ beq $v1, $at, .L80B8D574
/* 00518 80B8D568 24010008 */ addiu $at, $zero, 0x0008 ## $at = 00000008
/* 0051C 80B8D56C 54610003 */ bnel $v1, $at, .L80B8D57C
/* 00520 80B8D570 8FBF002C */ lw $ra, 0x002C($sp)
.L80B8D574:
/* 00524 80B8D574 A2080003 */ sb $t0, 0x0003($s0) ## 00000003
/* 00528 80B8D578 8FBF002C */ lw $ra, 0x002C($sp)
.L80B8D57C:
/* 0052C 80B8D57C 8FB00024 */ lw $s0, 0x0024($sp)
/* 00530 80B8D580 8FB10028 */ lw $s1, 0x0028($sp)
/* 00534 80B8D584 03E00008 */ jr $ra
/* 00538 80B8D588 27BD0040 */ addiu $sp, $sp, 0x0040 ## $sp = 00000000

View file

@ -1,66 +0,0 @@
glabel MirRay_Update
/* 005B4 80B8D604 27BDFFD0 */ addiu $sp, $sp, 0xFFD0 ## $sp = FFFFFFD0
/* 005B8 80B8D608 AFBF001C */ sw $ra, 0x001C($sp)
/* 005BC 80B8D60C AFB10018 */ sw $s1, 0x0018($sp)
/* 005C0 80B8D610 AFB00014 */ sw $s0, 0x0014($sp)
/* 005C4 80B8D614 8CAE1C44 */ lw $t6, 0x1C44($a1) ## 00001C44
/* 005C8 80B8D618 3C0180B9 */ lui $at, %hi(D_80B8E670) ## $at = 80B90000
/* 005CC 80B8D61C A020E670 */ sb $zero, %lo(D_80B8E670)($at)
/* 005D0 80B8D620 AFAE0024 */ sw $t6, 0x0024($sp)
/* 005D4 80B8D624 908F02AE */ lbu $t7, 0x02AE($a0) ## 000002AE
/* 005D8 80B8D628 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 005DC 80B8D62C 00A08825 */ or $s1, $a1, $zero ## $s1 = 00000000
/* 005E0 80B8D630 55E0002B */ bnel $t7, $zero, .L80B8D6E0
/* 005E4 80B8D634 8FBF001C */ lw $ra, 0x001C($sp)
/* 005E8 80B8D638 8498001C */ lh $t8, 0x001C($a0) ## 0000001C
/* 005EC 80B8D63C 3C0280B9 */ lui $v0, %hi(D_80B8E717) ## $v0 = 80B90000
/* 005F0 80B8D640 0018C940 */ sll $t9, $t8, 5
/* 005F4 80B8D644 00591021 */ addu $v0, $v0, $t9
/* 005F8 80B8D648 9042E717 */ lbu $v0, %lo(D_80B8E717)($v0)
/* 005FC 80B8D64C 30480002 */ andi $t0, $v0, 0x0002 ## $t0 = 00000000
/* 00600 80B8D650 1100000B */ beq $t0, $zero, .L80B8D680
/* 00604 80B8D654 30490004 */ andi $t1, $v0, 0x0004 ## $t1 = 00000000
/* 00608 80B8D658 51200004 */ beql $t1, $zero, .L80B8D66C
/* 0060C 80B8D65C 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 00610 80B8D660 0C2E3414 */ jal func_80B8D050
/* 00614 80B8D664 00000000 */ nop
/* 00618 80B8D668 3C010001 */ lui $at, 0x0001 ## $at = 00010000
.L80B8D66C:
/* 0061C 80B8D66C 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 00620 80B8D670 02212821 */ addu $a1, $s1, $at
/* 00624 80B8D674 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 00628 80B8D678 0C0175E7 */ jal CollisionCheck_SetAT
## CollisionCheck_setAT
/* 0062C 80B8D67C 2606014C */ addiu $a2, $s0, 0x014C ## $a2 = 0000014C
.L80B8D680:
/* 00630 80B8D680 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 00634 80B8D684 C606022C */ lwc1 $f6, 0x022C($s0) ## 0000022C
/* 00638 80B8D688 3C010001 */ lui $at, 0x0001 ## $at = 00010000
/* 0063C 80B8D68C 34211E60 */ ori $at, $at, 0x1E60 ## $at = 00011E60
/* 00640 80B8D690 4606203C */ c.lt.s $f4, $f6
/* 00644 80B8D694 02212821 */ addu $a1, $s1, $at
/* 00648 80B8D698 02202025 */ or $a0, $s1, $zero ## $a0 = 00000000
/* 0064C 80B8D69C 45020004 */ bc1fl .L80B8D6B0
/* 00650 80B8D6A0 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 00654 80B8D6A4 0C0175E7 */ jal CollisionCheck_SetAT
## CollisionCheck_setAT
/* 00658 80B8D6A8 260601AC */ addiu $a2, $s0, 0x01AC ## $a2 = 000001AC
/* 0065C 80B8D6AC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
.L80B8D6B0:
/* 00660 80B8D6B0 0C2E3444 */ jal func_80B8D110
/* 00664 80B8D6B4 02202825 */ or $a1, $s1, $zero ## $a1 = 00000000
/* 00668 80B8D6B8 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00
/* 0066C 80B8D6BC C60A022C */ lwc1 $f10, 0x022C($s0) ## 0000022C
/* 00670 80B8D6C0 8FA40024 */ lw $a0, 0x0024($sp)
/* 00674 80B8D6C4 460A403C */ c.lt.s $f8, $f10
/* 00678 80B8D6C8 00000000 */ nop
/* 0067C 80B8D6CC 45020004 */ bc1fl .L80B8D6E0
/* 00680 80B8D6D0 8FBF001C */ lw $ra, 0x001C($sp)
/* 00684 80B8D6D4 0C00BE3C */ jal func_8002F8F0
/* 00688 80B8D6D8 24051049 */ addiu $a1, $zero, 0x1049 ## $a1 = 00001049
/* 0068C 80B8D6DC 8FBF001C */ lw $ra, 0x001C($sp)
.L80B8D6E0:
/* 00690 80B8D6E0 8FB00014 */ lw $s0, 0x0014($sp)
/* 00694 80B8D6E4 8FB10018 */ lw $s1, 0x0018($sp)
/* 00698 80B8D6E8 03E00008 */ jr $ra
/* 0069C 80B8D6EC 27BD0030 */ addiu $sp, $sp, 0x0030 ## $sp = 00000000

View file

@ -1,49 +0,0 @@
glabel func_80B8D050
/* 00000 80B8D050 848E001C */ lh $t6, 0x001C($a0) ## 0000001C
/* 00004 80B8D054 C482027C */ lwc1 $f2, 0x027C($a0) ## 0000027C
/* 00008 80B8D058 C4840288 */ lwc1 $f4, 0x0288($a0) ## 00000288
/* 0000C 80B8D05C 3C1880B9 */ lui $t8, %hi(D_80B8E6F8) ## $t8 = 80B90000
/* 00010 80B8D060 2718E6F8 */ addiu $t8, $t8, %lo(D_80B8E6F8) ## $t8 = 80B8E6F8
/* 00014 80B8D064 000E7940 */ sll $t7, $t6, 5
/* 00018 80B8D068 46022181 */ sub.s $f6, $f4, $f2
/* 0001C 80B8D06C 01F81021 */ addu $v0, $t7, $t8
/* 00020 80B8D070 C44C0010 */ lwc1 $f12, 0x0010($v0) ## 00000010
/* 00024 80B8D074 C488028C */ lwc1 $f8, 0x028C($a0) ## 0000028C
/* 00028 80B8D078 C48A0280 */ lwc1 $f10, 0x0280($a0) ## 00000280
/* 0002C 80B8D07C 460C3002 */ mul.s $f0, $f6, $f12
/* 00030 80B8D080 C4860284 */ lwc1 $f6, 0x0284($a0) ## 00000284
/* 00034 80B8D084 460A4481 */ sub.s $f18, $f8, $f10
/* 00038 80B8D088 C4840290 */ lwc1 $f4, 0x0290($a0) ## 00000290
/* 0003C 80B8D08C 8C890168 */ lw $t1, 0x0168($a0) ## 00000168
/* 00040 80B8D090 460C9382 */ mul.s $f14, $f18, $f12
/* 00044 80B8D094 46001280 */ add.s $f10, $f2, $f0
/* 00048 80B8D098 46062201 */ sub.s $f8, $f4, $f6
/* 0004C 80B8D09C 4600548D */ trunc.w.s $f18, $f10
/* 00050 80B8D0A0 460C4402 */ mul.s $f16, $f8, $f12
/* 00054 80B8D0A4 44089000 */ mfc1 $t0, $f18
/* 00058 80B8D0A8 00000000 */ nop
/* 0005C 80B8D0AC A5280030 */ sh $t0, 0x0030($t1) ## 00000030
/* 00060 80B8D0B0 C4840280 */ lwc1 $f4, 0x0280($a0) ## 00000280
/* 00064 80B8D0B4 8C8C0168 */ lw $t4, 0x0168($a0) ## 00000168
/* 00068 80B8D0B8 460E2180 */ add.s $f6, $f4, $f14
/* 0006C 80B8D0BC 4600320D */ trunc.w.s $f8, $f6
/* 00070 80B8D0C0 440B4000 */ mfc1 $t3, $f8
/* 00074 80B8D0C4 00000000 */ nop
/* 00078 80B8D0C8 A58B0032 */ sh $t3, 0x0032($t4) ## 00000032
/* 0007C 80B8D0CC C48A0284 */ lwc1 $f10, 0x0284($a0) ## 00000284
/* 00080 80B8D0D0 8C8F0168 */ lw $t7, 0x0168($a0) ## 00000168
/* 00084 80B8D0D4 46105480 */ add.s $f18, $f10, $f16
/* 00088 80B8D0D8 4600910D */ trunc.w.s $f4, $f18
/* 0008C 80B8D0DC 440E2000 */ mfc1 $t6, $f4
/* 00090 80B8D0E0 00000000 */ nop
/* 00094 80B8D0E4 A5EE0034 */ sh $t6, 0x0034($t7) ## 00000034
/* 00098 80B8D0E8 84580014 */ lh $t8, 0x0014($v0) ## 00000014
/* 0009C 80B8D0EC 8C830168 */ lw $v1, 0x0168($a0) ## 00000168
/* 000A0 80B8D0F0 44983000 */ mtc1 $t8, $f6 ## $f6 = -0.00
/* 000A4 80B8D0F4 C46A0038 */ lwc1 $f10, 0x0038($v1) ## 00000038
/* 000A8 80B8D0F8 46803220 */ cvt.s.w $f8, $f6
/* 000AC 80B8D0FC 460A4482 */ mul.s $f18, $f8, $f10
/* 000B0 80B8D100 4600910D */ trunc.w.s $f4, $f18
/* 000B4 80B8D104 44082000 */ mfc1 $t0, $f4
/* 000B8 80B8D108 03E00008 */ jr $ra
/* 000BC 80B8D10C A4680036 */ sh $t0, 0x0036($v1) ## 00000036

View file

@ -1,115 +0,0 @@
glabel func_80B8D110
/* 000C0 80B8D110 27BDFFA8 */ addiu $sp, $sp, 0xFFA8 ## $sp = FFFFFFA8
/* 000C4 80B8D114 AFBF002C */ sw $ra, 0x002C($sp)
/* 000C8 80B8D118 AFB10028 */ sw $s1, 0x0028($sp)
/* 000CC 80B8D11C AFB00024 */ sw $s0, 0x0024($sp)
/* 000D0 80B8D120 AFA5005C */ sw $a1, 0x005C($sp)
/* 000D4 80B8D124 8CA31C44 */ lw $v1, 0x1C44($a1) ## 00001C44
/* 000D8 80B8D128 848F001C */ lh $t7, 0x001C($a0) ## 0000001C
/* 000DC 80B8D12C 3C0141F0 */ lui $at, 0x41F0 ## $at = 41F00000
/* 000E0 80B8D130 C46A002C */ lwc1 $f10, 0x002C($v1) ## 0000002C
/* 000E4 80B8D134 C4640028 */ lwc1 $f4, 0x0028($v1) ## 00000028
/* 000E8 80B8D138 8C660024 */ lw $a2, 0x0024($v1) ## 00000024
/* 000EC 80B8D13C 44813000 */ mtc1 $at, $f6 ## $f6 = 30.00
/* 000F0 80B8D140 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 000F4 80B8D144 E7AA0010 */ swc1 $f10, 0x0010($sp)
/* 000F8 80B8D148 86080294 */ lh $t0, 0x0294($s0) ## 00000294
/* 000FC 80B8D14C 46062200 */ add.s $f8, $f4, $f6
/* 00100 80B8D150 3C1980B9 */ lui $t9, %hi(D_80B8E6F8) ## $t9 = 80B90000
/* 00104 80B8D154 AFA80014 */ sw $t0, 0x0014($sp)
/* 00108 80B8D158 86090296 */ lh $t1, 0x0296($s0) ## 00000296
/* 0010C 80B8D15C 2739E6F8 */ addiu $t9, $t9, %lo(D_80B8E6F8) ## $t9 = 80B8E6F8
/* 00110 80B8D160 44074000 */ mfc1 $a3, $f8
/* 00114 80B8D164 26050288 */ addiu $a1, $s0, 0x0288 ## $a1 = 00000288
/* 00118 80B8D168 2484027C */ addiu $a0, $a0, 0x027C ## $a0 = 0000027C
/* 0011C 80B8D16C 000FC140 */ sll $t8, $t7, 5
/* 00120 80B8D170 03198821 */ addu $s1, $t8, $t9
/* 00124 80B8D174 AFA40038 */ sw $a0, 0x0038($sp)
/* 00128 80B8D178 AFA50034 */ sw $a1, 0x0034($sp)
/* 0012C 80B8D17C AFA30054 */ sw $v1, 0x0054($sp)
/* 00130 80B8D180 0C2E3901 */ jal func_80B8E404
/* 00134 80B8D184 AFA90018 */ sw $t1, 0x0018($sp)
/* 00138 80B8D188 8FA30054 */ lw $v1, 0x0054($sp)
/* 0013C 80B8D18C 10400038 */ beq $v0, $zero, .L80B8D270
/* 00140 80B8D190 8FA50038 */ lw $a1, 0x0038($sp)
/* 00144 80B8D194 922A001F */ lbu $t2, 0x001F($s1) ## 0000001F
/* 00148 80B8D198 27A60044 */ addiu $a2, $sp, 0x0044 ## $a2 = FFFFFFEC
/* 0014C 80B8D19C 8FA40034 */ lw $a0, 0x0034($sp)
/* 00150 80B8D1A0 314B0008 */ andi $t3, $t2, 0x0008 ## $t3 = 00000000
/* 00154 80B8D1A4 11600005 */ beq $t3, $zero, .L80B8D1BC
/* 00158 80B8D1A8 00000000 */ nop
/* 0015C 80B8D1AC 0C01DFB4 */ jal Math_Vec3f_Diff
## Vec3f_Sub
/* 00160 80B8D1B0 24640024 */ addiu $a0, $v1, 0x0024 ## $a0 = 00000024
/* 00164 80B8D1B4 10000004 */ beq $zero, $zero, .L80B8D1C8
/* 00168 80B8D1B8 C6200018 */ lwc1 $f0, 0x0018($s1) ## 00000018
.L80B8D1BC:
/* 0016C 80B8D1BC 0C01DFB4 */ jal Math_Vec3f_Diff
## Vec3f_Sub
/* 00170 80B8D1C0 27A60044 */ addiu $a2, $sp, 0x0044 ## $a2 = FFFFFFEC
/* 00174 80B8D1C4 C6200018 */ lwc1 $f0, 0x0018($s1) ## 00000018
.L80B8D1C8:
/* 00178 80B8D1C8 C7B00044 */ lwc1 $f16, 0x0044($sp)
/* 0017C 80B8D1CC C604027C */ lwc1 $f4, 0x027C($s0) ## 0000027C
/* 00180 80B8D1D0 C7AA0048 */ lwc1 $f10, 0x0048($sp)
/* 00184 80B8D1D4 46100482 */ mul.s $f18, $f0, $f16
/* 00188 80B8D1D8 26040298 */ addiu $a0, $s0, 0x0298 ## $a0 = 00000298
/* 0018C 80B8D1DC 24060006 */ addiu $a2, $zero, 0x0006 ## $a2 = 00000006
/* 00190 80B8D1E0 460A0402 */ mul.s $f16, $f0, $f10
/* 00194 80B8D1E4 46049180 */ add.s $f6, $f18, $f4
/* 00198 80B8D1E8 4600320D */ trunc.w.s $f8, $f6
/* 0019C 80B8D1EC 440D4000 */ mfc1 $t5, $f8
/* 001A0 80B8D1F0 C7A8004C */ lwc1 $f8, 0x004C($sp)
/* 001A4 80B8D1F4 A7AD003C */ sh $t5, 0x003C($sp)
/* 001A8 80B8D1F8 C6120280 */ lwc1 $f18, 0x0280($s0) ## 00000280
/* 001AC 80B8D1FC 46080282 */ mul.s $f10, $f0, $f8
/* 001B0 80B8D200 46128100 */ add.s $f4, $f16, $f18
/* 001B4 80B8D204 4600218D */ trunc.w.s $f6, $f4
/* 001B8 80B8D208 440F3000 */ mfc1 $t7, $f6
/* 001BC 80B8D20C 00000000 */ nop
/* 001C0 80B8D210 A7AF003E */ sh $t7, 0x003E($sp)
/* 001C4 80B8D214 C6100284 */ lwc1 $f16, 0x0284($s0) ## 00000284
/* 001C8 80B8D218 46105480 */ add.s $f18, $f10, $f16
/* 001CC 80B8D21C 4600910D */ trunc.w.s $f4, $f18
/* 001D0 80B8D220 44192000 */ mfc1 $t9, $f4
/* 001D4 80B8D224 00000000 */ nop
/* 001D8 80B8D228 A7B90040 */ sh $t9, 0x0040($sp)
/* 001DC 80B8D22C 0C01DE5F */ jal Math_ApproxS
/* 001E0 80B8D230 86250016 */ lh $a1, 0x0016($s1) ## 00000016
/* 001E4 80B8D234 9228001C */ lbu $t0, 0x001C($s1) ## 0000001C
/* 001E8 80B8D238 260402A0 */ addiu $a0, $s0, 0x02A0 ## $a0 = 000002A0
/* 001EC 80B8D23C 87A5003C */ lh $a1, 0x003C($sp)
/* 001F0 80B8D240 AFA80010 */ sw $t0, 0x0010($sp)
/* 001F4 80B8D244 9229001D */ lbu $t1, 0x001D($s1) ## 0000001D
/* 001F8 80B8D248 87A6003E */ lh $a2, 0x003E($sp)
/* 001FC 80B8D24C 87A70040 */ lh $a3, 0x0040($sp)
/* 00200 80B8D250 AFA90014 */ sw $t1, 0x0014($sp)
/* 00204 80B8D254 922A001E */ lbu $t2, 0x001E($s1) ## 0000001E
/* 00208 80B8D258 AFAA0018 */ sw $t2, 0x0018($sp)
/* 0020C 80B8D25C 860B0298 */ lh $t3, 0x0298($s0) ## 00000298
/* 00210 80B8D260 0C01E763 */ jal Lights_PointNoGlowSetInfo
/* 00214 80B8D264 AFAB001C */ sw $t3, 0x001C($sp)
/* 00218 80B8D268 1000000D */ beq $zero, $zero, .L80B8D2A0
/* 0021C 80B8D26C 8FBF002C */ lw $ra, 0x002C($sp)
.L80B8D270:
/* 00220 80B8D270 26040298 */ addiu $a0, $s0, 0x0298 ## $a0 = 00000298
/* 00224 80B8D274 00002825 */ or $a1, $zero, $zero ## $a1 = 00000000
/* 00228 80B8D278 0C01DE5F */ jal Math_ApproxS
/* 0022C 80B8D27C 24060006 */ addiu $a2, $zero, 0x0006 ## $a2 = 00000006
/* 00230 80B8D280 860C0298 */ lh $t4, 0x0298($s0) ## 00000298
/* 00234 80B8D284 9225001C */ lbu $a1, 0x001C($s1) ## 0000001C
/* 00238 80B8D288 9226001D */ lbu $a2, 0x001D($s1) ## 0000001D
/* 0023C 80B8D28C 9227001E */ lbu $a3, 0x001E($s1) ## 0000001E
/* 00240 80B8D290 260402A0 */ addiu $a0, $s0, 0x02A0 ## $a0 = 000002A0
/* 00244 80B8D294 0C01E796 */ jal Lights_PointSetColorAndRadius
/* 00248 80B8D298 AFAC0010 */ sw $t4, 0x0010($sp)
/* 0024C 80B8D29C 8FBF002C */ lw $ra, 0x002C($sp)
.L80B8D2A0:
/* 00250 80B8D2A0 8FB00024 */ lw $s0, 0x0024($sp)
/* 00254 80B8D2A4 8FB10028 */ lw $s1, 0x0028($sp)
/* 00258 80B8D2A8 03E00008 */ jr $ra
/* 0025C 80B8D2AC 27BD0058 */ addiu $sp, $sp, 0x0058 ## $sp = 00000000

View file

@ -1,114 +0,0 @@
glabel func_80B8D6F0
/* 006A0 80B8D6F0 27BDFFA8 */ addiu $sp, $sp, 0xFFA8 ## $sp = FFFFFFA8
/* 006A4 80B8D6F4 AFBF002C */ sw $ra, 0x002C($sp)
/* 006A8 80B8D6F8 AFB00028 */ sw $s0, 0x0028($sp)
/* 006AC 80B8D6FC AFA5005C */ sw $a1, 0x005C($sp)
/* 006B0 80B8D700 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00
/* 006B4 80B8D704 8CA31C44 */ lw $v1, 0x1C44($a1) ## 00001C44
/* 006B8 80B8D708 00808025 */ or $s0, $a0, $zero ## $s0 = 00000000
/* 006BC 80B8D70C E490022C */ swc1 $f16, 0x022C($a0) ## 0000022C
/* 006C0 80B8D710 C4640A58 */ lwc1 $f4, 0x0A58($v1) ## 00000A58
/* 006C4 80B8D714 8C670A54 */ lw $a3, 0x0A54($v1) ## 00000A54
/* 006C8 80B8D718 8C660A50 */ lw $a2, 0x0A50($v1) ## 00000A50
/* 006CC 80B8D71C E7A40010 */ swc1 $f4, 0x0010($sp)
/* 006D0 80B8D720 860C0294 */ lh $t4, 0x0294($s0) ## 00000294
/* 006D4 80B8D724 26050288 */ addiu $a1, $s0, 0x0288 ## $a1 = 00000288
/* 006D8 80B8D728 2484027C */ addiu $a0, $a0, 0x027C ## $a0 = 0000027C
/* 006DC 80B8D72C AFAC0014 */ sw $t4, 0x0014($sp)
/* 006E0 80B8D730 860D0296 */ lh $t5, 0x0296($s0) ## 00000296
/* 006E4 80B8D734 AFA30038 */ sw $v1, 0x0038($sp)
/* 006E8 80B8D738 0C2E3901 */ jal func_80B8E404
/* 006EC 80B8D73C AFAD0018 */ sw $t5, 0x0018($sp)
/* 006F0 80B8D740 44808000 */ mtc1 $zero, $f16 ## $f16 = 0.00
/* 006F4 80B8D744 10400051 */ beq $v0, $zero, .L80B8D88C
/* 006F8 80B8D748 8FA30038 */ lw $v1, 0x0038($sp)
/* 006FC 80B8D74C 24620A20 */ addiu $v0, $v1, 0x0A20 ## $v0 = 00000A20
/* 00700 80B8D750 C4420020 */ lwc1 $f2, 0x0020($v0) ## 00000A40
/* 00704 80B8D754 C44C0024 */ lwc1 $f12, 0x0024($v0) ## 00000A44
/* 00708 80B8D758 C44E0028 */ lwc1 $f14, 0x0028($v0) ## 00000A48
/* 0070C 80B8D75C 46021202 */ mul.s $f8, $f2, $f2
/* 00710 80B8D760 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 00714 80B8D764 460C6282 */ mul.s $f10, $f12, $f12
/* 00718 80B8D768 460A4180 */ add.s $f6, $f8, $f10
/* 0071C 80B8D76C 460E7102 */ mul.s $f4, $f14, $f14
/* 00720 80B8D770 46062000 */ add.s $f0, $f4, $f6
/* 00724 80B8D774 46000004 */ sqrt.s $f0, $f0
/* 00728 80B8D778 46100032 */ c.eq.s $f0, $f16
/* 0072C 80B8D77C 46000486 */ mov.s $f18, $f0
/* 00730 80B8D780 45020006 */ bc1fl .L80B8D79C
/* 00734 80B8D784 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
/* 00738 80B8D788 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 0073C 80B8D78C 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
/* 00740 80B8D790 10000005 */ beq $zero, $zero, .L80B8D7A8
/* 00744 80B8D794 E6020278 */ swc1 $f2, 0x0278($s0) ## 00000278
/* 00748 80B8D798 44811000 */ mtc1 $at, $f2 ## $f2 = 1.00
.L80B8D79C:
/* 0074C 80B8D79C 00000000 */ nop
/* 00750 80B8D7A0 46001203 */ div.s $f8, $f2, $f0
/* 00754 80B8D7A4 E6080278 */ swc1 $f8, 0x0278($s0) ## 00000278
.L80B8D7A8:
/* 00758 80B8D7A8 860E001C */ lh $t6, 0x001C($s0) ## 0000001C
/* 0075C 80B8D7AC 3C1880B9 */ lui $t8, %hi(D_80B8E717) ## $t8 = 80B90000
/* 00760 80B8D7B0 000E7940 */ sll $t7, $t6, 5
/* 00764 80B8D7B4 030FC021 */ addu $t8, $t8, $t7
/* 00768 80B8D7B8 9318E717 */ lbu $t8, %lo(D_80B8E717)($t8)
/* 0076C 80B8D7BC 33190001 */ andi $t9, $t8, 0x0001 ## $t9 = 00000000
/* 00770 80B8D7C0 53200004 */ beql $t9, $zero, .L80B8D7D4
/* 00774 80B8D7C4 C60A0288 */ lwc1 $f10, 0x0288($s0) ## 00000288
/* 00778 80B8D7C8 10000030 */ beq $zero, $zero, .L80B8D88C
/* 0077C 80B8D7CC E602022C */ swc1 $f2, 0x022C($s0) ## 0000022C
/* 00780 80B8D7D0 C60A0288 */ lwc1 $f10, 0x0288($s0) ## 00000288
.L80B8D7D4:
/* 00784 80B8D7D4 C604027C */ lwc1 $f4, 0x027C($s0) ## 0000027C
/* 00788 80B8D7D8 46045181 */ sub.s $f6, $f10, $f4
/* 0078C 80B8D7DC E7A6004C */ swc1 $f6, 0x004C($sp)
/* 00790 80B8D7E0 C60A0280 */ lwc1 $f10, 0x0280($s0) ## 00000280
/* 00794 80B8D7E4 C608028C */ lwc1 $f8, 0x028C($s0) ## 0000028C
/* 00798 80B8D7E8 460A4101 */ sub.s $f4, $f8, $f10
/* 0079C 80B8D7EC E7A40050 */ swc1 $f4, 0x0050($sp)
/* 007A0 80B8D7F0 C6080284 */ lwc1 $f8, 0x0284($s0) ## 00000284
/* 007A4 80B8D7F4 C6060290 */ lwc1 $f6, 0x0290($s0) ## 00000290
/* 007A8 80B8D7F8 46083281 */ sub.s $f10, $f6, $f8
/* 007AC 80B8D7FC C7A8004C */ lwc1 $f8, 0x004C($sp)
/* 007B0 80B8D800 E7AA0054 */ swc1 $f10, 0x0054($sp)
/* 007B4 80B8D804 C4440020 */ lwc1 $f4, 0x0020($v0) ## 00000A40
/* 007B8 80B8D808 46002187 */ neg.s $f6, $f4
/* 007BC 80B8D80C C4440024 */ lwc1 $f4, 0x0024($v0) ## 00000A44
/* 007C0 80B8D810 46083282 */ mul.s $f10, $f6, $f8
/* 007C4 80B8D814 C7A60050 */ lwc1 $f6, 0x0050($sp)
/* 007C8 80B8D818 E7A80030 */ swc1 $f8, 0x0030($sp)
/* 007CC 80B8D81C C4480028 */ lwc1 $f8, 0x0028($v0) ## 00000A48
/* 007D0 80B8D820 46062102 */ mul.s $f4, $f4, $f6
/* 007D4 80B8D824 46045281 */ sub.s $f10, $f10, $f4
/* 007D8 80B8D828 C7A40054 */ lwc1 $f4, 0x0054($sp)
/* 007DC 80B8D82C 46082202 */ mul.s $f8, $f4, $f8
/* 007E0 80B8D830 46085081 */ sub.s $f2, $f10, $f8
/* 007E4 80B8D834 C7AA0030 */ lwc1 $f10, 0x0030($sp)
/* 007E8 80B8D838 4610103C */ c.lt.s $f2, $f16
/* 007EC 80B8D83C 00000000 */ nop
/* 007F0 80B8D840 45020013 */ bc1fl .L80B8D890
/* 007F4 80B8D844 8FBF002C */ lw $ra, 0x002C($sp)
/* 007F8 80B8D848 46042202 */ mul.s $f8, $f4, $f4
/* 007FC 80B8D84C 46109032 */ c.eq.s $f18, $f16
/* 00800 80B8D850 460A5282 */ mul.s $f10, $f10, $f10
/* 00804 80B8D854 00000000 */ nop
/* 00808 80B8D858 46063182 */ mul.s $f6, $f6, $f6
/* 0080C 80B8D85C 46065100 */ add.s $f4, $f10, $f6
/* 00810 80B8D860 46044000 */ add.s $f0, $f8, $f4
/* 00814 80B8D864 45010009 */ bc1t .L80B8D88C
/* 00818 80B8D868 46000004 */ sqrt.s $f0, $f0
/* 0081C 80B8D86C 46100032 */ c.eq.s $f0, $f16
/* 00820 80B8D870 00000000 */ nop
/* 00824 80B8D874 45030006 */ bc1tl .L80B8D890
/* 00828 80B8D878 8FBF002C */ lw $ra, 0x002C($sp)
/* 0082C 80B8D87C 46009182 */ mul.s $f6, $f18, $f0
/* 00830 80B8D880 46001287 */ neg.s $f10, $f2
/* 00834 80B8D884 46065203 */ div.s $f8, $f10, $f6
/* 00838 80B8D888 E608022C */ swc1 $f8, 0x022C($s0) ## 0000022C
.L80B8D88C:
/* 0083C 80B8D88C 8FBF002C */ lw $ra, 0x002C($sp)
.L80B8D890:
/* 00840 80B8D890 8FB00028 */ lw $s0, 0x0028($sp)
/* 00844 80B8D894 27BD0058 */ addiu $sp, $sp, 0x0058 ## $sp = 00000000
/* 00848 80B8D898 03E00008 */ jr $ra
/* 0084C 80B8D89C 00000000 */ nop

View file

@ -1,122 +0,0 @@
glabel func_80B8D8A0
/* 00850 80B8D8A0 27BDFF60 */ addiu $sp, $sp, 0xFF60 ## $sp = FFFFFF60
/* 00854 80B8D8A4 AFBF0044 */ sw $ra, 0x0044($sp)
/* 00858 80B8D8A8 AFBE0040 */ sw $s8, 0x0040($sp)
/* 0085C 80B8D8AC AFB7003C */ sw $s7, 0x003C($sp)
/* 00860 80B8D8B0 AFB60038 */ sw $s6, 0x0038($sp)
/* 00864 80B8D8B4 AFB50034 */ sw $s5, 0x0034($sp)
/* 00868 80B8D8B8 AFB40030 */ sw $s4, 0x0030($sp)
/* 0086C 80B8D8BC AFB3002C */ sw $s3, 0x002C($sp)
/* 00870 80B8D8C0 AFB20028 */ sw $s2, 0x0028($sp)
/* 00874 80B8D8C4 AFB10024 */ sw $s1, 0x0024($sp)
/* 00878 80B8D8C8 AFB00020 */ sw $s0, 0x0020($sp)
/* 0087C 80B8D8CC 8CA21C44 */ lw $v0, 0x1C44($a1) ## 00001C44
/* 00880 80B8D8D0 C4860278 */ lwc1 $f6, 0x0278($a0) ## 00000278
/* 00884 80B8D8D4 C490022C */ lwc1 $f16, 0x022C($a0) ## 0000022C
/* 00888 80B8D8D8 C4440A40 */ lwc1 $f4, 0x0A40($v0) ## 00000A40
/* 0088C 80B8D8DC 3C0143C8 */ lui $at, 0x43C8 ## $at = 43C80000
/* 00890 80B8D8E0 44810000 */ mtc1 $at, $f0 ## $f0 = 400.00
/* 00894 80B8D8E4 46062202 */ mul.s $f8, $f4, $f6
/* 00898 80B8D8E8 00808825 */ or $s1, $a0, $zero ## $s1 = 00000000
/* 0089C 80B8D8EC 00C09025 */ or $s2, $a2, $zero ## $s2 = 00000000
/* 008A0 80B8D8F0 00009825 */ or $s3, $zero, $zero ## $s3 = 00000000
/* 008A4 80B8D8F4 24B407C0 */ addiu $s4, $a1, 0x07C0 ## $s4 = 000007C0
/* 008A8 80B8D8F8 27B50088 */ addiu $s5, $sp, 0x0088 ## $s5 = FFFFFFE8
/* 008AC 80B8D8FC 27B6007C */ addiu $s6, $sp, 0x007C ## $s6 = FFFFFFDC
/* 008B0 80B8D900 46004287 */ neg.s $f10, $f8
/* 008B4 80B8D904 27B70070 */ addiu $s7, $sp, 0x0070 ## $s7 = FFFFFFD0
/* 008B8 80B8D908 46105482 */ mul.s $f18, $f10, $f16
/* 008BC 80B8D90C 27BE006C */ addiu $s8, $sp, 0x006C ## $s8 = FFFFFFCC
/* 008C0 80B8D910 24500A20 */ addiu $s0, $v0, 0x0A20 ## $s0 = 00000A20
/* 008C4 80B8D914 46009102 */ mul.s $f4, $f18, $f0
/* 008C8 80B8D918 E7A40060 */ swc1 $f4, 0x0060($sp)
/* 008CC 80B8D91C C4880278 */ lwc1 $f8, 0x0278($a0) ## 00000278
/* 008D0 80B8D920 C4460A44 */ lwc1 $f6, 0x0A44($v0) ## 00000A44
/* 008D4 80B8D924 C492022C */ lwc1 $f18, 0x022C($a0) ## 0000022C
/* 008D8 80B8D928 46083282 */ mul.s $f10, $f6, $f8
/* 008DC 80B8D92C 46005407 */ neg.s $f16, $f10
/* 008E0 80B8D930 46128102 */ mul.s $f4, $f16, $f18
/* 008E4 80B8D934 00000000 */ nop
/* 008E8 80B8D938 46002182 */ mul.s $f6, $f4, $f0
/* 008EC 80B8D93C E7A60064 */ swc1 $f6, 0x0064($sp)
/* 008F0 80B8D940 C48A0278 */ lwc1 $f10, 0x0278($a0) ## 00000278
/* 008F4 80B8D944 C4480A48 */ lwc1 $f8, 0x0A48($v0) ## 00000A48
/* 008F8 80B8D948 C484022C */ lwc1 $f4, 0x022C($a0) ## 0000022C
/* 008FC 80B8D94C 460A4402 */ mul.s $f16, $f8, $f10
/* 00900 80B8D950 46008487 */ neg.s $f18, $f16
/* 00904 80B8D954 46049182 */ mul.s $f6, $f18, $f4
/* 00908 80B8D958 00000000 */ nop
/* 0090C 80B8D95C 46003202 */ mul.s $f8, $f6, $f0
/* 00910 80B8D960 E7A80068 */ swc1 $f8, 0x0068($sp)
.L80B8D964:
/* 00914 80B8D964 C60A0010 */ lwc1 $f10, 0x0010($s0) ## 00000A30
/* 00918 80B8D968 C6300234 */ lwc1 $f16, 0x0234($s1) ## 00000234
/* 0091C 80B8D96C C6240230 */ lwc1 $f4, 0x0230($s1) ## 00000230
/* 00920 80B8D970 C6060000 */ lwc1 $f6, 0x0000($s0) ## 00000A20
/* 00924 80B8D974 46105482 */ mul.s $f18, $f10, $f16
/* 00928 80B8D978 C60A0030 */ lwc1 $f10, 0x0030($s0) ## 00000A50
/* 0092C 80B8D97C 240E0001 */ addiu $t6, $zero, 0x0001 ## $t6 = 00000001
/* 00930 80B8D980 46062202 */ mul.s $f8, $f4, $f6
/* 00934 80B8D984 02802025 */ or $a0, $s4, $zero ## $a0 = 000007C0
/* 00938 80B8D988 02A02825 */ or $a1, $s5, $zero ## $a1 = FFFFFFE8
/* 0093C 80B8D98C 02C03025 */ or $a2, $s6, $zero ## $a2 = FFFFFFDC
/* 00940 80B8D990 02E03825 */ or $a3, $s7, $zero ## $a3 = FFFFFFD0
/* 00944 80B8D994 46085400 */ add.s $f16, $f10, $f8
/* 00948 80B8D998 46109100 */ add.s $f4, $f18, $f16
/* 0094C 80B8D99C E7A40088 */ swc1 $f4, 0x0088($sp)
/* 00950 80B8D9A0 C62A0234 */ lwc1 $f10, 0x0234($s1) ## 00000234
/* 00954 80B8D9A4 C6060014 */ lwc1 $f6, 0x0014($s0) ## 00000A34
/* 00958 80B8D9A8 C6320230 */ lwc1 $f18, 0x0230($s1) ## 00000230
/* 0095C 80B8D9AC C6100004 */ lwc1 $f16, 0x0004($s0) ## 00000A24
/* 00960 80B8D9B0 460A3202 */ mul.s $f8, $f6, $f10
/* 00964 80B8D9B4 C60A0034 */ lwc1 $f10, 0x0034($s0) ## 00000A54
/* 00968 80B8D9B8 46109182 */ mul.s $f6, $f18, $f16
/* 0096C 80B8D9BC 46065480 */ add.s $f18, $f10, $f6
/* 00970 80B8D9C0 46124400 */ add.s $f16, $f8, $f18
/* 00974 80B8D9C4 E7B0008C */ swc1 $f16, 0x008C($sp)
/* 00978 80B8D9C8 C6260234 */ lwc1 $f6, 0x0234($s1) ## 00000234
/* 0097C 80B8D9CC C60A0018 */ lwc1 $f10, 0x0018($s0) ## 00000A38
/* 00980 80B8D9D0 C6320230 */ lwc1 $f18, 0x0230($s1) ## 00000230
/* 00984 80B8D9D4 46065202 */ mul.s $f8, $f10, $f6
/* 00988 80B8D9D8 C60A0008 */ lwc1 $f10, 0x0008($s0) ## 00000A28
/* 0098C 80B8D9DC 460A9182 */ mul.s $f6, $f18, $f10
/* 00990 80B8D9E0 C6120038 */ lwc1 $f18, 0x0038($s0) ## 00000A58
/* 00994 80B8D9E4 AFAE0014 */ sw $t6, 0x0014($sp)
/* 00998 80B8D9E8 AFBE0010 */ sw $s8, 0x0010($sp)
/* 0099C 80B8D9EC 46069280 */ add.s $f10, $f18, $f6
/* 009A0 80B8D9F0 C7A60060 */ lwc1 $f6, 0x0060($sp)
/* 009A4 80B8D9F4 460A4480 */ add.s $f18, $f8, $f10
/* 009A8 80B8D9F8 C7AA0064 */ lwc1 $f10, 0x0064($sp)
/* 009AC 80B8D9FC 46043200 */ add.s $f8, $f6, $f4
/* 009B0 80B8DA00 C7A40068 */ lwc1 $f4, 0x0068($sp)
/* 009B4 80B8DA04 E7B20090 */ swc1 $f18, 0x0090($sp)
/* 009B8 80B8DA08 46105180 */ add.s $f6, $f10, $f16
/* 009BC 80B8DA0C E7A8007C */ swc1 $f8, 0x007C($sp)
/* 009C0 80B8DA10 46122200 */ add.s $f8, $f4, $f18
/* 009C4 80B8DA14 E7A60080 */ swc1 $f6, 0x0080($sp)
/* 009C8 80B8DA18 0C00F82E */ jal func_8003E0B8
/* 009CC 80B8DA1C E7A80084 */ swc1 $f8, 0x0084($sp)
/* 009D0 80B8DA20 10400004 */ beq $v0, $zero, .L80B8DA34
/* 009D4 80B8DA24 2631000C */ addiu $s1, $s1, 0x000C ## $s1 = 0000000C
/* 009D8 80B8DA28 8FAF006C */ lw $t7, 0x006C($sp)
/* 009DC 80B8DA2C 10000002 */ beq $zero, $zero, .L80B8DA38
/* 009E0 80B8DA30 AE4F004C */ sw $t7, 0x004C($s2) ## 0000004C
.L80B8DA34:
/* 009E4 80B8DA34 AE40004C */ sw $zero, 0x004C($s2) ## 0000004C
.L80B8DA38:
/* 009E8 80B8DA38 26730054 */ addiu $s3, $s3, 0x0054 ## $s3 = 00000054
/* 009EC 80B8DA3C 240101F8 */ addiu $at, $zero, 0x01F8 ## $at = 000001F8
/* 009F0 80B8DA40 1661FFC8 */ bne $s3, $at, .L80B8D964
/* 009F4 80B8DA44 26520054 */ addiu $s2, $s2, 0x0054 ## $s2 = 00000054
/* 009F8 80B8DA48 8FBF0044 */ lw $ra, 0x0044($sp)
/* 009FC 80B8DA4C 8FB00020 */ lw $s0, 0x0020($sp)
/* 00A00 80B8DA50 8FB10024 */ lw $s1, 0x0024($sp)
/* 00A04 80B8DA54 8FB20028 */ lw $s2, 0x0028($sp)
/* 00A08 80B8DA58 8FB3002C */ lw $s3, 0x002C($sp)
/* 00A0C 80B8DA5C 8FB40030 */ lw $s4, 0x0030($sp)
/* 00A10 80B8DA60 8FB50034 */ lw $s5, 0x0034($sp)
/* 00A14 80B8DA64 8FB60038 */ lw $s6, 0x0038($sp)
/* 00A18 80B8DA68 8FB7003C */ lw $s7, 0x003C($sp)
/* 00A1C 80B8DA6C 8FBE0040 */ lw $s8, 0x0040($sp)
/* 00A20 80B8DA70 03E00008 */ jr $ra
/* 00A24 80B8DA74 27BD00A0 */ addiu $sp, $sp, 0x00A0 ## $sp = 00000000

View file

@ -1,73 +0,0 @@
glabel func_80B8DA78
/* 00A28 80B8DA78 00802825 */ or $a1, $a0, $zero ## $a1 = 00000000
/* 00A2C 80B8DA7C 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 00A30 80B8DA80 240C0006 */ addiu $t4, $zero, 0x0006 ## $t4 = 00000006
/* 00A34 80B8DA84 240B0054 */ addiu $t3, $zero, 0x0054 ## $t3 = 00000054
.L80B8DA88:
/* 00A38 80B8DA88 24440001 */ addiu $a0, $v0, 0x0001 ## $a0 = 00000001
/* 00A3C 80B8DA8C 28810006 */ slti $at, $a0, 0x0006
/* 00A40 80B8DA90 10200036 */ beq $at, $zero, .L80B8DB6C
/* 00A44 80B8DA94 00801825 */ or $v1, $a0, $zero ## $v1 = 00000001
/* 00A48 80B8DA98 00027080 */ sll $t6, $v0, 2
/* 00A4C 80B8DA9C 01C27021 */ addu $t6, $t6, $v0
/* 00A50 80B8DAA0 000E7080 */ sll $t6, $t6, 2
/* 00A54 80B8DAA4 01C27021 */ addu $t6, $t6, $v0
/* 00A58 80B8DAA8 000E7080 */ sll $t6, $t6, 2
/* 00A5C 80B8DAAC 00AE3021 */ addu $a2, $a1, $t6
/* 00A60 80B8DAB0 8CC2004C */ lw $v0, 0x004C($a2) ## 0000004C
.L80B8DAB4:
/* 00A64 80B8DAB4 5040002B */ beql $v0, $zero, .L80B8DB64
/* 00A68 80B8DAB8 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000002
/* 00A6C 80B8DABC 006B0019 */ multu $v1, $t3
/* 00A70 80B8DAC0 00007812 */ mflo $t7
/* 00A74 80B8DAC4 00AF3821 */ addu $a3, $a1, $t7
/* 00A78 80B8DAC8 8CE8004C */ lw $t0, 0x004C($a3) ## 0000004C
/* 00A7C 80B8DACC 51000025 */ beql $t0, $zero, .L80B8DB64
/* 00A80 80B8DAD0 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000003
/* 00A84 80B8DAD4 84580008 */ lh $t8, 0x0008($v0) ## 00000008
/* 00A88 80B8DAD8 85190008 */ lh $t9, 0x0008($t0) ## 00000008
/* 00A8C 80B8DADC 03194823 */ subu $t1, $t8, $t9
/* 00A90 80B8DAE0 05200003 */ bltz $t1, .L80B8DAF0
/* 00A94 80B8DAE4 00095023 */ subu $t2, $zero, $t1
/* 00A98 80B8DAE8 10000001 */ beq $zero, $zero, .L80B8DAF0
/* 00A9C 80B8DAEC 01205025 */ or $t2, $t1, $zero ## $t2 = 00000000
.L80B8DAF0:
/* 00AA0 80B8DAF0 29410064 */ slti $at, $t2, 0x0064
/* 00AA4 80B8DAF4 5020001B */ beql $at, $zero, .L80B8DB64
/* 00AA8 80B8DAF8 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000004
/* 00AAC 80B8DAFC 844D000A */ lh $t5, 0x000A($v0) ## 0000000A
/* 00AB0 80B8DB00 850E000A */ lh $t6, 0x000A($t0) ## 0000000A
/* 00AB4 80B8DB04 01AE4823 */ subu $t1, $t5, $t6
/* 00AB8 80B8DB08 05200003 */ bltz $t1, .L80B8DB18
/* 00ABC 80B8DB0C 00095023 */ subu $t2, $zero, $t1
/* 00AC0 80B8DB10 10000001 */ beq $zero, $zero, .L80B8DB18
/* 00AC4 80B8DB14 01205025 */ or $t2, $t1, $zero ## $t2 = 00000000
.L80B8DB18:
/* 00AC8 80B8DB18 29410064 */ slti $at, $t2, 0x0064
/* 00ACC 80B8DB1C 50200011 */ beql $at, $zero, .L80B8DB64
/* 00AD0 80B8DB20 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000005
/* 00AD4 80B8DB24 844F000C */ lh $t7, 0x000C($v0) ## 0000000C
/* 00AD8 80B8DB28 8518000C */ lh $t8, 0x000C($t0) ## 0000000C
/* 00ADC 80B8DB2C 01F84823 */ subu $t1, $t7, $t8
/* 00AE0 80B8DB30 05200003 */ bltz $t1, .L80B8DB40
/* 00AE4 80B8DB34 00095023 */ subu $t2, $zero, $t1
/* 00AE8 80B8DB38 10000001 */ beq $zero, $zero, .L80B8DB40
/* 00AEC 80B8DB3C 01205025 */ or $t2, $t1, $zero ## $t2 = 00000000
.L80B8DB40:
/* 00AF0 80B8DB40 29410064 */ slti $at, $t2, 0x0064
/* 00AF4 80B8DB44 50200007 */ beql $at, $zero, .L80B8DB64
/* 00AF8 80B8DB48 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000006
/* 00AFC 80B8DB4C 8459000E */ lh $t9, 0x000E($v0) ## 0000000E
/* 00B00 80B8DB50 850D000E */ lh $t5, 0x000E($t0) ## 0000000E
/* 00B04 80B8DB54 572D0003 */ bnel $t9, $t5, .L80B8DB64
/* 00B08 80B8DB58 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000007
/* 00B0C 80B8DB5C ACE0004C */ sw $zero, 0x004C($a3) ## 0000004C
/* 00B10 80B8DB60 24630001 */ addiu $v1, $v1, 0x0001 ## $v1 = 00000008
.L80B8DB64:
/* 00B14 80B8DB64 546CFFD3 */ bnel $v1, $t4, .L80B8DAB4
/* 00B18 80B8DB68 8CC2004C */ lw $v0, 0x004C($a2) ## 0000004C
.L80B8DB6C:
/* 00B1C 80B8DB6C 148CFFC6 */ bne $a0, $t4, .L80B8DA88
/* 00B20 80B8DB70 00801025 */ or $v0, $a0, $zero ## $v0 = 00000001
/* 00B24 80B8DB74 03E00008 */ jr $ra
/* 00B28 80B8DB78 00000000 */ nop

View file

@ -1,359 +0,0 @@
.late_rodata
glabel D_80B8E938
.float 3.051851E-5
.text
glabel func_80B8DB7C
/* 00B2C 80B8DB7C 27BDFEB8 */ addiu $sp, $sp, 0xFEB8 ## $sp = FFFFFEB8
/* 00B30 80B8DB80 AFBF007C */ sw $ra, 0x007C($sp)
/* 00B34 80B8DB84 AFBE0078 */ sw $s8, 0x0078($sp)
/* 00B38 80B8DB88 AFB70074 */ sw $s7, 0x0074($sp)
/* 00B3C 80B8DB8C AFB60070 */ sw $s6, 0x0070($sp)
/* 00B40 80B8DB90 AFB5006C */ sw $s5, 0x006C($sp)
/* 00B44 80B8DB94 AFB40068 */ sw $s4, 0x0068($sp)
/* 00B48 80B8DB98 AFB30064 */ sw $s3, 0x0064($sp)
/* 00B4C 80B8DB9C AFB20060 */ sw $s2, 0x0060($sp)
/* 00B50 80B8DBA0 AFB1005C */ sw $s1, 0x005C($sp)
/* 00B54 80B8DBA4 AFB00058 */ sw $s0, 0x0058($sp)
/* 00B58 80B8DBA8 F7BE0050 */ sdc1 $f30, 0x0050($sp)
/* 00B5C 80B8DBAC F7BC0048 */ sdc1 $f28, 0x0048($sp)
/* 00B60 80B8DBB0 F7BA0040 */ sdc1 $f26, 0x0040($sp)
/* 00B64 80B8DBB4 F7B80038 */ sdc1 $f24, 0x0038($sp)
/* 00B68 80B8DBB8 F7B60030 */ sdc1 $f22, 0x0030($sp)
/* 00B6C 80B8DBBC F7B40028 */ sdc1 $f20, 0x0028($sp)
/* 00B70 80B8DBC0 8CB31C44 */ lw $s3, 0x1C44($a1) ## 00001C44
/* 00B74 80B8DBC4 C4920278 */ lwc1 $f18, 0x0278($a0) ## 00000278
/* 00B78 80B8DBC8 C48A022C */ lwc1 $f10, 0x022C($a0) ## 0000022C
/* 00B7C 80B8DBCC C6640A40 */ lwc1 $f4, 0x0A40($s3) ## 00000A40
/* 00B80 80B8DBD0 3C014396 */ lui $at, 0x4396 ## $at = 43960000
/* 00B84 80B8DBD4 44810000 */ mtc1 $at, $f0 ## $f0 = 300.00
/* 00B88 80B8DBD8 46122402 */ mul.s $f16, $f4, $f18
/* 00B8C 80B8DBDC 3C0143C8 */ lui $at, 0x43C8 ## $at = 43C80000
/* 00B90 80B8DBE0 44811000 */ mtc1 $at, $f2 ## $f2 = 400.00
/* 00B94 80B8DBE4 00C08825 */ or $s1, $a2, $zero ## $s1 = 00000000
/* 00B98 80B8DBE8 0080B825 */ or $s7, $a0, $zero ## $s7 = 00000000
/* 00B9C 80B8DBEC 27BE0130 */ addiu $s8, $sp, 0x0130 ## $s8 = FFFFFFE8
/* 00BA0 80B8DBF0 27AE0124 */ addiu $t6, $sp, 0x0124 ## $t6 = FFFFFFDC
/* 00BA4 80B8DBF4 46008207 */ neg.s $f8, $f16
/* 00BA8 80B8DBF8 03C03025 */ or $a2, $s8, $zero ## $a2 = FFFFFFE8
/* 00BAC 80B8DBFC 460A4182 */ mul.s $f6, $f8, $f10
/* 00BB0 80B8DC00 248401AC */ addiu $a0, $a0, 0x01AC ## $a0 = 000001AC
/* 00BB4 80B8DC04 27A500CC */ addiu $a1, $sp, 0x00CC ## $a1 = FFFFFF84
/* 00BB8 80B8DC08 27A700C0 */ addiu $a3, $sp, 0x00C0 ## $a3 = FFFFFF78
/* 00BBC 80B8DC0C 46023102 */ mul.s $f4, $f6, $f2
/* 00BC0 80B8DC10 E7A400E8 */ swc1 $f4, 0x00E8($sp)
/* 00BC4 80B8DC14 C49000CC */ lwc1 $f16, 0x00CC($a0) ## 00000278
/* 00BC8 80B8DC18 C6720A44 */ lwc1 $f18, 0x0A44($s3) ## 00000A44
/* 00BCC 80B8DC1C C4860080 */ lwc1 $f6, 0x0080($a0) ## 0000022C
/* 00BD0 80B8DC20 46109202 */ mul.s $f8, $f18, $f16
/* 00BD4 80B8DC24 46004287 */ neg.s $f10, $f8
/* 00BD8 80B8DC28 46065482 */ mul.s $f18, $f10, $f6
/* 00BDC 80B8DC2C 00000000 */ nop
/* 00BE0 80B8DC30 46029402 */ mul.s $f16, $f18, $f2
/* 00BE4 80B8DC34 E7B000EC */ swc1 $f16, 0x00EC($sp)
/* 00BE8 80B8DC38 C48A00CC */ lwc1 $f10, 0x00CC($a0) ## 00000278
/* 00BEC 80B8DC3C C6680A48 */ lwc1 $f8, 0x0A48($s3) ## 00000A48
/* 00BF0 80B8DC40 460A4182 */ mul.s $f6, $f8, $f10
/* 00BF4 80B8DC44 C4880080 */ lwc1 $f8, 0x0080($a0) ## 0000022C
/* 00BF8 80B8DC48 46003487 */ neg.s $f18, $f6
/* 00BFC 80B8DC4C 46089282 */ mul.s $f10, $f18, $f8
/* 00C00 80B8DC50 00000000 */ nop
/* 00C04 80B8DC54 46025182 */ mul.s $f6, $f10, $f2
/* 00C08 80B8DC58 E7A600F0 */ swc1 $f6, 0x00F0($sp)
/* 00C0C 80B8DC5C C6720A50 */ lwc1 $f18, 0x0A50($s3) ## 00000A50
/* 00C10 80B8DC60 E7B20130 */ swc1 $f18, 0x0130($sp)
/* 00C14 80B8DC64 C6680A54 */ lwc1 $f8, 0x0A54($s3) ## 00000A54
/* 00C18 80B8DC68 C7B20130 */ lwc1 $f18, 0x0130($sp)
/* 00C1C 80B8DC6C E7A80134 */ swc1 $f8, 0x0134($sp)
/* 00C20 80B8DC70 C66A0A58 */ lwc1 $f10, 0x0A58($s3) ## 00000A58
/* 00C24 80B8DC74 46122200 */ add.s $f8, $f4, $f18
/* 00C28 80B8DC78 E7B20080 */ swc1 $f18, 0x0080($sp)
/* 00C2C 80B8DC7C E7AA0138 */ swc1 $f10, 0x0138($sp)
/* 00C30 80B8DC80 C7AA0134 */ lwc1 $f10, 0x0134($sp)
/* 00C34 80B8DC84 E7A80124 */ swc1 $f8, 0x0124($sp)
/* 00C38 80B8DC88 460A8100 */ add.s $f4, $f16, $f10
/* 00C3C 80B8DC8C C7B00138 */ lwc1 $f16, 0x0138($sp)
/* 00C40 80B8DC90 46103180 */ add.s $f6, $f6, $f16
/* 00C44 80B8DC94 E7A40128 */ swc1 $f4, 0x0128($sp)
/* 00C48 80B8DC98 E7A6012C */ swc1 $f6, 0x012C($sp)
/* 00C4C 80B8DC9C C6720A20 */ lwc1 $f18, 0x0A20($s3) ## 00000A20
/* 00C50 80B8DCA0 E7A80084 */ swc1 $f8, 0x0084($sp)
/* 00C54 80B8DCA4 C7A80080 */ lwc1 $f8, 0x0080($sp)
/* 00C58 80B8DCA8 46009482 */ mul.s $f18, $f18, $f0
/* 00C5C 80B8DCAC 46089480 */ add.s $f18, $f18, $f8
/* 00C60 80B8DCB0 E7B200CC */ swc1 $f18, 0x00CC($sp)
/* 00C64 80B8DCB4 C6680A24 */ lwc1 $f8, 0x0A24($s3) ## 00000A24
/* 00C68 80B8DCB8 46004482 */ mul.s $f18, $f8, $f0
/* 00C6C 80B8DCBC 460A9200 */ add.s $f8, $f18, $f10
/* 00C70 80B8DCC0 E7A800D0 */ swc1 $f8, 0x00D0($sp)
/* 00C74 80B8DCC4 C6720A28 */ lwc1 $f18, 0x0A28($s3) ## 00000A28
/* 00C78 80B8DCC8 46009282 */ mul.s $f10, $f18, $f0
/* 00C7C 80B8DCCC C7B20084 */ lwc1 $f18, 0x0084($sp)
/* 00C80 80B8DCD0 46105200 */ add.s $f8, $f10, $f16
/* 00C84 80B8DCD4 E7A800D4 */ swc1 $f8, 0x00D4($sp)
/* 00C88 80B8DCD8 C66A0A20 */ lwc1 $f10, 0x0A20($s3) ## 00000A20
/* 00C8C 80B8DCDC 46005402 */ mul.s $f16, $f10, $f0
/* 00C90 80B8DCE0 46128200 */ add.s $f8, $f16, $f18
/* 00C94 80B8DCE4 E7A800C0 */ swc1 $f8, 0x00C0($sp)
/* 00C98 80B8DCE8 C66A0A24 */ lwc1 $f10, 0x0A24($s3) ## 00000A24
/* 00C9C 80B8DCEC 46005402 */ mul.s $f16, $f10, $f0
/* 00CA0 80B8DCF0 46048480 */ add.s $f18, $f16, $f4
/* 00CA4 80B8DCF4 E7B200C4 */ swc1 $f18, 0x00C4($sp)
/* 00CA8 80B8DCF8 C6680A28 */ lwc1 $f8, 0x0A28($s3) ## 00000A28
/* 00CAC 80B8DCFC AFAE0010 */ sw $t6, 0x0010($sp)
/* 00CB0 80B8DD00 46004282 */ mul.s $f10, $f8, $f0
/* 00CB4 80B8DD04 46065400 */ add.s $f16, $f10, $f6
/* 00CB8 80B8DD08 0C0189CD */ jal func_80062734
/* 00CBC 80B8DD0C E7B000C8 */ swc1 $f16, 0x00C8($sp)
/* 00CC0 80B8DD10 3C014416 */ lui $at, 0x4416 ## $at = 44160000
/* 00CC4 80B8DD14 4481E000 */ mtc1 $at, $f28 ## $f28 = 600.00
/* 00CC8 80B8DD18 3C0180B9 */ lui $at, %hi(D_80B8E938) ## $at = 80B90000
/* 00CCC 80B8DD1C C43AE938 */ lwc1 $f26, %lo(D_80B8E938)($at)
/* 00CD0 80B8DD20 3C013F80 */ lui $at, 0x3F80 ## $at = 3F800000
/* 00CD4 80B8DD24 4481C000 */ mtc1 $at, $f24 ## $f24 = 1.00
/* 00CD8 80B8DD28 3C014080 */ lui $at, 0x4080 ## $at = 40800000
/* 00CDC 80B8DD2C 4481B000 */ mtc1 $at, $f22 ## $f22 = 4.00
/* 00CE0 80B8DD30 3C0142C8 */ lui $at, 0x42C8 ## $at = 42C80000
/* 00CE4 80B8DD34 4481A000 */ mtc1 $at, $f20 ## $f20 = 100.00
/* 00CE8 80B8DD38 4480F000 */ mtc1 $zero, $f30 ## $f30 = 0.00
/* 00CEC 80B8DD3C 00009025 */ or $s2, $zero, $zero ## $s2 = 00000000
/* 00CF0 80B8DD40 02208025 */ or $s0, $s1, $zero ## $s0 = 00000000
/* 00CF4 80B8DD44 27B600F4 */ addiu $s6, $sp, 0x00F4 ## $s6 = FFFFFFAC
/* 00CF8 80B8DD48 27B50100 */ addiu $s5, $sp, 0x0100 ## $s5 = FFFFFFB8
/* 00CFC 80B8DD4C 27B4010C */ addiu $s4, $sp, 0x010C ## $s4 = FFFFFFC4
.L80B8DD50:
/* 00D00 80B8DD50 8E02004C */ lw $v0, 0x004C($s0) ## 0000004C
/* 00D04 80B8DD54 504000CE */ beql $v0, $zero, .L80B8E090
/* 00D08 80B8DD58 26520054 */ addiu $s2, $s2, 0x0054 ## $s2 = 00000054
/* 00D0C 80B8DD5C 844F0008 */ lh $t7, 0x0008($v0) ## 00000008
/* 00D10 80B8DD60 27AC0124 */ addiu $t4, $sp, 0x0124 ## $t4 = FFFFFFDC
/* 00D14 80B8DD64 27AD0118 */ addiu $t5, $sp, 0x0118 ## $t5 = FFFFFFD0
/* 00D18 80B8DD68 448F2000 */ mtc1 $t7, $f4 ## $f4 = 0.00
/* 00D1C 80B8DD6C 240E0001 */ addiu $t6, $zero, 0x0001 ## $t6 = 00000001
/* 00D20 80B8DD70 468024A0 */ cvt.s.w $f18, $f4
/* 00D24 80B8DD74 461A9302 */ mul.s $f12, $f18, $f26
/* 00D28 80B8DD78 E7AC00DC */ swc1 $f12, 0x00DC($sp)
/* 00D2C 80B8DD7C 8E18004C */ lw $t8, 0x004C($s0) ## 0000004C
/* 00D30 80B8DD80 8719000A */ lh $t9, 0x000A($t8) ## 0000000A
/* 00D34 80B8DD84 44995000 */ mtc1 $t9, $f10 ## $f10 = 0.00
/* 00D38 80B8DD88 00000000 */ nop
/* 00D3C 80B8DD8C 468051A0 */ cvt.s.w $f6, $f10
/* 00D40 80B8DD90 461A3382 */ mul.s $f14, $f6, $f26
/* 00D44 80B8DD94 E7AE00E0 */ swc1 $f14, 0x00E0($sp)
/* 00D48 80B8DD98 8E08004C */ lw $t0, 0x004C($s0) ## 0000004C
/* 00D4C 80B8DD9C 8509000C */ lh $t1, 0x000C($t0) ## 0000000C
/* 00D50 80B8DDA0 44892000 */ mtc1 $t1, $f4 ## $f4 = 0.00
/* 00D54 80B8DDA4 00000000 */ nop
/* 00D58 80B8DDA8 468024A0 */ cvt.s.w $f18, $f4
/* 00D5C 80B8DDAC 461A9282 */ mul.s $f10, $f18, $f26
/* 00D60 80B8DDB0 E7AA00E4 */ swc1 $f10, 0x00E4($sp)
/* 00D64 80B8DDB4 8E0A004C */ lw $t2, 0x004C($s0) ## 0000004C
/* 00D68 80B8DDB8 44065000 */ mfc1 $a2, $f10
/* 00D6C 80B8DDBC 854B000E */ lh $t3, 0x000E($t2) ## 0000000E
/* 00D70 80B8DDC0 AFAE001C */ sw $t6, 0x001C($sp)
/* 00D74 80B8DDC4 AFAD0018 */ sw $t5, 0x0018($sp)
/* 00D78 80B8DDC8 448B3000 */ mtc1 $t3, $f6 ## $f6 = 0.00
/* 00D7C 80B8DDCC AFAC0014 */ sw $t4, 0x0014($sp)
/* 00D80 80B8DDD0 AFBE0010 */ sw $s8, 0x0010($sp)
/* 00D84 80B8DDD4 468031A0 */ cvt.s.w $f6, $f6
/* 00D88 80B8DDD8 44073000 */ mfc1 $a3, $f6
/* 00D8C 80B8DDDC 0C033857 */ jal Math3D_LineSegVsPlane
/* 00D90 80B8DDE0 00000000 */ nop
/* 00D94 80B8DDE4 104000A8 */ beq $v0, $zero, .L80B8E088
/* 00D98 80B8DDE8 C7A40118 */ lwc1 $f4, 0x0118($sp)
/* 00D9C 80B8DDEC E6040000 */ swc1 $f4, 0x0000($s0) ## 00000000
/* 00DA0 80B8DDF0 C7B2011C */ lwc1 $f18, 0x011C($sp)
/* 00DA4 80B8DDF4 26710A20 */ addiu $s1, $s3, 0x0A20 ## $s1 = 00000A20
/* 00DA8 80B8DDF8 240F00C8 */ addiu $t7, $zero, 0x00C8 ## $t7 = 000000C8
/* 00DAC 80B8DDFC E6120004 */ swc1 $f18, 0x0004($s0) ## 00000004
/* 00DB0 80B8DE00 C7A80120 */ lwc1 $f8, 0x0120($sp)
/* 00DB4 80B8DE04 3C014448 */ lui $at, 0x4448 ## $at = 44480000
/* 00DB8 80B8DE08 E6080008 */ swc1 $f8, 0x0008($s0) ## 00000008
/* 00DBC 80B8DE0C C7AA0130 */ lwc1 $f10, 0x0130($sp)
/* 00DC0 80B8DE10 C7B00118 */ lwc1 $f16, 0x0118($sp)
/* 00DC4 80B8DE14 C7A40134 */ lwc1 $f4, 0x0134($sp)
/* 00DC8 80B8DE18 C7A6011C */ lwc1 $f6, 0x011C($sp)
/* 00DCC 80B8DE1C 460A8081 */ sub.s $f2, $f16, $f10
/* 00DD0 80B8DE20 C7A80138 */ lwc1 $f8, 0x0138($sp)
/* 00DD4 80B8DE24 C7B20120 */ lwc1 $f18, 0x0120($sp)
/* 00DD8 80B8DE28 46043301 */ sub.s $f12, $f6, $f4
/* 00DDC 80B8DE2C 46021402 */ mul.s $f16, $f2, $f2
/* 00DE0 80B8DE30 46089381 */ sub.s $f14, $f18, $f8
/* 00DE4 80B8DE34 460C6282 */ mul.s $f10, $f12, $f12
/* 00DE8 80B8DE38 C6F2022C */ lwc1 $f18, 0x022C($s7) ## 0000022C
/* 00DEC 80B8DE3C 460E7102 */ mul.s $f4, $f14, $f14
/* 00DF0 80B8DE40 00000000 */ nop
/* 00DF4 80B8DE44 461C9202 */ mul.s $f8, $f18, $f28
/* 00DF8 80B8DE48 460A8180 */ add.s $f6, $f16, $f10
/* 00DFC 80B8DE4C 46043000 */ add.s $f0, $f6, $f4
/* 00E00 80B8DE50 46000004 */ sqrt.s $f0, $f0
/* 00E04 80B8DE54 4608003C */ c.lt.s $f0, $f8
/* 00E08 80B8DE58 00000000 */ nop
/* 00E0C 80B8DE5C 45000003 */ bc1f .L80B8DE6C
/* 00E10 80B8DE60 00000000 */ nop
/* 00E14 80B8DE64 10000008 */ beq $zero, $zero, .L80B8DE88
/* 00E18 80B8DE68 A20F0050 */ sb $t7, 0x0050($s0) ## 00000050
.L80B8DE6C:
/* 00E1C 80B8DE6C 44818000 */ mtc1 $at, $f16 ## $f16 = 800.00
/* 00E20 80B8DE70 00000000 */ nop
/* 00E24 80B8DE74 46008281 */ sub.s $f10, $f16, $f0
/* 00E28 80B8DE78 4600518D */ trunc.w.s $f6, $f10
/* 00E2C 80B8DE7C 44193000 */ mfc1 $t9, $f6
/* 00E30 80B8DE80 00000000 */ nop
/* 00E34 80B8DE84 A2190050 */ sb $t9, 0x0050($s0) ## 00000050
.L80B8DE88:
/* 00E38 80B8DE88 C6240000 */ lwc1 $f4, 0x0000($s1) ## 00000A20
/* 00E3C 80B8DE8C C7A80130 */ lwc1 $f8, 0x0130($sp)
/* 00E40 80B8DE90 240A0001 */ addiu $t2, $zero, 0x0001 ## $t2 = 00000001
/* 00E44 80B8DE94 46142482 */ mul.s $f18, $f4, $f20
/* 00E48 80B8DE98 C7A40134 */ lwc1 $f4, 0x0134($sp)
/* 00E4C 80B8DE9C 46089400 */ add.s $f16, $f18, $f8
/* 00E50 80B8DEA0 E7B0010C */ swc1 $f16, 0x010C($sp)
/* 00E54 80B8DEA4 C62A0004 */ lwc1 $f10, 0x0004($s1) ## 00000A24
/* 00E58 80B8DEA8 46145182 */ mul.s $f6, $f10, $f20
/* 00E5C 80B8DEAC 46043480 */ add.s $f18, $f6, $f4
/* 00E60 80B8DEB0 C7A60138 */ lwc1 $f6, 0x0138($sp)
/* 00E64 80B8DEB4 E7B20110 */ swc1 $f18, 0x0110($sp)
/* 00E68 80B8DEB8 C6280008 */ lwc1 $f8, 0x0008($s1) ## 00000A28
/* 00E6C 80B8DEBC 46144282 */ mul.s $f10, $f8, $f20
/* 00E70 80B8DEC0 C7A800E8 */ lwc1 $f8, 0x00E8($sp)
/* 00E74 80B8DEC4 46065100 */ add.s $f4, $f10, $f6
/* 00E78 80B8DEC8 46164282 */ mul.s $f10, $f8, $f22
/* 00E7C 80B8DECC C7A800EC */ lwc1 $f8, 0x00EC($sp)
/* 00E80 80B8DED0 E7A40114 */ swc1 $f4, 0x0114($sp)
/* 00E84 80B8DED4 46105180 */ add.s $f6, $f10, $f16
/* 00E88 80B8DED8 46164282 */ mul.s $f10, $f8, $f22
/* 00E8C 80B8DEDC E7A60100 */ swc1 $f6, 0x0100($sp)
/* 00E90 80B8DEE0 C7A600F0 */ lwc1 $f6, 0x00F0($sp)
/* 00E94 80B8DEE4 46163202 */ mul.s $f8, $f6, $f22
/* 00E98 80B8DEE8 46125400 */ add.s $f16, $f10, $f18
/* 00E9C 80B8DEEC E7B00104 */ swc1 $f16, 0x0104($sp)
/* 00EA0 80B8DEF0 46044280 */ add.s $f10, $f8, $f4
/* 00EA4 80B8DEF4 E7AA0108 */ swc1 $f10, 0x0108($sp)
/* 00EA8 80B8DEF8 E61E0044 */ swc1 $f30, 0x0044($s0) ## 00000044
/* 00EAC 80B8DEFC C6000044 */ lwc1 $f0, 0x0044($s0) ## 00000044
/* 00EB0 80B8DF00 8E08004C */ lw $t0, 0x004C($s0) ## 0000004C
/* 00EB4 80B8DF04 E618000C */ swc1 $f24, 0x000C($s0) ## 0000000C
/* 00EB8 80B8DF08 E6180020 */ swc1 $f24, 0x0020($s0) ## 00000020
/* 00EBC 80B8DF0C E6180034 */ swc1 $f24, 0x0034($s0) ## 00000034
/* 00EC0 80B8DF10 E6180048 */ swc1 $f24, 0x0048($s0) ## 00000048
/* 00EC4 80B8DF14 E6000040 */ swc1 $f0, 0x0040($s0) ## 00000040
/* 00EC8 80B8DF18 E600003C */ swc1 $f0, 0x003C($s0) ## 0000003C
/* 00ECC 80B8DF1C E6000038 */ swc1 $f0, 0x0038($s0) ## 00000038
/* 00ED0 80B8DF20 E6000030 */ swc1 $f0, 0x0030($s0) ## 00000030
/* 00ED4 80B8DF24 E600002C */ swc1 $f0, 0x002C($s0) ## 0000002C
/* 00ED8 80B8DF28 E6000028 */ swc1 $f0, 0x0028($s0) ## 00000028
/* 00EDC 80B8DF2C E6000024 */ swc1 $f0, 0x0024($s0) ## 00000024
/* 00EE0 80B8DF30 E600001C */ swc1 $f0, 0x001C($s0) ## 0000001C
/* 00EE4 80B8DF34 E6000018 */ swc1 $f0, 0x0018($s0) ## 00000018
/* 00EE8 80B8DF38 E6000014 */ swc1 $f0, 0x0014($s0) ## 00000014
/* 00EEC 80B8DF3C E6000010 */ swc1 $f0, 0x0010($s0) ## 00000010
/* 00EF0 80B8DF40 8509000E */ lh $t1, 0x000E($t0) ## 0000000E
/* 00EF4 80B8DF44 AFAA001C */ sw $t2, 0x001C($sp)
/* 00EF8 80B8DF48 AFB60018 */ sw $s6, 0x0018($sp)
/* 00EFC 80B8DF4C 44899000 */ mtc1 $t1, $f18 ## $f18 = 0.00
/* 00F00 80B8DF50 AFB50014 */ sw $s5, 0x0014($sp)
/* 00F04 80B8DF54 AFB40010 */ sw $s4, 0x0010($sp)
/* 00F08 80B8DF58 468094A0 */ cvt.s.w $f18, $f18
/* 00F0C 80B8DF5C 8FA600E4 */ lw $a2, 0x00E4($sp)
/* 00F10 80B8DF60 C7AE00E0 */ lwc1 $f14, 0x00E0($sp)
/* 00F14 80B8DF64 C7AC00DC */ lwc1 $f12, 0x00DC($sp)
/* 00F18 80B8DF68 44079000 */ mfc1 $a3, $f18
/* 00F1C 80B8DF6C 0C033857 */ jal Math3D_LineSegVsPlane
/* 00F20 80B8DF70 00000000 */ nop
/* 00F24 80B8DF74 1040000C */ beq $v0, $zero, .L80B8DFA8
/* 00F28 80B8DF78 C7B000F4 */ lwc1 $f16, 0x00F4($sp)
/* 00F2C 80B8DF7C C7A60118 */ lwc1 $f6, 0x0118($sp)
/* 00F30 80B8DF80 46068201 */ sub.s $f8, $f16, $f6
/* 00F34 80B8DF84 E608000C */ swc1 $f8, 0x000C($s0) ## 0000000C
/* 00F38 80B8DF88 C7AA011C */ lwc1 $f10, 0x011C($sp)
/* 00F3C 80B8DF8C C7A400F8 */ lwc1 $f4, 0x00F8($sp)
/* 00F40 80B8DF90 460A2481 */ sub.s $f18, $f4, $f10
/* 00F44 80B8DF94 E6120010 */ swc1 $f18, 0x0010($s0) ## 00000010
/* 00F48 80B8DF98 C7A60120 */ lwc1 $f6, 0x0120($sp)
/* 00F4C 80B8DF9C C7B000FC */ lwc1 $f16, 0x00FC($sp)
/* 00F50 80B8DFA0 46068201 */ sub.s $f8, $f16, $f6
/* 00F54 80B8DFA4 E6080014 */ swc1 $f8, 0x0014($s0) ## 00000014
.L80B8DFA8:
/* 00F58 80B8DFA8 C6240010 */ lwc1 $f4, 0x0010($s1) ## 00000A30
/* 00F5C 80B8DFAC C7B20130 */ lwc1 $f18, 0x0130($sp)
/* 00F60 80B8DFB0 240D0001 */ addiu $t5, $zero, 0x0001 ## $t5 = 00000001
/* 00F64 80B8DFB4 46142282 */ mul.s $f10, $f4, $f20
/* 00F68 80B8DFB8 C7A40134 */ lwc1 $f4, 0x0134($sp)
/* 00F6C 80B8DFBC C7AC00DC */ lwc1 $f12, 0x00DC($sp)
/* 00F70 80B8DFC0 C7AE00E0 */ lwc1 $f14, 0x00E0($sp)
/* 00F74 80B8DFC4 8FA600E4 */ lw $a2, 0x00E4($sp)
/* 00F78 80B8DFC8 46125400 */ add.s $f16, $f10, $f18
/* 00F7C 80B8DFCC E7B0010C */ swc1 $f16, 0x010C($sp)
/* 00F80 80B8DFD0 C6260014 */ lwc1 $f6, 0x0014($s1) ## 00000A34
/* 00F84 80B8DFD4 46143202 */ mul.s $f8, $f6, $f20
/* 00F88 80B8DFD8 46044280 */ add.s $f10, $f8, $f4
/* 00F8C 80B8DFDC C7A80138 */ lwc1 $f8, 0x0138($sp)
/* 00F90 80B8DFE0 E7AA0110 */ swc1 $f10, 0x0110($sp)
/* 00F94 80B8DFE4 C6320018 */ lwc1 $f18, 0x0018($s1) ## 00000A38
/* 00F98 80B8DFE8 46149182 */ mul.s $f6, $f18, $f20
/* 00F9C 80B8DFEC C7B200E8 */ lwc1 $f18, 0x00E8($sp)
/* 00FA0 80B8DFF0 46083100 */ add.s $f4, $f6, $f8
/* 00FA4 80B8DFF4 46169182 */ mul.s $f6, $f18, $f22
/* 00FA8 80B8DFF8 C7B200EC */ lwc1 $f18, 0x00EC($sp)
/* 00FAC 80B8DFFC E7A40114 */ swc1 $f4, 0x0114($sp)
/* 00FB0 80B8E000 46103200 */ add.s $f8, $f6, $f16
/* 00FB4 80B8E004 46169182 */ mul.s $f6, $f18, $f22
/* 00FB8 80B8E008 E7A80100 */ swc1 $f8, 0x0100($sp)
/* 00FBC 80B8E00C C7A800F0 */ lwc1 $f8, 0x00F0($sp)
/* 00FC0 80B8E010 46164482 */ mul.s $f18, $f8, $f22
/* 00FC4 80B8E014 460A3400 */ add.s $f16, $f6, $f10
/* 00FC8 80B8E018 E7B00104 */ swc1 $f16, 0x0104($sp)
/* 00FCC 80B8E01C 46049180 */ add.s $f6, $f18, $f4
/* 00FD0 80B8E020 E7A60108 */ swc1 $f6, 0x0108($sp)
/* 00FD4 80B8E024 8E0B004C */ lw $t3, 0x004C($s0) ## 0000004C
/* 00FD8 80B8E028 856C000E */ lh $t4, 0x000E($t3) ## 0000000E
/* 00FDC 80B8E02C AFAD001C */ sw $t5, 0x001C($sp)
/* 00FE0 80B8E030 AFB60018 */ sw $s6, 0x0018($sp)
/* 00FE4 80B8E034 448C5000 */ mtc1 $t4, $f10 ## $f10 = 0.00
/* 00FE8 80B8E038 AFB50014 */ sw $s5, 0x0014($sp)
/* 00FEC 80B8E03C AFB40010 */ sw $s4, 0x0010($sp)
/* 00FF0 80B8E040 468052A0 */ cvt.s.w $f10, $f10
/* 00FF4 80B8E044 44075000 */ mfc1 $a3, $f10
/* 00FF8 80B8E048 0C033857 */ jal Math3D_LineSegVsPlane
/* 00FFC 80B8E04C 00000000 */ nop
/* 01000 80B8E050 1040000E */ beq $v0, $zero, .L80B8E08C
/* 01004 80B8E054 C7B000F4 */ lwc1 $f16, 0x00F4($sp)
/* 01008 80B8E058 C7A80118 */ lwc1 $f8, 0x0118($sp)
/* 0100C 80B8E05C 46088481 */ sub.s $f18, $f16, $f8
/* 01010 80B8E060 E612001C */ swc1 $f18, 0x001C($s0) ## 0000001C
/* 01014 80B8E064 C7A6011C */ lwc1 $f6, 0x011C($sp)
/* 01018 80B8E068 C7A400F8 */ lwc1 $f4, 0x00F8($sp)
/* 0101C 80B8E06C 46062281 */ sub.s $f10, $f4, $f6
/* 01020 80B8E070 E60A0020 */ swc1 $f10, 0x0020($s0) ## 00000020
/* 01024 80B8E074 C7A80120 */ lwc1 $f8, 0x0120($sp)
/* 01028 80B8E078 C7B000FC */ lwc1 $f16, 0x00FC($sp)
/* 0102C 80B8E07C 46088481 */ sub.s $f18, $f16, $f8
/* 01030 80B8E080 10000002 */ beq $zero, $zero, .L80B8E08C
/* 01034 80B8E084 E6120024 */ swc1 $f18, 0x0024($s0) ## 00000024
.L80B8E088:
/* 01038 80B8E088 AE00004C */ sw $zero, 0x004C($s0) ## 0000004C
.L80B8E08C:
/* 0103C 80B8E08C 26520054 */ addiu $s2, $s2, 0x0054 ## $s2 = 000000A8
.L80B8E090:
/* 01040 80B8E090 240101F8 */ addiu $at, $zero, 0x01F8 ## $at = 000001F8
/* 01044 80B8E094 1641FF2E */ bne $s2, $at, .L80B8DD50
/* 01048 80B8E098 26100054 */ addiu $s0, $s0, 0x0054 ## $s0 = 00000054
/* 0104C 80B8E09C 8FBF007C */ lw $ra, 0x007C($sp)
/* 01050 80B8E0A0 D7B40028 */ ldc1 $f20, 0x0028($sp)
/* 01054 80B8E0A4 D7B60030 */ ldc1 $f22, 0x0030($sp)
/* 01058 80B8E0A8 D7B80038 */ ldc1 $f24, 0x0038($sp)
/* 0105C 80B8E0AC D7BA0040 */ ldc1 $f26, 0x0040($sp)
/* 01060 80B8E0B0 D7BC0048 */ ldc1 $f28, 0x0048($sp)
/* 01064 80B8E0B4 D7BE0050 */ ldc1 $f30, 0x0050($sp)
/* 01068 80B8E0B8 8FB00058 */ lw $s0, 0x0058($sp)
/* 0106C 80B8E0BC 8FB1005C */ lw $s1, 0x005C($sp)
/* 01070 80B8E0C0 8FB20060 */ lw $s2, 0x0060($sp)
/* 01074 80B8E0C4 8FB30064 */ lw $s3, 0x0064($sp)
/* 01078 80B8E0C8 8FB40068 */ lw $s4, 0x0068($sp)
/* 0107C 80B8E0CC 8FB5006C */ lw $s5, 0x006C($sp)
/* 01080 80B8E0D0 8FB60070 */ lw $s6, 0x0070($sp)
/* 01084 80B8E0D4 8FB70074 */ lw $s7, 0x0074($sp)
/* 01088 80B8E0D8 8FBE0078 */ lw $s8, 0x0078($sp)
/* 0108C 80B8E0DC 03E00008 */ jr $ra
/* 01090 80B8E0E0 27BD0148 */ addiu $sp, $sp, 0x0148 ## $sp = 00000000

View file

@ -1,153 +0,0 @@
glabel func_80B8E404
/* 013B4 80B8E404 27BDFF78 */ addiu $sp, $sp, 0xFF78 ## $sp = FFFFFF78
/* 013B8 80B8E408 AFBF001C */ sw $ra, 0x001C($sp)
/* 013BC 80B8E40C AFB00018 */ sw $s0, 0x0018($sp)
/* 013C0 80B8E410 AFA40088 */ sw $a0, 0x0088($sp)
/* 013C4 80B8E414 AFA60090 */ sw $a2, 0x0090($sp)
/* 013C8 80B8E418 AFA70094 */ sw $a3, 0x0094($sp)
/* 013CC 80B8E41C C4A60000 */ lwc1 $f6, 0x0000($a1) ## 00000000
/* 013D0 80B8E420 C4900000 */ lwc1 $f16, 0x0000($a0) ## 00000000
/* 013D4 80B8E424 C4AA0004 */ lwc1 $f10, 0x0004($a1) ## 00000004
/* 013D8 80B8E428 C4920004 */ lwc1 $f18, 0x0004($a0) ## 00000004
/* 013DC 80B8E42C C4880008 */ lwc1 $f8, 0x0008($a0) ## 00000008
/* 013E0 80B8E430 46103081 */ sub.s $f2, $f6, $f16
/* 013E4 80B8E434 00803825 */ or $a3, $a0, $zero ## $a3 = 00000000
/* 013E8 80B8E438 E7A80038 */ swc1 $f8, 0x0038($sp)
/* 013EC 80B8E43C 46125301 */ sub.s $f12, $f10, $f18
/* 013F0 80B8E440 46021282 */ mul.s $f10, $f2, $f2
/* 013F4 80B8E444 C7A60038 */ lwc1 $f6, 0x0038($sp)
/* 013F8 80B8E448 C4A40008 */ lwc1 $f4, 0x0008($a1) ## 00000008
/* 013FC 80B8E44C 460C6202 */ mul.s $f8, $f12, $f12
/* 01400 80B8E450 00A08025 */ or $s0, $a1, $zero ## $s0 = 00000000
/* 01404 80B8E454 46062381 */ sub.s $f14, $f4, $f6
/* 01408 80B8E458 460E7182 */ mul.s $f6, $f14, $f14
/* 0140C 80B8E45C 46085100 */ add.s $f4, $f10, $f8
/* 01410 80B8E460 44804000 */ mtc1 $zero, $f8 ## $f8 = 0.00
/* 01414 80B8E464 46062280 */ add.s $f10, $f4, $f6
/* 01418 80B8E468 C7A40090 */ lwc1 $f4, 0x0090($sp)
/* 0141C 80B8E46C 460A4032 */ c.eq.s $f8, $f10
/* 01420 80B8E470 E7AA0034 */ swc1 $f10, 0x0034($sp)
/* 01424 80B8E474 45020004 */ bc1fl .L80B8E488
/* 01428 80B8E478 46102181 */ sub.s $f6, $f4, $f16
/* 0142C 80B8E47C 1000006D */ beq $zero, $zero, .L80B8E634
/* 01430 80B8E480 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 01434 80B8E484 46102181 */ sub.s $f6, $f4, $f16
.L80B8E488:
/* 01438 80B8E488 C7AA0094 */ lwc1 $f10, 0x0094($sp)
/* 0143C 80B8E48C E7A40020 */ swc1 $f4, 0x0020($sp)
/* 01440 80B8E490 C7A40038 */ lwc1 $f4, 0x0038($sp)
/* 01444 80B8E494 46023202 */ mul.s $f8, $f6, $f2
/* 01448 80B8E498 46125181 */ sub.s $f6, $f10, $f18
/* 0144C 80B8E49C E7AA0024 */ swc1 $f10, 0x0024($sp)
/* 01450 80B8E4A0 87A2009E */ lh $v0, 0x009E($sp)
/* 01454 80B8E4A4 87B800A2 */ lh $t8, 0x00A2($sp)
/* 01458 80B8E4A8 460C3182 */ mul.s $f6, $f6, $f12
/* 0145C 80B8E4AC 02002025 */ or $a0, $s0, $zero ## $a0 = 00000000
/* 01460 80B8E4B0 0302C823 */ subu $t9, $t8, $v0
/* 01464 80B8E4B4 00E02825 */ or $a1, $a3, $zero ## $a1 = 00000000
/* 01468 80B8E4B8 27A6005C */ addiu $a2, $sp, 0x005C ## $a2 = FFFFFFD4
/* 0146C 80B8E4BC 46064200 */ add.s $f8, $f8, $f6
/* 01470 80B8E4C0 C7A60098 */ lwc1 $f6, 0x0098($sp)
/* 01474 80B8E4C4 46043281 */ sub.s $f10, $f6, $f4
/* 01478 80B8E4C8 E7A60028 */ swc1 $f6, 0x0028($sp)
/* 0147C 80B8E4CC 460E5282 */ mul.s $f10, $f10, $f14
/* 01480 80B8E4D0 460A4200 */ add.s $f8, $f8, $f10
/* 01484 80B8E4D4 C7AA0034 */ lwc1 $f10, 0x0034($sp)
/* 01488 80B8E4D8 460A4003 */ div.s $f0, $f8, $f10
/* 0148C 80B8E4DC 46001202 */ mul.s $f8, $f2, $f0
/* 01490 80B8E4E0 46104280 */ add.s $f10, $f8, $f16
/* 01494 80B8E4E4 46006202 */ mul.s $f8, $f12, $f0
/* 01498 80B8E4E8 00000000 */ nop
/* 0149C 80B8E4EC 46007182 */ mul.s $f6, $f14, $f0
/* 014A0 80B8E4F0 E7AA0080 */ swc1 $f10, 0x0080($sp)
/* 014A4 80B8E4F4 E7AA002C */ swc1 $f10, 0x002C($sp)
/* 014A8 80B8E4F8 44825000 */ mtc1 $v0, $f10 ## $f10 = 0.00
/* 014AC 80B8E4FC 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 014B0 80B8E500 46124200 */ add.s $f8, $f8, $f18
/* 014B4 80B8E504 46043180 */ add.s $f6, $f6, $f4
/* 014B8 80B8E508 44992000 */ mtc1 $t9, $f4 ## $f4 = 0.00
/* 014BC 80B8E50C E7A8007C */ swc1 $f8, 0x007C($sp)
/* 014C0 80B8E510 468052A0 */ cvt.s.w $f10, $f10
/* 014C4 80B8E514 E7A60078 */ swc1 $f6, 0x0078($sp)
/* 014C8 80B8E518 46802120 */ cvt.s.w $f4, $f4
/* 014CC 80B8E51C 46002102 */ mul.s $f4, $f4, $f0
/* 014D0 80B8E520 460A2080 */ add.s $f2, $f4, $f10
/* 014D4 80B8E524 C7AA0020 */ lwc1 $f10, 0x0020($sp)
/* 014D8 80B8E528 C7A4002C */ lwc1 $f4, 0x002C($sp)
/* 014DC 80B8E52C 460A2301 */ sub.s $f12, $f4, $f10
/* 014E0 80B8E530 C7A40024 */ lwc1 $f4, 0x0024($sp)
/* 014E4 80B8E534 C7AA0028 */ lwc1 $f10, 0x0028($sp)
/* 014E8 80B8E538 46044381 */ sub.s $f14, $f8, $f4
/* 014EC 80B8E53C 46021202 */ mul.s $f8, $f2, $f2
/* 014F0 80B8E540 460A3401 */ sub.s $f16, $f6, $f10
/* 014F4 80B8E544 460C6102 */ mul.s $f4, $f12, $f12
/* 014F8 80B8E548 00000000 */ nop
/* 014FC 80B8E54C 460E7182 */ mul.s $f6, $f14, $f14
/* 01500 80B8E550 46062280 */ add.s $f10, $f4, $f6
/* 01504 80B8E554 46108102 */ mul.s $f4, $f16, $f16
/* 01508 80B8E558 46045180 */ add.s $f6, $f10, $f4
/* 0150C 80B8E55C 4608303E */ c.le.s $f6, $f8
/* 01510 80B8E560 00000000 */ nop
/* 01514 80B8E564 45000033 */ bc1f .L80B8E634
/* 01518 80B8E568 00000000 */ nop
/* 0151C 80B8E56C 0C01DFB4 */ jal Math_Vec3f_Diff
## Vec3f_Sub
/* 01520 80B8E570 AFA70088 */ sw $a3, 0x0088($sp)
/* 01524 80B8E574 8FA70088 */ lw $a3, 0x0088($sp)
/* 01528 80B8E578 C7AA0090 */ lwc1 $f10, 0x0090($sp)
/* 0152C 80B8E57C C7A60094 */ lwc1 $f6, 0x0094($sp)
/* 01530 80B8E580 C4E40000 */ lwc1 $f4, 0x0000($a3) ## 00000000
/* 01534 80B8E584 27A4005C */ addiu $a0, $sp, 0x005C ## $a0 = FFFFFFD4
/* 01538 80B8E588 27A50050 */ addiu $a1, $sp, 0x0050 ## $a1 = FFFFFFC8
/* 0153C 80B8E58C 46045201 */ sub.s $f8, $f10, $f4
/* 01540 80B8E590 E7A80050 */ swc1 $f8, 0x0050($sp)
/* 01544 80B8E594 C4EA0004 */ lwc1 $f10, 0x0004($a3) ## 00000004
/* 01548 80B8E598 C7A80098 */ lwc1 $f8, 0x0098($sp)
/* 0154C 80B8E59C 460A3101 */ sub.s $f4, $f6, $f10
/* 01550 80B8E5A0 E7A40054 */ swc1 $f4, 0x0054($sp)
/* 01554 80B8E5A4 C4E60008 */ lwc1 $f6, 0x0008($a3) ## 00000008
/* 01558 80B8E5A8 46064281 */ sub.s $f10, $f8, $f6
/* 0155C 80B8E5AC 0C032BFB */ jal Math3D_Cos
/* 01560 80B8E5B0 E7AA0058 */ swc1 $f10, 0x0058($sp)
/* 01564 80B8E5B4 44802000 */ mtc1 $zero, $f4 ## $f4 = 0.00
/* 01568 80B8E5B8 C7A80090 */ lwc1 $f8, 0x0090($sp)
/* 0156C 80B8E5BC 4604003C */ c.lt.s $f0, $f4
/* 01570 80B8E5C0 00000000 */ nop
/* 01574 80B8E5C4 45020004 */ bc1fl .L80B8E5D8
/* 01578 80B8E5C8 C6060000 */ lwc1 $f6, 0x0000($s0) ## 00000000
/* 0157C 80B8E5CC 10000019 */ beq $zero, $zero, .L80B8E634
/* 01580 80B8E5D0 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
/* 01584 80B8E5D4 C6060000 */ lwc1 $f6, 0x0000($s0) ## 00000000
.L80B8E5D8:
/* 01588 80B8E5D8 C7A40094 */ lwc1 $f4, 0x0094($sp)
/* 0158C 80B8E5DC 27A4005C */ addiu $a0, $sp, 0x005C ## $a0 = FFFFFFD4
/* 01590 80B8E5E0 46064281 */ sub.s $f10, $f8, $f6
/* 01594 80B8E5E4 27A50044 */ addiu $a1, $sp, 0x0044 ## $a1 = FFFFFFBC
/* 01598 80B8E5E8 E7AA0044 */ swc1 $f10, 0x0044($sp)
/* 0159C 80B8E5EC C6080004 */ lwc1 $f8, 0x0004($s0) ## 00000004
/* 015A0 80B8E5F0 C7AA0098 */ lwc1 $f10, 0x0098($sp)
/* 015A4 80B8E5F4 46082181 */ sub.s $f6, $f4, $f8
/* 015A8 80B8E5F8 E7A60048 */ swc1 $f6, 0x0048($sp)
/* 015AC 80B8E5FC C6040008 */ lwc1 $f4, 0x0008($s0) ## 00000008
/* 015B0 80B8E600 46045201 */ sub.s $f8, $f10, $f4
/* 015B4 80B8E604 0C032BFB */ jal Math3D_Cos
/* 015B8 80B8E608 E7A8004C */ swc1 $f8, 0x004C($sp)
/* 015BC 80B8E60C 44803000 */ mtc1 $zero, $f6 ## $f6 = 0.00
/* 015C0 80B8E610 00000000 */ nop
/* 015C4 80B8E614 4600303C */ c.lt.s $f6, $f0
/* 015C8 80B8E618 00000000 */ nop
/* 015CC 80B8E61C 45000003 */ bc1f .L80B8E62C
/* 015D0 80B8E620 00000000 */ nop
/* 015D4 80B8E624 10000003 */ beq $zero, $zero, .L80B8E634
/* 015D8 80B8E628 00001025 */ or $v0, $zero, $zero ## $v0 = 00000000
.L80B8E62C:
/* 015DC 80B8E62C 10000001 */ beq $zero, $zero, .L80B8E634
/* 015E0 80B8E630 24020001 */ addiu $v0, $zero, 0x0001 ## $v0 = 00000001
.L80B8E634:
/* 015E4 80B8E634 8FBF001C */ lw $ra, 0x001C($sp)
/* 015E8 80B8E638 8FB00018 */ lw $s0, 0x0018($sp)
/* 015EC 80B8E63C 27BD0088 */ addiu $sp, $sp, 0x0088 ## $sp = 00000000
/* 015F0 80B8E640 03E00008 */ jr $ra
/* 015F4 80B8E644 00000000 */ nop
/* 015F8 80B8E648 00000000 */ nop
/* 015FC 80B8E64C 00000000 */ nop

View file

@ -1,33 +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 Mir_Ray_InitVars
.word 0x00B70700, 0x00000030, 0x00AB0000, 0x000002B0
.word MirRay_Init
.word MirRay_Destroy
.word MirRay_Update
.word MirRay_Draw
glabel D_80B8E670
.word 0x00000000
glabel D_80B8E674
.word 0x0A090000, 0x00030000, 0x00000000, 0x00200000, 0x00000000, 0xFFCFFFFF, 0x00000000, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000
glabel D_80B8E6C4
.word 0x00000000, 0x00200000, 0x00000000, 0x00000000, 0x00000000, 0x01000000, 0x00000000, 0x00000000, 0x00320064
glabel D_80B8E6E8
.word 0x0A090000, 0x00000000, 0x00000001
.word D_80B8E6C4
glabel D_80B8E6F8
.byte 0xFB, 0x78, 0x02, 0xAE, 0xFC, 0x90, 0xFC, 0x68, 0x01, 0xE0, 0xFC, 0x87, 0x00, 0x1E, 0x00, 0x32, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x32, 0x00, 0x96, 0x3F, 0x4C, 0xCC, 0xCD, 0xFF, 0xFF, 0xFF
glabel D_80B8E717
.byte 0x02, 0xF8, 0xC0, 0x04, 0x44, 0xFF, 0x42, 0xF9, 0x59, 0x03, 0x49, 0xFF, 0x46, 0x00, 0x1E, 0x00, 0x46, 0x3F, 0x61, 0x47, 0xAE, 0x00, 0x36, 0x00, 0x96, 0x3F, 0x4C, 0xCC, 0xCD, 0xFF, 0xFF, 0xFF, 0x02, 0x05, 0x57, 0x02, 0xE2, 0xFC, 0xA4, 0x04, 0x43, 0x01, 0xDC, 0xFC, 0xA4, 0x00, 0x1E, 0x00, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x3F, 0x4C, 0xCC, 0xCD, 0xFF, 0xFF, 0xFF, 0x00, 0x08, 0x98, 0x04, 0x4F, 0xFF, 0x24, 0x07, 0xF8, 0x03, 0x4B, 0xFF, 0x24, 0x00, 0x1E, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x3F, 0x4C, 0xCC, 0xCD, 0xFF, 0xFF, 0xFF, 0x01, 0xFD, 0xD0, 0x08, 0x79, 0xFE, 0xCA, 0xFD, 0xD0, 0x06, 0xCF, 0xFE, 0xCA, 0x00, 0x1E, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x3F, 0x4C, 0xCC, 0xCD, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x3C, 0x07, 0x0A, 0xFB, 0xBE, 0x00, 0x3C, 0x03, 0xCD, 0xFB, 0xBE, 0x00, 0x1E, 0x00, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x3F, 0x66, 0x66, 0x66, 0xFF, 0xFF, 0xFF, 0x0D, 0x04, 0x74, 0x01, 0xE0, 0xFC, 0xA4, 0x04, 0x74, 0x01, 0xE0, 0xFC, 0xA4, 0x00, 0x1E, 0x00, 0x1E, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x64, 0x3F, 0x66, 0x66, 0x66, 0xFF, 0xFF, 0xFF, 0x0E, 0xFD, 0xD0, 0x06, 0xCF, 0xFE, 0xCA, 0xFD, 0xD0, 0x06, 0xCF, 0xFE, 0xCA, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x3F, 0x70, 0xA3, 0xD7, 0xFF, 0xFF, 0xFF, 0x0C, 0x00, 0x3C, 0x06, 0xCF, 0xFE, 0xCA, 0x00, 0x3C, 0x06, 0xCF, 0xFE, 0xCA, 0x00, 0x1E, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x3F, 0x70, 0xA3, 0xD7, 0xFF, 0xFF, 0xFF, 0x0C, 0xFB, 0x6A, 0x01, 0xC0, 0x04, 0xAA, 0xFB, 0x6A, 0x00, 0x94, 0x04, 0xAA, 0x00, 0x32, 0x00, 0x64, 0x3F, 0x80, 0x00, 0x00, 0x00, 0x32, 0x00, 0x96, 0x3F, 0x4C, 0xCC, 0xCD, 0xFF, 0xFF, 0xFF, 0x03
glabel D_80B8E838
.word 0xC8500000, 0xB0F40FA0, 0xB0F803E8, 0x30FC03E8, 0x00000000, 0x00000000

View file

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

View file

@ -603,6 +603,8 @@ s32 func_8003DD6C(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, UN
s32 func_8003DE84(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*);
s32 func_8003DF10(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*, Actor*);
s32 func_8003DFA0(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*, Actor*, f32);
s32 func_8003E0B8(CollisionContext* colCtx, Vec3f* posA, Vec3f* posB, Vec3f* posResult, CollisionPoly** outPoly,
s32 chkOneFace);
// ? func_8003E0FC(?);
s32 func_8003E188(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, f32*);
// ? func_8003E214(?);

3
spec
View file

@ -3341,8 +3341,7 @@ endseg
beginseg
name "ovl_Mir_Ray"
include "build/src/overlays/actors/ovl_Mir_Ray/z_mir_ray.o"
include "build/data/overlays/actors/z_mir_ray.data.o"
include "build/data/overlays/actors/z_mir_ray.reloc.o"
include "build/src/overlays/actors/ovl_Mir_Ray/ovl_Mir_Ray_reloc.o"
endseg
beginseg

View file

@ -1,7 +1,7 @@
/*
* File: z_mir_ray.c
* Overlay: ovl_Mir_Ray
* Description: Reflectable Light Beam
* Description: Reflectable Light Beam and reflections
*/
#include "z_mir_ray.h"
@ -15,10 +15,22 @@ void MirRay_Destroy(Actor* thisx, GlobalContext* globalCtx);
void MirRay_Update(Actor* thisx, GlobalContext* globalCtx);
void MirRay_Draw(Actor* thisx, GlobalContext* globalCtx);
extern UNK_TYPE D_060000B0;
extern UNK_TYPE D_06000C50;
s32 MirRay_CheckInFrustum(Vec3f* vecA, Vec3f* vecB, f32 pointx, f32 pointy, f32 pointz, s16 radiusA, s16 radiusB);
// Locations of light beams in sMirRayData
typedef enum {
/* 0 */ MIRRAY_SPIRIT_BOMBCHUIWAROOM_DOWNLIGHT,
/* 1 */ MIRRAY_SPIRIT_SUNBLOCKROOM_DOWNLIGHT,
/* 2 */ MIRRAY_SPIRIT_SINGLECOBRAROOM_DOWNLIGHT,
/* 3 */ MIRRAY_SPIRIT_ARMOSROOM_DOWNLIGHT,
/* 4 */ MIRRAY_SPIRIT_TOPROOM_DOWNLIGHT,
/* 5 */ MIRRAY_SPIRIT_TOPROOM_CEILINGMIRROR,
/* 6 */ MIRRAY_SPIRIT_SINGLECOBRAROOM_COBRA,
/* 7 */ MIRRAY_SPIRIT_TOPROOM_COBRA1,
/* 8 */ MIRRAY_SPIRIT_TOPROOM_COBRA2,
/* 9 */ MIRRAY_GANONSCASTLE_SPIRITTRIAL_DOWNLIGHT
} MirRayBeamLocations;
/*
const ActorInit Mir_Ray_InitVars = {
ACTOR_MIR_RAY,
ACTORTYPE_ITEMACTION,
@ -30,25 +42,535 @@ const ActorInit Mir_Ray_InitVars = {
(ActorFunc)MirRay_Update,
(ActorFunc)MirRay_Draw,
};
*/
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/func_80B8D050.s")
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/func_80B8D110.s")
u8 D_80B8E670 = 0;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/MirRay_Init.s")
static ColliderQuadInit sQuadInit = {
{ COLTYPE_UNK10, 0x09, 0x00, 0x00, 0x00, COLSHAPE_QUAD },
{ 0x00, { 0x00200000, 0x00, 0x00 }, { 0xFFCFFFFF, 0x00, 0x00 }, 0x01, 0x00, 0x00 },
{ { { 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_Mir_Ray/MirRay_Destroy.s")
static ColliderJntSphItemInit sJntSphItemsInit[1] = {
{
{ 0x00, { 0x00200000, 0x00, 0x00 }, { 0x00000000, 0x00, 0x00 }, 0x01, 0x00, 0x00 },
{ 0, { { 0, 0, 0 }, 50 }, 100 },
},
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/MirRay_Update.s")
static ColliderJntSphInit sJntSphInit = {
{ COLTYPE_UNK10, 0x09, 0x00, 0x00, 0x00, COLSHAPE_JNTSPH },
1,
sJntSphItemsInit,
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/func_80B8D6F0.s")
static MirRayDataEntry sMirRayData[] = {
{ { -1160, 686, -880 }, { -920, 480, -889 }, 30, 50, 1.0f, 50, 150, 0.8f, 255, 255, 255, 0x02 },
{ { -1856, 1092, -190 }, { -1703, 841, -186 }, 30, 70, 0.88f, 54, 150, 0.8f, 255, 255, 255, 0x02 },
{ { 1367, 738, -860 }, { 1091, 476, -860 }, 30, 85, 0.0f, 0, 150, 0.8f, 255, 255, 255, 0x00 },
{ { 2200, 1103, -220 }, { 2040, 843, -220 }, 30, 60, 0.0f, 0, 150, 0.8f, 255, 255, 255, 0x01 },
{ { -560, 2169, -310 }, { -560, 1743, -310 }, 30, 70, 0.0f, 0, 150, 0.8f, 255, 255, 255, 0x00 },
{ { 60, 1802, -1090 }, { 60, 973, -1090 }, 30, 70, 0.0f, 0, 150, 0.9f, 255, 255, 255, 0x0D },
{ { 1140, 480, -860 }, { 1140, 480, -860 }, 30, 30, 1.0f, 10, 100, 0.9f, 255, 255, 255, 0x0E },
{ { -560, 1743, -310 }, { -560, 1743, -310 }, 30, 30, 0.0f, 0, 100, 0.94f, 255, 255, 255, 0x0C },
{ { 60, 1743, -310 }, { 60, 1743, -310 }, 30, 30, 0.0f, 0, 100, 0.94f, 255, 255, 255, 0x0C },
{ { -1174, 448, 1194 }, { -1174, 148, 1194 }, 50, 100, 1.0f, 50, 150, 0.8f, 255, 255, 255, 0x03 }
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/func_80B8D8A0.s")
static InitChainEntry sInitChain[] = {
ICHAIN_VEC3F_DIV1000(scale, 0, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneForward, 4000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneScale, 1000, ICHAIN_CONTINUE),
ICHAIN_F32(uncullZoneDownward, 1000, ICHAIN_STOP),
};
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/func_80B8DA78.s")
extern Gfx D_060000B0[];
extern Gfx D_06000C50[];
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/func_80B8DB7C.s")
void MirRay_SetupCollider(MirRay* this) {
Vec3f colliderOffset;
MirRayDataEntry* dataEntry;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/MirRay_Draw.s")
dataEntry = &sMirRayData[this->actor.params];
colliderOffset.x = (this->poolPt.x - this->sourcePt.x) * dataEntry->unk_10;
colliderOffset.y = (this->poolPt.y - this->sourcePt.y) * dataEntry->unk_10;
colliderOffset.z = (this->poolPt.z - this->sourcePt.z) * dataEntry->unk_10;
this->colliderSph.list->dim.worldSphere.center.x = colliderOffset.x + this->sourcePt.x;
this->colliderSph.list->dim.worldSphere.center.y = colliderOffset.y + this->sourcePt.y;
this->colliderSph.list->dim.worldSphere.center.z = colliderOffset.z + this->sourcePt.z;
this->colliderSph.list->dim.worldSphere.radius = dataEntry->unk_14 * this->colliderSph.list->dim.scale;
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Mir_Ray/func_80B8E404.s")
// Set up a light point between source point and reflection point. Reflection point is the pool point (for windows) or
// at the player position (for mirrors)
void MirRay_MakeShieldLight(MirRay* this, GlobalContext* globalCtx) {
Player* player = PLAYER;
MirRayDataEntry* dataEntry = &sMirRayData[this->actor.params];
Vec3f reflectionPt;
Vec3s lightPt;
if (MirRay_CheckInFrustum(&this->sourcePt, &this->poolPt, player->actor.posRot.pos.x,
player->actor.posRot.pos.y + 30.0f, player->actor.posRot.pos.z, this->sourceEndRad,
this->poolEndRad)) {
if (dataEntry->params & 8) { // Light beams from mirrors
Math_Vec3f_Diff(&player->actor.posRot.pos, &this->sourcePt, &reflectionPt);
} else { // Light beams from windows
Math_Vec3f_Diff(&this->poolPt, &this->sourcePt, &reflectionPt);
}
lightPt.x = (dataEntry->unk_18 * reflectionPt.x) + this->sourcePt.x;
lightPt.y = (dataEntry->unk_18 * reflectionPt.y) + this->sourcePt.y;
lightPt.z = (dataEntry->unk_18 * reflectionPt.z) + this->sourcePt.z;
// Fade up
Math_ApproxS(&this->lightPointRad, dataEntry->lgtPtMaxRad, 6);
Lights_PointNoGlowSetInfo(&this->lightInfo, lightPt.x, lightPt.y, lightPt.z, dataEntry->color.r,
dataEntry->color.g, dataEntry->color.b, this->lightPointRad);
} else {
// Fade down
Math_ApproxS(&this->lightPointRad, 0, 6);
Lights_PointSetColorAndRadius(&this->lightInfo, dataEntry->color.r, dataEntry->color.g, dataEntry->color.b,
this->lightPointRad);
}
}
void MirRay_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
MirRay* this = THIS;
MirRayDataEntry* dataEntry = &sMirRayData[this->actor.params];
Actor_ProcessInitChain(&this->actor, sInitChain);
ActorShape_Init(&this->actor.shape, 0.0f, NULL, 0.0f);
// Generation of reflectable light!
osSyncPrintf("反射用 光の発生!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
LOG_NUM("this->actor.arg_data", this->actor.params, "../z_mir_ray.c", 518);
if (this->actor.params >= 0xA) {
// Reflected light generation failure
LOG_STRING("反射光 発生失敗", "../z_mir_ray.c", 521);
Actor_Kill(&this->actor);
}
this->sourcePt.x = dataEntry->sourcePoint.x;
this->sourcePt.y = dataEntry->sourcePoint.y;
this->sourcePt.z = dataEntry->sourcePoint.z;
this->sourceEndRad = dataEntry->sourceEndRadius;
this->poolPt.x = dataEntry->poolPoint.x;
this->poolPt.y = dataEntry->poolPoint.y;
this->poolPt.z = dataEntry->poolPoint.z;
this->poolEndRad = dataEntry->poolEndRadius;
Lights_PointNoGlowSetInfo(&this->lightInfo, this->sourcePt.x, this->sourcePt.y, this->sourcePt.z, 255, 255, 255,
100);
this->lightNode = LightContext_InsertLight(globalCtx, &globalCtx->lightCtx, &this->lightInfo);
this->shieldCorners[0].x = -536.0f;
this->shieldCorners[0].y = -939.0f;
this->shieldCorners[1].x = -1690.0f;
this->shieldCorners[1].y = 0.0f;
this->shieldCorners[2].x = -536.0f;
this->shieldCorners[2].y = 938.0f;
this->shieldCorners[3].x = 921.0f;
this->shieldCorners[3].y = 0.0f;
this->shieldCorners[4].x = 758.0f;
this->shieldCorners[4].y = 800.0f;
this->shieldCorners[5].x = 758.0f;
this->shieldCorners[5].y = -800.0f;
if (dataEntry->params & 2) {
Collider_InitJntSph(globalCtx, &this->colliderSph);
Collider_SetJntSph(globalCtx, &this->colliderSph, &this->actor, &sJntSphInit, &this->colliderSphItem);
if (!(dataEntry->params & 4)) { // Beams not from mirrors
MirRay_SetupCollider(this);
}
}
Collider_InitQuad(globalCtx, &this->shieldRay);
Collider_SetQuad(globalCtx, &this->shieldRay, &this->actor, &sQuadInit);
// Spirit Temple top room mirrors
if ((this->actor.params == 5) || (this->actor.params == 7) || (this->actor.params == 8)) {
this->actor.room = -1;
}
}
void MirRay_Destroy(Actor* thisx, GlobalContext* globalCtx) {
MirRay* this = THIS;
LightContext_RemoveLight(globalCtx, &globalCtx->lightCtx, this->lightNode);
if (sMirRayData[this->actor.params].params & 2) {
Collider_DestroyJntSph(globalCtx, &this->colliderSph);
}
Collider_DestroyQuad(globalCtx, &this->shieldRay);
}
void MirRay_Update(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
MirRay* this = THIS;
Player* player = PLAYER;
D_80B8E670 = 0;
if (!this->unLit) {
if (sMirRayData[this->actor.params].params & 2) {
if (sMirRayData[this->actor.params].params & 4) { // Beams from mirrors
MirRay_SetupCollider(this);
}
CollisionCheck_SetAT(globalCtx, &globalCtx->colChkCtx, &this->colliderSph.base);
}
if (this->reflectIntensity > 0.0f) {
CollisionCheck_SetAT(globalCtx, &globalCtx->colChkCtx, &this->shieldRay.base);
}
MirRay_MakeShieldLight(this, globalCtx);
if (this->reflectIntensity > 0.0f) {
func_8002F8F0(&player->actor, NA_SE_IT_SHIELD_BEAM - SFX_FLAG);
}
}
}
void MirRay_SetIntensity(MirRay* this, GlobalContext* globalCtx) {
Vec3f sp4C;
f32 temp_f0;
f32 temp_f0_2;
f32 temp_f2_2;
MtxF* shieldMtx;
Player* player = PLAYER;
f32* new_var;
this->reflectIntensity = 0.0f;
shieldMtx = &player->shieldMf;
if (MirRay_CheckInFrustum(&this->sourcePt, &this->poolPt, shieldMtx->wx, shieldMtx->wy, shieldMtx->wz,
this->sourceEndRad, this->poolEndRad)) {
temp_f0 = sqrtf(SQ(shieldMtx->zz) + (SQ(shieldMtx->zx) + SQ(shieldMtx->zy)));
if (temp_f0 == 0.0f) {
this->reflectRange = 1.0f;
} else {
this->reflectRange = 1.0f / temp_f0;
}
// If light beam is adirectional, always reflect, else only reflect if shield is pointing in correct direction
if (sMirRayData[this->actor.params].params & 1) {
this->reflectIntensity = 1.0f;
} else {
new_var = &sp4C.z; // permuter suggested this, does not match without
sp4C.x = this->poolPt.x - this->sourcePt.x;
sp4C.y = this->poolPt.y - this->sourcePt.y;
sp4C.z = this->poolPt.z - this->sourcePt.z;
temp_f2_2 = ((-shieldMtx->zx * sp4C.x) - (shieldMtx->zy * sp4C.y)) - (shieldMtx->zz * (*new_var));
if (temp_f2_2 < 0.0f) {
temp_f0_2 = sqrtf(SQ(sp4C.x) + SQ(sp4C.y) + SQ(*new_var));
if ((temp_f0 != 0.0f) && (temp_f0_2 != 0.0f)) {
this->reflectIntensity = -temp_f2_2 / (temp_f0 * temp_f0_2);
}
}
}
}
}
// Draws six images, one for each corner of the shield, by finding the intersection of a line segment from the corner
// perpendicular to the shield with the nearest collision (if any).
void MirRay_SetupReflectionPolys(MirRay* this, GlobalContext* globalCtx, MirRayShieldReflection* reflection) {
Player* player = PLAYER;
MtxF* shieldMtx;
s32 i;
Vec3f posA;
Vec3f posB;
Vec3f posResult;
CollisionPoly* outPoly;
Vec3f sp60;
shieldMtx = &player->shieldMf;
sp60.x = -((*shieldMtx).zx * this->reflectRange) * this->reflectIntensity * 400.0f;
sp60.y = -((*shieldMtx).zy * this->reflectRange) * this->reflectIntensity * 400.0f;
sp60.z = -((*shieldMtx).zz * this->reflectRange) * this->reflectIntensity * 400.0f;
sp60 = sp60; // Need something involving sp60 or the whole function changes
for (i = 0; i < 6; i++) {
posA.x = ((*shieldMtx).wx + (this->shieldCorners[i].x * (*shieldMtx).xx)) +
(this->shieldCorners[i].y * (*shieldMtx).yx);
posA.y = ((*shieldMtx).wy + (this->shieldCorners[i].x * (*shieldMtx).xy)) +
(this->shieldCorners[i].y * (*shieldMtx).yy);
posA.z = ((*shieldMtx).wz + (this->shieldCorners[i].x * (*shieldMtx).xz)) +
(this->shieldCorners[i].y * (*shieldMtx).yz);
posB.x = sp60.x + posA.x;
posB.y = sp60.y + posA.y;
posB.z = sp60.z + posA.z;
if (func_8003E0B8(&globalCtx->colCtx, &posA, &posB, &posResult, &outPoly, 1)) {
reflection[i].reflectionPoly = outPoly;
} else {
reflection[i].reflectionPoly = NULL;
}
}
}
// Remove reflections that are in the same position and are sufficiently near to the same plane
void MirRay_RemoveSimilarReflections(MirRayShieldReflection* reflection) {
s32 i;
s32 j;
for (i = 0; i < 6; i++) {
for (j = i + 1; j < 6; j++) {
if (reflection[i].reflectionPoly != NULL) {
if ((reflection[j].reflectionPoly != NULL) &&
(ABS(reflection[i].reflectionPoly->norm.x - reflection[j].reflectionPoly->norm.x) < 100) &&
(ABS(reflection[i].reflectionPoly->norm.y - reflection[j].reflectionPoly->norm.y) < 100) &&
(ABS(reflection[i].reflectionPoly->norm.z - reflection[j].reflectionPoly->norm.z) < 100) &&
(reflection[i].reflectionPoly->dist == reflection[j].reflectionPoly->dist)) {
reflection[j].reflectionPoly = NULL;
}
}
}
}
}
// Creates the reflected beam's collider (to interact with objects) and places and orients the shield images
void MirRay_ReflectedBeam(MirRay* this, GlobalContext* globalCtx, MirRayShieldReflection* reflection) {
Player* player = PLAYER;
s32 i;
f32 temp_f0;
Vec3f vecB;
Vec3f vecD;
Vec3f sp118;
Vec3f sp10C;
Vec3f sp100;
Vec3f intersection;
Vec3f spE8;
Vec3f normalVec;
MtxF* shieldMtx;
Vec3f vecA;
Vec3f vecC;
MirRayShieldReflection* currentReflection;
shieldMtx = &player->shieldMf;
spE8.x = -(shieldMtx->zx * this->reflectRange) * this->reflectIntensity * 400.0f;
spE8.y = -(shieldMtx->zy * this->reflectRange) * this->reflectIntensity * 400.0f;
spE8.z = -(shieldMtx->zz * this->reflectRange) * this->reflectIntensity * 400.0f;
vecB.x = shieldMtx->wx;
vecB.y = shieldMtx->wy;
vecB.z = shieldMtx->wz;
vecD.x = spE8.x + vecB.x;
vecD.y = spE8.y + vecB.y;
vecD.z = spE8.z + vecB.z;
vecA.x = vecB.x + (shieldMtx->xx * 300.0f);
vecA.y = vecB.y + (shieldMtx->xy * 300.0f);
vecA.z = vecB.z + (shieldMtx->xz * 300.0f);
vecC.x = vecD.x + (shieldMtx->xx * 300.0f);
vecC.y = vecD.y + (shieldMtx->xy * 300.0f);
vecC.z = vecD.z + (shieldMtx->xz * 300.0f);
func_80062734(&this->shieldRay, &vecA, &vecB, &vecC, &vecD);
for (i = 0; i < 6; i++) {
currentReflection = &reflection[i];
if (currentReflection->reflectionPoly != NULL) {
normalVec.x = currentReflection->reflectionPoly->norm.x * COLPOLY_NORM_FRAC;
normalVec.y = currentReflection->reflectionPoly->norm.y * COLPOLY_NORM_FRAC;
normalVec.z = currentReflection->reflectionPoly->norm.z * COLPOLY_NORM_FRAC;
if (Math3D_LineSegVsPlane(normalVec.x, normalVec.y, normalVec.z, currentReflection->reflectionPoly->dist,
&vecB, &vecD, &sp118, 1)) {
currentReflection->pos.x = sp118.x;
currentReflection->pos.y = sp118.y;
currentReflection->pos.z = sp118.z;
temp_f0 = sqrtf(SQ(sp118.x - vecB.x) + SQ(sp118.y - vecB.y) + SQ(sp118.z - vecB.z));
if (temp_f0 < (this->reflectIntensity * 600.0f)) {
currentReflection->opacity = 200;
} else {
currentReflection->opacity = (s32)(800.0f - temp_f0);
}
spE8 = spE8; // Required to match
sp10C.x = (shieldMtx->xx * 100.0f) + vecB.x;
sp10C.y = (shieldMtx->xy * 100.0f) + vecB.y;
sp10C.z = (shieldMtx->xz * 100.0f) + vecB.z;
sp100.x = (spE8.x * 4.0f) + sp10C.x;
sp100.y = (spE8.y * 4.0f) + sp10C.y;
sp100.z = (spE8.z * 4.0f) + sp10C.z;
normalVec = normalVec; // Required to match
currentReflection->mtx.wz = 0.0f;
if (1) {}
if (1) {}
if (1) {}
if (1) {} // All four required to match
currentReflection->mtx.xx = currentReflection->mtx.yy = currentReflection->mtx.zz =
currentReflection->mtx.ww = 1.0f;
currentReflection->mtx.xy = currentReflection->mtx.xz = currentReflection->mtx.xw =
currentReflection->mtx.yx = currentReflection->mtx.yz = currentReflection->mtx.yw =
currentReflection->mtx.zx = currentReflection->mtx.zy = currentReflection->mtx.zw =
currentReflection->mtx.wx = currentReflection->mtx.wy = currentReflection->mtx.wz;
if (Math3D_LineSegVsPlane(normalVec.x, normalVec.y, normalVec.z,
currentReflection->reflectionPoly->dist, &sp10C, &sp100, &intersection, 1)) {
currentReflection->mtx.xx = intersection.x - sp118.x;
currentReflection->mtx.xy = intersection.y - sp118.y;
currentReflection->mtx.xz = intersection.z - sp118.z;
}
sp10C.x = (shieldMtx->yx * 100.0f) + vecB.x;
sp10C.y = (shieldMtx->yy * 100.0f) + vecB.y;
sp10C.z = (shieldMtx->yz * 100.0f) + vecB.z;
sp100.x = (spE8.x * 4.0f) + sp10C.x;
sp100.y = (spE8.y * 4.0f) + sp10C.y;
sp100.z = (spE8.z * 4.0f) + sp10C.z;
if (Math3D_LineSegVsPlane(normalVec.x, normalVec.y, normalVec.z,
currentReflection->reflectionPoly->dist, &sp10C, &sp100, &intersection, 1)) {
currentReflection->mtx.yx = intersection.x - sp118.x;
currentReflection->mtx.yy = intersection.y - sp118.y;
currentReflection->mtx.yz = intersection.z - sp118.z;
}
} else {
currentReflection->reflectionPoly = NULL;
}
}
}
}
void MirRay_Draw(Actor* thisx, GlobalContext* globalCtx) {
MirRay* this = THIS;
Player* player = PLAYER;
s32 i;
MirRayShieldReflection reflection[6];
s32 temp;
this->reflectIntensity = 0.0f;
if ((D_80B8E670 == 0) && !this->unLit && Player_HasMirrorShieldSetToDraw(globalCtx)) {
Matrix_Mult(&player->shieldMf, MTXMODE_NEW);
MirRay_SetIntensity(this, globalCtx);
if (!(this->reflectIntensity <= 0.0f)) {
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_mir_ray.c", 966);
func_80093D84(globalCtx->state.gfxCtx);
Matrix_Scale(1.0f, 1.0f, this->reflectIntensity * 5.0f, MTXMODE_APPLY);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_mir_ray.c", 972),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 150, (s16)(temp = this->reflectIntensity * 100.0f));
gSPDisplayList(POLY_XLU_DISP++, D_06000C50);
MirRay_SetupReflectionPolys(this, globalCtx, reflection);
MirRay_RemoveSimilarReflections(reflection);
MirRay_ReflectedBeam(this, globalCtx, reflection);
if (reflection[0].reflectionPoly == NULL) {
reflection[0].opacity = 0;
}
for (i = 1; i < 6; i++) {
if (reflection[i].reflectionPoly != NULL) {
if (reflection[0].opacity < reflection[i].opacity) {
reflection[0].opacity = reflection[i].opacity;
}
}
}
for (i = 0; i < 6; i++) {
if (reflection[i].reflectionPoly != NULL) {
Matrix_Translate(reflection[i].pos.x, reflection[i].pos.y, reflection[i].pos.z, MTXMODE_NEW);
Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY);
Matrix_Mult(&reflection[i].mtx, MTXMODE_APPLY);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_mir_ray.c", 1006),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetRenderMode(POLY_XLU_DISP++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, 255, 255, 150, reflection[0].opacity);
gSPDisplayList(POLY_XLU_DISP++, D_060000B0);
}
}
D_80B8E670 = 1;
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_mir_ray.c", 1027);
}
}
}
// Computes if the Point (pointx, pointy, pointz) lies within the right conical frustum with one end centred at vecA
// with radius radiusA, the other at vecB with radius radiusB
s32 MirRay_CheckInFrustum(Vec3f* vecA, Vec3f* vecB, f32 pointx, f32 pointy, f32 pointz, s16 radiusA, s16 radiusB) {
f32 coneRadius;
f32 closestPtx;
f32 closestPty;
f32 closestPtz;
Vec3f vecdiff;
f32 dist;
Vec3f sp5C;
Vec3f sp50;
Vec3f sp44;
vecdiff.x = vecB->x - vecA->x;
vecdiff.y = vecB->y - vecA->y;
vecdiff.z = vecB->z - vecA->z;
if (1) {}
dist = SQ(vecdiff.x) + SQ(vecdiff.y) + SQ(vecdiff.z);
if (dist == 0.0f) {
return 0;
}
dist =
(((pointx - vecA->x) * vecdiff.x) + ((pointy - vecA->y) * vecdiff.y) + ((pointz - vecA->z) * vecdiff.z)) / dist;
// Closest point on line A-B to Point
closestPtx = (vecdiff.x * dist) + vecA->x;
closestPty = (vecdiff.y * dist) + vecA->y;
closestPtz = (vecdiff.z * dist) + vecA->z;
// Diameter of the double cone on the perpendicular plane through the closest point
coneRadius = ((radiusB - radiusA) * dist) + radiusA;
// If the Point is within the bounding double cone, check if it is in the frustum by checking whether it is between
// the bounding planes
if ((SQ(closestPtx - pointx) + SQ(closestPty - pointy) + SQ(closestPtz - pointz)) <= SQ(coneRadius)) {
if (1) {}
// Stores the vector difference again
Math_Vec3f_Diff(vecB, vecA, &sp5C);
sp50.x = pointx - vecA->x;
sp50.y = pointy - vecA->y;
sp50.z = pointz - vecA->z;
if (Math3D_Cos(&sp5C, &sp50) < 0.0f) {
return 0;
}
sp44.x = pointx - vecB->x;
sp44.y = pointy - vecB->y;
sp44.z = pointz - vecB->z;
if (Math3D_Cos(&sp5C, &sp44) > 0.0f) {
return 0;
}
return 1;
}
return 0;
}

View file

@ -6,9 +6,42 @@
struct MirRay;
typedef struct {
/* 0x00 */ Vec3s sourcePoint;
/* 0x06 */ Vec3s poolPoint; // point at center of light pool on floor for windows and BigMirror, same as source point for Cobra Mirror
/* 0x0C */ s16 sourceEndRadius; // Radius of beam frustum at the source end
/* 0x0E */ s16 poolEndRadius; // Radius of beam frustum at the pool end
/* 0x10 */ f32 unk_10; // placement of collider center along beam
/* 0x14 */ s16 unk_14; // collider radius before scaled
/* 0x16 */ s16 lgtPtMaxRad; // light point max radius
/* 0x18 */ f32 unk_18; // placement of light point between source and reflection point (pool point for windows, player for mirrors)
/* 0x1C */ Color_RGB8 color;
/* 0x1F */ u8 params;
} MirRayDataEntry; // size = 0x20
typedef struct {
/* 0x00 */ Vec3f pos;
/* 0x0C */ MtxF mtx;
/* 0x4C */ CollisionPoly* reflectionPoly;
/* 0x50 */ u8 opacity;
} MirRayShieldReflection; // size = 0x54
typedef struct MirRay {
/* 0x0000 */ Actor actor;
/* 0x014C */ char unk_14C[0x164];
/* 0x014C */ ColliderJntSph colliderSph;
/* 0x016C */ ColliderJntSphItem colliderSphItem;
/* 0x01AC */ ColliderQuad shieldRay;
/* 0x022C */ f32 reflectIntensity; // Reflection occurs if it is positive, brightness depends on it
/* 0x0230 */ Vec3f shieldCorners[6];
/* 0x0278 */ f32 reflectRange;
/* 0x027C */ Vec3f sourcePt;
/* 0x0288 */ Vec3f poolPt;
/* 0x0294 */ s16 sourceEndRad;
/* 0x0296 */ s16 poolEndRad;
/* 0x0298 */ s16 lightPointRad;
/* 0x029C */ LightNode* lightNode;
/* 0x02A0 */ LightInfo lightInfo;
/* 0x02AE */ u8 unLit; // Conditioned on. set in Cobra?
} MirRay; // size = 0x02B0
extern const ActorInit Mir_Ray_InitVars;