mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-11 14:18:39 -04:00
Format everything (#141)
* Add trailing comma * Run format and add some missing trailing commas * Enforce the same clang-format version for everybody * z_en_m_fire1
This commit is contained in:
@@ -27,7 +27,7 @@ void EnAObj_Update1(ActorEnAObj* this, GlobalContext* ctxt) {
|
||||
this->update = (ActorFunc)EnAObj_Update2;
|
||||
} else {
|
||||
v0 = this->base.yawTowardsPlayer - this->base.shape.rot.y;
|
||||
v1 = (v0 < 0)? -v0 : v0;
|
||||
v1 = (v0 < 0) ? -v0 : v0;
|
||||
if ((v1 < 10240) || ((this->base.params == 1) && (v1 > 22528))) {
|
||||
func_800B863C((Actor*)this, ctxt);
|
||||
}
|
||||
|
||||
+45
-46
@@ -128,51 +128,51 @@ void Effect_Add(GlobalContext* ctxt, s32* index, s32 type, u8 param_4, u8 param_
|
||||
if (func_8016A01C(ctxt) != 1) {
|
||||
slotFound = 0;
|
||||
switch (type) {
|
||||
case 0:
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (sEffTable.sparks[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i;
|
||||
params = &sEffTable.sparks[i].params;
|
||||
common = &sEffTable.sparks[i].base;
|
||||
break;
|
||||
case 0:
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (sEffTable.sparks[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i;
|
||||
params = &sEffTable.sparks[i].params;
|
||||
common = &sEffTable.sparks[i].base;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
for (i = 0; i < 25; i++) {
|
||||
if (sEffTable.blures[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i + 3;
|
||||
params = &sEffTable.blures[i].params;
|
||||
common = &sEffTable.blures[i].base;
|
||||
break;
|
||||
break;
|
||||
case 1:
|
||||
case 2:
|
||||
for (i = 0; i < 25; i++) {
|
||||
if (sEffTable.blures[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i + 3;
|
||||
params = &sEffTable.blures[i].params;
|
||||
common = &sEffTable.blures[i].base;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (sEffTable.shieldParticles[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i + 28;
|
||||
params = &sEffTable.shieldParticles[i].params;
|
||||
common = &sEffTable.shieldParticles[i].base;
|
||||
break;
|
||||
break;
|
||||
case 3:
|
||||
for (i = 0; i < 3; i++) {
|
||||
if (sEffTable.shieldParticles[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i + 28;
|
||||
params = &sEffTable.shieldParticles[i].params;
|
||||
common = &sEffTable.shieldParticles[i].base;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
for (i = 0; i < 15; i++) {
|
||||
if (sEffTable.tireMarks[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i + 31;
|
||||
params = &sEffTable.tireMarks[i].params;
|
||||
common = &sEffTable.tireMarks[i].base;
|
||||
break;
|
||||
break;
|
||||
case 4:
|
||||
for (i = 0; i < 15; i++) {
|
||||
if (sEffTable.tireMarks[i].base.active == 0) {
|
||||
slotFound = 1;
|
||||
*index = i + 31;
|
||||
params = &sEffTable.tireMarks[i].params;
|
||||
common = &sEffTable.tireMarks[i].base;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
if (slotFound) {
|
||||
@@ -264,28 +264,28 @@ void Effect_Destroy(GlobalContext* ctxt, s32 index) {
|
||||
}
|
||||
|
||||
if (index < 3) {
|
||||
sEffTable.sparks[index].base.active = 0 ;
|
||||
sEffTable.sparks[index].base.active = 0;
|
||||
sEffInfoTable[0].destroy(&sEffTable.sparks[index].params);
|
||||
return;
|
||||
}
|
||||
|
||||
index -= 3;
|
||||
if (index < 25) {
|
||||
sEffTable.blures[index].base.active = 0 ;
|
||||
sEffTable.blures[index].base.active = 0;
|
||||
sEffInfoTable[1].destroy(&sEffTable.blures[index].params);
|
||||
return;
|
||||
}
|
||||
|
||||
index -= 25;
|
||||
if (index < 3) {
|
||||
sEffTable.shieldParticles[index].base.active = 0 ;
|
||||
sEffTable.shieldParticles[index].base.active = 0;
|
||||
sEffInfoTable[3].destroy(&sEffTable.shieldParticles[index].params);
|
||||
return;
|
||||
}
|
||||
|
||||
index -= 3;
|
||||
if (index < 15) {
|
||||
sEffTable.tireMarks[index].base.active = 0 ;
|
||||
sEffTable.tireMarks[index].base.active = 0;
|
||||
sEffInfoTable[4].destroy(&sEffTable.tireMarks[index].params);
|
||||
return;
|
||||
}
|
||||
@@ -314,4 +314,3 @@ void Effect_DestroyAll(GlobalContext* ctxt) {
|
||||
sEffInfoTable[4].destroy(&sEffTable.tireMarks[i].params);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+39
-34
@@ -12,31 +12,27 @@ void BgCheck2_UpdateActorPosition(CollisionContext* bgCtxt, s32 index, Actor* ac
|
||||
Vec3f newPos;
|
||||
Vec3f posWithInv;
|
||||
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) return;
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
SkinMatrix_SetScaleRotateYRPTranslate(&prevMatrix,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.scale.x,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.scale.y,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.scale.z,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.rot.x,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.rot.y,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.rot.z,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.pos.x,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.pos.y,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.pos.z);
|
||||
SkinMatrix_SetScaleRotateYRPTranslate(
|
||||
&prevMatrix, bgCtxt->dyna.bgActors[index].prevTransform.scale.x,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.scale.y, bgCtxt->dyna.bgActors[index].prevTransform.scale.z,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.rot.x, bgCtxt->dyna.bgActors[index].prevTransform.rot.y,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.rot.z, bgCtxt->dyna.bgActors[index].prevTransform.pos.x,
|
||||
bgCtxt->dyna.bgActors[index].prevTransform.pos.y, bgCtxt->dyna.bgActors[index].prevTransform.pos.z);
|
||||
|
||||
if (SkinMatrix_Invert(&prevMatrix, &prevMatrixInv) == 2) return;
|
||||
if (SkinMatrix_Invert(&prevMatrix, &prevMatrixInv) == 2) {
|
||||
return;
|
||||
}
|
||||
|
||||
SkinMatrix_SetScaleRotateYRPTranslate(&currMatrix,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.scale.x,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.scale.y,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.scale.z,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.rot.x,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.rot.y,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.rot.z,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.pos.x,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.pos.y,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.pos.z);
|
||||
SkinMatrix_SetScaleRotateYRPTranslate(
|
||||
&currMatrix, bgCtxt->dyna.bgActors[index].curTransform.scale.x,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.scale.y, bgCtxt->dyna.bgActors[index].curTransform.scale.z,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.rot.x, bgCtxt->dyna.bgActors[index].curTransform.rot.y,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.rot.z, bgCtxt->dyna.bgActors[index].curTransform.pos.x,
|
||||
bgCtxt->dyna.bgActors[index].curTransform.pos.y, bgCtxt->dyna.bgActors[index].curTransform.pos.z);
|
||||
|
||||
SkinMatrix_Vec3fMtxFMultXYZ(&prevMatrixInv, &actor->world.pos, &posWithInv);
|
||||
SkinMatrix_Vec3fMtxFMultXYZ(&currMatrix, &posWithInv, &newPos);
|
||||
@@ -47,7 +43,9 @@ void BgCheck2_UpdateActorPosition(CollisionContext* bgCtxt, s32 index, Actor* ac
|
||||
void BgCheck2_UpdateActorYRotation(CollisionContext* bgCtxt, s32 index, Actor* actor) {
|
||||
s16 angleChange;
|
||||
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) return;
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
angleChange = bgCtxt->dyna.bgActors[index].curTransform.rot.y - bgCtxt->dyna.bgActors[index].prevTransform.rot.y;
|
||||
|
||||
@@ -60,11 +58,13 @@ void BgCheck2_UpdateActorYRotation(CollisionContext* bgCtxt, s32 index, Actor* a
|
||||
}
|
||||
|
||||
void BgCheck2_AttachToMesh(CollisionContext* bgCtxt, Actor* actor, s32 index) {
|
||||
DynaPolyActor *meshActor;
|
||||
DynaPolyActor* meshActor;
|
||||
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) return;
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
meshActor = BgCheck_GetActorOfMesh(bgCtxt,index);
|
||||
meshActor = BgCheck_GetActorOfMesh(bgCtxt, index);
|
||||
if (meshActor != NULL) {
|
||||
func_800CAE88(meshActor);
|
||||
|
||||
@@ -79,26 +79,31 @@ void BgCheck2_AttachToMesh(CollisionContext* bgCtxt, Actor* actor, s32 index) {
|
||||
|
||||
u32 BgCheck2_UpdateActorAttachedToMesh(CollisionContext* bgCtxt, s32 index, Actor* actor) {
|
||||
u32 wasUpdated = 0;
|
||||
DynaPolyActor *meshActor;
|
||||
DynaPolyActor* meshActor;
|
||||
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) return 0;
|
||||
if (BgCheck_IsActorMeshIndexValid(index) == 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (((bgCtxt->dyna.bgActorFlags[index] & 2) != 0) || ((bgCtxt->dyna.bgActorFlags[index] & 1) == 0)) return 0;
|
||||
if (((bgCtxt->dyna.bgActorFlags[index] & 2) != 0) || ((bgCtxt->dyna.bgActorFlags[index] & 1) == 0)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
meshActor = BgCheck_GetActorOfMesh(bgCtxt,index);
|
||||
meshActor = BgCheck_GetActorOfMesh(bgCtxt, index);
|
||||
|
||||
if (meshActor == NULL) return 0;
|
||||
if (meshActor == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if ((meshActor->unk154 & 1) != 0) {
|
||||
BgCheck2_UpdateActorPosition(bgCtxt,index,actor);
|
||||
BgCheck2_UpdateActorPosition(bgCtxt, index, actor);
|
||||
wasUpdated = 1;
|
||||
}
|
||||
|
||||
if ((meshActor->unk154 & 2) != 0) {
|
||||
BgCheck2_UpdateActorYRotation(bgCtxt,index,actor);
|
||||
BgCheck2_UpdateActorYRotation(bgCtxt, index, actor);
|
||||
wasUpdated = 1;
|
||||
}
|
||||
|
||||
return wasUpdated;
|
||||
}
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ void func_800CAEB0(CollisionContext* bgCtxt, s32 index) {
|
||||
DynaPolyActor* actor;
|
||||
|
||||
actor = BgCheck_GetActorOfMesh(bgCtxt, index);
|
||||
if (actor != (DynaPolyActor *)0x0) {
|
||||
if (actor != (DynaPolyActor*)0x0) {
|
||||
func_800CAE9C(actor);
|
||||
}
|
||||
}
|
||||
@@ -46,7 +46,7 @@ void func_800CAEF4(CollisionContext* bgCtxt, s32 index) {
|
||||
DynaPolyActor* actor;
|
||||
|
||||
actor = BgCheck_GetActorOfMesh(bgCtxt, index);
|
||||
if (actor != (DynaPolyActor *)0x0) {
|
||||
if (actor != (DynaPolyActor*)0x0) {
|
||||
func_800CAEE0(actor);
|
||||
}
|
||||
}
|
||||
|
||||
+23
-22
@@ -10,20 +10,22 @@ s32 nop_800E8ED0(UNK_TYPE4 param_1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void nop_800E8EE0(UNK_TYPE4 param_1) {}
|
||||
void nop_800E8EE0(UNK_TYPE4 param_1) {
|
||||
}
|
||||
|
||||
s32 nop_800E8EEC(UNK_TYPE4 param_1) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void nop_800E8EFC(UNK_TYPE4 param_1) {}
|
||||
void nop_800E8EFC(UNK_TYPE4 param_1) {
|
||||
}
|
||||
|
||||
s32 func_800E8F08(Vec3s* param_1, Vec3s* param_2) {
|
||||
Math_SmoothStepToS(¶m_1->y, 0, 6, 6200, 100);
|
||||
Math_SmoothStepToS(¶m_1->x, 0, 6, 6200, 100);
|
||||
Math_SmoothStepToS(¶m_2->y, 0, 6, 6200, 100);
|
||||
Math_SmoothStepToS(¶m_2->x, 0, 6, 6200, 100);
|
||||
return 1;
|
||||
Math_SmoothStepToS(¶m_1->y, 0, 6, 6200, 100);
|
||||
Math_SmoothStepToS(¶m_1->x, 0, 6, 6200, 100);
|
||||
Math_SmoothStepToS(¶m_2->y, 0, 6, 6200, 100);
|
||||
Math_SmoothStepToS(¶m_2->x, 0, 6, 6200, 100);
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 func_800E8FA4(Actor* actor, Vec3f* param_2, Vec3s* param_3, Vec3s* param_4) {
|
||||
@@ -31,30 +33,30 @@ s32 func_800E8FA4(Actor* actor, Vec3f* param_2, Vec3s* param_3, Vec3s* param_4)
|
||||
s16 targetYaw;
|
||||
s16 yawDiffFromTarget;
|
||||
|
||||
targetPitch = Math_Vec3f_Pitch(&actor->focus.pos,param_2);
|
||||
targetYaw = Math_Vec3f_Yaw(&actor->focus.pos,param_2) - actor->world.rot.y;
|
||||
targetPitch = Math_Vec3f_Pitch(&actor->focus.pos, param_2);
|
||||
targetYaw = Math_Vec3f_Yaw(&actor->focus.pos, param_2) - actor->world.rot.y;
|
||||
|
||||
Math_SmoothStepToS(¶m_3->x, targetPitch, 6, 2000, 1);
|
||||
param_3->x = (param_3->x < -6000)? -6000 : ((6000 < param_3->x)? 6000 : param_3->x);
|
||||
param_3->x = (param_3->x < -6000) ? -6000 : ((6000 < param_3->x) ? 6000 : param_3->x);
|
||||
|
||||
yawDiffFromTarget = Math_SmoothStepToS(¶m_3->y, targetYaw, 6, 2000, 1);
|
||||
param_3->y = (param_3->y < -8000)? -8000 : ((8000 < param_3->y)? 8000 : param_3->y);
|
||||
param_3->y = (param_3->y < -8000) ? -8000 : ((8000 < param_3->y) ? 8000 : param_3->y);
|
||||
|
||||
if (yawDiffFromTarget != 0) {
|
||||
if ((param_3->y < 0? -param_3->y : param_3->y) < 8000) {
|
||||
if ((param_3->y < 0 ? -param_3->y : param_3->y) < 8000) {
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
Math_SmoothStepToS(¶m_4->y, targetYaw - param_3->y, 4, 2000, 1);
|
||||
param_4->y = (param_4->y < -12000)? -12000 : ((12000 < param_4->y)? 12000 : param_4->y);
|
||||
param_4->y = (param_4->y < -12000) ? -12000 : ((12000 < param_4->y) ? 12000 : param_4->y);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
s32 func_800E9138(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* param_4, f32 param_5) {
|
||||
s16 sVar3;
|
||||
Actor *player;
|
||||
Actor* player;
|
||||
Vec3f local_14;
|
||||
|
||||
player = (ctxt->actorCtx).actorList[2].first;
|
||||
@@ -64,8 +66,8 @@ s32 func_800E9138(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
if (((ctxt->csCtx).state == 0) && (D_801D0D50 == 0)) {
|
||||
sVar3 = actor->yawTowardsPlayer - actor->shape.rot.y;
|
||||
// TODO is this shifting because of a missing cast?
|
||||
if (0x42ff < (sVar3 < 0? ((-sVar3 << 0x10) >> 0x10) : ((sVar3 << 0x10) >> 0x10))) {
|
||||
func_800E8F08(param_3,param_4);
|
||||
if (0x42ff < (sVar3 < 0 ? ((-sVar3 << 0x10) >> 0x10) : ((sVar3 << 0x10) >> 0x10))) {
|
||||
func_800E8F08(param_3, param_4);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -76,13 +78,13 @@ s32 func_800E9138(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
local_14 = player->focus.pos;
|
||||
}
|
||||
|
||||
func_800E8FA4(actor,&local_14,param_3,param_4);
|
||||
func_800E8FA4(actor, &local_14, param_3, param_4);
|
||||
|
||||
return 1;
|
||||
}
|
||||
s32 func_800E9250(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* param_4, Vec3f param_5) {
|
||||
s16 sVar3;
|
||||
Actor *player;
|
||||
Actor* player;
|
||||
Vec3f local_14;
|
||||
|
||||
player = (ctxt->actorCtx).actorList[2].first;
|
||||
@@ -91,8 +93,8 @@ s32 func_800E9250(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
if (((ctxt->csCtx).state == 0) && (D_801D0D50 == 0)) {
|
||||
sVar3 = actor->yawTowardsPlayer - actor->shape.rot.y;
|
||||
// TODO is this shifting because of a missing cast?
|
||||
if (0x42ff < (sVar3 < 0? ((-sVar3 << 0x10) >> 0x10) : ((sVar3 << 0x10) >> 0x10))) {
|
||||
func_800E8F08(param_3,param_4);
|
||||
if (0x42ff < (sVar3 < 0 ? ((-sVar3 << 0x10) >> 0x10) : ((sVar3 << 0x10) >> 0x10))) {
|
||||
func_800E8F08(param_3, param_4);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
@@ -103,8 +105,7 @@ s32 func_800E9250(GlobalContext* ctxt, Actor* actor, Vec3s* param_3, Vec3s* para
|
||||
local_14 = player->focus.pos;
|
||||
}
|
||||
|
||||
func_800E8FA4(actor,&local_14,param_3,param_4);
|
||||
func_800E8FA4(actor, &local_14, param_3, param_4);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,5 +2,7 @@
|
||||
#include <global.h>
|
||||
|
||||
void func_80183070(void) {
|
||||
for(;;) func_80087A6C(1000);
|
||||
for (;;) {
|
||||
func_80087A6C(1000);
|
||||
}
|
||||
}
|
||||
|
||||
+30
-35
@@ -11,13 +11,13 @@ u32 D_801D1514[3] = { 0 };
|
||||
|
||||
void Game_UpdateFramerateVariables(s32 divisor) {
|
||||
gFramerateDivisor = divisor;
|
||||
gFramerateDivisorF = (f32) divisor;
|
||||
gFramerateDivisorHalf = (f32) (divisor * 0.5f);
|
||||
gFramerateDivisorThird = (f32) (divisor / 3.0f);
|
||||
gFramerateDivisorF = (f32)divisor;
|
||||
gFramerateDivisorHalf = (f32)(divisor * 0.5f);
|
||||
gFramerateDivisorThird = (f32)(divisor / 3.0f);
|
||||
}
|
||||
|
||||
void Game_SetFramerateDivisor(GameState *gameState, s32 divisor) {
|
||||
R_UPDATE_RATE = (s16) divisor;
|
||||
void Game_SetFramerateDivisor(GameState* gameState, s32 divisor) {
|
||||
R_UPDATE_RATE = (s16)divisor;
|
||||
gameState->framerateDivisor = divisor;
|
||||
Game_UpdateFramerateVariables(divisor);
|
||||
}
|
||||
@@ -63,11 +63,11 @@ void GameState_SetFBFilter(Gfx** gfx, u32 arg1) {
|
||||
*gfx = _gfx;
|
||||
}
|
||||
|
||||
void Game_Nop80173534(GameState *ctxt) {
|
||||
void Game_Nop80173534(GameState* ctxt) {
|
||||
;
|
||||
}
|
||||
|
||||
void GameState_Draw(GameState *ctxt, GraphicsContext *gCtxt) {
|
||||
void GameState_Draw(GameState* ctxt, GraphicsContext* gCtxt) {
|
||||
Gfx* nextDisplayList;
|
||||
Gfx* _polyOpa;
|
||||
// Unused vars impact regalloc
|
||||
@@ -79,7 +79,7 @@ void GameState_Draw(GameState *ctxt, GraphicsContext *gCtxt) {
|
||||
gSPDisplayList(gCtxt->overlay.p++, nextDisplayList);
|
||||
|
||||
if (R_FB_FILTER_TYPE && R_FB_FILTER_ENV_COLOR(3) == 0) {
|
||||
GameState_SetFBFilter(&nextDisplayList, (u32) gCtxt->zbuffer);
|
||||
GameState_SetFBFilter(&nextDisplayList, (u32)gCtxt->zbuffer);
|
||||
}
|
||||
|
||||
if (R_ENABLE_ARENA_DBG < 0) {
|
||||
@@ -99,7 +99,7 @@ lblUnk:; // Label prevents reordering, if(1) around the above block don't seem t
|
||||
}
|
||||
}
|
||||
|
||||
void Game_ResetSegments(GraphicsContext *gCtxt) {
|
||||
void Game_ResetSegments(GraphicsContext* gCtxt) {
|
||||
gSPSegment(gCtxt->polyOpa.p++, 0, 0);
|
||||
gSPSegment(gCtxt->polyOpa.p++, 0xF, gCtxt->framebuffer);
|
||||
gSPSegment(gCtxt->polyXlu.p++, 0, 0);
|
||||
@@ -108,7 +108,7 @@ void Game_ResetSegments(GraphicsContext *gCtxt) {
|
||||
gSPSegment(gCtxt->overlay.p++, 0xF, gCtxt->framebuffer);
|
||||
}
|
||||
|
||||
void func_801736DC(GraphicsContext *gCtxt) {
|
||||
void func_801736DC(GraphicsContext* gCtxt) {
|
||||
Gfx* nextDisplayList;
|
||||
Gfx* _polyOpa;
|
||||
|
||||
@@ -120,11 +120,11 @@ void func_801736DC(GraphicsContext *gCtxt) {
|
||||
gCtxt->polyOpa.p = nextDisplayList;
|
||||
}
|
||||
|
||||
void Game_UpdateInput(GameState *ctxt) {
|
||||
void Game_UpdateInput(GameState* ctxt) {
|
||||
Padmgr_GetInput(ctxt->input, 1);
|
||||
}
|
||||
|
||||
void Game_Update(GameState *ctxt) {
|
||||
void Game_Update(GameState* ctxt) {
|
||||
GraphicsContext* _gCtx;
|
||||
_gCtx = ctxt->gfxCtx;
|
||||
|
||||
@@ -138,14 +138,14 @@ void Game_Update(GameState *ctxt) {
|
||||
}
|
||||
}
|
||||
|
||||
void Game_IncrementFrameCount(GameState *ctxt) {
|
||||
void Game_IncrementFrameCount(GameState* ctxt) {
|
||||
Game_Nop80173534(ctxt);
|
||||
ctxt->frames++;
|
||||
}
|
||||
|
||||
void Game_InitHeap(GameState *ctxt, u32 size) {
|
||||
GameState *_ctx;
|
||||
void *buf;
|
||||
void Game_InitHeap(GameState* ctxt, u32 size) {
|
||||
GameState* _ctx;
|
||||
void* buf;
|
||||
|
||||
_ctx = ctxt;
|
||||
buf = Gamealloc_Alloc(&_ctx->alloc, size);
|
||||
@@ -159,14 +159,13 @@ void Game_InitHeap(GameState *ctxt, u32 size) {
|
||||
assert_fail("../game.c", 0x40B);
|
||||
}
|
||||
|
||||
void Game_ResizeHeap(GameState *ctxt, u32 size)
|
||||
{
|
||||
GameAlloc *alloc;
|
||||
void *buf;
|
||||
void Game_ResizeHeap(GameState* ctxt, u32 size) {
|
||||
GameAlloc* alloc;
|
||||
void* buf;
|
||||
u32 systemMaxFree;
|
||||
u32 bytesFree;
|
||||
u32 bytesAllocated;
|
||||
void *heapStart;
|
||||
void* heapStart;
|
||||
|
||||
heapStart = ctxt->heap.bufp;
|
||||
alloc = &ctxt->alloc;
|
||||
@@ -174,23 +173,19 @@ void Game_ResizeHeap(GameState *ctxt, u32 size)
|
||||
Gamealloc_Free(alloc, heapStart);
|
||||
StartHeap_AnalyzeArena(&systemMaxFree, &bytesFree, &bytesAllocated);
|
||||
size = ((systemMaxFree - (sizeof(ArenaNode))) < size) ? (0) : (size);
|
||||
if (!size)
|
||||
{
|
||||
if (!size) {
|
||||
size = systemMaxFree - (sizeof(ArenaNode));
|
||||
}
|
||||
|
||||
if (buf = Gamealloc_Alloc(alloc, size))
|
||||
{
|
||||
if (buf = Gamealloc_Alloc(alloc, size)) {
|
||||
THA_Ct(&ctxt->heap, buf, size);
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
THA_Ct(&ctxt->heap, 0, 0);
|
||||
assert_fail("../game.c", 0x432);
|
||||
}
|
||||
}
|
||||
|
||||
void Game_StateInit(GameState *ctxt, GameStateFunc gameStateInit, GraphicsContext *gCtxt) {
|
||||
void Game_StateInit(GameState* ctxt, GameStateFunc gameStateInit, GraphicsContext* gCtxt) {
|
||||
ctxt->gfxCtx = gCtxt;
|
||||
ctxt->frames = 0U;
|
||||
ctxt->main = NULL;
|
||||
@@ -220,7 +215,7 @@ lblUnk:;
|
||||
osSendMesg(&ctxt->gfxCtx->unk5C, NULL, 1);
|
||||
}
|
||||
|
||||
void Game_StateFini(GameState *ctxt) {
|
||||
void Game_StateFini(GameState* ctxt) {
|
||||
func_80172BC0();
|
||||
func_8019E014();
|
||||
osRecvMesg(&ctxt->gfxCtx->unk5C, 0, 1);
|
||||
@@ -239,23 +234,23 @@ void Game_StateFini(GameState *ctxt) {
|
||||
Gamealloc_FreeAll(&ctxt->alloc);
|
||||
}
|
||||
|
||||
GameStateFunc Game_GetNextStateInit(GameState *ctxt) {
|
||||
GameStateFunc Game_GetNextStateInit(GameState* ctxt) {
|
||||
return ctxt->nextGameStateInit;
|
||||
}
|
||||
|
||||
u32 Game_GetNextStateSize(GameState *ctxt) {
|
||||
u32 Game_GetNextStateSize(GameState* ctxt) {
|
||||
return ctxt->nextGameStateSize;
|
||||
}
|
||||
|
||||
u32 Game_GetShouldContinue(GameState *ctxt) {
|
||||
u32 Game_GetShouldContinue(GameState* ctxt) {
|
||||
return ctxt->running;
|
||||
}
|
||||
|
||||
s32 Game_GetHeapFreeSize(GameState *ctxt) {
|
||||
s32 Game_GetHeapFreeSize(GameState* ctxt) {
|
||||
return THA_GetSize(&ctxt->heap);
|
||||
}
|
||||
|
||||
s32 func_80173B48(GameState *ctxt) {
|
||||
s32 func_80173B48(GameState* ctxt) {
|
||||
s32 result;
|
||||
result = OS_CYCLES_TO_NSEC(ctxt->framerateDivisor * sIrqMgrRetraceTime) - OS_CYCLES_TO_NSEC(D_801FBAF0);
|
||||
return result;
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <global.h>
|
||||
|
||||
void Matrix_Init(GameState* state) {
|
||||
sMatrixStack = (MtxF *)THA_AllocEndAlign16(&state->heap, 0x500);
|
||||
sMatrixStack = (MtxF*)THA_AllocEndAlign16(&state->heap, 0x500);
|
||||
sCurrentMatrix = sMatrixStack;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,6 @@ void Matrix_Push(void) {
|
||||
|
||||
sCurrentMatrix++;
|
||||
Matrix_MtxFCopy(sCurrentMatrix, prev);
|
||||
|
||||
}
|
||||
|
||||
void Matrix_Pop(void) {
|
||||
|
||||
+10
-10
@@ -1,22 +1,22 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
#define SLOWLY_STATUS_DONE (1 << 0)
|
||||
#define SLOWLY_STATUS_DONE (1 << 0)
|
||||
#define SLOWLY_STATUS_STARTED (1 << 1)
|
||||
|
||||
void Slowly_Main(SlowlyTask* slowly) {
|
||||
slowly->status |= SLOWLY_STATUS_STARTED;
|
||||
|
||||
switch (slowly->callbackArgCount) {
|
||||
case SLOWLY_CALLBACK_NO_ARGS:
|
||||
slowly->callback0();
|
||||
break;
|
||||
case SLOWLY_CALLBACK_ONE_ARG:
|
||||
slowly->callback1(slowly->callbackArg0);
|
||||
break;
|
||||
case SLOWLY_CALLBACK_TWO_ARGS:
|
||||
slowly->callback2(slowly->callbackArg0, slowly->callbackArg1);
|
||||
break;
|
||||
case SLOWLY_CALLBACK_NO_ARGS:
|
||||
slowly->callback0();
|
||||
break;
|
||||
case SLOWLY_CALLBACK_ONE_ARG:
|
||||
slowly->callback1(slowly->callbackArg0);
|
||||
break;
|
||||
case SLOWLY_CALLBACK_TWO_ARGS:
|
||||
slowly->callback2(slowly->callbackArg0, slowly->callbackArg1);
|
||||
break;
|
||||
}
|
||||
|
||||
slowly->status |= SLOWLY_STATUS_DONE;
|
||||
|
||||
@@ -45,22 +45,23 @@ void TitleSetup_GameStateResetContext(void) {
|
||||
YREG(43) = 0xB1;
|
||||
}
|
||||
|
||||
void TitleSetup_InitImpl(GameState *gameState) {
|
||||
void TitleSetup_InitImpl(GameState* gameState) {
|
||||
func_80185908();
|
||||
func_800E9360();
|
||||
TitleSetup_GameStateResetContext();
|
||||
|
||||
gameState->running = 0;
|
||||
|
||||
setNextGamestate:; // This label is probably a leftover of a debug ifdef, it's essential to not have gameState->running reordered!
|
||||
setNextGamestate
|
||||
:; // This label is probably a leftover of a debug ifdef, it's essential to not have gameState->running reordered!
|
||||
SET_NEXT_GAMESTATE(gameState, Title_Init, TitleContext);
|
||||
}
|
||||
|
||||
void TitleSetup_Destroy(GameState *gameState) {
|
||||
void TitleSetup_Destroy(GameState* gameState) {
|
||||
;
|
||||
}
|
||||
|
||||
void TitleSetup_Init(GameState *gameState) {
|
||||
void TitleSetup_Init(GameState* gameState) {
|
||||
gameState->destroy = &TitleSetup_Destroy;
|
||||
TitleSetup_InitImpl(gameState);
|
||||
}
|
||||
|
||||
+14
-17
@@ -1,11 +1,11 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
//From OOT
|
||||
// From OOT
|
||||
#define ABS(x) ((x) < 0 ? -(x) : (x))
|
||||
#define DECR(x) ((x) == 0 ? 0 : ((x) -= 1))
|
||||
|
||||
void Actor_PrintLists(ActorContext *actorCtx) {
|
||||
void Actor_PrintLists(ActorContext* actorCtx) {
|
||||
ActorListEntry* actorList = &actorCtx->actorList[0];
|
||||
Actor* actor;
|
||||
s32 i;
|
||||
@@ -13,7 +13,7 @@ void Actor_PrintLists(ActorContext *actorCtx) {
|
||||
FaultDrawer_SetCharPad(-2, 0);
|
||||
FaultDrawer_Printf(D_801DC9D0, gMaxActorId);
|
||||
FaultDrawer_Printf(D_801DC9D8);
|
||||
|
||||
|
||||
for (i = 0; i < ARRAY_COUNT(actorCtx->actorList); i++) {
|
||||
actor = actorList[i].first;
|
||||
|
||||
@@ -21,7 +21,6 @@ void Actor_PrintLists(ActorContext *actorCtx) {
|
||||
FaultDrawer_Printf(D_801DC9F8, i, actor, actor->id, actor->category, D_801DCA10);
|
||||
actor = actor->next;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,10 +39,9 @@ void ActorShadow_Draw(Actor* actor, Lights* lights, GlobalContext* globalCtx, Gf
|
||||
if (dy >= -50.0f && dy < 500.0f) {
|
||||
f32 shadowScale;
|
||||
MtxF mtx;
|
||||
|
||||
|
||||
OPEN_DISPS(globalCtx->state.gfxCtx);
|
||||
|
||||
|
||||
POLY_OPA_DISP = Gfx_CallSetupDL(POLY_OPA_DISP, 0x2C);
|
||||
|
||||
gDPSetCombineLERP(POLY_OPA_DISP++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0,
|
||||
@@ -66,12 +64,11 @@ void ActorShadow_Draw(Actor* actor, Lights* lights, GlobalContext* globalCtx, Gf
|
||||
Matrix_RotateY((f32)actor->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY);
|
||||
}
|
||||
|
||||
shadowScale = 1.0f - (dy * D_801DCA14);
|
||||
shadowScale = 1.0f - (dy * D_801DCA14);
|
||||
shadowScale *= actor->shape.shadowScale;
|
||||
Matrix_Scale(shadowScale * actor->scale.x, 1.0f, shadowScale * actor->scale.z, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, dlist);
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||
@@ -129,8 +126,7 @@ void func_800B40E0(GlobalContext* globalCtx, Light* light, MtxF* arg2, s32 arg3,
|
||||
Matrix_RotateY(sp58, MTXMODE_APPLY);
|
||||
Matrix_Scale(arg5, 1.0f, arg5 * arg6, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx),
|
||||
G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
|
||||
gSPDisplayList(POLY_OPA_DISP++, D_04075B30);
|
||||
|
||||
CLOSE_DISPS(globalCtx->state.gfxCtx);
|
||||
@@ -178,7 +174,7 @@ u32 Flags_GetSwitch(GlobalContext* ctxt, s32 flag) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
void Actor_SetSwitchFlag(GlobalContext* ctxt, s32 flag){
|
||||
void Actor_SetSwitchFlag(GlobalContext* ctxt, s32 flag) {
|
||||
if (flag >= 0 && flag < 0x80) {
|
||||
ctxt->actorCtx.switchFlags[(flag & -0x20) >> 5] |= 1 << (flag & 0x1F);
|
||||
}
|
||||
@@ -250,7 +246,8 @@ void Actor_TitleCardContextInit(GlobalContext* ctxt, TitleCardContext* titleCtxt
|
||||
titleCtxt->alpha = 0;
|
||||
}
|
||||
|
||||
void Actor_TitleCardCreate(GlobalContext* ctxt, TitleCardContext* titleCtxt, u32 texture, s16 param_4, s16 param_5, u8 param_6, u8 param_7) {
|
||||
void Actor_TitleCardCreate(GlobalContext* ctxt, TitleCardContext* titleCtxt, u32 texture, s16 param_4, s16 param_5,
|
||||
u8 param_6, u8 param_7) {
|
||||
titleCtxt->texture = texture;
|
||||
titleCtxt->unk4 = param_4;
|
||||
titleCtxt->unk6 = param_5;
|
||||
@@ -404,7 +401,7 @@ void Actor_SetVelocityAndMoveYRotationAndGravity(Actor* actor) {
|
||||
}
|
||||
|
||||
void Actor_SetVelocityXYRotation(Actor* actor) {
|
||||
f32 velX = Math_CosS(actor->world.rot.x) * actor->speedXZ;
|
||||
f32 velX = Math_CosS(actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.x = Math_SinS(actor->world.rot.y) * velX;
|
||||
actor->velocity.y = Math_SinS(actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.z = Math_CosS(actor->world.rot.y) * velX;
|
||||
@@ -416,7 +413,7 @@ void Actor_SetVelocityAndMoveXYRotation(Actor* actor) {
|
||||
}
|
||||
|
||||
void Actor_SetVelocityXYRotationReverse(Actor* actor) {
|
||||
f32 velX = Math_CosS(-actor->world.rot.x) * actor->speedXZ;
|
||||
f32 velX = Math_CosS(-actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.x = Math_SinS(actor->world.rot.y) * velX;
|
||||
actor->velocity.y = Math_SinS(-actor->world.rot.x) * actor->speedXZ;
|
||||
actor->velocity.z = Math_CosS(actor->world.rot.y) * velX;
|
||||
@@ -740,9 +737,9 @@ void Actor_FreeOverlay(ActorOverlay* entry) {
|
||||
if (entry->nbLoaded == 0) {
|
||||
ramAddr = entry->loadedRamAddr;
|
||||
if (ramAddr != NULL) {
|
||||
//Bit 1 - always loaded
|
||||
// Bit 1 - always loaded
|
||||
if ((entry->allocType & 2) == 0) {
|
||||
//Bit 0 - don't alloc memory
|
||||
// Bit 0 - don't alloc memory
|
||||
if ((entry->allocType & 1) != 0) {
|
||||
entry->loadedRamAddr = NULL;
|
||||
} else {
|
||||
|
||||
@@ -2,10 +2,10 @@
|
||||
#include <global.h>
|
||||
#include "initvars.h"
|
||||
|
||||
#define ACTOR_OVERLAY(name, allocType) \
|
||||
{ \
|
||||
(u32)_ovl_##name##SegmentRomStart, (u32)_ovl_##name##SegmentRomEnd, _ovl_##name##SegmentStart, \
|
||||
_ovl_##name##SegmentEnd, NULL, &name##_InitVars, NULL, allocType, 0 \
|
||||
#define ACTOR_OVERLAY(name, allocType) \
|
||||
{ \
|
||||
(u32) _ovl_##name##SegmentRomStart, (u32)_ovl_##name##SegmentRomEnd, _ovl_##name##SegmentStart, \
|
||||
_ovl_##name##SegmentEnd, NULL, &name##_InitVars, NULL, allocType, 0 \
|
||||
}
|
||||
|
||||
#define ACTOR_OVERLAY_INTERNAL(name, allocType) \
|
||||
|
||||
@@ -431,4 +431,3 @@ f32 func_800C411C(CollisionContext* bgCtxt, CollisionPoly* arg1, s32* arg2, Acto
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_bgcheck/func_800CA9D0.asm")
|
||||
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_bgcheck/func_800CAA14.asm")
|
||||
|
||||
|
||||
@@ -55,7 +55,7 @@ DamageTable sDamageTablePresets[] = {
|
||||
* is out of range.
|
||||
*/
|
||||
DamageTable* DamageTable_Get(s32 index) {
|
||||
if (index < 0 || index > ARRAY_COUNT(sDamageTablePresets)-1) {
|
||||
if (index < 0 || index > ARRAY_COUNT(sDamageTablePresets) - 1) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
@@ -329,8 +329,8 @@ s32 Collider_SetJntSphToActor(GlobalContext* ctxt, ColliderJntSph* collider, Col
|
||||
return 0;
|
||||
}
|
||||
|
||||
for (destElem = collider->elements, srcElem = src->elements;
|
||||
destElem < &collider->elements[collider->count]; destElem++, srcElem++) {
|
||||
for (destElem = collider->elements, srcElem = src->elements; destElem < &collider->elements[collider->count];
|
||||
destElem++, srcElem++) {
|
||||
Collider_InitJntSphElement(ctxt, destElem);
|
||||
Collider_SetJntSphElement(ctxt, destElem, srcElem);
|
||||
}
|
||||
|
||||
@@ -17,7 +17,8 @@ void EffFootmark_Init(GlobalContext* ctxt) {
|
||||
}
|
||||
}
|
||||
|
||||
void EffFootmark_Add(GlobalContext* ctxt, MtxF* displayMatrix, Actor* actor, u8 id, Vec3f* location, u16 size, u8 red, u8 green, u8 blue, u16 alpha, u16 alphaChange, u16 fadeoutDelay) {
|
||||
void EffFootmark_Add(GlobalContext* ctxt, MtxF* displayMatrix, Actor* actor, u8 id, Vec3f* location, u16 size, u8 red,
|
||||
u8 green, u8 blue, u16 alpha, u16 alphaChange, u16 fadeoutDelay) {
|
||||
s32 i;
|
||||
EffFootmark* footmark;
|
||||
EffFootmark* destination = NULL;
|
||||
@@ -52,7 +53,7 @@ void EffFootmark_Add(GlobalContext* ctxt, MtxF* displayMatrix, Actor* actor, u8
|
||||
if (destination == NULL) {
|
||||
destination = oldest;
|
||||
}
|
||||
Matrix_MtxFCopy(&destination->displayMatrix,displayMatrix);
|
||||
Matrix_MtxFCopy(&destination->displayMatrix, displayMatrix);
|
||||
destination->actor = actor;
|
||||
destination->location.x = location->x;
|
||||
destination->location.y = location->y;
|
||||
@@ -98,7 +99,7 @@ void EffFootmark_Update(GlobalContext* ctxt) {
|
||||
void EffFootmark_Draw(GlobalContext* ctxt) {
|
||||
EffFootmark* footmark;
|
||||
s32 i;
|
||||
GraphicsContext *gfxCtx = ctxt->state.gfxCtx;
|
||||
GraphicsContext* gfxCtx = ctxt->state.gfxCtx;
|
||||
|
||||
func_8012C448(ctxt->state.gfxCtx);
|
||||
|
||||
@@ -111,10 +112,10 @@ void EffFootmark_Draw(GlobalContext* ctxt) {
|
||||
|
||||
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(ctxt->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD);
|
||||
|
||||
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, footmark->red, footmark->green, footmark->blue, footmark->alpha >> 8);
|
||||
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, footmark->red, footmark->green, footmark->blue,
|
||||
footmark->alpha >> 8);
|
||||
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, D_801BC288);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -112,7 +112,9 @@ s32 EffectSS_FindFreeSpace(u32 priority, u32* tableEntry) {
|
||||
i = 0;
|
||||
}
|
||||
|
||||
if (i == EffectSS2Info.searchIndex) break;
|
||||
if (i == EffectSS2Info.searchIndex) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (ret == 1) {
|
||||
@@ -137,7 +139,6 @@ s32 EffectSS_FindFreeSpace(u32 priority, u32* tableEntry) {
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
*tableEntry = i;
|
||||
@@ -183,7 +184,8 @@ void EffectSs_Spawn(GlobalContext* ctxt, s32 type, s32 priority, void* initData)
|
||||
return;
|
||||
}
|
||||
|
||||
load_and_relocate_overlay(entry->vromStart, entry->vromEnd, entry->vramStart, entry->vramEnd, entry->loadedRamAddr);
|
||||
load_and_relocate_overlay(entry->vromStart, entry->vromEnd, entry->vramStart, entry->vramEnd,
|
||||
entry->loadedRamAddr);
|
||||
}
|
||||
|
||||
// XXX this should use a0, but it doesn't
|
||||
@@ -262,13 +264,9 @@ void EffectSS_DrawAllParticles(GlobalContext* ctxt) {
|
||||
|
||||
for (i = 0; i < EffectSS2Info.size; i++) {
|
||||
if (EffectSS2Info.data_table[i].life > -1) {
|
||||
if (EffectSS2Info.data_table[i].pos.x > 32000 ||
|
||||
EffectSS2Info.data_table[i].pos.x < -32000 ||
|
||||
EffectSS2Info.data_table[i].pos.y > 32000 ||
|
||||
EffectSS2Info.data_table[i].pos.y < -32000 ||
|
||||
EffectSS2Info.data_table[i].pos.z > 32000 ||
|
||||
EffectSS2Info.data_table[i].pos.z < -32000
|
||||
) {
|
||||
if (EffectSS2Info.data_table[i].pos.x > 32000 || EffectSS2Info.data_table[i].pos.x < -32000 ||
|
||||
EffectSS2Info.data_table[i].pos.y > 32000 || EffectSS2Info.data_table[i].pos.y < -32000 ||
|
||||
EffectSS2Info.data_table[i].pos.z > 32000 || EffectSS2Info.data_table[i].pos.z < -32000) {
|
||||
EffectSS_Delete(&EffectSS2Info.data_table[i]);
|
||||
} else {
|
||||
EffectSS_DrawParticle(ctxt, i);
|
||||
|
||||
@@ -343,7 +343,6 @@ void EffectSsGSpk_SpawnFuse(GlobalContext* globalCtx, Actor* actor, Vec3f* pos,
|
||||
EffectSsGSpk_SpawnSmall(globalCtx, actor, pos, velocity, accel, &primColor, &envColor);
|
||||
}
|
||||
|
||||
|
||||
extern Color_RGBA8 D_801AE3D8;
|
||||
extern Color_RGBA8 D_801AE3DC;
|
||||
|
||||
@@ -782,7 +781,8 @@ void EffectSsIcePiece_SpawnBurst(GlobalContext* globalCtx, Vec3f* refPos, f32 sc
|
||||
|
||||
// EffectSsEnIce Spawn Functions
|
||||
|
||||
void EffectSsEnIce_SpawnFlyingVec3f(GlobalContext* globalCtx, Actor* actor, Vec3f * pos, Color_RGBA8 * prim, Color_RGBA8 * env, f32 scale) {
|
||||
void EffectSsEnIce_SpawnFlyingVec3f(GlobalContext* globalCtx, Actor* actor, Vec3f* pos, Color_RGBA8* prim,
|
||||
Color_RGBA8* env, f32 scale) {
|
||||
|
||||
EffectSsEnIceInitParams initParams;
|
||||
|
||||
@@ -936,8 +936,8 @@ void EffectSsExtra_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity,
|
||||
}
|
||||
|
||||
// EffectSsDeadDb Spawn Functions
|
||||
void EffectSsDeadDb_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, Color_RGBA8* prim, Color_RGBA8* env,
|
||||
s16 scale, s16 scaleStep, s32 unk) {
|
||||
void EffectSsDeadDb_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, Color_RGBA8* prim,
|
||||
Color_RGBA8* env, s16 scale, s16 scaleStep, s32 unk) {
|
||||
EffectSsDeadDbInitParams initParams;
|
||||
|
||||
Math_Vec3f_Copy(&initParams.pos, pos);
|
||||
@@ -960,13 +960,15 @@ void EffectSsDeadDb_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity,
|
||||
extern Color_RGBA8 D_801AE48C;
|
||||
extern Color_RGBA8 D_801AE490[4];
|
||||
|
||||
void func_800B3030(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16 scaleStep, s32 colorIndex) {
|
||||
void func_800B3030(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, s16 scale, s16 scaleStep,
|
||||
s32 colorIndex) {
|
||||
EffectSsDeadDb_Spawn(globalCtx, pos, velocity, accel, &D_801AE48C, &D_801AE490[colorIndex], scale, scaleStep, 9);
|
||||
}
|
||||
|
||||
// EffectSsDeadDd Spawn Functions
|
||||
|
||||
void EffectSsDeadDd_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, Color_RGBA8* prim, Color_RGBA8* env, s16 scale, s16 scaleStep, s16 alphaStep, s32 life) {
|
||||
void EffectSsDeadDd_Spawn(GlobalContext* globalCtx, Vec3f* pos, Vec3f* velocity, Vec3f* accel, Color_RGBA8* prim,
|
||||
Color_RGBA8* env, s16 scale, s16 scaleStep, s16 alphaStep, s32 life) {
|
||||
EffectSsDeadDdInitParams initParams;
|
||||
|
||||
Math_Vec3f_Copy(&initParams.pos, pos);
|
||||
|
||||
+427
-385
@@ -30,13 +30,16 @@ ActorInit En_Item00_InitVars = {
|
||||
|
||||
ColliderCylinderInit enItem00CylinderInit = {
|
||||
{ COLTYPE_NONE, AT_NONE, AC_ON | AT_TYPE_PLAYER, OC1_NONE, OC2_NONE, COLSHAPE_CYLINDER },
|
||||
{ ELEMTYPE_UNK0, { 0x00000000, 0x00, 0x00 }, { 0x00000010, 0x00, 0x00 }, TOUCH_NONE | TOUCH_SFX_NORMAL, BUMP_ON, OCELEM_NONE },
|
||||
{ ELEMTYPE_UNK0,
|
||||
{ 0x00000000, 0x00, 0x00 },
|
||||
{ 0x00000010, 0x00, 0x00 },
|
||||
TOUCH_NONE | TOUCH_SFX_NORMAL,
|
||||
BUMP_ON,
|
||||
OCELEM_NONE },
|
||||
{ 10, 30, 0, { 0, 0, 0 } },
|
||||
};
|
||||
|
||||
InitChainEntry enItem00InitVars[1] = {
|
||||
ICHAIN_F32(targetArrowOffset, 2000, ICHAIN_STOP)
|
||||
};
|
||||
InitChainEntry enItem00InitVars[1] = { ICHAIN_F32(targetArrowOffset, 2000, ICHAIN_STOP) };
|
||||
|
||||
void EnItem00_SetObject(EnItem00* this, GlobalContext* globalCtx, f32* shadowOffset, f32* shadowScale) {
|
||||
Actor_SetObjectSegment(globalCtx, &this->actor);
|
||||
@@ -79,89 +82,89 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
this->unk150 = 1;
|
||||
|
||||
switch (this->actor.params) {
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
case ITEM00_RUPEE_RED:
|
||||
Actor_SetScale(&this->actor, 0.015f);
|
||||
this->unk154 = 0.015f;
|
||||
shadowOffset = 750.0f;
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
this->unk150 = 0;
|
||||
Actor_SetScale(&this->actor, 0.03f);
|
||||
this->unk154 = 0.03f;
|
||||
shadowOffset = 350.0f;
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
this->unk150 = 0;
|
||||
Actor_SetScale(&this->actor, 0.02f);
|
||||
this->unk154 = 0.02f;
|
||||
shadowOffset = 650.0f;
|
||||
if (this->actor.params == ITEM00_HEART_CONTAINER) {
|
||||
sp30 = -1;
|
||||
}
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
this->actor.home.rot.z = randPlusMinusPoint5Scaled(65535.0f);
|
||||
shadowOffset = 430.0f;
|
||||
Actor_SetScale(&this->actor, 0.02f);
|
||||
this->unk154 = 0.02f;
|
||||
break;
|
||||
case ITEM00_ARROWS_10:
|
||||
case ITEM00_ARROWS_30:
|
||||
case ITEM00_ARROWS_40:
|
||||
case ITEM00_ARROWS_50:
|
||||
Actor_SetScale(&this->actor, 0.035f);
|
||||
this->unk154 = 0.035f;
|
||||
shadowOffset = 250.0f;
|
||||
break;
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_BOMBS_B:
|
||||
case ITEM00_NUTS_1:
|
||||
case ITEM00_STICK:
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
case ITEM00_NUTS_10:
|
||||
case ITEM00_BOMBS_0:
|
||||
Actor_SetScale(&this->actor, 0.03f);
|
||||
this->unk154 = 0.03f;
|
||||
shadowOffset = 320.0f;
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
Actor_SetScale(&this->actor, 0.044999998f);
|
||||
this->unk154 = 0.044999998f;
|
||||
shadowOffset = 320.0f;
|
||||
break;
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
Actor_SetScale(&this->actor, 0.044999998f);
|
||||
this->unk154 = 0.044999998f;
|
||||
shadowOffset = 750.0f;
|
||||
break;
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
Actor_SetScale(&this->actor, 0.03f);
|
||||
this->unk154 = 0.03f;
|
||||
shadowOffset = 750.0f;
|
||||
break;
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
shadowOffset = 500.0f;
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->unk154 = 0.01f;
|
||||
break;
|
||||
case ITEM00_SHIELD_HERO:
|
||||
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_SHIELD_2);
|
||||
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
|
||||
break;
|
||||
case ITEM00_MAP:
|
||||
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_MAP);
|
||||
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
|
||||
break;
|
||||
case ITEM00_COMPASS:
|
||||
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_COMPASS);
|
||||
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
case ITEM00_RUPEE_RED:
|
||||
Actor_SetScale(&this->actor, 0.015f);
|
||||
this->unk154 = 0.015f;
|
||||
shadowOffset = 750.0f;
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
this->unk150 = 0;
|
||||
Actor_SetScale(&this->actor, 0.03f);
|
||||
this->unk154 = 0.03f;
|
||||
shadowOffset = 350.0f;
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
this->unk150 = 0;
|
||||
Actor_SetScale(&this->actor, 0.02f);
|
||||
this->unk154 = 0.02f;
|
||||
shadowOffset = 650.0f;
|
||||
if (this->actor.params == ITEM00_HEART_CONTAINER) {
|
||||
sp30 = -1;
|
||||
}
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
this->actor.home.rot.z = randPlusMinusPoint5Scaled(65535.0f);
|
||||
shadowOffset = 430.0f;
|
||||
Actor_SetScale(&this->actor, 0.02f);
|
||||
this->unk154 = 0.02f;
|
||||
break;
|
||||
case ITEM00_ARROWS_10:
|
||||
case ITEM00_ARROWS_30:
|
||||
case ITEM00_ARROWS_40:
|
||||
case ITEM00_ARROWS_50:
|
||||
Actor_SetScale(&this->actor, 0.035f);
|
||||
this->unk154 = 0.035f;
|
||||
shadowOffset = 250.0f;
|
||||
break;
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_BOMBS_B:
|
||||
case ITEM00_NUTS_1:
|
||||
case ITEM00_STICK:
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
case ITEM00_NUTS_10:
|
||||
case ITEM00_BOMBS_0:
|
||||
Actor_SetScale(&this->actor, 0.03f);
|
||||
this->unk154 = 0.03f;
|
||||
shadowOffset = 320.0f;
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
Actor_SetScale(&this->actor, 0.044999998f);
|
||||
this->unk154 = 0.044999998f;
|
||||
shadowOffset = 320.0f;
|
||||
break;
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
Actor_SetScale(&this->actor, 0.044999998f);
|
||||
this->unk154 = 0.044999998f;
|
||||
shadowOffset = 750.0f;
|
||||
break;
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
Actor_SetScale(&this->actor, 0.03f);
|
||||
this->unk154 = 0.03f;
|
||||
shadowOffset = 750.0f;
|
||||
break;
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
shadowOffset = 500.0f;
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->unk154 = 0.01f;
|
||||
break;
|
||||
case ITEM00_SHIELD_HERO:
|
||||
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_SHIELD_2);
|
||||
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
|
||||
break;
|
||||
case ITEM00_MAP:
|
||||
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_MAP);
|
||||
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
|
||||
break;
|
||||
case ITEM00_COMPASS:
|
||||
this->actor.objBankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_COMPASS);
|
||||
EnItem00_SetObject(this, globalCtx, &shadowOffset, &shadowScale);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
this->unk14E = 0;
|
||||
@@ -189,61 +192,61 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) {
|
||||
this->actor.gravity = 0.0f;
|
||||
|
||||
switch (this->actor.params) {
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_GREEN);
|
||||
break;
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_BLUE);
|
||||
break;
|
||||
case ITEM00_RUPEE_RED:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_RED);
|
||||
break;
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_PURPLE);
|
||||
break;
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_ORANGE);
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
Item_Give(globalCtx, ITEM_HEART);
|
||||
break;
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
func_80115908(globalCtx, 0x70);
|
||||
break;
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_BOMBS_B:
|
||||
Item_Give(globalCtx, ITEM_BOMBS_5);
|
||||
break;
|
||||
case ITEM00_ARROWS_10:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_10);
|
||||
break;
|
||||
case ITEM00_ARROWS_30:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_30);
|
||||
break;
|
||||
case ITEM00_ARROWS_40:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_40);
|
||||
break;
|
||||
case ITEM00_ARROWS_50:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_50);
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_LARGE);
|
||||
break;
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_SMALL);
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
Item_Give(globalCtx, ITEM_KEY_SMALL);
|
||||
break;
|
||||
case ITEM00_NUTS_1:
|
||||
getItemId = GI_NUTS_1;
|
||||
break;
|
||||
case ITEM00_NUTS_10:
|
||||
getItemId = GI_NUTS_10;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_GREEN);
|
||||
break;
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_BLUE);
|
||||
break;
|
||||
case ITEM00_RUPEE_RED:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_RED);
|
||||
break;
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_PURPLE);
|
||||
break;
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
Item_Give(globalCtx, ITEM_RUPEE_ORANGE);
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
Item_Give(globalCtx, ITEM_HEART);
|
||||
break;
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
func_80115908(globalCtx, 0x70);
|
||||
break;
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_BOMBS_B:
|
||||
Item_Give(globalCtx, ITEM_BOMBS_5);
|
||||
break;
|
||||
case ITEM00_ARROWS_10:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_10);
|
||||
break;
|
||||
case ITEM00_ARROWS_30:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_30);
|
||||
break;
|
||||
case ITEM00_ARROWS_40:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_40);
|
||||
break;
|
||||
case ITEM00_ARROWS_50:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_50);
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_LARGE);
|
||||
break;
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_SMALL);
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
Item_Give(globalCtx, ITEM_KEY_SMALL);
|
||||
break;
|
||||
case ITEM00_NUTS_1:
|
||||
getItemId = GI_NUTS_1;
|
||||
break;
|
||||
case ITEM00_NUTS_10:
|
||||
getItemId = GI_NUTS_10;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ((getItemId != GI_NONE) && (Actor_HasParent(&this->actor, globalCtx) == 0)) {
|
||||
@@ -271,9 +274,11 @@ void EnItem00_WaitForHeartObject(EnItem00* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void func_800A640C(EnItem00* this, GlobalContext* ctxt) {
|
||||
if ((this->actor.params <= ITEM00_RUPEE_RED) || ((this->actor.params == ITEM00_HEART) && (this->unk152 < 0)) || (this->actor.params == ITEM00_HEART_PIECE) || (this->actor.params == ITEM00_HEART_CONTAINER)) {
|
||||
if ((this->actor.params <= ITEM00_RUPEE_RED) || ((this->actor.params == ITEM00_HEART) && (this->unk152 < 0)) ||
|
||||
(this->actor.params == ITEM00_HEART_PIECE) || (this->actor.params == ITEM00_HEART_CONTAINER)) {
|
||||
this->actor.shape.rot.y = this->actor.shape.rot.y + 960;
|
||||
} else if ((this->actor.params >= ITEM00_SHIELD_HERO) && (this->actor.params != ITEM00_NUTS_10) && (this->actor.params < ITEM00_BOMBS_0)) {
|
||||
} else if ((this->actor.params >= ITEM00_SHIELD_HERO) && (this->actor.params != ITEM00_NUTS_10) &&
|
||||
(this->actor.params < ITEM00_BOMBS_0)) {
|
||||
if (this->unk152 == -1) {
|
||||
if (!Math_SmoothStepToS(&this->actor.shape.rot.x, this->actor.world.rot.x - 0x4000, 2, 3000, 1500)) {
|
||||
this->unk152 = -2;
|
||||
@@ -295,13 +300,15 @@ void func_800A640C(EnItem00* this, GlobalContext* ctxt) {
|
||||
Math_SmoothStepToF(&this->actor.speedXZ, 0.0f, 1.0f, 0.5f, 0.0f);
|
||||
|
||||
if (this->unk14C == 0) {
|
||||
if ((this->actor.params != ITEM00_SMALL_KEY) && (this->actor.params != ITEM00_HEART_PIECE) && (this->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
if ((this->actor.params != ITEM00_SMALL_KEY) && (this->actor.params != ITEM00_HEART_PIECE) &&
|
||||
(this->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
this->unk14C = -1;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->unk152 == 0) {
|
||||
if ((this->actor.params != ITEM00_SMALL_KEY) && (this->actor.params != ITEM00_HEART_PIECE) && (this->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
if ((this->actor.params != ITEM00_SMALL_KEY) && (this->actor.params != ITEM00_HEART_PIECE) &&
|
||||
(this->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
Actor_MarkForDeath(&this->actor);
|
||||
}
|
||||
}
|
||||
@@ -355,14 +362,17 @@ void func_800A6780(EnItem00* this, GlobalContext* globalCtx) {
|
||||
this->actor.velocity.y = -1.5f;
|
||||
}
|
||||
this->actor.home.rot.z += (s16)((this->actor.velocity.y + 3.0f) * 1000.0f);
|
||||
this->actor.world.pos.x += (Math_CosS(this->actor.yawTowardsPlayer) * (-3.0f * Math_CosS(this->actor.home.rot.z)));
|
||||
this->actor.world.pos.z += (Math_SinS(this->actor.yawTowardsPlayer) * (-3.0f * Math_CosS(this->actor.home.rot.z)));
|
||||
this->actor.world.pos.x +=
|
||||
(Math_CosS(this->actor.yawTowardsPlayer) * (-3.0f * Math_CosS(this->actor.home.rot.z)));
|
||||
this->actor.world.pos.z +=
|
||||
(Math_SinS(this->actor.yawTowardsPlayer) * (-3.0f * Math_CosS(this->actor.home.rot.z)));
|
||||
}
|
||||
}
|
||||
|
||||
if (this->actor.params <= ITEM00_RUPEE_RED) {
|
||||
this->actor.shape.rot.y += 960;
|
||||
} else if ((this->actor.params >= ITEM00_SHIELD_HERO) && (this->actor.params != ITEM00_NUTS_10) && (this->actor.params != ITEM00_BOMBS_0)) {
|
||||
} else if ((this->actor.params >= ITEM00_SHIELD_HERO) && (this->actor.params != ITEM00_NUTS_10) &&
|
||||
(this->actor.params != ITEM00_BOMBS_0)) {
|
||||
this->actor.world.rot.x -= 700;
|
||||
this->actor.shape.rot.y += 400;
|
||||
this->actor.shape.rot.x = this->actor.world.rot.x - 0x4000;
|
||||
@@ -460,7 +470,8 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
Collision_CylinderMoveToActor(&this->actor, &this->collider);
|
||||
Collision_AddAC(globalCtx, &globalCtx->colCheckCtx, &this->collider.base);
|
||||
|
||||
if ((this->actor.params == ITEM00_SHIELD_HERO) || (this->actor.params == ITEM00_MAP) || (this->actor.params == ITEM00_COMPASS)) {
|
||||
if ((this->actor.params == ITEM00_SHIELD_HERO) || (this->actor.params == ITEM00_MAP) ||
|
||||
(this->actor.params == ITEM00_COMPASS)) {
|
||||
this->actor.shape.yOffset = fabsf(Math_CosS(this->actor.shape.rot.x) * 37.0f);
|
||||
}
|
||||
|
||||
@@ -468,8 +479,10 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!((sp38 != 0) && (this->actor.xzDistToPlayer <= 60.0f) && (this->actor.yDistToPlayer >= -100.0f) && (this->actor.yDistToPlayer <= 100.0f)) &&
|
||||
!((sp38 == 0) && (this->actor.xzDistToPlayer <= 30.0f) && (this->actor.yDistToPlayer >= -50.0f) && (this->actor.yDistToPlayer <= 50.0f))) {
|
||||
if (!((sp38 != 0) && (this->actor.xzDistToPlayer <= 60.0f) && (this->actor.yDistToPlayer >= -100.0f) &&
|
||||
(this->actor.yDistToPlayer <= 100.0f)) &&
|
||||
!((sp38 == 0) && (this->actor.xzDistToPlayer <= 30.0f) && (this->actor.yDistToPlayer >= -50.0f) &&
|
||||
(this->actor.yDistToPlayer <= 50.0f))) {
|
||||
if (!Actor_HasParent(&this->actor, globalCtx)) {
|
||||
return;
|
||||
}
|
||||
@@ -480,84 +493,84 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
switch (this->actor.params) {
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_GREEN);
|
||||
break;
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_BLUE);
|
||||
break;
|
||||
case ITEM00_RUPEE_RED:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_RED);
|
||||
break;
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_PURPLE);
|
||||
break;
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_ORANGE);
|
||||
break;
|
||||
case ITEM00_STICK:
|
||||
getItemId = GI_STICKS_1;
|
||||
break;
|
||||
case ITEM00_NUTS_1:
|
||||
getItemId = GI_NUTS_1;
|
||||
break;
|
||||
case ITEM00_NUTS_10:
|
||||
getItemId = GI_NUTS_10;
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
Item_Give(globalCtx, ITEM_HEART);
|
||||
break;
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
func_80115908(globalCtx, 0x70);
|
||||
break;
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_BOMBS_B:
|
||||
Item_Give(globalCtx, ITEM_BOMBS_5);
|
||||
break;
|
||||
case ITEM00_ARROWS_10:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_10);
|
||||
break;
|
||||
case ITEM00_ARROWS_30:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_30);
|
||||
break;
|
||||
case ITEM00_ARROWS_40:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_40);
|
||||
break;
|
||||
case ITEM00_ARROWS_50:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_50);
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
getItemId = GI_KEY_SMALL;
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
getItemId = GI_HEART_PIECE;
|
||||
break;
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
getItemId = GI_HEART_CONTAINER;
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_LARGE);
|
||||
break;
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_SMALL);
|
||||
break;
|
||||
case ITEM00_SHIELD_HERO:
|
||||
getItemId = GI_SHIELD_HERO;
|
||||
break;
|
||||
case ITEM00_MAP:
|
||||
getItemId = GI_MAP;
|
||||
break;
|
||||
case ITEM00_COMPASS:
|
||||
getItemId = GI_COMPASS;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_GREEN);
|
||||
break;
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_BLUE);
|
||||
break;
|
||||
case ITEM00_RUPEE_RED:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_RED);
|
||||
break;
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_PURPLE);
|
||||
break;
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
this->unk1A4 = 1;
|
||||
Item_Give(globalCtx, ITEM_RUPEE_ORANGE);
|
||||
break;
|
||||
case ITEM00_STICK:
|
||||
getItemId = GI_STICKS_1;
|
||||
break;
|
||||
case ITEM00_NUTS_1:
|
||||
getItemId = GI_NUTS_1;
|
||||
break;
|
||||
case ITEM00_NUTS_10:
|
||||
getItemId = GI_NUTS_10;
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
Item_Give(globalCtx, ITEM_HEART);
|
||||
break;
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
func_80115908(globalCtx, 0x70);
|
||||
break;
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_BOMBS_B:
|
||||
Item_Give(globalCtx, ITEM_BOMBS_5);
|
||||
break;
|
||||
case ITEM00_ARROWS_10:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_10);
|
||||
break;
|
||||
case ITEM00_ARROWS_30:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_30);
|
||||
break;
|
||||
case ITEM00_ARROWS_40:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_40);
|
||||
break;
|
||||
case ITEM00_ARROWS_50:
|
||||
Item_Give(globalCtx, ITEM_ARROWS_50);
|
||||
break;
|
||||
case ITEM00_SMALL_KEY:
|
||||
getItemId = GI_KEY_SMALL;
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
getItemId = GI_HEART_PIECE;
|
||||
break;
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
getItemId = GI_HEART_CONTAINER;
|
||||
break;
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_LARGE);
|
||||
break;
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
Item_Give(globalCtx, ITEM_MAGIC_SMALL);
|
||||
break;
|
||||
case ITEM00_SHIELD_HERO:
|
||||
getItemId = GI_SHIELD_HERO;
|
||||
break;
|
||||
case ITEM00_MAP:
|
||||
getItemId = GI_MAP;
|
||||
break;
|
||||
case ITEM00_COMPASS:
|
||||
getItemId = GI_COMPASS;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (getItemId != GI_NONE) {
|
||||
@@ -567,19 +580,19 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
switch (this->actor.params) {
|
||||
case ITEM00_HEART_PIECE:
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
case ITEM00_SMALL_KEY:
|
||||
case ITEM00_SHIELD_HERO:
|
||||
case ITEM00_MAP:
|
||||
case ITEM00_COMPASS:
|
||||
if (Actor_HasParent(&this->actor, globalCtx)) {
|
||||
Actor_SetCollectibleFlag(globalCtx, this->collectibleFlag);
|
||||
Actor_MarkForDeath(&this->actor);
|
||||
}
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
case ITEM00_SMALL_KEY:
|
||||
case ITEM00_SHIELD_HERO:
|
||||
case ITEM00_MAP:
|
||||
case ITEM00_COMPASS:
|
||||
if (Actor_HasParent(&this->actor, globalCtx)) {
|
||||
Actor_SetCollectibleFlag(globalCtx, this->collectibleFlag);
|
||||
Actor_MarkForDeath(&this->actor);
|
||||
}
|
||||
return;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if ((this->actor.params <= ITEM00_RUPEE_RED) || (this->actor.params == ITEM00_RUPEE_ORANGE)) {
|
||||
@@ -623,63 +636,63 @@ void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) {
|
||||
|
||||
if (!(this->unk14E & this->unk150)) {
|
||||
switch (this->actor.params) {
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
case ITEM00_RUPEE_RED:
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
EnItem00_DrawRupee(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
EnItem00_DrawHeartPiece(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
EnItem00_DrawHeartContainer(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
if (this->unk152 < 0) {
|
||||
if (this->unk152 == -1) {
|
||||
s8 bankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEART);
|
||||
if (Object_IsLoaded(&globalCtx->objectCtx, bankIndex)) {
|
||||
this->actor.objBankIndex = bankIndex;
|
||||
Actor_SetObjectSegment(globalCtx, &this->actor);
|
||||
this->unk152 = -2;
|
||||
}
|
||||
} else {
|
||||
Matrix_Scale(16.0f, 16.0f, 16.0f, 1);
|
||||
GetItem_Draw(globalCtx, 8);
|
||||
}
|
||||
case ITEM00_RUPEE_GREEN:
|
||||
case ITEM00_RUPEE_BLUE:
|
||||
case ITEM00_RUPEE_RED:
|
||||
case ITEM00_RUPEE_ORANGE:
|
||||
case ITEM00_RUPEE_PURPLE:
|
||||
EnItem00_DrawRupee(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_HEART_PIECE:
|
||||
EnItem00_DrawHeartPiece(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_HEART_CONTAINER:
|
||||
EnItem00_DrawHeartContainer(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_HEART:
|
||||
if (this->unk152 < 0) {
|
||||
if (this->unk152 == -1) {
|
||||
s8 bankIndex = Object_GetIndex(&globalCtx->objectCtx, OBJECT_GI_HEART);
|
||||
if (Object_IsLoaded(&globalCtx->objectCtx, bankIndex)) {
|
||||
this->actor.objBankIndex = bankIndex;
|
||||
Actor_SetObjectSegment(globalCtx, &this->actor);
|
||||
this->unk152 = -2;
|
||||
}
|
||||
} else {
|
||||
Matrix_Scale(16.0f, 16.0f, 16.0f, 1);
|
||||
GetItem_Draw(globalCtx, 8);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_ARROWS_10:
|
||||
case ITEM00_ARROWS_30:
|
||||
case ITEM00_ARROWS_40:
|
||||
case ITEM00_ARROWS_50:
|
||||
case ITEM00_BOMBS_B:
|
||||
case ITEM00_NUTS_1:
|
||||
case ITEM00_STICK:
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
case ITEM00_SMALL_KEY:
|
||||
case ITEM00_NUTS_10:
|
||||
case ITEM00_BOMBS_0:
|
||||
EnItem00_DrawSprite(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_SHIELD_HERO:
|
||||
GetItem_Draw(globalCtx, GID_SHIELD_HERO);
|
||||
break;
|
||||
case ITEM00_MAP:
|
||||
GetItem_Draw(globalCtx, GID_DUNGEON_MAP);
|
||||
break;
|
||||
case ITEM00_COMPASS:
|
||||
GetItem_Draw(globalCtx, GID_COMPASS);
|
||||
case ITEM00_MASK:
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_3_HEARTS:
|
||||
case ITEM00_NOTHING:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
break;
|
||||
}
|
||||
case ITEM00_BOMBS_A:
|
||||
case ITEM00_ARROWS_10:
|
||||
case ITEM00_ARROWS_30:
|
||||
case ITEM00_ARROWS_40:
|
||||
case ITEM00_ARROWS_50:
|
||||
case ITEM00_BOMBS_B:
|
||||
case ITEM00_NUTS_1:
|
||||
case ITEM00_STICK:
|
||||
case ITEM00_MAGIC_LARGE:
|
||||
case ITEM00_MAGIC_SMALL:
|
||||
case ITEM00_SMALL_KEY:
|
||||
case ITEM00_NUTS_10:
|
||||
case ITEM00_BOMBS_0:
|
||||
EnItem00_DrawSprite(this, globalCtx);
|
||||
break;
|
||||
case ITEM00_SHIELD_HERO:
|
||||
GetItem_Draw(globalCtx, GID_SHIELD_HERO);
|
||||
break;
|
||||
case ITEM00_MAP:
|
||||
GetItem_Draw(globalCtx, GID_DUNGEON_MAP);
|
||||
break;
|
||||
case ITEM00_COMPASS:
|
||||
GetItem_Draw(globalCtx, GID_COMPASS);
|
||||
case ITEM00_MASK:
|
||||
case ITEM00_FLEXIBLE:
|
||||
case ITEM00_3_HEARTS:
|
||||
case ITEM00_NOTHING:
|
||||
case ITEM00_BIG_FAIRY:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -728,7 +741,7 @@ UNK_PTR D_801ADF44[12] = {
|
||||
&D_040617C0, // Magic (Large)
|
||||
&D_0405FFC0, // Magic (Small)
|
||||
NULL,
|
||||
&D_0405F7C0 // Small Key
|
||||
&D_0405F7C0 // Small Key
|
||||
};
|
||||
|
||||
void EnItem00_DrawSprite(EnItem00* this, GlobalContext* globalCtx) {
|
||||
@@ -800,8 +813,11 @@ void EnItem00_DrawHeartPiece(EnItem00* this, GlobalContext* globalCtx) {
|
||||
s16 func_800A7650(s16 dropId) {
|
||||
s16 maxLife;
|
||||
|
||||
if ((((dropId == ITEM00_BOMBS_A) || (dropId == ITEM00_BOMBS_0) || (dropId == ITEM00_BOMBS_B)) && (gSaveContext.perm.inv.items[D_801C207E] == 0xFF)) ||
|
||||
(((dropId == ITEM00_ARROWS_10) || (dropId == ITEM00_ARROWS_30) || (dropId == ITEM00_ARROWS_40) || (dropId == ITEM00_ARROWS_50)) && (gSaveContext.perm.inv.items[D_801C2079] == 0xFF)) ||
|
||||
if ((((dropId == ITEM00_BOMBS_A) || (dropId == ITEM00_BOMBS_0) || (dropId == ITEM00_BOMBS_B)) &&
|
||||
(gSaveContext.perm.inv.items[D_801C207E] == 0xFF)) ||
|
||||
(((dropId == ITEM00_ARROWS_10) || (dropId == ITEM00_ARROWS_30) || (dropId == ITEM00_ARROWS_40) ||
|
||||
(dropId == ITEM00_ARROWS_50)) &&
|
||||
(gSaveContext.perm.inv.items[D_801C2079] == 0xFF)) ||
|
||||
(((dropId == ITEM00_MAGIC_LARGE) || (dropId == ITEM00_MAGIC_SMALL)) && (gSaveContext.perm.unk24.unk14 == 0))) {
|
||||
return ITEM00_NO_DROP;
|
||||
}
|
||||
@@ -846,16 +862,20 @@ EnItem00* Item_DropCollectible(GlobalContext* globalCtx, Vec3f* spawnPos, u32 pa
|
||||
} else if (paramFF == ITEM00_MUSHROOM_CLOUD) {
|
||||
param7F00 >>= 8;
|
||||
if (!Actor_GetCollectibleFlag(globalCtx, param7F00)) {
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_OBJ_KINOKO, spawnPos->x, spawnPos->y, spawnPos->z, 0, 0, 0, param7F00);
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_OBJ_KINOKO, spawnPos->x, spawnPos->y, spawnPos->z, 0, 0,
|
||||
0, param7F00);
|
||||
}
|
||||
} else if (((paramFF == ITEM00_FLEXIBLE) || ((params & 0xFF) == ITEM00_BIG_FAIRY)) && (param10000 == 0)) {
|
||||
if ((params & 0xFF) == ITEM00_FLEXIBLE) {
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) << 9) & 0xFE00) | 0x102);
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f,
|
||||
spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) << 9) & 0xFE00) | 0x102);
|
||||
if (!Actor_GetCollectibleFlag(globalCtx, (param7F00 >> 8) & 0x7F)) {
|
||||
func_800F0568(globalCtx, spawnPos, 0x28, 0x28E7);
|
||||
}
|
||||
} else {
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) & 0x7F) << 9) | 7);
|
||||
spawnedActor =
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f,
|
||||
spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) & 0x7F) << 9) | 7);
|
||||
if (param20000 == 0) {
|
||||
if (!Actor_GetCollectibleFlag(globalCtx, (param7F00 >> 8) & 0x7F)) {
|
||||
func_800F0568(globalCtx, spawnPos, 0x28, 0x28E7);
|
||||
@@ -867,7 +887,8 @@ EnItem00* Item_DropCollectible(GlobalContext* globalCtx, Vec3f* spawnPos, u32 pa
|
||||
params = func_800A7650(params & 0xFF);
|
||||
}
|
||||
if (params != ITEM00_NO_DROP) {
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ITEM00, spawnPos->x, spawnPos->y, spawnPos->z, 0, 0, 0, params | param8000 | param7F00);
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ITEM00, spawnPos->x, spawnPos->y,
|
||||
spawnPos->z, 0, 0, 0, params | param8000 | param7F00);
|
||||
if ((spawnedActor != NULL) && (param8000 == 0)) {
|
||||
if (param10000 == 0) {
|
||||
spawnedActor->actor.velocity.y = 8.0f;
|
||||
@@ -880,7 +901,9 @@ EnItem00* Item_DropCollectible(GlobalContext* globalCtx, Vec3f* spawnPos, u32 pa
|
||||
Actor_SetScale(spawnedActor, 0.0f);
|
||||
spawnedActor->actionFunc = func_800A6780;
|
||||
spawnedActor->unk152 = 0xDC;
|
||||
if ((spawnedActor->actor.params != ITEM00_SMALL_KEY) && (spawnedActor->actor.params != ITEM00_HEART_PIECE) && (spawnedActor->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
if ((spawnedActor->actor.params != ITEM00_SMALL_KEY) &&
|
||||
(spawnedActor->actor.params != ITEM00_HEART_PIECE) &&
|
||||
(spawnedActor->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
spawnedActor->actor.room = -1;
|
||||
}
|
||||
spawnedActor->actor.flags |= 0x0010;
|
||||
@@ -914,9 +937,12 @@ Actor* Item_DropCollectible2(GlobalContext* globalCtx, Vec3f* spawnPos, u32 para
|
||||
|
||||
if (((params == ITEM00_FLEXIBLE) || (params == ITEM00_BIG_FAIRY)) && (param10000 == 0)) {
|
||||
if (params == ITEM00_FLEXIBLE) {
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) << 9) & 0xFE00) | 0x102);
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f,
|
||||
spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) << 9) & 0xFE00) | 0x102);
|
||||
} else {
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) & 0x7F) << 9) | 7);
|
||||
spawnedActor =
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELFORG, spawnPos->x, spawnPos->y + 40.0f,
|
||||
spawnPos->z, 0, 0, 0, ((((param7F00 >> 8) & 0x7F) & 0x7F) << 9) | 7);
|
||||
}
|
||||
if (Actor_GetCollectibleFlag(globalCtx, (param7F00 >> 8) & 0x7F) == 0) {
|
||||
func_800F0568(globalCtx, spawnPos, 0x28, 0x28E7);
|
||||
@@ -924,7 +950,8 @@ Actor* Item_DropCollectible2(GlobalContext* globalCtx, Vec3f* spawnPos, u32 para
|
||||
} else {
|
||||
params = func_800A7650(params);
|
||||
if (params != ITEM00_NO_DROP) {
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ITEM00, spawnPos->x, spawnPos->y, spawnPos->z, 0, 0, 0, params | param8000 | param7F00);
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ITEM00, spawnPos->x, spawnPos->y,
|
||||
spawnPos->z, 0, 0, 0, params | param8000 | param7F00);
|
||||
if (spawnedActor != NULL) {
|
||||
if (param8000 == 0) {
|
||||
spawnedActor->velocity.y = 0.0f;
|
||||
@@ -948,43 +975,79 @@ Actor* Item_DropCollectible2(GlobalContext* globalCtx, Vec3f* spawnPos, u32 para
|
||||
#endif
|
||||
|
||||
u8 sDropTable[DROP_TABLE_SIZE * DROP_TABLE_NUMBER] = {
|
||||
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_NO_DROP, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_MASK, ITEM00_MASK, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED,
|
||||
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_30, ITEM00_ARROWS_30, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
|
||||
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NUTS_1, ITEM00_NUTS_1, ITEM00_NO_DROP, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_STICK, ITEM00_STICK, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_30, ITEM00_BOMBS_A, ITEM00_NO_DROP, ITEM00_STICK, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_HEART, ITEM00_HEART, ITEM00_MAGIC_SMALL, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A,
|
||||
ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_HEART,
|
||||
ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
|
||||
ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_NO_DROP,
|
||||
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP, ITEM00_MASK, ITEM00_MASK,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_MAGIC_SMALL, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_MASK,
|
||||
ITEM00_MASK, ITEM00_MASK, ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_HEART, ITEM00_FLEXIBLE, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_HEART, ITEM00_HEART, ITEM00_HEART, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_GREEN,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_RUPEE_BLUE,
|
||||
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE,
|
||||
ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED,
|
||||
ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED, ITEM00_RUPEE_RED,
|
||||
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10,
|
||||
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10,
|
||||
ITEM00_ARROWS_30, ITEM00_ARROWS_30, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE,
|
||||
ITEM00_MAGIC_LARGE, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_BOMBS_A,
|
||||
ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_BOMBS_A,
|
||||
ITEM00_BOMBS_A, ITEM00_BOMBS_A, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
|
||||
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
|
||||
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL,
|
||||
ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE,
|
||||
ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_MAGIC_LARGE, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NUTS_1, ITEM00_NUTS_1,
|
||||
ITEM00_NO_DROP, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_STICK,
|
||||
ITEM00_STICK, ITEM00_NO_DROP, ITEM00_HEART, ITEM00_HEART, ITEM00_FLEXIBLE,
|
||||
ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_BLUE, ITEM00_RUPEE_RED, ITEM00_NO_DROP,
|
||||
ITEM00_ARROWS_10, ITEM00_ARROWS_10, ITEM00_ARROWS_30, ITEM00_BOMBS_A, ITEM00_NO_DROP,
|
||||
ITEM00_STICK, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE, ITEM00_HEART, ITEM00_HEART,
|
||||
ITEM00_FLEXIBLE, ITEM00_RUPEE_GREEN, ITEM00_HEART, ITEM00_HEART, ITEM00_MAGIC_SMALL,
|
||||
ITEM00_MASK, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
};
|
||||
|
||||
u8 sDropTableAmounts[DROP_TABLE_SIZE * DROP_TABLE_NUMBER] = {
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x01,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x01, 0x03, 0x03,
|
||||
0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03,
|
||||
0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
};
|
||||
|
||||
#ifdef NON_MATCHING
|
||||
@@ -1029,7 +1092,7 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
} else if ((fromActor->dropFlag & 2) != 0) {
|
||||
dropId = ITEM00_HEART;
|
||||
params = 0x10;
|
||||
} else if ((fromActor->dropFlag & 0x20) != 0) {
|
||||
} else if ((fromActor->dropFlag & 0x20) != 0) {
|
||||
dropId = ITEM00_RUPEE_PURPLE;
|
||||
}
|
||||
dropQuantity = 1;
|
||||
@@ -1038,7 +1101,8 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
|
||||
if (dropId == ITEM00_FLEXIBLE) {
|
||||
if (gSaveContext.perm.unk24.currentLife < 0x11) {
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f, spawnPos->z, 0, 0, 0, 2);
|
||||
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ELF, spawnPos->x, spawnPos->y + 40.0f,
|
||||
spawnPos->z, 0, 0, 0, 2);
|
||||
func_800F0568(globalCtx, spawnPos, 0x28, 0x28E7);
|
||||
return;
|
||||
}
|
||||
@@ -1051,11 +1115,12 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
params = 0x10;
|
||||
dropId = ITEM00_HEART;
|
||||
dropQuantity = 1;
|
||||
} else if ((gSaveContext.perm.unk24.unk14 != 0) && (gSaveContext.perm.unk24.currentMagic == 0)) {
|
||||
} else if ((gSaveContext.perm.unk24.unk14 != 0) && (gSaveContext.perm.unk24.currentMagic == 0)) {
|
||||
params = 0xD0;
|
||||
dropId = ITEM00_MAGIC_LARGE;
|
||||
dropQuantity = 1;
|
||||
} else if ((gSaveContext.perm.unk24.unk14 != 0) && ((gSaveContext.perm.unk24.unk14 >> 1) >= gSaveContext.perm.unk24.currentMagic)) {
|
||||
} else if ((gSaveContext.perm.unk24.unk14 != 0) &&
|
||||
((gSaveContext.perm.unk24.unk14 >> 1) >= gSaveContext.perm.unk24.currentMagic)) {
|
||||
params = 0xD0;
|
||||
dropId = ITEM00_MAGIC_LARGE;
|
||||
dropQuantity = 1;
|
||||
@@ -1067,7 +1132,7 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
params = 0xB0;
|
||||
dropId = ITEM00_BOMBS_A;
|
||||
dropQuantity = 1;
|
||||
} else if (gSaveContext.perm.unk24.unk16 < 11) {
|
||||
} else if (gSaveContext.perm.unk24.unk14 < 11) {
|
||||
params = 0xA0;
|
||||
dropId = ITEM00_RUPEE_RED;
|
||||
dropQuantity = 1;
|
||||
@@ -1079,7 +1144,8 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
if (param8000 == 0) {
|
||||
dropId = func_800A7650(dropId);
|
||||
if (dropId != ITEM00_NO_DROP) {
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ITEM00, spawnPos->x, spawnPos->y, spawnPos->z, 0, 0, 0, dropId);
|
||||
spawnedActor = Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_ITEM00, spawnPos->x,
|
||||
spawnPos->y, spawnPos->z, 0, 0, 0, dropId);
|
||||
if ((spawnedActor != 0) && (dropId != ITEM00_NO_DROP)) {
|
||||
spawnedActor->actor.velocity.y = 8.0f;
|
||||
spawnedActor->actor.speedXZ = 2.0f;
|
||||
@@ -1088,7 +1154,9 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
Actor_SetScale(spawnedActor, 0.0f);
|
||||
spawnedActor->actionFunc = func_800A6780;
|
||||
spawnedActor->actor.flags = spawnedActor->actor.flags | 0x10;
|
||||
if ((spawnedActor->actor.params != ITEM00_SMALL_KEY) && (spawnedActor->actor.params != ITEM00_HEART_PIECE) && (spawnedActor->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
if ((spawnedActor->actor.params != ITEM00_SMALL_KEY) &&
|
||||
(spawnedActor->actor.params != ITEM00_HEART_PIECE) &&
|
||||
(spawnedActor->actor.params != ITEM00_HEART_CONTAINER)) {
|
||||
spawnedActor->actor.room = -1;
|
||||
}
|
||||
spawnedActor->unk152 = 220;
|
||||
@@ -1107,40 +1175,14 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_en_item00/Item_DropCollectibleRandom.asm")
|
||||
#endif
|
||||
|
||||
s32 D_801AE194[32] = {
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_RUPEE_GREEN,
|
||||
ITEM00_RUPEE_BLUE,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_RUPEE_RED,
|
||||
ITEM00_RUPEE_PURPLE,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_RUPEE_ORANGE,
|
||||
ITEM00_COMPASS,
|
||||
ITEM00_MUSHROOM_CLOUD,
|
||||
ITEM00_HEART,
|
||||
ITEM00_3_HEARTS,
|
||||
ITEM00_HEART_PIECE,
|
||||
ITEM00_HEART_CONTAINER,
|
||||
ITEM00_MAGIC_SMALL,
|
||||
ITEM00_MAGIC_LARGE,
|
||||
ITEM00_FLEXIBLE,
|
||||
ITEM00_BIG_FAIRY,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_NUTS_10,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_BOMBS_A,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_STICK,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP,
|
||||
ITEM00_ARROWS_10,
|
||||
ITEM00_ARROWS_30
|
||||
};
|
||||
s32 D_801AE194[32] = { ITEM00_NO_DROP, ITEM00_RUPEE_GREEN, ITEM00_RUPEE_BLUE, ITEM00_NO_DROP,
|
||||
ITEM00_RUPEE_RED, ITEM00_RUPEE_PURPLE, ITEM00_NO_DROP, ITEM00_RUPEE_ORANGE,
|
||||
ITEM00_COMPASS, ITEM00_MUSHROOM_CLOUD, ITEM00_HEART, ITEM00_3_HEARTS,
|
||||
ITEM00_HEART_PIECE, ITEM00_HEART_CONTAINER, ITEM00_MAGIC_SMALL, ITEM00_MAGIC_LARGE,
|
||||
ITEM00_FLEXIBLE, ITEM00_BIG_FAIRY, ITEM00_NO_DROP, ITEM00_NUTS_10,
|
||||
ITEM00_NO_DROP, ITEM00_BOMBS_A, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_STICK, ITEM00_NO_DROP, ITEM00_NO_DROP,
|
||||
ITEM00_NO_DROP, ITEM00_NO_DROP, ITEM00_ARROWS_10, ITEM00_ARROWS_30 };
|
||||
|
||||
s32 func_800A8150(s32 index) {
|
||||
if ((index < 0) || (index >= ARRAY_COUNT(D_801AE194))) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
void Kanfont_Nop800F4F40(GlobalContext* ctxt, UNK_TYPE param_2, UNK_TYPE param_3) {}
|
||||
void Kanfont_Nop800F4F40(GlobalContext* ctxt, UNK_TYPE param_2, UNK_TYPE param_3) {
|
||||
}
|
||||
|
||||
void Kanfont_LoadAsciiChar(GlobalContext* ctxt, u8 character, s32 iParm3) {
|
||||
// UB to convert pointer to u32
|
||||
DmaMgr_SendRequest0((void*)((u32)&ctxt->msgCtx.font.unk0[(ctxt->msgCtx).unk11EF0] + iParm3),
|
||||
(u32)_nes_font_staticSegmentRomStart + character * 0x80 - 0x1000,
|
||||
0x80);
|
||||
(u32)_nes_font_staticSegmentRomStart + character * 0x80 - 0x1000, 0x80);
|
||||
}
|
||||
|
||||
void Kanfont_LoadMessageBoxEnd(Font* font, u16 type) {
|
||||
@@ -28,7 +28,9 @@ void Kanfont_LoadOrderedFont(Font* font) {
|
||||
}
|
||||
// UB to convert pointer to u32
|
||||
DmaMgr_SendRequest0(writeLocation, (u32)_nes_font_staticSegmentRomStart + loadOffset, 0x80);
|
||||
if (kanfontOrdering[codePointIndex] == 140) break;
|
||||
if (kanfontOrdering[codePointIndex] == 140) {
|
||||
break;
|
||||
}
|
||||
codePointIndex++;
|
||||
}
|
||||
}
|
||||
|
||||
+9
-8
@@ -568,15 +568,15 @@ void Math_ApproachF(f32* pValue, f32 target, f32 scale, f32 maxStep) {
|
||||
}
|
||||
|
||||
void Math_ApproachZeroF(f32* pValue, f32 scale, f32 maxStep) {
|
||||
f32 f0 = *pValue * scale;
|
||||
f32 f0 = *pValue * scale;
|
||||
|
||||
if (maxStep < f0) {
|
||||
f0 = maxStep;
|
||||
} else if (f0 < -maxStep) {
|
||||
f0 = -maxStep;
|
||||
}
|
||||
if (maxStep < f0) {
|
||||
f0 = maxStep;
|
||||
} else if (f0 < -maxStep) {
|
||||
f0 = -maxStep;
|
||||
}
|
||||
|
||||
*pValue = *pValue - f0;
|
||||
*pValue = *pValue - f0;
|
||||
}
|
||||
|
||||
s32 Math_SmoothStepToS(s16* pValue, s16 target, s16 scale, s16 step, s16 minStep) {
|
||||
@@ -695,7 +695,8 @@ f32 Math_Vec3f_StepTo(Vec3f* start, Vec3f* target, f32 speed) {
|
||||
return f0;
|
||||
}
|
||||
|
||||
void Lib_Nop801004FC(void) {}
|
||||
void Lib_Nop801004FC(void) {
|
||||
}
|
||||
|
||||
void* Lib_SegmentedToVirtual(void* ptr) {
|
||||
return SEGMENTED_TO_VIRTUAL(ptr);
|
||||
|
||||
+20
-16
@@ -132,10 +132,8 @@ void Lights_BindPoint(Lights* lights, LightParams* params, GlobalContext* global
|
||||
posF.x = params->point.x;
|
||||
posF.y = params->point.y;
|
||||
posF.z = params->point.z;
|
||||
SkinMatrix_Vec3fMtxFMultXYZ(&globalCtx->unk187B0,&posF,&adjustedPos);
|
||||
if ((adjustedPos.z > -radiusF) &&
|
||||
(600 + radiusF > adjustedPos.z) &&
|
||||
(400 > fabsf(adjustedPos.x) - radiusF) &&
|
||||
SkinMatrix_Vec3fMtxFMultXYZ(&globalCtx->unk187B0, &posF, &adjustedPos);
|
||||
if ((adjustedPos.z > -radiusF) && (600 + radiusF > adjustedPos.z) && (400 > fabsf(adjustedPos.x) - radiusF) &&
|
||||
(400 > fabsf(adjustedPos.y) - radiusF)) {
|
||||
light = Lights_FindSlot(lights);
|
||||
if (light != NULL) {
|
||||
@@ -190,7 +188,8 @@ void Lights_BindDirectional(Lights* lights, LightParams* params, void* unused) {
|
||||
*/
|
||||
void Lights_BindAll(Lights* lights, LightNode* listHead, Vec3f* refPos, GlobalContext* globalCtx) {
|
||||
static LightsPosBindFunc posBindFuncs[] = { Lights_BindPoint, Lights_BindDirectional, Lights_BindPoint };
|
||||
static LightsBindFunc dirBindFuncs[] = { Lights_BindPointWithReference, Lights_BindDirectional, Lights_BindPointWithReference };
|
||||
static LightsBindFunc dirBindFuncs[] = { Lights_BindPointWithReference, Lights_BindDirectional,
|
||||
Lights_BindPointWithReference };
|
||||
|
||||
if (listHead != NULL) {
|
||||
if ((refPos == NULL) && (lights->enablePosLights == 1)) {
|
||||
@@ -233,7 +232,9 @@ void Lights_FreeNode(LightNode* light) {
|
||||
if (light != NULL) {
|
||||
sLightsBuffer.numOccupied--;
|
||||
light->info = NULL;
|
||||
sLightsBuffer.searchIndex = (light - sLightsBuffer.lights) / (s32)sizeof(LightNode); //! @bug Due to pointer arithmetic, the division is unnecessary
|
||||
sLightsBuffer.searchIndex =
|
||||
(light - sLightsBuffer.lights) /
|
||||
(s32)sizeof(LightNode); //! @bug Due to pointer arithmetic, the division is unnecessary
|
||||
}
|
||||
}
|
||||
|
||||
@@ -262,7 +263,7 @@ void func_80102544(LightContext* lightCtx, u8 a1, u8 a2, u8 a3, s16 numLights, s
|
||||
* Allocate a new Lights group and initilize the ambient color with that provided by LightContext
|
||||
*/
|
||||
Lights* LightContext_NewLights(LightContext* lightCtx, GraphicsContext* gfxCtx) {
|
||||
return Lights_New(gfxCtx, lightCtx->ambient.r, lightCtx->ambient.g, lightCtx->ambient.b);
|
||||
return Lights_New(gfxCtx, lightCtx->ambient.r, lightCtx->ambient.g, lightCtx->ambient.b);
|
||||
}
|
||||
|
||||
void LightContext_InitList(GlobalContext* globalCtx, LightContext* lightCtx) {
|
||||
@@ -317,12 +318,13 @@ void LightContext_RemoveLight(GlobalContext* globalCtx, LightContext* lightCtx,
|
||||
}
|
||||
}
|
||||
|
||||
Lights* Lights_NewAndDraw(GraphicsContext* gfxCtx, u8 ambientR, u8 ambientG, u8 ambientB, u8 numLights, u8 r, u8 g, u8 b, s8 x, s8 y, s8 z) {
|
||||
Lights* Lights_NewAndDraw(GraphicsContext* gfxCtx, u8 ambientR, u8 ambientG, u8 ambientB, u8 numLights, u8 r, u8 g,
|
||||
u8 b, s8 x, s8 y, s8 z) {
|
||||
Lights* lights;
|
||||
s32 i;
|
||||
|
||||
// TODO allocation should be a macro
|
||||
lights = (Lights *)((int)gfxCtx->polyOpa.d - sizeof(Lights));
|
||||
lights = (Lights*)((int)gfxCtx->polyOpa.d - sizeof(Lights));
|
||||
gfxCtx->polyOpa.d = (void*)lights;
|
||||
|
||||
lights->l.a.l.col[0] = lights->l.a.l.colc[0] = ambientR;
|
||||
@@ -340,7 +342,7 @@ Lights* Lights_NewAndDraw(GraphicsContext* gfxCtx, u8 ambientR, u8 ambientG, u8
|
||||
lights->l.l[i].l.dir[2] = z;
|
||||
}
|
||||
|
||||
Lights_Draw(lights,gfxCtx);
|
||||
Lights_Draw(lights, gfxCtx);
|
||||
|
||||
return lights;
|
||||
}
|
||||
@@ -349,7 +351,7 @@ Lights* Lights_New(GraphicsContext* gfxCtx, u8 ambientR, u8 ambientG, u8 ambient
|
||||
Lights* lights;
|
||||
|
||||
// TODO allocation should be a macro
|
||||
lights = (Lights *)((int)gfxCtx->polyOpa.d - sizeof(Lights));
|
||||
lights = (Lights*)((int)gfxCtx->polyOpa.d - sizeof(Lights));
|
||||
gfxCtx->polyOpa.d = (void*)lights;
|
||||
|
||||
lights->l.a.l.col[0] = ambientR;
|
||||
@@ -409,10 +411,11 @@ void Lights_DrawGlow(GlobalContext* globalCtx) {
|
||||
|
||||
dl = func_8012C7FC(POLY_XLU_DISP);
|
||||
|
||||
gSPSetOtherMode(dl++, G_SETOTHERMODE_H, 4, 4, 0x00000080); //! This doesn't resolve to any of the macros in gdi.h
|
||||
gSPSetOtherMode(dl++, G_SETOTHERMODE_H, 4, 4,
|
||||
0x00000080); //! This doesn't resolve to any of the macros in gdi.h
|
||||
|
||||
gDPSetCombineLERP(dl++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0,
|
||||
0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0);
|
||||
gDPSetCombineLERP(dl++, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE,
|
||||
0);
|
||||
|
||||
gSPDisplayList(dl++, D_04029CB0);
|
||||
|
||||
@@ -425,9 +428,10 @@ void Lights_DrawGlow(GlobalContext* globalCtx) {
|
||||
gDPSetPrimColor(dl++, 0, 0, params->color[0], params->color[1], params->color[2], 50);
|
||||
|
||||
SysMatrix_InsertTranslation(params->x, params->y, params->z, 0);
|
||||
Matrix_Scale(scale,scale,scale, MTXMODE_APPLY);
|
||||
Matrix_Scale(scale, scale, scale, MTXMODE_APPLY);
|
||||
|
||||
gSPMatrix(dl++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPMatrix(dl++, Matrix_NewMtx(globalCtx->state.gfxCtx),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
gSPDisplayList(dl++, D_04029CF0);
|
||||
}
|
||||
|
||||
+2
-1
@@ -40,7 +40,8 @@ void PreNMI_Main(PreNMIContext* prenmiCtx) {
|
||||
prenmiCtx->state.unkA3 = 1;
|
||||
}
|
||||
|
||||
void PreNMI_Destroy(PreNMIContext* prenmiCtx) {}
|
||||
void PreNMI_Destroy(PreNMIContext* prenmiCtx) {
|
||||
}
|
||||
|
||||
void PreNMI_Init(PreNMIContext* prenmiCtx) {
|
||||
prenmiCtx->state.main = (GameStateFunc)PreNMI_Main;
|
||||
|
||||
+2
-5
@@ -1256,8 +1256,7 @@ void func_8012CF0C(GraphicsContext* gCtxt, s32 iParm2, s32 iParm3, u8 r, u8 g, u
|
||||
gDPPipeSync(gfx + 1);
|
||||
gDPSetCycleType(gfx + 2, G_CYC_FILL);
|
||||
gDPSetRenderMode(gfx + 3, G_RM_NOOP, G_RM_NOOP2);
|
||||
gDPSetFillColor(gfx + 4,
|
||||
(GPACK_RGBA5551(0xFF, 0xFF, 0xF0, 0) << 16) | GPACK_RGBA5551(0xFF, 0xFF, 0xF0, 0));
|
||||
gDPSetFillColor(gfx + 4, (GPACK_RGBA5551(0xFF, 0xFF, 0xF0, 0) << 16) | GPACK_RGBA5551(0xFF, 0xFF, 0xF0, 0));
|
||||
gSPDisplayList(gfx + 5, &D_0E0002C8);
|
||||
gDPSetColorImage(gfx + 6, G_IM_FMT_RGBA, G_IM_SIZ_16b, D_801FBBCC, gCtxt->zbuffer);
|
||||
gSPEndDisplayList(gfx + 7);
|
||||
@@ -1309,8 +1308,7 @@ void func_8012CF0C(GraphicsContext* gCtxt, s32 iParm2, s32 iParm3, u8 r, u8 g, u
|
||||
void func_8012D374(GraphicsContext* gCtxt, u8 r, u8 g, u8 b) {
|
||||
if ((R_PAUSE_MENU_MODE < 2) && (D_801F6D10 < 2)) {
|
||||
func_8012CF0C(gCtxt, 1, 1, r, g, b);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
func_8012CF0C(gCtxt, 0, 0, r, g, b);
|
||||
}
|
||||
}
|
||||
@@ -1326,4 +1324,3 @@ void func_8012D40C(f32* param_1, f32* param_2, s16* param_3) {
|
||||
param_2[1] = param_1[1] / (gScreenHeight / 2);
|
||||
param_2[3] = param_1[3] - param_1[1];
|
||||
}
|
||||
|
||||
|
||||
+16
-13
@@ -1,9 +1,11 @@
|
||||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
|
||||
void Room_nop8012D510(GlobalContext* ctxt, Room* room, UNK_PTR param_3, UNK_TYPE1 param_4) {}
|
||||
void Room_nop8012D510(GlobalContext* ctxt, Room* room, UNK_PTR param_3, UNK_TYPE1 param_4) {
|
||||
}
|
||||
|
||||
void Room_DrawType3Mesh(GlobalContext* ctxt, Room* room, u32 flags) {}
|
||||
void Room_DrawType3Mesh(GlobalContext* ctxt, Room* room, u32 flags) {
|
||||
}
|
||||
|
||||
void Room_DrawType0Mesh(GlobalContext* ctxt, Room* room, u32 flags) {
|
||||
RoomMeshType0* mesh;
|
||||
@@ -53,11 +55,11 @@ void Room_DrawType0Mesh(GlobalContext* ctxt, Room* room, u32 flags) {
|
||||
void Room_DrawType1Mesh(GlobalContext* ctxt, Room* room, u32 flags) {
|
||||
RoomMeshType1* mesh = &room->mesh->type1;
|
||||
if (mesh->format == 1) {
|
||||
func_8012DEE8(ctxt,room,flags);
|
||||
func_8012DEE8(ctxt, room, flags);
|
||||
} else if (mesh->format == 2) {
|
||||
func_8012E32C(ctxt,room,flags);
|
||||
func_8012E32C(ctxt, room, flags);
|
||||
} else {
|
||||
assert_fail(D_801DDFAC,0x3c5);
|
||||
assert_fail(D_801DDFAC, 0x3c5);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -86,11 +88,13 @@ s32 Room_StartRoomTransition(GlobalContext* ctxt, RoomContext* roomCtxt, s32 ind
|
||||
roomCtxt->unk31 = 1;
|
||||
|
||||
size = ctxt->roomAddrs[index].vromEnd - ctxt->roomAddrs[index].vromStart;
|
||||
roomCtxt->activeRoomVram = (void*)((s32)roomCtxt->roomMemPages[roomCtxt->activeMemPage] - (size + 8) * roomCtxt->activeMemPage + 8) & 0xfffffff0;
|
||||
roomCtxt->activeRoomVram =
|
||||
(void*)((s32)roomCtxt->roomMemPages[roomCtxt->activeMemPage] - (size + 8) * roomCtxt->activeMemPage + 8) &
|
||||
0xfffffff0;
|
||||
|
||||
osCreateMesgQueue(&roomCtxt->loadQueue, roomCtxt->loadMsg, 1);
|
||||
DmaMgr_SendRequestImpl(&roomCtxt->dmaRequest, roomCtxt->activeRoomVram, ctxt->roomAddrs[index].vromStart, size,
|
||||
0, &roomCtxt->loadQueue, NULL);
|
||||
0, &roomCtxt->loadQueue, NULL);
|
||||
roomCtxt->activeMemPage ^= 1;
|
||||
|
||||
return 1;
|
||||
@@ -103,10 +107,8 @@ s32 Room_StartRoomTransition(GlobalContext* ctxt, RoomContext* roomCtxt, s32 ind
|
||||
#endif
|
||||
|
||||
s32 Room_HandleLoadCallbacks(GlobalContext* ctxt, RoomContext* roomCtxt) {
|
||||
if (roomCtxt->unk31 == 1)
|
||||
{
|
||||
if (!osRecvMesg(&roomCtxt->loadQueue, NULL, OS_MESG_NOBLOCK))
|
||||
{
|
||||
if (roomCtxt->unk31 == 1) {
|
||||
if (!osRecvMesg(&roomCtxt->loadQueue, NULL, OS_MESG_NOBLOCK)) {
|
||||
roomCtxt->unk31 = 0;
|
||||
roomCtxt->currRoom.segment = roomCtxt->activeRoomVram;
|
||||
// TODO: Segment number enum
|
||||
@@ -116,7 +118,8 @@ s32 Room_HandleLoadCallbacks(GlobalContext* ctxt, RoomContext* roomCtxt) {
|
||||
func_80123140(ctxt, (ActorPlayer*)ctxt->actorCtx.actorList[2].first);
|
||||
Actor_SpawnTransitionActors(ctxt, &ctxt->actorCtx);
|
||||
|
||||
if (((ctxt->sceneNum != SCENE_IKANA) || (roomCtxt->currRoom.num != 1)) && (ctxt->sceneNum != SCENE_IKNINSIDE)) {
|
||||
if (((ctxt->sceneNum != SCENE_IKANA) || (roomCtxt->currRoom.num != 1)) &&
|
||||
(ctxt->sceneNum != SCENE_IKNINSIDE)) {
|
||||
ctxt->kankyoContext.unkC3 = 0xff;
|
||||
ctxt->kankyoContext.unkE0 = 0;
|
||||
}
|
||||
@@ -141,7 +144,7 @@ void Room_Draw(GlobalContext* ctxt, Room* room, u32 flags) {
|
||||
return;
|
||||
}
|
||||
|
||||
void func_8012EBF8(GlobalContext* ctxt, RoomContext* roomCtxt){
|
||||
void func_8012EBF8(GlobalContext* ctxt, RoomContext* roomCtxt) {
|
||||
roomCtxt->prevRoom.num = -1;
|
||||
roomCtxt->prevRoom.segment = NULL;
|
||||
func_800BA798(ctxt, &ctxt->actorCtx);
|
||||
|
||||
@@ -847,7 +847,7 @@ Gfx* SkelAnime_DrawSV2(GlobalContext* globalCtx, Skeleton* skeleton, Vec3s* limb
|
||||
return gfx;
|
||||
}
|
||||
|
||||
//Function is unused.
|
||||
// Function is unused.
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_skelanime/func_80134FFC.asm")
|
||||
|
||||
s16 func_801353D4(GenericAnimationHeader* animationSeg) {
|
||||
|
||||
@@ -254,7 +254,7 @@ s32 SkinMatrix_Invert(MtxF* src, MtxF* dest) {
|
||||
if (thisCol != thisRow) { // responsible for swapping columns if zero on diagonal
|
||||
for (i = 0; i < 4; i++) {
|
||||
SWAP(f32, mfCopy.mf[i][thisCol], mfCopy.mf[i][thisRow]);
|
||||
SWAP(f32, dest->mf[i][thisCol], dest->mf[i][thisRow]);
|
||||
SWAP(f32, dest->mf[i][thisCol], dest->mf[i][thisRow]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -796,7 +796,6 @@ void SkinMatrix_SetZRotation(MtxF* mf, s16 a) {
|
||||
mf->wy = 0.0f;
|
||||
mf->wz = 0.0f;
|
||||
|
||||
|
||||
mf->zz = 1.0f;
|
||||
mf->ww = 1.0f;
|
||||
|
||||
|
||||
+31
-29
@@ -25,38 +25,40 @@ s32 func_8013A240(GlobalContext* ctxt) {
|
||||
seen = 0;
|
||||
|
||||
switch (ctxt->sceneNum) {
|
||||
case SCENE_20SICHITAI:
|
||||
if ((actor->id == ACTOR_EN_MNK) || (actor->id == ACTOR_EN_BIGOKUTA)) {
|
||||
seen = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
seen = 0;
|
||||
case SCENE_20SICHITAI:
|
||||
if ((actor->id == ACTOR_EN_MNK) || (actor->id == ACTOR_EN_BIGOKUTA)) {
|
||||
seen = 1;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
seen = 0;
|
||||
}
|
||||
|
||||
if (actor->id); // Needed to match
|
||||
if (actor->id) {
|
||||
; // Needed to match
|
||||
}
|
||||
|
||||
switch (actor->id) {
|
||||
case ACTOR_EN_KAKASI:
|
||||
if ((actor->params & 1) == 1) {
|
||||
case ACTOR_EN_KAKASI:
|
||||
if ((actor->params & 1) == 1) {
|
||||
seen |= 2;
|
||||
break; //! @bug break is inside conditional, meaning it falls through if it is false
|
||||
}
|
||||
case ACTOR_EN_ZOV:
|
||||
seen |= 2;
|
||||
break; //! @bug break is inside conditional, meaning it falls through if it is false
|
||||
}
|
||||
case ACTOR_EN_ZOV:
|
||||
seen |= 2;
|
||||
break;
|
||||
case ACTOR_EN_BAL:
|
||||
seen |= 2;
|
||||
break;
|
||||
case ACTOR_EN_DNQ:
|
||||
seen |= 2;
|
||||
break;
|
||||
case ACTOR_EN_GE1:
|
||||
case ACTOR_EN_GE3:
|
||||
case ACTOR_EN_KAIZOKU:
|
||||
case ACTOR_EN_GE2:
|
||||
seen |= 2;
|
||||
break;
|
||||
break;
|
||||
case ACTOR_EN_BAL:
|
||||
seen |= 2;
|
||||
break;
|
||||
case ACTOR_EN_DNQ:
|
||||
seen |= 2;
|
||||
break;
|
||||
case ACTOR_EN_GE1:
|
||||
case ACTOR_EN_GE3:
|
||||
case ACTOR_EN_KAIZOKU:
|
||||
case ACTOR_EN_GE2:
|
||||
seen |= 2;
|
||||
break;
|
||||
}
|
||||
|
||||
if (seen != 0) {
|
||||
@@ -105,7 +107,8 @@ s16 func_8013A504(s16 val) {
|
||||
return (val >= 0) ? val : -val;
|
||||
}
|
||||
|
||||
s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos, Vec3s* rot, f32 distanceMin, f32 distanceMax, s16 angleError) {
|
||||
s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos, Vec3s* rot, f32 distanceMin,
|
||||
f32 distanceMax, s16 angleError) {
|
||||
Vec3f screenSpace;
|
||||
s16 x;
|
||||
s16 y;
|
||||
@@ -157,4 +160,3 @@ s32 func_8013A530(GlobalContext* globalCtx, Actor* actor, s32 flag, Vec3f* pos,
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -28,7 +28,9 @@ void View_Init(View* view, GraphicsContext* gfxCtx) {
|
||||
view->unk164 = 0;
|
||||
view->flags = 1 | 2 | 4;
|
||||
|
||||
if (1);
|
||||
if (1) {
|
||||
;
|
||||
}
|
||||
|
||||
view->scale = 1.0f;
|
||||
view->upDir.y = 1.0f;
|
||||
@@ -339,7 +341,7 @@ s32 View_RenderToPerspectiveMatrix(View* view) {
|
||||
}
|
||||
|
||||
guLookAt(viewing, view->eye.x, view->eye.y, view->eye.z, view->focalPoint.x, view->focalPoint.y, view->focalPoint.z,
|
||||
view->upDir.x, view->upDir.y, view->upDir.z);
|
||||
view->upDir.x, view->upDir.y, view->upDir.z);
|
||||
|
||||
view->viewing = *viewing;
|
||||
|
||||
@@ -382,8 +384,8 @@ s32 View_RenderToOrthographicMatrix(View* view) {
|
||||
}
|
||||
view->projectionPtr = projection;
|
||||
|
||||
guOrtho(projection, -0.5f ,0.5f, screenWidth * -0.5f, screenWidth * 0.5f,
|
||||
screenHeight * -0.5f, screenHeight * 0.5f, view->zNear);
|
||||
guOrtho(projection, -0.5f, 0.5f, gScreenWidth * -0.5f, gScreenWidth * 0.5f, gScreenHeight * -0.5f,
|
||||
gScreenHeight * 0.5f, view->zNear);
|
||||
|
||||
view->projection = *projection;
|
||||
|
||||
@@ -401,9 +403,8 @@ s32 View_RenderToOrthographicMatrix(View* view) {
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_view/func_8013FD74.asm")
|
||||
|
||||
s32 func_80140024(View* view) {
|
||||
guLookAt(view->viewingPtr, view->eye.x, view->eye.y, view->eye.z,
|
||||
view->focalPoint.x, view->focalPoint.y, view->focalPoint.z,
|
||||
view->upDir.x, view->upDir.y, view->upDir.z);
|
||||
guLookAt(view->viewingPtr, view->eye.x, view->eye.y, view->eye.z, view->focalPoint.x, view->focalPoint.y,
|
||||
view->focalPoint.z, view->upDir.x, view->upDir.y, view->upDir.z);
|
||||
|
||||
view->unkE0 = *view->viewingPtr;
|
||||
view->viewingPtr = &view->unkE0;
|
||||
@@ -412,4 +413,3 @@ s32 func_80140024(View* view) {
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("./asm/non_matchings/code/z_view/func_801400CC.asm")
|
||||
|
||||
|
||||
+1
-1
@@ -158,4 +158,4 @@ void func_801434E4(GameState* state, SkyboxContext* skyboxCtx, s16 skyType) {
|
||||
func_80143148(skyboxCtx, 5);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user