mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-14 05:19:36 +00:00
parent
d674dad3da
commit
454b1caa52
10 changed files with 75 additions and 51 deletions
|
@ -469,7 +469,7 @@ void ObjBean_Init(Actor* thisx, PlayState* play) {
|
||||||
|
|
||||||
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
|
||||||
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
|
if (LINK_AGE_IN_YEARS == YEARS_ADULT) {
|
||||||
if (Flags_GetSwitch(play, this->dyna.actor.params & 0x3F) || (mREG(1) == 1)) {
|
if (Flags_GetSwitch(play, this->dyna.actor.params & 0x3F) || (OOT_DEBUG && mREG(1) == 1)) {
|
||||||
path = (this->dyna.actor.params >> 8) & 0x1F;
|
path = (this->dyna.actor.params >> 8) & 0x1F;
|
||||||
if (path == 0x1F) {
|
if (path == 0x1F) {
|
||||||
PRINTF(VT_COL(RED, WHITE));
|
PRINTF(VT_COL(RED, WHITE));
|
||||||
|
@ -504,7 +504,7 @@ void ObjBean_Init(Actor* thisx, PlayState* play) {
|
||||||
Actor_Kill(&this->dyna.actor);
|
Actor_Kill(&this->dyna.actor);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else if ((Flags_GetSwitch(play, this->dyna.actor.params & 0x3F) != 0) || (mREG(1) == 1)) {
|
} else if ((Flags_GetSwitch(play, this->dyna.actor.params & 0x3F) != 0) || (OOT_DEBUG && mREG(1) == 1)) {
|
||||||
ObjBean_SetupWaitForWater(this);
|
ObjBean_SetupWaitForWater(this);
|
||||||
} else {
|
} else {
|
||||||
ObjBean_SetupWaitForBean(this);
|
ObjBean_SetupWaitForBean(this);
|
||||||
|
|
|
@ -94,9 +94,11 @@ void ObjHsblock_Init(Actor* thisx, PlayState* play) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if OOT_DEBUG
|
||||||
mREG(13) = 255;
|
mREG(13) = 255;
|
||||||
mREG(14) = 255;
|
mREG(14) = 255;
|
||||||
mREG(15) = 255;
|
mREG(15) = 255;
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjHsblock_Destroy(Actor* thisx, PlayState* play) {
|
void ObjHsblock_Destroy(Actor* thisx, PlayState* play) {
|
||||||
|
@ -158,9 +160,16 @@ void ObjHsblock_Draw(Actor* thisx, PlayState* play) {
|
||||||
if (play->sceneId == SCENE_FIRE_TEMPLE) {
|
if (play->sceneId == SCENE_FIRE_TEMPLE) {
|
||||||
color = &sFireTempleColor;
|
color = &sFireTempleColor;
|
||||||
} else {
|
} else {
|
||||||
|
#if OOT_DEBUG
|
||||||
defaultColor.r = mREG(13);
|
defaultColor.r = mREG(13);
|
||||||
defaultColor.g = mREG(14);
|
defaultColor.g = mREG(14);
|
||||||
defaultColor.b = mREG(15);
|
defaultColor.b = mREG(15);
|
||||||
|
#else
|
||||||
|
defaultColor.r = 255;
|
||||||
|
defaultColor.g = 255;
|
||||||
|
defaultColor.b = 255;
|
||||||
|
#endif
|
||||||
|
|
||||||
color = &defaultColor;
|
color = &defaultColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -125,8 +125,8 @@ void ObjKibako2_Init(Actor* thisx, PlayState* play) {
|
||||||
ObjKibako2_InitCollider(thisx, play);
|
ObjKibako2_InitCollider(thisx, play);
|
||||||
CollisionHeader_GetVirtual(&gLargeCrateCol, &colHeader);
|
CollisionHeader_GetVirtual(&gLargeCrateCol, &colHeader);
|
||||||
bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
|
bgId = DynaPoly_SetBgActor(play, &play->colCtx.dyna, &this->dyna.actor, colHeader);
|
||||||
this->collectibleFlag = this->dyna.actor.home.rot.z & 0x3F;
|
|
||||||
this->dyna.bgId = bgId;
|
this->dyna.bgId = bgId;
|
||||||
|
this->collectibleFlag = this->dyna.actor.home.rot.z & 0x3F;
|
||||||
this->actionFunc = ObjKibako2_Idle;
|
this->actionFunc = ObjKibako2_Idle;
|
||||||
this->dyna.actor.home.rot.z = this->dyna.actor.world.rot.z = this->dyna.actor.shape.rot.z =
|
this->dyna.actor.home.rot.z = this->dyna.actor.world.rot.z = this->dyna.actor.shape.rot.z =
|
||||||
this->dyna.actor.world.rot.x = this->dyna.actor.shape.rot.x = 0;
|
this->dyna.actor.world.rot.x = this->dyna.actor.shape.rot.x = 0;
|
||||||
|
|
|
@ -109,9 +109,12 @@ void ObjMure_Init(Actor* thisx, PlayState* play) {
|
||||||
this->actionFunc = ObjMure_InitialAction;
|
this->actionFunc = ObjMure_InitialAction;
|
||||||
PRINTF("群れな敵 (arg_data 0x%04x)(chNum(%d) ptn(%d) svNum(%d) type(%d))\n", thisx->params, this->chNum, this->ptn,
|
PRINTF("群れな敵 (arg_data 0x%04x)(chNum(%d) ptn(%d) svNum(%d) type(%d))\n", thisx->params, this->chNum, this->ptn,
|
||||||
this->svNum, this->type);
|
this->svNum, this->type);
|
||||||
|
|
||||||
|
#if OOT_DEBUG
|
||||||
if (ObjMure_GetMaxChildSpawns(this) <= 0) {
|
if (ObjMure_GetMaxChildSpawns(this) <= 0) {
|
||||||
PRINTF("Warning : 個体数が設定されていません(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 268, thisx->params);
|
PRINTF("Warning : 個体数が設定されていません(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 268, thisx->params);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjMure_Destroy(Actor* thisx, PlayState* play) {
|
void ObjMure_Destroy(Actor* thisx, PlayState* play) {
|
||||||
|
@ -125,48 +128,52 @@ s32 ObjMure_GetMaxChildSpawns(ObjMure* this) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjMure_GetSpawnPos(Vec3f* outPos, Vec3f* inPos, s32 ptn, s32 idx) {
|
void ObjMure_GetSpawnPos(Vec3f* outPos, Vec3f* inPos, s32 ptn, s32 idx) {
|
||||||
|
#if OOT_DEBUG
|
||||||
if (ptn >= 4) {
|
if (ptn >= 4) {
|
||||||
PRINTF("おかしなの (%s %d)\n", "../z_obj_mure.c", 307);
|
PRINTF("おかしなの (%s %d)\n", "../z_obj_mure.c", 307);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
*outPos = *inPos;
|
*outPos = *inPos;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjMure_SpawnActors0(ObjMure* this, PlayState* play) {
|
void ObjMure_SpawnActors0(ObjMure* this, PlayState* play) {
|
||||||
ActorContext* ac;
|
Actor* actor = &this->actor;
|
||||||
s32 i;
|
s32 i;
|
||||||
Vec3f pos;
|
Vec3f pos;
|
||||||
s32 pad;
|
s32 pad;
|
||||||
s32 maxChildren = ObjMure_GetMaxChildSpawns(this);
|
s32 maxChildren = ObjMure_GetMaxChildSpawns(this);
|
||||||
|
|
||||||
for (i = 0; i < maxChildren; i++) {
|
for (i = 0; i < maxChildren; i++) {
|
||||||
|
#if OOT_DEBUG
|
||||||
if (this->children[i] != NULL) {
|
if (this->children[i] != NULL) {
|
||||||
// "Error: I already have a child(%s %d)(arg_data 0x%04x)"
|
// "Error: I already have a child(%s %d)(arg_data 0x%04x)"
|
||||||
PRINTF("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 333, this->actor.params);
|
PRINTF("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 333, actor->params);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
switch (this->childrenStates[i]) {
|
switch (this->childrenStates[i]) {
|
||||||
case OBJMURE_CHILD_STATE_1:
|
case OBJMURE_CHILD_STATE_1:
|
||||||
break;
|
break;
|
||||||
case OBJMURE_CHILD_STATE_2:
|
case OBJMURE_CHILD_STATE_2:
|
||||||
ac = &play->actorCtx;
|
ObjMure_GetSpawnPos(&pos, &actor->world.pos, this->ptn, i);
|
||||||
ObjMure_GetSpawnPos(&pos, &this->actor.world.pos, this->ptn, i);
|
|
||||||
this->children[i] =
|
this->children[i] =
|
||||||
Actor_Spawn(ac, play, sSpawnActorIds[this->type], pos.x, pos.y, pos.z, this->actor.world.rot.x,
|
Actor_Spawn(&play->actorCtx, play, sSpawnActorIds[this->type], pos.x, pos.y, pos.z,
|
||||||
this->actor.world.rot.y, this->actor.world.rot.z, sSpawnParams[this->type]);
|
actor->world.rot.x, actor->world.rot.y, actor->world.rot.z, sSpawnParams[this->type]);
|
||||||
if (this->children[i] != NULL) {
|
if (this->children[i] != NULL) {
|
||||||
this->children[i]->flags |= ACTOR_FLAG_ENKUSA_CUT;
|
this->children[i]->flags |= ACTOR_FLAG_ENKUSA_CUT;
|
||||||
this->children[i]->room = this->actor.room;
|
this->children[i]->room = actor->room;
|
||||||
} else {
|
} else {
|
||||||
PRINTF("warning 発生失敗 (%s %d)\n", "../z_obj_mure.c", 359);
|
PRINTF("warning 発生失敗 (%s %d)\n", "../z_obj_mure.c", 359);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
ac = &play->actorCtx;
|
ObjMure_GetSpawnPos(&pos, &actor->world.pos, this->ptn, i);
|
||||||
ObjMure_GetSpawnPos(&pos, &this->actor.world.pos, this->ptn, i);
|
|
||||||
this->children[i] =
|
this->children[i] =
|
||||||
Actor_Spawn(ac, play, sSpawnActorIds[this->type], pos.x, pos.y, pos.z, this->actor.world.rot.x,
|
Actor_Spawn(&play->actorCtx, play, sSpawnActorIds[this->type], pos.x, pos.y, pos.z,
|
||||||
this->actor.world.rot.y, this->actor.world.rot.z, sSpawnParams[this->type]);
|
actor->world.rot.x, actor->world.rot.y, actor->world.rot.z, sSpawnParams[this->type]);
|
||||||
if (this->children[i] != NULL) {
|
if (this->children[i] != NULL) {
|
||||||
this->children[i]->room = this->actor.room;
|
this->children[i]->room = actor->room;
|
||||||
} else {
|
} else {
|
||||||
PRINTF("warning 発生失敗 (%s %d)\n", "../z_obj_mure.c", 382);
|
PRINTF("warning 発生失敗 (%s %d)\n", "../z_obj_mure.c", 382);
|
||||||
}
|
}
|
||||||
|
@ -175,21 +182,23 @@ void ObjMure_SpawnActors0(ObjMure* this, PlayState* play) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjMure_SpawnActors1(ObjMure* this, PlayState* play) {
|
void ObjMure_SpawnActors1(ObjMure* this, PlayState* play2) {
|
||||||
ActorContext* ac = (ActorContext*)play; // fake match
|
PlayState* play = play2;
|
||||||
Actor* actor = &this->actor;
|
Actor* actor = &this->actor;
|
||||||
Vec3f spawnPos;
|
Vec3f spawnPos;
|
||||||
s32 maxChildren = ObjMure_GetMaxChildSpawns(this);
|
s32 maxChildren = ObjMure_GetMaxChildSpawns(this);
|
||||||
s32 i;
|
s32 i;
|
||||||
|
|
||||||
for (i = 0; i < maxChildren; i++) {
|
for (i = 0; i < maxChildren; i++) {
|
||||||
|
#if OOT_DEBUG
|
||||||
if (this->children[i] != NULL) {
|
if (this->children[i] != NULL) {
|
||||||
PRINTF("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 407, actor->params);
|
PRINTF("Error : 既に子供がいる(%s %d)(arg_data 0x%04x)\n", "../z_obj_mure.c", 407, actor->params);
|
||||||
}
|
}
|
||||||
ac = &play->actorCtx;
|
#endif
|
||||||
|
|
||||||
ObjMure_GetSpawnPos(&spawnPos, &actor->world.pos, this->ptn, i);
|
ObjMure_GetSpawnPos(&spawnPos, &actor->world.pos, this->ptn, i);
|
||||||
this->children[i] = Actor_Spawn(ac, play, sSpawnActorIds[this->type], spawnPos.x, spawnPos.y, spawnPos.z,
|
this->children[i] = Actor_Spawn(&play2->actorCtx, play, sSpawnActorIds[this->type], spawnPos.x, spawnPos.y,
|
||||||
actor->world.rot.x, actor->world.rot.y, actor->world.rot.z,
|
spawnPos.z, actor->world.rot.x, actor->world.rot.y, actor->world.rot.z,
|
||||||
(this->type == 4 && i == 0) ? 1 : sSpawnParams[this->type]);
|
(this->type == 4 && i == 0) ? 1 : sSpawnParams[this->type]);
|
||||||
if (this->children[i] != NULL) {
|
if (this->children[i] != NULL) {
|
||||||
this->childrenStates[i] = OBJMURE_CHILD_STATE_0;
|
this->childrenStates[i] = OBJMURE_CHILD_STATE_0;
|
||||||
|
|
|
@ -106,9 +106,10 @@ void func_80B9ABA0(ObjMure3* this, PlayState* play) {
|
||||||
void func_80B9ACE4(ObjMure3* this, PlayState* play) {
|
void func_80B9ACE4(ObjMure3* this, PlayState* play) {
|
||||||
s16 count = sRupeeCounts[(this->actor.params >> 13) & 7];
|
s16 count = sRupeeCounts[(this->actor.params >> 13) & 7];
|
||||||
s32 i;
|
s32 i;
|
||||||
|
EnItem00** collectible;
|
||||||
|
|
||||||
for (i = 0; i < count; i++) {
|
for (i = 0; i < count; i++) {
|
||||||
EnItem00** collectible = &this->unk_150[i];
|
collectible = &this->unk_150[i];
|
||||||
|
|
||||||
if (!((this->unk_16C >> i) & 1) && (*collectible != NULL)) {
|
if (!((this->unk_16C >> i) & 1) && (*collectible != NULL)) {
|
||||||
if (Actor_HasParent(&(*collectible)->actor, play) || ((*collectible)->actor.update == NULL)) {
|
if (Actor_HasParent(&(*collectible)->actor, play) || ((*collectible)->actor.update == NULL)) {
|
||||||
|
|
|
@ -283,6 +283,8 @@ void ObjSyokudai_Draw(Actor* thisx, PlayState* play) {
|
||||||
}
|
}
|
||||||
flameScale *= 0.0027f;
|
flameScale *= 0.0027f;
|
||||||
|
|
||||||
|
if (1) {}
|
||||||
|
|
||||||
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
Gfx_SetupDL_25Xlu(play->state.gfxCtx);
|
||||||
|
|
||||||
gSPSegment(POLY_XLU_DISP++, 0x08,
|
gSPSegment(POLY_XLU_DISP++, 0x08,
|
||||||
|
|
|
@ -74,39 +74,37 @@ void ObjWarp2block_Spawn(ObjWarp2block* this, PlayState* play) {
|
||||||
}
|
}
|
||||||
|
|
||||||
s32 func_80BA1ECC(ObjWarp2block* this, PlayState* play) {
|
s32 func_80BA1ECC(ObjWarp2block* this, PlayState* play) {
|
||||||
s32 pad;
|
|
||||||
Actor* temp_a3;
|
|
||||||
Player* player;
|
|
||||||
Vec3f sp20;
|
|
||||||
f32 temp_f2;
|
|
||||||
|
|
||||||
if (DynaPolyActor_IsPlayerAbove(&this->dyna)) {
|
if (DynaPolyActor_IsPlayerAbove(&this->dyna)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
|
||||||
|
|
||||||
temp_a3 = this->dyna.actor.child;
|
|
||||||
player = GET_PLAYER(play);
|
|
||||||
if ((this->dyna.actor.xzDistToPlayer <= sDistances[(((this->dyna.actor.params >> 0xB) & 7))]) ||
|
|
||||||
(temp_a3->xzDistToPlayer <= sDistances[(((temp_a3->params >> 0xB) & 7))])) {
|
|
||||||
|
|
||||||
func_8002DBD0(&this->dyna.actor, &sp20, &player->actor.world.pos);
|
|
||||||
temp_f2 = (this->dyna.actor.scale.x * 50.0f) + 6.0f;
|
|
||||||
|
|
||||||
if (!(temp_f2 < fabsf(sp20.x)) && !(temp_f2 < fabsf(sp20.z))) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
func_8002DBD0(temp_a3, &sp20, &player->actor.world.pos);
|
|
||||||
temp_f2 = (temp_a3->scale.x * 50.0f) + 6.0f;
|
|
||||||
|
|
||||||
if (!(temp_f2 < fabsf(sp20.x)) && !(temp_f2 < fabsf(sp20.z))) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
s32 pad;
|
||||||
}
|
Actor* temp_a3 = this->dyna.actor.child;
|
||||||
|
Player* player = GET_PLAYER(play);
|
||||||
|
Vec3f sp20;
|
||||||
|
f32 temp_f2;
|
||||||
|
|
||||||
return 1;
|
if ((this->dyna.actor.xzDistToPlayer <= sDistances[(((this->dyna.actor.params >> 0xB) & 7))]) ||
|
||||||
|
(temp_a3->xzDistToPlayer <= sDistances[(((temp_a3->params >> 0xB) & 7))])) {
|
||||||
|
|
||||||
|
func_8002DBD0(&this->dyna.actor, &sp20, &player->actor.world.pos);
|
||||||
|
temp_f2 = (this->dyna.actor.scale.x * 50.0f) + 6.0f;
|
||||||
|
|
||||||
|
if (!(temp_f2 < fabsf(sp20.x)) && !(temp_f2 < fabsf(sp20.z))) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
func_8002DBD0(temp_a3, &sp20, &player->actor.world.pos);
|
||||||
|
temp_f2 = (temp_a3->scale.x * 50.0f) + 6.0f;
|
||||||
|
|
||||||
|
if (!(temp_f2 < fabsf(sp20.x)) && !(temp_f2 < fabsf(sp20.z))) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ObjWarp2block_SwapWithChild(ObjWarp2block* this, PlayState* play) {
|
void ObjWarp2block_SwapWithChild(ObjWarp2block* this, PlayState* play) {
|
||||||
|
|
|
@ -860,6 +860,8 @@ void ObjectKankyo_DrawSunGraveSpark(Actor* thisx, PlayState* play2) {
|
||||||
(u8)(255 * this->effects[0].amplitude), 255 - (u8)(255 * this->effects[0].amplitude),
|
(u8)(255 * this->effects[0].amplitude), 255 - (u8)(255 * this->effects[0].amplitude),
|
||||||
this->effects[0].alpha);
|
this->effects[0].alpha);
|
||||||
|
|
||||||
|
if (1) {}
|
||||||
|
|
||||||
Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY);
|
Matrix_Mult(&play->billboardMtxF, MTXMODE_APPLY);
|
||||||
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEW(play->state.gfxCtx, "../z_object_kankyo.c", 1416), G_MTX_LOAD);
|
gSPMatrix(POLY_XLU_DISP++, MATRIX_NEW(play->state.gfxCtx, "../z_object_kankyo.c", 1416), G_MTX_LOAD);
|
||||||
|
|
||||||
|
|
|
@ -124,5 +124,7 @@ void OceffWipe_Draw(Actor* thisx, PlayState* play) {
|
||||||
32, 1, 0 - scroll, scroll * (-2), 32, 32));
|
32, 1, 0 - scroll, scroll * (-2), 32, 32));
|
||||||
gSPDisplayList(POLY_XLU_DISP++, sFrustumDL);
|
gSPDisplayList(POLY_XLU_DISP++, sFrustumDL);
|
||||||
|
|
||||||
|
if (1) {}
|
||||||
|
|
||||||
CLOSE_DISPS(play->state.gfxCtx, "../z_oceff_wipe.c", 398);
|
CLOSE_DISPS(play->state.gfxCtx, "../z_oceff_wipe.c", 398);
|
||||||
}
|
}
|
||||||
|
|
|
@ -163,7 +163,6 @@ void ShotSun_UpdateHyliaSun(ShotSun* this, PlayState* play) {
|
||||||
Player* player = GET_PLAYER(play);
|
Player* player = GET_PLAYER(play);
|
||||||
EnItem00* collectible;
|
EnItem00* collectible;
|
||||||
s32 pad;
|
s32 pad;
|
||||||
Vec3f spawnPos;
|
|
||||||
|
|
||||||
if (this->collider.base.acFlags & AC_HIT) {
|
if (this->collider.base.acFlags & AC_HIT) {
|
||||||
Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME);
|
Sfx_PlaySfxCentered(NA_SE_SY_CORRECT_CHIME);
|
||||||
|
@ -174,6 +173,8 @@ void ShotSun_UpdateHyliaSun(ShotSun* this, PlayState* play) {
|
||||||
if (1) {}
|
if (1) {}
|
||||||
gSaveContext.cutsceneTrigger = 1;
|
gSaveContext.cutsceneTrigger = 1;
|
||||||
} else {
|
} else {
|
||||||
|
Vec3f spawnPos;
|
||||||
|
|
||||||
spawnPos.x = 700.0f;
|
spawnPos.x = 700.0f;
|
||||||
spawnPos.y = -800.0f;
|
spawnPos.y = -800.0f;
|
||||||
spawnPos.z = 7261.0f;
|
spawnPos.z = 7261.0f;
|
||||||
|
|
Loading…
Reference in a new issue