code_83340 -> propModelList
This commit is contained in:
@@ -76,7 +76,7 @@ Actor *func_8038DF34(Actor *this){
|
||||
this->marker->unk38[2] = sp18[2] - this->position[2];
|
||||
prop = func_80320EB0(this->marker, 75.0f, 1);
|
||||
|
||||
if(prop && prop->unk8_0){
|
||||
if(prop && prop->is_actor){
|
||||
other = marker_getActor(prop->marker);
|
||||
marker_id = other->marker->id;
|
||||
if( marker_id == MARKER_200_TWINKLY_BLUE
|
||||
|
@@ -48,7 +48,7 @@ Actor *chTrucker_draw(ActorMarker *this_marker, Gfx **gfx, Mtx **mtx, Vtx **vtx)
|
||||
sp2C[1] = this->yaw + 220.0f;
|
||||
sp2C[2] = this->roll;
|
||||
modelRender_setDepthMode(MODEL_RENDER_DEPTH_COMPARE);
|
||||
modelRender_draw(gfx, mtx, sp38, sp2C, 1.0f, NULL, func_8030A428(3));
|
||||
modelRender_draw(gfx, mtx, sp38, sp2C, 1.0f, NULL, propModelList_getModel(3));
|
||||
return this;
|
||||
}
|
||||
|
||||
|
@@ -95,7 +95,7 @@ Actor *chorange_draw(ActorMarker *this, Gfx **dl, Mtx **mptr, Vtx **vtx) {
|
||||
|
||||
modelRender_setAlpha((s32) MIN(255.0f, actorPtr->lifetime_value));
|
||||
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
|
||||
modelRender_draw(dl, mptr, position, rotation, actorPtr->actor_specific_1_f, sp60, func_8030A428(0x18));
|
||||
modelRender_draw(dl, mptr, position, rotation, actorPtr->actor_specific_1_f, sp60, propModelList_getModel(0x18));
|
||||
actorPtr->position_y -= 1.9;
|
||||
|
||||
if (actorPtr->actor_specific_1_f < 2.428) {
|
||||
|
@@ -11,9 +11,6 @@ extern BKModel *mapModel_getModel(s32);
|
||||
extern u8 gCompletedBottleBonusGames[7];
|
||||
|
||||
/* .h */
|
||||
static void __maCastle_resetSecretCheatCodeProgress(void);
|
||||
static u32 __maCastle_scrambleAddressForSecretCheatCode();
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 *code;
|
||||
@@ -43,7 +40,12 @@ typedef struct
|
||||
s16 maxId;
|
||||
} BannedCheatCodeRange;
|
||||
|
||||
|
||||
static void __maCastle_resetSecretCheatCodeProgress(void);
|
||||
static u32 __maCastle_scrambleAddressForSecretCheatCode();
|
||||
static s32 __maCastle_getNumberOfBannedCheatCodesEntered();
|
||||
static bool __maCastle_isFloorTileValidForSecretCheatCode(LetterFloorTile *floor_tile);
|
||||
static bool __maCastle_isCurrentSecretCheatCodeCharacter0();
|
||||
|
||||
/* .data */
|
||||
static s32 sSecretCheatCodeRelatedValue = NULL;
|
||||
|
@@ -27,7 +27,7 @@ void func_8025357C(void){
|
||||
osSendMesg(&D_802831F0, NULL, OS_MESG_BLOCK);
|
||||
}
|
||||
|
||||
void func_802535A8(Gfx **arg0, Gfx **arg1, UNK_TYPE(s32) arg2, UNK_TYPE(s32) arg3) {
|
||||
void func_802535A8(Acmd *arg0, Acmd *arg1, OSMesgQueue *arg2, UNK_TYPE(s32) arg3) {
|
||||
Struct_Core1_15B30 *sp1C;
|
||||
|
||||
func_80253550();
|
||||
|
@@ -40,10 +40,6 @@ typedef struct Struct_1D00_3_s{
|
||||
u32 unk10;
|
||||
} Struct_1D00_3;
|
||||
|
||||
typedef struct{
|
||||
u8 pad0[0x18];
|
||||
}Struct_core1_1D00_4;
|
||||
|
||||
typedef struct struct_core1_1D00_5_s{
|
||||
struct struct_core1_1D00_5_s * next;
|
||||
u8 type;
|
||||
@@ -154,7 +150,7 @@ s32 D_8027D004;
|
||||
OSMesgQueue D_8027D008;
|
||||
OSMesg D_8027D020[3000/FRAMERATE];
|
||||
OSIoMesg D_8027D0E8;
|
||||
Struct_core1_1D00_4 D_8027D100[3000/FRAMERATE];
|
||||
OSIoMesg D_8027D100[3000/FRAMERATE];
|
||||
struct {
|
||||
u8 unk0;
|
||||
Struct_1D00_3 *unk4;
|
||||
@@ -474,9 +470,9 @@ s32 func_80240204(s32 addr, s32 len, void *state){
|
||||
return osVirtualToPhysical(D_8027D5B0.unk4);
|
||||
}
|
||||
D_8027D5B0.unk8 = phi_s0->unk0.next;
|
||||
alUnlink(phi_s0);
|
||||
alUnlink(&phi_s0->unk0);
|
||||
if (sp30 != NULL) {
|
||||
alLink(phi_s0, sp30);
|
||||
alLink(&phi_s0->unk0, &sp30->unk0);
|
||||
} else {
|
||||
phi_v0 = D_8027D5B0.unk4;
|
||||
if (phi_v0 != NULL) {
|
||||
@@ -559,7 +555,7 @@ s32 func_80240204(s32 addr, s32 len, void *state){
|
||||
void *func_802403B8(void *state) {
|
||||
if (D_8027D5B0.unk0 == 0) {
|
||||
D_8027D5B0.unk4 = NULL;
|
||||
D_8027D5B0.unk8 = &D_8027D5C0;
|
||||
D_8027D5B0.unk8 = D_8027D5C0;
|
||||
D_8027D5B0.unk0 = 1;
|
||||
}
|
||||
*(void **)state = &D_8027D5B0;
|
||||
@@ -591,9 +587,9 @@ void func_802403F0(void) {
|
||||
phi_s1 = (Struct_1D00_3 *)phi_s0_2->unk0.next;
|
||||
if (phi_s0_2->unkC + 1 < D_8027DCC8) {
|
||||
if (phi_s0_2 == D_8027D5B0.unk4) {
|
||||
D_8027D5B0.unk4 = phi_s0_2->unk0.next;
|
||||
D_8027D5B0.unk4 = (Struct_1D00_3 *)phi_s0_2->unk0.next;
|
||||
}
|
||||
alUnlink(phi_s0_2);
|
||||
alUnlink(&phi_s0_2->unk0);
|
||||
if (D_8027D5B0.unk8 != NULL) {
|
||||
alLink(&phi_s0_2->unk0, &D_8027D5B0.unk8->unk0);
|
||||
} else {
|
||||
|
@@ -347,7 +347,7 @@ void *malloc(s32 size){
|
||||
D_80283234 = NULL;
|
||||
func_803306C8(2);
|
||||
if(!func_80254B84(0))
|
||||
func_8030A850(2);
|
||||
propModelList_flush(2);
|
||||
|
||||
if(!func_80254B84(0))
|
||||
animCache_flushStale();
|
||||
@@ -364,7 +364,7 @@ void *malloc(s32 size){
|
||||
func_803306C8(3); //modelCache
|
||||
|
||||
if(!func_80254B84(0))
|
||||
func_8030A850(3); //propModelCache
|
||||
propModelList_flush(3); //propModelCache
|
||||
|
||||
if(!func_80254B84(0))
|
||||
func_8032AD7C(2); //actorArray
|
||||
|
@@ -820,9 +820,9 @@ void __baMarker_resolveCollision(Prop *other_prop){
|
||||
func_8032B258(actor, obj_collision_type);
|
||||
}
|
||||
}
|
||||
else if(other_prop->unk8_1)//L8028D0B0 //ModelProp
|
||||
else if(other_prop->is_3d)//L8028D0B0 //ModelProp
|
||||
{
|
||||
tmp2 = other_prop->modelProp.unk0_31 + 0x2D1;
|
||||
tmp2 = other_prop->modelProp.model_index + 0x2D1;
|
||||
switch (tmp2)
|
||||
{
|
||||
case 0x2E8:
|
||||
@@ -837,7 +837,7 @@ void __baMarker_resolveCollision(Prop *other_prop){
|
||||
}
|
||||
}
|
||||
else{//L8028D10C //SpriteProp
|
||||
tmp3 = other_prop->spriteProp.unk0_31 + 0x572;
|
||||
tmp3 = other_prop->spriteProp.sprite_index + 0x572;
|
||||
switch (tmp3)
|
||||
{
|
||||
case 0x6D6: //L8028D144
|
||||
@@ -927,7 +927,7 @@ void baMarker_update(void){
|
||||
func_80320ED8(playerMarker, temp_s0_2[i], 1);
|
||||
while(other_prop = func_8032F528()){//L8028D480
|
||||
if(!other_prop->unk8_2){
|
||||
if(!D_8037BF8C && other_prop->markerFlag && other_prop->unk8_1){
|
||||
if(!D_8037BF8C && other_prop->is_actor && other_prop->is_3d){
|
||||
D_8037BF8C = other_prop->actorProp.marker;
|
||||
}
|
||||
__baMarker_resolveCollision(other_prop);
|
||||
|
@@ -97,7 +97,7 @@ s32 chCollectible_collectEgg(ActorProp *arg0){
|
||||
Actor *actPtr = NULL;
|
||||
if(arg0 != NULL){
|
||||
fxSparkle_blueEgg(&arg0->x);
|
||||
if(arg0->unk8_0)
|
||||
if(arg0->is_actor)
|
||||
actPtr = marker_getActor(arg0->marker);
|
||||
}
|
||||
chCollectible_collectItem(actPtr, FILEPROG_5_BLUE_EGG_TEXT, 0xD9E, COMUSIC_C_EGG_COLLECTED, 0xD, 2.0f);
|
||||
@@ -106,7 +106,7 @@ s32 chCollectible_collectEgg(ActorProp *arg0){
|
||||
void chCollectible_collectRedFeather(ActorProp *arg0){
|
||||
Actor *actPtr = NULL;
|
||||
fxSparkle_redFeather(&arg0->x);
|
||||
if(arg0->unk8_0)
|
||||
if(arg0->is_actor)
|
||||
actPtr = marker_getActor(arg0->marker);
|
||||
chCollectible_collectItem(actPtr, FILEPROG_6_RED_FEATHER_TEXT, 0xD9F, COMUSIC_B_RED_FEATHER_COLLECTED, 0xF, 4.0f);
|
||||
}
|
||||
@@ -114,7 +114,7 @@ void chCollectible_collectRedFeather(ActorProp *arg0){
|
||||
void chCollectible_collectGoldFeather(ActorProp *arg0){
|
||||
Actor *actPtr = NULL;
|
||||
fxSparkle_goldFeather(&arg0->x);
|
||||
if(arg0->unk8_0)
|
||||
if(arg0->is_actor)
|
||||
actPtr = marker_getActor(arg0->marker);
|
||||
chCollectible_collectItem(actPtr, FILEPROG_7_GOLD_FEATHER_TEXT, 0xDA0, COMUSIC_14_GOLD_FEATHER_COLLECTED, ITEM_10_GOLD_FEATHER, 6.0f);
|
||||
}
|
||||
|
@@ -57,7 +57,7 @@ void mapSavestate_save(enum map_e map)
|
||||
valPtr = (u32 *) D_8037E650[map];
|
||||
*valPtr = mapSpecificFlags_getAll();
|
||||
iBit = 0x20;
|
||||
func_80308230(1);
|
||||
cubeList_sort(1);
|
||||
func_803083B0(-1);
|
||||
for (reg_s4 = func_803083B0(-2); reg_s4 != (-1); reg_s4 = func_803083B0(-2))
|
||||
{
|
||||
@@ -96,7 +96,7 @@ void mapSavestate_apply(enum map_e map_id) {
|
||||
flag_ptr = reinterpret_cast(u32*, D_8037E650[map_id]);
|
||||
mapSpecificFlags_setAll(*flag_ptr);
|
||||
iBit += 8 * sizeof(u32);
|
||||
func_80308230(1);
|
||||
cubeList_sort(1);
|
||||
func_803083B0(-1);
|
||||
|
||||
while (
|
||||
@@ -105,7 +105,7 @@ void mapSavestate_apply(enum map_e map_id) {
|
||||
) {
|
||||
iBit++;
|
||||
}
|
||||
func_80308230(0);
|
||||
cubeList_sort(0);
|
||||
|
||||
actor_list_ptr = (ActorListSaveState *)D_8037E650[map_id] + (((iBit + (0x80 - 1)) >> 7) * 4);
|
||||
func_8032A09C(D_8037E650[map_id], actor_list_ptr);
|
||||
|
@@ -405,18 +405,18 @@ BKCollisionTri *func_802E76B0(BKCollisionList *collisionList, BKVertexList *vert
|
||||
return result_collision;
|
||||
}
|
||||
|
||||
BKCollisionTri *func_802E805C(BKCollisionList *collision_list, BKVertexList *vtxList, f32 arg2[3], f32 arg3[3], f32 arg4, s32 arg5, s32 arg6, s32 arg7, s32 arg8){
|
||||
BKCollisionTri *func_802E805C(BKCollisionList *collision_list, BKVertexList *vtxList, f32 arg2[3], f32 rotation[3], f32 scale, s32 arg5, s32 arg6, s32 arg7, s32 arg8){
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
int sp34;
|
||||
int i;
|
||||
|
||||
if(!func_802E74A0(arg2, vtxList->global_norm*arg4, arg5, arg6)){
|
||||
if(!func_802E74A0(arg2, vtxList->global_norm*scale, arg5, arg6)){
|
||||
return 0;
|
||||
}
|
||||
else{
|
||||
mlMtxIdent();
|
||||
func_80252CC4(arg2, arg3, arg4, 0);
|
||||
func_80252CC4(arg2, rotation, scale, 0);
|
||||
mlMtx_apply_vec3f(sp44, arg5);
|
||||
mlMtx_apply_vec3f(sp38, arg6);
|
||||
sp34 = func_802E76B0(collision_list, vtxList, sp44, sp38, arg7, arg8);
|
||||
@@ -425,15 +425,15 @@ BKCollisionTri *func_802E805C(BKCollisionList *collision_list, BKVertexList *vtx
|
||||
}
|
||||
else{
|
||||
mlMtxIdent();
|
||||
func_80252C08(arg2, arg3, arg4, NULL);
|
||||
func_80252C08(arg2, rotation, scale, NULL);
|
||||
mlMtx_apply_vec3f(arg6, sp38);
|
||||
|
||||
mlMtxIdent();
|
||||
func_80252C08(NULL, arg3, 1.0f, 0);
|
||||
func_80252C08(NULL, rotation, 1.0f, 0);
|
||||
mlMtx_apply_vec3f(arg7, arg7);
|
||||
|
||||
mlMtxIdent();
|
||||
func_80252C08(arg2, arg3, arg4, 0);
|
||||
func_80252C08(arg2, rotation, scale, 0);
|
||||
|
||||
for(i = 0; i < 3; i++){
|
||||
mlMtx_apply_vec3f(D_8037EAA8[i], D_8037EAA8[i]);
|
||||
|
@@ -518,7 +518,7 @@ static Cube *__code7AF80_getCubeAtPosition(s32 position[3]) {
|
||||
(position[2] - sCubeList.min[2]) * sCubeList.stride[1];
|
||||
}
|
||||
|
||||
Cube *cube_atPosition_s32(s32 position[3]) {
|
||||
Cube *cubeList_GetCubeAtPosition_s32(s32 position[3]) {
|
||||
s32 sp1C[3];
|
||||
s32 i;
|
||||
// Cube *out;
|
||||
@@ -542,13 +542,13 @@ Cube *cube_atPosition_s32(s32 position[3]) {
|
||||
+ diff[2]*sCubeList.stride[1];
|
||||
}
|
||||
|
||||
Cube *cube_atPosition_f32(f32 position[3]){
|
||||
Cube *cubeList_GetCubeAtPosition_f32(f32 position[3]){
|
||||
s32 pos_s32[3];
|
||||
|
||||
pos_s32[0] = (s32)position[0];
|
||||
pos_s32[1] = (s32)position[1];
|
||||
pos_s32[2] = (s32)position[2];
|
||||
return cube_atPosition_s32(pos_s32);
|
||||
return cubeList_GetCubeAtPosition_s32(pos_s32);
|
||||
}
|
||||
|
||||
Cube *func_8030364C(void){
|
||||
@@ -692,7 +692,7 @@ void func_80303C54(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *arg
|
||||
while (*arg4 != -1){
|
||||
phi_s0 = func_803322F0(cube, marker, arg2, arg3, arg4);
|
||||
if (phi_s0 != NULL) {
|
||||
if (phi_s0->unk8_0 && phi_s0->marker->unk58 != NULL) {
|
||||
if (phi_s0->is_actor && phi_s0->marker->unk58 != NULL) {
|
||||
if (phi_s0->marker->unk58(phi_s0->marker, marker) == 0) {
|
||||
phi_s0 = NULL;
|
||||
}
|
||||
@@ -2126,19 +2126,19 @@ u32 func_80307EA8(s32 arg0, s32 position[3], s32 *arg2, s32 *arg3) {
|
||||
|
||||
NodeProp *func_803080C8(s32 arg0) {
|
||||
s32 sp3C[3];
|
||||
u32 var_v1;
|
||||
Cube *temp_v0;
|
||||
u32 i_prop;
|
||||
Cube *current_cube;
|
||||
|
||||
for(sp3C[1] = sCubeList.min[1]; sp3C[1] <= sCubeList.max[1]; sp3C[1]++){
|
||||
if(func_80305C30(sp3C[1] - sCubeList.min[1])){
|
||||
for(sp3C[0] = sCubeList.min[0]; sp3C[0] <= sCubeList.max[0]; sp3C[0]++){
|
||||
for(sp3C[2] = sCubeList.min[2]; sp3C[2] <= sCubeList.max[2]; sp3C[2]++){
|
||||
temp_v0 = __code7AF80_getCubeAtPosition(sp3C);
|
||||
if (temp_v0 != NULL) {
|
||||
for(var_v1 = 0; var_v1 < temp_v0->prop1Cnt; var_v1++){
|
||||
if (arg0 == temp_v0->prop1Ptr[var_v1].unk10_31) {
|
||||
D_8036A9DC = temp_v0;
|
||||
return &temp_v0->prop1Ptr[var_v1];
|
||||
current_cube = __code7AF80_getCubeAtPosition(sp3C);
|
||||
if (current_cube != NULL) {
|
||||
for(i_prop = 0; i_prop < current_cube->prop1Cnt; i_prop++){
|
||||
if (arg0 == current_cube->prop1Ptr[i_prop].unk10_31) {
|
||||
D_8036A9DC = current_cube;
|
||||
return ¤t_cube->prop1Ptr[i_prop];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2155,13 +2155,13 @@ Cube *func_80308224(void){
|
||||
return D_8036A9DC;
|
||||
}
|
||||
|
||||
void func_80308230(s32 arg0) {
|
||||
void cubeList_sort(s32 absolute_positon) {
|
||||
Cube *iCube;
|
||||
for(iCube = sCubeList.cubes; iCube < sCubeList.cubes + sCubeList.cubeCnt; iCube++){
|
||||
if (arg0 == 0) {
|
||||
func_8032D158(iCube); //sort cube props (dist from viewport)
|
||||
if (absolute_positon == 0) {
|
||||
cube_sortRelative(iCube); //sort cube props (dist from viewport)
|
||||
} else {
|
||||
func_8032D120(iCube); //sort cube props (dist from origin)
|
||||
cube_sortAbsolute(iCube); //sort cube props (dist from origin)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2171,7 +2171,7 @@ bool func_803082D8(Cube *arg0, s32 *arg1, bool arg2, bool arg3) {
|
||||
bool var_a0;
|
||||
|
||||
var_v0 = arg0->prop2Ptr + *arg1;
|
||||
while ((var_v0->markerFlag == 1) && (*arg1 < arg0->prop2Cnt)) {
|
||||
while ((var_v0->is_actor == 1) && (*arg1 < arg0->prop2Cnt)) {
|
||||
(*arg1)++;
|
||||
var_v0++;
|
||||
}
|
||||
@@ -2435,7 +2435,7 @@ void func_80308D2C(Gfx **gfx, Mtx **mtx, Vtx **vtx) {
|
||||
cube = &sCubeList.cubes[D_80382150[phi_s4]];
|
||||
if (viewport_cube_isInFrustum(cube)) {
|
||||
viewport_getPosition_vec3w(vp_pos);
|
||||
vp_cube_index = cube_atPosition_s32(vp_pos) - sCubeList.cubes;
|
||||
vp_cube_index = cubeList_GetCubeAtPosition_s32(vp_pos) - sCubeList.cubes;
|
||||
for(phi_s0 = 0; (phi_s0 < D_80382150[phi_s4 + 1]) && (vp_cube_index != D_80382150[phi_s0 + 2]); phi_s0++) {
|
||||
}
|
||||
if (phi_s0 < D_80382150[phi_s4 + 1]) {
|
||||
|
@@ -1,224 +0,0 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
extern f32 func_8033A244(f32);
|
||||
|
||||
typedef struct{
|
||||
BKModelBin *unk0;
|
||||
s32 unk4;
|
||||
f32 unk8;
|
||||
}struct_7AF80_0;
|
||||
|
||||
typedef struct{
|
||||
BKSprite *unk0;
|
||||
BKSpriteDisplayData *unk4;
|
||||
s32 unk8;
|
||||
f32 unkC;
|
||||
}struct_7AF80_1;
|
||||
|
||||
BKModelBin *func_8030A428(s32 arg0);
|
||||
|
||||
/* .data */
|
||||
s32 D_8036B800 = 0;
|
||||
|
||||
/* .bss */
|
||||
struct_7AF80_0 *D_80382390; //prop models ???
|
||||
struct_7AF80_1 *D_80382394; //prop_sprites ???
|
||||
|
||||
BKSpriteDisplayData *func_8030A4D4(s32 arg0);
|
||||
|
||||
|
||||
void func_8030A2D0(Gfx **gfx, Mtx **mtx, Vtx **vtx, f32 arg3[3], f32 arg4[3], f32 arg5, s32 arg6, Cube* arg7){
|
||||
BKModelBin * sp2C;
|
||||
|
||||
sp2C = func_8030A428(arg6);
|
||||
func_8033A244(3700.0f);
|
||||
func_8033A28C(1);
|
||||
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
|
||||
func_8033A1FC();
|
||||
modelRender_draw(gfx, mtx, arg3, arg4, arg5, NULL, sp2C);
|
||||
}
|
||||
|
||||
void func_8030A350(Gfx **gfx, Mtx **mtx, Vtx **Vtx, f32 arg3[3], f32 arg4, s32 arg5, Cube *arg6, s32 arg7, s32 arg8, s32 arg9, s32 argA, s32 argB) {
|
||||
f32 sp2C[3];
|
||||
BKSpriteDisplayData *sp28;
|
||||
|
||||
sp28 = func_8030A4D4(arg5);
|
||||
sp2C[0] = arg4;
|
||||
sp2C[1] = arg4;
|
||||
sp2C[2] = arg4;
|
||||
func_80338338(0xFF - (arg7 * 0x10), 0xFF - (arg8 * 0x10), 0xFF - (arg9 * 0x10));
|
||||
if (func_80344C20(sp28) & 0xB00) {
|
||||
func_803382E4(0xB);
|
||||
} else {
|
||||
func_803382E4(0xE);
|
||||
}
|
||||
func_80335D30(gfx);
|
||||
func_80344138(sp28, argB, argA, arg3, sp2C, gfx, mtx);
|
||||
func_8033687C(gfx);
|
||||
}
|
||||
|
||||
BKModelBin *func_8030A428(s32 arg0){
|
||||
if(D_80382390[arg0].unk0 == NULL){
|
||||
D_80382390[arg0].unk0 = assetcache_get(0x2d1 + arg0);
|
||||
}
|
||||
D_80382390[arg0].unk4 = globalTimer_getTime();
|
||||
return D_80382390[arg0].unk0;
|
||||
}
|
||||
|
||||
BKModelBin *func_8030A4B4(s32 arg0){
|
||||
return D_80382390[arg0].unk0;
|
||||
}
|
||||
|
||||
BKSpriteDisplayData *func_8030A4D4(s32 arg0)
|
||||
{
|
||||
|
||||
if (((struct_7AF80_1 *)((s32)D_80382394 + arg0*sizeof(struct_7AF80_1)))->unk0 == 0){
|
||||
((struct_7AF80_1 *)((s32)D_80382394 + arg0*sizeof(struct_7AF80_1)))->unk0 = func_8033B6C4(arg0 + 0x572, &((struct_7AF80_1 *)((s32)D_80382394 + arg0*sizeof(struct_7AF80_1)))->unk4);
|
||||
}
|
||||
D_80382394[arg0].unk8 = globalTimer_getTime();
|
||||
return D_80382394[arg0].unk4;
|
||||
}
|
||||
|
||||
BKSprite *func_8030A55C(s32 arg0){
|
||||
func_8030A4D4(arg0);
|
||||
return D_80382394[arg0].unk0;
|
||||
}
|
||||
|
||||
f32 func_8030A590(Prop *arg0){
|
||||
if(arg0->unk8_1){
|
||||
ModelProp* ModelProp = &arg0->modelProp;
|
||||
return D_80382390[arg0->spriteProp.unk0_31].unk8;
|
||||
}
|
||||
else{//L8030A65C
|
||||
SpriteProp *spriteProp = &arg0->spriteProp;
|
||||
return D_80382394[spriteProp->unk0_31].unkC;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8030A5EC(Prop *arg0, f32 arg1){
|
||||
if(arg0->unk8_1){
|
||||
ModelProp* ModelProp = &arg0->modelProp;
|
||||
D_80382390[arg0->spriteProp.unk0_31].unk8 = (f32)ModelProp->unkA*arg1/100.0f;
|
||||
}
|
||||
else{//L8030A65C
|
||||
SpriteProp *spriteProp = &arg0->spriteProp;
|
||||
D_80382394[spriteProp->unk0_31].unkC = (f32)spriteProp->unk0_9*arg1/100.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8030A6B0(void){//clear
|
||||
struct_7AF80_0* iPtr;
|
||||
struct_7AF80_1* jPtr;
|
||||
|
||||
for(iPtr = D_80382390; iPtr < &D_80382390[0x2A2]; iPtr++){
|
||||
if(iPtr->unk0){
|
||||
assetcache_release(iPtr->unk0);
|
||||
}
|
||||
}
|
||||
for(jPtr = D_80382394; jPtr < &D_80382394[0x168]; jPtr++){
|
||||
if(jPtr->unk0){
|
||||
func_8033B338(&jPtr->unk0, &jPtr->unk4);
|
||||
}
|
||||
}
|
||||
free(D_80382390);
|
||||
D_80382390 = NULL;
|
||||
free(D_80382394);
|
||||
D_80382394 = NULL;
|
||||
}
|
||||
|
||||
void func_8030A78C(void){//init
|
||||
struct_7AF80_0* iPtr;
|
||||
struct_7AF80_1* jPtr;
|
||||
|
||||
D_80382390 = (struct_7AF80_0 *)malloc(0x2A2 * sizeof(struct_7AF80_0));
|
||||
D_80382394 = (struct_7AF80_1 *)malloc(0x168 * sizeof(struct_7AF80_1));
|
||||
D_8036B800 = 0;
|
||||
for(iPtr = D_80382390; iPtr < &D_80382390[0x2A2]; iPtr++){
|
||||
iPtr->unk0 = NULL;
|
||||
iPtr->unk8 = 0.0f;
|
||||
}
|
||||
for(jPtr = D_80382394; jPtr < &D_80382394[0x168]; jPtr++){
|
||||
jPtr->unk0 = NULL;
|
||||
jPtr->unkC = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void func_8030A850(s32 arg0) {
|
||||
static s32 D_8036B804 = 0;
|
||||
static s32 D_8036B808 = 0;
|
||||
s32 temp_s3;
|
||||
s32 var_s0;
|
||||
struct_7AF80_0 *sp3C;
|
||||
struct_7AF80_1 *temp_a0_2;
|
||||
|
||||
temp_s3 = globalTimer_getTime() - func_80255B08(arg0);
|
||||
for(var_s0 = 0; (D_80382390 != NULL) && (var_s0 < ((arg0 == 1) ? 0x28 : 0x2A1)); var_s0++, D_8036B804 = (D_8036B804 >= 0x2A1)? 0: D_8036B804 + 1){
|
||||
sp3C = (struct_7AF80_0*)((u32)D_80382390 + sizeof(struct_7AF80_0)*D_8036B804);
|
||||
if ((sp3C->unk0 != 0) && ((sp3C->unk4 < temp_s3) || (arg0 == 3))){
|
||||
assetcache_release(sp3C->unk0);
|
||||
sp3C->unk0 = 0;
|
||||
if( (arg0 != 1) && (func_80254BC4(1))){
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(var_s0 = 0; (D_80382394 != NULL) && (var_s0 < ((arg0 == 1) ? 0x28 : 0x167)); var_s0++, D_8036B808 = (D_8036B808 >= 0x167)? 0: D_8036B808 + 1){
|
||||
temp_a0_2 = (struct_7AF80_1*)((u32)D_80382394 + sizeof(struct_7AF80_1)*D_8036B808);
|
||||
if ((temp_a0_2->unk0 != 0) && ((temp_a0_2->unk8 < temp_s3) || (arg0 == 3))){
|
||||
func_8033B338(&temp_a0_2->unk0, &temp_a0_2->unk4);
|
||||
if( (arg0 != 1) && (func_80254BC4(1))){
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8030AA6C(void) {
|
||||
BKModelBin *temp_a0;
|
||||
s32 phi_s2;
|
||||
|
||||
D_80382394 = (struct_7AF80_1 *) defrag(D_80382394);
|
||||
D_80382390 = (struct_7AF80_0 *) defrag(D_80382390);
|
||||
if (!func_802559A0() && !func_80255AE4() && D_80382390 != NULL) {
|
||||
for(phi_s2 = 0x14; (phi_s2 != 0) && !func_80255AE4(); phi_s2--){
|
||||
D_8036B800++;
|
||||
if (D_8036B800 >= 0x2A2) {
|
||||
D_8036B800 = 0;
|
||||
}
|
||||
temp_a0 = D_80382390[D_8036B800].unk0;
|
||||
if (temp_a0 != NULL && (func_802546E4(temp_a0) < 0x2AF8)) {
|
||||
D_80382390[D_8036B800].unk0 = func_80255888(D_80382390[D_8036B800].unk0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8030ABA4(void) {
|
||||
s32 temp_lo;
|
||||
s32 temp_t7;
|
||||
struct_7AF80_1 *phi_s0;
|
||||
s32 phi_s2;
|
||||
struct_7AF80_0 *phi_s0_2;
|
||||
|
||||
for(phi_s0 = D_80382394; phi_s0 < D_80382394 + 360; phi_s0++){
|
||||
if (phi_s0->unk0 != NULL) {
|
||||
temp_t7 = phi_s0 - D_80382394;
|
||||
func_8033B338(&phi_s0->unk0, &phi_s0->unk4);
|
||||
phi_s2 = temp_t7 *sizeof(struct_7AF80_1);
|
||||
*(BKSprite **)((s32)D_80382394 + phi_s2) = func_8033B6C4(temp_t7 + 0x572, (BKSpriteDisplayData **)((s32)D_80382394 + phi_s2 + 4));
|
||||
}
|
||||
}
|
||||
|
||||
for(phi_s0_2 = D_80382390; phi_s0_2 < D_80382390 + 674; phi_s0_2++){
|
||||
if(phi_s0_2->unk0 != NULL){
|
||||
temp_lo = phi_s0_2 - D_80382390;
|
||||
assetcache_release(phi_s0_2->unk0);
|
||||
D_80382390[temp_lo].unk0 = (BKModelBin *) assetcache_get(temp_lo + 0x2D1);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -38,7 +38,7 @@ typedef struct {
|
||||
} QuizQuestionBin;
|
||||
|
||||
typedef struct{
|
||||
s32 answer_options[4][4]; // first dimension = zoombox index, second dimension = value (0-3), third dimension = answer
|
||||
char *answer_options[4][4]; // first dimension = zoombox index, second dimension = value (0-3), third dimension = answer
|
||||
} QuizQuestionStruct;
|
||||
|
||||
typedef struct {
|
||||
@@ -289,7 +289,7 @@ static bool __gcquiz_func_803192A4(enum ff_question_type_e q_type, s32 q_index,
|
||||
sD_803830E0->unkC = (QuizQuestionBin *) assetcache_get(quiz_question_index);
|
||||
}
|
||||
|
||||
char_iter = sD_803830E0->unkC;
|
||||
char_iter = (char *)sD_803830E0->unkC;
|
||||
quiz_question_bin_unk0 = *(char_iter++); // NEXT
|
||||
quiz_question_bin_unk1 = *(char_iter++); // NEXT
|
||||
quiz_question_bin_unk2 = *(char_iter++); // NEXT
|
||||
@@ -312,7 +312,7 @@ static bool __gcquiz_func_803192A4(enum ff_question_type_e q_type, s32 q_index,
|
||||
char_iter += 2*code94620_func_8031B5B0(); // SKIP
|
||||
phi_v1 = *(char_iter++); // NEXT
|
||||
phi_v1 += (*(char_iter++) << 8);
|
||||
char_iter = (s32)sD_803830E0->unkC + phi_v1;
|
||||
char_iter = (char *)((s32)sD_803830E0->unkC + phi_v1);
|
||||
str_cnt = *(char_iter++); // NEXT char_iter = 5
|
||||
|
||||
for(phi_a1 = 0; phi_a1 < 4; phi_a1++){
|
||||
@@ -404,10 +404,10 @@ static void __gcquiz_advanceStateTo(enum gcquiz_state state){
|
||||
gczoombox_func_803184C8(sD_803830E0->zoomboxes[i], (f32)sD_803830E0->unk17, 5, 2, __gcquiz_animation_duration(i), __gcquiz_isZero(i), 0);
|
||||
}
|
||||
}
|
||||
timedFunc_set_1(0.0f, __gcquiz_advanceStateTo, GCQUIZ_STATE_3_UNKNOWN);
|
||||
timedFunc_set_1(0.0f, __gcquiz_openZoomboxAndMaximizeWithStringsAt, 1);
|
||||
timedFunc_set_1(0.2f, __gcquiz_openZoomboxAndMaximizeWithStringsAt, 2);
|
||||
timedFunc_set_1(0.4f, __gcquiz_openZoomboxAndMaximizeWithStringsAt, 3);
|
||||
timedFunc_set_1(0.0f, (GenFunction_1)__gcquiz_advanceStateTo, GCQUIZ_STATE_3_UNKNOWN);
|
||||
timedFunc_set_1(0.0f, (GenFunction_1)__gcquiz_openZoomboxAndMaximizeWithStringsAt, 1);
|
||||
timedFunc_set_1(0.2f, (GenFunction_1)__gcquiz_openZoomboxAndMaximizeWithStringsAt, 2);
|
||||
timedFunc_set_1(0.4f, (GenFunction_1)__gcquiz_openZoomboxAndMaximizeWithStringsAt, 3);
|
||||
break;
|
||||
|
||||
case GCQUIZ_STATE_3_UNKNOWN:
|
||||
@@ -445,7 +445,7 @@ static void __gcquiz_advanceStateTo(enum gcquiz_state state){
|
||||
}
|
||||
}
|
||||
}
|
||||
timedFunc_set_1(1.0f, __gcquiz_advanceStateTo, GCQUIZ_STATE_8_UNKNOWN);
|
||||
timedFunc_set_1(1.0f, (GenFunction_1)__gcquiz_advanceStateTo, GCQUIZ_STATE_8_UNKNOWN);
|
||||
item_set(ITEM_6_HOURGLASS, FALSE);
|
||||
break;
|
||||
|
||||
@@ -455,7 +455,7 @@ static void __gcquiz_advanceStateTo(enum gcquiz_state state){
|
||||
} else {
|
||||
comusic_playTrack(COMUSIC_2B_DING_B);
|
||||
}
|
||||
timedFunc_set_1(1.0f, __gcquiz_advanceStateTo, GCQUIZ_STATE_9_UNKNOWN);
|
||||
timedFunc_set_1(1.0f, (GenFunction_1)__gcquiz_advanceStateTo, GCQUIZ_STATE_9_UNKNOWN);
|
||||
break;
|
||||
|
||||
case GCQUIZ_STATE_9_UNKNOWN:
|
||||
|
@@ -1055,7 +1055,7 @@ static void __actor_free(ActorMarker *arg0, Actor *arg1){
|
||||
marker_free(arg0);
|
||||
}
|
||||
|
||||
Actor *actor_spawnWithYaw_s32(enum actor_e id, s32 (* pos)[3], s32 rot){
|
||||
Actor *actor_spawnWithYaw_s32(enum actor_e id, s32 pos[3], s32 rot){
|
||||
return __actor_spawnWithYaw_s32(id, pos, rot);
|
||||
}
|
||||
|
||||
@@ -1095,12 +1095,12 @@ Actor *func_80328230(enum actor_e id, f32 pos[3], f32 rot[3]){
|
||||
return actor;
|
||||
}
|
||||
|
||||
Actor *actor_spawnWithYaw_s16(enum actor_e id, s16 (* pos)[3], s32 yaw){
|
||||
Actor *actor_spawnWithYaw_s16(enum actor_e id, s16 pos[3], s32 yaw){
|
||||
s32 sp24[3];
|
||||
int i;
|
||||
|
||||
for(i = 0; i< 3; i++){
|
||||
sp24[i] = (*pos)[i];
|
||||
sp24[i] = pos[i];
|
||||
}
|
||||
|
||||
return __actor_spawnWithYaw_s32(id, &sp24, yaw);
|
||||
|
@@ -349,7 +349,7 @@ bool func_8032C850(Actor *actor, f32 arg1[3], s32 arg2, s32 arg3, bool nonactor)
|
||||
func_80320ED8(actor->marker, temp_f0 / 2, 2);
|
||||
actor->marker->collidable = stored_collidability;
|
||||
for (var_v1 = func_8032F528(); var_v1 != NULL; var_v1 = func_8032F528()) {
|
||||
if (nonactor || (var_v1->markerFlag && (var_v1->actorProp.marker->id == actor->marker->id))) {
|
||||
if (nonactor || (var_v1->is_actor && (var_v1->actorProp.marker->id == actor->marker->id))) {
|
||||
D_803833D0 = var_v1;
|
||||
actor->position[0] = (f32) arg1[0];
|
||||
actor->position[1] = (f32) arg1[1];
|
||||
|
@@ -8,6 +8,10 @@
|
||||
|
||||
#define AssetCacheSize 0x3D5
|
||||
|
||||
extern Cube *cubeList_GetCubeAtPosition_s32(s32 position[3]);
|
||||
extern Cube *func_8030364C(void);
|
||||
extern NodeProp *func_803080C8(s32);
|
||||
extern Cube *func_80308224(void);
|
||||
extern int func_802E74A0(f32[3], f32, s32, s32);
|
||||
extern s32 func_802E9118(BKCollisionList * collision_list, BKVertexList *vtx_list, f32 arg2[3], s32 arg3, f32 arg4, f32 arg5[3], f32 arg6[3], f32 arg7, f32 arg8[3], s32 arg9, s32 argA);
|
||||
extern f32 vtxList_getGlobalNorm(BKVertexList *);
|
||||
@@ -17,9 +21,11 @@ extern void func_80340200(s32, f32[3], f32[3], f32, s32, s32, BKVertexList *, s3
|
||||
extern s32 func_802E9DD8(BKCollisionList *collisionList, BKVertexList *vtxList, f32 arg2[3], f32 *arg3, f32 arg4, f32 arg5[3], f32 arg6, f32 arg7[3], s32 arg8);
|
||||
extern void *func_802EBAE0(UNK_TYPE(s32), f32 position[3], f32 rotation[3], f32 scale, UNK_TYPE(s32), UNK_TYPE(s32), UNK_TYPE(s32), f32, UNK_TYPE(s32));
|
||||
extern BKCollisionTri *func_802E805C(BKCollisionList *, BKVertexList *, f32[3], f32[3], f32, f32[3], f32[3], f32[3], u32);
|
||||
extern BKCollisionList *model_getCollisionList(BKModelBin *);
|
||||
|
||||
extern f32 func_8030A590(void);
|
||||
extern void func_8030A5EC(Prop *, f32);
|
||||
|
||||
extern f32 propModelList_getScale(Prop *);
|
||||
extern void propModelList_setScale(Prop *, f32);
|
||||
|
||||
Prop *func_80303F7C(s32, f32, s32, s32);
|
||||
s32 func_803058C0(f32);
|
||||
@@ -27,12 +33,12 @@ void func_80305CD8(s32, s32);
|
||||
void code_A5BC0_initCubePropActorProp(Cube*);
|
||||
ActorMarker * func_80332A60(void);
|
||||
extern void func_8032F3D4(s32 [3], ActorMarker *, s32);
|
||||
extern void func_8030A350(Gfx **, Mtx **, Vtx **, f32[3], f32, s32, Cube*,s32 ,s32, s32, s32, s32);
|
||||
extern void func_8030A2D0(Gfx **, Mtx **, Vtx **, f32[3], f32[3], f32, s32, Cube*);
|
||||
extern void propModelList_drawSprite(Gfx **, Mtx **, Vtx **, f32[3], f32, s32, Cube*,s32 ,s32, s32, s32, s32);
|
||||
extern void propModelList_drawModel(Gfx **, Mtx **, Vtx **, f32[3], f32[3], f32, s32, Cube*);
|
||||
s32 func_8032D9C0(Cube*, Prop*);
|
||||
void func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3);
|
||||
void func_80332B2C(ActorMarker * arg0);
|
||||
BKSprite *func_8030A55C(s32 arg0);
|
||||
BKSprite *propModelList_getSprite(s32 arg0);
|
||||
|
||||
typedef union{
|
||||
struct{
|
||||
@@ -74,7 +80,7 @@ s32 D_803833F0[3];
|
||||
s32 D_803833FC;
|
||||
s32 D_80383400;
|
||||
Cube *D_80383404;
|
||||
s32 D_80383408;
|
||||
Prop *D_80383408;
|
||||
s32 D_8038340C;
|
||||
|
||||
//BREAK???
|
||||
@@ -92,7 +98,7 @@ s32 D_8038355C;
|
||||
|
||||
/* .code */
|
||||
// This function sorts a cube's props based on distance
|
||||
void func_8032CB50(Cube *cube, bool global) {
|
||||
static void __cube_sort(Cube *cube, bool global) {
|
||||
s32 ref_position[3];
|
||||
Prop *var_v1;
|
||||
Prop *start_prop;
|
||||
@@ -178,9 +184,8 @@ void func_8032CD60(Prop *prop) {
|
||||
bool var_t5;
|
||||
s32 var_v1;
|
||||
|
||||
// if(prop->markerFlag){
|
||||
var_v0 = ((u32)(((u16*)prop)[5]) & 1) ? func_80330F50(prop->actorProp.marker)
|
||||
: func_8030A55C((u32)(((u16*)prop)[0]) >> 4);
|
||||
: propModelList_getSprite((u32)(((u16*)prop)[0]) >> 4);
|
||||
if ((var_v0 != NULL) && ((var_v0->unkC.bit27 != 0))) {
|
||||
sp48 = var_v0->unkC.bit31;
|
||||
sp44 = var_v0->unkC.bit27;
|
||||
@@ -246,24 +251,24 @@ void func_8032CD60(Prop *prop) {
|
||||
|
||||
var_v1 += (sp34) ? sp40 : -sp40;
|
||||
var_v1 = (var_v1 < 0) ? var_v1 +sp38 : var_v1 % sp38;
|
||||
prop->spriteProp.unk8_15 = var_v1;
|
||||
prop->spriteProp.frame = var_v1;
|
||||
if (((u32)(((u16*)prop)[5]) & 1)) {
|
||||
prop->spriteProp.unk8_5 = sp3C;
|
||||
}
|
||||
else{
|
||||
prop->spriteProp.unk0_1 = sp3C;
|
||||
prop->spriteProp.mirrored = sp3C;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_8032D120(Cube *cube){
|
||||
void cube_sortAbsolute(Cube *cube){
|
||||
if(cube->prop2Cnt >= 2)
|
||||
func_8032CB50(cube, 1);
|
||||
__cube_sort(cube, 1);
|
||||
}
|
||||
|
||||
void func_8032D158(Cube *cube){
|
||||
void cube_sortRelative(Cube *cube){
|
||||
if(cube->prop2Cnt >= 2)
|
||||
func_8032CB50(cube, 0);
|
||||
__cube_sort(cube, 0);
|
||||
}
|
||||
|
||||
static void __marker_draw(ActorMarker *this, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
@@ -319,33 +324,33 @@ void func_8032D3A8(void){
|
||||
void func_8032D3D8(Gfx **gdl, Mtx **mptr, Vtx **vptr){
|
||||
int i;
|
||||
for(i = 0; i < vector_size(D_80383550); i++){
|
||||
__marker_draw(*(u32*) vector_at(D_80383550, i), gdl, mptr, vptr);
|
||||
__marker_draw(*(ActorMarker **) vector_at(D_80383550, i), gdl, mptr, vptr);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8032D474(Gfx **gdl, Mtx **mptr, Vtx **vptr){
|
||||
int i;
|
||||
for(i = 0; i < vector_size(D_80383554); i++){
|
||||
__marker_draw(*(u32*) vector_at(D_80383554, i), gdl, mptr, vptr);
|
||||
__marker_draw(*(ActorMarker **) vector_at(D_80383554, i), gdl, mptr, vptr);
|
||||
}
|
||||
}
|
||||
|
||||
void func_8032D510(Cube *cube, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
Prop *iProp;
|
||||
int i;
|
||||
f32 sp94[3];
|
||||
f32 sp88[3];
|
||||
f32 position[3];
|
||||
f32 rotation[3];
|
||||
tmp_bitfield tmp_v0;
|
||||
int iOffset;
|
||||
ActorMarker **markerPtr;
|
||||
|
||||
if(cube->prop2Cnt == 0 ) return;
|
||||
|
||||
func_8032CB50(cube, 0);
|
||||
__cube_sort(cube, 0);
|
||||
iOffset = 0;
|
||||
for(i = 0; i < cube->prop2Cnt; i++){//L8032D5A0
|
||||
iOffset = i * 0xC;
|
||||
iProp = ((s32)cube->prop2Ptr + iOffset);
|
||||
iProp = (Prop *)((s32)cube->prop2Ptr + iOffset);
|
||||
tmp_v0.word = *(u32 *)((s32)iProp + 0x8);
|
||||
if(!tmp_v0.unk4){
|
||||
|
||||
@@ -368,23 +373,23 @@ void func_8032D510(Cube *cube, Gfx **gfx, Mtx **mtx, Vtx **vtx){
|
||||
}//L8032D62C
|
||||
}
|
||||
else{//L8032D640
|
||||
sp94[0] = (f32)iProp->modelProp.unk4[0];
|
||||
sp94[1] = (f32)iProp->modelProp.unk4[1];
|
||||
sp94[2] = (f32)iProp->modelProp.unk4[2];
|
||||
if(iProp->unk8_1){
|
||||
sp88[0] = 0.0f;
|
||||
sp88[1] = (f32)((s32)iProp->modelProp.unk0_15*2);
|
||||
sp88[2] = (f32)((s32)iProp->modelProp.unk0_7*2);
|
||||
func_8030A2D0(gfx, mtx, vtx,
|
||||
sp94, sp88, (f32)iProp->modelProp.unkA/100.0,
|
||||
iProp->modelProp.unk0_31, cube
|
||||
position[0] = (f32)iProp->modelProp.position[0];
|
||||
position[1] = (f32)iProp->modelProp.position[1];
|
||||
position[2] = (f32)iProp->modelProp.position[2];
|
||||
if(iProp->is_3d){
|
||||
rotation[0] = 0.0f;
|
||||
rotation[1] = (f32)((s32)iProp->modelProp.yaw*2);
|
||||
rotation[2] = (f32)((s32)iProp->modelProp.roll*2);
|
||||
propModelList_drawModel(gfx, mtx, vtx,
|
||||
position, rotation, (f32)iProp->modelProp.scale/100.0,
|
||||
iProp->modelProp.model_index, cube
|
||||
);
|
||||
}
|
||||
else{//L8032D72C
|
||||
func_8030A350( gfx, mtx, vtx,
|
||||
sp94, (f32)iProp->spriteProp.unk0_9/100.0, iProp->spriteProp.unk0_31, cube,
|
||||
iProp->spriteProp.unk0_18, iProp->spriteProp.unk0_15, iProp->spriteProp.unk0_12,
|
||||
iProp->spriteProp.unk0_1, iProp->spriteProp.unk8_15
|
||||
propModelList_drawSprite( gfx, mtx, vtx,
|
||||
position, (f32)iProp->spriteProp.scale/100.0, iProp->spriteProp.sprite_index, cube,
|
||||
iProp->spriteProp.r, iProp->spriteProp.b, iProp->spriteProp.g,
|
||||
iProp->spriteProp.mirrored, iProp->spriteProp.frame
|
||||
);
|
||||
}
|
||||
}//L8032D7C4
|
||||
@@ -404,7 +409,7 @@ Prop *__codeA5BC0_initProp2Ptr(Cube *cube) {
|
||||
cube->prop2Ptr = malloc(sizeof(Prop));
|
||||
}
|
||||
sp1C = &cube->prop2Ptr[cube->prop2Cnt-1];
|
||||
sp1C->markerFlag = FALSE;
|
||||
sp1C->is_actor = FALSE;
|
||||
code_A5BC0_initCubePropActorProp(cube);
|
||||
return sp1C;
|
||||
}
|
||||
@@ -427,7 +432,7 @@ s32 func_8032D9C0(Cube *cube, Prop* prop){
|
||||
|
||||
sp24 = 0;
|
||||
if(cube->prop2Cnt != 0){
|
||||
sp24 = prop->unk8_1;
|
||||
sp24 = prop->is_3d;
|
||||
if(func_80305D14()){
|
||||
func_80305CD8(func_803058C0(prop->unk4[1]), -1);
|
||||
}
|
||||
@@ -489,11 +494,11 @@ ActorMarker *func_8032DCAC(void){
|
||||
SpriteProp *func_8032DCB8(Cube *cube) {
|
||||
SpriteProp *sp1C;
|
||||
|
||||
sp1C = __codeA5BC0_initProp2Ptr(cube);
|
||||
sp1C->unk8_0 = FALSE;
|
||||
sp1C->unk8_1 = FALSE;
|
||||
sp1C->unk8_15 = 0;
|
||||
sp1C->unk0_1 = 0;
|
||||
sp1C = (SpriteProp *)__codeA5BC0_initProp2Ptr(cube);
|
||||
sp1C->is_actor = FALSE;
|
||||
sp1C->is_3d = FALSE;
|
||||
sp1C->frame = 0;
|
||||
sp1C->mirrored = 0;
|
||||
sp1C->unk8_10 = randf() * 32.0f;
|
||||
sp1C->unk8_3 = FALSE;
|
||||
sp1C->unk8_2 = FALSE;
|
||||
@@ -501,21 +506,22 @@ SpriteProp *func_8032DCB8(Cube *cube) {
|
||||
return sp1C;
|
||||
}
|
||||
|
||||
void func_8032DDD8(Cube *cube) {
|
||||
ModelProp * func_8032DDD8(Cube *cube) {
|
||||
Prop *temp_v0;
|
||||
|
||||
temp_v0 = __codeA5BC0_initProp2Ptr(cube);
|
||||
temp_v0->markerFlag = FALSE;
|
||||
temp_v0->unk8_1 = TRUE;
|
||||
temp_v0->is_actor = FALSE;
|
||||
temp_v0->is_3d = TRUE;
|
||||
temp_v0->unk8_5 = FALSE;
|
||||
temp_v0->unk8_3 = FALSE;
|
||||
temp_v0->unk8_2 = FALSE;
|
||||
temp_v0->unk8_4 = TRUE;
|
||||
return (ModelProp *)temp_v0;
|
||||
}
|
||||
|
||||
|
||||
void func_8032DE2C(ModelProp *model_prop, enum asset_e sprite_id){
|
||||
model_prop->unk0_31 = sprite_id - 0x2d1;
|
||||
model_prop->model_index = sprite_id - 0x2d1;
|
||||
}
|
||||
|
||||
void func_8032DE48(ModelProp *model_prop, enum asset_e *model_id_ptr){\
|
||||
@@ -523,37 +529,37 @@ void func_8032DE48(ModelProp *model_prop, enum asset_e *model_id_ptr){\
|
||||
}
|
||||
|
||||
void func_8032DE5C(SpriteProp *sprite_prop, enum asset_e sprite_id){
|
||||
sprite_prop->unk0_31 = sprite_id - 0x572;
|
||||
sprite_prop->sprite_index = sprite_id - 0x572;
|
||||
}
|
||||
|
||||
void func_8032DE78(SpriteProp *sprite_prop, enum asset_e *sprite_id_ptr){
|
||||
*sprite_id_ptr = sprite_prop->unk0_31 + 0x572;
|
||||
*sprite_id_ptr = sprite_prop->sprite_index + 0x572;
|
||||
}
|
||||
|
||||
void func_8032DE8C(SpriteProp *sprite_prop, s32 *arg1){
|
||||
*arg1 = sprite_prop->unk0_9;
|
||||
*arg1 = sprite_prop->scale;
|
||||
}
|
||||
|
||||
void func_8032DEA0(SpriteProp *sprite_prop, s32 *arg1, s32 *arg2, s32 *arg3){
|
||||
*arg1 = sprite_prop->unk0_18;
|
||||
*arg2 = sprite_prop->unk0_15;
|
||||
*arg3 = sprite_prop->unk0_12;
|
||||
void func_8032DEA0(SpriteProp *sprite_prop, s32 *r, s32 *b, s32 *g){
|
||||
*r = sprite_prop->r;
|
||||
*b = sprite_prop->b;
|
||||
*g = sprite_prop->g;
|
||||
}
|
||||
|
||||
void func_8032DECC(SpriteProp *sprite_prop, s32 *arg1){
|
||||
*arg1 = ((*(u32*)sprite_prop) << 0x1e) >> 0x1f;//sprite_prop->unk0_0;
|
||||
*arg1 = sprite_prop->mirrored;
|
||||
}
|
||||
|
||||
void func_8032DEE0(SpriteProp *sprite_prop, s32 arg1){
|
||||
sprite_prop->unk0_9 = arg1;
|
||||
sprite_prop->scale = arg1;
|
||||
}
|
||||
|
||||
void func_8032DEFC(ModelProp *prop_prop, s32 arg1){
|
||||
prop_prop->unkA = arg1;
|
||||
prop_prop->scale = arg1;
|
||||
}
|
||||
|
||||
void func_8032DF04(ModelProp *prop_prop, s32 *arg1){
|
||||
*arg1 = prop_prop->unkA;
|
||||
*arg1 = prop_prop->scale;
|
||||
}
|
||||
|
||||
void func_8032DF10(SpriteProp *sprite_prop, bool *arg1){
|
||||
@@ -561,23 +567,23 @@ void func_8032DF10(SpriteProp *sprite_prop, bool *arg1){
|
||||
}
|
||||
|
||||
void func_8032DF24(SpriteProp *sprite_prop, bool arg1){
|
||||
sprite_prop->unk0_1 = arg1;
|
||||
sprite_prop->mirrored = arg1;
|
||||
}
|
||||
|
||||
void func_8032DF40(ModelProp *prop_prop, s32 arg1, s32 arg2){
|
||||
prop_prop->unk0_15 = arg1;
|
||||
prop_prop->unk0_7 = arg2;
|
||||
prop_prop->yaw = arg1;
|
||||
prop_prop->roll = arg2;
|
||||
}
|
||||
|
||||
void func_8032DF4C(ModelProp *prop_prop, s32 *arg1, s32 *arg2){
|
||||
*arg1 = prop_prop->unk0_15;
|
||||
*arg2 = prop_prop->unk0_7;
|
||||
*arg1 = prop_prop->yaw;
|
||||
*arg2 = prop_prop->roll;
|
||||
}
|
||||
|
||||
void func_8032DF60(SpriteProp *sprite_prop, s32 arg1, s32 arg2, s32 arg3){
|
||||
sprite_prop->unk0_18 = arg1;
|
||||
sprite_prop->unk0_15 = arg2;
|
||||
sprite_prop->unk0_12 = arg3;
|
||||
void func_8032DF60(SpriteProp *sprite_prop, s32 r, s32 b, s32 g){
|
||||
sprite_prop->r = r;
|
||||
sprite_prop->b = b;
|
||||
sprite_prop->g = g;
|
||||
}
|
||||
|
||||
void func_8032DFA0(SpriteProp *sprite_prop, bool arg1){
|
||||
@@ -624,7 +630,7 @@ void cube_free(Cube *cube){
|
||||
|
||||
if(cube->prop2Ptr){
|
||||
for(iProp = cube->prop2Ptr; iProp < cube->prop2Ptr +cube->prop2Cnt; iProp++){
|
||||
if(iProp->markerFlag){
|
||||
if(iProp->is_actor){
|
||||
func_80332B2C(iProp->actorProp.marker);
|
||||
}
|
||||
}
|
||||
@@ -881,10 +887,10 @@ void code7AF80_initCubeFromFile(File *file_ptr, Cube *cube) {
|
||||
|
||||
} else if (file_getByte_ifExpected(file_ptr, 6, &cube1_count)) {
|
||||
__codeA5BC0_freeCube1Pointer(cube, cube1_count);
|
||||
cube->prop1Ptr = (OtherNode*) malloc(cube1_count * sizeof(OtherNode));
|
||||
node_prop_ptr = (OtherNode*) malloc(cube1_count * sizeof(OtherNode));
|
||||
cube->prop1Ptr = (NodeProp*) malloc(cube1_count * sizeof(OtherNode));
|
||||
node_prop_ptr = (NodeProp*) malloc(cube1_count * sizeof(OtherNode));
|
||||
file_getNBytes_ifExpected(file_ptr, 7, node_prop_ptr, cube->prop1Cnt * sizeof(OtherNode));
|
||||
for(other_prop_ptr = node_prop_ptr; other_prop_ptr < (OtherNode*)&node_prop_ptr[cube1_count]; other_prop_ptr++){
|
||||
for(other_prop_ptr = (OtherNode *)node_prop_ptr; other_prop_ptr < (OtherNode*)&node_prop_ptr[cube1_count]; other_prop_ptr++){
|
||||
if(other_prop_ptr->unk4_0 && !other_prop_ptr->unkC_0){
|
||||
other_prop_ptr->unk4_17 = 0;
|
||||
other_prop_ptr->unk10_4 = 0;
|
||||
@@ -907,12 +913,12 @@ void code7AF80_initCubeFromFile(File *file_ptr, Cube *cube) {
|
||||
file_getNBytes_ifExpected(file_ptr, 9, cube->prop2Ptr, cube->prop2Cnt * sizeof(Prop));
|
||||
for(var_v1_2 = cube->prop2Ptr; var_v1_2 < cube->prop2Ptr + sp47; var_v1_2++){
|
||||
var_v1_2->unk8_4 = 1;
|
||||
if (var_v1_2->unk8_1) {
|
||||
if (var_v1_2->is_3d) {
|
||||
var_v1_2->unk8_5 = 0;
|
||||
}
|
||||
if (sp34) {
|
||||
if (!(var_v1_2->markerFlag) && !(var_v1_2->unk8_1)){
|
||||
temp_v0_5 = var_v1_2->spriteProp.unk0_31 + 0x572;
|
||||
if (!(var_v1_2->is_actor) && !(var_v1_2->is_3d)){
|
||||
temp_v0_5 = var_v1_2->spriteProp.sprite_index + 0x572;
|
||||
if((temp_v0_5 == 0x580) || (temp_v0_5 == 0x6D1) || (temp_v0_5 == 0x6D6) || (temp_v0_5 == 0x6D7)){
|
||||
var_v1_2->unk8_4 = 0;
|
||||
}
|
||||
@@ -949,7 +955,7 @@ void func_8032EE2C(s32 arg0[3], s32 arg1, s32 arg2) {
|
||||
D_80383400 = arg1;
|
||||
D_803833FC = arg2 * arg2;
|
||||
D_80383404 = 0;
|
||||
D_80383408 = 0;
|
||||
D_80383408 = NULL;
|
||||
D_8038340C = 0;
|
||||
}
|
||||
|
||||
@@ -963,9 +969,9 @@ void func_8032EE80(Cube *cube) {
|
||||
if ((cube->prop2Cnt != 0) && ((D_80383400 == 1) || (D_80383400 == 2))) {
|
||||
var_a1 = cube->prop2Ptr;
|
||||
for(var_t0 = 0; var_t0 < cube->prop2Cnt; var_t0++, var_a1++){
|
||||
if (!var_a1->markerFlag) {
|
||||
if (!var_a1->is_actor) {
|
||||
if (((var_a1->unk4[0] - D_803833F0[0]) * (var_a1->unk4[0] - D_803833F0[0])) + ((var_a1->unk4[1] - D_803833F0[1]) * (var_a1->unk4[1] - D_803833F0[1])) + ((var_a1->unk4[2] - D_803833F0[2]) * (var_a1->unk4[2] - D_803833F0[2])) < D_803833FC) {
|
||||
var_v0 = (var_a1->unk8_1) ? 2 : 1;
|
||||
var_v0 = (var_a1->is_3d) ? 2 : 1;
|
||||
if (var_v0 == D_80383400) {
|
||||
D_803833FC = ((var_a1->unk4[0] - D_803833F0[0]) * (var_a1->unk4[0] - D_803833F0[0])) + ((var_a1->unk4[1] - D_803833F0[1]) * (var_a1->unk4[1] - D_803833F0[1])) + ((var_a1->unk4[2] - D_803833F0[2]) * (var_a1->unk4[2] - D_803833F0[2]));
|
||||
D_80383404 = cube;
|
||||
@@ -985,7 +991,7 @@ void func_8032EE80(Cube *cube) {
|
||||
if (D_80383558 == NULL || D_80383558(var_s0, D_8038355C)) {
|
||||
D_803833FC = ((var_s0->x - D_803833F0[0]) * (var_s0->x - D_803833F0[0])) + ((var_s0->y - D_803833F0[1]) * (var_s0->y - D_803833F0[1])) + ((var_s0->z - D_803833F0[2]) * (var_s0->z - D_803833F0[2]));
|
||||
D_80383404 = cube;
|
||||
D_80383408 = var_s0;
|
||||
D_80383408 = (Prop*)var_s0;
|
||||
D_8038340C = D_80383400;
|
||||
}
|
||||
}
|
||||
@@ -1013,7 +1019,7 @@ void func_8032F194(ActorMarker *marker, s32 position[3], Cube *cube) {
|
||||
v0->y = position[1];
|
||||
v0->z = position[2];
|
||||
|
||||
func_8032F21C(cube, position, marker, func_8032D9C0(marker->cubePtr, propPtr));
|
||||
func_8032F21C(cube, position, marker, func_8032D9C0(marker->cubePtr, (Prop *)propPtr));
|
||||
|
||||
propPtr = marker->propPtr;
|
||||
propPtr->words[1] = sp24.words[1];
|
||||
@@ -1024,12 +1030,12 @@ void func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3)
|
||||
ActorProp *sp1C;
|
||||
|
||||
sp1C = &__codeA5BC0_initProp2Ptr(cube)->actorProp;
|
||||
sp1C->unk8_0 = TRUE;
|
||||
sp1C->is_actor = TRUE;
|
||||
sp1C->x = (s16) position[0];
|
||||
sp1C->y = (s16) position[1];
|
||||
sp1C->z = (s16) position[2];
|
||||
sp1C->marker = marker;
|
||||
sp1C->unk8_1 = arg3;
|
||||
sp1C->is_3d = arg3;
|
||||
sp1C->unk8_15 = 0;
|
||||
sp1C->unk8_5 = FALSE;
|
||||
|
||||
@@ -1045,7 +1051,7 @@ void func_8032F21C(Cube *cube, s32 position[3], ActorMarker *marker, bool arg3)
|
||||
}
|
||||
|
||||
void func_8032F3D4(s32 arg0[3], ActorMarker *marker, s32 arg2){
|
||||
func_8032F21C((marker->unk40_23)? func_8030364C() : cube_atPosition_s32(arg0), arg0, marker, arg2);
|
||||
func_8032F21C((marker->unk40_23)? func_8030364C() : cubeList_GetCubeAtPosition_s32(arg0), arg0, marker, arg2);
|
||||
}
|
||||
|
||||
void marker_free(ActorMarker *this){
|
||||
@@ -1060,7 +1066,7 @@ void func_8032F464(bool arg0){
|
||||
void func_8032F470(s32 *pos, ActorMarker *arg1){
|
||||
Cube *cubePtr;
|
||||
|
||||
cubePtr = (arg1->unk40_23)? func_8030364C(): cube_atPosition_s32(pos);
|
||||
cubePtr = (arg1->unk40_23)? func_8030364C(): cubeList_GetCubeAtPosition_s32(pos);
|
||||
|
||||
if(cubePtr == arg1->cubePtr){
|
||||
arg1->propPtr->x = pos[0];
|
||||
@@ -1096,13 +1102,13 @@ void func_8032F5B0(f32 position[3], ActorMarker *marker, f32 arg2, s32 arg3) {
|
||||
func_80320EB0(marker, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_8032F5E8(s32 arg0[3], s32 arg1, f32 arg2, s32 arg3) {
|
||||
f32 sp1C[3];
|
||||
void func_8032F5E8(s32 position[3], ActorMarker *marker, f32 arg2, s32 arg3) {
|
||||
f32 position_f[3];
|
||||
|
||||
sp1C[0] = arg0[0];
|
||||
sp1C[1] = arg0[1];
|
||||
sp1C[2] = arg0[2];
|
||||
func_8032F5B0(sp1C, arg1, arg2, arg3);
|
||||
position_f[0] = position[0];
|
||||
position_f[1] = position[1];
|
||||
position_f[2] = position[2];
|
||||
func_8032F5B0(position_f, marker, arg2, arg3);
|
||||
}
|
||||
|
||||
void func_8032F64C(f32 *pos, ActorMarker * marker){
|
||||
@@ -1243,13 +1249,12 @@ void marker_callCollisionFunc(ActorMarker *this, ActorMarker *other, enum marker
|
||||
}
|
||||
}
|
||||
|
||||
void func_80330078(ActorMarker *marker, ActorMarker *other_marker, s16 *arg2){
|
||||
void func_80330078(ActorMarker *marker, ActorMarker *other_marker, u16 *arg2){
|
||||
if(marker != NULL && marker->unk54 != NULL){
|
||||
marker->unk54(marker, other_marker, arg2);
|
||||
}
|
||||
}
|
||||
|
||||
//marker_setCollisionMethods
|
||||
void marker_setCollisionScripts(ActorMarker *this, MarkerCollisionFunc ow_func, MarkerCollisionFunc arg2, MarkerCollisionFunc die_func){
|
||||
this->collisionFunc = ow_func;
|
||||
this->collision2Func = arg2;
|
||||
@@ -1292,7 +1297,7 @@ void code_A5BC0_initCubePropActorProp(Cube *cube) {
|
||||
prop_ptr = cube->prop2Ptr;
|
||||
prop_cnt = cube->prop2Cnt;
|
||||
while(prop_cnt != 0){
|
||||
if(prop_ptr->markerFlag == TRUE){
|
||||
if(prop_ptr->is_actor == TRUE){
|
||||
prop_ptr->actorProp.marker->propPtr = &prop_ptr->actorProp;
|
||||
prop_ptr->actorProp.marker->cubePtr = cube;
|
||||
}
|
||||
@@ -1435,7 +1440,7 @@ void func_803306C8(s32 arg0) {
|
||||
void func_803308A0(void) {
|
||||
s32 i;
|
||||
ModelCache *var_s0;
|
||||
void *var_a1;
|
||||
s32 var_a1;
|
||||
|
||||
for (i = 0; i < 0x3D5; i++) {
|
||||
var_s0 = &modelCache[i];
|
||||
@@ -1513,7 +1518,7 @@ BKModelBin *marker_loadModelBin(ActorMarker *this){
|
||||
func_8032ACA8(thisActor);
|
||||
}
|
||||
func_8032AB84(thisActor);
|
||||
if(!this->unk18 && this->propPtr->unk8_1 && modelInfo->modelPtr && func_8033A12C(modelInfo->modelPtr)){
|
||||
if(!this->unk18 && this->propPtr->is_3d && modelInfo->modelPtr && func_8033A12C(modelInfo->modelPtr)){
|
||||
this->unk18 = func_80330B10();
|
||||
}
|
||||
modelInfo->unk10 = globalTimer_getTime();
|
||||
@@ -1679,48 +1684,48 @@ bool func_80331158(ActorMarker *arg0, s32 arg1, s32 arg2) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BKCollisionTri *func_803311D4(Cube *arg0, f32 *arg1, f32 *arg2, f32 *arg3, u32 arg4) {
|
||||
BKCollisionTri *func_803311D4(Cube *cube, f32 *arg1, f32 *arg2, f32 *arg3, u32 arg4) {
|
||||
Actor *temp_s2_2;
|
||||
ActorMarker *temp_a0;
|
||||
BKModelBin *var_a0;
|
||||
BKModelBin *var_s0 = NULL;
|
||||
BKVertexList *temp_a1;
|
||||
Prop *var_s1;
|
||||
f32 spAC[3];
|
||||
f32 spA0[3];
|
||||
f32 model_position[3];
|
||||
f32 model_rotation[3];
|
||||
BKCollisionList *temp_s0;
|
||||
BKCollisionTri *temp_s0_2;
|
||||
BKCollisionList *temp_s2;
|
||||
|
||||
f32 sp88[3];
|
||||
f32 sp7C[3];
|
||||
f32 actor_position[3];
|
||||
f32 actor_rotation[3];
|
||||
|
||||
BKCollisionTri *var_s6;
|
||||
BKCollisionTri *var_v0;
|
||||
u32 var_s5;
|
||||
|
||||
var_s6 = NULL;
|
||||
for(var_s1 = arg0->prop2Ptr, var_s5 = arg0->prop2Cnt; var_s5 > 0; var_s5--, var_s1++) {
|
||||
for(var_s1 = cube->prop2Ptr, var_s5 = cube->prop2Cnt; var_s5 > 0; var_s5--, var_s1++) {
|
||||
if(var_s1);
|
||||
|
||||
if (!var_s1->markerFlag && var_s1->unk8_1 && var_s1->unk8_4) { //ModelProp
|
||||
var_s0 = func_8030A4B4(((u32)var_s1->modelProp.unk0 >> 0x4));
|
||||
if ((var_s0 != NULL) || (func_8028F280() && ((var_s0 = func_8030A428(((u32)var_s1->modelProp.unk0 >> 0x4))) != NULL))) {
|
||||
if (!var_s1->is_actor && var_s1->is_3d && var_s1->unk8_4) { //ModelProp
|
||||
var_s0 = propModelList_getModelIfActive(((u32)var_s1->modelProp.unk0 >> 0x4));
|
||||
if ((var_s0 != NULL) || (func_8028F280() && ((var_s0 = propModelList_getModel(((u32)var_s1->modelProp.unk0 >> 0x4))) != NULL))) {
|
||||
temp_s2 = model_getCollisionList(var_s0);
|
||||
if (temp_s2 != 0) {
|
||||
spAC[0] = (f32) var_s1->modelProp.unk4[0];
|
||||
spAC[1] = (f32) var_s1->modelProp.unk4[1];
|
||||
spAC[2] = (f32) var_s1->modelProp.unk4[2];
|
||||
spA0[0] = 0.0f;
|
||||
spA0[1] = (f32) (var_s1->modelProp.unk0_15 * 2);
|
||||
spA0[2] = (f32) (var_s1->modelProp.unk0_7 * 2);
|
||||
var_v0 = func_802E805C(temp_s2, model_getVtxList(var_s0), spAC, spA0, (f32)var_s1->modelProp.unkA / 100.0, arg1, arg2, arg3, arg4);
|
||||
model_position[0] = (f32) var_s1->modelProp.position[0];
|
||||
model_position[1] = (f32) var_s1->modelProp.position[1];
|
||||
model_position[2] = (f32) var_s1->modelProp.position[2];
|
||||
model_rotation[0] = 0.0f;
|
||||
model_rotation[1] = (f32) (var_s1->modelProp.yaw * 2);
|
||||
model_rotation[2] = (f32) (var_s1->modelProp.roll * 2);
|
||||
var_v0 = func_802E805C(temp_s2, model_getVtxList(var_s0), model_position, model_rotation, (f32)var_s1->modelProp.scale / 100.0, arg1, arg2, arg3, arg4);
|
||||
if (var_v0 != NULL) {
|
||||
var_s6 = var_v0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (var_s1->markerFlag && var_s1->unk8_3 && var_s1->unk8_4 && !func_80331158(var_s1->actorProp.marker, arg1, arg2)) {
|
||||
} else if (var_s1->is_actor && var_s1->unk8_3 && var_s1->unk8_4 && !func_80331158(var_s1->actorProp.marker, arg1, arg2)) {
|
||||
if (!(var_s1->actorProp.marker->unk3E_0 && (marker_getActor(var_s1->actorProp.marker)->unk3C & 0x008000000))) {
|
||||
var_a0 = func_80330DE4(var_s1->actorProp.marker);
|
||||
} else {
|
||||
@@ -1732,13 +1737,13 @@ BKCollisionTri *func_803311D4(Cube *arg0, f32 *arg1, f32 *arg2, f32 *arg3, u32 a
|
||||
if (temp_s0 != 0) {
|
||||
temp_s2_2 = marker_getActor(var_s1->actorProp.marker);
|
||||
temp_a1 = func_80330C74(temp_s2_2);
|
||||
sp88[0] = (f32) var_s1->actorProp.x;
|
||||
sp88[1] = (f32) var_s1->actorProp.y;
|
||||
sp88[2] = (f32) var_s1->actorProp.z;
|
||||
sp7C[0] = (f32) var_s1->actorProp.marker->pitch;
|
||||
sp7C[1] = (f32) var_s1->actorProp.marker->yaw;
|
||||
sp7C[2] = (f32) var_s1->actorProp.marker->roll;
|
||||
temp_s0_2 = func_802E805C(temp_s0, temp_a1, &sp88, &sp7C, temp_s2_2->scale, arg1, arg2, arg3, arg4);
|
||||
actor_position[0] = (f32) var_s1->actorProp.x;
|
||||
actor_position[1] = (f32) var_s1->actorProp.y;
|
||||
actor_position[2] = (f32) var_s1->actorProp.z;
|
||||
actor_rotation[0] = (f32) var_s1->actorProp.marker->pitch;
|
||||
actor_rotation[1] = (f32) var_s1->actorProp.marker->yaw;
|
||||
actor_rotation[2] = (f32) var_s1->actorProp.marker->roll;
|
||||
temp_s0_2 = func_802E805C(temp_s0, temp_a1, actor_position, actor_rotation, temp_s2_2->scale, arg1, arg2, arg3, arg4);
|
||||
if ((temp_s0_2 != NULL) && (func_8029453C())) {
|
||||
marker_loadModelBin(var_s1->actorProp.marker);
|
||||
if (var_s1->actorProp.marker->unk50 != 0) {
|
||||
@@ -1757,7 +1762,7 @@ BKCollisionTri *func_803311D4(Cube *arg0, f32 *arg1, f32 *arg2, f32 *arg3, u32 a
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (var_s1->markerFlag) {
|
||||
} else if (var_s1->is_actor) {
|
||||
if (var_s1->actorProp.marker->unk18 != NULL) {
|
||||
if (var_s1->actorProp.marker->unk18->unk0 != NULL) {
|
||||
var_v0 = var_s1->actorProp.marker->unk18->unk0(var_s1->actorProp.marker, arg1, arg2, arg3, arg4);
|
||||
@@ -1797,9 +1802,9 @@ s32 func_80331638(Cube *cube, f32 arg1[3], f32 arg2[3], f32 arg3, f32 arg4[3], s
|
||||
new_var2 = sp8C;
|
||||
for (; var_s3 != 0; var_s0++, var_s3--)
|
||||
{
|
||||
if (((!var_s0->markerFlag) && var_s0->unk8_1) && var_s0->unk8_4)
|
||||
if (((!var_s0->is_actor) && var_s0->is_3d) && var_s0->unk8_4)
|
||||
{
|
||||
model_bin = func_8030A4B4(((u32) (*((u16 *) (&var_s0->modelProp)))) >> 4);
|
||||
model_bin = propModelList_getModelIfActive(((u32) (*((u16 *) (&var_s0->modelProp)))) >> 4);
|
||||
if (model_bin == 0)
|
||||
{
|
||||
continue;
|
||||
@@ -1809,15 +1814,15 @@ s32 func_80331638(Cube *cube, f32 arg1[3], f32 arg2[3], f32 arg3, f32 arg4[3], s
|
||||
{
|
||||
continue;
|
||||
}
|
||||
spBC[0] = (f32) var_s0->modelProp.unk4[0];
|
||||
spBC[1] = (f32) var_s0->modelProp.unk4[1];
|
||||
spBC[2] = (f32) var_s0->modelProp.unk4[2];
|
||||
spBC[0] = (f32) var_s0->modelProp.position[0];
|
||||
spBC[1] = (f32) var_s0->modelProp.position[1];
|
||||
spBC[2] = (f32) var_s0->modelProp.position[2];
|
||||
spB0[0] = 0.0f;
|
||||
spB0[1] = (f32) (var_s0->modelProp.unk0_15 * 2);
|
||||
spB0[1] = (f32) (var_s0->modelProp.yaw * 2);
|
||||
new_var = spB0;
|
||||
spB0[2] = (f32) (var_s0->modelProp.unk0_7 * 2);
|
||||
spB0[2] = (f32) (var_s0->modelProp.roll * 2);
|
||||
var_v0 = func_802E9118(model_collision_list, model_getVtxList(model_bin),
|
||||
spBC, new_var, (f32) (((f32) var_s0->modelProp.unkA) / 100.0),
|
||||
spBC, new_var, (f32) (((f32) var_s0->modelProp.scale) / 100.0),
|
||||
arg1, arg2, arg3, arg4, arg5, flags
|
||||
);
|
||||
if (var_v0 != 0)
|
||||
@@ -1826,7 +1831,7 @@ s32 func_80331638(Cube *cube, f32 arg1[3], f32 arg2[3], f32 arg3, f32 arg4[3], s
|
||||
}
|
||||
}
|
||||
else
|
||||
if ((var_s0->markerFlag && var_s0->unk8_3) && var_s0->unk8_4)
|
||||
if ((var_s0->is_actor && var_s0->unk8_3) && var_s0->unk8_4)
|
||||
{
|
||||
model_collision_list = func_80330DE4(var_s0->actorProp.marker);
|
||||
pad9C = model_collision_list;
|
||||
@@ -1856,7 +1861,7 @@ s32 func_80331638(Cube *cube, f32 arg1[3], f32 arg2[3], f32 arg3, f32 arg4[3], s
|
||||
}
|
||||
}
|
||||
else
|
||||
if (var_s0->markerFlag)
|
||||
if (var_s0->is_actor)
|
||||
{
|
||||
temp_a0 = var_s0->actorProp.marker;
|
||||
temp_v0_7 = temp_a0->unk18;
|
||||
@@ -1881,86 +1886,78 @@ s32 func_80331638(Cube *cube, f32 arg1[3], f32 arg2[3], f32 arg3, f32 arg4[3], s
|
||||
BKCollisionTri *func_803319C0(Cube *cube, f32 position[3], f32 radius, s32 arg3, f32 arg4[3], u32 arg5){
|
||||
BKCollisionTri *var_s7;
|
||||
BKCollisionTri *var_v0;
|
||||
s32 var_s3;
|
||||
Prop *var_s0;
|
||||
s32 i;
|
||||
Prop *prop_ptr;
|
||||
BKCollisionList *model_collision_list;
|
||||
BKVertexList *temp_a1;
|
||||
f32 spAC[3];
|
||||
f32 spA0[3];
|
||||
f32 model_position[3];
|
||||
f32 model_rotation[3];
|
||||
BKModelBin *model_bin;
|
||||
BKModelBin *new_var;
|
||||
ModelProp *mProp;
|
||||
f32 sp88[3];
|
||||
f32 sp7C[3];
|
||||
f32 actor_position[3];
|
||||
f32 actor_rotation[3];
|
||||
Actor *temp_v0_6;
|
||||
ActorProp *aProp = &var_s0->actorProp;
|
||||
ActorProp *aProp = &prop_ptr->actorProp;
|
||||
|
||||
var_s7 = 0;
|
||||
var_s0 = cube->prop2Ptr;
|
||||
for (var_s3 = cube->prop2Cnt; var_s3 != 0; var_s3--, var_s0++) {
|
||||
if (((!var_s0->markerFlag) && var_s0->unk8_1) && var_s0->unk8_4)
|
||||
{
|
||||
mProp = &var_s0->modelProp;
|
||||
new_var = func_8030A4B4(mProp->unk0_31);
|
||||
var_s7 = NULL;
|
||||
prop_ptr = cube->prop2Ptr;
|
||||
for (i = cube->prop2Cnt; i != 0; i--, prop_ptr++) {
|
||||
if (((!prop_ptr->is_actor) && prop_ptr->is_3d) && prop_ptr->unk8_4) {
|
||||
mProp = &prop_ptr->modelProp;
|
||||
new_var = propModelList_getModelIfActive(mProp->model_index);
|
||||
if (1) { } if (1) { } if (1) { }
|
||||
model_bin = new_var;
|
||||
if (model_bin != 0){
|
||||
if (model_bin != NULL){
|
||||
model_collision_list = model_getCollisionList(model_bin);
|
||||
if (model_collision_list != 0){
|
||||
spAC[0] = (f32) mProp->unk4[0];
|
||||
spAC[1] = (f32) mProp->unk4[1];
|
||||
spAC[2] = (f32) mProp->unk4[2];
|
||||
spA0[0] = 0.0f;
|
||||
spA0[1] = (f32) (mProp->unk0_15 * 2);
|
||||
model_position[0] = (f32) mProp->position[0];
|
||||
model_position[1] = (f32) mProp->position[1];
|
||||
model_position[2] = (f32) mProp->position[2];
|
||||
model_rotation[0] = 0.0f;
|
||||
model_rotation[1] = (f32) (mProp->yaw * 2);
|
||||
model_bin = model_bin;
|
||||
spA0[2] = (f32) (mProp->unk0_7 * 2);
|
||||
var_v0 = func_802E9DD8(model_collision_list, model_getVtxList(model_bin), spAC, spA0, ((f32) mProp->unkA) / 100.0, position, radius, arg3, arg4);
|
||||
if (var_v0 != 0)
|
||||
model_rotation[2] = (f32) (mProp->roll * 2);
|
||||
var_v0 = func_802E9DD8(model_collision_list, model_getVtxList(model_bin), model_position, model_rotation, ((f32) mProp->scale) / 100.0, position, radius, arg3, arg4);
|
||||
if (var_v0 != NULL)
|
||||
var_s7 = var_v0;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
aProp = &var_s0->actorProp;
|
||||
if ((var_s0->markerFlag && var_s0->unk8_3) && var_s0->unk8_4)
|
||||
{
|
||||
model_bin = func_80330DE4(aProp->marker);
|
||||
if (model_bin != 0) {
|
||||
new_var = model_getCollisionList(model_bin);
|
||||
if (new_var != 0)
|
||||
{
|
||||
|
||||
temp_v0_6 = marker_getActor(aProp->marker);
|
||||
temp_a1 = func_80330C74(temp_v0_6);
|
||||
sp88[0] = (f32) aProp->x;
|
||||
sp88[1] = (f32) aProp->y;
|
||||
sp88[2] = (f32) aProp->z;
|
||||
sp7C[0] = aProp->marker->pitch;
|
||||
sp7C[1] = aProp->marker->yaw;
|
||||
sp7C[2] = aProp->marker->roll;
|
||||
var_v0 = func_802E9DD8(new_var, temp_a1, sp88, sp7C, temp_v0_6->scale, position, radius, arg3, arg4);
|
||||
if (var_v0 != 0)
|
||||
{
|
||||
var_s7 = var_v0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
if (var_s0->markerFlag)
|
||||
{
|
||||
Struct6Cs *temp_v0_7;
|
||||
temp_v0_7 = aProp->marker->unk18;
|
||||
if (temp_v0_7 != 0)
|
||||
{
|
||||
if (temp_v0_7->unk8 != 0)
|
||||
{
|
||||
var_v0 = temp_v0_7->unk8(aProp->marker, position, radius, arg3, arg4);
|
||||
if (var_v0 != 0)
|
||||
{
|
||||
var_s7 = var_v0;
|
||||
}
|
||||
}
|
||||
}
|
||||
aProp = &prop_ptr->actorProp;
|
||||
if ((prop_ptr->is_actor && prop_ptr->unk8_3) && prop_ptr->unk8_4) {
|
||||
model_bin = func_80330DE4(aProp->marker);
|
||||
if (model_bin != 0) {
|
||||
new_var = model_getCollisionList(model_bin);
|
||||
if (new_var != 0)
|
||||
{
|
||||
|
||||
temp_v0_6 = marker_getActor(aProp->marker);
|
||||
temp_a1 = func_80330C74(temp_v0_6);
|
||||
actor_position[0] = (f32) aProp->x;
|
||||
actor_position[1] = (f32) aProp->y;
|
||||
actor_position[2] = (f32) aProp->z;
|
||||
actor_rotation[0] = aProp->marker->pitch;
|
||||
actor_rotation[1] = aProp->marker->yaw;
|
||||
actor_rotation[2] = aProp->marker->roll;
|
||||
var_v0 = func_802E9DD8(new_var, temp_a1, actor_position, actor_rotation, temp_v0_6->scale, position, radius, arg3, arg4);
|
||||
if (var_v0 != 0)
|
||||
{
|
||||
var_s7 = var_v0;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else if (prop_ptr->is_actor) {
|
||||
Struct6Cs *temp_v0_7;
|
||||
temp_v0_7 = aProp->marker->unk18;
|
||||
if (temp_v0_7 != 0) {
|
||||
if (temp_v0_7->unk8 != 0) {
|
||||
var_v0 = temp_v0_7->unk8(aProp->marker, position, radius, arg3, arg4);
|
||||
if (var_v0 != 0) {
|
||||
var_s7 = var_v0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1986,7 +1983,7 @@ f32 func_80331D20(BKSprite *sprite) {
|
||||
|
||||
|
||||
f32 func_80331E34(Prop *arg0){
|
||||
return func_80331D20(func_8030A55C(arg0->spriteProp.unk0_31));
|
||||
return func_80331D20(propModelList_getSprite(arg0->spriteProp.sprite_index));
|
||||
}
|
||||
|
||||
f32 func_80331E64(ActorMarker *marker) {
|
||||
@@ -2005,7 +2002,7 @@ f32 func_80331E64(ActorMarker *marker) {
|
||||
|
||||
|
||||
f32 func_80331F1C(Prop *arg0){
|
||||
return vtxList_getGlobalNorm(model_getVtxList(func_8030A428(arg0->modelProp.unk0_31)));
|
||||
return vtxList_getGlobalNorm(model_getVtxList(propModelList_getModel(arg0->modelProp.model_index)));
|
||||
}
|
||||
|
||||
f32 func_80331F54(ActorMarker *marker) {
|
||||
@@ -2033,7 +2030,7 @@ f32 func_80332050(Prop *prop, ActorMarker *marker, s32 arg2) {
|
||||
ActorMarker * phi_v0;
|
||||
f32 phi_f2;
|
||||
|
||||
phi_v0 =(prop->markerFlag) ? prop->actorProp.marker : NULL;
|
||||
phi_v0 =(prop->is_actor) ? prop->actorProp.marker : NULL;
|
||||
phi_f2 = prop->unk4[arg2] - (&marker->propPtr->x)[arg2] - marker->unk38[arg2];
|
||||
if (phi_v0 != NULL) {
|
||||
phi_f2 += phi_v0->unk38[arg2];
|
||||
@@ -2060,9 +2057,9 @@ f32 func_803320BC(ActorProp *prop, f32 (*arg1)(ActorMarker *)) {
|
||||
f32 func_80332220(Prop * prop, f32 (*arg1)(Prop *)) {
|
||||
f32 phi_f12;
|
||||
|
||||
phi_f12 = func_8030A590();
|
||||
phi_f12 = propModelList_getScale(prop);
|
||||
if (phi_f12 == 0.0f) {
|
||||
func_8030A5EC(prop, phi_f12 = arg1(prop) * 0.5);
|
||||
propModelList_setScale(prop, phi_f12 = arg1(prop) * 0.5);
|
||||
}
|
||||
return phi_f12;
|
||||
}
|
||||
@@ -2072,7 +2069,7 @@ f32 func_8033229C(ActorMarker *marker) {
|
||||
ActorProp *prop;
|
||||
|
||||
prop = marker->propPtr;
|
||||
if (prop->unk8_1) {
|
||||
if (prop->is_3d) {
|
||||
return func_803320BC(prop, func_80331F54);
|
||||
}
|
||||
else{
|
||||
@@ -2097,16 +2094,16 @@ Prop *func_803322F0(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *ar
|
||||
phi_s1 = &cube->prop2Ptr[(*arg4)++];
|
||||
for(phi_s3 = phi_s3; phi_s3 != 0; phi_s3--){
|
||||
if (phi_s1->unk8_4) {
|
||||
if( phi_s1->markerFlag && (!phi_s1->actorProp.marker->unk3E_0 || !marker_getActor(phi_s1->actorProp.marker)->despawn_flag)){
|
||||
if( phi_s1->is_actor && (!phi_s1->actorProp.marker->unk3E_0 || !marker_getActor(phi_s1->actorProp.marker)->despawn_flag)){
|
||||
if (phi_s1->actorProp.marker->collidable && (marker != phi_s1->actorProp.marker)) {
|
||||
if( (phi_s1->actorProp.marker->modelId)
|
||||
&& (func_803327A8(phi_s1->actorProp.marker->modelId) & arg3)
|
||||
) {
|
||||
if( phi_s1->actorProp.unk8_1
|
||||
if( phi_s1->actorProp.is_3d
|
||||
&& (phi_s1->actorProp.marker->unk18 != NULL)
|
||||
&& (phi_s1->actorProp.marker->unk18->unkC != NULL)
|
||||
) {
|
||||
func_803320BC(phi_s1, &func_80331F54);
|
||||
func_803320BC(&phi_s1->actorProp, &func_80331F54);
|
||||
sp68[0] = (f32) (marker->unk38[0] + marker->propPtr->x);
|
||||
sp68[1] = (f32) (marker->unk38[1] + marker->propPtr->y);
|
||||
sp68[2] = (f32) (marker->unk38[2] + marker->propPtr->z);
|
||||
@@ -2116,12 +2113,12 @@ Prop *func_803322F0(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *ar
|
||||
} else{
|
||||
phi_f24 = func_80332050(phi_s1, marker, 0);
|
||||
phi_f22 = func_80332050(phi_s1, marker, 2);
|
||||
if (phi_s1->actorProp.unk8_1) {
|
||||
if (phi_s1->actorProp.is_3d) {
|
||||
phi_f20 = func_80332050(phi_s1, marker, 1);
|
||||
phi_f2 = func_803320BC(phi_s1, func_80331F54);
|
||||
phi_f2 = func_803320BC(&phi_s1->actorProp, func_80331F54);
|
||||
} else {
|
||||
phi_f20 = func_80332050(phi_s1, marker, 1);
|
||||
phi_f2 = func_803320BC(phi_s1, &func_80331E64);
|
||||
phi_f2 = func_803320BC(&phi_s1->actorProp, &func_80331E64);
|
||||
}
|
||||
phi_f2 = phi_f2 + arg2;
|
||||
if ((phi_f24*phi_f24 + phi_f20*phi_f20 + phi_f22*phi_f22) < phi_f2*phi_f2) {
|
||||
@@ -2131,8 +2128,8 @@ Prop *func_803322F0(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *ar
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (phi_s1->unk8_1) {//ModelProp
|
||||
if (func_803327A8(phi_s1->modelProp.unk0_31 + 0x2D1) & arg3) {
|
||||
else if (phi_s1->is_3d) {//ModelProp
|
||||
if (func_803327A8(phi_s1->modelProp.model_index + 0x2D1) & arg3) {
|
||||
phi_f24 = func_80332050(phi_s1, marker, 0);
|
||||
phi_f20 = func_80332050(phi_s1, marker, 1) + func_80332220(phi_s1, &func_80331F1C);
|
||||
phi_f22 = func_80332050(phi_s1, marker, 2);
|
||||
@@ -2143,7 +2140,7 @@ Prop *func_803322F0(Cube *cube, ActorMarker *marker, f32 arg2, s32 arg3, s32 *ar
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (func_803327A8(phi_s1->spriteProp.unk0_31 + 0x572) & arg3) {
|
||||
if (func_803327A8(phi_s1->spriteProp.sprite_index + 0x572) & arg3) {
|
||||
phi_f24 = func_80332050(phi_s1, marker, 0);\
|
||||
phi_f20 = func_80332050(phi_s1, marker, 1) + func_80332220(phi_s1, &func_80331E34);\
|
||||
phi_f22 = func_80332050(phi_s1, marker, 2);
|
||||
@@ -2208,8 +2205,8 @@ void func_80332894(void) {
|
||||
}while(i != size);
|
||||
func_8033283C(0x34D, 0x3A6, 3);
|
||||
func_8033283C(0x3A6, 0x572, 3);
|
||||
func_803327D4(&D_8036E7E0, 1);
|
||||
func_803327D4(&D_8036E7FC, 2);
|
||||
func_803327D4(D_8036E7E0, 1);
|
||||
func_803327D4(D_8036E7FC, 2);
|
||||
func_8032D330();
|
||||
}
|
||||
|
||||
|
@@ -64,7 +64,7 @@ extern void warp_lairEnterCCWPuzzleFromPointingGruntyStatueRoom(s32, s32);
|
||||
extern void warp_lairEnterPointingGruntyStatueFromCCWPuzzleRoom(s32, s32);
|
||||
extern void warp_lairEnterRBBLobbyFromRBBPuzzleRoom(s32, s32);
|
||||
extern void warp_lairEnterRBBLobbyFromMMMPuzzleRoom(s32, s32);
|
||||
extern void func_80334430(s32, s32);
|
||||
extern void func_80334430(NodeProp *, ActorMarker *);
|
||||
extern void func_80363388(s32, s32);
|
||||
extern void chOrangePad_handleOrangeCollision(s32, s32);
|
||||
extern void func_80388BEC(s32, s32);
|
||||
@@ -289,18 +289,20 @@ extern void warp_gvEnterSNSChamper(s32, s32);
|
||||
extern void warp_gvExitSNSChamper(s32, s32);
|
||||
extern void warp_lairEnterLairFromSMLevel(s32, s32);
|
||||
|
||||
extern void func_802C1674(s32, s32);
|
||||
extern void func_802C169C(s32, s32);
|
||||
extern void chTreasurehunt_checkStepProgress0(s32, s32);
|
||||
extern void chTreasurehunt_checkStepProgress1(s32, s32);
|
||||
extern void chTreasurehunt_checkStepProgress2(s32, s32);
|
||||
extern void chTreasurehunt_checkStepProgress3(s32, s32);
|
||||
extern void chTreasurehunt_checkStepProgress4(s32, s32);
|
||||
extern void chTreasurehunt_checkStepProgress5(s32, s32);
|
||||
extern void chMumbo_detransformWarn(s32, s32);
|
||||
extern void chMumbo_detransformTrigger(s32, s32);
|
||||
extern void func_802C1674(NodeProp *, ActorMarker *);
|
||||
extern void func_802C169C(NodeProp *, ActorMarker *);
|
||||
extern void chTreasurehunt_checkStepProgress0(NodeProp *, ActorMarker *);
|
||||
extern void chTreasurehunt_checkStepProgress1(NodeProp *, ActorMarker *);
|
||||
extern void chTreasurehunt_checkStepProgress2(NodeProp *, ActorMarker *);
|
||||
extern void chTreasurehunt_checkStepProgress3(NodeProp *, ActorMarker *);
|
||||
extern void chTreasurehunt_checkStepProgress4(NodeProp *, ActorMarker *);
|
||||
extern void chTreasurehunt_checkStepProgress5(NodeProp *, ActorMarker *);
|
||||
extern void chMumbo_detransformWarn(NodeProp *, ActorMarker *);
|
||||
extern void chMumbo_detransformTrigger(NodeProp *, ActorMarker *);
|
||||
extern void func_8033443C(NodeProp *arg0, ActorMarker *arg1);
|
||||
|
||||
typedef void (*CodeAD110Callback)(NodeProp *arg0, ActorMarker *arg1);
|
||||
|
||||
|
||||
typedef struct {
|
||||
f32 unk0[3];
|
||||
@@ -310,10 +312,9 @@ typedef struct {
|
||||
u8 pad1D[3];
|
||||
}Struct_core2_AD110_0;
|
||||
|
||||
typedef void (*CodeAD110Callback)(NodeProp *arg0, ActorMarker *arg1);
|
||||
|
||||
/* .data */
|
||||
CodeAD110Callback sWarpFunctions[] = {
|
||||
void * sWarpFunctions[] = {
|
||||
func_80388BEC, func_80334430, chOrangePad_handleOrangeCollision, chOrangePad_handleOrangeCollision,
|
||||
chOrangePad_handleOrangeCollision, warp_gvEnterJinxy, warp_gvExitJinxy, func_8038F10C,
|
||||
func_8038F130, warp_bgsEnterMumbosHut, warp_bgsExitMumbosHut, warp_ttcExitNipper,
|
||||
@@ -545,7 +546,7 @@ void func_803343F8(s32 indx){
|
||||
|
||||
void func_80334428(void){}
|
||||
|
||||
void func_80334430(s32 arg0, s32 arg1){}
|
||||
void func_80334430(NodeProp *arg0, ActorMarker *arg1){}
|
||||
|
||||
void func_8033443C(NodeProp *arg0, ActorMarker *arg1){}
|
||||
|
||||
@@ -556,7 +557,7 @@ void func_80334448(NodeProp *arg0, ActorMarker *arg1) {
|
||||
case 3: // warp (L80334480)
|
||||
global_timer_time = globalTimer_getTime();
|
||||
if ((codeA5BC0_getNodePropUnkC(arg0) + 1) != global_timer_time) {
|
||||
sWarpFunctions[codeA5BC0_getNodePropUnk8(arg0)](arg0, arg1);
|
||||
((CodeAD110Callback) sWarpFunctions[codeA5BC0_getNodePropUnk8(arg0)])(arg0, arg1);
|
||||
}
|
||||
codeA5BC0_setNodePropUnkC(arg0, global_timer_time);
|
||||
break;
|
||||
|
@@ -159,7 +159,7 @@ void func_80334910(void) {
|
||||
cubeList_free();
|
||||
func_8031B710();
|
||||
mapModel_free();
|
||||
func_8030A6B0();
|
||||
propModelList_free();
|
||||
lighting_free();
|
||||
sky_free();
|
||||
func_8034C8D8();
|
||||
@@ -233,7 +233,7 @@ void func_80334B20(enum map_e map, s32 arg1, s32 arg2) {
|
||||
pem_setAllInactive();
|
||||
pem_initDependencies();
|
||||
func_802F7D30();
|
||||
func_8030A78C();
|
||||
propModelList_init();
|
||||
lighting_init();
|
||||
sky_reset();
|
||||
func_803343D0();
|
||||
@@ -337,7 +337,7 @@ s32 func_80334ECC(void) {
|
||||
func_803465E4();
|
||||
func_8031B790();
|
||||
func_8034C9D4();
|
||||
func_8030A850(1);
|
||||
propModelList_flush(1);
|
||||
sky_update();
|
||||
partEmitMgr_update();
|
||||
func_8034F918();
|
||||
|
@@ -201,17 +201,17 @@ Struct68s * func_8035126C(f32 position[3], f32 arg1[3], f32 arg2, s32 arg3, enum
|
||||
void func_803513EC(ModelProp *arg0, s32 arg1) {
|
||||
f32 sp3C[3];
|
||||
s32 pad30;
|
||||
f32 sp2C[3];
|
||||
f32 rotation[3];
|
||||
|
||||
arg0->unkB_5 = TRUE;
|
||||
arg0->unkB_4 = FALSE;
|
||||
sp3C[0] = (f32) arg0->unk4[0];
|
||||
sp3C[1] = (f32) arg0->unk4[1];
|
||||
sp3C[2] = (f32) arg0->unk4[2];
|
||||
sp2C[0] = 0.0f;
|
||||
sp2C[1] = (f32) (arg0->unk0_15 * 2);
|
||||
sp2C[2] = (f32) (arg0->unk0_7 * 2);
|
||||
func_8035126C(sp3C, sp2C, (f32) (arg0->unkA / 100.0), arg1, arg0->unk0_31 + 0x2D1);
|
||||
sp3C[0] = (f32) arg0->position[0];
|
||||
sp3C[1] = (f32) arg0->position[1];
|
||||
sp3C[2] = (f32) arg0->position[2];
|
||||
rotation[0] = 0.0f;
|
||||
rotation[1] = (f32) (arg0->yaw * 2);
|
||||
rotation[2] = (f32) (arg0->roll * 2);
|
||||
func_8035126C(sp3C, rotation, (f32) (arg0->scale / 100.0), arg1, arg0->model_index + 0x2D1);
|
||||
}
|
||||
|
||||
|
||||
|
@@ -64,7 +64,7 @@ s32 func_803531C8(u8 projectile_indx, s32 arg1){
|
||||
projectile_getPosition(projectile_indx, egg_position);
|
||||
marker->unk38[1] = 0x1E;
|
||||
prop = func_80320EB0(marker, 30.0f, 1);
|
||||
if(prop != NULL && prop->unk8_0){
|
||||
if(prop != NULL && prop->is_actor){
|
||||
other_marker = prop->marker;
|
||||
sp34 =other_marker->id;
|
||||
if(!func_8033D410(marker, other_marker)){
|
||||
|
@@ -201,7 +201,7 @@ bool file_getByte_ifExpected(File *file, s32 expected, u8 *dst) {
|
||||
}
|
||||
}
|
||||
|
||||
bool file_getNBytes_ifExpected(File *file, s32 expected, u8 *dst, s32 cnt) {
|
||||
bool file_getNBytes_ifExpected(File *file, s32 expected, void *dst, s32 cnt) {
|
||||
if (!file_isNextByteExpected(file, expected)) {
|
||||
return FALSE;
|
||||
} else {
|
||||
|
230
src/core2/propModelList.c
Normal file
230
src/core2/propModelList.c
Normal file
@@ -0,0 +1,230 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
extern f32 func_8033A244(f32);
|
||||
|
||||
typedef struct{
|
||||
BKModelBin *model_bin;
|
||||
s32 timestamp;
|
||||
f32 scale;
|
||||
}propModelListModel;
|
||||
|
||||
typedef struct{
|
||||
BKSprite *sprite;
|
||||
BKSpriteDisplayData *display;
|
||||
s32 timestamp;
|
||||
f32 scale;
|
||||
}propModelListSprite;
|
||||
|
||||
BKModelBin *propModelList_getModel(s32 arg0);
|
||||
|
||||
/* .data */
|
||||
s32 D_8036B800 = 0;
|
||||
|
||||
/* .bss */
|
||||
static propModelListModel *sPropModelList;
|
||||
static propModelListSprite *sPropSpriteList;
|
||||
|
||||
BKSpriteDisplayData *propModelList_getSpriteDisplayList(s32 arg0);
|
||||
|
||||
void propModelList_drawModel(Gfx **gfx, Mtx **mtx, Vtx **vtx, f32 position[3], f32 rotation[3], f32 scale, s32 model_index, Cube* arg7){
|
||||
BKModelBin * model;
|
||||
|
||||
model = propModelList_getModel(model_index);
|
||||
func_8033A244(3700.0f);
|
||||
func_8033A28C(1);
|
||||
modelRender_setDepthMode(MODEL_RENDER_DEPTH_FULL);
|
||||
func_8033A1FC();
|
||||
modelRender_draw(gfx, mtx, position, rotation, scale, NULL, model);
|
||||
}
|
||||
|
||||
void propModelList_drawSprite(Gfx **gfx, Mtx **mtx, Vtx **Vtx, f32 position[3], f32 scale, s32 sprite_index, Cube *arg6, s32 r, s32 b, s32 g, s32 mirrored, s32 frame) {
|
||||
f32 scale_f3[3];
|
||||
BKSpriteDisplayData *sprite;
|
||||
|
||||
sprite = propModelList_getSpriteDisplayList(sprite_index);
|
||||
scale_f3[0] = scale;
|
||||
scale_f3[1] = scale;
|
||||
scale_f3[2] = scale;
|
||||
func_80338338(0xFF - (r * 0x10), 0xFF - (b * 0x10), 0xFF - (g * 0x10));
|
||||
if (func_80344C20(sprite) & 0xB00) {
|
||||
func_803382E4(0xB);
|
||||
} else {
|
||||
func_803382E4(0xE);
|
||||
}
|
||||
func_80335D30(gfx);
|
||||
func_80344138(sprite, frame, mirrored, position, scale_f3, gfx, mtx);
|
||||
func_8033687C(gfx);
|
||||
}
|
||||
|
||||
BKModelBin *propModelList_getModel(s32 arg0){
|
||||
if(sPropModelList[arg0].model_bin == NULL){
|
||||
sPropModelList[arg0].model_bin = assetcache_get(0x2d1 + arg0);
|
||||
}
|
||||
sPropModelList[arg0].timestamp = globalTimer_getTime();
|
||||
return sPropModelList[arg0].model_bin;
|
||||
}
|
||||
|
||||
BKModelBin *propModelList_getModelIfActive(s32 arg0){
|
||||
return sPropModelList[arg0].model_bin;
|
||||
}
|
||||
|
||||
BKSpriteDisplayData *propModelList_getSpriteDisplayList(s32 arg0)
|
||||
{
|
||||
|
||||
if (((propModelListSprite *)((s32)sPropSpriteList + arg0*sizeof(propModelListSprite)))->sprite == 0){
|
||||
((propModelListSprite *)((s32)sPropSpriteList + arg0*sizeof(propModelListSprite)))->sprite = func_8033B6C4(arg0 + 0x572, &((propModelListSprite *)((s32)sPropSpriteList + arg0*sizeof(propModelListSprite)))->display);
|
||||
}
|
||||
sPropSpriteList[arg0].timestamp = globalTimer_getTime();
|
||||
return sPropSpriteList[arg0].display;
|
||||
}
|
||||
|
||||
BKSprite *propModelList_getSprite(s32 arg0){
|
||||
propModelList_getSpriteDisplayList(arg0);
|
||||
return sPropSpriteList[arg0].sprite;
|
||||
}
|
||||
|
||||
f32 propModelList_getScale(Prop *arg0){
|
||||
if(arg0->is_3d){
|
||||
ModelProp* ModelProp = &arg0->modelProp;
|
||||
return sPropModelList[arg0->spriteProp.sprite_index].scale;
|
||||
}
|
||||
else{//L8030A65C
|
||||
SpriteProp *spriteProp = &arg0->spriteProp;
|
||||
return sPropSpriteList[spriteProp->sprite_index].scale;
|
||||
}
|
||||
}
|
||||
|
||||
void propModelList_setScale(Prop *arg0, f32 arg1){
|
||||
if(arg0->is_3d){
|
||||
ModelProp* ModelProp = &arg0->modelProp;
|
||||
sPropModelList[arg0->spriteProp.sprite_index].scale = (f32)ModelProp->scale*arg1/100.0f;
|
||||
}
|
||||
else{//L8030A65C
|
||||
SpriteProp *spriteProp = &arg0->spriteProp;
|
||||
sPropSpriteList[spriteProp->sprite_index].scale = (f32)spriteProp->scale*arg1/100.0f;
|
||||
}
|
||||
}
|
||||
|
||||
void propModelList_free(void){
|
||||
propModelListModel* iPtr;
|
||||
propModelListSprite* jPtr;
|
||||
|
||||
for(iPtr = sPropModelList; iPtr < &sPropModelList[0x2A2]; iPtr++){
|
||||
if(iPtr->model_bin){
|
||||
assetcache_release(iPtr->model_bin);
|
||||
}
|
||||
}
|
||||
for(jPtr = sPropSpriteList; jPtr < &sPropSpriteList[0x168]; jPtr++){
|
||||
if(jPtr->sprite){
|
||||
func_8033B338(&jPtr->sprite, &jPtr->display);
|
||||
}
|
||||
}
|
||||
free(sPropModelList);
|
||||
sPropModelList = NULL;
|
||||
free(sPropSpriteList);
|
||||
sPropSpriteList = NULL;
|
||||
}
|
||||
|
||||
void propModelList_init(void){//init
|
||||
propModelListModel* iPtr;
|
||||
propModelListSprite* jPtr;
|
||||
|
||||
sPropModelList = (propModelListModel *)malloc(0x2A2 * sizeof(propModelListModel));
|
||||
sPropSpriteList = (propModelListSprite *)malloc(0x168 * sizeof(propModelListSprite));
|
||||
D_8036B800 = 0;
|
||||
for(iPtr = sPropModelList; iPtr < &sPropModelList[0x2A2]; iPtr++){
|
||||
iPtr->model_bin = NULL;
|
||||
iPtr->scale = 0.0f;
|
||||
}
|
||||
for(jPtr = sPropSpriteList; jPtr < &sPropSpriteList[0x168]; jPtr++){
|
||||
jPtr->sprite = NULL;
|
||||
jPtr->scale = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief This function flushes old models from the prop model and sprite list.
|
||||
*
|
||||
* @param level 1 = checks timestamp of 40 oldest models
|
||||
* 2 = checks timestamp of all models
|
||||
* 3 = flushes ALL models despites age
|
||||
*/
|
||||
void propModelList_flush(s32 level) {
|
||||
static s32 D_8036B804 = 0;
|
||||
static s32 D_8036B808 = 0;
|
||||
s32 oldest_active_time;
|
||||
s32 var_s0;
|
||||
propModelListModel *sp3C;
|
||||
propModelListSprite *temp_a0_2;
|
||||
|
||||
oldest_active_time = globalTimer_getTime() - func_80255B08(level);
|
||||
for(var_s0 = 0; (sPropModelList != NULL) && (var_s0 < ((level == 1) ? 0x28 : 0x2A1)); var_s0++, D_8036B804 = (D_8036B804 >= 0x2A1)? 0: D_8036B804 + 1){
|
||||
sp3C = (propModelListModel*)((u32)sPropModelList + sizeof(propModelListModel)*D_8036B804);
|
||||
if ((sp3C->model_bin != NULL) && ((sp3C->timestamp < oldest_active_time) || (level == 3))){
|
||||
assetcache_release(sp3C->model_bin);
|
||||
sp3C->model_bin = NULL;
|
||||
if( (level != 1) && (func_80254BC4(1))){
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for(var_s0 = 0; (sPropSpriteList != NULL) && (var_s0 < ((level == 1) ? 0x28 : 0x167)); var_s0++, D_8036B808 = (D_8036B808 >= 0x167)? 0: D_8036B808 + 1){
|
||||
temp_a0_2 = (propModelListSprite*)((u32)sPropSpriteList + sizeof(propModelListSprite)*D_8036B808);
|
||||
if ((temp_a0_2->sprite != 0) && ((temp_a0_2->timestamp < oldest_active_time) || (level == 3))){
|
||||
func_8033B338(&temp_a0_2->sprite, &temp_a0_2->display);
|
||||
if( (level != 1) && (func_80254BC4(1))){
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void propModelList_defrag(void) {
|
||||
BKModelBin *temp_a0;
|
||||
s32 phi_s2;
|
||||
|
||||
sPropSpriteList = (propModelListSprite *) defrag(sPropSpriteList);
|
||||
sPropModelList = (propModelListModel *) defrag(sPropModelList);
|
||||
if (!func_802559A0() && !func_80255AE4() && sPropModelList != NULL) {
|
||||
for(phi_s2 = 0x14; (phi_s2 != 0) && !func_80255AE4(); phi_s2--){
|
||||
D_8036B800++;
|
||||
if (D_8036B800 >= 0x2A2) {
|
||||
D_8036B800 = 0;
|
||||
}
|
||||
temp_a0 = sPropModelList[D_8036B800].model_bin;
|
||||
if (temp_a0 != NULL && (func_802546E4(temp_a0) < 0x2AF8)) {
|
||||
sPropModelList[D_8036B800].model_bin = func_80255888(sPropModelList[D_8036B800].model_bin);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void propModelList_refresh(void) {
|
||||
s32 model_list_index;
|
||||
s32 temp_t7;
|
||||
propModelListSprite *phi_s0;
|
||||
s32 phi_s2;
|
||||
propModelListModel *phi_s0_2;
|
||||
|
||||
for(phi_s0 = sPropSpriteList; phi_s0 < sPropSpriteList + 360; phi_s0++){
|
||||
if (phi_s0->sprite != NULL) {
|
||||
temp_t7 = phi_s0 - sPropSpriteList;
|
||||
func_8033B338(&phi_s0->sprite, &phi_s0->display);
|
||||
phi_s2 = temp_t7 *sizeof(propModelListSprite);
|
||||
*(BKSprite **)((s32)sPropSpriteList + phi_s2) = func_8033B6C4(temp_t7 + 0x572, (BKSpriteDisplayData **)((s32)sPropSpriteList + phi_s2 + 4));
|
||||
}
|
||||
}
|
||||
|
||||
for(phi_s0_2 = sPropModelList; phi_s0_2 < sPropModelList + 674; phi_s0_2++){
|
||||
if(phi_s0_2->model_bin != NULL){
|
||||
model_list_index = phi_s0_2 - sPropModelList;
|
||||
assetcache_release(phi_s0_2->model_bin);
|
||||
sPropModelList[model_list_index].model_bin = (BKModelBin *) assetcache_get(model_list_index + 0x2D1);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
@@ -10,11 +10,18 @@
|
||||
void spawnQueue_unlock(void);
|
||||
void spawnQueue_lock(void);
|
||||
|
||||
extern Actor *actor_spawnWithYaw_s16(enum actor_e id, s16 pos[3], s32 yaw);
|
||||
extern Actor *actor_spawnWithYaw_s32(enum actor_e id, s32 pos[3], s32 yaw);
|
||||
extern Actor *bundle_spawn_s32(enum bundle_e bundle_id, s32 position[3]);
|
||||
extern Actor *bundle_spawn_f32(enum bundle_e bundle_id, f32 position[3]);
|
||||
|
||||
|
||||
Actor *func_802D7558(s32 *, s32, ActorInfo*, u32);
|
||||
Actor *func_802D75B4(s32 *, s32, ActorInfo*, u32);
|
||||
Actor *func_802D7610(s32 *, s32, ActorInfo*, u32);
|
||||
Actor *chBottlesBonus_new(s32 *, s32, ActorInfo*, u32);
|
||||
|
||||
|
||||
extern ActorInfo gameSelect_banjoSleeping; //banjo.without_right_hand
|
||||
extern ActorInfo gameSelect_banjoGameboy; //banjo.playing_gameboy
|
||||
extern ActorInfo gameSelect_banjoCooking; //banjo.cooking
|
||||
@@ -417,7 +424,7 @@ void spawnQueue_free(void){
|
||||
void spawnQueue_func_802C39D4(void){
|
||||
func_803268B4();
|
||||
if(!levelSpecificFlags_validateCRC2()){
|
||||
eeprom_writeBlocks(0, 0, 0x80749530, EEPROM_MAXBLOCKS);
|
||||
eeprom_writeBlocks(0, 0, (void*)0x80749530, EEPROM_MAXBLOCKS);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -1503,7 +1503,7 @@ ActorMarker *chfinalboss_findCollidingJinjo(Actor *this, f32 arg1) {
|
||||
func_80320ED8(this->marker, arg1, 1);
|
||||
prop = func_8032F528();
|
||||
while(prop !=NULL){
|
||||
if (prop->markerFlag){
|
||||
if (prop->is_actor){
|
||||
jinjo = marker_getActor(prop->actorProp.marker);
|
||||
jinjo_marker_id = jinjo->marker->id;
|
||||
if(
|
||||
|
Reference in New Issue
Block a user