mirror of
https://github.com/zeldaret/oot.git
synced 2024-11-14 21:40:03 +00:00
[ntsc-1.2] Match z_demo.c, z_eff_blure.c, z_eff_spark.c (#2096)
* Match z_demo.c * Match z_eff_blure.c * Match z_eff_spark.c (fake inc.) * review * improve EffectSpark_Draw match Co-authored-by: cadmic <cadmic24@gmail.com> * cleanup * fix merge * review * better match EffectBlure_DrawSimpleVertices (ty cadmic) * review * rm unneeded include versions.h --------- Co-authored-by: cadmic <cadmic24@gmail.com>
This commit is contained in:
parent
a63f0a63b5
commit
dc964931c2
4 changed files with 123 additions and 110 deletions
|
@ -34,6 +34,8 @@ typedef struct n64ddStruct_80121AF0 {
|
|||
char unk_48[0x24];
|
||||
void (*unk_6C)(struct PlayState*, SceneDrawConfigFunc*);
|
||||
s32 (*unk_70)(DmaRequest* req, void* ram, uintptr_t vrom, size_t size, u32 unk, OSMesgQueue* queue, OSMesg msg);
|
||||
char unk_74[4];
|
||||
s32 (*unk_78)(struct PlayState*, void*, void*);
|
||||
} n64ddStruct_80121AF0; // size = ?
|
||||
|
||||
void func_800ADA80(void);
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
#include "global.h"
|
||||
#include "quake.h"
|
||||
#include "z64camera.h"
|
||||
#if PLATFORM_N64
|
||||
#include "n64dd.h"
|
||||
#endif
|
||||
|
||||
#include "assets/scenes/indoors/tokinoma/tokinoma_scene.h"
|
||||
|
||||
|
@ -111,7 +114,7 @@ EntranceCutscene sEntranceCutsceneTable[] = {
|
|||
{ ENTR_KOKIRI_FOREST_12, 2, EVENTCHKINF_C6, gKokiriForestDekuSproutCs },
|
||||
};
|
||||
|
||||
void* sUnusedEntranceCsList[] = {
|
||||
void* sCutscenesUnknownList[] = {
|
||||
gDekuTreeIntroCs, gJabuJabuIntroCs, gDcOpeningCs, gMinuetCs, gIceCavernSerenadeCs, gTowerBarrierCs,
|
||||
};
|
||||
|
||||
|
@ -1702,6 +1705,9 @@ s32 CutsceneCmd_SetCamAt(PlayState* play, CutsceneContext* csCtx, u8* script, u8
|
|||
|
||||
void CutsceneCmd_Text(PlayState* play, CutsceneContext* csCtx, CsCmdText* cmd) {
|
||||
u8 dialogState;
|
||||
#if PLATFORM_N64
|
||||
s32 pad;
|
||||
#endif
|
||||
s16 endFrame;
|
||||
|
||||
if ((csCtx->curFrame > cmd->startFrame) && (csCtx->curFrame <= cmd->endFrame)) {
|
||||
|
@ -2416,6 +2422,14 @@ void Cutscene_HandleConditionalTriggers(PlayState* play) {
|
|||
}
|
||||
|
||||
void Cutscene_SetScript(PlayState* play, void* script) {
|
||||
#if PLATFORM_N64
|
||||
if ((B_80121AF0 != NULL) && (B_80121AF0->unk_78 != NULL)) {
|
||||
if (B_80121AF0->unk_78(play, script, sCutscenesUnknownList)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if (SEGMENT_NUMBER(script) != 0) {
|
||||
play->csCtx.script = SEGMENTED_TO_VIRTUAL(script);
|
||||
} else {
|
||||
|
|
|
@ -399,76 +399,78 @@ void EffectBlure_DrawElemNoInterpolation(EffectBlure* this, EffectBlureElement*
|
|||
if (vtx == NULL) {
|
||||
PRINTF(T("z_eff_blure.c::SQ_NoInterpolate_disp() 頂点確保できず。\n",
|
||||
"z_eff_blure.c::SQ_NoInterpolate_disp() Vertices cannot be secured.\n"));
|
||||
} else {
|
||||
vtx[0].v = baseVtx;
|
||||
vtx[1].v = baseVtx;
|
||||
vtx[2].v = baseVtx;
|
||||
vtx[3].v = baseVtx;
|
||||
|
||||
ratio = (f32)elem->timer / (f32)this->elemDuration;
|
||||
EffectBlure_GetComputedValues(this, index, ratio, &sp8C, &sp84, &sp7C, &sp78);
|
||||
|
||||
sp60.x = sp84.x;
|
||||
sp60.y = sp84.y;
|
||||
sp60.z = sp84.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[0].v.ob[0] = sp54.x;
|
||||
vtx[0].v.ob[1] = sp54.y;
|
||||
vtx[0].v.ob[2] = sp54.z;
|
||||
vtx[0].v.cn[0] = sp78.r;
|
||||
vtx[0].v.cn[1] = sp78.g;
|
||||
vtx[0].v.cn[2] = sp78.b;
|
||||
vtx[0].v.cn[3] = sp78.a;
|
||||
|
||||
if (1) {} // Necessary to match
|
||||
|
||||
sp60.x = sp8C.x;
|
||||
sp60.y = sp8C.y;
|
||||
sp60.z = sp8C.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[1].v.ob[0] = sp54.x;
|
||||
vtx[1].v.ob[1] = sp54.y;
|
||||
vtx[1].v.ob[2] = sp54.z;
|
||||
vtx[1].v.cn[0] = sp7C.r;
|
||||
vtx[1].v.cn[1] = sp7C.g;
|
||||
vtx[1].v.cn[2] = sp7C.b;
|
||||
vtx[1].v.cn[3] = sp7C.a;
|
||||
|
||||
ratio = (f32)(elem + 1)->timer / (f32)this->elemDuration;
|
||||
EffectBlure_GetComputedValues(this, index + 1, ratio, &sp8C, &sp84, &sp7C, &sp78);
|
||||
|
||||
sp60.x = sp8C.x;
|
||||
sp60.y = sp8C.y;
|
||||
sp60.z = sp8C.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[2].v.ob[0] = sp54.x;
|
||||
vtx[2].v.ob[1] = sp54.y;
|
||||
vtx[2].v.ob[2] = sp54.z;
|
||||
vtx[2].v.cn[0] = sp7C.r;
|
||||
vtx[2].v.cn[1] = sp7C.g;
|
||||
vtx[2].v.cn[2] = sp7C.b;
|
||||
vtx[2].v.cn[3] = sp7C.a;
|
||||
|
||||
sp60.x = sp84.x;
|
||||
sp60.y = sp84.y;
|
||||
sp60.z = sp84.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[3].v.ob[0] = sp54.x;
|
||||
vtx[3].v.ob[1] = sp54.y;
|
||||
vtx[3].v.ob[2] = sp54.z;
|
||||
vtx[3].v.cn[0] = sp78.r;
|
||||
vtx[3].v.cn[1] = sp78.g;
|
||||
vtx[3].v.cn[2] = sp78.b;
|
||||
vtx[3].v.cn[3] = sp78.a;
|
||||
|
||||
gSPVertex(POLY_XLU_DISP++, vtx, 4, 0);
|
||||
gSP2Triangles(POLY_XLU_DISP++, 0, 1, 2, 0, 0, 2, 3, 0);
|
||||
goto end;
|
||||
}
|
||||
|
||||
vtx[0].v = baseVtx;
|
||||
vtx[1].v = baseVtx;
|
||||
vtx[2].v = baseVtx;
|
||||
vtx[3].v = baseVtx;
|
||||
|
||||
ratio = (f32)elem->timer / (f32)this->elemDuration;
|
||||
EffectBlure_GetComputedValues(this, index, ratio, &sp8C, &sp84, &sp7C, &sp78);
|
||||
|
||||
sp60.x = sp84.x;
|
||||
sp60.y = sp84.y;
|
||||
sp60.z = sp84.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[0].v.ob[0] = sp54.x;
|
||||
vtx[0].v.ob[1] = sp54.y;
|
||||
vtx[0].v.ob[2] = sp54.z;
|
||||
vtx[0].v.cn[0] = sp78.r;
|
||||
vtx[0].v.cn[1] = sp78.g;
|
||||
vtx[0].v.cn[2] = sp78.b;
|
||||
vtx[0].v.cn[3] = sp78.a;
|
||||
|
||||
sp60.x = sp8C.x;
|
||||
sp60.y = sp8C.y;
|
||||
sp60.z = sp8C.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[1].v.ob[0] = sp54.x;
|
||||
vtx[1].v.ob[1] = sp54.y;
|
||||
vtx[1].v.ob[2] = sp54.z;
|
||||
vtx[1].v.cn[0] = sp7C.r;
|
||||
vtx[1].v.cn[1] = sp7C.g;
|
||||
vtx[1].v.cn[2] = sp7C.b;
|
||||
vtx[1].v.cn[3] = sp7C.a;
|
||||
|
||||
ratio = (f32)(elem + 1)->timer / (f32)this->elemDuration;
|
||||
EffectBlure_GetComputedValues(this, index + 1, ratio, &sp8C, &sp84, &sp7C, &sp78);
|
||||
|
||||
sp60.x = sp8C.x;
|
||||
sp60.y = sp8C.y;
|
||||
sp60.z = sp8C.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[2].v.ob[0] = sp54.x;
|
||||
vtx[2].v.ob[1] = sp54.y;
|
||||
vtx[2].v.ob[2] = sp54.z;
|
||||
vtx[2].v.cn[0] = sp7C.r;
|
||||
vtx[2].v.cn[1] = sp7C.g;
|
||||
vtx[2].v.cn[2] = sp7C.b;
|
||||
vtx[2].v.cn[3] = sp7C.a;
|
||||
|
||||
sp60.x = sp84.x;
|
||||
sp60.y = sp84.y;
|
||||
sp60.z = sp84.z;
|
||||
Math_Vec3f_Diff(&sp60, &sp6C, &sp54);
|
||||
Math_Vec3f_Scale(&sp54, 10.0f);
|
||||
vtx[3].v.ob[0] = sp54.x;
|
||||
vtx[3].v.ob[1] = sp54.y;
|
||||
vtx[3].v.ob[2] = sp54.z;
|
||||
vtx[3].v.cn[0] = sp78.r;
|
||||
vtx[3].v.cn[1] = sp78.g;
|
||||
vtx[3].v.cn[2] = sp78.b;
|
||||
vtx[3].v.cn[3] = sp78.a;
|
||||
|
||||
if (1) {}
|
||||
|
||||
gSPVertex(POLY_XLU_DISP++, vtx, 4, 0);
|
||||
gSP2Triangles(POLY_XLU_DISP++, 0, 1, 2, 0, 0, 2, 3, 0);
|
||||
|
||||
end:
|
||||
CLOSE_DISPS(gfxCtx, "../z_eff_blure.c", 932);
|
||||
}
|
||||
|
||||
|
@ -759,9 +761,6 @@ void EffectBlure_DrawSimpleVertices(GraphicsContext* gfxCtx, EffectBlure* this,
|
|||
MtxF sp94;
|
||||
f32 scale;
|
||||
s32 i;
|
||||
s32 j;
|
||||
|
||||
j = 0;
|
||||
|
||||
for (i = 0; i < this->numElements - 1; i++) {
|
||||
if (this->drawMode == 1) {
|
||||
|
@ -771,9 +770,7 @@ void EffectBlure_DrawSimpleVertices(GraphicsContext* gfxCtx, EffectBlure* this,
|
|||
gDPPipeSync(POLY_XLU_DISP++);
|
||||
}
|
||||
|
||||
if (1) {} // Necessary to match
|
||||
|
||||
gSPVertex(POLY_XLU_DISP++, &vtx[j], 4, 0);
|
||||
gSPVertex(POLY_XLU_DISP++, &vtx[4 * i], 4, 0);
|
||||
gSP2Triangles(POLY_XLU_DISP++, 0, 1, 3, 0, 0, 3, 2, 0);
|
||||
|
||||
if (this->flags & 4) {
|
||||
|
@ -806,13 +803,11 @@ void EffectBlure_DrawSimpleVertices(GraphicsContext* gfxCtx, EffectBlure* this,
|
|||
}
|
||||
|
||||
gSPMatrix(POLY_XLU_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPVertex(POLY_XLU_DISP++, &vtx[j], 4, 0);
|
||||
gSPVertex(POLY_XLU_DISP++, &vtx[4 * i], 4, 0);
|
||||
gSP2Triangles(POLY_XLU_DISP++, 0, 1, 3, 0, 0, 3, 2, 0);
|
||||
gSPMatrix(POLY_XLU_DISP++, &gMtxClear, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
}
|
||||
}
|
||||
|
||||
j += 4;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -222,41 +222,43 @@ void EffectSpark_Draw(void* thisx, GraphicsContext* gfxCtx) {
|
|||
vertices[j].v.tc[0] = 0;
|
||||
vertices[j].v.tc[1] = 1024;
|
||||
vertices[j].v.flag = 0;
|
||||
j++;
|
||||
|
||||
vertices[j + 1].v.ob[0] = 32;
|
||||
vertices[j + 1].v.ob[1] = 32;
|
||||
vertices[j + 1].v.ob[2] = 0;
|
||||
vertices[j + 1].v.cn[0] = sp1CF;
|
||||
vertices[j + 1].v.cn[1] = sp1CE;
|
||||
vertices[j + 1].v.cn[2] = sp1CD;
|
||||
vertices[j + 1].v.cn[3] = sp1CC;
|
||||
vertices[j + 1].v.tc[0] = 1024;
|
||||
vertices[j + 1].v.tc[1] = 0;
|
||||
vertices[j + 1].v.flag = 0;
|
||||
vertices[j].v.ob[0] = 32;
|
||||
vertices[j].v.ob[1] = 32;
|
||||
vertices[j].v.ob[2] = 0;
|
||||
vertices[j].v.cn[0] = sp1CF;
|
||||
vertices[j].v.cn[1] = sp1CE;
|
||||
vertices[j].v.cn[2] = sp1CD;
|
||||
vertices[j].v.cn[3] = sp1CC;
|
||||
vertices[j].v.tc[0] = 1024;
|
||||
vertices[j].v.tc[1] = 0;
|
||||
vertices[j].v.flag = 0;
|
||||
j++;
|
||||
|
||||
vertices[j + 2].v.ob[0] = -32;
|
||||
vertices[j + 2].v.ob[1] = 32;
|
||||
vertices[j + 2].v.ob[2] = 0;
|
||||
vertices[j + 2].v.cn[0] = sp1CB;
|
||||
vertices[j + 2].v.cn[1] = sp1CA;
|
||||
vertices[j + 2].v.cn[2] = sp1C9;
|
||||
vertices[j + 2].v.cn[3] = sp1C8;
|
||||
vertices[j + 2].v.tc[0] = 0;
|
||||
vertices[j + 2].v.tc[1] = 0;
|
||||
vertices[j + 2].v.flag = 0;
|
||||
vertices[j].v.ob[0] = -32;
|
||||
vertices[j].v.ob[1] = 32;
|
||||
vertices[j].v.ob[2] = 0;
|
||||
vertices[j].v.cn[0] = sp1CB;
|
||||
vertices[j].v.cn[1] = sp1CA;
|
||||
vertices[j].v.cn[2] = sp1C9;
|
||||
vertices[j].v.cn[3] = sp1C8;
|
||||
vertices[j].v.tc[0] = 0;
|
||||
vertices[j].v.tc[1] = 0;
|
||||
vertices[j].v.flag = 0;
|
||||
j++;
|
||||
|
||||
vertices[j + 3].v.ob[0] = 32;
|
||||
vertices[j + 3].v.ob[1] = -32;
|
||||
vertices[j + 3].v.ob[2] = 0;
|
||||
vertices[j + 3].v.cn[0] = sp1C7;
|
||||
vertices[j + 3].v.cn[1] = sp1C6;
|
||||
vertices[j + 3].v.cn[2] = sp1C5;
|
||||
vertices[j + 3].v.cn[3] = sp1C4;
|
||||
vertices[j + 3].v.tc[0] = 1024;
|
||||
vertices[j + 3].v.tc[1] = 1024;
|
||||
vertices[j + 3].v.flag = 0;
|
||||
|
||||
j += 4;
|
||||
vertices[j].v.ob[0] = 32;
|
||||
vertices[j].v.ob[1] = -32;
|
||||
vertices[j].v.ob[2] = 0;
|
||||
vertices[j].v.cn[0] = sp1C7;
|
||||
vertices[j].v.cn[1] = sp1C6;
|
||||
vertices[j].v.cn[2] = sp1C5;
|
||||
vertices[j].v.cn[3] = sp1C4;
|
||||
vertices[j].v.tc[0] = 1024;
|
||||
vertices[j].v.tc[1] = 1024;
|
||||
vertices[j].v.flag = 0;
|
||||
j++;
|
||||
|
||||
mtx = SkinMatrix_MtxFToNewMtx(gfxCtx, &sp12C);
|
||||
if (mtx == NULL) {
|
||||
|
|
Loading…
Reference in a new issue