1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-05-12 20:13:47 +00:00
This commit is contained in:
fig02 2020-03-30 05:31:08 -04:00
parent ea7aebc731
commit d8cd8450c4
3 changed files with 58 additions and 55 deletions

View file

@ -97,7 +97,7 @@ void ArrowFire_Hit(ArrowFire* this, GlobalContext* globalCtx) {
f32 scale; f32 scale;
f32 offset; f32 offset;
u16 timer; u16 timer;
if (this->actor.unk_F0 < 50.0f) { if (this->actor.unk_F0 < 50.0f) {
scale = 10.0f; scale = 10.0f;
} else { } else {
@ -108,23 +108,23 @@ void ArrowFire_Hit(ArrowFire* this, GlobalContext* globalCtx) {
scale = ((scale - 50.0f) * 0.33333334f) + 10.0f; scale = ((scale - 50.0f) * 0.33333334f) + 10.0f;
} }
} }
timer = this->timer; timer = this->timer;
if (timer != 0) { if (timer != 0) {
this->timer -= 1; this->timer -= 1;
if (this->timer >= 8){ if (this->timer >= 8) {
offset = ((this->timer - 8) * 0.041666668f); offset = ((this->timer - 8) * 0.041666668f);
offset = SQ(offset); offset = SQ(offset);
this->radius = (((1.0f - offset) * scale) + 10.0f); this->radius = (((1.0f - offset) * scale) + 10.0f);
this->unk_158 += ((2.0f - this->unk_158) * 0.1f); this->unk_158 += ((2.0f - this->unk_158) * 0.1f);
if (this->timer < 16) { if (this->timer < 16) {
if (1){} if (1) {}
this->alpha = ((this->timer * 0x23) - 0x118); this->alpha = ((this->timer * 0x23) - 0x118);
} }
} }
} }
if (this->timer >= 9) { if (this->timer >= 9) {
if (this->unk_15C < 1.0f) { if (this->unk_15C < 1.0f) {
this->unk_15C += 0.25f; this->unk_15C += 0.25f;
@ -134,11 +134,11 @@ void ArrowFire_Hit(ArrowFire* this, GlobalContext* globalCtx) {
this->unk_15C -= 0.125f; this->unk_15C -= 0.125f;
} }
} }
if (this->timer < 8) { if (this->timer < 8) {
this->alpha = 0; this->alpha = 0;
} }
if (this->timer == 0) { if (this->timer == 0) {
this->timer = 255; this->timer = 255;
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
@ -187,15 +187,15 @@ void ArrowFire_Update(ArrowFire* this, GlobalContext* globalCtx) {
} }
} }
void ArrowFire_Draw(ArrowFire* this, GlobalContext* globalCtx){ void ArrowFire_Draw(ArrowFire* this, GlobalContext* globalCtx) {
s32 pad1; s32 pad1;
s32 pad2; s32 pad2;
u32 stateFrames; u32 stateFrames;
GraphicsContext* gfxCtx; GraphicsContext* gfxCtx;
Actor* tranform; Actor* tranform;
EnArrow* arrow; EnArrow* arrow;
Gfx* gfxArr[4]; Gfx* gfxArr[4];
stateFrames = globalCtx->state.frames; stateFrames = globalCtx->state.frames;
arrow = this->actor.attachedA; arrow = this->actor.attachedA;
if (1) {} if (1) {}
@ -203,7 +203,8 @@ void ArrowFire_Draw(ArrowFire* this, GlobalContext* globalCtx){
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) { if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
if (1) {} if (1) {}
tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor; tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
gfxCtx = globalCtx->state.gfxCtx; func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_fire.c", 618); gfxCtx = globalCtx->state.gfxCtx;
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_fire.c", 618);
Matrix_Translate(tranform->posRot.pos.x, tranform->posRot.pos.y, tranform->posRot.pos.z, MTXMODE_NEW); Matrix_Translate(tranform->posRot.pos.x, tranform->posRot.pos.y, tranform->posRot.pos.z, MTXMODE_NEW);
Matrix_RotateY(tranform->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY); Matrix_RotateY(tranform->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY);
Matrix_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY); Matrix_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY);
@ -213,7 +214,7 @@ void ArrowFire_Draw(ArrowFire* this, GlobalContext* globalCtx){
// Draw red effect over the screen when arrow hits // Draw red effect over the screen when arrow hits
if (this->unk_15C > 0) { if (this->unk_15C > 0) {
gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p); gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p);
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, (s32)(40.0f * this->unk_15C) & 0xFF, 0x00, 0x00, gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, (s32)(40.0f * this->unk_15C) & 0xFF, 0x00, 0x00,
(s32)(150.0f * this->unk_15C) & 0xFF); (s32)(150.0f * this->unk_15C) & 0xFF);
gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE); gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE);
gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE); gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE);
@ -232,12 +233,12 @@ void ArrowFire_Draw(ArrowFire* this, GlobalContext* globalCtx){
} }
Matrix_Scale(this->radius * 0.2f, this->unk_158 * 4.0f, this->radius * 0.2f, MTXMODE_APPLY); Matrix_Scale(this->radius * 0.2f, this->unk_158 * 4.0f, this->radius * 0.2f, MTXMODE_APPLY);
Matrix_Translate(0.0f, -700.0f, 0.0f, MTXMODE_APPLY); Matrix_Translate(0.0f, -700.0f, 0.0f, MTXMODE_APPLY);
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_fire.c", 666), G_MTX_NOPUSH | gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_fire.c", 666),
G_MTX_LOAD | G_MTX_MODELVIEW); G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyXlu.p++, textureDL); gSPDisplayList(gfxCtx->polyXlu.p++, textureDL);
gSPDisplayList(gfxCtx->polyXlu.p++, Draw_TwoTexScroll(globalCtx->state.gfxCtx, 0, gSPDisplayList(gfxCtx->polyXlu.p++,
255 - (stateFrames * 2) % 256, 0, 64, 32, 1, 255 - stateFrames % 256, Draw_TwoTexScroll(globalCtx->state.gfxCtx, 0, 255 - (stateFrames * 2) % 256, 0, 64, 32, 1,
511 - (stateFrames * 10) % 512, 64, 64)); 255 - stateFrames % 256, 511 - (stateFrames * 10) % 512, 64, 64));
gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL); gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL);
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_fire.c", 682); func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_fire.c", 682);
} }

View file

@ -97,7 +97,7 @@ void ArrowIce_Hit(ArrowIce* this, GlobalContext* globalCtx) {
f32 scale; f32 scale;
f32 offset; f32 offset;
u16 timer; u16 timer;
if (this->actor.unk_F0 < 50.0f) { if (this->actor.unk_F0 < 50.0f) {
scale = 10.0f; scale = 10.0f;
} else { } else {
@ -108,23 +108,23 @@ void ArrowIce_Hit(ArrowIce* this, GlobalContext* globalCtx) {
scale = ((scale - 50.0f) * 0.33333334f) + 10.0f; scale = ((scale - 50.0f) * 0.33333334f) + 10.0f;
} }
} }
timer = this->timer; timer = this->timer;
if (timer != 0) { if (timer != 0) {
this->timer -= 1; this->timer -= 1;
if (this->timer >= 8){ if (this->timer >= 8) {
offset = ((this->timer - 8) * 0.041666668f); offset = ((this->timer - 8) * 0.041666668f);
offset = SQ(offset); offset = SQ(offset);
this->radius = (((1.0f - offset) * scale) + 10.0f); this->radius = (((1.0f - offset) * scale) + 10.0f);
this->unk_160 += ((2.0f - this->unk_160) * 0.1f); this->unk_160 += ((2.0f - this->unk_160) * 0.1f);
if (this->timer < 16) { if (this->timer < 16) {
if (1){} if (1) {}
this->alpha = ((this->timer * 0x23) - 0x118); this->alpha = ((this->timer * 0x23) - 0x118);
} }
} }
} }
if (this->timer >= 9) { if (this->timer >= 9) {
if (this->unk_164 < 1.0f) { if (this->unk_164 < 1.0f) {
this->unk_164 += 0.25f; this->unk_164 += 0.25f;
@ -134,11 +134,11 @@ void ArrowIce_Hit(ArrowIce* this, GlobalContext* globalCtx) {
this->unk_164 -= 0.125f; this->unk_164 -= 0.125f;
} }
} }
if (this->timer < 8) { if (this->timer < 8) {
this->alpha = 0; this->alpha = 0;
} }
if (this->timer == 0) { if (this->timer == 0) {
this->timer = 255; this->timer = 255;
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
@ -187,10 +187,10 @@ void ArrowIce_Update(ArrowIce* this, GlobalContext* globalCtx) {
} }
} }
void ArrowIce_Draw(ArrowIce* this, GlobalContext* globalCtx){ void ArrowIce_Draw(ArrowIce* this, GlobalContext* globalCtx) {
s32 pad1; s32 pad1;
s32 pad2; s32 pad2;
Actor* tranform; Actor* tranform;
u32 stateFrames; u32 stateFrames;
GraphicsContext* gfxCtx; GraphicsContext* gfxCtx;
EnArrow* arrow; EnArrow* arrow;
@ -203,7 +203,8 @@ void ArrowIce_Draw(ArrowIce* this, GlobalContext* globalCtx){
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) { if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
if (1) {} if (1) {}
tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor; tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
gfxCtx = globalCtx->state.gfxCtx; func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_ice.c", 610); gfxCtx = globalCtx->state.gfxCtx;
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_ice.c", 610);
Matrix_Translate(tranform->posRot.pos.x, tranform->posRot.pos.y, tranform->posRot.pos.z, MTXMODE_NEW); Matrix_Translate(tranform->posRot.pos.x, tranform->posRot.pos.y, tranform->posRot.pos.z, MTXMODE_NEW);
Matrix_RotateY(tranform->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY); Matrix_RotateY(tranform->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY);
Matrix_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY); Matrix_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY);
@ -213,8 +214,8 @@ void ArrowIce_Draw(ArrowIce* this, GlobalContext* globalCtx){
// Draw blue effect over the screen when arrow hits // Draw blue effect over the screen when arrow hits
if (this->unk_164 > 0) { if (this->unk_164 > 0) {
gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p); gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p);
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, 0, (s32)(10.0f * this->unk_164) & 0xFF, gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, 0, (s32)(10.0f * this->unk_164) & 0xFF,
(s32)(50.0f * this->unk_164) & 0xFF, (s32)(150.0f * this->unk_164) & 0xFF); (s32)(50.0f * this->unk_164) & 0xFF, (s32)(150.0f * this->unk_164) & 0xFF);
gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE); gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE);
gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE); gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE);
gDPFillRectangle(gfxCtx->polyXlu.p++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1); gDPFillRectangle(gfxCtx->polyXlu.p++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
@ -232,12 +233,12 @@ void ArrowIce_Draw(ArrowIce* this, GlobalContext* globalCtx){
} }
Matrix_Scale(this->radius * 0.2f, this->unk_160 * 3.0f, this->radius * 0.2f, MTXMODE_APPLY); Matrix_Scale(this->radius * 0.2f, this->unk_160 * 3.0f, this->radius * 0.2f, MTXMODE_APPLY);
Matrix_Translate(0.0f, -700.0f, 0.0f, MTXMODE_APPLY); Matrix_Translate(0.0f, -700.0f, 0.0f, MTXMODE_APPLY);
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_ice.c", 660), G_MTX_NOPUSH | gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_ice.c", 660),
G_MTX_LOAD | G_MTX_MODELVIEW); G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyXlu.p++, textureDL); gSPDisplayList(gfxCtx->polyXlu.p++, textureDL);
gSPDisplayList(gfxCtx->polyXlu.p++, Draw_TwoTexScroll(globalCtx->state.gfxCtx, 0, gSPDisplayList(gfxCtx->polyXlu.p++,
511 - (stateFrames * 5) % 512, 0, 128, 32, 1, 511 - (stateFrames * 10) % 512, Draw_TwoTexScroll(globalCtx->state.gfxCtx, 0, 511 - (stateFrames * 5) % 512, 0, 128, 32, 1,
511 - (stateFrames * 10) % 512, 4, 16)); 511 - (stateFrames * 10) % 512, 511 - (stateFrames * 10) % 512, 4, 16));
gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL); gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL);
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_ice.c", 676); func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_ice.c", 676);
} }

View file

@ -97,7 +97,7 @@ void ArrowLight_Hit(ArrowLight* this, GlobalContext* globalCtx) {
f32 scale; f32 scale;
f32 offset; f32 offset;
u16 timer; u16 timer;
if (this->actor.unk_F0 < 50.0f) { if (this->actor.unk_F0 < 50.0f) {
scale = 10.0f; scale = 10.0f;
} else { } else {
@ -108,23 +108,23 @@ void ArrowLight_Hit(ArrowLight* this, GlobalContext* globalCtx) {
scale = ((scale - 50.0f) * 0.33333334f) + 10.0f; scale = ((scale - 50.0f) * 0.33333334f) + 10.0f;
} }
} }
timer = this->timer; timer = this->timer;
if (timer != 0) { if (timer != 0) {
this->timer -= 1; this->timer -= 1;
if (this->timer >= 8){ if (this->timer >= 8) {
offset = ((this->timer - 8) * 0.041666668f); offset = ((this->timer - 8) * 0.041666668f);
offset = SQ(offset); offset = SQ(offset);
this->radius = (((1.0f - offset) * scale) + 10.0f); this->radius = (((1.0f - offset) * scale) + 10.0f);
this->unk_160 += ((2.0f - this->unk_160) * 0.1f); this->unk_160 += ((2.0f - this->unk_160) * 0.1f);
if (this->timer < 16) { if (this->timer < 16) {
if (1){} if (1) {}
this->alpha = ((this->timer * 0x23) - 0x118); this->alpha = ((this->timer * 0x23) - 0x118);
} }
} }
} }
if (this->timer >= 9) { if (this->timer >= 9) {
if (this->unk_164 < 1.0f) { if (this->unk_164 < 1.0f) {
this->unk_164 += 0.25f; this->unk_164 += 0.25f;
@ -134,11 +134,11 @@ void ArrowLight_Hit(ArrowLight* this, GlobalContext* globalCtx) {
this->unk_164 -= 0.125f; this->unk_164 -= 0.125f;
} }
} }
if (this->timer < 8) { if (this->timer < 8) {
this->alpha = 0; this->alpha = 0;
} }
if (this->timer == 0) { if (this->timer == 0) {
this->timer = 255; this->timer = 255;
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
@ -192,7 +192,7 @@ void ArrowLight_Draw(ArrowLight* this, GlobalContext* globalCtx) {
s32 pad2; s32 pad2;
u32 stateFrames; u32 stateFrames;
GraphicsContext* gfxCtx; GraphicsContext* gfxCtx;
Actor* tranform; Actor* tranform;
EnArrow* arrow; EnArrow* arrow;
Gfx* gfxArr[4]; Gfx* gfxArr[4];
@ -203,7 +203,8 @@ void ArrowLight_Draw(ArrowLight* this, GlobalContext* globalCtx) {
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) { if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
if (1) {} if (1) {}
tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor; tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
gfxCtx = globalCtx->state.gfxCtx; func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_light.c", 598); gfxCtx = globalCtx->state.gfxCtx;
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_light.c", 598);
Matrix_Translate(tranform->posRot.pos.x, tranform->posRot.pos.y, tranform->posRot.pos.z, MTXMODE_NEW); Matrix_Translate(tranform->posRot.pos.x, tranform->posRot.pos.y, tranform->posRot.pos.z, MTXMODE_NEW);
Matrix_RotateY(tranform->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY); Matrix_RotateY(tranform->shape.rot.y * (M_PI / 32768), MTXMODE_APPLY);
Matrix_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY); Matrix_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY);
@ -213,7 +214,7 @@ void ArrowLight_Draw(ArrowLight* this, GlobalContext* globalCtx) {
// Draw yellow effect over the screen when arrow hits // Draw yellow effect over the screen when arrow hits
if (this->unk_164 > 0) { if (this->unk_164 > 0) {
gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p); gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p);
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, (s32)(30.0f * this->unk_164) & 0xFF, gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, (s32)(30.0f * this->unk_164) & 0xFF,
(s32)(40.0f * this->unk_164) & 0xFF, 0, (s32)(150.0f * this->unk_164) & 0xFF); (s32)(40.0f * this->unk_164) & 0xFF, 0, (s32)(150.0f * this->unk_164) & 0xFF);
gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE); gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE);
gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE); gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE);
@ -232,12 +233,12 @@ void ArrowLight_Draw(ArrowLight* this, GlobalContext* globalCtx) {
} }
Matrix_Scale(this->radius * 0.2f, this->unk_160 * 4.0f, this->radius * 0.2f, MTXMODE_APPLY); Matrix_Scale(this->radius * 0.2f, this->unk_160 * 4.0f, this->radius * 0.2f, MTXMODE_APPLY);
Matrix_Translate(0.0f, -700.0f, 0.0f, MTXMODE_APPLY); Matrix_Translate(0.0f, -700.0f, 0.0f, MTXMODE_APPLY);
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_light.c", 648), G_MTX_NOPUSH | gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_light.c", 648),
G_MTX_LOAD | G_MTX_MODELVIEW); G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(gfxCtx->polyXlu.p++, textureDL); gSPDisplayList(gfxCtx->polyXlu.p++, textureDL);
gSPDisplayList(gfxCtx->polyXlu.p++, Draw_TwoTexScroll(globalCtx->state.gfxCtx, 0, gSPDisplayList(gfxCtx->polyXlu.p++,
511 - (stateFrames * 5) % 512, 0, 4, 32, 1, 511 - (stateFrames * 10) % 512, Draw_TwoTexScroll(globalCtx->state.gfxCtx, 0, 511 - (stateFrames * 5) % 512, 0, 4, 32, 1,
511 - (stateFrames * 30) % 512, 8, 16)); 511 - (stateFrames * 10) % 512, 511 - (stateFrames * 30) % 512, 8, 16));
gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL); gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL);
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_light.c", 664); func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_light.c", 664);
} }