progress update
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
# banjo (96.6439%)
|
||||
# banjo (96.6549%)
|
||||
|
||||
<img src="./progress/progress_total.svg">
|
||||
|
||||
|
@@ -9,7 +9,7 @@
|
||||
</mask>
|
||||
<g mask="url(#anybadge_1)">
|
||||
<path fill="#555" d="M0 0h44v20H0z"/>
|
||||
<path fill="#1ce000" d="M44 0h67v20H44z"/>
|
||||
<path fill="#1be000" d="M44 0h67v20H44z"/>
|
||||
<path fill="url(#b)" d="M0 0h111v20H0z"/>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
@@ -17,7 +17,7 @@
|
||||
<text x="22.0" y="14">core1</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">93.8214%</text>
|
||||
<text x="77.5" y="14">93.8214%</text>
|
||||
<text x="78.5" y="15" fill="#010101" fill-opacity=".3">93.8967%</text>
|
||||
<text x="77.5" y="14">93.8967%</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
@@ -17,7 +17,7 @@
|
||||
<text x="75.0" y="14">Banjo-Kazooie (us.v10)</text>
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="11">
|
||||
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">96.6439%</text>
|
||||
<text x="183.5" y="14">96.6439%</text>
|
||||
<text x="184.5" y="15" fill="#010101" fill-opacity=".3">96.6549%</text>
|
||||
<text x="183.5" y="14">96.6549%</text>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
@@ -103,15 +103,12 @@ void mlMtxPop(void){
|
||||
void func_802516E0(void) {
|
||||
s32 i, j;
|
||||
f32 *var_a3;
|
||||
f32 (*var_a2)[4];
|
||||
f32 *var_a2;
|
||||
|
||||
var_a3 = D_80282FD0;
|
||||
var_a2 = D_80282FD0 + 1;
|
||||
if(1);
|
||||
for(i = 0; i < 4; i++){
|
||||
for(j = 0; j < 4; j++){
|
||||
var_a2[i][j] = var_a3[4*i + j];
|
||||
}
|
||||
var_a3 = D_80282FD0;
|
||||
for(i = 0; i < 16; i++) {
|
||||
var_a2[i] = var_a3[i];
|
||||
}
|
||||
D_80282FD0++;
|
||||
}
|
||||
|
@@ -311,8 +311,8 @@ void chBeeSwarm_update(Actor *this) {
|
||||
f32 spB0;
|
||||
f32 spAC;
|
||||
f32 spA0[3];
|
||||
f32 sp94[3];
|
||||
f32 sp88[3];
|
||||
f32 position[3];
|
||||
f32 next_position[3];
|
||||
f32 sp7C[3];
|
||||
s32 sp78;
|
||||
f32 temp_f0;
|
||||
@@ -340,18 +340,18 @@ void chBeeSwarm_update(Actor *this) {
|
||||
this->position[1] = local->unkC[1];
|
||||
this->position[2] = local->unkC[2];
|
||||
|
||||
sp94[0] = this->position[0];
|
||||
sp94[1] = this->position[1];
|
||||
sp94[2] = this->position[2];
|
||||
position[0] = this->position[0];
|
||||
position[1] = this->position[1];
|
||||
position[2] = this->position[2];
|
||||
|
||||
sp88[0] = this->position[0];
|
||||
sp88[1] = this->position[1];
|
||||
sp88[2] = this->position[2];
|
||||
next_position[0] = this->position[0];
|
||||
next_position[1] = this->position[1];
|
||||
next_position[2] = this->position[2];
|
||||
|
||||
sp94[1] += 50.0f;
|
||||
sp88[1] -= 500.0f;
|
||||
if (func_80309B48(sp94, sp88, sp7C, 0x5E0000)) {
|
||||
local->unk18 = sp88[1];
|
||||
position[1] += 50.0f;
|
||||
next_position[1] -= 500.0f;
|
||||
if (func_80309B48(position, next_position, sp7C, 0x5E0000)) {
|
||||
local->unk18 = next_position[1];
|
||||
}
|
||||
}
|
||||
if (!this->unk16C_4) {
|
||||
@@ -397,14 +397,14 @@ void chBeeSwarm_update(Actor *this) {
|
||||
}
|
||||
this->unk58_0 = TRUE;
|
||||
}
|
||||
sp94[0] = this->position[0];
|
||||
sp94[1] = this->position[1];
|
||||
sp94[2] = this->position[2];
|
||||
sp88[0] = this->position[0] + (this->velocity[0] * spAC);
|
||||
sp88[1] = this->position[1] + (this->velocity[1] * spAC);
|
||||
sp88[2] = this->position[2] + (this->velocity[2] * spAC);
|
||||
position[0] = this->position[0];
|
||||
position[1] = this->position[1];
|
||||
position[2] = this->position[2];
|
||||
next_position[0] = this->position[0] + (this->velocity[0] * spAC);
|
||||
next_position[1] = this->position[1] + (this->velocity[1] * spAC);
|
||||
next_position[2] = this->position[2] + (this->velocity[2] * spAC);
|
||||
if (this->state != 7) {
|
||||
if (func_80309DBC(sp94, sp88, 75.0f, sp7C, 3, 0)) {
|
||||
if (func_80309DBC(position, next_position, 75.0f, sp7C, 3, 0)) {
|
||||
ml_vec3f_normalize(sp7C);
|
||||
temp_f0 = (this->velocity[0]*sp7C[0] + this->velocity[1]*sp7C[1] + this->velocity[2]*sp7C[2]) * -1.5;
|
||||
this->velocity[0] = this->velocity[0] + (sp7C[0] * temp_f0);
|
||||
@@ -423,13 +423,13 @@ void chBeeSwarm_update(Actor *this) {
|
||||
if (map_get() == MAP_78_GL_RBB_AND_MMM_PUZZLE) {
|
||||
if (this->unk38_31++ == 0x1E) {
|
||||
this->unk38_31 = 0;
|
||||
sp88[0] = this->position[0];
|
||||
sp88[1] = this->position[1];
|
||||
sp88[2] = this->position[2];
|
||||
sp94[1] += 1000.0f;
|
||||
sp88[1] -= 1000.0f;
|
||||
if (func_80309B48(sp94, sp88, sp7C, 0xF800FF0F)) {
|
||||
local->unk1C = sp88[1];
|
||||
next_position[0] = this->position[0];
|
||||
next_position[1] = this->position[1];
|
||||
next_position[2] = this->position[2];
|
||||
position[1] += 1000.0f;
|
||||
next_position[1] -= 1000.0f;
|
||||
if (func_80309B48(position, next_position, sp7C, 0xF800FF0F)) {
|
||||
local->unk1C = next_position[1];
|
||||
} else {
|
||||
local->unk1C = -16000.0f;
|
||||
}
|
||||
|
@@ -8,7 +8,7 @@ extern void func_80252C08(f32[3],f32[3], f32, f32[3]);
|
||||
extern void func_80252CC4(f32[3],s32, f32, s32);
|
||||
extern f32 func_802560D0(f32[3], f32[3], f32[3]);
|
||||
extern f32 func_802EC920(BKVertexList *);
|
||||
extern void func_8033D5D0(f32 arg0[3], f32 arg1[3], f32 margin, f32 min[3], f32 max[3]);
|
||||
extern void points_to_boundingBoxWithMargin(f32 arg0[3], f32 arg1[3], f32 margin, f32 min[3], f32 max[3]);
|
||||
|
||||
#define ABS_F(s) (((s) >= 0.0f) ? (s) : -(s))
|
||||
|
||||
@@ -442,7 +442,7 @@ int func_802E805C(BKCollisionList *collision_list, BKVertexList *vtxList, f32 ar
|
||||
return sp34;
|
||||
}
|
||||
|
||||
s32 func_802E81CC(BKCollisionList *collisionList, BKVertexList *vertexList, f32 p1[3], f32 p2[3], f32 arg4[3], f32 arg5, s32 flagFilter, s32 *arg7, s32 *arg8) {
|
||||
s32 func_802E81CC(BKCollisionList *collisionList, BKVertexList *vertexList, f32 p1[3], f32 p2[3], f32 velocity[3], f32 margin, s32 flagFilter, s32 **activeTriStartPtr, s32 *activeTriEndPtr) {
|
||||
BKCollisionGeo **start_geo;
|
||||
BKCollisionGeo **i_geo;
|
||||
BKCollisionGeo **end_geo;
|
||||
@@ -462,7 +462,7 @@ s32 func_802E81CC(BKCollisionList *collisionList, BKVertexList *vertexList, f32
|
||||
f32 temp_f0;
|
||||
|
||||
|
||||
func_8033D5D0(p1, p2, arg5, min, max);
|
||||
points_to_boundingBoxWithMargin(p1, p2, margin, min, max);
|
||||
temp_f0 = func_802EC920(vertexList);
|
||||
for(i = 0; i < 3; i++){
|
||||
if ((max[i] <= -temp_f0) || (temp_f0 <= min[i])) {
|
||||
@@ -535,10 +535,10 @@ s32 func_802E81CC(BKCollisionList *collisionList, BKVertexList *vertexList, f32
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (((var_s2->normal[0]*arg4[0]) + (var_s2->normal[1]*arg4[1]) + (var_s2->normal[2]*arg4[2])) > 0.0f)
|
||||
continue; //arg4 is same direction as triangle normal
|
||||
if (((var_s2->normal[0]*velocity[0]) + (var_s2->normal[1]*velocity[1]) + (var_s2->normal[2]*velocity[2])) > 0.0f)
|
||||
continue; //velocity is same direction as triangle normal
|
||||
}
|
||||
//add tri to active collisions
|
||||
//add tri to active tri collisions
|
||||
var_s2->tri_ptr = i_tri;
|
||||
var_s2++;
|
||||
if ((var_s2 - D_8037EAD0) > 100)
|
||||
@@ -548,14 +548,14 @@ s32 func_802E81CC(BKCollisionList *collisionList, BKVertexList *vertexList, f32
|
||||
if ((var_s2 - D_8037EAD0) > 100)
|
||||
break;
|
||||
}
|
||||
*arg7 = (s32) D_8037EAD0; //collisionPool
|
||||
*arg8 = (s32) var_s2; //collisionPoolEnd
|
||||
*activeTriStartPtr = (s32) D_8037EAD0; //activeTriPool
|
||||
*activeTriEndPtr = (s32) var_s2; //activeTriPoolEnd
|
||||
return var_s2 - D_8037EAD0 > 0; //Count
|
||||
}
|
||||
|
||||
Struct_core2_5FD90_0 *func_802E879C(Struct_core2_5FD90_0 *arg0, Struct_core2_5FD90_0 *arg1, f32 arg2[3], f32 arg3, f32 arg4[3]) {
|
||||
Struct_core2_5FD90_0 *func_802E879C(Struct_core2_5FD90_0 *startTri, Struct_core2_5FD90_0 *endTri, f32 position[3], f32 radius, f32 arg4[3]) {
|
||||
s32 i;
|
||||
Struct_core2_5FD90_0 *i_ptr;
|
||||
Struct_core2_5FD90_0 *i_tri;
|
||||
|
||||
f32 sp144[3][3];
|
||||
f32 sp120[3][3];
|
||||
@@ -584,59 +584,61 @@ Struct_core2_5FD90_0 *func_802E879C(Struct_core2_5FD90_0 *arg0, Struct_core2_5FD
|
||||
arg4[0] = 0.0f;
|
||||
arg4[1] = 0.0f;
|
||||
arg4[2] = 0.0f;
|
||||
for(i_ptr = arg0; i_ptr < arg1; i_ptr++){
|
||||
sp120[0][0] = arg2[0] - i_ptr->tri_coord[0][0];
|
||||
sp120[0][1] = arg2[1] - i_ptr->tri_coord[0][1];
|
||||
sp120[0][2] = arg2[2] - i_ptr->tri_coord[0][2];
|
||||
temp_f18 = (sp120[0][0] * i_ptr->normal[0]) + (sp120[0][1] * i_ptr->normal[1]) + (sp120[0][2] * i_ptr->normal[2]);
|
||||
if ((-(arg3 - 0.5)>= temp_f18) || ((arg3 -0.5) <= temp_f18))
|
||||
for(i_tri = startTri; i_tri < endTri; i_tri++){
|
||||
//project point onto plane of triangle
|
||||
sp120[0][0] = position[0] - i_tri->tri_coord[0][0];
|
||||
sp120[0][1] = position[1] - i_tri->tri_coord[0][1];
|
||||
sp120[0][2] = position[2] - i_tri->tri_coord[0][2];
|
||||
temp_f18 = (sp120[0][0] * i_tri->normal[0]) + (sp120[0][1] * i_tri->normal[1]) + (sp120[0][2] * i_tri->normal[2]);
|
||||
if ((-(radius - 0.5)>= temp_f18) || ((radius -0.5) <= temp_f18))
|
||||
continue;
|
||||
|
||||
temp_f8 = i_ptr->normal[0];
|
||||
normal_length = (temp_f8 * i_ptr->normal[0]) + (i_ptr->normal[1] * i_ptr->normal[1]) + (i_ptr->normal[2] * i_ptr->normal[2]);
|
||||
temp_f8 = i_tri->normal[0];
|
||||
normal_length = (temp_f8 * i_tri->normal[0]) + (i_tri->normal[1] * i_tri->normal[1]) + (i_tri->normal[2] * i_tri->normal[2]);
|
||||
if(normal_length == 0.0f)
|
||||
continue;
|
||||
|
||||
normal_length = -temp_f18 / normal_length;
|
||||
projected_position[0] = arg2[0] + (i_ptr->normal[0] * normal_length); //project point onto triangle
|
||||
projected_position[1] = arg2[1] + (i_ptr->normal[1] * normal_length);
|
||||
projected_position[2] = arg2[2] + (i_ptr->normal[2] * normal_length);
|
||||
projected_position[0] = position[0] + (i_tri->normal[0] * normal_length);
|
||||
projected_position[1] = position[1] + (i_tri->normal[1] * normal_length);
|
||||
projected_position[2] = position[2] + (i_tri->normal[2] * normal_length);
|
||||
|
||||
var_a2 = (ABS_F(i_ptr->normal[0]) > ABS_F(i_ptr->normal[1])) ? 0 : 1;
|
||||
var_a2 = (ABS_F(i_ptr->normal[2]) > ABS_F(i_ptr->normal[var_a2])) ? 2 : var_a2;
|
||||
//check if projected point is inside of triangle
|
||||
var_a2 = (ABS_F(i_tri->normal[0]) > ABS_F(i_tri->normal[1])) ? 0 : 1;
|
||||
var_a2 = (ABS_F(i_tri->normal[2]) > ABS_F(i_tri->normal[var_a2])) ? 2 : var_a2;
|
||||
|
||||
spFC[0] = projected_position[(var_a2 + 1)%3] - i_tri->tri_coord[0][(var_a2 + 1)%3];
|
||||
spFC[1] = i_tri->edgeAB[(var_a2 + 1)%3];
|
||||
spFC[2] = i_tri->edgeAC[(var_a2 + 1)%3];
|
||||
|
||||
spFC[0] = projected_position[(var_a2 + 1)%3] - i_ptr->tri_coord[0][(var_a2 + 1)%3];
|
||||
spFC[1] = i_ptr->edgeAB[(var_a2 + 1)%3];
|
||||
spFC[2] = i_ptr->edgeAC[(var_a2 + 1)%3];
|
||||
|
||||
spF0[0] = projected_position[(var_a2 + 2)%3] - i_ptr->tri_coord[0][(var_a2 + 2)%3];
|
||||
spF0[1] = i_ptr->edgeAB[(var_a2 + 2)%3];
|
||||
spF0[2] = i_ptr->edgeAC[(var_a2 + 2)%3];
|
||||
spF0[0] = projected_position[(var_a2 + 2)%3] - i_tri->tri_coord[0][(var_a2 + 2)%3];
|
||||
spF0[1] = i_tri->edgeAB[(var_a2 + 2)%3];
|
||||
spF0[2] = i_tri->edgeAC[(var_a2 + 2)%3];
|
||||
|
||||
temp_f2_4 = (spFC[1] * spF0[2]) - (spF0[1] * spFC[2]);
|
||||
temp_f12_3 = ((spFC[0] * spF0[2]) - (spF0[0] * spFC[2]))/temp_f2_4;
|
||||
temp_f0_4 = ((spFC[1] * spF0[0]) - (spF0[1] * spFC[0]))/ temp_f2_4;
|
||||
if ((0.0f <= temp_f12_3) && (temp_f12_3 <= 1.0f)
|
||||
&& (0.0f <= temp_f0_4) && (temp_f0_4 <= 1.0f))
|
||||
if (((temp_f12_3 + temp_f0_4) <= 1.0f)
|
||||
) {
|
||||
spD0 = i_ptr;
|
||||
arg4[0] = arg4[0] + i_ptr->normal[0];
|
||||
arg4[1] = arg4[1] + i_ptr->normal[1];
|
||||
arg4[2] = arg4[2] + i_ptr->normal[2];
|
||||
if ((0 <= 1.0f - (temp_f12_3 + temp_f0_4))) {
|
||||
//projected point lies on triangle
|
||||
spD0 = i_tri;
|
||||
arg4[0] = arg4[0] + i_tri->normal[0];
|
||||
arg4[1] = arg4[1] + i_tri->normal[1];
|
||||
arg4[2] = arg4[2] + i_tri->normal[2];
|
||||
continue;
|
||||
}
|
||||
|
||||
//projected point lies outside triangle
|
||||
for(i = 0; i < 3; i++){
|
||||
sp120[i][0] = arg2[0] - i_ptr->tri_coord[i][0];
|
||||
sp120[i][1] = arg2[1] - i_ptr->tri_coord[i][1];
|
||||
sp120[i][2] = arg2[2] - i_ptr->tri_coord[i][2];
|
||||
if (sp120[i][0]*sp120[i][0] + sp120[i][1]*sp120[i][1] + sp120[i][2]*sp120[i][2] < arg3 * arg3) {
|
||||
spD0 = i_ptr;
|
||||
arg4[0] = arg4[0] + i_ptr->normal[0];
|
||||
arg4[1] = arg4[1] + i_ptr->normal[1];
|
||||
arg4[2] = arg4[2] + i_ptr->normal[2];
|
||||
sp120[i][0] = position[0] - i_tri->tri_coord[i][0];
|
||||
sp120[i][1] = position[1] - i_tri->tri_coord[i][1];
|
||||
sp120[i][2] = position[2] - i_tri->tri_coord[i][2];
|
||||
if (sp120[i][0]*sp120[i][0] + sp120[i][1]*sp120[i][1] + sp120[i][2]*sp120[i][2] < radius * radius) {
|
||||
spD0 = i_tri;
|
||||
arg4[0] = arg4[0] + i_tri->normal[0];
|
||||
arg4[1] = arg4[1] + i_tri->normal[1];
|
||||
arg4[2] = arg4[2] + i_tri->normal[2];
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -645,10 +647,9 @@ Struct_core2_5FD90_0 *func_802E879C(Struct_core2_5FD90_0 *arg0, Struct_core2_5FD
|
||||
continue;
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
|
||||
sp144[i][0] = i_ptr->tri_coord[(i + 1) % 3][0] - i_ptr->tri_coord[i][0];
|
||||
sp144[i][1] = i_ptr->tri_coord[(i + 1) % 3][1] - i_ptr->tri_coord[i][1];
|
||||
sp144[i][2] = i_ptr->tri_coord[(i + 1) % 3][2] - i_ptr->tri_coord[i][2];
|
||||
sp144[i][0] = i_tri->tri_coord[(i + 1) % 3][0] - i_tri->tri_coord[i][0];
|
||||
sp144[i][1] = i_tri->tri_coord[(i + 1) % 3][1] - i_tri->tri_coord[i][1];
|
||||
sp144[i][2] = i_tri->tri_coord[(i + 1) % 3][2] - i_tri->tri_coord[i][2];
|
||||
temp_f22 = sp144[i][0]*sp144[i][0] + sp144[i][1]*sp144[i][1] + sp144[i][2]*sp144[i][2];
|
||||
ml_vec3f_normalize(sp144[i]);
|
||||
temp_f0_3 = (sp144[i][0]*sp120[i][0]) + (sp144[i][1]*sp120[i][1]) + (sp144[i][2]*sp120[i][2]);
|
||||
@@ -656,11 +657,11 @@ Struct_core2_5FD90_0 *func_802E879C(Struct_core2_5FD90_0 *arg0, Struct_core2_5FD
|
||||
projected_position[0] = sp120[i][0] - sp144[i][0]*temp_f0_3;
|
||||
projected_position[1] = sp120[i][1] - sp144[i][1]*temp_f0_3;
|
||||
projected_position[2] = sp120[i][2] - sp144[i][2]*temp_f0_3;
|
||||
if(projected_position[0]*projected_position[0] + projected_position[1]*projected_position[1] + projected_position[2]*projected_position[2] < arg3 * arg3){
|
||||
spD0 = i_ptr;
|
||||
arg4[0] = arg4[0] + i_ptr->normal[0];
|
||||
arg4[1] = arg4[1] + i_ptr->normal[1];
|
||||
arg4[2] = arg4[2] + i_ptr->normal[2];
|
||||
if(projected_position[0]*projected_position[0] + projected_position[1]*projected_position[1] + projected_position[2]*projected_position[2] < radius * radius){
|
||||
spD0 = i_tri;
|
||||
arg4[0] = arg4[0] + i_tri->normal[0];
|
||||
arg4[1] = arg4[1] + i_tri->normal[1];
|
||||
arg4[2] = arg4[2] + i_tri->normal[2];
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -669,9 +670,9 @@ Struct_core2_5FD90_0 *func_802E879C(Struct_core2_5FD90_0 *arg0, Struct_core2_5FD
|
||||
return spD0;
|
||||
}
|
||||
|
||||
BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx_list, f32 arg2[3], f32 arg3[3], f32 arg4, f32 arg5[3], s32 arg6, s32 flagFilter){
|
||||
Struct_core2_5FD90_0 * spC4;
|
||||
Struct_core2_5FD90_0 * spC0;
|
||||
BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx_list, f32 p1[3], f32 p2[3], f32 radius, f32 arg5[3], s32 arg6, s32 flagFilter){
|
||||
Struct_core2_5FD90_0 * start_active_tri;
|
||||
Struct_core2_5FD90_0 * end_active_tri;
|
||||
f32 spB4[3];
|
||||
|
||||
f32 temp_f20;
|
||||
@@ -685,33 +686,33 @@ BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx
|
||||
Struct_core2_5FD90_0 *phi_v0;
|
||||
f32 sp78[3];
|
||||
|
||||
sp78[0] = arg3[0] - arg2[0];
|
||||
sp78[1] = arg3[1] - arg2[1];
|
||||
sp78[2] = arg3[2] - arg2[2];
|
||||
if (!func_802E81CC(collision_list, vtx_list, arg2, arg3, sp78, (f32) ((f64) arg4 + 0.5), flagFilter, &spC4, &spC0)) {
|
||||
sp78[0] = p2[0] - p1[0];
|
||||
sp78[1] = p2[1] - p1[1];
|
||||
sp78[2] = p2[2] - p1[2];
|
||||
if (!func_802E81CC(collision_list, vtx_list, p1, p2, sp78, (f32) ((f64) radius + 0.5), flagFilter, &start_active_tri, &end_active_tri)) {
|
||||
return NULL;
|
||||
}
|
||||
phi_s5 = func_802E879C(spC4, spC0, arg3, arg4, sp8C);
|
||||
phi_s5 = func_802E879C(start_active_tri, end_active_tri, p2, radius, sp8C);
|
||||
if (phi_s5 == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
arg5[0] = sp8C[0];
|
||||
arg5[1] = sp8C[1];
|
||||
arg5[2] = sp8C[2];
|
||||
spB4[0] = arg3[0] - arg2[0];
|
||||
spB4[1] = arg3[1] - arg2[1];
|
||||
spB4[2] = arg3[2] - arg2[2];
|
||||
arg3[0] = arg2[0];
|
||||
arg3[1] = arg2[1];
|
||||
arg3[2] = arg2[2];
|
||||
spB4[0] = p2[0] - p1[0];
|
||||
spB4[1] = p2[1] - p1[1];
|
||||
spB4[2] = p2[2] - p1[2];
|
||||
p2[0] = p1[0];
|
||||
p2[1] = p1[1];
|
||||
p2[2] = p1[2];
|
||||
phi_f22 = 0.0f;
|
||||
phi_f24 = 1.0f;
|
||||
for(phi_s0 = 0; phi_s0 < arg6; phi_s0++){
|
||||
temp_f20 = (phi_f22 + phi_f24) * 0.5;
|
||||
sp98[0] = arg2[0] + (spB4[0] * temp_f20);
|
||||
sp98[1] = arg2[1] + (spB4[1] * temp_f20);
|
||||
sp98[2] = arg2[2] + (spB4[2] * temp_f20);
|
||||
phi_v0 = func_802E879C(spC4, spC0, sp98, arg4, sp8C);
|
||||
sp98[0] = p1[0] + (spB4[0] * temp_f20);
|
||||
sp98[1] = p1[1] + (spB4[1] * temp_f20);
|
||||
sp98[2] = p1[2] + (spB4[2] * temp_f20);
|
||||
phi_v0 = func_802E879C(start_active_tri, end_active_tri, sp98, radius, sp8C);
|
||||
if (phi_v0 != NULL) {
|
||||
arg5[0] = sp8C[0];
|
||||
arg5[1] = sp8C[1];
|
||||
@@ -719,9 +720,9 @@ BKCollisionTri *func_802E8E88(BKCollisionList *collision_list, BKVertexList *vtx
|
||||
phi_f24 = temp_f20;
|
||||
phi_s5 = phi_v0;
|
||||
} else {
|
||||
arg3[0] = sp98[0];
|
||||
arg3[1] = sp98[1];
|
||||
arg3[2] = sp98[2];
|
||||
p2[0] = sp98[0];
|
||||
p2[1] = sp98[1];
|
||||
p2[2] = sp98[2];
|
||||
phi_f22 = temp_f20;
|
||||
}
|
||||
}
|
||||
|
@@ -3,17 +3,17 @@
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
void func_8033D5D0(f32 arg0[3], f32 arg1[3], f32 margin, f32 min[3], f32 max[3]) {
|
||||
void points_to_boundingBoxWithMargin(f32 p1[3], f32 p2[3], f32 margin, f32 min[3], f32 max[3]) {
|
||||
s32 i;
|
||||
|
||||
i = 0;
|
||||
for(i = 0; i < 3; i++){
|
||||
if (arg0[i] < arg1[i]) {
|
||||
min[i] = arg0[i];
|
||||
max[i] = arg1[i];
|
||||
if (p1[i] < p2[i]) {
|
||||
min[i] = p1[i];
|
||||
max[i] = p2[i];
|
||||
} else {
|
||||
min[i] = arg1[i];
|
||||
max[i] = arg0[i];
|
||||
min[i] = p2[i];
|
||||
max[i] = p1[i];
|
||||
}
|
||||
min[i] -= margin;
|
||||
max[i] += margin;
|
||||
|
@@ -104,65 +104,61 @@ s32 func_8033F3C0(BKModel *model, f32 position[3]){
|
||||
#ifndef NONMATCHING
|
||||
#pragma GLOBAL_ASM("asm/nonmatchings/core2/code_B8080/func_8033F3E8.s")
|
||||
#else
|
||||
s32 func_8033F3E8(BKModel *arg0, f32 arg1[3], s32 min_id, s32 max_id) {
|
||||
s32 func_8033F3E8(BKModel *model, f32 position[3], s32 min_id, s32 max_id) {
|
||||
int i;
|
||||
int j;
|
||||
int k;
|
||||
s16 sp64[3];
|
||||
s16 sp5C[3];
|
||||
s16 sp54[3];
|
||||
s16 temp_v1_3;
|
||||
Vtx *temp_v0;
|
||||
BKMesh *phi_t3;
|
||||
Vtx *phi_a1;
|
||||
s16 min[3];
|
||||
s16 max[3];
|
||||
s16 position_s16[3];
|
||||
s32 temp_v1_3;
|
||||
Vtx *vertex_pool;
|
||||
BKMesh *current_mesh;
|
||||
Vtx *current_vertex;
|
||||
s32 mesh_cnt;
|
||||
s32 vtx_cnt;
|
||||
s16 *tmp;
|
||||
s16 t8;
|
||||
s16 *vertex_index_list;
|
||||
|
||||
temp_v0 = vtxList_getVertices(arg0->vtxList_4);
|
||||
sp54[0] = (s16) arg1[0];
|
||||
sp54[1] = (s16) arg1[1];
|
||||
sp54[2] = (s16) arg1[2];
|
||||
phi_t3 = (BKMesh *)(arg0->meshList_0 + 1);
|
||||
for(k = 0; k < arg0->meshList_0->meshCount_0; k++){
|
||||
if ((min_id > phi_t3->uid_0 || phi_t3->uid_0 >= max_id)){
|
||||
vtx_cnt = phi_t3->vtxCount_2;
|
||||
}
|
||||
else{
|
||||
t8 = *(s16*)(phi_t3 + 1);
|
||||
phi_a1 = temp_v0 + t8;
|
||||
for(i = 0; &sp64[i] < &sp64[3]; i++){
|
||||
temp_v1_3 = phi_a1->v.ob[i];
|
||||
sp64[i] = temp_v1_3;
|
||||
sp5C[i] = temp_v1_3;
|
||||
vertex_pool = vtxList_getVertices(model->vtxList_4);
|
||||
position_s16[0] = (s16) position[0];
|
||||
position_s16[1] = (s16) position[1];
|
||||
position_s16[2] = (s16) position[2];
|
||||
current_mesh = (BKMesh *)(model->meshList_0 + 1);
|
||||
for(k = 0; k < model->meshList_0->meshCount_0; k++, current_mesh = ((s16 *)(current_mesh + 1)) + current_mesh->vtxCount_2){
|
||||
if ((min_id > current_mesh->uid_0 || current_mesh->uid_0 >= max_id))
|
||||
continue;
|
||||
|
||||
j = 0;
|
||||
vertex_index_list = ((s16*)(current_mesh + 1));
|
||||
current_vertex = vertex_pool + vertex_index_list[j];
|
||||
for(i = 0; &min[i] < &min[3]; i++){
|
||||
temp_v1_3 = current_vertex->v.ob[i];
|
||||
min[i] = temp_v1_3;
|
||||
max[i] = temp_v1_3;
|
||||
};
|
||||
|
||||
|
||||
for(j = 1; j < current_mesh->vtxCount_2; j++){
|
||||
current_vertex = vertex_pool + vertex_index_list[j];
|
||||
for(i = 0; i < 3; i++){
|
||||
temp_v1_3 = current_vertex->v.ob[i];
|
||||
min[i] = MIN(temp_v1_3, min[i]);
|
||||
max[i] = MAX(temp_v1_3, max[i]);
|
||||
};
|
||||
|
||||
tmp = (s16*)(phi_t3 + 1);
|
||||
for(j = 0; j < phi_t3->vtxCount_2; j++){
|
||||
phi_a1 = temp_v0 + tmp[j];
|
||||
for(i = 0; i < 3; i++){
|
||||
temp_v1_3 = phi_a1->v.ob[i];
|
||||
sp64[i] = (temp_v1_3 < sp64[i]) ? temp_v1_3 : sp64[i];
|
||||
sp5C[i] = (sp5C[i] < temp_v1_3) ? temp_v1_3 : sp5C[i];
|
||||
};
|
||||
}
|
||||
if( (sp64[0] < sp54[0] && sp54[0] < sp5C[0])
|
||||
&& (sp64[2] < sp54[2] && sp54[2] < sp5C[2])
|
||||
){
|
||||
return phi_t3->uid_0;
|
||||
}
|
||||
vtx_cnt = phi_t3->vtxCount_2;
|
||||
}
|
||||
phi_t3 = &(((s16 *)(phi_t3 + 1))[vtx_cnt]);
|
||||
if( (min[0] < position_s16[0] && position_s16[0] < max[0])
|
||||
&& (min[2] < position_s16[2] && position_s16[2] < max[2])
|
||||
){
|
||||
return current_mesh->uid_0;
|
||||
}
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void model_free(void *arg0){
|
||||
free(arg0);
|
||||
void model_free(BKModel *model){
|
||||
free(model);
|
||||
}
|
||||
|
||||
BKModel *func_8033F5F8(BKMeshList *meshList, BKVertexList *vertexList) {
|
||||
|
@@ -507,19 +507,19 @@ UNK_TYPE(s32) func_80309D58(UNK_TYPE(s32) arg0, UNK_TYPE(s32) arg1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
UNK_TYPE(s32) func_80309DBC(f32 arg0[3], f32 arg1[3], f32 arg2, f32 arg3[3], s32 arg4, s32 arg5) {
|
||||
UNK_TYPE(s32) func_80309DBC(f32 currentPosition[3], f32 next_position[3], f32 arg2, f32 arg3[3], s32 arg4, s32 arg5) {
|
||||
s32 sp34;
|
||||
s32 temp_v0_2;
|
||||
|
||||
mapModel.unk20 = 0;
|
||||
sp34 = func_802E8E88(mapModel.collision_opa, func_8033A148(mapModel.model_bin_opa), arg0, arg1, arg2, arg3, arg4, arg5);
|
||||
sp34 = func_802E8E88(mapModel.collision_opa, func_8033A148(mapModel.model_bin_opa), currentPosition, next_position, arg2, arg3, arg4, arg5);
|
||||
if (sp34 != 0) {
|
||||
mapModel.unk20 = (s32) mapModel.model_bin_opa;
|
||||
}
|
||||
if (mapModel.collision_xlu == 0) {
|
||||
return sp34;
|
||||
}
|
||||
temp_v0_2 = func_802E8E88(mapModel.collision_xlu, func_8033A148(mapModel.model_bin_xlu), arg0, arg1, arg2, arg3, arg4, arg5);
|
||||
temp_v0_2 = func_802E8E88(mapModel.collision_xlu, func_8033A148(mapModel.model_bin_xlu), currentPosition, next_position, arg2, arg3, arg4, arg5);
|
||||
if (temp_v0_2 != 0) {
|
||||
mapModel.unk20 = (s32) mapModel.model_bin_xlu;
|
||||
return temp_v0_2;
|
||||
|
@@ -95,7 +95,7 @@ typedef struct {
|
||||
s16 unk8;
|
||||
s16 unkA;
|
||||
f32 unkC[3];
|
||||
}GeoCmd9;
|
||||
}GeoCmdA;
|
||||
|
||||
typedef struct {
|
||||
s32 cmd_0;
|
||||
@@ -869,7 +869,7 @@ void func_80338B50(Gfx **gfx, Mtx **mtx, void *arg2){
|
||||
|
||||
//CmdA_REFERENCE_POINT
|
||||
void func_80338BFC(Gfx **gfx, Mtx **mtx, void *arg2){
|
||||
GeoCmd9 *cmd = (GeoCmd9 *)arg2;
|
||||
GeoCmdA *cmd = (GeoCmdA *)arg2;
|
||||
f32 sp20[3];
|
||||
|
||||
if(D_80383650){
|
||||
|
Reference in New Issue
Block a user