diff --git a/src/camera.c b/src/camera.c index b4cc4c5182..a6fcf911d5 100644 --- a/src/camera.c +++ b/src/camera.c @@ -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); diff --git a/ver/cn/asm/nonmatchings/camera/func_800322DC.s b/ver/cn/asm/nonmatchings/camera/func_800322DC.s index f0fad54440..cae82a2375 100644 --- a/ver/cn/asm/nonmatchings/camera/func_800322DC.s +++ b/ver/cn/asm/nonmatchings/camera/func_800322DC.s @@ -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) diff --git a/ver/cn/asm/nonmatchings/camera/func_800325E4.s b/ver/cn/asm/nonmatchings/camera/func_800325E4.s index 4b362fa7cd..f2dd706246 100644 --- a/ver/cn/asm/nonmatchings/camera/func_800325E4.s +++ b/ver/cn/asm/nonmatchings/camera/func_800325E4.s @@ -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 diff --git a/ver/cn/symbol_addrs.txt b/ver/cn/symbol_addrs.txt index e60050fadf..819547685f 100644 --- a/ver/cn/symbol_addrs.txt +++ b/ver/cn/symbol_addrs.txt @@ -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; diff --git a/ver/jp/asm/nonmatchings/camera/func_800322DC.s b/ver/jp/asm/nonmatchings/camera/func_800322DC.s deleted file mode 100644 index 4aea415d3b..0000000000 --- a/ver/jp/asm/nonmatchings/camera/func_800322DC.s +++ /dev/null @@ -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 diff --git a/ver/jp/asm/nonmatchings/camera/func_800325E4.s b/ver/jp/asm/nonmatchings/camera/func_800325E4.s deleted file mode 100644 index 00d4087c86..0000000000 --- a/ver/jp/asm/nonmatchings/camera/func_800325E4.s +++ /dev/null @@ -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 diff --git a/ver/jp/symbol_addrs.txt b/ver/jp/symbol_addrs.txt index efd077e818..1c7eedf0f8 100644 --- a/ver/jp/symbol_addrs.txt +++ b/ver/jp/symbol_addrs.txt @@ -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; diff --git a/ver/us/asm/nonmatchings/camera/func_800322DC.s b/ver/us/asm/nonmatchings/camera/func_800322DC.s deleted file mode 100644 index 1298964c86..0000000000 --- a/ver/us/asm/nonmatchings/camera/func_800322DC.s +++ /dev/null @@ -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 diff --git a/ver/us/asm/nonmatchings/camera/func_800325E4.s b/ver/us/asm/nonmatchings/camera/func_800325E4.s deleted file mode 100644 index e4c0121c72..0000000000 --- a/ver/us/asm/nonmatchings/camera/func_800325E4.s +++ /dev/null @@ -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 diff --git a/ver/us/symbol_addrs.txt b/ver/us/symbol_addrs.txt index 5b505c2dd7..4a8e32d956 100644 --- a/ver/us/symbol_addrs.txt +++ b/ver/us/symbol_addrs.txt @@ -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