Door_Warp1 OK (#816)

* Match doorwarp1

* pad
This commit is contained in:
Derek Hensley 2022-05-25 17:55:04 -07:00 committed by GitHub
parent 3374f41d1c
commit 6f2531cc66
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 33 additions and 60 deletions

4
spec
View File

@ -1026,11 +1026,7 @@ beginseg
name "ovl_Door_Warp1"
compress
include "build/src/overlays/actors/ovl_Door_Warp1/z_door_warp1.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_Door_Warp1/ovl_Door_Warp1_reloc.o"
#else
include "build/data/ovl_Door_Warp1/ovl_Door_Warp1.reloc.o"
#endif
endseg
beginseg

View File

@ -1019,11 +1019,9 @@ void func_808BB4C4(DoorWarp1* this, GlobalContext* globalCtx) {
Gfx_DrawDListOpa(globalCtx, object_warp1_DL_0076C0);
}
#ifdef NON_MATCHING
// GraphicsContext should be compiler-managed?
void func_808BB4F4(DoorWarp1* this, GlobalContext* globalCtx2) {
GlobalContext* globalCtx = globalCtx2;
GraphicsContext* gfxCtx;
s32 pad;
Color_RGB8 sp64[] = {
{ 50, 150, 0 },
{ 100, 150, 200 },
@ -1065,7 +1063,10 @@ void func_808BB4F4(DoorWarp1* this, GlobalContext* globalCtx2) {
gDPSetPrimColor(POLY_XLU_DISP++, 0, 0x80, 255, 255, 255, 255);
gSPMatrix(POLY_XLU_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_XLU_DISP++, object_warp1_DL_004690);
gfxCtx = globalCtx->state.gfxCtx;
CLOSE_DISPS(globalCtx->state.gfxCtx);
OPEN_DISPS(globalCtx->state.gfxCtx);
AnimatedMat_Draw(globalCtx, Lib_SegmentedToVirtual(object_warp1_Matanimheader_007238));
Matrix_InsertTranslation(this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y, this->dyna.actor.world.pos.z,
@ -1073,10 +1074,6 @@ void func_808BB4F4(DoorWarp1* this, GlobalContext* globalCtx2) {
Matrix_RotateY(this->dyna.actor.world.rot.y, MTXMODE_APPLY);
Matrix_Scale(1.0f, 0.0f, 1.0f, MTXMODE_APPLY);
CLOSE_DISPS(globalCtx->state.gfxCtx);
OPEN_DISPS(gfxCtx);
func_8012C2DC(globalCtx->state.gfxCtx);
gDPSetEnvColor(POLY_XLU_DISP++, sp64[sp60].r, sp64[sp60].g, sp64[sp60].b, 255);
@ -1086,16 +1083,6 @@ void func_808BB4F4(DoorWarp1* this, GlobalContext* globalCtx2) {
CLOSE_DISPS(globalCtx->state.gfxCtx);
}
#else
static Color_RGB8 D_808BBB50[] = {
{ 50, 150, 0 },
{ 100, 150, 200 },
{ 0, 50, 200 },
{ 120, 150, 0 },
};
void func_808BB4F4(DoorWarp1* this, GlobalContext* globalCtx2);
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Door_Warp1/func_808BB4F4.s")
#endif
void DoorWarp1_Draw(Actor* thisx, GlobalContext* globalCtx) {
DoorWarp1* this = THIS;
@ -1123,54 +1110,44 @@ void DoorWarp1_Draw(Actor* thisx, GlobalContext* globalCtx) {
}
}
#ifdef NON_MATCHING
// casting/macro on temp_s1/s0
void func_808BB8D4(DoorWarp1* this, GlobalContext* globalCtx, s32 arg2) {
static Vec3f D_808BBB5C = { 0.0f, 0.05f, 0.0f };
static Vec3f D_808BBB68 = { 0.0f, 0.25f, 0.0f };
Vec3f sp9C;
Color_RGBA8 sp98;
Color_RGBA8 sp94;
static Vec3f sVelocity = { 0.0f, 0.05f, 0.0f };
static Vec3f sAccel = { 0.0f, 0.25f, 0.0f };
Vec3f pos;
Color_RGBA8 primColor;
Color_RGBA8 envColor;
s32 i;
s16 temp_s0;
s32 temp_s1;
s32 phi_s2;
s32 rand;
s16 scale;
s32 life;
for (i = 0; i < arg2; i++) {
temp_s1 = (Rand_ZeroOne() * 0x10000);
temp_s0 = temp_s1 - 0x8000;
rand = (Rand_ZeroOne() * 0x10000);
sp9C.x = (-Math_SinS(temp_s0) * 35.0f) + this->dyna.actor.world.pos.x;
sp9C.y = this->dyna.actor.world.pos.y;
temp_s0 = (s16)(temp_s1 - 0x8000);
sp9C.z = Math_CosS(temp_s0) * 35.0f + this->dyna.actor.world.pos.z;
pos.x = (-Math_SinS(rand - 0x8000) * 35.0f) + this->dyna.actor.world.pos.x;
pos.y = this->dyna.actor.world.pos.y;
pos.z = (Math_CosS(rand - 0x8000) * 35.0f) + this->dyna.actor.world.pos.z;
D_808BBB5C.x = 0.0f;
D_808BBB68.y = 0.25f;
primColor.r = 255;
primColor.g = 255;
primColor.b = 255;
envColor.r = 200;
envColor.g = 200;
envColor.b = 255;
sp98.r = 255;
sp98.g = 255;
sp98.b = 255;
sp94.r = 200;
sp94.g = 200;
sp94.b = 255;
sAccel.y = 0.25f;
sVelocity.x = 0.0f;
sVelocity.z = 0.0f;
D_808BBB5C.z = 0.0f;
scale = (Rand_ZeroOne() * 1000.0f) + 800.0f;
temp_s1 = (s16)((Rand_ZeroOne() * 1000.0f) + 800.0f);
phi_s2 = 27;
life = 27;
if (arg2 >= 2) {
phi_s2 = 8;
D_808BBB68.y = 1.8f;
D_808BBB5C.x = -Math_SinS(temp_s0) * 5.0f;
D_808BBB5C.z = Math_CosS(temp_s0) * 5.0f;
life = 8;
sAccel.y = 1.8f;
sVelocity.x = -Math_SinS(rand - 0x8000) * 5.0f;
sVelocity.z = Math_CosS(rand - 0x8000) * 5.0f;
}
EffectSsKiraKira_SpawnDispersed(globalCtx, &sp9C, &D_808BBB5C, &D_808BBB68, &sp98, &sp94, temp_s1, phi_s2);
EffectSsKiraKira_SpawnDispersed(globalCtx, &pos, &sVelocity, &sAccel, &primColor, &envColor, scale, life);
}
}
#else
static Vec3f D_808BBB5C = { 0.0f, 0.05f, 0.0f };
static Vec3f D_808BBB68 = { 0.0f, 0.25f, 0.0f };
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Door_Warp1/func_808BB8D4.s")
#endif