1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-04 15:04:31 +00:00

More progress

This commit is contained in:
Sirius902 2020-11-14 18:59:42 -08:00
parent fffb7b6bea
commit 53b52f63e7

View file

@ -136,20 +136,21 @@ void BgGanonOtyuka_Destroy(Actor* thisx, GlobalContext* globalCtx) {
#ifdef NON_MATCHING #ifdef NON_MATCHING
void BgGanonOtyuka_Draw(Actor* thisx, GlobalContext* globalCtx) { void BgGanonOtyuka_Draw(Actor* thisx, GlobalContext* globalCtx) {
BgGanonOtyuka* this = THIS; BgGanonOtyuka* this = THIS;
Camera* camera = Gameplay_GetCamera(globalCtx, 0); s16 i;
f32 spBC = -30.0f;
Actor* boss;
Actor* prop;
Gfx* phi_s2; Gfx* phi_s2;
Gfx* phi_s1; Gfx* phi_s1;
s16 i; Camera* camera = Gameplay_GetCamera(globalCtx, 0);
Actor* actor;
BgGanonOtyuka* otyuka;
BossGanon* ganon;
f32 spBC = -30.0f;
OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_ganon_otyuka.c", 702); OPEN_DISPS(globalCtx->state.gfxCtx, "../z_bg_ganon_otyuka.c", 702);
boss = globalCtx->actorCtx.actorList[ACTORTYPE_BOSS].first;
if (boss != NULL) { actor = globalCtx->actorCtx.actorList[ACTORTYPE_BOSS].first;
while (boss->next != NULL) { while (actor != NULL) {
if ((boss->id == ACTOR_BOSS_GANON) && (boss->params == 0)) { if ((actor->id == ACTOR_BOSS_GANON) && (actor->params == 0)) {
BossGanon* ganon = (BossGanon*)boss; ganon = (BossGanon*)actor;
if (ganon->unk_198 != 0) { if (ganon->unk_198 != 0) {
spBC = -2000.0f; spBC = -2000.0f;
@ -157,29 +158,29 @@ void BgGanonOtyuka_Draw(Actor* thisx, GlobalContext* globalCtx) {
break; break;
} else { } else {
boss = boss->next; actor = actor->next;
}
} }
} }
func_80093D18(globalCtx->state.gfxCtx); func_80093D18(globalCtx->state.gfxCtx);
gSPDisplayList(POLY_OPA_DISP++, D_80877328); gSPDisplayList(POLY_OPA_DISP++, D_80877328);
prop = globalCtx->actorCtx.actorList[ACTORTYPE_PROP].first;
if (prop != NULL) { actor = globalCtx->actorCtx.actorList[ACTORTYPE_PROP].first;
while (prop->next != NULL) { while (actor != NULL) {
if ((prop->id == ACTOR_BG_GANON_OTYUKA) && (prop->projectedPos.z > spBC)) { if ((actor->id == ACTOR_BG_GANON_OTYUKA) && (actor->projectedPos.z > spBC)) {
BgGanonOtyuka* otyuka = (BgGanonOtyuka*)prop; otyuka = (BgGanonOtyuka*)actor;
phi_s2 = D_80877408; phi_s2 = D_80877408;
if (camera->eye.y > prop->posRot.pos.y) { if (camera->eye.y > actor->posRot.pos.y) {
phi_s2 = D_808773B0; phi_s2 = D_808773B0;
} }
Matrix_Translate(prop->posRot.pos.x, prop->posRot.pos.y, prop->posRot.pos.z, MTXMODE_NEW); Matrix_Translate(actor->posRot.pos.x, actor->posRot.pos.y, actor->posRot.pos.z, MTXMODE_NEW);
phi_s1 = NULL; phi_s1 = NULL;
if (otyuka->unk_16A != 0) { if (otyuka->unk_16A != 0) {
Matrix_RotateX((prop->shape.rot.x / 32768.0f) * M_PI, MTXMODE_APPLY); Matrix_RotateX((actor->shape.rot.x / 32768.0f) * M_PI, MTXMODE_APPLY);
Matrix_RotateZ((prop->shape.rot.z / 32768.0f) * M_PI, MTXMODE_APPLY); Matrix_RotateZ((actor->shape.rot.z / 32768.0f) * M_PI, MTXMODE_APPLY);
phi_s1 = D_808773B0; phi_s1 = D_808773B0;
if (camera->eye.y > prop->posRot.pos.y) { if (camera->eye.y > actor->posRot.pos.y) {
phi_s1 = D_80877408; phi_s1 = D_80877408;
} }
} }
@ -196,32 +197,31 @@ void BgGanonOtyuka_Draw(Actor* thisx, GlobalContext* globalCtx) {
Matrix_Push(); Matrix_Push();
Matrix_Translate(D_80876AA0[i].x, 0.0f, D_80876AA0[i].z, MTXMODE_APPLY); Matrix_Translate(D_80876AA0[i].x, 0.0f, D_80876AA0[i].z, MTXMODE_APPLY);
Matrix_RotateY(D_80876AD0[i], MTXMODE_APPLY); Matrix_RotateY(D_80876AD0[i], MTXMODE_APPLY);
gSPMatrix(POLY_OPA_DISP++, gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_ganon_otyuka.c", 785),
Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_ganon_otyuka.c", 785),
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, D_80877460); gSPDisplayList(POLY_OPA_DISP++, D_80877460);
Matrix_Pull(); Matrix_Pull();
} }
} }
} else { } else {
prop = prop->next; actor = actor->next;
} }
} }
}
func_80093D84(globalCtx->state.gfxCtx);
prop = globalCtx->actorCtx.actorList[ACTORTYPE_PROP].first;
if (prop != NULL) {
BgGanonOtyuka* otyuka = (BgGanonOtyuka*)prop;
while (prop->next != NULL) { func_80093D84(globalCtx->state.gfxCtx);
if ((prop->id == ACTOR_BG_GANON_OTYUKA) && (prop->projectedPos.z > -30.0f) && (otyuka->unk_16E != 0)) { actor = globalCtx->actorCtx.actorList[ACTORTYPE_PROP].first;
if (actor != NULL) {
otyuka = (BgGanonOtyuka*)actor;
while (actor->next != NULL) {
if ((actor->id == ACTOR_BG_GANON_OTYUKA) && (actor->projectedPos.z > -30.0f) && (otyuka->unk_16E != 0)) {
gSPSegment(POLY_XLU_DISP++, 0x08, gSPSegment(POLY_XLU_DISP++, 0x08,
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, otyuka->unk_16D * 4, 0, 32, 64, 1, Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, otyuka->unk_16D * 4, 0, 32, 64, 1,
otyuka->unk_16D * 4, 0, 32, 64)); otyuka->unk_16D * 4, 0, 32, 64));
gDPPipeSync(POLY_XLU_DISP++); gDPPipeSync(POLY_XLU_DISP++);
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, otyuka->primR, otyuka->primG, otyuka->primB, 0); gDPSetPrimColor(POLY_XLU_DISP++, 0, 0, otyuka->primR, otyuka->primG, otyuka->primB, 0);
gDPSetEnvColor(POLY_XLU_DISP++, otyuka->envR, otyuka->envG, otyuka->envB, 128); gDPSetEnvColor(POLY_XLU_DISP++, otyuka->envR, otyuka->envG, otyuka->envB, 128);
Matrix_Translate(prop->posRot.pos.x, 0.0f, prop->posRot.pos.z, MTXMODE_NEW); Matrix_Translate(actor->posRot.pos.x, 0.0f, actor->posRot.pos.z, MTXMODE_NEW);
for (i = 0; i < ARRAY_COUNT(D_80876A64); i++) { for (i = 0; i < ARRAY_COUNT(D_80876A64); i++) {
if ((D_80876A64[i] & otyuka->unk_16B) != 0) { if ((D_80876A64[i] & otyuka->unk_16B) != 0) {
@ -238,10 +238,11 @@ void BgGanonOtyuka_Draw(Actor* thisx, GlobalContext* globalCtx) {
} }
break; break;
} else { } else {
prop = prop->next; actor = actor->next;
} }
} }
} }
CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_ganon_otyuka.c", 857); CLOSE_DISPS(globalCtx->state.gfxCtx, "../z_bg_ganon_otyuka.c", 857);
} }
#else #else