two geometric functions (#957)

* matched two functions

* PR comments
This commit is contained in:
Unnunu 2023-02-26 13:19:16 +03:00 committed by GitHub
parent 07c314d8e7
commit c266bc58d7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 214 additions and 808 deletions

View File

@ -19,11 +19,205 @@ CameraControlSettings* test_ray_zone(f32 posX, f32 posY, f32 posZ, Collider** zo
}
}
s32 func_800322DC(f32, f32, f32, f32, f32, f32, f32, f32, f32*, f32*, f32*);
INCLUDE_ASM(s32, "camera", func_800322DC);
s32 calculate_segment_intersection(f32 A1x, f32 A1z, f32 A2x, f32 A2z, f32 B1x, f32 B1z, f32 B2x, f32 B2z, f32* interX, f32* interZ, f32* squared_dist) {
f32 dx14;
f32 dx13;
f32 dz;
f32 dz12;
f32 dx34;
f32 dx12;
f32 dx;
f32 alpha;
f32 minus_dz12;
f32 B2_side;
f32 x;
f32 B1_side;
f32 z;
f32 dx12_copy;
f32 dz13;
f32 dz14;
f32 dz34;
f32 B1_side_;
dx12_copy = A2x - A1x;
dx12 = dx12_copy;
dz12 = A2z - A1z;
dx13 = B1x - A1x;
dz13 = B1z - A1z;
dx14 = B2x - A1x;
dz14 = B2z - A1z;
minus_dz12 = -dz12;
dx34 = B2x - B1x;
dz34 = B2z - B1z;
// if distance between points on the line is 0
if (dx12_copy == 0.0f && dz12 == 0.0f) {
return FALSE;
}
// if length of second segment is 0
if (dx34 == 0.0f && dz34 == 0.0f) {
return FALSE;
}
B1_side_ = minus_dz12 * dx13 + dx12_copy * dz13;
if (B1_side_ < 0.0f) {
B1_side = -1.0f;
} else if (B1_side_ > 0.0f) {
B1_side = 1.0f;
} else {
B1_side = 0.0f;
}
B1_side_ = B1_side;
dx = minus_dz12 * dx14 + dx12_copy * dz14;
if (dx < 0.0f) {
B2_side = -1.0f;
} else if (dx > 0.0f) {
B2_side = 1.0f;
} else {
B2_side = 0.0f;
}
// B1 and B2 are on the same side relative to the line: no intersection
if (B1_side_ == B2_side) {
return FALSE;
}
if (fabsf(dx12) > fabsf(dx34)) {
/*
We represent intersection point P as P = B1 + alpha * (B2 - B1)
and solve the equation (P - A1) x (A2 - A1) = 0, where 'x' is cross product, A1 and A2 are points on the line
and B1 and B2 are the ends of the segment.
So, (B1 - A1 + alpha * (B2 - B1)) x (A2 - A1) = 0,
alpha = [-(B1 - A1) x (A2 - A1)] / [(B2 - B1) x (A2 - A1)]
*/
// same as -(B1 - A1) x (A2 - A1)
alpha = A1x * dz12 - A1z * dx12 + dx12 * B1z - dz12 * B1x;
// divide by (B2 - B1) x (A2 - A1)
alpha /= dz12 * dx34 - dx12 * dz34;
/*
Now we represent P as P = A1 + beta * (A2 - A1), and we are to find beta.
B1 + alpha * (B2 - B1) = A1 + beta * (A2 - A1)
beta * (A2 - A1) = B1 + alpha * (B2 - B1) - A1
We use only 'x' part of this equation to find beta.
Actually this step could be omitted and we calculate intersection directly as B1 + alpha * (B2 - B1).
Don't know why it's done this way.
*/
alpha = (B1x + dx34 * alpha - A1x) / dx12;
x = A1x + dx12 * alpha;
z = A1z + dz12 * alpha;
} else {
/*
We represent intersection point P as P = A1 + alpha * (A2 - A1)
and solve the equation (B2 - B1) x (P - B1) = 0
*/
// same as (B2 - B1) x (B1 - A1)
alpha = B1z * dx34 + A1x * dz34 - B1z * dz34 - A1z * dx34;
// divide by (B2 - B1) x (A2 - A1)
alpha /= dz12 * dx34 - dx12 * dz34;
// Now we represent P as P = B1 + beta * (B2 - B1) and find beta
alpha = (A1x + dx12 * alpha - B1x) / dx34;
x = B1x + dx34 * alpha;
z = B1z + dz34 * alpha;
}
// (P - A1) * (P - A2) > 0 when P is outside of segment A1-A2
if ((x - A1x) * (x - A2x) + (z - A1z) * (z - A2z) > 0.0f) {
return FALSE;
}
dx = x - B1x;
dz = z - B1z;
*interX = x;
*interZ = z;
// distance between P and B1
*squared_dist = SQ(dx) + SQ(dz);
return TRUE;
}
s32 calculate_line_segment_intersection(f32 A1x, f32 A1z, f32 A2x, f32 A2z, f32 B1x, f32 B1z, f32 B2x, f32 B2z, f32* interX, f32* interZ, f32* squared_dist) {
f32 dx14;
f32 dx13;
f32 dz;
f32 dz12;
f32 dx34;
f32 dx12;
f32 dx;
f32 alpha;
f32 minus_dz12;
f32 B2_side;
f32 x;
f32 B1_side;
f32 z;
f32 dx12_copy;
f32 dz13;
f32 dz14;
f32 dz34;
f32 B1_side_;
dx12_copy = A2x - A1x;
dx12 = dx12_copy;
dz12 = A2z - A1z;
dx13 = B1x - A1x;
dz13 = B1z - A1z;
dx14 = B2x - A1x;
dz14 = B2z - A1z;
minus_dz12 = -dz12;
dx34 = B2x - B1x;
dz34 = B2z - B1z;
if (dx12_copy == 0.0f && dz12 == 0.0f) {
return FALSE;
}
if (dx34 == 0.0f && dz34 == 0.0f) {
return FALSE;
}
B1_side_ = minus_dz12 * dx13 + dx12_copy * dz13;
if (B1_side_ < 0.0f) {
B1_side = -1.0f;
} else if (B1_side_ > 0.0f) {
B1_side = 1.0f;
} else {
B1_side = 0.0f;
}
B1_side_ = B1_side;
dx = minus_dz12 * dx14 + dx12_copy * dz14;
if (dx < 0.0f) {
B2_side = -1.0f;
} else if (dx > 0.0f) {
B2_side = 1.0f;
} else {
B2_side = 0.0f;
}
if (B1_side_ == B2_side) {
return FALSE;
}
if (fabsf(dx12) > fabsf(dx34)) {
alpha = A1x * dz12 - A1z * dx12 + dx12 * B1z - dz12 * B1x;
alpha /= dz12 * dx34 - dx12 * dz34;
alpha = (B1x + dx34 * alpha - A1x) / dx12;
x = A1x + dx12 * alpha;
z = A1z + dz12 * alpha;
} else {
alpha = B1z * dx34 + A1x * dz34 - B1z * dz34 - A1z * dx34;
alpha /= dz12 * dx34 - dx12 * dz34;
alpha = (A1x + dx12 * alpha - B1x) / dx34;
x = B1x + dx34 * alpha;
z = B1z + dz34 * alpha;
}
dx = x - B1x;
dz = z - B1z;
*interX = x;
*interZ = z;
*squared_dist = SQ(dx) + SQ(dz);
return TRUE;
}
s32 func_800325E4(f32, f32, f32, f32, f32, f32, f32, f32, f32*, f32*, f32*);
INCLUDE_ASM(s32, "camera", func_800325E4);
s32 func_800328A4(CameraControlSettings* camSettings, f32 x, f32 z) {
f32 product1, product2;
@ -235,7 +429,7 @@ void func_80032C64(Camera* camera) {
if (settings != NULL) {
if (settings->type == CAMERA_SETTINGS_TYPE_2 || settings->type == CAMERA_SETTINGS_TYPE_5 || func_800328A4(camera->aabbForZoneBelow, newPosX, newPosZ) != 0) {
cond = TRUE;
dist = 1000000.0f;
dist = SQ(1000.0f);
if (camera->aabbForZoneBelow != NULL && camera->aabbForZoneBelow->type == CAMERA_SETTINGS_TYPE_6) {
settings2 = camera->aabbForZoneBelow;
cond = FALSE;
@ -243,12 +437,12 @@ void func_80032C64(Camera* camera) {
deltaPosX = settings2->posB.x - settings2->posA.x;
deltaPosZ = settings2->posB.z - settings2->posA.z;
if (func_800325E4(settings2->posA.x, settings2->posA.z, settings2->posA.x - deltaPosZ, settings2->posA.z + deltaPosX,
camera->targetPos.x, camera->targetPos.z, newPosX, newPosZ, &sp44, &sp48, &sp4C) && sp4C < 1000000.0f) {
if (calculate_line_segment_intersection(settings2->posA.x, settings2->posA.z, settings2->posA.x - deltaPosZ, settings2->posA.z + deltaPosX,
camera->targetPos.x, camera->targetPos.z, newPosX, newPosZ, &sp44, &sp48, &sp4C) && sp4C < SQ(1000.0f)) {
dist = sp4C;
}
do {
if (func_800325E4(settings2->posB.x, settings2->posB.z, settings2->posB.x - deltaPosZ, settings2->posB.z + deltaPosX,
if (calculate_line_segment_intersection(settings2->posB.x, settings2->posB.z, settings2->posB.x - deltaPosZ, settings2->posB.z + deltaPosX,
camera->targetPos.x, camera->targetPos.z, newPosX, newPosZ, &sp44, &sp48, &sp4C) && sp4C < dist) {
dist = sp4C;
}
@ -256,17 +450,17 @@ void func_80032C64(Camera* camera) {
}
if (cond) {
for (i = 0; i < zone->numTriangles; i++) {
if (func_800322DC(zone->triangleTable[i].v1->x, zone->triangleTable[i].v1->z,
if (calculate_segment_intersection(zone->triangleTable[i].v1->x, zone->triangleTable[i].v1->z,
zone->triangleTable[i].v2->x, zone->triangleTable[i].v2->z,
camera->targetPos.x, camera->targetPos.z, newPosX, newPosZ, &sp44, &sp48, &sp4C) && sp4C < dist) {
dist = sp4C;
}
if (func_800322DC(zone->triangleTable[i].v2->x, zone->triangleTable[i].v2->z,
if (calculate_segment_intersection(zone->triangleTable[i].v2->x, zone->triangleTable[i].v2->z,
zone->triangleTable[i].v3->x, zone->triangleTable[i].v3->z,
camera->targetPos.x, camera->targetPos.z, newPosX, newPosZ, &sp44, &sp48, &sp4C) && sp4C < dist) {
dist = sp4C;
}
if (func_800322DC(zone->triangleTable[i].v3->x, zone->triangleTable[i].v3->z,
if (calculate_segment_intersection(zone->triangleTable[i].v3->x, zone->triangleTable[i].v3->z,
zone->triangleTable[i].v1->x, zone->triangleTable[i].v1->z,
camera->targetPos.x, camera->targetPos.z, newPosX, newPosZ, &sp44, &sp48, &sp4C) && sp4C < dist) {
dist = sp4C;
@ -274,7 +468,7 @@ void func_80032C64(Camera* camera) {
}
}
if (dist == 1000000.0f || dist == 0) {
if (dist == SQ(1000.0f) || dist == 0) {
camera->leadAmount = 0.0f;
} else {
camera->leadAmount = (camera->leadAmount > 0.0f) ? sqrtf(dist) : -sqrtf(dist);

View File

@ -3,7 +3,7 @@
/* Generated by spimdisasm 1.11.1 */
glabel func_800322DC
glabel calculate_segment_intersection
/* CD8C 8003198C 27BDFFC0 */ addiu $sp, $sp, -0x40
/* CD90 80031990 F7BC0030 */ sdc1 $f28, 0x30($sp)
/* CD94 80031994 AFA60048 */ sw $a2, 0x48($sp)

View File

@ -3,7 +3,7 @@
/* Generated by spimdisasm 1.11.1 */
glabel func_800325E4
glabel calculate_line_segment_intersection
/* D094 80031C94 27BDFFC0 */ addiu $sp, $sp, -0x40
/* D098 80031C98 F7BC0030 */ sdc1 $f28, 0x30($sp)
/* D09C 80031C9C 4486E000 */ mtc1 $a2, $f28

View File

@ -4,8 +4,8 @@ update_camera_mode_1 = 0x8002e940;
update_camera_mode_0 = 0x8002ef00;
update_camera_mode_unused = 0x8002f390;
update_camera_from_controller = 0x8002fbac;
func_800322DC = 0x8003198c;
func_800325E4 = 0x80031c94;
calculate_segment_intersection = 0x8003198c;
calculate_line_segment_intersection = 0x80031c94;
npc_do_player_collision = 0x80038988;
npc_do_other_npc_collision = 0x800386bc;
vtx_curtains1 = 0x80074590;

View File

@ -1,206 +0,0 @@
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
glabel func_800322DC
/* D36C 80031F6C 27BDFFC0 */ addiu $sp, $sp, -0x40
/* D370 80031F70 F7BC0030 */ sdc1 $f28, 0x30($sp)
/* D374 80031F74 AFA60048 */ sw $a2, 0x48($sp)
/* D378 80031F78 C7BC0048 */ lwc1 $f28, 0x48($sp)
/* D37C 80031F7C F7B80020 */ sdc1 $f24, 0x20($sp)
/* D380 80031F80 C7B80050 */ lwc1 $f24, 0x50($sp)
/* D384 80031F84 F7B40010 */ sdc1 $f20, 0x10($sp)
/* D388 80031F88 46006506 */ mov.s $f20, $f12
/* D38C 80031F8C F7B60018 */ sdc1 $f22, 0x18($sp)
/* D390 80031F90 46007586 */ mov.s $f22, $f14
/* D394 80031F94 F7BA0028 */ sdc1 $f26, 0x28($sp)
/* D398 80031F98 C7BA0054 */ lwc1 $f26, 0x54($sp)
/* D39C 80031F9C 4614E481 */ sub.s $f18, $f28, $f20
/* D3A0 80031FA0 C7A20058 */ lwc1 $f2, 0x58($sp)
/* D3A4 80031FA4 C7A0005C */ lwc1 $f0, 0x5C($sp)
/* D3A8 80031FA8 4616D181 */ sub.s $f6, $f26, $f22
/* D3AC 80031FAC F7BE0038 */ sdc1 $f30, 0x38($sp)
/* D3B0 80031FB0 46160781 */ sub.s $f30, $f0, $f22
/* D3B4 80031FB4 AFA7004C */ sw $a3, 0x4C($sp)
/* D3B8 80031FB8 46181401 */ sub.s $f16, $f2, $f24
/* D3BC 80031FBC C7BC004C */ lwc1 $f28, 0x4C($sp)
/* D3C0 80031FC0 4616E301 */ sub.s $f12, $f28, $f22
/* D3C4 80031FC4 4614C701 */ sub.s $f28, $f24, $f20
/* D3C8 80031FC8 461A0381 */ sub.s $f14, $f0, $f26
/* D3CC 80031FCC E7BC0008 */ swc1 $f28, 0x8($sp)
/* D3D0 80031FD0 46141701 */ sub.s $f28, $f2, $f20
/* D3D4 80031FD4 44802000 */ mtc1 $zero, $f4
/* D3D8 80031FD8 46009286 */ mov.s $f10, $f18
/* D3DC 80031FDC 46049032 */ c.eq.s $f18, $f4
/* D3E0 80031FE0 46006207 */ neg.s $f8, $f12
/* D3E4 80031FE4 45000005 */ bc1f .LJP_80031FFC
/* D3E8 80031FE8 E7BC0000 */ swc1 $f28, 0x0($sp)
/* D3EC 80031FEC 46046032 */ c.eq.s $f12, $f4
/* D3F0 80031FF0 00000000 */ nop
/* D3F4 80031FF4 45010097 */ bc1t .LJP_80032254
/* D3F8 80031FF8 0000102D */ daddu $v0, $zero, $zero
.LJP_80031FFC:
/* D3FC 80031FFC 44800000 */ mtc1 $zero, $f0
/* D400 80032000 00000000 */ nop
/* D404 80032004 46008032 */ c.eq.s $f16, $f0
/* D408 80032008 00000000 */ nop
/* D40C 8003200C 45000005 */ bc1f .LJP_80032024
/* D410 80032010 00000000 */ nop
/* D414 80032014 46007032 */ c.eq.s $f14, $f0
/* D418 80032018 00000000 */ nop
/* D41C 8003201C 4501008D */ bc1t .LJP_80032254
/* D420 80032020 0000102D */ daddu $v0, $zero, $zero
.LJP_80032024:
/* D424 80032024 46065002 */ mul.s $f0, $f10, $f6
/* D428 80032028 00000000 */ nop
/* D42C 8003202C C7BC0008 */ lwc1 $f28, 0x8($sp)
/* D430 80032030 461C4082 */ mul.s $f2, $f8, $f28
/* D434 80032034 00000000 */ nop
/* D438 80032038 46001180 */ add.s $f6, $f2, $f0
/* D43C 8003203C 44800000 */ mtc1 $zero, $f0
/* D440 80032040 00000000 */ nop
/* D444 80032044 4600303C */ c.lt.s $f6, $f0
/* D448 80032048 3C01BF80 */ lui $at, (0xBF800000 >> 16)
/* D44C 8003204C 44812000 */ mtc1 $at, $f4
/* D450 80032050 45010007 */ bc1t .LJP_80032070
/* D454 80032054 00000000 */ nop
/* D458 80032058 4606003C */ c.lt.s $f0, $f6
/* D45C 8003205C 00000000 */ nop
/* D460 80032060 45000003 */ bc1f .LJP_80032070
/* D464 80032064 46000106 */ mov.s $f4, $f0
/* D468 80032068 3C013F80 */ lui $at, (0x3F800000 >> 16)
/* D46C 8003206C 44812000 */ mtc1 $at, $f4
.LJP_80032070:
/* D470 80032070 461E5002 */ mul.s $f0, $f10, $f30
/* D474 80032074 00000000 */ nop
/* D478 80032078 C7BC0000 */ lwc1 $f28, 0x0($sp)
/* D47C 8003207C 461C4082 */ mul.s $f2, $f8, $f28
/* D480 80032080 00000000 */ nop
/* D484 80032084 46001080 */ add.s $f2, $f2, $f0
/* D488 80032088 44800000 */ mtc1 $zero, $f0
/* D48C 8003208C 00000000 */ nop
/* D490 80032090 4600103C */ c.lt.s $f2, $f0
/* D494 80032094 00000000 */ nop
/* D498 80032098 45000005 */ bc1f .LJP_800320B0
/* D49C 8003209C 46002186 */ mov.s $f6, $f4
/* D4A0 800320A0 3C01BF80 */ lui $at, (0xBF800000 >> 16)
/* D4A4 800320A4 44810000 */ mtc1 $at, $f0
/* D4A8 800320A8 0800C833 */ j .LJP_800320CC
/* D4AC 800320AC 00000000 */ nop
.LJP_800320B0:
/* D4B0 800320B0 4602003C */ c.lt.s $f0, $f2
/* D4B4 800320B4 00000000 */ nop
/* D4B8 800320B8 45000004 */ bc1f .LJP_800320CC
/* D4BC 800320BC 00000000 */ nop
/* D4C0 800320C0 3C013F80 */ lui $at, (0x3F800000 >> 16)
/* D4C4 800320C4 44810000 */ mtc1 $at, $f0
/* D4C8 800320C8 00000000 */ nop
.LJP_800320CC:
/* D4CC 800320CC 46003032 */ c.eq.s $f6, $f0
/* D4D0 800320D0 00000000 */ nop
/* D4D4 800320D4 4501005F */ bc1t .LJP_80032254
/* D4D8 800320D8 0000102D */ daddu $v0, $zero, $zero
/* D4DC 800320DC 46009085 */ abs.s $f2, $f18
/* D4E0 800320E0 46008005 */ abs.s $f0, $f16
/* D4E4 800320E4 4602003C */ c.lt.s $f0, $f2
/* D4E8 800320E8 00000000 */ nop
/* D4EC 800320EC 4500001E */ bc1f .LJP_80032168
/* D4F0 800320F0 00000000 */ nop
/* D4F4 800320F4 460CA002 */ mul.s $f0, $f20, $f12
/* D4F8 800320F8 00000000 */ nop
/* D4FC 800320FC 4612B182 */ mul.s $f6, $f22, $f18
/* D500 80032100 00000000 */ nop
/* D504 80032104 461A9202 */ mul.s $f8, $f18, $f26
/* D508 80032108 00000000 */ nop
/* D50C 8003210C 46186282 */ mul.s $f10, $f12, $f24
/* D510 80032110 00000000 */ nop
/* D514 80032114 46106082 */ mul.s $f2, $f12, $f16
/* D518 80032118 00000000 */ nop
/* D51C 8003211C 460E9102 */ mul.s $f4, $f18, $f14
/* D520 80032120 00000000 */ nop
/* D524 80032124 46060001 */ sub.s $f0, $f0, $f6
/* D528 80032128 46041081 */ sub.s $f2, $f2, $f4
/* D52C 8003212C 46080000 */ add.s $f0, $f0, $f8
/* D530 80032130 460A0181 */ sub.s $f6, $f0, $f10
/* D534 80032134 46023183 */ div.s $f6, $f6, $f2
/* D538 80032138 46068002 */ mul.s $f0, $f16, $f6
/* D53C 8003213C 00000000 */ nop
/* D540 80032140 4600C000 */ add.s $f0, $f24, $f0
/* D544 80032144 46140001 */ sub.s $f0, $f0, $f20
/* D548 80032148 46120183 */ div.s $f6, $f0, $f18
/* D54C 8003214C 46069002 */ mul.s $f0, $f18, $f6
/* D550 80032150 00000000 */ nop
/* D554 80032154 46066082 */ mul.s $f2, $f12, $f6
/* D558 80032158 00000000 */ nop
/* D55C 8003215C 4600A200 */ add.s $f8, $f20, $f0
/* D560 80032160 0800C876 */ j .LJP_800321D8
/* D564 80032164 4602B180 */ add.s $f6, $f22, $f2
.LJP_80032168:
/* D568 80032168 4610D002 */ mul.s $f0, $f26, $f16
/* D56C 8003216C 00000000 */ nop
/* D570 80032170 460EA182 */ mul.s $f6, $f20, $f14
/* D574 80032174 00000000 */ nop
/* D578 80032178 460ED202 */ mul.s $f8, $f26, $f14
/* D57C 8003217C 00000000 */ nop
/* D580 80032180 4610B282 */ mul.s $f10, $f22, $f16
/* D584 80032184 00000000 */ nop
/* D588 80032188 46106082 */ mul.s $f2, $f12, $f16
/* D58C 8003218C 00000000 */ nop
/* D590 80032190 460E9102 */ mul.s $f4, $f18, $f14
/* D594 80032194 00000000 */ nop
/* D598 80032198 46060000 */ add.s $f0, $f0, $f6
/* D59C 8003219C 46041081 */ sub.s $f2, $f2, $f4
/* D5A0 800321A0 46080001 */ sub.s $f0, $f0, $f8
/* D5A4 800321A4 460A0181 */ sub.s $f6, $f0, $f10
/* D5A8 800321A8 46023183 */ div.s $f6, $f6, $f2
/* D5AC 800321AC 46069002 */ mul.s $f0, $f18, $f6
/* D5B0 800321B0 00000000 */ nop
/* D5B4 800321B4 4600A000 */ add.s $f0, $f20, $f0
/* D5B8 800321B8 46180001 */ sub.s $f0, $f0, $f24
/* D5BC 800321BC 46100183 */ div.s $f6, $f0, $f16
/* D5C0 800321C0 46068002 */ mul.s $f0, $f16, $f6
/* D5C4 800321C4 00000000 */ nop
/* D5C8 800321C8 46067082 */ mul.s $f2, $f14, $f6
/* D5CC 800321CC 00000000 */ nop
/* D5D0 800321D0 4600C200 */ add.s $f8, $f24, $f0
/* D5D4 800321D4 4602D180 */ add.s $f6, $f26, $f2
.LJP_800321D8:
/* D5D8 800321D8 46144101 */ sub.s $f4, $f8, $f20
/* D5DC 800321DC C7BC0048 */ lwc1 $f28, 0x48($sp)
/* D5E0 800321E0 461C4001 */ sub.s $f0, $f8, $f28
/* D5E4 800321E4 46002102 */ mul.s $f4, $f4, $f0
/* D5E8 800321E8 00000000 */ nop
/* D5EC 800321EC C7BC004C */ lwc1 $f28, 0x4C($sp)
/* D5F0 800321F0 461C3081 */ sub.s $f2, $f6, $f28
/* D5F4 800321F4 46163001 */ sub.s $f0, $f6, $f22
/* D5F8 800321F8 46020002 */ mul.s $f0, $f0, $f2
/* D5FC 800321FC 00000000 */ nop
/* D600 80032200 46002100 */ add.s $f4, $f4, $f0
/* D604 80032204 44800000 */ mtc1 $zero, $f0
/* D608 80032208 00000000 */ nop
/* D60C 8003220C 4604003C */ c.lt.s $f0, $f4
/* D610 80032210 00000000 */ nop
/* D614 80032214 4501000F */ bc1t .LJP_80032254
/* D618 80032218 0000102D */ daddu $v0, $zero, $zero
/* D61C 8003221C 46184081 */ sub.s $f2, $f8, $f24
/* D620 80032220 46021082 */ mul.s $f2, $f2, $f2
/* D624 80032224 00000000 */ nop
/* D628 80032228 461A3001 */ sub.s $f0, $f6, $f26
/* D62C 8003222C 8FA30060 */ lw $v1, 0x60($sp)
/* D630 80032230 46000002 */ mul.s $f0, $f0, $f0
/* D634 80032234 00000000 */ nop
/* D638 80032238 E4680000 */ swc1 $f8, 0x0($v1)
/* D63C 8003223C 8FA30064 */ lw $v1, 0x64($sp)
/* D640 80032240 E4660000 */ swc1 $f6, 0x0($v1)
/* D644 80032244 46001080 */ add.s $f2, $f2, $f0
/* D648 80032248 8FA30068 */ lw $v1, 0x68($sp)
/* D64C 8003224C 24020001 */ addiu $v0, $zero, 0x1
/* D650 80032250 E4620000 */ swc1 $f2, 0x0($v1)
.LJP_80032254:
/* D654 80032254 D7BE0038 */ ldc1 $f30, 0x38($sp)
/* D658 80032258 D7BC0030 */ ldc1 $f28, 0x30($sp)
/* D65C 8003225C D7BA0028 */ ldc1 $f26, 0x28($sp)
/* D660 80032260 D7B80020 */ ldc1 $f24, 0x20($sp)
/* D664 80032264 D7B60018 */ ldc1 $f22, 0x18($sp)
/* D668 80032268 D7B40010 */ ldc1 $f20, 0x10($sp)
/* D66C 8003226C 03E00008 */ jr $ra
/* D670 80032270 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,188 +0,0 @@
.set noat /* allow manual use of $at */
.set noreorder /* don't insert nops after branches */
glabel func_800325E4
/* D674 80032274 27BDFFC0 */ addiu $sp, $sp, -0x40
/* D678 80032278 F7BC0030 */ sdc1 $f28, 0x30($sp)
/* D67C 8003227C 4486E000 */ mtc1 $a2, $f28
/* D680 80032280 F7B60018 */ sdc1 $f22, 0x18($sp)
/* D684 80032284 C7B60050 */ lwc1 $f22, 0x50($sp)
/* D688 80032288 F7B40010 */ sdc1 $f20, 0x10($sp)
/* D68C 8003228C 46006506 */ mov.s $f20, $f12
/* D690 80032290 F7BA0028 */ sdc1 $f26, 0x28($sp)
/* D694 80032294 46007686 */ mov.s $f26, $f14
/* D698 80032298 F7B80020 */ sdc1 $f24, 0x20($sp)
/* D69C 8003229C 4614E481 */ sub.s $f18, $f28, $f20
/* D6A0 800322A0 C7B80054 */ lwc1 $f24, 0x54($sp)
/* D6A4 800322A4 C7A0005C */ lwc1 $f0, 0x5C($sp)
/* D6A8 800322A8 461AC181 */ sub.s $f6, $f24, $f26
/* D6AC 800322AC F7BE0038 */ sdc1 $f30, 0x38($sp)
/* D6B0 800322B0 461A0781 */ sub.s $f30, $f0, $f26
/* D6B4 800322B4 C7A20058 */ lwc1 $f2, 0x58($sp)
/* D6B8 800322B8 46161401 */ sub.s $f16, $f2, $f22
/* D6BC 800322BC 4487E000 */ mtc1 $a3, $f28
/* D6C0 800322C0 00000000 */ nop
/* D6C4 800322C4 461AE301 */ sub.s $f12, $f28, $f26
/* D6C8 800322C8 4614B701 */ sub.s $f28, $f22, $f20
/* D6CC 800322CC 46180381 */ sub.s $f14, $f0, $f24
/* D6D0 800322D0 E7BC0008 */ swc1 $f28, 0x8($sp)
/* D6D4 800322D4 46141701 */ sub.s $f28, $f2, $f20
/* D6D8 800322D8 44802000 */ mtc1 $zero, $f4
/* D6DC 800322DC 46009286 */ mov.s $f10, $f18
/* D6E0 800322E0 46049032 */ c.eq.s $f18, $f4
/* D6E4 800322E4 46006207 */ neg.s $f8, $f12
/* D6E8 800322E8 45000005 */ bc1f .LJP_80032300
/* D6EC 800322EC E7BC0000 */ swc1 $f28, 0x0($sp)
/* D6F0 800322F0 46046032 */ c.eq.s $f12, $f4
/* D6F4 800322F4 00000000 */ nop
/* D6F8 800322F8 45010086 */ bc1t .LJP_80032514
/* D6FC 800322FC 0000102D */ daddu $v0, $zero, $zero
.LJP_80032300:
/* D700 80032300 44800000 */ mtc1 $zero, $f0
/* D704 80032304 00000000 */ nop
/* D708 80032308 46008032 */ c.eq.s $f16, $f0
/* D70C 8003230C 00000000 */ nop
/* D710 80032310 45000005 */ bc1f .LJP_80032328
/* D714 80032314 00000000 */ nop
/* D718 80032318 46007032 */ c.eq.s $f14, $f0
/* D71C 8003231C 00000000 */ nop
/* D720 80032320 4501007C */ bc1t .LJP_80032514
/* D724 80032324 0000102D */ daddu $v0, $zero, $zero
.LJP_80032328:
/* D728 80032328 46065002 */ mul.s $f0, $f10, $f6
/* D72C 8003232C 00000000 */ nop
/* D730 80032330 C7BC0008 */ lwc1 $f28, 0x8($sp)
/* D734 80032334 461C4082 */ mul.s $f2, $f8, $f28
/* D738 80032338 00000000 */ nop
/* D73C 8003233C 46001180 */ add.s $f6, $f2, $f0
/* D740 80032340 44800000 */ mtc1 $zero, $f0
/* D744 80032344 00000000 */ nop
/* D748 80032348 4600303C */ c.lt.s $f6, $f0
/* D74C 8003234C 3C01BF80 */ lui $at, (0xBF800000 >> 16)
/* D750 80032350 44812000 */ mtc1 $at, $f4
/* D754 80032354 45010007 */ bc1t .LJP_80032374
/* D758 80032358 00000000 */ nop
/* D75C 8003235C 4606003C */ c.lt.s $f0, $f6
/* D760 80032360 00000000 */ nop
/* D764 80032364 45000003 */ bc1f .LJP_80032374
/* D768 80032368 46000106 */ mov.s $f4, $f0
/* D76C 8003236C 3C013F80 */ lui $at, (0x3F800000 >> 16)
/* D770 80032370 44812000 */ mtc1 $at, $f4
.LJP_80032374:
/* D774 80032374 461E5002 */ mul.s $f0, $f10, $f30
/* D778 80032378 00000000 */ nop
/* D77C 8003237C C7BC0000 */ lwc1 $f28, 0x0($sp)
/* D780 80032380 461C4082 */ mul.s $f2, $f8, $f28
/* D784 80032384 00000000 */ nop
/* D788 80032388 46001080 */ add.s $f2, $f2, $f0
/* D78C 8003238C 44800000 */ mtc1 $zero, $f0
/* D790 80032390 00000000 */ nop
/* D794 80032394 4600103C */ c.lt.s $f2, $f0
/* D798 80032398 00000000 */ nop
/* D79C 8003239C 45000005 */ bc1f .LJP_800323B4
/* D7A0 800323A0 46002186 */ mov.s $f6, $f4
/* D7A4 800323A4 3C01BF80 */ lui $at, (0xBF800000 >> 16)
/* D7A8 800323A8 44810000 */ mtc1 $at, $f0
/* D7AC 800323AC 0800C8F4 */ j .LJP_800323D0
/* D7B0 800323B0 00000000 */ nop
.LJP_800323B4:
/* D7B4 800323B4 4602003C */ c.lt.s $f0, $f2
/* D7B8 800323B8 00000000 */ nop
/* D7BC 800323BC 45000004 */ bc1f .LJP_800323D0
/* D7C0 800323C0 00000000 */ nop
/* D7C4 800323C4 3C013F80 */ lui $at, (0x3F800000 >> 16)
/* D7C8 800323C8 44810000 */ mtc1 $at, $f0
/* D7CC 800323CC 00000000 */ nop
.LJP_800323D0:
/* D7D0 800323D0 46003032 */ c.eq.s $f6, $f0
/* D7D4 800323D4 00000000 */ nop
/* D7D8 800323D8 4501004E */ bc1t .LJP_80032514
/* D7DC 800323DC 0000102D */ daddu $v0, $zero, $zero
/* D7E0 800323E0 46009085 */ abs.s $f2, $f18
/* D7E4 800323E4 46008005 */ abs.s $f0, $f16
/* D7E8 800323E8 4602003C */ c.lt.s $f0, $f2
/* D7EC 800323EC 00000000 */ nop
/* D7F0 800323F0 4500001E */ bc1f .LJP_8003246C
/* D7F4 800323F4 00000000 */ nop
/* D7F8 800323F8 460CA002 */ mul.s $f0, $f20, $f12
/* D7FC 800323FC 00000000 */ nop
/* D800 80032400 4612D182 */ mul.s $f6, $f26, $f18
/* D804 80032404 00000000 */ nop
/* D808 80032408 46189202 */ mul.s $f8, $f18, $f24
/* D80C 8003240C 00000000 */ nop
/* D810 80032410 46166282 */ mul.s $f10, $f12, $f22
/* D814 80032414 00000000 */ nop
/* D818 80032418 46106082 */ mul.s $f2, $f12, $f16
/* D81C 8003241C 00000000 */ nop
/* D820 80032420 460E9102 */ mul.s $f4, $f18, $f14
/* D824 80032424 00000000 */ nop
/* D828 80032428 46060001 */ sub.s $f0, $f0, $f6
/* D82C 8003242C 46041081 */ sub.s $f2, $f2, $f4
/* D830 80032430 46080000 */ add.s $f0, $f0, $f8
/* D834 80032434 460A0181 */ sub.s $f6, $f0, $f10
/* D838 80032438 46023183 */ div.s $f6, $f6, $f2
/* D83C 8003243C 46068002 */ mul.s $f0, $f16, $f6
/* D840 80032440 00000000 */ nop
/* D844 80032444 4600B000 */ add.s $f0, $f22, $f0
/* D848 80032448 46140001 */ sub.s $f0, $f0, $f20
/* D84C 8003244C 46120183 */ div.s $f6, $f0, $f18
/* D850 80032450 46069002 */ mul.s $f0, $f18, $f6
/* D854 80032454 00000000 */ nop
/* D858 80032458 46066082 */ mul.s $f2, $f12, $f6
/* D85C 8003245C 00000000 */ nop
/* D860 80032460 4600A300 */ add.s $f12, $f20, $f0
/* D864 80032464 0800C937 */ j .LJP_800324DC
/* D868 80032468 4602D180 */ add.s $f6, $f26, $f2
.LJP_8003246C:
/* D86C 8003246C 4610C002 */ mul.s $f0, $f24, $f16
/* D870 80032470 00000000 */ nop
/* D874 80032474 460EA182 */ mul.s $f6, $f20, $f14
/* D878 80032478 00000000 */ nop
/* D87C 8003247C 460EC202 */ mul.s $f8, $f24, $f14
/* D880 80032480 00000000 */ nop
/* D884 80032484 4610D282 */ mul.s $f10, $f26, $f16
/* D888 80032488 00000000 */ nop
/* D88C 8003248C 46106082 */ mul.s $f2, $f12, $f16
/* D890 80032490 00000000 */ nop
/* D894 80032494 460E9102 */ mul.s $f4, $f18, $f14
/* D898 80032498 00000000 */ nop
/* D89C 8003249C 46060000 */ add.s $f0, $f0, $f6
/* D8A0 800324A0 46041081 */ sub.s $f2, $f2, $f4
/* D8A4 800324A4 46080001 */ sub.s $f0, $f0, $f8
/* D8A8 800324A8 460A0181 */ sub.s $f6, $f0, $f10
/* D8AC 800324AC 46023183 */ div.s $f6, $f6, $f2
/* D8B0 800324B0 46069002 */ mul.s $f0, $f18, $f6
/* D8B4 800324B4 00000000 */ nop
/* D8B8 800324B8 4600A000 */ add.s $f0, $f20, $f0
/* D8BC 800324BC 46160001 */ sub.s $f0, $f0, $f22
/* D8C0 800324C0 46100183 */ div.s $f6, $f0, $f16
/* D8C4 800324C4 46068002 */ mul.s $f0, $f16, $f6
/* D8C8 800324C8 00000000 */ nop
/* D8CC 800324CC 46067082 */ mul.s $f2, $f14, $f6
/* D8D0 800324D0 00000000 */ nop
/* D8D4 800324D4 4600B300 */ add.s $f12, $f22, $f0
/* D8D8 800324D8 4602C180 */ add.s $f6, $f24, $f2
.LJP_800324DC:
/* D8DC 800324DC 46166081 */ sub.s $f2, $f12, $f22
/* D8E0 800324E0 46021082 */ mul.s $f2, $f2, $f2
/* D8E4 800324E4 00000000 */ nop
/* D8E8 800324E8 46183001 */ sub.s $f0, $f6, $f24
/* D8EC 800324EC 8FA30060 */ lw $v1, 0x60($sp)
/* D8F0 800324F0 46000002 */ mul.s $f0, $f0, $f0
/* D8F4 800324F4 00000000 */ nop
/* D8F8 800324F8 E46C0000 */ swc1 $f12, 0x0($v1)
/* D8FC 800324FC 8FA30064 */ lw $v1, 0x64($sp)
/* D900 80032500 E4660000 */ swc1 $f6, 0x0($v1)
/* D904 80032504 46001080 */ add.s $f2, $f2, $f0
/* D908 80032508 8FA30068 */ lw $v1, 0x68($sp)
/* D90C 8003250C 24020001 */ addiu $v0, $zero, 0x1
/* D910 80032510 E4620000 */ swc1 $f2, 0x0($v1)
.LJP_80032514:
/* D914 80032514 D7BE0038 */ ldc1 $f30, 0x38($sp)
/* D918 80032518 D7BC0030 */ ldc1 $f28, 0x30($sp)
/* D91C 8003251C D7BA0028 */ ldc1 $f26, 0x28($sp)
/* D920 80032520 D7B80020 */ ldc1 $f24, 0x20($sp)
/* D924 80032524 D7B60018 */ ldc1 $f22, 0x18($sp)
/* D928 80032528 D7B40010 */ ldc1 $f20, 0x10($sp)
/* D92C 8003252C 03E00008 */ jr $ra
/* D930 80032530 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -44,8 +44,8 @@ update_camera_mode_unused = 0x8002F970;
update_camera_mode_5 = 0x8002FC90;
update_camera_from_controller = 0x8003018C; // type:func rom:0xB58C
update_camera_zone_interp = 0x80031124;
func_800322DC = 0x80031F6C; // type:func
func_800325E4 = 0x80032274; // type:func
calculate_segment_intersection = 0x80031F6C; // type:func
calculate_line_segment_intersection = 0x80032274; // type:func
create_camera_leadplayer_matrix = 0x80033024;
set_game_mode = 0x80033180;
get_game_mode = 0x800331B8;

View File

@ -1,206 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800322DC
/* D6DC 800322DC 27BDFFC0 */ addiu $sp, $sp, -0x40
/* D6E0 800322E0 F7BC0030 */ sdc1 $f28, 0x30($sp)
/* D6E4 800322E4 AFA60048 */ sw $a2, 0x48($sp)
/* D6E8 800322E8 C7BC0048 */ lwc1 $f28, 0x48($sp)
/* D6EC 800322EC F7B80020 */ sdc1 $f24, 0x20($sp)
/* D6F0 800322F0 C7B80050 */ lwc1 $f24, 0x50($sp)
/* D6F4 800322F4 F7B40010 */ sdc1 $f20, 0x10($sp)
/* D6F8 800322F8 46006506 */ mov.s $f20, $f12
/* D6FC 800322FC F7B60018 */ sdc1 $f22, 0x18($sp)
/* D700 80032300 46007586 */ mov.s $f22, $f14
/* D704 80032304 F7BA0028 */ sdc1 $f26, 0x28($sp)
/* D708 80032308 C7BA0054 */ lwc1 $f26, 0x54($sp)
/* D70C 8003230C 4614E481 */ sub.s $f18, $f28, $f20
/* D710 80032310 C7A20058 */ lwc1 $f2, 0x58($sp)
/* D714 80032314 C7A0005C */ lwc1 $f0, 0x5c($sp)
/* D718 80032318 4616D181 */ sub.s $f6, $f26, $f22
/* D71C 8003231C F7BE0038 */ sdc1 $f30, 0x38($sp)
/* D720 80032320 46160781 */ sub.s $f30, $f0, $f22
/* D724 80032324 AFA7004C */ sw $a3, 0x4c($sp)
/* D728 80032328 46181401 */ sub.s $f16, $f2, $f24
/* D72C 8003232C C7BC004C */ lwc1 $f28, 0x4c($sp)
/* D730 80032330 4616E301 */ sub.s $f12, $f28, $f22
/* D734 80032334 4614C701 */ sub.s $f28, $f24, $f20
/* D738 80032338 461A0381 */ sub.s $f14, $f0, $f26
/* D73C 8003233C E7BC0008 */ swc1 $f28, 8($sp)
/* D740 80032340 46141701 */ sub.s $f28, $f2, $f20
/* D744 80032344 44802000 */ mtc1 $zero, $f4
/* D748 80032348 46009286 */ mov.s $f10, $f18
/* D74C 8003234C 46049032 */ c.eq.s $f18, $f4
/* D750 80032350 46006207 */ neg.s $f8, $f12
/* D754 80032354 45000005 */ bc1f .L8003236C
/* D758 80032358 E7BC0000 */ swc1 $f28, ($sp)
/* D75C 8003235C 46046032 */ c.eq.s $f12, $f4
/* D760 80032360 00000000 */ nop
/* D764 80032364 45010097 */ bc1t .L800325C4
/* D768 80032368 0000102D */ daddu $v0, $zero, $zero
.L8003236C:
/* D76C 8003236C 44800000 */ mtc1 $zero, $f0
/* D770 80032370 00000000 */ nop
/* D774 80032374 46008032 */ c.eq.s $f16, $f0
/* D778 80032378 00000000 */ nop
/* D77C 8003237C 45000005 */ bc1f .L80032394
/* D780 80032380 00000000 */ nop
/* D784 80032384 46007032 */ c.eq.s $f14, $f0
/* D788 80032388 00000000 */ nop
/* D78C 8003238C 4501008D */ bc1t .L800325C4
/* D790 80032390 0000102D */ daddu $v0, $zero, $zero
.L80032394:
/* D794 80032394 46065002 */ mul.s $f0, $f10, $f6
/* D798 80032398 00000000 */ nop
/* D79C 8003239C C7BC0008 */ lwc1 $f28, 8($sp)
/* D7A0 800323A0 461C4082 */ mul.s $f2, $f8, $f28
/* D7A4 800323A4 00000000 */ nop
/* D7A8 800323A8 46001180 */ add.s $f6, $f2, $f0
/* D7AC 800323AC 44800000 */ mtc1 $zero, $f0
/* D7B0 800323B0 00000000 */ nop
/* D7B4 800323B4 4600303C */ c.lt.s $f6, $f0
/* D7B8 800323B8 3C01BF80 */ lui $at, 0xbf80
/* D7BC 800323BC 44812000 */ mtc1 $at, $f4
/* D7C0 800323C0 45010007 */ bc1t .L800323E0
/* D7C4 800323C4 00000000 */ nop
/* D7C8 800323C8 4606003C */ c.lt.s $f0, $f6
/* D7CC 800323CC 00000000 */ nop
/* D7D0 800323D0 45000003 */ bc1f .L800323E0
/* D7D4 800323D4 46000106 */ mov.s $f4, $f0
/* D7D8 800323D8 3C013F80 */ lui $at, 0x3f80
/* D7DC 800323DC 44812000 */ mtc1 $at, $f4
.L800323E0:
/* D7E0 800323E0 461E5002 */ mul.s $f0, $f10, $f30
/* D7E4 800323E4 00000000 */ nop
/* D7E8 800323E8 C7BC0000 */ lwc1 $f28, ($sp)
/* D7EC 800323EC 461C4082 */ mul.s $f2, $f8, $f28
/* D7F0 800323F0 00000000 */ nop
/* D7F4 800323F4 46001080 */ add.s $f2, $f2, $f0
/* D7F8 800323F8 44800000 */ mtc1 $zero, $f0
/* D7FC 800323FC 00000000 */ nop
/* D800 80032400 4600103C */ c.lt.s $f2, $f0
/* D804 80032404 00000000 */ nop
/* D808 80032408 45000005 */ bc1f .L80032420
/* D80C 8003240C 46002186 */ mov.s $f6, $f4
/* D810 80032410 3C01BF80 */ lui $at, 0xbf80
/* D814 80032414 44810000 */ mtc1 $at, $f0
/* D818 80032418 0800C90F */ j .L8003243C
/* D81C 8003241C 00000000 */ nop
.L80032420:
/* D820 80032420 4602003C */ c.lt.s $f0, $f2
/* D824 80032424 00000000 */ nop
/* D828 80032428 45000004 */ bc1f .L8003243C
/* D82C 8003242C 00000000 */ nop
/* D830 80032430 3C013F80 */ lui $at, 0x3f80
/* D834 80032434 44810000 */ mtc1 $at, $f0
/* D838 80032438 00000000 */ nop
.L8003243C:
/* D83C 8003243C 46003032 */ c.eq.s $f6, $f0
/* D840 80032440 00000000 */ nop
/* D844 80032444 4501005F */ bc1t .L800325C4
/* D848 80032448 0000102D */ daddu $v0, $zero, $zero
/* D84C 8003244C 46009085 */ abs.s $f2, $f18
/* D850 80032450 46008005 */ abs.s $f0, $f16
/* D854 80032454 4602003C */ c.lt.s $f0, $f2
/* D858 80032458 00000000 */ nop
/* D85C 8003245C 4500001E */ bc1f .L800324D8
/* D860 80032460 00000000 */ nop
/* D864 80032464 460CA002 */ mul.s $f0, $f20, $f12
/* D868 80032468 00000000 */ nop
/* D86C 8003246C 4612B182 */ mul.s $f6, $f22, $f18
/* D870 80032470 00000000 */ nop
/* D874 80032474 461A9202 */ mul.s $f8, $f18, $f26
/* D878 80032478 00000000 */ nop
/* D87C 8003247C 46186282 */ mul.s $f10, $f12, $f24
/* D880 80032480 00000000 */ nop
/* D884 80032484 46106082 */ mul.s $f2, $f12, $f16
/* D888 80032488 00000000 */ nop
/* D88C 8003248C 460E9102 */ mul.s $f4, $f18, $f14
/* D890 80032490 00000000 */ nop
/* D894 80032494 46060001 */ sub.s $f0, $f0, $f6
/* D898 80032498 46041081 */ sub.s $f2, $f2, $f4
/* D89C 8003249C 46080000 */ add.s $f0, $f0, $f8
/* D8A0 800324A0 460A0181 */ sub.s $f6, $f0, $f10
/* D8A4 800324A4 46023183 */ div.s $f6, $f6, $f2
/* D8A8 800324A8 46068002 */ mul.s $f0, $f16, $f6
/* D8AC 800324AC 00000000 */ nop
/* D8B0 800324B0 4600C000 */ add.s $f0, $f24, $f0
/* D8B4 800324B4 46140001 */ sub.s $f0, $f0, $f20
/* D8B8 800324B8 46120183 */ div.s $f6, $f0, $f18
/* D8BC 800324BC 46069002 */ mul.s $f0, $f18, $f6
/* D8C0 800324C0 00000000 */ nop
/* D8C4 800324C4 46066082 */ mul.s $f2, $f12, $f6
/* D8C8 800324C8 00000000 */ nop
/* D8CC 800324CC 4600A200 */ add.s $f8, $f20, $f0
/* D8D0 800324D0 0800C952 */ j .L80032548
/* D8D4 800324D4 4602B180 */ add.s $f6, $f22, $f2
.L800324D8:
/* D8D8 800324D8 4610D002 */ mul.s $f0, $f26, $f16
/* D8DC 800324DC 00000000 */ nop
/* D8E0 800324E0 460EA182 */ mul.s $f6, $f20, $f14
/* D8E4 800324E4 00000000 */ nop
/* D8E8 800324E8 460ED202 */ mul.s $f8, $f26, $f14
/* D8EC 800324EC 00000000 */ nop
/* D8F0 800324F0 4610B282 */ mul.s $f10, $f22, $f16
/* D8F4 800324F4 00000000 */ nop
/* D8F8 800324F8 46106082 */ mul.s $f2, $f12, $f16
/* D8FC 800324FC 00000000 */ nop
/* D900 80032500 460E9102 */ mul.s $f4, $f18, $f14
/* D904 80032504 00000000 */ nop
/* D908 80032508 46060000 */ add.s $f0, $f0, $f6
/* D90C 8003250C 46041081 */ sub.s $f2, $f2, $f4
/* D910 80032510 46080001 */ sub.s $f0, $f0, $f8
/* D914 80032514 460A0181 */ sub.s $f6, $f0, $f10
/* D918 80032518 46023183 */ div.s $f6, $f6, $f2
/* D91C 8003251C 46069002 */ mul.s $f0, $f18, $f6
/* D920 80032520 00000000 */ nop
/* D924 80032524 4600A000 */ add.s $f0, $f20, $f0
/* D928 80032528 46180001 */ sub.s $f0, $f0, $f24
/* D92C 8003252C 46100183 */ div.s $f6, $f0, $f16
/* D930 80032530 46068002 */ mul.s $f0, $f16, $f6
/* D934 80032534 00000000 */ nop
/* D938 80032538 46067082 */ mul.s $f2, $f14, $f6
/* D93C 8003253C 00000000 */ nop
/* D940 80032540 4600C200 */ add.s $f8, $f24, $f0
/* D944 80032544 4602D180 */ add.s $f6, $f26, $f2
.L80032548:
/* D948 80032548 46144101 */ sub.s $f4, $f8, $f20
/* D94C 8003254C C7BC0048 */ lwc1 $f28, 0x48($sp)
/* D950 80032550 461C4001 */ sub.s $f0, $f8, $f28
/* D954 80032554 46002102 */ mul.s $f4, $f4, $f0
/* D958 80032558 00000000 */ nop
/* D95C 8003255C C7BC004C */ lwc1 $f28, 0x4c($sp)
/* D960 80032560 461C3081 */ sub.s $f2, $f6, $f28
/* D964 80032564 46163001 */ sub.s $f0, $f6, $f22
/* D968 80032568 46020002 */ mul.s $f0, $f0, $f2
/* D96C 8003256C 00000000 */ nop
/* D970 80032570 46002100 */ add.s $f4, $f4, $f0
/* D974 80032574 44800000 */ mtc1 $zero, $f0
/* D978 80032578 00000000 */ nop
/* D97C 8003257C 4604003C */ c.lt.s $f0, $f4
/* D980 80032580 00000000 */ nop
/* D984 80032584 4501000F */ bc1t .L800325C4
/* D988 80032588 0000102D */ daddu $v0, $zero, $zero
/* D98C 8003258C 46184081 */ sub.s $f2, $f8, $f24
/* D990 80032590 46021082 */ mul.s $f2, $f2, $f2
/* D994 80032594 00000000 */ nop
/* D998 80032598 461A3001 */ sub.s $f0, $f6, $f26
/* D99C 8003259C 8FA30060 */ lw $v1, 0x60($sp)
/* D9A0 800325A0 46000002 */ mul.s $f0, $f0, $f0
/* D9A4 800325A4 00000000 */ nop
/* D9A8 800325A8 E4680000 */ swc1 $f8, ($v1)
/* D9AC 800325AC 8FA30064 */ lw $v1, 0x64($sp)
/* D9B0 800325B0 E4660000 */ swc1 $f6, ($v1)
/* D9B4 800325B4 46001080 */ add.s $f2, $f2, $f0
/* D9B8 800325B8 8FA30068 */ lw $v1, 0x68($sp)
/* D9BC 800325BC 24020001 */ addiu $v0, $zero, 1
/* D9C0 800325C0 E4620000 */ swc1 $f2, ($v1)
.L800325C4:
/* D9C4 800325C4 D7BE0038 */ ldc1 $f30, 0x38($sp)
/* D9C8 800325C8 D7BC0030 */ ldc1 $f28, 0x30($sp)
/* D9CC 800325CC D7BA0028 */ ldc1 $f26, 0x28($sp)
/* D9D0 800325D0 D7B80020 */ ldc1 $f24, 0x20($sp)
/* D9D4 800325D4 D7B60018 */ ldc1 $f22, 0x18($sp)
/* D9D8 800325D8 D7B40010 */ ldc1 $f20, 0x10($sp)
/* D9DC 800325DC 03E00008 */ jr $ra
/* D9E0 800325E0 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -1,188 +0,0 @@
.set noat # allow manual use of $at
.set noreorder # don't insert nops after branches
glabel func_800325E4
/* D9E4 800325E4 27BDFFC0 */ addiu $sp, $sp, -0x40
/* D9E8 800325E8 F7BC0030 */ sdc1 $f28, 0x30($sp)
/* D9EC 800325EC 4486E000 */ mtc1 $a2, $f28
/* D9F0 800325F0 F7B60018 */ sdc1 $f22, 0x18($sp)
/* D9F4 800325F4 C7B60050 */ lwc1 $f22, 0x50($sp)
/* D9F8 800325F8 F7B40010 */ sdc1 $f20, 0x10($sp)
/* D9FC 800325FC 46006506 */ mov.s $f20, $f12
/* DA00 80032600 F7BA0028 */ sdc1 $f26, 0x28($sp)
/* DA04 80032604 46007686 */ mov.s $f26, $f14
/* DA08 80032608 F7B80020 */ sdc1 $f24, 0x20($sp)
/* DA0C 8003260C 4614E481 */ sub.s $f18, $f28, $f20
/* DA10 80032610 C7B80054 */ lwc1 $f24, 0x54($sp)
/* DA14 80032614 C7A0005C */ lwc1 $f0, 0x5c($sp)
/* DA18 80032618 461AC181 */ sub.s $f6, $f24, $f26
/* DA1C 8003261C F7BE0038 */ sdc1 $f30, 0x38($sp)
/* DA20 80032620 461A0781 */ sub.s $f30, $f0, $f26
/* DA24 80032624 C7A20058 */ lwc1 $f2, 0x58($sp)
/* DA28 80032628 46161401 */ sub.s $f16, $f2, $f22
/* DA2C 8003262C 4487E000 */ mtc1 $a3, $f28
/* DA30 80032630 00000000 */ nop
/* DA34 80032634 461AE301 */ sub.s $f12, $f28, $f26
/* DA38 80032638 4614B701 */ sub.s $f28, $f22, $f20
/* DA3C 8003263C 46180381 */ sub.s $f14, $f0, $f24
/* DA40 80032640 E7BC0008 */ swc1 $f28, 8($sp)
/* DA44 80032644 46141701 */ sub.s $f28, $f2, $f20
/* DA48 80032648 44802000 */ mtc1 $zero, $f4
/* DA4C 8003264C 46009286 */ mov.s $f10, $f18
/* DA50 80032650 46049032 */ c.eq.s $f18, $f4
/* DA54 80032654 46006207 */ neg.s $f8, $f12
/* DA58 80032658 45000005 */ bc1f .L80032670
/* DA5C 8003265C E7BC0000 */ swc1 $f28, ($sp)
/* DA60 80032660 46046032 */ c.eq.s $f12, $f4
/* DA64 80032664 00000000 */ nop
/* DA68 80032668 45010086 */ bc1t .L80032884
/* DA6C 8003266C 0000102D */ daddu $v0, $zero, $zero
.L80032670:
/* DA70 80032670 44800000 */ mtc1 $zero, $f0
/* DA74 80032674 00000000 */ nop
/* DA78 80032678 46008032 */ c.eq.s $f16, $f0
/* DA7C 8003267C 00000000 */ nop
/* DA80 80032680 45000005 */ bc1f .L80032698
/* DA84 80032684 00000000 */ nop
/* DA88 80032688 46007032 */ c.eq.s $f14, $f0
/* DA8C 8003268C 00000000 */ nop
/* DA90 80032690 4501007C */ bc1t .L80032884
/* DA94 80032694 0000102D */ daddu $v0, $zero, $zero
.L80032698:
/* DA98 80032698 46065002 */ mul.s $f0, $f10, $f6
/* DA9C 8003269C 00000000 */ nop
/* DAA0 800326A0 C7BC0008 */ lwc1 $f28, 8($sp)
/* DAA4 800326A4 461C4082 */ mul.s $f2, $f8, $f28
/* DAA8 800326A8 00000000 */ nop
/* DAAC 800326AC 46001180 */ add.s $f6, $f2, $f0
/* DAB0 800326B0 44800000 */ mtc1 $zero, $f0
/* DAB4 800326B4 00000000 */ nop
/* DAB8 800326B8 4600303C */ c.lt.s $f6, $f0
/* DABC 800326BC 3C01BF80 */ lui $at, 0xbf80
/* DAC0 800326C0 44812000 */ mtc1 $at, $f4
/* DAC4 800326C4 45010007 */ bc1t .L800326E4
/* DAC8 800326C8 00000000 */ nop
/* DACC 800326CC 4606003C */ c.lt.s $f0, $f6
/* DAD0 800326D0 00000000 */ nop
/* DAD4 800326D4 45000003 */ bc1f .L800326E4
/* DAD8 800326D8 46000106 */ mov.s $f4, $f0
/* DADC 800326DC 3C013F80 */ lui $at, 0x3f80
/* DAE0 800326E0 44812000 */ mtc1 $at, $f4
.L800326E4:
/* DAE4 800326E4 461E5002 */ mul.s $f0, $f10, $f30
/* DAE8 800326E8 00000000 */ nop
/* DAEC 800326EC C7BC0000 */ lwc1 $f28, ($sp)
/* DAF0 800326F0 461C4082 */ mul.s $f2, $f8, $f28
/* DAF4 800326F4 00000000 */ nop
/* DAF8 800326F8 46001080 */ add.s $f2, $f2, $f0
/* DAFC 800326FC 44800000 */ mtc1 $zero, $f0
/* DB00 80032700 00000000 */ nop
/* DB04 80032704 4600103C */ c.lt.s $f2, $f0
/* DB08 80032708 00000000 */ nop
/* DB0C 8003270C 45000005 */ bc1f .L80032724
/* DB10 80032710 46002186 */ mov.s $f6, $f4
/* DB14 80032714 3C01BF80 */ lui $at, 0xbf80
/* DB18 80032718 44810000 */ mtc1 $at, $f0
/* DB1C 8003271C 0800C9D0 */ j .L80032740
/* DB20 80032720 00000000 */ nop
.L80032724:
/* DB24 80032724 4602003C */ c.lt.s $f0, $f2
/* DB28 80032728 00000000 */ nop
/* DB2C 8003272C 45000004 */ bc1f .L80032740
/* DB30 80032730 00000000 */ nop
/* DB34 80032734 3C013F80 */ lui $at, 0x3f80
/* DB38 80032738 44810000 */ mtc1 $at, $f0
/* DB3C 8003273C 00000000 */ nop
.L80032740:
/* DB40 80032740 46003032 */ c.eq.s $f6, $f0
/* DB44 80032744 00000000 */ nop
/* DB48 80032748 4501004E */ bc1t .L80032884
/* DB4C 8003274C 0000102D */ daddu $v0, $zero, $zero
/* DB50 80032750 46009085 */ abs.s $f2, $f18
/* DB54 80032754 46008005 */ abs.s $f0, $f16
/* DB58 80032758 4602003C */ c.lt.s $f0, $f2
/* DB5C 8003275C 00000000 */ nop
/* DB60 80032760 4500001E */ bc1f .L800327DC
/* DB64 80032764 00000000 */ nop
/* DB68 80032768 460CA002 */ mul.s $f0, $f20, $f12
/* DB6C 8003276C 00000000 */ nop
/* DB70 80032770 4612D182 */ mul.s $f6, $f26, $f18
/* DB74 80032774 00000000 */ nop
/* DB78 80032778 46189202 */ mul.s $f8, $f18, $f24
/* DB7C 8003277C 00000000 */ nop
/* DB80 80032780 46166282 */ mul.s $f10, $f12, $f22
/* DB84 80032784 00000000 */ nop
/* DB88 80032788 46106082 */ mul.s $f2, $f12, $f16
/* DB8C 8003278C 00000000 */ nop
/* DB90 80032790 460E9102 */ mul.s $f4, $f18, $f14
/* DB94 80032794 00000000 */ nop
/* DB98 80032798 46060001 */ sub.s $f0, $f0, $f6
/* DB9C 8003279C 46041081 */ sub.s $f2, $f2, $f4
/* DBA0 800327A0 46080000 */ add.s $f0, $f0, $f8
/* DBA4 800327A4 460A0181 */ sub.s $f6, $f0, $f10
/* DBA8 800327A8 46023183 */ div.s $f6, $f6, $f2
/* DBAC 800327AC 46068002 */ mul.s $f0, $f16, $f6
/* DBB0 800327B0 00000000 */ nop
/* DBB4 800327B4 4600B000 */ add.s $f0, $f22, $f0
/* DBB8 800327B8 46140001 */ sub.s $f0, $f0, $f20
/* DBBC 800327BC 46120183 */ div.s $f6, $f0, $f18
/* DBC0 800327C0 46069002 */ mul.s $f0, $f18, $f6
/* DBC4 800327C4 00000000 */ nop
/* DBC8 800327C8 46066082 */ mul.s $f2, $f12, $f6
/* DBCC 800327CC 00000000 */ nop
/* DBD0 800327D0 4600A300 */ add.s $f12, $f20, $f0
/* DBD4 800327D4 0800CA13 */ j .L8003284C
/* DBD8 800327D8 4602D180 */ add.s $f6, $f26, $f2
.L800327DC:
/* DBDC 800327DC 4610C002 */ mul.s $f0, $f24, $f16
/* DBE0 800327E0 00000000 */ nop
/* DBE4 800327E4 460EA182 */ mul.s $f6, $f20, $f14
/* DBE8 800327E8 00000000 */ nop
/* DBEC 800327EC 460EC202 */ mul.s $f8, $f24, $f14
/* DBF0 800327F0 00000000 */ nop
/* DBF4 800327F4 4610D282 */ mul.s $f10, $f26, $f16
/* DBF8 800327F8 00000000 */ nop
/* DBFC 800327FC 46106082 */ mul.s $f2, $f12, $f16
/* DC00 80032800 00000000 */ nop
/* DC04 80032804 460E9102 */ mul.s $f4, $f18, $f14
/* DC08 80032808 00000000 */ nop
/* DC0C 8003280C 46060000 */ add.s $f0, $f0, $f6
/* DC10 80032810 46041081 */ sub.s $f2, $f2, $f4
/* DC14 80032814 46080001 */ sub.s $f0, $f0, $f8
/* DC18 80032818 460A0181 */ sub.s $f6, $f0, $f10
/* DC1C 8003281C 46023183 */ div.s $f6, $f6, $f2
/* DC20 80032820 46069002 */ mul.s $f0, $f18, $f6
/* DC24 80032824 00000000 */ nop
/* DC28 80032828 4600A000 */ add.s $f0, $f20, $f0
/* DC2C 8003282C 46160001 */ sub.s $f0, $f0, $f22
/* DC30 80032830 46100183 */ div.s $f6, $f0, $f16
/* DC34 80032834 46068002 */ mul.s $f0, $f16, $f6
/* DC38 80032838 00000000 */ nop
/* DC3C 8003283C 46067082 */ mul.s $f2, $f14, $f6
/* DC40 80032840 00000000 */ nop
/* DC44 80032844 4600B300 */ add.s $f12, $f22, $f0
/* DC48 80032848 4602C180 */ add.s $f6, $f24, $f2
.L8003284C:
/* DC4C 8003284C 46166081 */ sub.s $f2, $f12, $f22
/* DC50 80032850 46021082 */ mul.s $f2, $f2, $f2
/* DC54 80032854 00000000 */ nop
/* DC58 80032858 46183001 */ sub.s $f0, $f6, $f24
/* DC5C 8003285C 8FA30060 */ lw $v1, 0x60($sp)
/* DC60 80032860 46000002 */ mul.s $f0, $f0, $f0
/* DC64 80032864 00000000 */ nop
/* DC68 80032868 E46C0000 */ swc1 $f12, ($v1)
/* DC6C 8003286C 8FA30064 */ lw $v1, 0x64($sp)
/* DC70 80032870 E4660000 */ swc1 $f6, ($v1)
/* DC74 80032874 46001080 */ add.s $f2, $f2, $f0
/* DC78 80032878 8FA30068 */ lw $v1, 0x68($sp)
/* DC7C 8003287C 24020001 */ addiu $v0, $zero, 1
/* DC80 80032880 E4620000 */ swc1 $f2, ($v1)
.L80032884:
/* DC84 80032884 D7BE0038 */ ldc1 $f30, 0x38($sp)
/* DC88 80032888 D7BC0030 */ ldc1 $f28, 0x30($sp)
/* DC8C 8003288C D7BA0028 */ ldc1 $f26, 0x28($sp)
/* DC90 80032890 D7B80020 */ ldc1 $f24, 0x20($sp)
/* DC94 80032894 D7B60018 */ ldc1 $f22, 0x18($sp)
/* DC98 80032898 D7B40010 */ ldc1 $f20, 0x10($sp)
/* DC9C 8003289C 03E00008 */ jr $ra
/* DCA0 800328A0 27BD0040 */ addiu $sp, $sp, 0x40

View File

@ -162,8 +162,8 @@ test_ray_zone_aabb = 0x80030458; // type:func rom:0xB858
update_camera_from_controller = 0x800304FC; // type:func rom:0xB8FC
update_camera_zone_interp = 0x80031494; // type:func rom:0xC894
test_ray_zone = 0x80032210; // type:func rom:0xD610
func_800322DC = 0x800322DC; // type:func rom:0xD6DC
func_800325E4 = 0x800325E4; // type:func rom:0xD9E4
calculate_segment_intersection = 0x800322DC; // type:func rom:0xD6DC
calculate_line_segment_intersection = 0x800325E4; // type:func rom:0xD9E4
func_800328A4 = 0x800328A4; // type:func rom:0xDCA4
func_80032970 = 0x80032970; // type:func rom:0xDD70
func_80032C64 = 0x80032C64; // type:func rom:0xE064