mirror of
https://github.com/zeldaret/oot.git
synced 2025-08-07 06:40:15 +00:00
Merge branch 'master' of https://github.com/zeldaret/oot into fix_spot15_saku
This commit is contained in:
commit
b3f92538ad
578 changed files with 5855 additions and 11095 deletions
|
@ -1,4 +1,11 @@
|
|||
/*
|
||||
* File: z_arrow_fire.c
|
||||
* Overlay: ovl_Arrow_Fire
|
||||
* Description: Fire Arrow actor. Spawned by and attached to a normal arrow.
|
||||
*/
|
||||
|
||||
#include "z_arrow_fire.h"
|
||||
#include "../ovl_En_Arrow/z_en_arrow.h"
|
||||
|
||||
#define ROOM 0x00
|
||||
#define FLAGS 0x02000010
|
||||
|
@ -8,7 +15,12 @@ void ArrowFire_Destroy(ArrowFire* this, GlobalContext* globalCtx);
|
|||
void ArrowFire_Update(ArrowFire* this, GlobalContext* globalCtx);
|
||||
void ArrowFire_Draw(ArrowFire* this, GlobalContext* globalCtx);
|
||||
|
||||
/*
|
||||
void ArrowFire_Charge(ArrowFire* this, GlobalContext* globalCtx);
|
||||
void ArrowFire_Fly(ArrowFire* this, GlobalContext* globalCtx);
|
||||
void ArrowFire_Hit(ArrowFire* this, GlobalContext* globalCtx);
|
||||
|
||||
#include "z_arrow_fire_gfx.c"
|
||||
|
||||
const ActorInit Arrow_Fire_InitVars = {
|
||||
ACTOR_ARROW_FIRE,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
|
@ -21,21 +33,214 @@ const ActorInit Arrow_Fire_InitVars = {
|
|||
(ActorFunc)ArrowFire_Update,
|
||||
(ActorFunc)ArrowFire_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/func_80865D10.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/ArrowFire_Init.s")
|
||||
static InitChainEntry initChain[] = {
|
||||
ICHAIN_F32(unk_F4, 2000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/ArrowFire_Destroy.s")
|
||||
void ArrowFire_SetupAction(ArrowFire* this, ActorFunc* actionFunc) {
|
||||
this->actionFunc = actionFunc;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/func_80865DD8.s")
|
||||
void ArrowFire_Init(ArrowFire* this, GlobalContext* globalCtx) {
|
||||
Actor_ProcessInitChain(&this->actor, initChain);
|
||||
this->radius = 0;
|
||||
this->unk_158 = 1.0f;
|
||||
ArrowFire_SetupAction(&this->actor, ArrowFire_Charge);
|
||||
Actor_SetScale(this, 0.01f);
|
||||
this->alpha = 0xA0;
|
||||
this->timer = 0;
|
||||
this->unk_15C = 0.0f;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/func_80865ECC.s")
|
||||
void ArrowFire_Destroy(ArrowFire* this, GlobalContext* globalCtx) {
|
||||
func_800876C8(globalCtx);
|
||||
LogUtils_LogThreadId("../z_arrow_fire.c", 421);
|
||||
// Translates to: ""Disappearance" = Disappearance"
|
||||
osSyncPrintf("\"消滅\" = %s\n", "消滅");
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/func_80865F1C.s")
|
||||
void ArrowFire_Charge(ArrowFire* this, GlobalContext* globalCtx) {
|
||||
EnArrow* arrow;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/func_808660E8.s")
|
||||
arrow = this->actor.attachedA;
|
||||
if ((arrow == NULL) || (arrow->actor.update == NULL)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/ArrowFire_Update.s")
|
||||
if (this->radius < 10) {
|
||||
this->radius += 1;
|
||||
}
|
||||
// copy position and rotation from the attached arrow
|
||||
this->actor.posRot.pos = arrow->actor.posRot.pos;
|
||||
this->actor.shape.rot = arrow->actor.shape.rot;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Fire/ArrowFire_Draw.s")
|
||||
func_8002F974(&this->actor, NA_SE_PL_ARROW_CHARGE_FIRE);
|
||||
|
||||
// If arrow's attached is null, Link has fired the arrow
|
||||
if (arrow->actor.attachedA == NULL) {
|
||||
this->unkPos = this->actor.posRot.pos;
|
||||
this->radius = 10;
|
||||
ArrowFire_SetupAction(this, ArrowFire_Fly);
|
||||
this->alpha = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80865ECC(Vec3f* unkPos, Vec3f* firePos, f32 scale) {
|
||||
unkPos->x += ((firePos->x - unkPos->x) * scale);
|
||||
unkPos->y += ((firePos->y - unkPos->y) * scale);
|
||||
unkPos->z += ((firePos->z - unkPos->z) * scale);
|
||||
}
|
||||
|
||||
void ArrowFire_Hit(ArrowFire* this, GlobalContext* globalCtx) {
|
||||
f32 scale;
|
||||
f32 offset;
|
||||
u16 timer;
|
||||
|
||||
if (this->actor.unk_F0 < 50.0f) {
|
||||
scale = 10.0f;
|
||||
} else {
|
||||
if (950.0f < this->actor.unk_F0) {
|
||||
scale = 310.0f;
|
||||
} else {
|
||||
scale = this->actor.unk_F0;
|
||||
scale = ((scale - 50.0f) * (1.0f / 3.0f)) + 10.0f;
|
||||
}
|
||||
}
|
||||
|
||||
timer = this->timer;
|
||||
if (timer != 0) {
|
||||
this->timer -= 1;
|
||||
|
||||
if (this->timer >= 8) {
|
||||
offset = ((this->timer - 8) * (1.0f / 24.0f));
|
||||
offset = SQ(offset);
|
||||
this->radius = (((1.0f - offset) * scale) + 10.0f);
|
||||
this->unk_158 += ((2.0f - this->unk_158) * 0.1f);
|
||||
if (this->timer < 16) {
|
||||
if (1) {}
|
||||
this->alpha = ((this->timer * 0x23) - 0x118);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this->timer >= 9) {
|
||||
if (this->unk_15C < 1.0f) {
|
||||
this->unk_15C += 0.25f;
|
||||
}
|
||||
} else {
|
||||
if (this->unk_15C > 0.0f) {
|
||||
this->unk_15C -= 0.125f;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->timer < 8) {
|
||||
this->alpha = 0;
|
||||
}
|
||||
|
||||
if (this->timer == 0) {
|
||||
this->timer = 255;
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowFire_Fly(ArrowFire* this, GlobalContext* globalCtx) {
|
||||
EnArrow* arrow;
|
||||
f32 distanceScaled;
|
||||
s32 pad;
|
||||
|
||||
arrow = this->actor.attachedA;
|
||||
if ((arrow == NULL) || (arrow->actor.update == NULL)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
// copy position and rotation from the attached arrow
|
||||
this->actor.posRot.pos = arrow->actor.posRot.pos;
|
||||
this->actor.shape.rot = arrow->actor.shape.rot;
|
||||
distanceScaled = Math_Vec3f_DistXYZ(&this->unkPos, &this->actor.posRot.pos) * (1.0f / 24.0f);
|
||||
this->unk_158 = distanceScaled;
|
||||
if (distanceScaled < 1.0f) {
|
||||
this->unk_158 = 1.0f;
|
||||
}
|
||||
func_80865ECC(&this->unkPos, &this->actor.posRot.pos, 0.05f);
|
||||
|
||||
if (arrow->hitWall & 1) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_IT_EXPLOSION_FRAME);
|
||||
ArrowFire_SetupAction(this, ArrowFire_Hit);
|
||||
this->timer = 32;
|
||||
this->alpha = 0xFF;
|
||||
} else if (arrow->timer < 34) {
|
||||
if (this->alpha < 0x23) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
this->alpha -= 0x19;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowFire_Update(ArrowFire* this, GlobalContext* globalCtx) {
|
||||
if (globalCtx->msgCtx.msgMode == 0xD || globalCtx->msgCtx.msgMode == 0x11) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
this->actionFunc(this, globalCtx);
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowFire_Draw(ArrowFire* this, GlobalContext* globalCtx) {
|
||||
s32 pad1;
|
||||
s32 pad2;
|
||||
u32 stateFrames;
|
||||
GraphicsContext* gfxCtx;
|
||||
Actor* tranform;
|
||||
EnArrow* arrow;
|
||||
Gfx* gfxArr[4];
|
||||
|
||||
stateFrames = globalCtx->state.frames;
|
||||
arrow = this->actor.attachedA;
|
||||
if (1) {}
|
||||
|
||||
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
|
||||
if (1) {}
|
||||
tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
|
||||
// clang-format off
|
||||
gfxCtx = globalCtx->state.gfxCtx; func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_fire.c", 618);
|
||||
// clang-format on
|
||||
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_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY);
|
||||
Matrix_RotateZ(tranform->shape.rot.z * (M_PI / 32768), MTXMODE_APPLY);
|
||||
Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY);
|
||||
|
||||
// Draw red effect over the screen when arrow hits
|
||||
if (this->unk_15C > 0) {
|
||||
gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p);
|
||||
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0, 0, (s32)(40.0f * this->unk_15C) & 0xFF, 0x00, 0x00,
|
||||
(s32)(150.0f * this->unk_15C) & 0xFF);
|
||||
gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE);
|
||||
gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE);
|
||||
gDPFillRectangle(gfxCtx->polyXlu.p++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
|
||||
}
|
||||
|
||||
// Draw fire on the arrow
|
||||
func_80093D84(globalCtx->state.gfxCtx);
|
||||
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0x80, 0x80, 0xFF, 0xC8, 0x00, this->alpha);
|
||||
gDPSetEnvColor(gfxCtx->polyXlu.p++, 0xFF, 0x00, 0x00, 0x80);
|
||||
Matrix_RotateZYX(0x4000, 0x0, 0x0, MTXMODE_APPLY);
|
||||
if (this->timer != 0) {
|
||||
Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||
} else {
|
||||
Matrix_Translate(0.0f, 1500.0f, 0.0f, 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);
|
||||
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_fire.c", 666),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, textureDL);
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++,
|
||||
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 255 - (stateFrames * 2) % 256, 0, 64, 32, 1,
|
||||
255 - stateFrames % 256, 511 - (stateFrames * 10) % 512, 64, 64));
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL);
|
||||
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_fire.c", 682);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,13 @@
|
|||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x20];
|
||||
/* 0x014C */ Vec3f unkPos;
|
||||
/* 0x0158 */ f32 unk_158;
|
||||
/* 0x015C */ f32 unk_15C;
|
||||
/* 0x0160 */ ActorFunc actionFunc;
|
||||
/* 0x0164 */ s16 radius;
|
||||
/* 0x0166 */ u16 timer;
|
||||
/* 0x0168 */ u8 alpha;
|
||||
} ArrowFire; // size = 0x016C
|
||||
|
||||
extern const ActorInit Arrow_Fire_InitVars;
|
||||
|
|
192
src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire_gfx.c
Normal file
192
src/overlays/actors/ovl_Arrow_Fire/z_arrow_fire_gfx.c
Normal file
|
@ -0,0 +1,192 @@
|
|||
#include "z_arrow_fire.h"
|
||||
|
||||
static UNK_TYPE texture1[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000001, 0x00000000, 0x00000102, 0x01000001, 0x00000000, 0x00000000, 0x00010000, 0x00000000,
|
||||
0x00000001, 0x00000000, 0x00000204, 0x02000101, 0x00000000, 0x00000000, 0x00010101, 0x00000001, 0x00000001,
|
||||
0x00000000, 0x00000307, 0x03010102, 0x00000000, 0x00000000, 0x01010102, 0x00000002, 0x01010001, 0x00000000,
|
||||
0x00010509, 0x04010103, 0x01000000, 0x00000000, 0x01020202, 0x00000104, 0x03020101, 0x00000000, 0x0001060C,
|
||||
0x06010103, 0x01000000, 0x00000000, 0x02020202, 0x00000206, 0x05040101, 0x00000000, 0x0001080F, 0x07010103,
|
||||
0x01000001, 0x00000000, 0x03030202, 0x00010408, 0x07060201, 0x00000000, 0x00010911, 0x08010103, 0x01000001,
|
||||
0x00000001, 0x04040303, 0x0101050B, 0x0A080301, 0x00000000, 0x00020B14, 0x0A010103, 0x01000001, 0x00010102,
|
||||
0x06060403, 0x0203070D, 0x0C0A0401, 0x00000000, 0x00030D17, 0x0B020103, 0x01010001, 0x00010205, 0x09080503,
|
||||
0x0205090E, 0x0E0D0501, 0x00000000, 0x01050F18, 0x0C020102, 0x01010001, 0x00010408, 0x0D0B0502, 0x03070B0F,
|
||||
0x0F0F0601, 0x00000000, 0x02081219, 0x0D030102, 0x00010001, 0x0001050B, 0x130F0702, 0x04080B0F, 0x10110801,
|
||||
0x00000000, 0x030C1419, 0x0E040101, 0x00010001, 0x0001070F, 0x19140A03, 0x05090B0E, 0x10130A02, 0x00000001,
|
||||
0x05121719, 0x0E040100, 0x00010102, 0x01020A13, 0x1F1A0F06, 0x06090A0C, 0x10150B03, 0x01000001, 0x08181B19,
|
||||
0x0F050201, 0x01020102, 0x02040D18, 0x2721140A, 0x080A0A0C, 0x11160D04, 0x02020001, 0x0B1E1E19, 0x10070403,
|
||||
0x02030202, 0x0408111D, 0x2F2A1B0F, 0x0A0B0B0D, 0x12180F06, 0x04040101, 0x0E242119, 0x11090606, 0x04040304,
|
||||
0x070C1623, 0x38322214, 0x0E0D0E10, 0x141A1108, 0x06060102, 0x112A241A, 0x120B0909, 0x06050507, 0x0B111C29,
|
||||
0x413B291B, 0x13101216, 0x181B1209, 0x08080304, 0x152F271B, 0x140E0C0C, 0x0907080B, 0x10172230, 0x4A433223,
|
||||
0x1813161D, 0x1D1E140B, 0x0A0A0608, 0x1A342B1E, 0x17110F0F, 0x0C0B0D11, 0x171F2A38, 0x534C3B2B, 0x1E161C25,
|
||||
0x2221160D, 0x0B0C0A0E, 0x21393023, 0x1B151211, 0x0F0F1217, 0x1E273240, 0x5C564534, 0x251B242F, 0x2924190F,
|
||||
0x0E0E0F17, 0x293E372B, 0x21181513, 0x1113181E, 0x26303B48, 0x655F4E3E, 0x2D222D3A, 0x30271C13, 0x11111520,
|
||||
0x32453F35, 0x281D1714, 0x14181E25, 0x2F3A4551, 0x6F695746, 0x362B3744, 0x372A1F17, 0x15151D2A, 0x3D4D483F,
|
||||
0x31231A14, 0x171E252E, 0x38444F5B, 0x7974614F, 0x4036404C, 0x3C2D231D, 0x1A1A2637, 0x4957524A, 0x3A2A1D15,
|
||||
0x1A252E37, 0x43505B66, 0x837F6C59, 0x4A414750, 0x3F2E2723, 0x21213245, 0x57625D54, 0x43312216, 0x1F2D3741,
|
||||
0x4D5B6671, 0x8E8B7662, 0x544B4D51, 0x3F302C2C, 0x2B2D4054, 0x656D675E, 0x4C3A281A, 0x2536414B, 0x5867717B,
|
||||
0x9896816C, 0x5E545150, 0x3F323337, 0x383C5063, 0x71777168, 0x56432F21, 0x2C3F4B56, 0x63727C86, 0xA2A08B76,
|
||||
0x685D5651, 0x3F343A43, 0x484D5F70, 0x7D827B71, 0x5F4C3829, 0x34465462, 0x6F7C8690, 0xACA99581, 0x72655B53,
|
||||
0x42394450, 0x585E6D7C, 0x878C8479, 0x68574334, 0x3D4E5E6E, 0x7B88919A, 0xB4B09E8C, 0x7C6E6155, 0x46414F5F,
|
||||
0x676E7B87, 0x92958C80, 0x71625041, 0x4857697A, 0x86929BA3, 0xBBB7A796, 0x86776658, 0x4D4B5C6E, 0x777D8791,
|
||||
0x9C9F9487, 0x7A6D5C4F, 0x54617486, 0x919CA4AB, 0xC2BBAFA1, 0x907F6C5D, 0x55576A7E, 0x8589929A, 0xA5A99D90,
|
||||
0x8478695E, 0x5F697F93, 0x9DA6ACB2, 0xC8BFB6AC, 0x9A877465, 0x6064788D, 0x92949BA1, 0xADB2A89C, 0x8F83766C,
|
||||
0x6A718AA1, 0xA9AFB2B8, 0xCEC3BDB6, 0xA4907E70, 0x6C72879B, 0x9C9CA2A8, 0xB5BBB3A9, 0x9B8E8279, 0x737693AE,
|
||||
0xB4B6B9BE, 0xD5C9C5BF, 0xAF9C8B7E, 0x7A8094A5, 0xA4A0A7B0, 0xBDC5C0B7, 0xA8998E85, 0x7B7B9AB7, 0xBDBEC0C5,
|
||||
0xDBCFCCC8, 0xBAA9998E, 0x898E9FAD, 0xA8A1ACB8, 0xC6CECCC5, 0xB6A4988F, 0x8381A0BE, 0xC4C6C8CD, 0xE0D4D3D1,
|
||||
0xC5B7A89D, 0x989CA8B3, 0xABA2B0C0, 0xCED8D8D2, 0xC2AEA298, 0x8C89A6C3, 0xCACED1D5, 0xE5DBDAD8, 0xD0C4B6AB,
|
||||
0xA6A8B1B8, 0xAEA4B5C7, 0xD6E0E3DE, 0xCDB7ABA2, 0x9590ACC9, 0xD0D5D9DC, 0xEBE1E0DE, 0xDAD1C4B9, 0xB2B2B8BC,
|
||||
0xB1A7B9CE, 0xDEE8ECE8, 0xD6BDB3AC, 0x9E98B3CE, 0xD6DBE0E3, 0xF0E9E6E3, 0xE3DDD2C6, 0xBCBABEC0, 0xB4AABED5,
|
||||
0xE5EFF3F0, 0xDDC2BBB6, 0xA79FB9D4, 0xDCE2E7E9, 0xF5F0ECE7, 0xEAE8DED2, 0xC6C1C2C3, 0xB7ADC4DD, 0xEBF3F8F5,
|
||||
0xE1C6C2C1, 0xB1A7BFD8, 0xE1E7EDF0, 0xF9F5F1EB, 0xF0F0E9DD, 0xCFC7C7C6, 0xBBB1CBE5, 0xF0F5FBF7, 0xE3CACACC,
|
||||
0xBBB0C5DC, 0xE5ECF4F6, 0xFCF9F5EE, 0xF5F7F0E7, 0xD7CDCCCB, 0xBFB7D2EB, 0xF4F7FBF6, 0xE4CDD2D6, 0xC6B9CBE0,
|
||||
0xE9F1F9FB, 0xFDFCF8F2, 0xF9FAF6EE, 0xDFD5D3D0, 0xC5BDD9F0, 0xF7F9FBF4, 0xE5D0D9E0, 0xD1C2D2E4, 0xEDF5FCFE,
|
||||
0xFEFDFAF4, 0xFBFCF9F3, 0xE6DDDAD7, 0xCBC3DEF4, 0xFAFBFCF3, 0xE5D3DEE8, 0xDBCDDAE9, 0xF2F8FEFF, 0xFEFDFCF6,
|
||||
0xFCFDFCF7, 0xECE4E2DF, 0xD2C9E3F7, 0xFCFDFBF3, 0xE5D6E4EF, 0xE3D6E1EE, 0xF6FAFEFF, 0xFEFDFDF8, 0xFCFDFDFA,
|
||||
0xF1EAE9E7, 0xD9CFE7F9, 0xFEFEFBF3, 0xE7DBE9F4, 0xEBDFE8F3, 0xF9FCFFFF, 0xFEFDFDFA, 0xFDFDFEFC, 0xF5EFEFEE,
|
||||
0xE0D5ECFB, 0xFFFEFBF3, 0xE9E1EEF8, 0xF0E6EEF6, 0xFCFDFFFF, 0xFEFDFEFC, 0xFEFDFEFE, 0xF8F4F4F3, 0xE7DDF1FD,
|
||||
0xFFFEFBF3, 0xECE7F3FC, 0xF5ECF2F9, 0xFDFEFFFF, 0xFEFDFFFE, 0xFFFDFEFE, 0xFAF7F8F7, 0xEDE5F5FE, 0xFFFEFBF5,
|
||||
0xF0EDF7FD, 0xF9F1F5FA, 0xFEFFFFFF, 0xFEFDFFFF, 0xFFFEFEFF, 0xFCFAFAFA, 0xF2ECF8FE, 0xFFFEFCF7, 0xF4F3FAFE,
|
||||
0xFBF6F8FB, 0xFEFFFFFF, 0xFEFDFFFF, 0xFFFEFEFF, 0xFDFCFCFC, 0xF7F2FBFF, 0xFFFEFCFA, 0xF8F7FCFF, 0xFEFAFBFC,
|
||||
0xFFFFFFFF, 0xFEFEFFFF, 0xFFFFFFFF, 0xFEFDFEFD, 0xFAF7FCFF, 0xFFFEFDFC, 0xFCFBFDFF, 0xFFFDFDFD, 0xFFFFFFFF,
|
||||
0xFFFEFFFF, 0xFFFFFFFF, 0xFFFEFEFE, 0xFCFAFDFF, 0xFFFEFEFE, 0xFEFDFEFF, 0xFFFFFEFD, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFDFCFEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFEFEFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
};
|
||||
|
||||
static UNK_TYPE texture2[] = {
|
||||
0x2F3E56AB, 0xA4582102, 0x10417AB0, 0x805C312A, 0x32376DD4, 0xA2633907, 0x0B387DA2, 0x6D81470C, 0x3C5C60AC,
|
||||
0xA5571801, 0x154C97B9, 0x68533236, 0x304276D6, 0x9B533108, 0x154A96B7, 0x7C9B400B, 0x3E756FAE, 0xAF5D1301,
|
||||
0x1D59B4BF, 0x53432C38, 0x2F487DCC, 0x8A4A2406, 0x1F5DB0C8, 0x90B55110, 0x408B7FAA, 0xB76D1503, 0x286ACCBE,
|
||||
0x43312030, 0x2B4C82BA, 0x77431607, 0x2B70C7D5, 0xA6B95B13, 0x409C93A6, 0xB87D1D08, 0x367FE1C1, 0x3C261629,
|
||||
0x2A508AAB, 0x69410C0C, 0x3986DDDB, 0xB5AE6316, 0x40A0A7A1, 0xAA7D2610, 0x4596F1CD, 0x47281E36, 0x365C97A3,
|
||||
0x63450713, 0x499DF0D8, 0xB49E721A, 0x409AB59F, 0x8A662D1C, 0x57AEFBDF, 0x6B404456, 0x536EA49B, 0x6A4D061E,
|
||||
0x5CB6FCC6, 0x9A8E7F20, 0x428EBEA0, 0x623F2E2A, 0x69C6FFF0, 0x9A686569, 0x6F83AC92, 0x7F5D0B2A, 0x70CDFFB2,
|
||||
0x77848D29, 0x4787C4A0, 0x401D2E3E, 0x7ED9FFFC, 0xC48F7973, 0x8598AE86, 0x9A701339, 0x85E1FFA6, 0x5E859534,
|
||||
0x5189C99B, 0x2C0B3455, 0x92E9FFFA, 0xDCAB8071, 0x94ACAD7A, 0xB1882249, 0x9AF1FFB0, 0x6A8F9746, 0x6394CD8D,
|
||||
0x290C416F, 0xA5EEFFF4, 0xDCB46B6D, 0xA1BFAD77, 0xB6A43A58, 0xAAF8FFC8, 0x84959963, 0x7BA4CE78, 0x351A588E,
|
||||
0xB5E3F9F1, 0xCFAC6077, 0xABCFAC77, 0xA8C05A6A, 0xB2F3FFE1, 0xA3959471, 0x94B9D065, 0x473274A9, 0xBDCDECEF,
|
||||
0xC2A05F86, 0xBADDAC78, 0x92D87C7D, 0xAFDEFDF1, 0xBC8C8971, 0xA6D2D45A, 0x584B95BB, 0xC1B3D5ED, 0xB8956697,
|
||||
0xC5E9A670, 0x7AE6978F, 0xA4BEF0EF, 0xB9797360, 0xB1E8DD5D, 0x5D5FAFC7, 0xC49CB8E3, 0xAF8C78A5, 0xCBF19D5F,
|
||||
0x6AE5A6A3, 0x9398DBE7, 0xB46A5841, 0xB8F2E871, 0x586DC1CD, 0xC78C9DD5, 0xAA878CB1, 0xD8F89249, 0x63DCABB3,
|
||||
0x8576C5D8, 0xA95E4430, 0xC0EBEE91, 0x5378CACE, 0xC58087C5, 0xA4859EAE, 0xE1FD8A36, 0x60D0ACBD, 0x7765B9C5,
|
||||
0x9C563A2B, 0xCED7E7B4, 0x5484C7CC, 0xB66F7CBB, 0x9F81A898, 0xE3FF8D2E, 0x63C8B0BA, 0x6D69B8B0, 0x93573B2E,
|
||||
0xE0C2CED2, 0x6898C0C3, 0x97587EBC, 0x9D749570, 0xDEFF9D36, 0x67C8B4A8, 0x6682BD9B, 0x93643E37, 0xF0B4A8DE,
|
||||
0x86A9B6B0, 0x70448BBE, 0x99617545, 0xD1FFB84E, 0x70CAB48C, 0x64A4BD8D, 0x96763D41, 0xFAAC82DA, 0xA7B6AE9A,
|
||||
0x4D359AC0, 0x90494F27, 0xC0FFD675, 0x80CCAD6D, 0x63C1B681, 0x9C85374E, 0xFFA069C9, 0xC1BAA785, 0x3936A4B6,
|
||||
0x7D342E18, 0xA9FFEEA5, 0x9AC59F56, 0x60D0A873, 0x9288315E, 0xFB8669B6, 0xD0B6A473, 0x3C47A39A, 0x6228241B,
|
||||
0x8BFFF6CD, 0xB7BB8F47, 0x57CFA169, 0x77782C6B, 0xE56478AA, 0xD6AC9E64, 0x4E61977C, 0x4B232428, 0x6FFFEBE5,
|
||||
0xD0AF813C, 0x44C2A266, 0x5B61296E, 0xC04188A8, 0xD4A09051, 0x5D788B61, 0x3E202234, 0x58F9D7DF, 0xDEA27332,
|
||||
0x31AE9A6C, 0x3E4B2F62, 0x902688B3, 0xD0937A3F, 0x5D7D8B58, 0x37241F35, 0x46F2C5BF, 0xD7956528, 0x1E918E76,
|
||||
0x3442424A, 0x601774C3, 0xCB8F6630, 0x48698261, 0x333C2729, 0x3CECBF95, 0xC2885420, 0x11717B78, 0x4952673A,
|
||||
0x3D1153CD, 0xC994602F, 0x2D496F6D, 0x31674418, 0x32E7CA6C, 0xA77D4318, 0x09526672, 0x6B6F963E, 0x2B1036D0,
|
||||
0xCAA26E3C, 0x1B2A5A7B, 0x3798700F, 0x2BDFD94D, 0x8C773712, 0x043C606C, 0x9086B955, 0x281225C9, 0xC7AD8954,
|
||||
0x141B4085, 0x53CB9C10, 0x26D3E63A, 0x757A3B11, 0x0131666F, 0xAB87BA6A, 0x2E151FBF, 0xC1AEA16A, 0x1721388C,
|
||||
0x81ECBB17, 0x23C1EE30, 0x6688561E, 0x02317381, 0xA36A9566, 0x3B171FB9, 0xB5A5AF7A, 0x1B384395, 0xABFBC81D,
|
||||
0x20AAEB28, 0x61987838, 0x05358299, 0x85405D4E, 0x45181FB5, 0xA695B083, 0x1C55569C, 0xCEFFCF1E, 0x1A8CDA24,
|
||||
0x62A39755, 0x0A398FAE, 0x601A2A2C, 0x49161FB1, 0x9A8BAC8A, 0x23736DA0, 0xE0FFD61E, 0x136BAF23, 0x70ABAD6D,
|
||||
0x143D95BD, 0x41030D16, 0x41151DAA, 0x938BAA94, 0x2E8A8BA7, 0xE6FFD921, 0x0C4A7D2D, 0x7CACAB70, 0x244093C3,
|
||||
0x38020F11, 0x2F151CA3, 0x9293ABA1, 0x3995AAB7, 0xEDF7D924, 0x072F5842, 0x83AE9C66, 0x3F498EC7, 0x420D2812,
|
||||
0x1E151F9B, 0x989CB0B2, 0x4697C5CE, 0xF5F0D626, 0x061B435B, 0x85B18A5B, 0x5F568BCD, 0x54245213, 0x12172593,
|
||||
0x9FA1BAC0, 0x5291D4E1, 0xFAF0D123, 0x0711416F, 0x82B2765B, 0x84668FCB, 0x684D8212, 0x1318308A, 0xA3A2C2C6,
|
||||
0x5F88D3EE, 0xFEF6C81B, 0x0B104276, 0x85B06A72, 0xA97896C3, 0x7C81AC19, 0x24194083, 0xA2A0C6C4, 0x6A82CCF1,
|
||||
0xFFFFB910, 0x14173E77, 0x8BAE6992, 0xC6879BB4, 0x92B3C933, 0x3C1D4F7D, 0x9DA2CCBE, 0x7381C6E6, 0xFFFFB111,
|
||||
0x26233975, 0x92AF6DAF, 0xDB949AA3, 0xADDBDD64, 0x5927597B, 0x99AAD4B9, 0x7687C6D5, 0xFCFFB736, 0x432D3A78,
|
||||
0x98B371BD, 0xE5A0989E, 0xCCF2EAA0, 0x753C5C80, 0x9DB9E3BC, 0x7896CFBF, 0xF6FFCB72, 0x64323F81, 0x9CBC70B4,
|
||||
0xE3AC9EAD, 0xE6FBF6CF, 0x8B5C5C85, 0xA7C8F4C2, 0x7AA6D9A3, 0xF0FFE2A9, 0x8032448D, 0xA4C970A0, 0xDBB5AAC6,
|
||||
0xF7FEFDE7, 0xA3806187, 0xB0D6FFC9, 0x7FB5D686, 0xE7FFF0D2, 0x8D2F4E98, 0xABD7768D, 0xCFB9B4E1, 0xF8F8FFE7,
|
||||
0xB29B7089, 0xB7E4FFCD, 0x8CB8BF65, 0xD5FFF0D7, 0x8D34609D, 0xB4E48385, 0xC3BAB0F1, 0xE2E8FEDC, 0xB5A07A8D,
|
||||
0xBDEFFFD0, 0x9AAB9543, 0xB9FFE9C3, 0x80447497, 0xC0EF9C90, 0xBDB997E5, 0xC2CCFBD4, 0xAB8F7387, 0xC8F8FFD4,
|
||||
0xA4936324, 0x98FFE5B3, 0x6F577E8A, 0xCEFABCA8, 0xC0BC71C7, 0x9EADF4D2, 0x916D5D7B, 0xD4FEFFD6, 0xA575390F,
|
||||
0x76FFE4A6, 0x656A7F7D, 0xDDFFDABF, 0xC8BF4CA1, 0x8095E8CC, 0x744A3B66, 0xDAFFFFD6, 0x9D5B1E04, 0x5DFDDF9A,
|
||||
0x6075787A, 0xECFFF1CD, 0xCEC42E7C, 0x7087D6BF, 0x5A311F49, 0xD4FFFFD0, 0x8E4B1100, 0x50F7D892, 0x68767788,
|
||||
0xF6FFFDCE, 0xCDC31E65, 0x6E88C3A8, 0x4922153A, 0xC3FFFDC4, 0x7F410B03, 0x4BEED08B, 0x747682A0, 0xFDFFFEBF,
|
||||
0xBCB61456, 0x7792B18B, 0x3E19153D, 0xB5FFF8B2, 0x733B0908, 0x4DE0C487, 0x827797BC, 0xFFFFF8AB, 0x9E9B0E50,
|
||||
0x869E9F6E, 0x3714184D, 0xB5FFF09E, 0x67380C11, 0x56CFB285, 0x8F7EADD4, 0xFFFFED96, 0x78730A53, 0x9CA98F57,
|
||||
0x310F1C69, 0xC8FFE18A, 0x5D35161D, 0x64BC9E84, 0x978BBFE7, 0xFFFFDD81, 0x5348075A, 0xB5B07F48, 0x290A2088,
|
||||
0xE1FFCF75, 0x5335272B, 0x74AD877F, 0x9C9DCFF3, 0xFFFEC86E, 0x35260864, 0xC6B16F3E, 0x200422A6, 0xF8FCB95F,
|
||||
0x47373A3C, 0x86A36F73, 0x9FB0D9FA, 0xFFF7B15B, 0x21110E70, 0xCDAB6139, 0x160027C1, 0xFFF09F4C, 0x3B3A4B4D,
|
||||
0x989D5B5D, 0x9DB5D9FE, 0xFFEA994C, 0x1509177B, 0xC8A15C3C, 0x0E022BD1, 0xFFE1873B, 0x2F3E5460, 0xA8954F44,
|
||||
0x96A6CEFF, 0xFFD7823C, 0x0C0A2784, 0xB9956343, 0x0B0731DB, 0xFFCE722C, 0x22415672, 0xB58C4A31, 0x8A88BAFF,
|
||||
0xFAC56E2E, 0x060F398F, 0xA989764A, 0x0A0C3AE1, 0xFFB85F20, 0x17425787, 0xBF824826, 0x775FA3FF, 0xF1B66121,
|
||||
0x03164B98, 0x9A818E4A, 0x0A1040D4, 0xE8974D14, 0x11405495, 0xBB74401F, 0x603D86F1, 0xD7A35414, 0x02195694,
|
||||
0x8476943E, 0x171A46C5, 0xCC7D3D0C, 0x0D3E599E, 0xAE6C371C, 0x4A2D72E3, 0xC38F4C0E, 0x03205F96, 0x766A792A,
|
||||
0x242B4FB8, 0xB66A2E06, 0x0D3E66AA, 0x9B663322, 0x3B2D6CDD, 0xB47B450A, 0x062B6E9C, 0x6E705D17
|
||||
};
|
||||
|
||||
static UNK_TYPE vertices1[] = {
|
||||
0x00420271, 0xFFBE0000, 0x060006C2, 0x3E52C2FF, 0x000002BC, 0x00000000, 0x07000800, 0x007800FF, 0x005D0271,
|
||||
0x00000000, 0x080006C2, 0x575200FF, 0x00BD01DB, 0xFFB20000, 0x07000419, 0x5E3FD9FF, 0x00BD01DB, 0x004E0000,
|
||||
0x09000419, 0x5E3F27FF, 0x01AF001B, 0x00000000, 0x08000005, 0x6B3500FF, 0x0131001B, 0x01310000, 0x0A000005,
|
||||
0x4C354CFF, 0x000002BC, 0x00000000, 0x09000800, 0x007800FF, 0x00420271, 0x00420000, 0x0A0006C2, 0x3E523EFF,
|
||||
0x004E01DB, 0x00BD0000, 0x0B000419, 0x273F5EFF, 0x0000001B, 0x01AF0000, 0x0C000005, 0x00356BFF, 0x000002BC,
|
||||
0x00000000, 0x0B000800, 0x007800FF, 0x00000271, 0x005D0000, 0x0C0006C2, 0x005257FF, 0xFFB201DB, 0x00BD0000,
|
||||
0x0D000419, 0xD93F5EFF, 0xFECF001B, 0x01310000, 0x0E000005, 0xB4354CFF, 0x000002BC, 0x00000000, 0x0D000800,
|
||||
0x007800FF, 0xFFBE0271, 0x00420000, 0x0E0006C2, 0xC2523EFF, 0xFF4301DB, 0x004E0000, 0x0F000419, 0xA23F27FF,
|
||||
0xFE51001B, 0x00000000, 0x10000005, 0x953500FF, 0xFFA30271, 0x00000000, 0x100006C2, 0xA95200FF, 0xFF4301DB,
|
||||
0xFFB20000, 0x11000419, 0xA23FD9FF, 0xFE51001B, 0x00000000, 0x00000005, 0x953500FF, 0xFF4301DB, 0xFFB20000,
|
||||
0x01000419, 0xA23FD9FF, 0xFECF001B, 0xFECF0000, 0x02000005, 0xB435B4FF, 0xFFA30271, 0x00000000, 0x000006C2,
|
||||
0xA95200FF, 0x000002BC, 0x00000000, 0x01000800, 0x007800FF, 0xFFBE0271, 0xFFBE0000, 0x020006C2, 0xC252C2FF,
|
||||
0xFFB201DB, 0xFF430000, 0x03000419, 0xD93FA2FF, 0x0000001B, 0xFE510000, 0x04000005, 0x003595FF, 0x000002BC,
|
||||
0x00000000, 0x03000800, 0x007800FF, 0x00000271, 0xFFA30000, 0x040006C2, 0x0052A9FF, 0x004E01DB, 0xFF430000,
|
||||
0x05000419, 0x273FA2FF,
|
||||
};
|
||||
|
||||
static UNK_TYPE vertices2[] = {
|
||||
0x0000001B, 0xFE510000, 0x04000005, 0x003595FF, 0x004E01DB, 0xFF430000, 0x05000419, 0x273FA2FF, 0x0131001B,
|
||||
0xFECF0000, 0x06000005, 0x4C35B4FF, 0x00000271, 0xFFA30000, 0x040006C2, 0x0052A9FF, 0x000002BC, 0x00000000,
|
||||
0x05000800, 0x007800FF, 0x00420271, 0xFFBE0000, 0x060006C2, 0x3E52C2FF, 0x00BD01DB, 0xFFB20000, 0x07000419,
|
||||
0x5E3FD9FF, 0x01AF001B, 0x00000000, 0x08000005, 0x6B3500FF, 0xFFBE0271, 0x00420000, 0x060006C2, 0xC2523EFF,
|
||||
0x000002BC, 0x00000000, 0x07000800, 0x007800FF, 0xFFA30271, 0x00000000, 0x080006C2, 0xA95200FF,
|
||||
};
|
||||
|
||||
static Gfx textureDL[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureLUT(G_TT_NONE),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(texture1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_MIRROR | G_TX_WRAP, 5, 6, 1, 15),
|
||||
gsDPLoadMultiBlock(texture2, 0x0100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_MIRROR | G_TX_WRAP, 5, 6, 1, G_TX_NOLOD),
|
||||
gsDPSetCombineLERP(TEXEL1, PRIMITIVE, ENV_ALPHA, TEXEL0, TEXEL1, 1, ENVIRONMENT, TEXEL0, PRIMITIVE, ENVIRONMENT,
|
||||
COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0),
|
||||
gsDPSetRenderMode(Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL |
|
||||
GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1),
|
||||
G_RM_ZB_CLD_SURF2),
|
||||
gsSPClearGeometryMode(G_CULL_BACK | G_FOG | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
|
||||
gsSPSetGeometryMode(G_LIGHTING),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
static Gfx vertexDL[] = {
|
||||
gsSPVertex(vertices1, 32, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
|
||||
gsSP2Triangles(3, 2, 4, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(5, 4, 6, 0, 2, 7, 8, 0),
|
||||
gsSP2Triangles(2, 8, 4, 0, 4, 8, 9, 0),
|
||||
gsSP2Triangles(4, 9, 6, 0, 6, 9, 10, 0),
|
||||
gsSP2Triangles(8, 11, 12, 0, 8, 12, 9, 0),
|
||||
gsSP2Triangles(9, 12, 13, 0, 9, 13, 10, 0),
|
||||
gsSP2Triangles(10, 13, 14, 0, 12, 15, 16, 0),
|
||||
gsSP2Triangles(12, 16, 13, 0, 13, 16, 17, 0),
|
||||
gsSP2Triangles(13, 17, 14, 0, 14, 17, 18, 0),
|
||||
gsSP2Triangles(16, 19, 17, 0, 17, 19, 20, 0),
|
||||
gsSP2Triangles(17, 20, 18, 0, 21, 22, 23, 0),
|
||||
gsSP2Triangles(24, 25, 26, 0, 24, 26, 22, 0),
|
||||
gsSP2Triangles(22, 26, 27, 0, 22, 27, 23, 0),
|
||||
gsSP2Triangles(23, 27, 28, 0, 26, 29, 30, 0),
|
||||
gsSP2Triangles(26, 30, 27, 0, 27, 30, 31, 0),
|
||||
gsSP1Triangle(27, 31, 28, 0),
|
||||
gsSPVertex(vertices2, 11, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(3, 5, 1, 0, 1, 5, 6, 0),
|
||||
gsSP2Triangles(1, 6, 2, 0, 2, 6, 7, 0),
|
||||
gsSP1Triangle(8, 9, 10, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
|
@ -1,4 +1,11 @@
|
|||
/*
|
||||
* File: z_arrow_ice.c
|
||||
* Overlay: ovl_Arrow_Ice
|
||||
* Description: Ice Arrow actor. Spawned by and attached to a normal arrow.
|
||||
*/
|
||||
|
||||
#include "z_arrow_ice.h"
|
||||
#include "../ovl_En_Arrow/z_en_arrow.h"
|
||||
|
||||
#define ROOM 0x00
|
||||
#define FLAGS 0x02000010
|
||||
|
@ -8,7 +15,12 @@ void ArrowIce_Destroy(ArrowIce* this, GlobalContext* globalCtx);
|
|||
void ArrowIce_Update(ArrowIce* this, GlobalContext* globalCtx);
|
||||
void ArrowIce_Draw(ArrowIce* this, GlobalContext* globalCtx);
|
||||
|
||||
/*
|
||||
void ArrowIce_Charge(ArrowIce* this, GlobalContext* globalCtx);
|
||||
void ArrowIce_Fly(ArrowIce* this, GlobalContext* globalCtx);
|
||||
void ArrowIce_Hit(ArrowIce* this, GlobalContext* globalCtx);
|
||||
|
||||
#include "z_arrow_ice_gfx.c"
|
||||
|
||||
const ActorInit Arrow_Ice_InitVars = {
|
||||
ACTOR_ARROW_ICE,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
|
@ -21,21 +33,214 @@ const ActorInit Arrow_Ice_InitVars = {
|
|||
(ActorFunc)ArrowIce_Update,
|
||||
(ActorFunc)ArrowIce_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/func_80867CD0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/ArrowIce_Init.s")
|
||||
static InitChainEntry initChain[] = {
|
||||
ICHAIN_F32(unk_F4, 2000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/ArrowIce_Destroy.s")
|
||||
void ArrowIce_SetupAction(ArrowIce* this, ActorFunc* actionFunc) {
|
||||
this->actionFunc = actionFunc;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/func_80867D98.s")
|
||||
void ArrowIce_Init(ArrowIce* this, GlobalContext* globalCtx) {
|
||||
Actor_ProcessInitChain(&this->actor, initChain);
|
||||
this->radius = 0;
|
||||
this->unk_160 = 1.0f;
|
||||
ArrowIce_SetupAction(this, ArrowIce_Charge);
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->alpha = 0x64;
|
||||
this->timer = 0;
|
||||
this->unk_164 = 0.0f;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/func_80867E8C.s")
|
||||
void ArrowIce_Destroy(ArrowIce* this, GlobalContext* globalCtx) {
|
||||
func_800876C8(globalCtx);
|
||||
LogUtils_LogThreadId("../z_arrow_ice.c", 415);
|
||||
// Translates to: ""Disappearance" = Disappearance"
|
||||
osSyncPrintf("\"消滅\" = %s\n", "消滅");
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/func_80867EDC.s")
|
||||
void ArrowIce_Charge(ArrowIce* this, GlobalContext* globalCtx) {
|
||||
EnArrow* arrow;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/func_808680A8.s")
|
||||
arrow = this->actor.attachedA;
|
||||
if ((arrow == NULL) || (arrow->actor.update == NULL)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/ArrowIce_Update.s")
|
||||
if (this->radius < 10) {
|
||||
this->radius += 1;
|
||||
}
|
||||
// copy position and rotation from the attached arrow
|
||||
this->actor.posRot.pos = arrow->actor.posRot.pos;
|
||||
this->actor.shape.rot = arrow->actor.shape.rot;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Ice/ArrowIce_Draw.s")
|
||||
func_8002F974(&this->actor, NA_SE_PL_ARROW_CHARGE_ICE);
|
||||
|
||||
// If arrow's attached is null, Link has fired the arrow
|
||||
if (arrow->actor.attachedA == NULL) {
|
||||
this->unkPos = this->actor.posRot.pos;
|
||||
this->radius = 10;
|
||||
ArrowIce_SetupAction(this, ArrowIce_Fly);
|
||||
this->alpha = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80867E8C(Vec3f* unkPos, Vec3f* icePos, f32 scale) {
|
||||
unkPos->x += ((icePos->x - unkPos->x) * scale);
|
||||
unkPos->y += ((icePos->y - unkPos->y) * scale);
|
||||
unkPos->z += ((icePos->z - unkPos->z) * scale);
|
||||
}
|
||||
|
||||
void ArrowIce_Hit(ArrowIce* this, GlobalContext* globalCtx) {
|
||||
f32 scale;
|
||||
f32 offset;
|
||||
u16 timer;
|
||||
|
||||
if (this->actor.unk_F0 < 50.0f) {
|
||||
scale = 10.0f;
|
||||
} else {
|
||||
if (950.0f < this->actor.unk_F0) {
|
||||
scale = 310.0f;
|
||||
} else {
|
||||
scale = this->actor.unk_F0;
|
||||
scale = ((scale - 50.0f) * (1.0f / 3.0f)) + 10.0f;
|
||||
}
|
||||
}
|
||||
|
||||
timer = this->timer;
|
||||
if (timer != 0) {
|
||||
this->timer -= 1;
|
||||
|
||||
if (this->timer >= 8) {
|
||||
offset = ((this->timer - 8) * (1.0f / 24.0f));
|
||||
offset = SQ(offset);
|
||||
this->radius = (((1.0f - offset) * scale) + 10.0f);
|
||||
this->unk_160 += ((2.0f - this->unk_160) * 0.1f);
|
||||
if (this->timer < 16) {
|
||||
if (1) {}
|
||||
this->alpha = ((this->timer * 0x23) - 0x118);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this->timer >= 9) {
|
||||
if (this->unk_164 < 1.0f) {
|
||||
this->unk_164 += 0.25f;
|
||||
}
|
||||
} else {
|
||||
if (this->unk_164 > 0.0f) {
|
||||
this->unk_164 -= 0.125f;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->timer < 8) {
|
||||
this->alpha = 0;
|
||||
}
|
||||
|
||||
if (this->timer == 0) {
|
||||
this->timer = 255;
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowIce_Fly(ArrowIce* this, GlobalContext* globalCtx) {
|
||||
EnArrow* arrow;
|
||||
f32 distanceScaled;
|
||||
s32 pad;
|
||||
|
||||
arrow = this->actor.attachedA;
|
||||
if ((arrow == NULL) || (arrow->actor.update == NULL)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
// copy position and rotation from the attached arrow
|
||||
this->actor.posRot.pos = arrow->actor.posRot.pos;
|
||||
this->actor.shape.rot = arrow->actor.shape.rot;
|
||||
distanceScaled = Math_Vec3f_DistXYZ(&this->unkPos, &this->actor.posRot.pos) * (1.0f / 24.0f);
|
||||
this->unk_160 = distanceScaled;
|
||||
if (distanceScaled < 1.0f) {
|
||||
this->unk_160 = 1.0f;
|
||||
}
|
||||
func_80867E8C(&this->unkPos, &this->actor.posRot.pos, 0.05f);
|
||||
|
||||
if (arrow->hitWall & 1) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_IT_EXPLOSION_ICE);
|
||||
ArrowIce_SetupAction(this, ArrowIce_Hit);
|
||||
this->timer = 32;
|
||||
this->alpha = 0xFF;
|
||||
} else if (arrow->timer < 34) {
|
||||
if (this->alpha < 0x23) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
this->alpha -= 0x19;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowIce_Update(ArrowIce* this, GlobalContext* globalCtx) {
|
||||
if (globalCtx->msgCtx.msgMode == 0xD || globalCtx->msgCtx.msgMode == 0x11) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
this->actionFunc(this, globalCtx);
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowIce_Draw(ArrowIce* this, GlobalContext* globalCtx) {
|
||||
s32 pad1;
|
||||
s32 pad2;
|
||||
Actor* tranform;
|
||||
u32 stateFrames;
|
||||
GraphicsContext* gfxCtx;
|
||||
EnArrow* arrow;
|
||||
Gfx* gfxArr[4];
|
||||
|
||||
stateFrames = globalCtx->state.frames;
|
||||
arrow = this->actor.attachedA;
|
||||
if (1) {}
|
||||
|
||||
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
|
||||
if (1) {}
|
||||
tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
|
||||
// clang-format off
|
||||
gfxCtx = globalCtx->state.gfxCtx; func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_ice.c", 610);
|
||||
// clang-format on
|
||||
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_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY);
|
||||
Matrix_RotateZ(tranform->shape.rot.z * (M_PI / 32768), MTXMODE_APPLY);
|
||||
Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY);
|
||||
|
||||
// Draw blue effect over the screen when arrow hits
|
||||
if (this->unk_164 > 0) {
|
||||
gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p);
|
||||
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);
|
||||
gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE);
|
||||
gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE);
|
||||
gDPFillRectangle(gfxCtx->polyXlu.p++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
|
||||
}
|
||||
|
||||
// Draw ice on the arrow
|
||||
func_80093D84(globalCtx->state.gfxCtx);
|
||||
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0x80, 0x80, 0xAA, 0xFF, 0xFF, this->alpha);
|
||||
gDPSetEnvColor(gfxCtx->polyXlu.p++, 0x00, 0x00, 0xFF, 0x80);
|
||||
Matrix_RotateZYX(0x4000, 0x0, 0x0, MTXMODE_APPLY);
|
||||
if (this->timer != 0) {
|
||||
Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||
} else {
|
||||
Matrix_Translate(0.0f, 1500.0f, 0.0f, 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);
|
||||
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_ice.c", 660),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, textureDL);
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++,
|
||||
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 511 - (stateFrames * 5) % 512, 0, 128, 32, 1,
|
||||
511 - (stateFrames * 10) % 512, 511 - (stateFrames * 10) % 512, 4, 16));
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL);
|
||||
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_ice.c", 676);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,13 @@
|
|||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x20];
|
||||
/* 0x014C */ s16 radius;
|
||||
/* 0x014E */ u16 timer;
|
||||
/* 0x0150 */ u8 alpha;
|
||||
/* 0x0154 */ Vec3f unkPos;
|
||||
/* 0x0160 */ f32 unk_160;
|
||||
/* 0x0164 */ f32 unk_164;
|
||||
/* 0x0168 */ ActorFunc actionFunc;
|
||||
} ArrowIce; // size = 0x016C
|
||||
|
||||
extern const ActorInit Arrow_Ice_InitVars;
|
||||
|
|
192
src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice_gfx.c
Normal file
192
src/overlays/actors/ovl_Arrow_Ice/z_arrow_ice_gfx.c
Normal file
|
@ -0,0 +1,192 @@
|
|||
#include "z_arrow_ice.h"
|
||||
|
||||
static UNK_TYPE texture1[] = {
|
||||
0x00061507, 0x00000000, 0x295A2B08, 0x10030F03, 0x0D070006, 0x00031625, 0x3F230012, 0x79590000, 0x00102C2A,
|
||||
0x254A1B0E, 0xAFF66600, 0x00467E29, 0x08020000, 0x03383E0B, 0x0501000A, 0x31211C05, 0x00031C27, 0x4CA92F13,
|
||||
0xB2EF5500, 0x057EBF37, 0x00000000, 0x0E493F13, 0x00000002, 0x335C3E03, 0x00000E07, 0x3C761200, 0x447E2200,
|
||||
0x00426710, 0x00000000, 0x071C2208, 0x00000168, 0xE18F0F00, 0x00060E00, 0x0A100000, 0x0514022D, 0x1B020400,
|
||||
0x00000000, 0x093A3F0A, 0x050010AE, 0xDA360000, 0x00070500, 0x00000000, 0x00001461, 0x3E050024, 0x24000000,
|
||||
0x184E3755, 0x9132043C, 0x2F000000, 0x12020A54, 0x3C000200, 0x00000F3E, 0x2B041159, 0x2C000000, 0x030B22CE,
|
||||
0xF9420000, 0x00000301, 0x371160EF, 0xAC6D2B00, 0x00000008, 0x05000D27, 0x06000000, 0x00001A91, 0x760B0000,
|
||||
0x000B030A, 0x747DB0BD, 0xBDA31D00, 0x00000000, 0x00000000, 0x00000511, 0x01000209, 0x03020015, 0x583A0010,
|
||||
0xC1E0892D, 0x532D0000, 0x03160600, 0x00050001, 0x15142E4E, 0x07000500, 0x100D004C, 0xB65C001B, 0xB2DF9417,
|
||||
0x00000020, 0x57420400, 0x45882F00, 0x18093B3E, 0x01182F0D, 0x1405003F, 0xB75B001E, 0x5DC2E14F, 0x00000161,
|
||||
0xBC4A005A, 0xECF84A00, 0x0011330F, 0x0044591C, 0x01001C7C, 0xB122001F, 0x5DE4FF71, 0x00000177, 0xBA3218D9,
|
||||
0xFFC41700, 0x1E7B5A1C, 0x2B769635, 0x0044D5FA, 0x9E000530, 0xC7FFCE35, 0x00000035, 0x663441CF, 0xC9380000,
|
||||
0x3D733C28, 0x3E709726, 0x0086FAF1, 0x9B170D4C, 0xC9812700, 0x000E1A02, 0x4C642544, 0x2B000000, 0x0D0E0508,
|
||||
0x0A252F03, 0x00335297, 0xC75B014E, 0x77470600, 0x00160F00, 0x3A350016, 0x29070000, 0x0C3A3911, 0x00000003,
|
||||
0x0100004B, 0x8F4B051C, 0x7F6C1C00, 0x00000000, 0x00000437, 0x2E030001, 0x2A6E6B2C, 0x0604000E, 0x0B000004,
|
||||
0x19350814, 0x3E63813D, 0x13000000, 0x00000117, 0x06000000, 0x14362911, 0x312E021F, 0x13000000, 0x010C000C,
|
||||
0x10B9EF72, 0x2D010000, 0x040C0C10, 0x02000000, 0x33410306, 0x3B30071D, 0x07000000, 0x00000000, 0x1BC2A129,
|
||||
0x0D000000, 0x050E1112, 0x0100002E, 0xD2C22E00, 0x21593403, 0x00000000, 0x01010000, 0x0E451B00, 0x00000000,
|
||||
0x0000060D, 0x00000061, 0xFFEA2E00, 0x3DA04200, 0x00000000, 0x06140B00, 0x00040200, 0x00000000, 0x00061B0C,
|
||||
0x00000037, 0x8D620500, 0x2A8F5801, 0x00000000, 0x082E3404, 0x00000000, 0x00000003, 0x0A201B02, 0x00000000,
|
||||
0x06000000, 0x11826503, 0x00060400, 0x07303402, 0x07010007, 0x2F1E0B0A, 0x09080000, 0x03000000, 0x00000000,
|
||||
0x07452500, 0x0E361100, 0x000B0A00, 0x06000018, 0x3E170600, 0x00060F0D, 0x3E190000, 0x00000000, 0x00000000,
|
||||
0x21360700, 0x00000000, 0x00000007, 0x09000000, 0x0A857124, 0x703C0000, 0x01000000, 0x00000000, 0x08050000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x32D97112, 0x4A1B0001, 0x02050000, 0x00000000, 0x021A0A00, 0x00000613,
|
||||
0x07000000, 0x00000000, 0x1E5D1700, 0x04000000, 0x37550400, 0x00000000, 0x14300600, 0x00003E5B, 0x08000000,
|
||||
0x00000000, 0x2F2F0000, 0x00000007, 0x90840300, 0x0F070000, 0x06070000, 0x00055A62, 0x00000000, 0x00000020,
|
||||
0xA77B0700, 0x0106000F, 0x612D0006, 0x1B030000, 0x00000001, 0x0000211A, 0x00000000, 0x0000002E, 0x944A0103,
|
||||
0x3B390200, 0x04000011, 0x14000005, 0x302F0D10, 0x01000000, 0x00000000, 0x00000009, 0x10000015, 0x5D290000,
|
||||
0x00000015, 0x09000027, 0x73510F09, 0x37410700, 0x00061408, 0x00000000, 0x25582D09, 0x12020E03, 0x0C070007,
|
||||
0x00031627, 0x41240011, 0x795B0000, 0x00102D29, 0x244B1C0D, 0xB0F76600, 0x00467C28, 0x08020000, 0x02383E0B,
|
||||
0x0401000A, 0x32231C04, 0x00031B28, 0x4CA83112, 0xB2EF5500, 0x057EBE38, 0x00000000, 0x0D493D13, 0x00000002,
|
||||
0x325C3F03, 0x00000E08, 0x3D761200, 0x457F2200, 0x0043660F, 0x00000000, 0x071D2208, 0x00000168, 0xE1901000,
|
||||
0x00070E00, 0x09110000, 0x0515022D, 0x1B020400, 0x00000000, 0x093B3E09, 0x050011AE, 0xD9370000, 0x00070500,
|
||||
0x00000000, 0x00001462, 0x3E050024, 0x25000000, 0x184E3554, 0x9431043C, 0x2E000000, 0x12010955, 0x3C000300,
|
||||
0x0000103E, 0x2B04115A, 0x2D000000, 0x030B22CE, 0xF9420000, 0x00000301, 0x361161EF, 0xAC6B2B00, 0x00000008,
|
||||
0x05000D27, 0x07000000, 0x00001A8F, 0x760B0000, 0x000B030A, 0x727DB1BD, 0xBCA21C00, 0x00000000, 0x00000000,
|
||||
0x00000610, 0x00000208, 0x03030016, 0x57390010, 0xC1E1892E, 0x522C0000, 0x03160600, 0x00060001, 0x14142F4E,
|
||||
0x07000500, 0x100E004B, 0xB55C001B, 0xB0DD9416, 0x0000001F, 0x57430500, 0x468A3000, 0x16093B3E, 0x01192F0D,
|
||||
0x1405003E, 0xB65B001D, 0x5CC1E04E, 0x0000005E, 0xBC4B0058, 0xEBFA4B00, 0x0011340E, 0x0045591C, 0x02001C7C,
|
||||
0xB223001E, 0x5CE5FF71, 0x00000176, 0xB93216D8, 0xFFC21700, 0x1D7B5B1C, 0x2B759636, 0x0041D4FC, 0x9D000530,
|
||||
0xC7FFCE36, 0x00000036, 0x663540CE, 0xC6360000, 0x3C743E29, 0x3E719827, 0x0085FAF0, 0x9B160D4E, 0xC9812600,
|
||||
0x000F1A03, 0x4B642646, 0x2B000000, 0x0D0E0608, 0x0A253002, 0x00345299, 0xC85B014E, 0x75470600, 0x00160F00,
|
||||
0x39350015, 0x29070000, 0x0C3A3911, 0x00000003, 0x0100004B, 0x914B051E, 0x7D6C1C01, 0x00000000, 0x00000437,
|
||||
0x2E030001, 0x2A6F6A2A, 0x0604000E, 0x0B000003, 0x1A350814, 0x3E63813E, 0x13000000, 0x00000118, 0x07000000,
|
||||
0x13382911, 0x302E0320, 0x14000000, 0x010D000C, 0x0FB9EE73, 0x2F000000, 0x040B0C11, 0x02000000, 0x36440307,
|
||||
0x3B30071D, 0x07000000, 0x00000000, 0x1ABF9F29, 0x0E000000, 0x050F1112, 0x0100002D, 0xD3C42B00, 0x22593404,
|
||||
0x00000000, 0x01010000, 0x0E451B00, 0x00000000, 0x0000070C, 0x00000061, 0xFFED2F00, 0x3EA04300, 0x00000000,
|
||||
0x05140B00, 0x00030200, 0x00000000, 0x00061C0B, 0x00000037, 0x8F640500, 0x2A8F5901, 0x00000000, 0x082D3504,
|
||||
0x00000000, 0x00010003, 0x0A201B02, 0x00000000, 0x07000000, 0x11826503, 0x00050400, 0x072F3503, 0x07010007,
|
||||
0x2F1E0C0B, 0x09080000, 0x03000000, 0x00000000, 0x07462500, 0x0E361100, 0x000B0900, 0x04000018, 0x3E160600,
|
||||
0x00060F0B, 0x3D190000, 0x00000000, 0x00000000, 0x21370600, 0x00000000, 0x00000007, 0x09000000, 0x0B866F22,
|
||||
0x713C0000, 0x02000000, 0x00000000, 0x08060000, 0x00000000, 0x00000000, 0x00000000, 0x30D76F12, 0x4B1A0001,
|
||||
0x02050000, 0x00000000, 0x021A0A00, 0x00000714, 0x08000000, 0x00000000, 0x1E5C1700, 0x03000000, 0x36560400,
|
||||
0x00000000, 0x15300600, 0x00003F5D, 0x07000000, 0x00000000, 0x2E2F0000, 0x00000008, 0x8F840300, 0x0F060000,
|
||||
0x06070000, 0x00065B61, 0x00000000, 0x00000020, 0xA67C0700, 0x0006000E, 0x612D0006, 0x1B030000, 0x00000001,
|
||||
0x0001211B, 0x00000000, 0x0000002F, 0x93490103, 0x3B390200, 0x04000011, 0x13000005, 0x2F2E0C11, 0x02000000,
|
||||
0x00000000, 0x00000008, 0x14030015, 0x5D2C0000, 0x00000115, 0x08000027, 0x724F0F0A, 0x353D0600,
|
||||
};
|
||||
|
||||
static UNK_TYPE texture2[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000001, 0x02030404,
|
||||
0x04040303, 0x03030303, 0x03020202, 0x02020201, 0x01010000, 0x00000000, 0x01010305, 0x090B0D0D, 0x0C0B0A0A,
|
||||
0x0A0A0B0A, 0x09080707, 0x07070707, 0x07070705, 0x04030201, 0x0304070B, 0x11141717, 0x16141313, 0x14151514,
|
||||
0x110D0B0B, 0x0C0D0F12, 0x13141413, 0x110C0905, 0x07070B12, 0x181E2121, 0x201F1F20, 0x2225221D, 0x17120F0F,
|
||||
0x13171D23, 0x292D2D2A, 0x2219120A, 0x07080C13, 0x1B202223, 0x22232629, 0x2C2B261F, 0x17121112, 0x18202B36,
|
||||
0x4046453D, 0x3022150C, 0x07080D15, 0x1C202325, 0x272A2E33, 0x3431281E, 0x16121217, 0x202E3F4F, 0x595D5A4E,
|
||||
0x3B27170C, 0x07090F16, 0x1C202327, 0x2B32383C, 0x3B34291E, 0x1613161E, 0x2D425866, 0x6D6E6856, 0x3F28160B,
|
||||
0x070A1117, 0x1C20252A, 0x333B4245, 0x41382C21, 0x18161B28, 0x3D586E7A, 0x7D7A6F58, 0x3C231309, 0x070C1318,
|
||||
0x1E222932, 0x3C464E4F, 0x4A413529, 0x1F1D2232, 0x4C6A8189, 0x88816D50, 0x331D0E07, 0x090F181F, 0x252B343F,
|
||||
0x4A555E5F, 0x5C524537, 0x2B272D40, 0x5D7C9197, 0x91816444, 0x29160B07, 0x0F19222A, 0x323B4550, 0x5D6D787D,
|
||||
0x796B5B49, 0x3C373E52, 0x7190A2A2, 0x93785537, 0x20110A0A, 0x1D28343E, 0x47505A64, 0x738698A1, 0x9C8D7761,
|
||||
0x534E566D, 0x8DA6B0A6, 0x8D69472C, 0x190F0E13, 0x36434F57, 0x5F676E77, 0x869BB0BC, 0xBBAF9A84, 0x74717D93,
|
||||
0xADBCBBA5, 0x835E412A, 0x1D1A1E27, 0x5360696E, 0x73777C82, 0x8C9EB3C5, 0xCECBBEAB, 0x9F9FA9BC, 0xCACEBFA0,
|
||||
0x7A593F2F, 0x282B3545, 0x6F767778, 0x78787A7F, 0x8593A8C2, 0xD6DDDAD2, 0xCCCBD2DA, 0xDFD7BE9B, 0x775A473C,
|
||||
0x3A445463, 0x7E7D7875, 0x716D6D71, 0x78849BBA, 0xD8EAEDED, 0xEBEBEDED, 0xEBDABB97, 0x7862554F, 0x5562727B,
|
||||
0x7F766E67, 0x625D5C5F, 0x697991B2, 0xD6EFF7F5, 0xF3F4F7F7, 0xEDD5B496, 0x7F70696B, 0x74808787, 0x796C5F57,
|
||||
0x514D4C52, 0x5E738EAF, 0xD1EAF1ED, 0xEBEDF4F4, 0xE6CCB099, 0x8A818087, 0x91959288, 0x7261534A, 0x4541434A,
|
||||
0x597290AE, 0xCADCE0DC, 0xDADDE5E6, 0xD9C2AD9D, 0x9390949D, 0xA2A09584, 0x6C5A4B41, 0x3B3B3D46, 0x57718EA9,
|
||||
0xBDC9CBCA, 0xCACED2CF, 0xC3B3A398, 0x92939AA1, 0xA39D907F, 0x6955453C, 0x38373C46, 0x58718DA5, 0xB7C1C5C6,
|
||||
0xC9CCCAC2, 0xB4A59A91, 0x8D91979D, 0x9E998D7D, 0x6752423A, 0x38383C46, 0x576F8AA2, 0xB3BFC6CB, 0xCECCC5B7,
|
||||
0xA7988D86, 0x83868E95, 0x98968D7D, 0x644F403B, 0x393A3E47, 0x566C859C, 0xAFBDC7CE, 0xCEC8BCAA, 0x9A8A7F78,
|
||||
0x777A838D, 0x94958C7A, 0x5E4C423E, 0x3E3E4047, 0x54677D94, 0xA9BAC7CD, 0xC9C0AF9F, 0x8E80746D, 0x6B707A86,
|
||||
0x91928975, 0x5A4B4543, 0x43434448, 0x5161768C, 0xA3B5C3C7, 0xC1B4A394, 0x85776D66, 0x63687480, 0x8C8D836F,
|
||||
0x574D4848, 0x4848484A, 0x505D7087, 0x9DB1BDBE, 0xB6A9998B, 0x7F746A63, 0x62656F7B, 0x84847A67, 0x554F4D4D,
|
||||
0x4D4D4E4F, 0x535F6F85, 0x9BAEB8B8, 0xAFA29488, 0x7E756B65, 0x62656D75, 0x7B797061, 0x56535353, 0x5556585A,
|
||||
0x6069788A, 0x9EAEB6B4, 0xAB9F948A, 0x817A726B, 0x67686B6F, 0x726E665D, 0x585A5C5E, 0x62676C70, 0x767E8A98,
|
||||
0xA6B2B6B4, 0xACA1978E, 0x89837C76, 0x716E6C6C, 0x6A66605C, 0x5F62686F, 0x7680888F, 0x94999FA7, 0xAFB6B7B5,
|
||||
0xAEA49C96, 0x928E8983, 0x7D76716B, 0x67625F5D, 0x676D7681, 0x8E9BA6AD, 0xB0B1B1B2, 0xB4B7B9B6, 0xB1A8A29E,
|
||||
0x9B999590, 0x877F7770, 0x6A656364, 0x71788392, 0xA3B2BDC3, 0xC3BFBAB7, 0xB6B8B9B7, 0xB3ABA6A3, 0xA3A19E98,
|
||||
0x91888079, 0x736E6C6D, 0x7A818C9C, 0xAFBFC9CE, 0xCBC4BDB7, 0xB7B8BBBA, 0xB4ACA6A4, 0xA4A5A4A0, 0x9A958F89,
|
||||
0x837E7A79, 0x868A94A3, 0xB5C4CED0, 0xCCC5BEBA, 0xBBBFC1BF, 0xB7AEA8A5, 0xA7A9ABAC, 0xACAAA8A4, 0x9D968D88,
|
||||
0x8F9199A7, 0xB7C5CCCD, 0xC9C4C0BF, 0xC3C7C8C2, 0xB7ADA7A6, 0xA8ADB3BA, 0xBFC3C4BF, 0xB7AB9E94, 0x97979FAB,
|
||||
0xB9C3C8C9, 0xC7C5C4C7, 0xCCCFCBC2, 0xB6ADA8A8, 0xADB5C1CD, 0xD8E0E0D9, 0xCCBBAB9E, 0x9C9DA4AE, 0xBAC1C5C6,
|
||||
0xC6C7CAD0, 0xD4D3CBC0, 0xB5ADABAD, 0xB6C2D2E3, 0xF1F9F8ED, 0xDAC5B2A3, 0xA2A4ABB4, 0xBBC1C4C5, 0xC8CCD2D7,
|
||||
0xD8D3CABE, 0xB4B0B0B6, 0xC1D2E5F7, 0xFFFFFFF5, 0xE0C9B6A9, 0xA9ABB1B7, 0xBDC1C4C7, 0xCBD1D8DC, 0xDAD4C9BF,
|
||||
0xB7B4B7BF, 0xCEE1F5FF, 0xFFFFFFF5, 0xDEC8B7AD, 0xB0B2B7BC, 0xC0C3C7CB, 0xD1D8DEDF, 0xDCD6CDC4, 0xBEBBBFC9,
|
||||
0xD9EDFFFF, 0xFFFFFFEE, 0xD9C6B9B1, 0xB6BABEC2, 0xC5C8CCD2, 0xD8DFE3E4, 0xE1DBD4CC, 0xC6C4C8D2, 0xE2F6FFFF,
|
||||
0xFFFFF7E5, 0xD3C5BBB6, 0xBEC2C6C9, 0xCDD0D5DA, 0xE1E6EAEB, 0xE9E4DED6, 0xD0CED1DB, 0xEAFAFFFF, 0xFFFDEEDD,
|
||||
0xCFC5BFBD, 0xC7CBCFD3, 0xD6DADEE3, 0xE9EFF4F7, 0xF4EFE7E0, 0xDBD8DBE4, 0xF2FFFFFF, 0xFFF4E6D8, 0xCEC7C4C4,
|
||||
0xD1D5D9DD, 0xE0E3E7EB, 0xF0F7FEFF, 0xFFFAF2EA, 0xE5E3E6EE, 0xFAFFFFFF, 0xFAEDE0D7, 0xD0CDCCCD, 0xDCE0E3E6,
|
||||
0xE9EBEDF0, 0xF5FBFFFF, 0xFFFFFBF4, 0xEFEEF2F9, 0xFFFFFFFE, 0xF4E8DFD8, 0xD4D3D5D7, 0xE6E9EBED, 0xEEEFF1F2,
|
||||
0xF5F9FFFF, 0xFFFFFFFD, 0xFAFAFDFF, 0xFFFFFFFA, 0xF0E7E1DD, 0xDBDCDEE2, 0xEDEFEFF0, 0xF0F0F0F1, 0xF2F5FAFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFF7, 0xEFE9E5E2, 0xE2E4E7EB, 0xF1F1F0F0, 0xEFEEEEEF, 0xF0F3F6FC, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFDF6, 0xF0ECEAE8, 0xEAECEFF1, 0xF2F1EFEF, 0xEEEDEDED, 0xEFF1F5FA, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFBF6, 0xF2F0EFEF, 0xF1F2F3F3, 0xF3F1EFEE, 0xEDEDEDED, 0xEFF2F5FA, 0xFEFFFFFF, 0xFFFFFFFF, 0xFFFDFAF7,
|
||||
0xF5F4F4F5, 0xF6F7F6F5, 0xF3F1F0EF, 0xEEEEEEEF, 0xF1F3F6FA, 0xFDFFFFFF, 0xFFFFFFFF, 0xFFFCFAF8, 0xF7F6F7F8,
|
||||
0xF8F8F7F5, 0xF5F3F2F1, 0xF0F0F0F1, 0xF3F5F8FA, 0xFCFDFDFD, 0xFDFEFEFE, 0xFDFBFAF9, 0xF8F9F9FA, 0xFAF9F8F7,
|
||||
0xF7F5F3F3, 0xF3F2F3F4, 0xF5F7F9FB, 0xFDFDFEFE, 0xFEFEFEFD, 0xFCFBFAFA, 0xF9FAFAFB, 0xFBFAF9F8, 0xF8F7F6F5,
|
||||
0xF5F5F5F6, 0xF7F9FAFC, 0xFDFEFEFF, 0xFFFFFEFD, 0xFDFBFBFA, 0xFAFAFBFB, 0xFBFBFBFA, 0xFAF9F8F7, 0xF7F7F8F8,
|
||||
0xF9FAFBFC, 0xFEFFFFFF, 0xFFFFFEFD, 0xFCFCFBFB, 0xFBFBFBFC, 0xFCFCFCFB, 0xFBFAFAFA, 0xFAFAFAFA, 0xFBFBFCFD,
|
||||
0xFEFFFFFF, 0xFFFFFEFE, 0xFDFCFCFC, 0xFBFCFCFD, 0xFDFDFDFC, 0xFCFCFBFB, 0xFBFBFBFC, 0xFCFCFDFE, 0xFFFFFFFF,
|
||||
0xFFFFFFFE, 0xFEFDFDFD, 0xFDFDFDFD, 0xFEFEFDFD, 0xFDFDFDFD, 0xFDFDFDFD, 0xFDFDFEFE, 0xFFFFFFFF, 0xFFFFFFFE,
|
||||
0xFEFEFEFD, 0xFDFEFEFE, 0xFEFEFEFE, 0xFEFEFEFE, 0xFEFEFEFE, 0xFEFEFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE,
|
||||
0xFEFEFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
};
|
||||
|
||||
static UNK_TYPE vertices1[] = {
|
||||
0x00420271, 0xFFBE0000, 0x060006C2, 0x3E52C2FF, 0x000002BC, 0x00000000, 0x07000800, 0x007800FF, 0x005D0271,
|
||||
0x00000000, 0x080006C2, 0x575200FF, 0x00BD01DB, 0xFFB20000, 0x07000419, 0x5E3FD9FF, 0x00BD01DB, 0x004E0000,
|
||||
0x09000419, 0x5E3F27FF, 0x01AF001B, 0x00000000, 0x08000005, 0x6B3500FF, 0x0131001B, 0x01310000, 0x0A000005,
|
||||
0x4C354CFF, 0x000002BC, 0x00000000, 0x09000800, 0x007800FF, 0x00420271, 0x00420000, 0x0A0006C2, 0x3E523EFF,
|
||||
0x004E01DB, 0x00BD0000, 0x0B000419, 0x273F5EFF, 0x0000001B, 0x01AF0000, 0x0C000005, 0x00356BFF, 0x000002BC,
|
||||
0x00000000, 0x0B000800, 0x007800FF, 0x00000271, 0x005D0000, 0x0C0006C2, 0x005257FF, 0xFFB201DB, 0x00BD0000,
|
||||
0x0D000419, 0xD93F5EFF, 0xFECF001B, 0x01310000, 0x0E000005, 0xB4354CFF, 0x000002BC, 0x00000000, 0x0D000800,
|
||||
0x007800FF, 0xFFBE0271, 0x00420000, 0x0E0006C2, 0xC2523EFF, 0xFF4301DB, 0x004E0000, 0x0F000419, 0xA23F27FF,
|
||||
0xFE51001B, 0x00000000, 0x10000005, 0x953500FF, 0xFFA30271, 0x00000000, 0x100006C2, 0xA95200FF, 0xFF4301DB,
|
||||
0xFFB20000, 0x11000419, 0xA23FD9FF, 0xFE51001B, 0x00000000, 0x00000005, 0x953500FF, 0xFF4301DB, 0xFFB20000,
|
||||
0x01000419, 0xA23FD9FF, 0xFECF001B, 0xFECF0000, 0x02000005, 0xB435B4FF, 0xFFA30271, 0x00000000, 0x000006C2,
|
||||
0xA95200FF, 0x000002BC, 0x00000000, 0x01000800, 0x007800FF, 0xFFBE0271, 0xFFBE0000, 0x020006C2, 0xC252C2FF,
|
||||
0xFFB201DB, 0xFF430000, 0x03000419, 0xD93FA2FF, 0x0000001B, 0xFE510000, 0x04000005, 0x003595FF, 0x000002BC,
|
||||
0x00000000, 0x03000800, 0x007800FF, 0x00000271, 0xFFA30000, 0x040006C2, 0x0052A9FF, 0x004E01DB, 0xFF430000,
|
||||
0x05000419, 0x273FA2FF,
|
||||
};
|
||||
|
||||
static UNK_TYPE vertices2[] = {
|
||||
0x0000001B, 0xFE510000, 0x04000005, 0x003595FF, 0x004E01DB, 0xFF430000, 0x05000419, 0x273FA2FF, 0x0131001B,
|
||||
0xFECF0000, 0x06000005, 0x4C35B4FF, 0x00000271, 0xFFA30000, 0x040006C2, 0x0052A9FF, 0x000002BC, 0x00000000,
|
||||
0x05000800, 0x007800FF, 0x00420271, 0xFFBE0000, 0x060006C2, 0x3E52C2FF, 0x00BD01DB, 0xFFB20000, 0x07000419,
|
||||
0x5E3FD9FF, 0x01AF001B, 0x00000000, 0x08000005, 0x6B3500FF, 0xFFBE0271, 0x00420000, 0x060006C2, 0xC2523EFF,
|
||||
0x000002BC, 0x00000000, 0x07000800, 0x007800FF, 0xFFA30271, 0x00000000, 0x080006C2, 0xA95200FF,
|
||||
};
|
||||
|
||||
static Gfx textureDL[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureLUT(G_TT_NONE),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(texture2, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_MIRROR | G_TX_WRAP, 5, 6, 1, 15),
|
||||
gsDPLoadMultiBlock(texture1, 0x0100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_MIRROR | G_TX_WRAP, 5, 6, 13, 14),
|
||||
gsDPSetCombineLERP(TEXEL1, PRIMITIVE, ENV_ALPHA, TEXEL0, TEXEL1, 0, ENVIRONMENT, TEXEL0, PRIMITIVE, ENVIRONMENT,
|
||||
COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0),
|
||||
gsDPSetRenderMode(Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL |
|
||||
GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1),
|
||||
G_RM_ZB_CLD_SURF2),
|
||||
gsSPClearGeometryMode(G_CULL_BACK | G_FOG | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
|
||||
gsSPSetGeometryMode(G_LIGHTING),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
static Gfx vertexDL[] = {
|
||||
gsSPVertex(vertices1, 32, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
|
||||
gsSP2Triangles(3, 2, 4, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(5, 4, 6, 0, 2, 7, 8, 0),
|
||||
gsSP2Triangles(2, 8, 4, 0, 4, 8, 9, 0),
|
||||
gsSP2Triangles(4, 9, 6, 0, 6, 9, 10, 0),
|
||||
gsSP2Triangles(8, 11, 12, 0, 8, 12, 9, 0),
|
||||
gsSP2Triangles(9, 12, 13, 0, 9, 13, 10, 0),
|
||||
gsSP2Triangles(10, 13, 14, 0, 12, 15, 16, 0),
|
||||
gsSP2Triangles(12, 16, 13, 0, 13, 16, 17, 0),
|
||||
gsSP2Triangles(13, 17, 14, 0, 14, 17, 18, 0),
|
||||
gsSP2Triangles(16, 19, 17, 0, 17, 19, 20, 0),
|
||||
gsSP2Triangles(17, 20, 18, 0, 21, 22, 23, 0),
|
||||
gsSP2Triangles(24, 25, 26, 0, 24, 26, 22, 0),
|
||||
gsSP2Triangles(22, 26, 27, 0, 22, 27, 23, 0),
|
||||
gsSP2Triangles(23, 27, 28, 0, 26, 29, 30, 0),
|
||||
gsSP2Triangles(26, 30, 27, 0, 27, 30, 31, 0),
|
||||
gsSP1Triangle(27, 31, 28, 0),
|
||||
gsSPVertex(vertices2, 11, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(3, 5, 1, 0, 1, 5, 6, 0),
|
||||
gsSP2Triangles(1, 6, 2, 0, 2, 6, 7, 0),
|
||||
gsSP1Triangle(8, 9, 10, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
|
@ -1,4 +1,11 @@
|
|||
/*
|
||||
* File: z_arrow_light.c
|
||||
* Overlay: ovl_Arrow_Light
|
||||
* Description: Light Arrow actor. Spawned by and attached to a normal arrow.
|
||||
*/
|
||||
|
||||
#include "z_arrow_light.h"
|
||||
#include "../ovl_En_Arrow/z_en_arrow.h"
|
||||
|
||||
#define ROOM 0x00
|
||||
#define FLAGS 0x02000010
|
||||
|
@ -8,7 +15,12 @@ void ArrowLight_Destroy(ArrowLight* this, GlobalContext* globalCtx);
|
|||
void ArrowLight_Update(ArrowLight* this, GlobalContext* globalCtx);
|
||||
void ArrowLight_Draw(ArrowLight* this, GlobalContext* globalCtx);
|
||||
|
||||
/*
|
||||
void ArrowLight_Charge(ArrowLight* this, GlobalContext* globalCtx);
|
||||
void ArrowLight_Fly(ArrowLight* this, GlobalContext* globalCtx);
|
||||
void ArrowLight_Hit(ArrowLight* this, GlobalContext* globalCtx);
|
||||
|
||||
#include "z_arrow_light_gfx.c"
|
||||
|
||||
const ActorInit Arrow_Light_InitVars = {
|
||||
ACTOR_ARROW_LIGHT,
|
||||
ACTORTYPE_ITEMACTION,
|
||||
|
@ -21,21 +33,214 @@ const ActorInit Arrow_Light_InitVars = {
|
|||
(ActorFunc)ArrowLight_Update,
|
||||
(ActorFunc)ArrowLight_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/func_80869CB0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/ArrowLight_Init.s")
|
||||
static InitChainEntry initChain[] = {
|
||||
ICHAIN_F32(unk_F4, 2000, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/ArrowLight_Destroy.s")
|
||||
void ArrowLight_SetupAction(ArrowLight* this, ActorFunc* actionFunc) {
|
||||
this->actionFunc = actionFunc;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/func_80869D78.s")
|
||||
void ArrowLight_Init(ArrowLight* this, GlobalContext* globalCtx) {
|
||||
Actor_ProcessInitChain(&this->actor, initChain);
|
||||
this->radius = 0;
|
||||
this->unk_160 = 1.0f;
|
||||
ArrowLight_SetupAction(this, ArrowLight_Charge);
|
||||
Actor_SetScale(&this->actor, 0.01f);
|
||||
this->alpha = 0x82;
|
||||
this->timer = 0;
|
||||
this->unk_164 = 0.0f;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/func_80869E6C.s")
|
||||
void ArrowLight_Destroy(ArrowLight* this, GlobalContext* globalCtx) {
|
||||
func_800876C8(globalCtx);
|
||||
LogUtils_LogThreadId("../z_arrow_light.c", 403);
|
||||
// Translates to: ""Disappearance" = Disappearance"
|
||||
osSyncPrintf("\"消滅\" = %s\n", "消滅");
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/func_80869EBC.s")
|
||||
void ArrowLight_Charge(ArrowLight* this, GlobalContext* globalCtx) {
|
||||
EnArrow* arrow;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/func_8086A088.s")
|
||||
arrow = this->actor.attachedA;
|
||||
if ((arrow == NULL) || (arrow->actor.update == NULL)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/ArrowLight_Update.s")
|
||||
if (this->radius < 10) {
|
||||
this->radius += 1;
|
||||
}
|
||||
// copy position and rotation from the attached arrow
|
||||
this->actor.posRot.pos = arrow->actor.posRot.pos;
|
||||
this->actor.shape.rot = arrow->actor.shape.rot;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Arrow_Light/ArrowLight_Draw.s")
|
||||
func_8002F974(&this->actor, NA_SE_PL_ARROW_CHARGE_LIGHT);
|
||||
|
||||
// If arrow's attached is null, Link has fired the arrow
|
||||
if (arrow->actor.attachedA == NULL) {
|
||||
this->unkPos = this->actor.posRot.pos;
|
||||
this->radius = 10;
|
||||
ArrowLight_SetupAction(this, ArrowLight_Fly);
|
||||
this->alpha = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
void func_80869E6C(Vec3f* unkPos, Vec3f* lightPos, f32 scale) {
|
||||
unkPos->x += ((lightPos->x - unkPos->x) * scale);
|
||||
unkPos->y += ((lightPos->y - unkPos->y) * scale);
|
||||
unkPos->z += ((lightPos->z - unkPos->z) * scale);
|
||||
}
|
||||
|
||||
void ArrowLight_Hit(ArrowLight* this, GlobalContext* globalCtx) {
|
||||
f32 scale;
|
||||
f32 offset;
|
||||
u16 timer;
|
||||
|
||||
if (this->actor.unk_F0 < 50.0f) {
|
||||
scale = 10.0f;
|
||||
} else {
|
||||
if (950.0f < this->actor.unk_F0) {
|
||||
scale = 310.0f;
|
||||
} else {
|
||||
scale = this->actor.unk_F0;
|
||||
scale = ((scale - 50.0f) * (1.0f / 3.0f)) + 10.0f;
|
||||
}
|
||||
}
|
||||
|
||||
timer = this->timer;
|
||||
if (timer != 0) {
|
||||
this->timer -= 1;
|
||||
|
||||
if (this->timer >= 8) {
|
||||
offset = ((this->timer - 8) * (1.0f / 24.0f));
|
||||
offset = SQ(offset);
|
||||
this->radius = (((1.0f - offset) * scale) + 10.0f);
|
||||
this->unk_160 += ((2.0f - this->unk_160) * 0.1f);
|
||||
if (this->timer < 16) {
|
||||
if (1) {}
|
||||
this->alpha = ((this->timer * 0x23) - 0x118);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (this->timer >= 9) {
|
||||
if (this->unk_164 < 1.0f) {
|
||||
this->unk_164 += 0.25f;
|
||||
}
|
||||
} else {
|
||||
if (this->unk_164 > 0.0f) {
|
||||
this->unk_164 -= 0.125f;
|
||||
}
|
||||
}
|
||||
|
||||
if (this->timer < 8) {
|
||||
this->alpha = 0;
|
||||
}
|
||||
|
||||
if (this->timer == 0) {
|
||||
this->timer = 255;
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowLight_Fly(ArrowLight* this, GlobalContext* globalCtx) {
|
||||
EnArrow* arrow;
|
||||
f32 distanceScaled;
|
||||
s32 pad;
|
||||
|
||||
arrow = this->actor.attachedA;
|
||||
if ((arrow == NULL) || (arrow->actor.update == NULL)) {
|
||||
Actor_Kill(&this->actor);
|
||||
return;
|
||||
}
|
||||
// copy position and rotation from the attached arrow
|
||||
this->actor.posRot.pos = arrow->actor.posRot.pos;
|
||||
this->actor.shape.rot = arrow->actor.shape.rot;
|
||||
distanceScaled = Math_Vec3f_DistXYZ(&this->unkPos, &this->actor.posRot.pos) * (1.0f / 24.0f);
|
||||
this->unk_160 = distanceScaled;
|
||||
if (distanceScaled < 1.0f) {
|
||||
this->unk_160 = 1.0f;
|
||||
}
|
||||
func_80869E6C(&this->unkPos, &this->actor.posRot.pos, 0.05f);
|
||||
|
||||
if (arrow->hitWall & 1) {
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_IT_EXPLOSION_LIGHT);
|
||||
ArrowLight_SetupAction(this, ArrowLight_Hit);
|
||||
this->timer = 32;
|
||||
this->alpha = 0xFF;
|
||||
} else if (arrow->timer < 34) {
|
||||
if (this->alpha < 0x23) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
this->alpha -= 0x19;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowLight_Update(ArrowLight* this, GlobalContext* globalCtx) {
|
||||
if (globalCtx->msgCtx.msgMode == 0xD || globalCtx->msgCtx.msgMode == 0x11) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
this->actionFunc(this, globalCtx);
|
||||
}
|
||||
}
|
||||
|
||||
void ArrowLight_Draw(ArrowLight* this, GlobalContext* globalCtx) {
|
||||
s32 pad1;
|
||||
s32 pad2;
|
||||
u32 stateFrames;
|
||||
GraphicsContext* gfxCtx;
|
||||
Actor* tranform;
|
||||
EnArrow* arrow;
|
||||
Gfx* gfxArr[4];
|
||||
|
||||
stateFrames = globalCtx->state.frames;
|
||||
arrow = this->actor.attachedA;
|
||||
if (1) {}
|
||||
|
||||
if ((arrow != NULL) && (arrow->actor.update != NULL) && (this->timer < 255)) {
|
||||
if (1) {}
|
||||
tranform = (arrow->hitWall & 2) ? &this->actor : &arrow->actor;
|
||||
// clang-format off
|
||||
gfxCtx = globalCtx->state.gfxCtx; func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_light.c", 598);
|
||||
// clang-format on
|
||||
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_RotateX(tranform->shape.rot.x * (M_PI / 32768), MTXMODE_APPLY);
|
||||
Matrix_RotateZ(tranform->shape.rot.z * (M_PI / 32768), MTXMODE_APPLY);
|
||||
Matrix_Scale(0.01f, 0.01f, 0.01f, MTXMODE_APPLY);
|
||||
|
||||
// Draw yellow effect over the screen when arrow hits
|
||||
if (this->unk_164 > 0) {
|
||||
gfxCtx->polyXlu.p = func_800937C0(gfxCtx->polyXlu.p);
|
||||
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);
|
||||
gDPSetAlphaDither(gfxCtx->polyXlu.p++, G_AD_DISABLE);
|
||||
gDPSetColorDither(gfxCtx->polyXlu.p++, G_CD_DISABLE);
|
||||
gDPFillRectangle(gfxCtx->polyXlu.p++, 0, 0, SCREEN_WIDTH - 1, SCREEN_HEIGHT - 1);
|
||||
}
|
||||
|
||||
// Draw light on the arrow
|
||||
func_80093D84(globalCtx->state.gfxCtx);
|
||||
gDPSetPrimColor(gfxCtx->polyXlu.p++, 0x80, 0x80, 0xFF, 0xFF, 0xAA, this->alpha);
|
||||
gDPSetEnvColor(gfxCtx->polyXlu.p++, 0xFF, 0xFF, 0x00, 0x80);
|
||||
Matrix_RotateZYX(0x4000, 0x0, 0x0, MTXMODE_APPLY);
|
||||
if (this->timer != 0) {
|
||||
Matrix_Translate(0.0f, 0.0f, 0.0f, MTXMODE_APPLY);
|
||||
} else {
|
||||
Matrix_Translate(0.0f, 1500.0f, 0.0f, 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);
|
||||
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_arrow_light.c", 648),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, textureDL);
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++,
|
||||
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 511 - (stateFrames * 5) % 512, 0, 4, 32, 1,
|
||||
511 - (stateFrames * 10) % 512, 511 - (stateFrames * 30) % 512, 8, 16));
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, vertexDL);
|
||||
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_arrow_light.c", 664);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,13 @@
|
|||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x20];
|
||||
/* 0x014C */ s16 radius;
|
||||
/* 0x014E */ u16 timer;
|
||||
/* 0x0150 */ u8 alpha;
|
||||
/* 0x0154 */ Vec3f unkPos;
|
||||
/* 0x0160 */ f32 unk_160;
|
||||
/* 0x0164 */ f32 unk_164;
|
||||
/* 0x0168 */ ActorFunc actionFunc;
|
||||
} ArrowLight; // size = 0x016C
|
||||
|
||||
extern const ActorInit Arrow_Light_InitVars;
|
||||
|
|
192
src/overlays/actors/ovl_Arrow_Light/z_arrow_light_gfx.c
Normal file
192
src/overlays/actors/ovl_Arrow_Light/z_arrow_light_gfx.c
Normal file
|
@ -0,0 +1,192 @@
|
|||
#include "z_arrow_light.h"
|
||||
|
||||
static UNK_TYPE texture1[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000001, 0x00000000, 0x00000102, 0x01000001, 0x00000000, 0x00000000, 0x00010000, 0x00000000,
|
||||
0x00000001, 0x00000000, 0x00000204, 0x02000101, 0x00000000, 0x00000000, 0x00010101, 0x00000001, 0x00000001,
|
||||
0x00000000, 0x00000307, 0x03010102, 0x00000000, 0x00000000, 0x01010102, 0x00000002, 0x01010001, 0x00000000,
|
||||
0x00010509, 0x04010103, 0x01000000, 0x00000000, 0x01020202, 0x00000104, 0x03020101, 0x00000000, 0x0001060C,
|
||||
0x06010103, 0x01000000, 0x00000000, 0x02020202, 0x00000206, 0x05040101, 0x00000000, 0x0001080F, 0x07010103,
|
||||
0x01000001, 0x00000000, 0x03030202, 0x00010408, 0x07060201, 0x00000000, 0x00010911, 0x08010103, 0x01000001,
|
||||
0x00000001, 0x04040303, 0x0101050B, 0x0A080301, 0x00000000, 0x00020B14, 0x0A010103, 0x01000001, 0x00010102,
|
||||
0x06060403, 0x0203070D, 0x0C0A0401, 0x00000000, 0x00030D17, 0x0B020103, 0x01010001, 0x00010205, 0x09080503,
|
||||
0x0205090E, 0x0E0D0501, 0x00000000, 0x01050F18, 0x0C020102, 0x01010001, 0x00010408, 0x0D0B0502, 0x03070B0F,
|
||||
0x0F0F0601, 0x00000000, 0x02081219, 0x0D030102, 0x00010001, 0x0001050B, 0x130F0702, 0x04080B0F, 0x10110801,
|
||||
0x00000000, 0x030C1419, 0x0E040101, 0x00010001, 0x0001070F, 0x19140A03, 0x05090B0E, 0x10130A02, 0x00000001,
|
||||
0x05121719, 0x0E040100, 0x00010102, 0x01020A13, 0x1F1A0F06, 0x06090A0C, 0x10150B03, 0x01000001, 0x08181B19,
|
||||
0x0F050201, 0x01020102, 0x02040D18, 0x2721140A, 0x080A0A0C, 0x11160D04, 0x02020001, 0x0B1E1E19, 0x10070403,
|
||||
0x02030202, 0x0408111D, 0x2F2A1B0F, 0x0A0B0B0D, 0x12180F06, 0x04040101, 0x0E242119, 0x11090606, 0x04040304,
|
||||
0x070C1623, 0x38322214, 0x0E0D0E10, 0x141A1108, 0x06060102, 0x112A241A, 0x120B0909, 0x06050507, 0x0B111C29,
|
||||
0x413B291B, 0x13101216, 0x181B1209, 0x08080304, 0x152F271B, 0x140E0C0C, 0x0907080B, 0x10172230, 0x4A433223,
|
||||
0x1813161D, 0x1D1E140B, 0x0A0A0608, 0x1A342B1E, 0x17110F0F, 0x0C0B0D11, 0x171F2A38, 0x534C3B2B, 0x1E161C25,
|
||||
0x2221160D, 0x0B0C0A0E, 0x21393023, 0x1B151211, 0x0F0F1217, 0x1E273240, 0x5C564534, 0x251B242F, 0x2924190F,
|
||||
0x0E0E0F17, 0x293E372B, 0x21181513, 0x1113181E, 0x26303B48, 0x655F4E3E, 0x2D222D3A, 0x30271C13, 0x11111520,
|
||||
0x32453F35, 0x281D1714, 0x14181E25, 0x2F3A4551, 0x6F695746, 0x362B3744, 0x372A1F17, 0x15151D2A, 0x3D4D483F,
|
||||
0x31231A14, 0x171E252E, 0x38444F5B, 0x7974614F, 0x4036404C, 0x3C2D231D, 0x1A1A2637, 0x4957524A, 0x3A2A1D15,
|
||||
0x1A252E37, 0x43505B66, 0x837F6C59, 0x4A414750, 0x3F2E2723, 0x21213245, 0x57625D54, 0x43312216, 0x1F2D3741,
|
||||
0x4D5B6671, 0x8E8B7662, 0x544B4D51, 0x3F302C2C, 0x2B2D4054, 0x656D675E, 0x4C3A281A, 0x2536414B, 0x5867717B,
|
||||
0x9896816C, 0x5E545150, 0x3F323337, 0x383C5063, 0x71777168, 0x56432F21, 0x2C3F4B56, 0x63727C86, 0xA2A08B76,
|
||||
0x685D5651, 0x3F343A43, 0x484D5F70, 0x7D827B71, 0x5F4C3829, 0x34465462, 0x6F7C8690, 0xACA99581, 0x72655B53,
|
||||
0x42394450, 0x585E6D7C, 0x878C8479, 0x68574334, 0x3D4E5E6E, 0x7B88919A, 0xB4B09E8C, 0x7C6E6155, 0x46414F5F,
|
||||
0x676E7B87, 0x92958C80, 0x71625041, 0x4857697A, 0x86929BA3, 0xBBB7A796, 0x86776658, 0x4D4B5C6E, 0x777D8791,
|
||||
0x9C9F9487, 0x7A6D5C4F, 0x54617486, 0x919CA4AB, 0xC2BBAFA1, 0x907F6C5D, 0x55576A7E, 0x8589929A, 0xA5A99D90,
|
||||
0x8478695E, 0x5F697F93, 0x9DA6ACB2, 0xC8BFB6AC, 0x9A877465, 0x6064788D, 0x92949BA1, 0xADB2A89C, 0x8F83766C,
|
||||
0x6A718AA1, 0xA9AFB2B8, 0xCEC3BDB6, 0xA4907E70, 0x6C72879B, 0x9C9CA2A8, 0xB5BBB3A9, 0x9B8E8279, 0x737693AE,
|
||||
0xB4B6B9BE, 0xD5C9C5BF, 0xAF9C8B7E, 0x7A8094A5, 0xA4A0A7B0, 0xBDC5C0B7, 0xA8998E85, 0x7B7B9AB7, 0xBDBEC0C5,
|
||||
0xDBCFCCC8, 0xBAA9998E, 0x898E9FAD, 0xA8A1ACB8, 0xC6CECCC5, 0xB6A4988F, 0x8381A0BE, 0xC4C6C8CD, 0xE0D4D3D1,
|
||||
0xC5B7A89D, 0x989CA8B3, 0xABA2B0C0, 0xCED8D8D2, 0xC2AEA298, 0x8C89A6C3, 0xCACED1D5, 0xE5DBDAD8, 0xD0C4B6AB,
|
||||
0xA6A8B1B8, 0xAEA4B5C7, 0xD6E0E3DE, 0xCDB7ABA2, 0x9590ACC9, 0xD0D5D9DC, 0xEBE1E0DE, 0xDAD1C4B9, 0xB2B2B8BC,
|
||||
0xB1A7B9CE, 0xDEE8ECE8, 0xD6BDB3AC, 0x9E98B3CE, 0xD6DBE0E3, 0xF0E9E6E3, 0xE3DDD2C6, 0xBCBABEC0, 0xB4AABED5,
|
||||
0xE5EFF3F0, 0xDDC2BBB6, 0xA79FB9D4, 0xDCE2E7E9, 0xF5F0ECE7, 0xEAE8DED2, 0xC6C1C2C3, 0xB7ADC4DD, 0xEBF3F8F5,
|
||||
0xE1C6C2C1, 0xB1A7BFD8, 0xE1E7EDF0, 0xF9F5F1EB, 0xF0F0E9DD, 0xCFC7C7C6, 0xBBB1CBE5, 0xF0F5FBF7, 0xE3CACACC,
|
||||
0xBBB0C5DC, 0xE5ECF4F6, 0xFCF9F5EE, 0xF5F7F0E7, 0xD7CDCCCB, 0xBFB7D2EB, 0xF4F7FBF6, 0xE4CDD2D6, 0xC6B9CBE0,
|
||||
0xE9F1F9FB, 0xFDFCF8F2, 0xF9FAF6EE, 0xDFD5D3D0, 0xC5BDD9F0, 0xF7F9FBF4, 0xE5D0D9E0, 0xD1C2D2E4, 0xEDF5FCFE,
|
||||
0xFEFDFAF4, 0xFBFCF9F3, 0xE6DDDAD7, 0xCBC3DEF4, 0xFAFBFCF3, 0xE5D3DEE8, 0xDBCDDAE9, 0xF2F8FEFF, 0xFEFDFCF6,
|
||||
0xFCFDFCF7, 0xECE4E2DF, 0xD2C9E3F7, 0xFCFDFBF3, 0xE5D6E4EF, 0xE3D6E1EE, 0xF6FAFEFF, 0xFEFDFDF8, 0xFCFDFDFA,
|
||||
0xF1EAE9E7, 0xD9CFE7F9, 0xFEFEFBF3, 0xE7DBE9F4, 0xEBDFE8F3, 0xF9FCFFFF, 0xFEFDFDFA, 0xFDFDFEFC, 0xF5EFEFEE,
|
||||
0xE0D5ECFB, 0xFFFEFBF3, 0xE9E1EEF8, 0xF0E6EEF6, 0xFCFDFFFF, 0xFEFDFEFC, 0xFEFDFEFE, 0xF8F4F4F3, 0xE7DDF1FD,
|
||||
0xFFFEFBF3, 0xECE7F3FC, 0xF5ECF2F9, 0xFDFEFFFF, 0xFEFDFFFE, 0xFFFDFEFE, 0xFAF7F8F7, 0xEDE5F5FE, 0xFFFEFBF5,
|
||||
0xF0EDF7FD, 0xF9F1F5FA, 0xFEFFFFFF, 0xFEFDFFFF, 0xFFFEFEFF, 0xFCFAFAFA, 0xF2ECF8FE, 0xFFFEFCF7, 0xF4F3FAFE,
|
||||
0xFBF6F8FB, 0xFEFFFFFF, 0xFEFDFFFF, 0xFFFEFEFF, 0xFDFCFCFC, 0xF7F2FBFF, 0xFFFEFCFA, 0xF8F7FCFF, 0xFEFAFBFC,
|
||||
0xFFFFFFFF, 0xFEFEFFFF, 0xFFFFFFFF, 0xFEFDFEFD, 0xFAF7FCFF, 0xFFFEFDFC, 0xFCFBFDFF, 0xFFFDFDFD, 0xFFFFFFFF,
|
||||
0xFFFEFFFF, 0xFFFFFFFF, 0xFFFEFEFE, 0xFCFAFDFF, 0xFFFEFEFE, 0xFEFDFEFF, 0xFFFFFEFD, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFDFCFEFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFE, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFEFEFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF,
|
||||
};
|
||||
|
||||
static UNK_TYPE texture2[] = {
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000001, 0x00000000, 0x00000000, 0x00000001, 0x01000000, 0x00000102, 0x02010000, 0x00000001, 0x01010202,
|
||||
0x00000000, 0x00000000, 0x00000202, 0x02000000, 0x01010205, 0x07050200, 0x00000001, 0x01010304, 0x02010000,
|
||||
0x00000000, 0x00000305, 0x04010001, 0x05030307, 0x0A090401, 0x00000101, 0x01020206, 0x05030200, 0x00000000,
|
||||
0x01010408, 0x08030003, 0x08080607, 0x09090602, 0x01000001, 0x01010104, 0x05060603, 0x02010002, 0x0505060A,
|
||||
0x0C080404, 0x07090707, 0x06050709, 0x07010000, 0x01010101, 0x05080B0A, 0x06020205, 0x090A0A0C, 0x0F0E0A05,
|
||||
0x05080905, 0x05040810, 0x10060000, 0x00010102, 0x050A1113, 0x0E080608, 0x0A0C0D10, 0x1514120D, 0x0E0C0D0B,
|
||||
0x09080B15, 0x190F0402, 0x01000308, 0x0A0F161A, 0x180F0A0A, 0x0A0B0B12, 0x191B2A20, 0x221B1F1B, 0x1815141C,
|
||||
0x22170806, 0x03030611, 0x1A1F201E, 0x1C140E0E, 0x0D0E0F11, 0x181D2F3D, 0x3F333532, 0x2C261F24, 0x2E230F0D,
|
||||
0x0A090E18, 0x242E2D24, 0x1B141010, 0x11161813, 0x1618274A, 0x4E464948, 0x42383030, 0x39311712, 0x16151F24,
|
||||
0x2331362A, 0x1B111013, 0x191D201C, 0x1E273145, 0x4F51565B, 0x584C4140, 0x4A3F1C14, 0x1E202D32, 0x242B3631,
|
||||
0x22140F14, 0x1D23221D, 0x273C4A4E, 0x675F636D, 0x70645452, 0x564C2616, 0x2D363842, 0x38333F3F, 0x35241817,
|
||||
0x242C2A25, 0x2F4F656C, 0x948A7E81, 0x887D6A63, 0x60583B2F, 0x4454575F, 0x5B555C5E, 0x56493E34, 0x39414644,
|
||||
0x49627089, 0xBBBAA89B, 0x9B917A70, 0x67595152, 0x677A8184, 0x857F7A7C, 0x756D6A63, 0x5C5D626E, 0x767F8795,
|
||||
0xC4D1CABB, 0xB5A68C82, 0x7D706B76, 0x8B969DA7, 0xAEA69592, 0x928C8B8A, 0x857D8094, 0xA5AAA8A5, 0xC4CEC9C7,
|
||||
0xC2B69E94, 0x948F8991, 0x9EA4A9B7, 0xBEBDAFA2, 0xA2A49F9A, 0x99959BB7, 0xC9CECAC4, 0xD7CDC8C8, 0xCBC8B6AB,
|
||||
0xAAAAA7A0, 0xA0A2ACBD, 0xC6CCC9BD, 0xB4BAB6A8, 0xA3A3AECF, 0xE3E4E0DE, 0xE6DBD4CE, 0xD0D0C6BA, 0xB6B6B3A7,
|
||||
0x9FA7B4C7, 0xD5D7D8D3, 0xC9C9CDBF, 0xB1B2BED9, 0xF2ECE3E5, 0xECEAE1DA, 0xDBDDD7CB, 0xC2BFBCB4, 0xADB4C4D7,
|
||||
0xE4E7E4DD, 0xD6D6E0DC, 0xC7BABFD4, 0xE9E8DFE2, 0xF0F4EDE8, 0xE6E7E7DD, 0xCFC9CAC9, 0xC8CEDCEA, 0xF3F6F1E7,
|
||||
0xE0DEE3E7, 0xDAC2C3D6, 0xE4E8E3E5, 0xF7FBF8F1, 0xECEAEFEB, 0xDFDCDDE0, 0xE2E4E7EF, 0xF7FCFAF4, 0xEFE9E5E7,
|
||||
0xE2CDC8D7, 0xE5E9EAEE, 0xFDFEFCF7, 0xF1EBEDF0, 0xE9E8EDF1, 0xF3F0EEF0, 0xF5FBFBF8, 0xF7F3E9E2, 0xDDD6D3E1,
|
||||
0xEBEBEBF4, 0xFCFEFEFC, 0xF6F0F1F4, 0xEDEAF3FA, 0xFCF5EBEA, 0xF0F8F8F6, 0xF7F6EEE6, 0xE2E0E4ED, 0xEDE9E1EE,
|
||||
0xFAFFFDFD, 0xFAF7F7F7, 0xF2EFF6FB, 0xFBF2E1DF, 0xEEF8F6F2, 0xF4F6F2EE, 0xEAE7ECF2, 0xEEE6E0E5, 0xF6FCFCFD,
|
||||
0xFDFCFCF9, 0xF2F0F5FA, 0xFAF3DED8, 0xE8F7F7F3, 0xF4F8F7F6, 0xF2EEEEF0, 0xECE5E2E5, 0xF8FBF5F7, 0xFAFBFAF5,
|
||||
0xEBE7F4FC, 0xFAF6E8DD, 0xE8F8FCF8, 0xF8F9FAFA, 0xF9F4EEE9, 0xE4DFE0E9, 0xF9FAF1EE, 0xF2F5F7F5, 0xEBE1EDFB,
|
||||
0xFBFAF5EF, 0xF4FCFEFD, 0xFBF8F8FB, 0xFBF7F2EA, 0xE4DCD8E5, 0xF6FBF0EA, 0xECEFF3F2, 0xEDE5EAF9, 0xFDFCFDFC,
|
||||
0xFCFDFDFC, 0xF9F5F7FA, 0xFCF9F6F2, 0xEBE0D6E1, 0xEDF9F5EE, 0xEDEEF0F0, 0xEEEBEFFA, 0xFEFEFFFC, 0xF9F6F8FB,
|
||||
0xFAF7F6FA, 0xFDFDFBFA, 0xF7E8DCDB, 0xECF7F9F4, 0xF3F1F0EF, 0xECECF3FC, 0xFEFEFEF9, 0xF1EDEEF7, 0xFBFAF9FC,
|
||||
0xFEFEFDFC, 0xFBF3DFE0, 0xF0F5FBFA, 0xF7F3F3F4, 0xF1EFF2F8, 0xFAFCFEFA, 0xF1EAE7F0, 0xFAFEFDFE, 0xFFFEFEFD,
|
||||
0xFDFBE7E9, 0xF6FBFDFB, 0xF8F3F2F7, 0xF9F4EFF0, 0xF3F6FBFB, 0xF5EEEDF0, 0xFAFFFFFF, 0xFEFDFDFE, 0xFEFDF7F0,
|
||||
0xF9FDFCFA, 0xF5ECEAF4, 0xFCF8ECE8, 0xEBEFF7FC, 0xF8F6F7F6, 0xF9FCFEFD, 0xFBFAF8FB, 0xFEFFFEF7, 0xF3FAFCF7,
|
||||
0xEFE4E1EA, 0xF7F8EBE1, 0xE4EAEDF5, 0xF6F3F7F8, 0xF7F9FAF9, 0xF5F3F1F0, 0xF4FBFFFA, 0xECEEF6F4, 0xECE1DBE1,
|
||||
0xEFF5EDE0, 0xE0E2E0E6, 0xEDEBEFF2, 0xF3F6F6F5, 0xEEECEDE6, 0xE2EEFEFA, 0xEAE3E6E6, 0xE5E2DEDF, 0xE7EDE7DD,
|
||||
0xDBDDD8DA, 0xE5E6E8ED, 0xEEF2F4EF, 0xE3D9DFE4, 0xDDE2F7FB, 0xF2E5D8D2, 0xD4DDE3DB, 0xD7DCDCD4, 0xCFD1D5DC,
|
||||
0xE6E7E8E8, 0xE5E9EBE3, 0xD1C5CEE0, 0xE2E2F3FD, 0xF8EAD6C2, 0xC1CDDCD7, 0xC5BFC4C1, 0xB7B9CCE7, 0xF0EDE2DD,
|
||||
0xD8D4D7CA, 0xB4AFBFD6, 0xE4EBF2FC, 0xEEEAD8C2, 0xBABECCCF, 0xB9A1A3AA, 0xA6A2B0DB, 0xF0E9D8CE, 0xC6BFBDAE,
|
||||
0x9292ACCC, 0xE0E4E3EB, 0xCFD5CFBF, 0xB3AEB1B6, 0xA68D8A95, 0x9A99A1C2, 0xE3DBC6BA, 0xB4ACA292, 0x757299C0,
|
||||
0xD7D8CBC6, 0xA5B3BAB0, 0xA59A9293, 0x8C7A757E, 0x889198AE, 0xCACAB7A7, 0xA09C9480, 0x63597696, 0xAEC0BEA8,
|
||||
0x8C959F97, 0x89807772, 0x6752536B, 0x79808896, 0xAEB8A894, 0x827E796B, 0x59556374, 0x849EB6A5, 0x918F8D7B,
|
||||
0x6A676A66, 0x53363453, 0x6A6D6E76, 0x8A9D9E90, 0x73625D58, 0x5157605F, 0x5E749CA7, 0x96898163, 0x4E506064,
|
||||
0x4A2A1E36, 0x565D5B5F, 0x697D8D8C, 0x714E4240, 0x44525E59, 0x5161869C, 0x81776D54, 0x3D3A4D5A, 0x46281B22,
|
||||
0x363E424A, 0x545D6E7B, 0x714F3630, 0x313E4E4C, 0x44537384, 0x625B4E3E, 0x2E293646, 0x37201C20, 0x1E1D1F2D,
|
||||
0x3E454A59, 0x5F4D2D20, 0x2229363E, 0x3B4A6A70, 0x453C3329, 0x211F2835, 0x2A1A1B20, 0x1307050F, 0x242C2933,
|
||||
0x43442C18, 0x15151C2A, 0x3140655C, 0x251B1F1B, 0x15161F27, 0x261D1C20, 0x15040005, 0x141E1516, 0x26312716,
|
||||
0x0E0C0D19, 0x28385556, 0x170D1511, 0x0A0B141E, 0x2222201F, 0x170B0403, 0x0D190F0B, 0x151F1B10, 0x0B08050C,
|
||||
0x17264546, 0x130C140C, 0x03030C12, 0x13181F1C, 0x16100A07, 0x090E0F09, 0x11160F08, 0x0C0F0A09, 0x0F1B2E32,
|
||||
0x12171D11, 0x0301070D, 0x0B0D1414, 0x110F110F, 0x0A07070A, 0x11150B04, 0x0C15130F, 0x0E0E1B23, 0x10172113,
|
||||
0x0401050C, 0x0E09090B, 0x09090E13, 0x10090505, 0x0D120C04, 0x07141911, 0x0C0A1016, 0x09101811, 0x05020308,
|
||||
0x0D090606, 0x0504060C, 0x110F0903, 0x060B0804, 0x030A100D, 0x0A090B0C, 0x05060A06, 0x01010204, 0x07080403,
|
||||
0x02010307, 0x0A0D0B04, 0x02020302, 0x02030606, 0x04040708, 0x02020200, 0x00000201, 0x02030200, 0x00000102,
|
||||
0x05060704, 0x01000001, 0x01020201, 0x00010406, 0x01000201, 0x00000000, 0x00000000, 0x00000001, 0x02020202,
|
||||
0x01000000, 0x00000101, 0x00000102, 0x00000100, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000100, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
};
|
||||
|
||||
static UNK_TYPE vertices1[] = {
|
||||
0x00420271, 0xFFBE0000, 0x060006C2, 0x3E52C2FF, 0x000002BC, 0x00000000, 0x07000800, 0x007800FF, 0x005D0271,
|
||||
0x00000000, 0x080006C2, 0x575200FF, 0x00BD01DB, 0xFFB20000, 0x07000419, 0x5E3FD9FF, 0x00BD01DB, 0x004E0000,
|
||||
0x09000419, 0x5E3F27FF, 0x01AF001B, 0x00000000, 0x08000005, 0x6B3500FF, 0x0131001B, 0x01310000, 0x0A000005,
|
||||
0x4C354CFF, 0x000002BC, 0x00000000, 0x09000800, 0x007800FF, 0x00420271, 0x00420000, 0x0A0006C2, 0x3E523EFF,
|
||||
0x004E01DB, 0x00BD0000, 0x0B000419, 0x273F5EFF, 0x0000001B, 0x01AF0000, 0x0C000005, 0x00356BFF, 0x000002BC,
|
||||
0x00000000, 0x0B000800, 0x007800FF, 0x00000271, 0x005D0000, 0x0C0006C2, 0x005257FF, 0xFFB201DB, 0x00BD0000,
|
||||
0x0D000419, 0xD93F5EFF, 0xFECF001B, 0x01310000, 0x0E000005, 0xB4354CFF, 0x000002BC, 0x00000000, 0x0D000800,
|
||||
0x007800FF, 0xFFBE0271, 0x00420000, 0x0E0006C2, 0xC2523EFF, 0xFF4301DB, 0x004E0000, 0x0F000419, 0xA23F27FF,
|
||||
0xFE51001B, 0x00000000, 0x10000005, 0x953500FF, 0xFFA30271, 0x00000000, 0x100006C2, 0xA95200FF, 0xFF4301DB,
|
||||
0xFFB20000, 0x11000419, 0xA23FD9FF, 0xFE51001B, 0x00000000, 0x00000005, 0x953500FF, 0xFF4301DB, 0xFFB20000,
|
||||
0x01000419, 0xA23FD9FF, 0xFECF001B, 0xFECF0000, 0x02000005, 0xB435B4FF, 0xFFA30271, 0x00000000, 0x000006C2,
|
||||
0xA95200FF, 0x000002BC, 0x00000000, 0x01000800, 0x007800FF, 0xFFBE0271, 0xFFBE0000, 0x020006C2, 0xC252C2FF,
|
||||
0xFFB201DB, 0xFF430000, 0x03000419, 0xD93FA2FF, 0x0000001B, 0xFE510000, 0x04000005, 0x003595FF, 0x000002BC,
|
||||
0x00000000, 0x03000800, 0x007800FF, 0x00000271, 0xFFA30000, 0x040006C2, 0x0052A9FF, 0x004E01DB, 0xFF430000,
|
||||
0x05000419, 0x273FA2FF,
|
||||
};
|
||||
|
||||
static UNK_TYPE vertices2[] = {
|
||||
0x0000001B, 0xFE510000, 0x04000005, 0x003595FF, 0x004E01DB, 0xFF430000, 0x05000419, 0x273FA2FF, 0x0131001B,
|
||||
0xFECF0000, 0x06000005, 0x4C35B4FF, 0x00000271, 0xFFA30000, 0x040006C2, 0x0052A9FF, 0x000002BC, 0x00000000,
|
||||
0x05000800, 0x007800FF, 0x00420271, 0xFFBE0000, 0x060006C2, 0x3E52C2FF, 0x00BD01DB, 0xFFB20000, 0x07000419,
|
||||
0x5E3FD9FF, 0x01AF001B, 0x00000000, 0x08000005, 0x6B3500FF, 0xFFBE0271, 0x00420000, 0x060006C2, 0xC2523EFF,
|
||||
0x000002BC, 0x00000000, 0x07000800, 0x007800FF, 0xFFA30271, 0x00000000, 0x080006C2, 0xA95200FF,
|
||||
};
|
||||
|
||||
static Gfx textureDL[] = {
|
||||
gsDPPipeSync(),
|
||||
gsDPSetTextureLUT(G_TT_NONE),
|
||||
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
|
||||
gsDPLoadTextureBlock(texture1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_MIRROR | G_TX_WRAP, 5, 6, 13, 15),
|
||||
gsDPLoadMultiBlock(texture2, 0x0100, 1, G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_MIRROR | G_TX_WRAP, 5, 6, 14, 14),
|
||||
gsDPSetCombineLERP(TEXEL1, PRIMITIVE, ENV_ALPHA, TEXEL0, TEXEL1, 1, ENVIRONMENT, TEXEL0, PRIMITIVE, ENVIRONMENT,
|
||||
COMBINED, ENVIRONMENT, COMBINED, 0, PRIMITIVE, 0),
|
||||
gsDPSetRenderMode(Z_CMP | IM_RD | CVG_DST_SAVE | ZMODE_XLU | FORCE_BL |
|
||||
GBL_c1(G_BL_CLR_IN, G_BL_0, G_BL_CLR_IN, G_BL_1),
|
||||
G_RM_ZB_CLD_SURF2),
|
||||
gsSPClearGeometryMode(G_CULL_BACK | G_FOG | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR),
|
||||
gsSPSetGeometryMode(G_LIGHTING),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
||||
|
||||
static Gfx vertexDL[] = {
|
||||
gsSPVertex(vertices1, 32, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0),
|
||||
gsSP2Triangles(3, 2, 4, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(5, 4, 6, 0, 2, 7, 8, 0),
|
||||
gsSP2Triangles(2, 8, 4, 0, 4, 8, 9, 0),
|
||||
gsSP2Triangles(4, 9, 6, 0, 6, 9, 10, 0),
|
||||
gsSP2Triangles(8, 11, 12, 0, 8, 12, 9, 0),
|
||||
gsSP2Triangles(9, 12, 13, 0, 9, 13, 10, 0),
|
||||
gsSP2Triangles(10, 13, 14, 0, 12, 15, 16, 0),
|
||||
gsSP2Triangles(12, 16, 13, 0, 13, 16, 17, 0),
|
||||
gsSP2Triangles(13, 17, 14, 0, 14, 17, 18, 0),
|
||||
gsSP2Triangles(16, 19, 17, 0, 17, 19, 20, 0),
|
||||
gsSP2Triangles(17, 20, 18, 0, 21, 22, 23, 0),
|
||||
gsSP2Triangles(24, 25, 26, 0, 24, 26, 22, 0),
|
||||
gsSP2Triangles(22, 26, 27, 0, 22, 27, 23, 0),
|
||||
gsSP2Triangles(23, 27, 28, 0, 26, 29, 30, 0),
|
||||
gsSP2Triangles(26, 30, 27, 0, 27, 30, 31, 0),
|
||||
gsSP1Triangle(27, 31, 28, 0),
|
||||
gsSPVertex(vertices2, 11, 0),
|
||||
gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0),
|
||||
gsSP2Triangles(3, 5, 1, 0, 1, 5, 6, 0),
|
||||
gsSP2Triangles(1, 6, 2, 0, 2, 6, 7, 0),
|
||||
gsSP1Triangle(8, 9, 10, 0),
|
||||
gsSPEndDisplayList(),
|
||||
};
|
|
@ -532,7 +532,7 @@ static void func_8086DF58(BgBdanSwitch* this, GlobalContext* globalCtx, UNK_TYPE
|
|||
func_800D1694(this->actor.posRot.pos.x, this->actor.posRot.pos.y + (this->actor.shape.unk_08 * this->unk_1D0),
|
||||
this->actor.posRot.pos.z, &this->actor.shape.rot);
|
||||
Matrix_Scale(this->unk_1D4, this->unk_1D0, this->unk_1D4, MTXMODE_APPLY);
|
||||
Draw_DListOpa(globalCtx, arg2);
|
||||
Gfx_DrawDListOpa(globalCtx, arg2);
|
||||
}
|
||||
|
||||
static void BgBdanSwitch_Draw(BgBdanSwitch* this, GlobalContext* globalCtx) {
|
||||
|
|
|
@ -1,14 +1,22 @@
|
|||
/*
|
||||
* File: z_bg_gjyo_bridge.c
|
||||
* Overlay: ovl_Bg_Gjyo_Bridge
|
||||
* Description: Rainbow Bridge outside Ganon's Castle
|
||||
*/
|
||||
|
||||
#include "z_bg_gjyo_bridge.h"
|
||||
|
||||
#define ROOM 0x00
|
||||
#define FLAGS 0x00000000
|
||||
|
||||
void BgGjyoBridge_Init(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
void BgGjyoBridge_Destroy(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
void BgGjyoBridge_Update(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
void BgGjyoBridge_Draw(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
static void BgGjyoBridge_Init(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
static void BgGjyoBridge_Destroy(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
static void BgGjyoBridge_Update(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
static void BgGjyoBridge_Draw(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
static void func_808787A4(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
static void BgGjyoBridge_TriggerCutscene(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
static void BgGjyoBridge_SpawnBridge(BgGjyoBridge* this, GlobalContext* globalCtx);
|
||||
|
||||
/*
|
||||
const ActorInit Bg_Gjyo_Bridge_InitVars = {
|
||||
ACTOR_BG_GJYO_BRIDGE,
|
||||
ACTORTYPE_PROP,
|
||||
|
@ -21,17 +29,96 @@ const ActorInit Bg_Gjyo_Bridge_InitVars = {
|
|||
(ActorFunc)BgGjyoBridge_Update,
|
||||
(ActorFunc)BgGjyoBridge_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Gjyo_Bridge/BgGjyoBridge_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Gjyo_Bridge/BgGjyoBridge_Destroy.s")
|
||||
InitChainEntry initChain[] = {
|
||||
ICHAIN_F32(unk_F8, 800, ICHAIN_CONTINUE),
|
||||
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
|
||||
};
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Gjyo_Bridge/func_808787A4.s")
|
||||
extern UNK_TYPE D_06000600;
|
||||
extern UNK_TYPE D_06000DB8;
|
||||
extern UNK_TYPE D_02002640;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Gjyo_Bridge/func_808787B0.s")
|
||||
void BgGjyoBridge_Init(BgGjyoBridge* this, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
DynaCollisionContext* dynaCollisionContext;
|
||||
s32 local_c;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Gjyo_Bridge/func_80878904.s")
|
||||
local_c = 0;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Gjyo_Bridge/BgGjyoBridge_Update.s")
|
||||
Actor_ProcessInitChain(&this->dyna, &initChain);
|
||||
DynaPolyInfo_SetActorMove(this, 0);
|
||||
DynaPolyInfo_Alloc(&D_06000DB8, &local_c);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_Bg_Gjyo_Bridge/BgGjyoBridge_Draw.s")
|
||||
dynaCollisionContext = &globalCtx->colCtx.dyna;
|
||||
|
||||
this->dyna.dynaPolyId = DynaPolyInfo_RegisterActor(globalCtx, dynaCollisionContext, this, local_c);
|
||||
|
||||
if (gSaveContext.event_chk_inf[4] & 0x2000) {
|
||||
this->actionFunc = func_808787A4;
|
||||
} else {
|
||||
this->dyna.actor.draw = NULL;
|
||||
func_8003EBF8(globalCtx, dynaCollisionContext, this->dyna.dynaPolyId);
|
||||
this->actionFunc = BgGjyoBridge_TriggerCutscene;
|
||||
}
|
||||
}
|
||||
|
||||
void BgGjyoBridge_Destroy(BgGjyoBridge* this, GlobalContext* globalCtx) {
|
||||
DynaPolyInfo_Free(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
|
||||
}
|
||||
|
||||
void func_808787A4(BgGjyoBridge* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
void BgGjyoBridge_TriggerCutscene(BgGjyoBridge* this, GlobalContext* globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
|
||||
if ((gBitFlags[3] & gSaveContext.quest_items) && (gBitFlags[4] & gSaveContext.quest_items) &&
|
||||
(INV_CONTENT(ITEM_ARROW_LIGHT) == ITEM_ARROW_LIGHT) && (player->actor.posRot.pos.x > -70.0f) &&
|
||||
(player->actor.posRot.pos.x < 300.0f) && (player->actor.posRot.pos.y > 1340.0f) &&
|
||||
(player->actor.posRot.pos.z > 1340.0f) && (player->actor.posRot.pos.z < 1662.0f) &&
|
||||
(func_800BFC84(globalCtx) == 0)) {
|
||||
globalCtx->csCtx.segment = SEGMENTED_TO_VIRTUAL(&D_02002640);
|
||||
gSaveContext.cutscene_trigger = 1;
|
||||
this->actionFunc = BgGjyoBridge_SpawnBridge;
|
||||
}
|
||||
}
|
||||
|
||||
void BgGjyoBridge_SpawnBridge(BgGjyoBridge* this, GlobalContext* globalCtx) {
|
||||
if ((globalCtx->csCtx.state != 0) && (globalCtx->csCtx.actorActions[2] != NULL) &&
|
||||
(globalCtx->csCtx.actorActions[2]->action == 2)) {
|
||||
this->dyna.actor.draw = &BgGjyoBridge_Draw;
|
||||
func_8003EC50(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
|
||||
gSaveContext.event_chk_inf[4] |= 0x2000;
|
||||
}
|
||||
}
|
||||
|
||||
void BgGjyoBridge_Update(BgGjyoBridge* this, GlobalContext* globalCtx) {
|
||||
this->actionFunc(&this->dyna.actor, globalCtx);
|
||||
}
|
||||
|
||||
void BgGjyoBridge_Draw(BgGjyoBridge* this, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
GraphicsContext* gfxCtx;
|
||||
Gfx* gfxArr[4];
|
||||
|
||||
gfxCtx = globalCtx->state.gfxCtx;
|
||||
|
||||
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_bg_gjyo_bridge.c", 260);
|
||||
func_80093D84(globalCtx->state.gfxCtx);
|
||||
|
||||
gSPSegment(gfxCtx->polyXlu.p++, 8,
|
||||
Gfx_TexScroll(globalCtx->state.gfxCtx, globalCtx->gameplayFrames & 127,
|
||||
globalCtx->gameplayFrames * -3 & 127, 32, 32));
|
||||
|
||||
gSPSegment(gfxCtx->polyXlu.p++, 9,
|
||||
Gfx_TwoTexScroll(globalCtx->state.gfxCtx, 0, 0, -globalCtx->gameplayFrames & 127, 32, 32, 1, 0,
|
||||
globalCtx->gameplayFrames & 127, 32, 32));
|
||||
|
||||
gSPMatrix(gfxCtx->polyXlu.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_gjyo_bridge.c", 281),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, &D_06000600);
|
||||
|
||||
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_bg_gjyo_bridge.c", 285);
|
||||
}
|
||||
|
|
|
@ -5,8 +5,8 @@
|
|||
#include <global.h>
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x1C];
|
||||
/* 0x0000 */ DynaPolyActor dyna;
|
||||
/* 0x0164 */ ActorFunc actionFunc;
|
||||
} BgGjyoBridge; // size = 0x0168
|
||||
|
||||
extern const ActorInit Bg_Gjyo_Bridge_InitVars;
|
||||
|
|
|
@ -55,8 +55,8 @@ static void Draw(ActorGndNisekabe* this, GlobalContext* globalCtx) {
|
|||
u32 index = this->actor.params & 0xFF;
|
||||
|
||||
if ((this->actor.flags & 0x80) == 0x80) {
|
||||
Draw_DListXlu(globalCtx, segmentAddr[index]);
|
||||
Gfx_DrawDListXlu(globalCtx, segmentAddr[index]);
|
||||
} else {
|
||||
Draw_DListOpa(globalCtx, segmentAddr[index]);
|
||||
Gfx_DrawDListOpa(globalCtx, segmentAddr[index]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -114,12 +114,12 @@ static void func_8087DC94(BgHakaMegane* this, GlobalContext* globalCtx) {
|
|||
Actor* thisx = &this->dyna.actor;
|
||||
|
||||
if ((thisx->flags & 0x80) == 0x80) {
|
||||
Draw_DListXlu(globalCtx, dlists[thisx->params]);
|
||||
Gfx_DrawDListXlu(globalCtx, dlists[thisx->params]);
|
||||
} else {
|
||||
Draw_DListOpa(globalCtx, dlists[thisx->params]);
|
||||
Gfx_DrawDListOpa(globalCtx, dlists[thisx->params]);
|
||||
}
|
||||
|
||||
if (thisx->params == 0) {
|
||||
Draw_DListXlu(globalCtx, &D_06001250);
|
||||
Gfx_DrawDListXlu(globalCtx, &D_06001250);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -146,5 +146,5 @@ static void BgHidanFslift_Update(BgHidanFslift* this, GlobalContext* globalCtx)
|
|||
}
|
||||
|
||||
static void BgHidanFslift_Draw(BgHidanFslift* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_0600B630);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_0600B630);
|
||||
}
|
||||
|
|
|
@ -136,5 +136,5 @@ static void Update(ActorHidanSyoku* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void Draw(ActorHidanSyoku* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_0600A7E0);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_0600A7E0);
|
||||
}
|
||||
|
|
|
@ -131,5 +131,5 @@ static void BgJyaAmishutter_Update(BgJyaAmishutter* this, GlobalContext* globalC
|
|||
}
|
||||
|
||||
static void BgJyaAmishutter_Draw(BgJyaAmishutter* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_0600C0A0);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_0600C0A0);
|
||||
}
|
||||
|
|
|
@ -111,10 +111,10 @@ static void func_80899950(BgJyaKanaami* this, GlobalContext* globalCtx) {
|
|||
if (Math_ApproxUpdateScaledS(&this->actor.posRot.rot.x, 0x4000, this->unk_168)) {
|
||||
func_80899A08(this);
|
||||
Audio_PlayActorSound2(&this->actor, NA_SE_EV_TRAP_BOUND);
|
||||
var = func_80092F88(globalCtx->cameraCtx.activeCameraPtrs[globalCtx->cameraCtx.unk_5C0], 3);
|
||||
func_80092DAC(var, 25000);
|
||||
func_80092E70(var, 2, 0, 0, 0);
|
||||
func_80092DF0(var, 0x10);
|
||||
var = Quake_Add(globalCtx->cameraCtx.activeCameraPtrs[globalCtx->cameraCtx.unk_5C0], 3);
|
||||
Quake_SetSpeed(var, 25000);
|
||||
Quake_SetQuakeValues(var, 2, 0, 0, 0);
|
||||
Quake_SetCountdown(var, 0x10);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -131,5 +131,5 @@ static void BgJyaKanaami_Update(BgJyaKanaami* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void BgJyaKanaami_Draw(BgJyaKanaami* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_0600F000);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_0600F000);
|
||||
}
|
||||
|
|
|
@ -63,5 +63,5 @@ static void Update(ActorMenkuriKaiten* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void Draw(ActorMenkuriKaiten* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_060038D0);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_060038D0);
|
||||
}
|
||||
|
|
|
@ -53,8 +53,8 @@ static void Draw(BgMenkuriNisekabe* this, GlobalContext* globalCtx) {
|
|||
u32 index = this->actor.params & 0xFF;
|
||||
|
||||
if ((this->actor.flags & 0x80) == 0x80) {
|
||||
Draw_DListXlu(globalCtx, segmentAddr[index]);
|
||||
Gfx_DrawDListXlu(globalCtx, segmentAddr[index]);
|
||||
} else {
|
||||
Draw_DListOpa(globalCtx, segmentAddr[index]);
|
||||
Gfx_DrawDListOpa(globalCtx, segmentAddr[index]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -76,8 +76,8 @@ static void Update(ActorSpot00Break* this, GlobalContext* globalCtx) {
|
|||
|
||||
static void Draw(ActorSpot00Break* this, GlobalContext* globalCtx) {
|
||||
if (this->actor.params == 1) {
|
||||
Draw_DListOpa(globalCtx, &D_06000980);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_06000980);
|
||||
} else {
|
||||
Draw_DListOpa(globalCtx, &D_06000440);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_06000440);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -169,7 +169,7 @@ static void BgSpot09Obj_Draw(BgSpot09Obj* this, GlobalContext* globalCtx) {
|
|||
GraphicsContext* gfxCtx;
|
||||
Gfx* gfxArr[3];
|
||||
|
||||
Draw_DListOpa(globalCtx, dlists[thisx->params]);
|
||||
Gfx_DrawDListOpa(globalCtx, dlists[thisx->params]);
|
||||
if (thisx->params == 3) {
|
||||
gfxCtx = globalCtx->state.gfxCtx;
|
||||
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_bg_spot09_obj.c", 388);
|
||||
|
|
|
@ -115,10 +115,10 @@ static void func_808B318C(BgSpot12Gate* this, GlobalContext* globalCtx) {
|
|||
Math_ApproxF(&thisx->velocity.y, 1.6f, 0.03f);
|
||||
if (Math_ApproxF(&thisx->posRot.pos.y, thisx->initPosRot.pos.y + 200.0f, thisx->velocity.y)) {
|
||||
func_808B3274(this);
|
||||
var = func_80092F88(globalCtx->cameraCtx.activeCameraPtrs[globalCtx->cameraCtx.unk_5C0], 3);
|
||||
func_80092DAC(var, -0x3CB0);
|
||||
func_80092E70(var, 3, 0, 0, 0);
|
||||
func_80092DF0(var, 0xC);
|
||||
var = Quake_Add(globalCtx->cameraCtx.activeCameraPtrs[globalCtx->cameraCtx.unk_5C0], 3);
|
||||
Quake_SetSpeed(var, -0x3CB0);
|
||||
Quake_SetQuakeValues(var, 3, 0, 0, 0);
|
||||
Quake_SetCountdown(var, 0xC);
|
||||
Audio_PlayActorSound2(thisx, NA_SE_EV_BRIDGE_OPEN_STOP);
|
||||
} else {
|
||||
func_8002F974(thisx, 0x2067);
|
||||
|
@ -143,5 +143,5 @@ static void BgSpot12Gate_Update(BgSpot12Gate* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void BgSpot12Gate_Draw(BgSpot12Gate* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_06001080);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_06001080);
|
||||
}
|
||||
|
|
|
@ -75,5 +75,5 @@ static void Update(ActorSpot18Futa* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void Draw(ActorSpot18Futa* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &DL_SPOT18_FUTA2);
|
||||
Gfx_DrawDListOpa(globalCtx, &DL_SPOT18_FUTA2);
|
||||
}
|
||||
|
|
|
@ -168,7 +168,7 @@ static ColliderCylinderInit colliderInit = {
|
|||
0x00, 0x00, 0xFFCFFFFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0000, 0x0001, 0x0000, 0x000A, 0x0046, 0x0000,
|
||||
};
|
||||
|
||||
static SubActor98Init subActor98Init = {
|
||||
static Sub98Init4 sub98Init = {
|
||||
0x0A,
|
||||
0x0023,
|
||||
0x0064,
|
||||
|
@ -202,7 +202,7 @@ static void BgTokiSwd_Init(BgTokiSwd* this, GlobalContext* globalCtx) {
|
|||
ActorCollider_AllocCylinder(globalCtx, collision);
|
||||
ActorCollider_InitCylinder(globalCtx, collision, thisx, &colliderInit);
|
||||
ActorCollider_Cylinder_Update(thisx, collision);
|
||||
func_80061ED4(&thisx->sub_98, 0, &subActor98Init);
|
||||
func_80061ED4(&thisx->sub_98, 0, &sub98Init);
|
||||
}
|
||||
|
||||
static void BgTokiSwd_Destroy(BgTokiSwd* this, GlobalContext* globalCtx) {
|
||||
|
@ -288,7 +288,7 @@ static void BgTokiSwd_Draw(BgTokiSwd* this, GlobalContext* globalCtx) {
|
|||
func_8002EBCC(&this->actor, globalCtx, 0);
|
||||
|
||||
gSPSegment(gfxCtx->polyOpa.p++, 0x08,
|
||||
Draw_TexScroll(globalCtx->state.gfxCtx, 0, -(globalCtx->gameplayFrames % 0x80), 32, 32));
|
||||
Gfx_TexScroll(globalCtx->state.gfxCtx, 0, -(globalCtx->gameplayFrames % 0x80), 32, 32));
|
||||
gSPMatrix(gfxCtx->polyOpa.p++, Matrix_NewMtx(globalCtx->state.gfxCtx, "../z_bg_toki_swd.c", 742),
|
||||
G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
|
||||
gSPDisplayList(gfxCtx->polyOpa.p++, &D_06001BD0);
|
||||
|
|
|
@ -68,5 +68,5 @@ static void Update(ActorBgUmajump* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void Draw(ActorBgUmajump* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_06001220);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_06001220);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,10 @@
|
|||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x114];
|
||||
/* 0x014C */ char unk_14C[0xFC];
|
||||
/* 0x0248 */ u8 timer; // used for dissapearing when flying or hitting a wall
|
||||
/* 0x0249 */ u8 hitWall;
|
||||
/* 0x024A */ char unk_24A[0x16];
|
||||
} EnArrow; // size = 0x0260
|
||||
|
||||
extern const ActorInit En_Arrow_InitVars;
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
/*
|
||||
* File: z_en_dog.c
|
||||
* Overlay: ovl_En_Dog
|
||||
* Description: Dog actor that Link can interact with
|
||||
*/
|
||||
|
||||
#include "z_en_dog.h"
|
||||
|
||||
#define ROOM 0x00
|
||||
|
@ -35,17 +41,7 @@ static ColliderCylinderInit cylinderInit = {
|
|||
0x0010, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
// There are multiple versions of sub98 init structs
|
||||
// Keeping these local until z_collision_check is decompiled
|
||||
typedef struct {
|
||||
/* 0x00 */ u8 health;
|
||||
/* 0x02 */ s16 unk_10;
|
||||
/* 0x04 */ s16 unk_12;
|
||||
/* 0x06 */ u16 unk_14;
|
||||
/* 0x08 */ u8 mass;
|
||||
} sub98Init;
|
||||
|
||||
static sub98Init sub98Data = {
|
||||
static Sub98Init5 sub98Data = {
|
||||
0x00, // health
|
||||
0x0000, // unk_10
|
||||
0x0000, // unk_12
|
||||
|
@ -469,8 +465,7 @@ static void EnDog_Draw(EnDog* this, GlobalContext* globalCtx) {
|
|||
s32 pad;
|
||||
Color_RGBA8 colors[] = { { 0xFF, 0xFF, 0xC8, 0x00 }, { 0x96, 0x64, 0x32, 0x00 } };
|
||||
GraphicsContext* gfxCtx;
|
||||
s32 pad2[2];
|
||||
Gfx* gfxArr[2];
|
||||
Gfx* gfxArr[4];
|
||||
|
||||
gfxCtx = globalCtx->state.gfxCtx;
|
||||
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_en_dog.c", 972);
|
||||
|
|
|
@ -1,3 +1,9 @@
|
|||
/*
|
||||
* File: z_en_ds.c
|
||||
* Overlay: ovl_En_Ds
|
||||
* Description: Potion Shop Granny
|
||||
*/
|
||||
|
||||
#include "z_en_ds.h"
|
||||
|
||||
#define ROOM 0x00
|
||||
|
@ -8,7 +14,24 @@ void EnDs_Destroy(EnDs* this, GlobalContext* globalCtx);
|
|||
void EnDs_Update(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_Draw(EnDs* this, GlobalContext* globalCtx);
|
||||
|
||||
/*
|
||||
void EnDs_Talk(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_TalkNoEmptyBottle(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_TalkAfterGiveOddPotion(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_DisplayOddPotionText(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_GiveOddPotion(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_TalkAfterBrewOddPotion(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_BrewOddPotion3(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_BrewOddPotion2(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_BrewOddPotion1(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_OfferOddPotion(EnDs* this, GlobalContext* globalCtx);
|
||||
int EnDs_CheckRupeesAndBottle();
|
||||
void EnDs_GiveBluePotion(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_OfferBluePotion(EnDs* this, GlobalContext* globalCtx);
|
||||
void EnDs_Wait(EnDs* this, GlobalContext* globalCtx);
|
||||
|
||||
UNK_TYPE func_809FDA38(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, EnDs* this);
|
||||
void func_809FDA7C(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* this);
|
||||
|
||||
const ActorInit En_Ds_InitVars = {
|
||||
ACTOR_EN_DS,
|
||||
ACTORTYPE_NPC,
|
||||
|
@ -21,43 +44,250 @@ const ActorInit En_Ds_InitVars = {
|
|||
(ActorFunc)EnDs_Update,
|
||||
(ActorFunc)EnDs_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/EnDs_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/EnDs_Destroy.s")
|
||||
extern SkeletonHeader D_06004768;
|
||||
extern AnimationHeader D_0600039C;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD10C.s")
|
||||
Vec3f mtxSrc = { 1100.0f, 500.0f, 0.0f };
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD160.s")
|
||||
void EnDs_Init(EnDs* this, GlobalContext* globalCtx) {
|
||||
SkelAnime* skelAnime = &this->skelAnime;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD1CC.s")
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFunc_Circle, 36.0f);
|
||||
SkelAnime_InitSV(globalCtx, skelAnime, &D_06004768, &D_0600039C, &this->actorDrawTable, &this->unk_1B4, 6);
|
||||
func_800A51E8(&this->skelAnime, &D_0600039C);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD224.s")
|
||||
this->actor.sub_98.mass = 0xFF;
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD284.s")
|
||||
Actor_SetScale(this, 0.013f);
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD2EC.s")
|
||||
this->actionFunc = EnDs_Wait;
|
||||
this->actor.unk_1F = 1;
|
||||
this->unk_1E8 = 0;
|
||||
this->actor.flags &= ~0x1;
|
||||
this->unk_1E4 = 0.0f;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD368.s")
|
||||
void EnDs_Destroy(EnDs* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD40C.s")
|
||||
void EnDs_Talk(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (func_8002F334(&this->actor, globalCtx) != 0) {
|
||||
this->actionFunc = EnDs_Wait;
|
||||
this->actor.flags &= ~0x10000;
|
||||
}
|
||||
this->unk_1E8 |= 1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD460.s")
|
||||
void EnDs_TalkNoEmptyBottle(EnDs* this, GlobalContext* globalCtx) {
|
||||
if ((func_8010BDBC(&globalCtx->msgCtx) == 5) && (func_80106BC8(globalCtx) != 0)) {
|
||||
func_80106CCC(globalCtx);
|
||||
this->actionFunc = EnDs_Wait;
|
||||
}
|
||||
this->unk_1E8 |= 1;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD500.s")
|
||||
void EnDs_TalkAfterGiveOddPotion(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (func_8002F194(&this->actor, globalCtx) != 0) {
|
||||
this->actionFunc = EnDs_Talk;
|
||||
} else {
|
||||
this->actor.flags |= 0x10000;
|
||||
func_8002F2CC(&this->actor, globalCtx, 1000.0f);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD5CC.s")
|
||||
void EnDs_DisplayOddPotionText(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (func_8002F334(&this->actor, globalCtx) != 0) {
|
||||
this->actor.textId = 0x504F;
|
||||
this->actionFunc = EnDs_TalkAfterGiveOddPotion;
|
||||
this->actor.flags &= ~0x100;
|
||||
gSaveContext.item_get_inf[3] |= 1;
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD61C.s")
|
||||
void EnDs_GiveOddPotion(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (func_8002F410(&this->actor, globalCtx) != 0) {
|
||||
this->actor.attachedA = NULL;
|
||||
this->actionFunc = EnDs_DisplayOddPotionText;
|
||||
gSaveContext.timer_2_state = 0;
|
||||
} else {
|
||||
func_8002F434(&this->actor, globalCtx, GI_ODD_POTION, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD67C.s")
|
||||
void EnDs_TalkAfterBrewOddPotion(EnDs* this, GlobalContext* globalCtx) {
|
||||
if ((func_8010BDBC(&globalCtx->msgCtx) == 5) && (func_80106BC8(globalCtx) != 0)) {
|
||||
func_80106CCC(globalCtx);
|
||||
this->actionFunc = EnDs_GiveOddPotion;
|
||||
func_8002F434(&this->actor, globalCtx, GI_ODD_POTION, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FD7B4.s")
|
||||
void EnDs_BrewOddPotion3(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (this->brewTimer > 0) {
|
||||
this->brewTimer -= 1;
|
||||
} else {
|
||||
this->actionFunc = EnDs_TalkAfterBrewOddPotion;
|
||||
func_8010B720(globalCtx, 0x504D);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/EnDs_Update.s")
|
||||
Math_ApproxF(&this->unk_1E4, 0, 0.03f);
|
||||
func_800773A8(globalCtx, this->unk_1E4 * (2.0f - this->unk_1E4), 0.0f, 0.1f, 1.0f);
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FDA38.s")
|
||||
void EnDs_BrewOddPotion2(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (this->brewTimer > 0) {
|
||||
this->brewTimer -= 1;
|
||||
} else {
|
||||
this->actionFunc = EnDs_BrewOddPotion3;
|
||||
this->brewTimer = 60;
|
||||
Flags_UnsetSwitch(globalCtx, 0x3F);
|
||||
}
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/func_809FDA7C.s")
|
||||
void EnDs_BrewOddPotion1(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (this->brewTimer > 0) {
|
||||
this->brewTimer -= 1;
|
||||
} else {
|
||||
this->actionFunc = EnDs_BrewOddPotion2;
|
||||
this->brewTimer = 20;
|
||||
}
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ds/EnDs_Draw.s")
|
||||
Math_ApproxF(&this->unk_1E4, 1.0f, 0.01f);
|
||||
func_800773A8(globalCtx, this->unk_1E4 * (2.0f - this->unk_1E4), 0.0f, 0.1f, 1.0f);
|
||||
}
|
||||
|
||||
void EnDs_OfferOddPotion(EnDs* this, GlobalContext* globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
|
||||
if ((func_8010BDBC(&globalCtx->msgCtx) == 4) && (func_80106BC8(globalCtx) != 0)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
case 0: // yes
|
||||
this->actionFunc = EnDs_BrewOddPotion1;
|
||||
this->brewTimer = 60;
|
||||
Flags_SetSwitch(globalCtx, 0x3F);
|
||||
globalCtx->msgCtx.msgMode = 0x37;
|
||||
player->exchangeItemId = 0;
|
||||
break;
|
||||
case 1: // no
|
||||
func_8010B720(globalCtx, 0x504C);
|
||||
this->actionFunc = EnDs_Talk;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int EnDs_CheckRupeesAndBottle() {
|
||||
if (gSaveContext.rupees < 100) {
|
||||
return 0;
|
||||
} else if (Inventory_HasEmptyBottle() == 0) {
|
||||
return 1;
|
||||
} else {
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
|
||||
void EnDs_GiveBluePotion(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (func_8002F410(&this->actor, globalCtx) != 0) {
|
||||
this->actor.attachedA = NULL;
|
||||
this->actionFunc = EnDs_Talk;
|
||||
} else {
|
||||
func_8002F434(&this->actor, globalCtx, GI_POTION_BLUE, 10000.0f, 50.0f);
|
||||
}
|
||||
}
|
||||
|
||||
void EnDs_OfferBluePotion(EnDs* this, GlobalContext* globalCtx) {
|
||||
if ((func_8010BDBC(&globalCtx->msgCtx) == 4) && (func_80106BC8(globalCtx) != 0)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
case 0: // yes
|
||||
switch (EnDs_CheckRupeesAndBottle()) {
|
||||
case 0: // have less than 100 rupees
|
||||
func_8010B720(globalCtx, 0x500E);
|
||||
break;
|
||||
case 1: // have 100 rupees but no empty bottle
|
||||
func_8010B720(globalCtx, 0x96);
|
||||
this->actionFunc = EnDs_TalkNoEmptyBottle;
|
||||
return;
|
||||
case 2: // have 100 rupees and empty bottle
|
||||
Rupees_ChangeBy(-100);
|
||||
this->actor.flags &= ~0x10000;
|
||||
func_8002F434(this, globalCtx, GI_POTION_BLUE, 10000.0f, 50.0f);
|
||||
this->actionFunc = EnDs_GiveBluePotion;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 1: // no
|
||||
func_8010B720(globalCtx, 0x500D);
|
||||
}
|
||||
this->actionFunc = EnDs_Talk;
|
||||
}
|
||||
}
|
||||
|
||||
void EnDs_Wait(EnDs* this, GlobalContext* globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
s16 unkAngle;
|
||||
|
||||
if (func_8002F194(&this->actor, globalCtx) != 0) {
|
||||
if (func_8002F368(globalCtx) == 8) {
|
||||
Audio_PlaySoundGeneral(NA_SE_SY_TRE_BOX_APPEAR, &D_801333D4, 4, &D_801333E0, &D_801333E0, &D_801333E8);
|
||||
player->actor.textId = 0x504A;
|
||||
this->actionFunc = EnDs_OfferOddPotion;
|
||||
} else if (gSaveContext.item_get_inf[3] & 1) {
|
||||
player->actor.textId = 0x500C;
|
||||
this->actionFunc = EnDs_OfferBluePotion;
|
||||
} else {
|
||||
if (INV_CONTENT(ITEM_ODD_MUSHROOM) == ITEM_ODD_MUSHROOM) {
|
||||
player->actor.textId = 0x5049;
|
||||
} else {
|
||||
player->actor.textId = 0x5048;
|
||||
}
|
||||
this->actionFunc = EnDs_Talk;
|
||||
}
|
||||
} else {
|
||||
unkAngle = this->actor.rotTowardsLinkY - this->actor.shape.rot.y;
|
||||
this->actor.textId = 0x5048;
|
||||
|
||||
if ((ABS(unkAngle) < 0x2151) && (this->actor.xzDistanceFromLink < 200.0f)) {
|
||||
func_8002F298(this, globalCtx, 100.0f, 8);
|
||||
this->unk_1E8 |= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EnDs_Update(EnDs* this, GlobalContext* globalCtx) {
|
||||
if (SkelAnime_FrameUpdateMatrix(&this->skelAnime) != 0) {
|
||||
this->skelAnime.animCurrentFrame = 0.0f;
|
||||
}
|
||||
|
||||
this->actionFunc(this, globalCtx);
|
||||
|
||||
if (this->unk_1E8 & 1) {
|
||||
func_80038290(globalCtx, this, &this->unk_1D8, &this->unk_1DE, this->actor.posRot2.pos);
|
||||
} else {
|
||||
Math_SmoothScaleMaxMinS(&this->unk_1D8.x, 0, 6, 0x1838, 100);
|
||||
Math_SmoothScaleMaxMinS(&this->unk_1D8.y, 0, 6, 0x1838, 100);
|
||||
Math_SmoothScaleMaxMinS(&this->unk_1DE.x, 0, 6, 0x1838, 100);
|
||||
Math_SmoothScaleMaxMinS(&this->unk_1DE.y, 0, 6, 0x1838, 100);
|
||||
}
|
||||
}
|
||||
|
||||
UNK_TYPE func_809FDA38(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3f* pos, Vec3s* rot, EnDs* this) {
|
||||
EnDs* enDs = this;
|
||||
|
||||
if (limbIndex == 5) {
|
||||
rot->x += this->unk_1D8.y;
|
||||
rot->z += this->unk_1D8.x;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void func_809FDA7C(GlobalContext* globalCtx, s32 limbIndex, Gfx** dList, Vec3s* rot, Actor* actor) {
|
||||
if (limbIndex == 5) {
|
||||
Matrix_MultVec3f(&mtxSrc, &actor->posRot2.pos);
|
||||
}
|
||||
}
|
||||
|
||||
void EnDs_Draw(EnDs* this, GlobalContext* globalCtx) {
|
||||
func_800943C8(globalCtx->state.gfxCtx);
|
||||
SkelAnime_DrawSV(globalCtx, this->skelAnime.skeleton, this->skelAnime.actorDrawTbl, this->skelAnime.dListCount,
|
||||
&func_809FDA38, &func_809FDA7C, this);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,17 @@
|
|||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0xA4];
|
||||
/* 0x014C */ SkelAnime skelAnime;
|
||||
/* 0x0190 */ Vec3s actorDrawTable;
|
||||
/* 0x0196 */ char unk_194[0x1E];
|
||||
/* 0x01B4 */ Vec3s unk_1B4;
|
||||
/* 0x01BA */ char unk_1B8[0x1E];
|
||||
/* 0x01D8 */ Vec3s unk_1D8;
|
||||
/* 0x01DE */ Vec3s unk_1DE;
|
||||
/* 0x01E4 */ float unk_1E4;
|
||||
/* 0x01E8 */ u16 unk_1E8;
|
||||
/* 0x01EA */ u16 brewTimer;
|
||||
/* 0x01EC */ ActorFunc actionFunc;
|
||||
} EnDs; // size = 0x01F0
|
||||
|
||||
extern const ActorInit En_Ds_InitVars;
|
||||
|
|
|
@ -109,5 +109,5 @@ static void EnLightbox_Update(EnLightbox* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void EnLightbox_Draw(EnLightbox* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_06000B70);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_06000B70);
|
||||
}
|
||||
|
|
|
@ -85,5 +85,5 @@ static void EnPubox_Update(EnPubox* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void EnPubox_Draw(EnPubox* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_06000380);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_06000380);
|
||||
}
|
||||
|
|
|
@ -1,14 +1,78 @@
|
|||
/*
|
||||
* File: z_en_ru2.c
|
||||
* Overlay: En_Ru2
|
||||
* Description:
|
||||
*/
|
||||
|
||||
#include "z_en_ru2.h"
|
||||
|
||||
#include <vt.h>
|
||||
|
||||
#define ROOM 0x00
|
||||
#define FLAGS 0x00000010
|
||||
|
||||
void EnRu2_Init(EnRu2* this, GlobalContext* globalCtx);
|
||||
void EnRu2_Destroy(EnRu2* this, GlobalContext* globalCtx);
|
||||
void EnRu2_Update(EnRu2* this, GlobalContext* globalCtx);
|
||||
void EnRu2_Draw(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void EnRu2_Init(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void EnRu2_Destroy(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void EnRu2_Update(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void EnRu2_Draw(EnRu2* this, GlobalContext* globalCtx);
|
||||
|
||||
static void func_80AF2CB4(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF2CD4(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF2CF4(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF2D2C(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF2D6C(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF2DAC(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF2DEC(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3144(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3174(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF31C8(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3604(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3624(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF366C(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF36AC(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3BC8(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3C04(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3C64(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3CB8(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3D0C(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3D60(EnRu2* this, GlobalContext* globalCtx);
|
||||
|
||||
static void func_80AF3F14(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF3F20(EnRu2* this, GlobalContext* globalCtx);
|
||||
static void func_80AF321C(EnRu2* this, GlobalContext* globalCtx);
|
||||
|
||||
static void func_80AF2AB4(EnRu2* this, GlobalContext* globalCtx);
|
||||
|
||||
static ColliderCylinderInit D_80AF40E0 = {
|
||||
0x0A, 0x00, 0x09, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00000000, 0x00, 0x00, 0x00, 0x00, 0x00000080, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x001E, 0x0064, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
static u32 D_80AF410C[] = {
|
||||
0x06000F20,
|
||||
0x060022E0,
|
||||
0x06002AE0,
|
||||
};
|
||||
|
||||
static u32 D_80AF4118 = 0;
|
||||
|
||||
#include "z_en_ru2_cutscene_data.c"
|
||||
|
||||
static ActorFunc D_80AF50BC[] = {
|
||||
(ActorFunc)func_80AF2CB4, (ActorFunc)func_80AF2CD4, (ActorFunc)func_80AF2CF4, (ActorFunc)func_80AF2D2C,
|
||||
(ActorFunc)func_80AF2D6C, (ActorFunc)func_80AF2DAC, (ActorFunc)func_80AF2DEC, (ActorFunc)func_80AF3144,
|
||||
(ActorFunc)func_80AF3174, (ActorFunc)func_80AF31C8, (ActorFunc)func_80AF3604, (ActorFunc)func_80AF3624,
|
||||
(ActorFunc)func_80AF366C, (ActorFunc)func_80AF36AC, (ActorFunc)func_80AF3BC8, (ActorFunc)func_80AF3C04,
|
||||
(ActorFunc)func_80AF3C64, (ActorFunc)func_80AF3CB8, (ActorFunc)func_80AF3D0C, (ActorFunc)func_80AF3D60,
|
||||
};
|
||||
|
||||
static ActorFunc D_80AF510C[] = {
|
||||
(ActorFunc)func_80AF3F14,
|
||||
(ActorFunc)func_80AF3F20,
|
||||
(ActorFunc)func_80AF321C,
|
||||
};
|
||||
|
||||
/*
|
||||
const ActorInit En_Ru2_InitVars = {
|
||||
ACTOR_EN_RU2,
|
||||
ACTORTYPE_NPC,
|
||||
|
@ -21,155 +85,729 @@ const ActorInit En_Ru2_InitVars = {
|
|||
(ActorFunc)EnRu2_Update,
|
||||
(ActorFunc)EnRu2_Draw,
|
||||
};
|
||||
*/
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2550.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF259C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Destroy.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2608.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2690.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF26A0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF26AC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF26D0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2744.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF278C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF27AC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF27D0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF281C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2868.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF28E8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2978.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2994.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF29DC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2A38.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2AB4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2B44.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2B94.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2BC0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2C54.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2C68.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2CB4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2CD4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2CF4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2D2C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2D6C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2DAC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2DEC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2E1C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2E64.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2E84.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2F04.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF2F58.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF30AC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3144.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3174.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF31C8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF321C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3394.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF33E0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF346C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF34A4.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF34F0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3530.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3564.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3604.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3624.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF366C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF36AC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF36EC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3718.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3744.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF37AC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF37CC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF383C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3878.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF38D0.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF390C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF39DC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3ADC.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3B74.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3BC8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3C04.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3C64.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3CB8.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3D0C.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3D60.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Update.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Init.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3F14.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/func_80AF3F20.s")
|
||||
|
||||
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_Ru2/EnRu2_Draw.s")
|
||||
extern AnimationHeader* D_060004CC;
|
||||
extern SkeletonHeader* D_0600C700;
|
||||
extern AnimationHeader* D_0600D3DC;
|
||||
extern AnimationHeader* D_0600DCAC;
|
||||
extern AnimationHeader* D_06000DE8;
|
||||
extern AnimationHeader* D_0600E630;
|
||||
extern AnimationHeader* D_0600F03C;
|
||||
extern AnimationHeader* D_0600F8B8;
|
||||
|
||||
static void func_80AF2550(EnRu2* this, GlobalContext* globalCtx) {
|
||||
EnRu2* thisLocal = this;
|
||||
ActorCollider_AllocCylinder(globalCtx, &thisLocal->collider);
|
||||
func_8005C450(globalCtx, &thisLocal->collider, &this->actor, &D_80AF40E0);
|
||||
}
|
||||
|
||||
static void func_80AF259C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
ColliderCylinderMain* collider = &this->collider;
|
||||
Actor* thisx = &this->actor;
|
||||
s32 pad2[2];
|
||||
|
||||
ActorCollider_Cylinder_Update(thisx, collider);
|
||||
Actor_CollisionCheck_SetAC(globalCtx, &globalCtx->sub_11E60, collider);
|
||||
}
|
||||
|
||||
static void EnRu2_Destroy(EnRu2* this, GlobalContext* globalCtx) {
|
||||
ColliderCylinderMain* collider = &this->collider;
|
||||
ActorCollider_FreeCylinder(globalCtx, collider);
|
||||
}
|
||||
|
||||
static void func_80AF2608(EnRu2* this) {
|
||||
s32 pad[3];
|
||||
s16* unk_2A6 = &this->unk_2A6;
|
||||
s16* unk_2A4 = &this->unk_2A4;
|
||||
|
||||
if (!DECR(*unk_2A6)) {
|
||||
*unk_2A6 = Math_Rand_S16Offset(0x3C, 0x3C);
|
||||
}
|
||||
|
||||
*unk_2A4 = *unk_2A6;
|
||||
if (*unk_2A4 >= 3) {
|
||||
*unk_2A4 = 0;
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_80AF2690(EnRu2* this) {
|
||||
s32 params_shift = this->actor.params >> 8;
|
||||
return params_shift & 0xFF;
|
||||
}
|
||||
|
||||
s32 func_80AF26A0(EnRu2* this) {
|
||||
s16 params = this->actor.params;
|
||||
return params & 0xFF;
|
||||
}
|
||||
|
||||
static void func_80AF26AC(EnRu2* this) {
|
||||
this->action = 7;
|
||||
this->drawConfig = 0;
|
||||
this->unk_2B4 = 0;
|
||||
this->unk_2B8 = 0;
|
||||
this->actor.shape.unk_14 = 0;
|
||||
this->unk_2B0 = 0.0f;
|
||||
}
|
||||
|
||||
static void func_80AF26D0(EnRu2* this, GlobalContext* globalCtx) {
|
||||
s32 one; // Needed to match
|
||||
if (globalCtx->csCtx.state == 0) {
|
||||
if (D_80AF4118 != 0) {
|
||||
if (this->actor.params == 2) {
|
||||
func_80AF26AC(this);
|
||||
}
|
||||
D_80AF4118 = 0;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
one = 1;
|
||||
if (D_80AF4118 == 0) {
|
||||
D_80AF4118 = one;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2744(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_8002E4B4(globalCtx, &this->actor, 75.0f, 30.0f, 30.0f, 4);
|
||||
}
|
||||
|
||||
s32 EnRu2_FrameUpdateMatrix(EnRu2* this) {
|
||||
return SkelAnime_FrameUpdateMatrix(&this->skelAnime);
|
||||
}
|
||||
|
||||
CsCmdActorAction* func_80AF27AC(GlobalContext* globalCtx, s32 actorActionIdx) {
|
||||
if (globalCtx->csCtx.state != 0) {
|
||||
return globalCtx->csCtx.actorActions[actorActionIdx];
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
s32 func_80AF27D0(EnRu2* this, GlobalContext* globalCtx, u16 arg2, s32 actorActionIdx) {
|
||||
CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, actorActionIdx);
|
||||
|
||||
if (csCmdActorAction != NULL && csCmdActorAction->action == arg2) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
s32 func_80AF281C(EnRu2* this, GlobalContext* globalCtx, u16 arg2, s32 actorActionIdx) {
|
||||
CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, actorActionIdx);
|
||||
|
||||
if (csCmdActorAction != NULL && csCmdActorAction->action != arg2) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void func_80AF2868(EnRu2* this, GlobalContext* globalCtx, u32 actorActionIdx) {
|
||||
CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, actorActionIdx);
|
||||
s16 newRotY;
|
||||
Actor* thisx = &this->actor;
|
||||
|
||||
if (csCmdActorAction != NULL) {
|
||||
thisx->posRot.pos.x = csCmdActorAction->startPos.x;
|
||||
thisx->posRot.pos.y = csCmdActorAction->startPos.y;
|
||||
thisx->posRot.pos.z = csCmdActorAction->startPos.z;
|
||||
newRotY = csCmdActorAction->rot.y;
|
||||
thisx->shape.rot.y = newRotY;
|
||||
thisx->posRot.rot.y = newRotY;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF28E8(EnRu2* this, AnimationHeader* animation, u8 arg2, f32 transitionRate, s32 arg4) {
|
||||
f32 frameCount = SkelAnime_GetFrameCount(&animation->genericHeader);
|
||||
f32 playbackSpeed;
|
||||
f32 unk0;
|
||||
f32 fc;
|
||||
|
||||
if (arg4 == 0) {
|
||||
unk0 = 0.0f;
|
||||
fc = frameCount;
|
||||
playbackSpeed = 1.0f;
|
||||
} else {
|
||||
unk0 = frameCount;
|
||||
fc = 0.0f;
|
||||
playbackSpeed = -1.0f;
|
||||
}
|
||||
|
||||
SkelAnime_ChangeAnimation(&this->skelAnime, animation, playbackSpeed, unk0, fc, arg2, transitionRate);
|
||||
}
|
||||
|
||||
static void func_80AF2978(EnRu2* this, GlobalContext* globalCtx) {
|
||||
this->actor.shape.unk_08 += 83.333336f;
|
||||
}
|
||||
|
||||
static void func_80AF2994(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF28E8(this, &D_06000DE8, 0, 0.0f, 0);
|
||||
this->actor.shape.unk_08 = -10000.0f;
|
||||
}
|
||||
|
||||
static void func_80AF29DC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
Actor* thisx = &this->actor;
|
||||
f32 posX = thisx->posRot.pos.x;
|
||||
f32 posY = thisx->posRot.pos.y;
|
||||
f32 posZ = thisx->posRot.pos.z;
|
||||
Actor_SpawnAttached(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_DOOR_WARP1, posX, posY, posZ, 0, 0, 0, 2);
|
||||
}
|
||||
|
||||
static void func_80AF2A38(EnRu2* this, GlobalContext* globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
f32 posX = player->actor.posRot.pos.x;
|
||||
f32 posY = player->actor.posRot.pos.y + 50.0f;
|
||||
f32 posZ = player->actor.posRot.pos.z;
|
||||
|
||||
Actor_SpawnAttached(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_DEMO_EFFECT, posX, posY, posZ, 0, 0, 0,
|
||||
10);
|
||||
Item_Give(globalCtx, ITEM_MEDALLION_WATER);
|
||||
}
|
||||
|
||||
static void func_80AF2AB4(EnRu2* this, GlobalContext* globalCtx) {
|
||||
s32 pad[2];
|
||||
Player* player;
|
||||
s16 temp;
|
||||
|
||||
if (gSaveContext.chamber_cutscene_num == 2 && gSaveContext.scene_setup_index < 4) {
|
||||
player = PLAYER;
|
||||
this->action = 1;
|
||||
globalCtx->csCtx.segment = &D_80AF411C;
|
||||
gSaveContext.cutscene_trigger = 2;
|
||||
Item_Give(globalCtx, ITEM_MEDALLION_WATER);
|
||||
temp = this->actor.posRot.rot.y + 0x8000;
|
||||
player->actor.shape.rot.y = temp;
|
||||
player->actor.posRot.rot.y = temp;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2B44(EnRu2* this, GlobalContext* globalCtx) {
|
||||
CutsceneContext* csCtx = &globalCtx->csCtx;
|
||||
CsCmdActorAction* csCmdActorAction;
|
||||
if (csCtx->state != 0) {
|
||||
csCmdActorAction = csCtx->actorActions[3];
|
||||
if (csCmdActorAction != NULL && csCmdActorAction->action == 2) {
|
||||
this->action = 2;
|
||||
this->drawConfig = 1;
|
||||
func_80AF29DC(this, globalCtx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2B94(EnRu2* this) {
|
||||
if (this->actor.shape.unk_08 >= 0.0f) {
|
||||
this->action = 3;
|
||||
this->actor.shape.unk_08 = 0.0f;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2BC0(EnRu2* this, GlobalContext* globalCtx) {
|
||||
AnimationHeader* animation = &D_0600D3DC;
|
||||
CsCmdActorAction* csCmdActorAction;
|
||||
if (globalCtx->csCtx.state != 0) {
|
||||
csCmdActorAction = globalCtx->csCtx.actorActions[3];
|
||||
if (csCmdActorAction != NULL && csCmdActorAction->action == 3) {
|
||||
SkelAnime_ChangeAnimation(&this->skelAnime, animation, 1.0f, 0.0f, SkelAnime_GetFrameCount(animation), 2,
|
||||
0.0f);
|
||||
this->action = 4;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2C54(EnRu2* this, UNK_TYPE arg1) {
|
||||
if (arg1 != 0) {
|
||||
this->action = 5;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2C68(EnRu2* this, GlobalContext* globalCtx) {
|
||||
CsCmdActorAction* csCmdActorAction;
|
||||
if (globalCtx->csCtx.state != 0) {
|
||||
csCmdActorAction = globalCtx->csCtx.actorActions[6];
|
||||
if (csCmdActorAction != NULL && csCmdActorAction->action == 2) {
|
||||
this->action = 6;
|
||||
func_80AF2A38(this, globalCtx);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2CB4(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2AB4(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF2CD4(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2B44(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF2CF4(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2978(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF2B94(this);
|
||||
}
|
||||
|
||||
static void func_80AF2D2C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF2BC0(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF2D6C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
UNK_TYPE something;
|
||||
|
||||
func_80AF2744(this, globalCtx);
|
||||
something = EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF2C54(this, something);
|
||||
}
|
||||
|
||||
static void func_80AF2DAC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF2C68(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF2DEC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
}
|
||||
|
||||
static void func_80AF2E1C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF28E8(this, &D_060004CC, 2, 0.0f, 0);
|
||||
this->action = 7;
|
||||
this->actor.shape.unk_14 = 0;
|
||||
}
|
||||
|
||||
static void func_80AF2E64() {
|
||||
func_800788CC(NA_SE_SY_WHITE_OUT_T);
|
||||
}
|
||||
|
||||
static void func_80AF2E84(EnRu2* this, GlobalContext* globalCtx) {
|
||||
Actor_SpawnAttached(&globalCtx->actorCtx, &this->actor, globalCtx, ACTOR_DEMO_6K, this->actor.posRot.pos.x,
|
||||
kREG(19) + 24.0f + this->actor.posRot.pos.y, this->actor.posRot.pos.z, 0, 0, 0, 8);
|
||||
}
|
||||
|
||||
static void func_80AF2F04(EnRu2* this, GlobalContext* globalCtx) {
|
||||
if (func_80AF27D0(this, globalCtx, 4, 3)) {
|
||||
this->action = 8;
|
||||
this->drawConfig = 2;
|
||||
this->unk_2B4 = 0;
|
||||
this->actor.shape.unk_14 = 0;
|
||||
this->unk_2B0 = 0.0f;
|
||||
func_80AF2E64();
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF2F58(EnRu2* this, GlobalContext* globalCtx) {
|
||||
f32* unk_2B0 = &this->unk_2B0;
|
||||
s32 something;
|
||||
|
||||
if (func_80AF27D0(this, globalCtx, 4, 3)) {
|
||||
*unk_2B0 += 1.0f;
|
||||
if (*unk_2B0 >= kREG(5) + 10.0f) {
|
||||
this->action = 9;
|
||||
this->drawConfig = 1;
|
||||
*unk_2B0 = kREG(5) + 10.0f;
|
||||
this->unk_2B4 = 0xFF;
|
||||
this->actor.shape.unk_14 = 0xFF;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
*unk_2B0 -= 1.0f;
|
||||
if (*unk_2B0 <= 0.0f) {
|
||||
this->action = 7;
|
||||
this->drawConfig = 0;
|
||||
*unk_2B0 = 0.0f;
|
||||
this->unk_2B4 = 0;
|
||||
this->actor.shape.unk_14 = 0;
|
||||
return;
|
||||
}
|
||||
}
|
||||
something = (*unk_2B0 / (kREG(5) + 10.0f)) * 255.0f;
|
||||
this->unk_2B4 = something;
|
||||
this->actor.shape.unk_14 = something;
|
||||
}
|
||||
|
||||
static void func_80AF30AC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
if (func_80AF281C(this, globalCtx, 4, 3)) {
|
||||
this->action = 8;
|
||||
this->drawConfig = 2;
|
||||
this->unk_2B0 = kREG(5) + 10.0f;
|
||||
this->unk_2B4 = 0xFF;
|
||||
if (this->unk_2B8 == 0) {
|
||||
func_80AF2E84(this, globalCtx);
|
||||
this->unk_2B8 = 1;
|
||||
}
|
||||
this->actor.shape.unk_14 = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF3144(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2F04(this, globalCtx);
|
||||
func_80AF26D0(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF3174(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF2F58(this, globalCtx);
|
||||
func_80AF26D0(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF31C8(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF30AC(this, globalCtx);
|
||||
func_80AF26D0(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF321C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
s32 pad[2];
|
||||
s16 temp = this->unk_2A4;
|
||||
UNK_PTR addr = D_80AF410C[temp];
|
||||
SkelAnime* skelAnime = &this->skelAnime;
|
||||
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
|
||||
Gfx* gfxArr[4];
|
||||
|
||||
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2_inKenjyanomaDemo02.c", 264);
|
||||
func_80093D84(globalCtx->state.gfxCtx);
|
||||
|
||||
gSPSegment(gfxCtx->polyXlu.p++, 0x08, SEGMENTED_TO_VIRTUAL(addr));
|
||||
gSPSegment(gfxCtx->polyXlu.p++, 0x09, SEGMENTED_TO_VIRTUAL(addr));
|
||||
gDPSetEnvColor(gfxCtx->polyXlu.p++, 0x00, 0x00, 0x00, this->unk_2B4);
|
||||
gSPSegment(gfxCtx->polyXlu.p++, 0x0C, &D_80116280[0]);
|
||||
|
||||
gfxCtx->polyXlu.p = SkelAnime_DrawSV2(globalCtx, skelAnime->skeleton, skelAnime->actorDrawTbl,
|
||||
skelAnime->dListCount, NULL, NULL, NULL, gfxCtx->polyXlu.p);
|
||||
|
||||
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2_inKenjyanomaDemo02.c", 291);
|
||||
}
|
||||
|
||||
static void func_80AF3394(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF28E8(this, &D_0600E630, 0, 0.0f, 0);
|
||||
this->action = 10;
|
||||
this->drawConfig = 0;
|
||||
this->actor.shape.unk_14 = 0;
|
||||
}
|
||||
|
||||
static void func_80AF33E0(EnRu2* this) {
|
||||
f32* unk_2B0 = &this->unk_2B0;
|
||||
f32 temp_f0;
|
||||
s32 temp_f18;
|
||||
|
||||
*unk_2B0 += 1.0f;
|
||||
|
||||
temp_f0 = kREG(17) + 10.0f;
|
||||
if (temp_f0 <= *unk_2B0) {
|
||||
this->unk_2B4 = 0xFF;
|
||||
this->actor.shape.unk_14 = 0xFF;
|
||||
} else {
|
||||
temp_f18 = (*unk_2B0 / temp_f0) * 255.0f;
|
||||
this->unk_2B4 = temp_f18;
|
||||
this->actor.shape.unk_14 = temp_f18;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF346C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2868(this, globalCtx, 3);
|
||||
this->action = 11;
|
||||
this->drawConfig = 2;
|
||||
}
|
||||
|
||||
static void func_80AF34A4(EnRu2* this) {
|
||||
if (this->unk_2B0 >= kREG(17) + 10.0f) {
|
||||
this->action = 12;
|
||||
this->drawConfig = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF34F0(EnRu2* this) {
|
||||
func_80AF28E8(this, &D_0600DCAC, 2, 0.0f, 0);
|
||||
this->action = 13;
|
||||
}
|
||||
|
||||
static void func_80AF3530(EnRu2* this, UNK_TYPE arg1) {
|
||||
if (arg1 != 0) {
|
||||
func_80AF28E8(this, &D_0600F03C, 0, 0.0f, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF3564(EnRu2* this, GlobalContext* globalCtx) {
|
||||
CsCmdActorAction* csCmdActorAction = func_80AF27AC(globalCtx, 3);
|
||||
s32 action;
|
||||
s32 unk_2BC;
|
||||
|
||||
if (csCmdActorAction != NULL) {
|
||||
action = csCmdActorAction->action;
|
||||
unk_2BC = this->unk_2BC;
|
||||
if (action != unk_2BC) {
|
||||
switch (action) {
|
||||
case 7:
|
||||
func_80AF346C(this, globalCtx);
|
||||
break;
|
||||
case 8:
|
||||
func_80AF34F0(this);
|
||||
break;
|
||||
default:
|
||||
osSyncPrintf("En_Ru2_inEnding_Check_DemoMode:そんな動作は無い!!!!!!!!\n");
|
||||
break;
|
||||
}
|
||||
this->unk_2BC = action;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF3604(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF3564(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF3624(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF33E0(this);
|
||||
func_80AF34A4(this);
|
||||
}
|
||||
|
||||
static void func_80AF366C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF3564(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF36AC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
UNK_TYPE something;
|
||||
|
||||
func_80AF2744(this, globalCtx);
|
||||
something = EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
func_80AF3530(this, something);
|
||||
}
|
||||
|
||||
static void func_80AF36EC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
Flags_SetSwitch(globalCtx, func_80AF2690(this));
|
||||
}
|
||||
|
||||
s32 func_80AF3718(EnRu2* this, GlobalContext* globalCtx) {
|
||||
return Flags_GetSwitch(globalCtx, func_80AF2690(this));
|
||||
}
|
||||
|
||||
static void func_80AF3744(EnRu2* this, GlobalContext* globalCtx) {
|
||||
if (func_80AF3718(this, globalCtx)) {
|
||||
Actor_Kill(&this->actor);
|
||||
} else {
|
||||
func_80AF28E8(this, &D_06000DE8, 0, 0.0f, 0);
|
||||
this->action = 14;
|
||||
this->drawConfig = 1;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF37AC() {
|
||||
func_800F5C64(0x51);
|
||||
}
|
||||
|
||||
static void func_80AF37CC(EnRu2* this) {
|
||||
f32 funcFloat;
|
||||
this->unk_2C0 += 1;
|
||||
funcFloat = func_8006F9BC((kREG(2) + 0x96) & 0xFFFF, 0, this->unk_2C0, 8, 0);
|
||||
this->actor.posRot.pos.y = this->actor.initPosRot.pos.y + (300.0f * funcFloat);
|
||||
}
|
||||
|
||||
s32 func_80AF383C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
Player* player = PLAYER;
|
||||
f32 thisPosX = this->actor.posRot.pos.x;
|
||||
f32 playerPosX = player->actor.posRot.pos.x;
|
||||
if (playerPosX - thisPosX >= -202.0f) {
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void func_80AF3878(EnRu2* this, GlobalContext* globalCtx) {
|
||||
if (func_80AF383C(this, globalCtx) && !func_800BFC84(globalCtx)) {
|
||||
this->action = 16;
|
||||
func_800800F8(globalCtx, 0xC3A, -0x63, &this->actor, 0);
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF38D0(EnRu2* this, GlobalContext* globalCtx) {
|
||||
this->action = 16;
|
||||
func_800800F8(globalCtx, 0xC3A, -0x63, &this->actor, 0);
|
||||
}
|
||||
|
||||
static void func_80AF390C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
f32* unk_2C4 = &this->unk_2C4;
|
||||
*unk_2C4 += 1.0f;
|
||||
if (*unk_2C4 == kREG(6) + 40.0f) {
|
||||
func_80AF37AC();
|
||||
} else if (*unk_2C4 > kREG(4) + 50.0f) {
|
||||
this->actor.textId = 0x403E;
|
||||
func_8010B680(globalCtx, this->actor.textId, 0);
|
||||
this->action = 17;
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF39DC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
s32 pad;
|
||||
MessageContext* msgCtx;
|
||||
s32 pad2;
|
||||
u8 dialogState;
|
||||
Player* player;
|
||||
s32 pad3;
|
||||
|
||||
msgCtx = &globalCtx->msgCtx;
|
||||
dialogState = func_8010BDBC(msgCtx);
|
||||
|
||||
if (dialogState == 3) {
|
||||
if (this->unk_2C3 != 3) {
|
||||
osSyncPrintf("おれが小松だ! \n");
|
||||
this->unk_2C2++;
|
||||
if (this->unk_2C2 % 6 == 3) {
|
||||
player = PLAYER;
|
||||
osSyncPrintf("うおりゃー! \n");
|
||||
func_8005B1A4(globalCtx->cameraCtx.activeCameraPtrs[globalCtx->cameraCtx.unk_5C0]);
|
||||
player->actor.posRot.pos.x = 820.0f;
|
||||
player->actor.posRot.pos.y = 0.0f;
|
||||
player->actor.posRot.pos.z = 180.0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this->unk_2C3 = dialogState;
|
||||
if (func_8010BDBC(msgCtx) == 2) {
|
||||
this->action = 18;
|
||||
func_8005B1A4(globalCtx->cameraCtx.activeCameraPtrs[globalCtx->cameraCtx.unk_5C0]);
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF3ADC(EnRu2* this, GlobalContext* globalCtx) {
|
||||
this->unk_2C4 += 1.0f;
|
||||
if (this->unk_2C4 > kREG(5) + 100.0f) {
|
||||
func_80AF28E8(this, &D_0600F8B8, 0, -12.0f, 0);
|
||||
this->action = 0x13;
|
||||
func_80AF36EC(this, globalCtx);
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF3B74(EnRu2* this, GlobalContext* globalCtx) {
|
||||
if (this->unk_2C0 > (((u16)(kREG(3) + 0x28)) + ((u16)(kREG(2) + 0x96)) & 0xFFFF)) {
|
||||
Actor_Kill(&this->actor);
|
||||
}
|
||||
}
|
||||
|
||||
static void func_80AF3BC8(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF3878(this, globalCtx);
|
||||
Actor_SetHeight(&this->actor, 50.0f);
|
||||
func_80AF259C(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF3C04(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
func_80AF259C(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
Actor_SetHeight(&this->actor, 50.0f);
|
||||
func_80AF38D0(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF3C64(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
Actor_SetHeight(&this->actor, 50.0f);
|
||||
func_80AF390C(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF3CB8(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
Actor_SetHeight(&this->actor, 50.0f);
|
||||
func_80AF39DC(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF3D0C(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
Actor_SetHeight(&this->actor, 50.0f);
|
||||
func_80AF3ADC(this, globalCtx);
|
||||
}
|
||||
|
||||
static void func_80AF3D60(EnRu2* this, GlobalContext* globalCtx) {
|
||||
func_80AF37CC(this);
|
||||
func_80AF2744(this, globalCtx);
|
||||
EnRu2_FrameUpdateMatrix(this);
|
||||
func_80AF2608(this);
|
||||
Actor_SetHeight(&this->actor, 50.0f);
|
||||
func_80AF3B74(this, globalCtx);
|
||||
}
|
||||
|
||||
static void EnRu2_Update(EnRu2* this, GlobalContext* globalCtx) {
|
||||
if (this->action < 0 || this->action >= 20 || D_80AF50BC[this->action] == 0) {
|
||||
osSyncPrintf(VT_FGCOL(RED) "メインモードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
|
||||
return;
|
||||
}
|
||||
D_80AF50BC[this->action](this, globalCtx);
|
||||
}
|
||||
|
||||
static void EnRu2_Init(EnRu2* this, GlobalContext* globalCtx) {
|
||||
ActorShape_Init(&this->actor.shape, 0.0f, ActorShadow_DrawFunc_Circle, 30.0f);
|
||||
func_80AF2550(this, globalCtx);
|
||||
SkelAnime_InitSV(globalCtx, &this->skelAnime, &D_0600C700, NULL, &this->unk_190, &this->unk_21A, 0x17);
|
||||
|
||||
switch (func_80AF26A0(this)) {
|
||||
case 2:
|
||||
func_80AF2E1C(this, globalCtx);
|
||||
break;
|
||||
case 3:
|
||||
func_80AF3394(this, globalCtx);
|
||||
break;
|
||||
case 4:
|
||||
func_80AF3744(this, globalCtx);
|
||||
break;
|
||||
default:
|
||||
func_80AF2994(this, globalCtx);
|
||||
break;
|
||||
}
|
||||
|
||||
this->unk_2C2 = 0;
|
||||
this->unk_2C3 = 3;
|
||||
}
|
||||
|
||||
static void func_80AF3F14(EnRu2* this, GlobalContext* globalCtx) {
|
||||
}
|
||||
|
||||
static void func_80AF3F20(EnRu2* this, GlobalContext* globalCtx) {
|
||||
s32 pad[2];
|
||||
s16 temp = this->unk_2A4;
|
||||
UNK_PTR addr = D_80AF410C[temp];
|
||||
SkelAnime* skelAnime = &this->skelAnime;
|
||||
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
|
||||
Gfx* gfxArr[4];
|
||||
|
||||
func_800C6AC4(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2.c", 642);
|
||||
func_80093D18(globalCtx->state.gfxCtx);
|
||||
|
||||
gSPSegment(gfxCtx->polyOpa.p++, 0x08, SEGMENTED_TO_VIRTUAL(addr));
|
||||
gSPSegment(gfxCtx->polyOpa.p++, 0x09, SEGMENTED_TO_VIRTUAL(addr));
|
||||
gDPSetEnvColor(gfxCtx->polyOpa.p++, 0x00, 0x00, 0x00, 0xFF);
|
||||
gSPSegment(gfxCtx->polyOpa.p++, 0x0C, &D_80116280[2]);
|
||||
|
||||
SkelAnime_DrawSV(globalCtx, skelAnime->skeleton, skelAnime->actorDrawTbl, skelAnime->dListCount, NULL, NULL,
|
||||
&this->actor);
|
||||
func_800C6B54(gfxArr, globalCtx->state.gfxCtx, "../z_en_ru2.c", 663);
|
||||
}
|
||||
|
||||
static void EnRu2_Draw(EnRu2* this, GlobalContext* globalCtx) {
|
||||
if (this->drawConfig < 0 || this->drawConfig >= 3 || D_80AF510C[this->drawConfig] == 0) {
|
||||
osSyncPrintf(VT_FGCOL(RED) "描画モードがおかしい!!!!!!!!!!!!!!!!!!!!!!!!!\n" VT_RST);
|
||||
return;
|
||||
}
|
||||
D_80AF510C[this->drawConfig](this, globalCtx);
|
||||
}
|
||||
|
|
|
@ -6,7 +6,24 @@
|
|||
|
||||
typedef struct {
|
||||
/* 0x0000 */ Actor actor;
|
||||
/* 0x014C */ char unk_14C[0x1C8];
|
||||
/* 0x014C */ SkelAnime skelAnime;
|
||||
/* 0x0190 */ s8 unk_190; // likely a struct
|
||||
/* 0x0191 */ char unk_191[0x89];
|
||||
/* 0x021A */ s8 unk_21A; // another of the same struct
|
||||
/* 0x021B */ char unk_21B[0x89];
|
||||
/* 0x02A4 */ s16 unk_2A4;
|
||||
/* 0x02A6 */ s16 unk_2A6;
|
||||
/* 0x02A8 */ s32 action;
|
||||
/* 0x02AC */ s32 drawConfig;
|
||||
/* 0x02B0 */ f32 unk_2B0;
|
||||
/* 0x02B4 */ u32 unk_2B4;
|
||||
/* 0x02B8 */ s32 unk_2B8;
|
||||
/* 0x02BC */ s32 unk_2BC;
|
||||
/* 0x02C0 */ u16 unk_2C0;
|
||||
/* 0x02C2 */ u8 unk_2C2;
|
||||
/* 0x02C3 */ u8 unk_2C3;
|
||||
/* 0x02C4 */ f32 unk_2C4;
|
||||
/* 0x02C8 */ ColliderCylinderMain collider;
|
||||
} EnRu2; // size = 0x0314
|
||||
|
||||
extern const ActorInit En_Ru2_InitVars;
|
||||
|
|
116
src/overlays/actors/ovl_En_Ru2/z_en_ru2_cutscene_data.c
Normal file
116
src/overlays/actors/ovl_En_Ru2/z_en_ru2_cutscene_data.c
Normal file
|
@ -0,0 +1,116 @@
|
|||
#include "z_en_ru2.h"
|
||||
|
||||
static u32 D_80AF411C[] = {
|
||||
0x00000023, 0x00000D0A, 0x00000020, 0x00000001, 0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0xFFFFFFFC,
|
||||
0x00000002, 0x00000000, 0xFFFFFFFC, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x0000001F, 0x00000005,
|
||||
0x00010000, 0x033D0000, 0x00000000, 0x00000000, 0x000000D8, 0x00000000, 0x00000000, 0x000000D8, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x0002033D, 0x033E0000, 0x00000000, 0x00000000, 0x000000D8, 0x00000000,
|
||||
0x00000000, 0x000000D8, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0004033E, 0x03820000, 0x00000000,
|
||||
0x00000000, 0x000000D8, 0x00000000, 0x00000000, 0x000000D8, 0x00000000, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00020382, 0x03B40000, 0x00000000, 0x00000000, 0x000000D8, 0x00000000, 0x00000000, 0x00000052, 0x00000000,
|
||||
0x00000000, 0xC02B851F, 0x00000000, 0x000303B4, 0x0D0A0000, 0x00000000, 0x00000000, 0x00000052, 0x00000000,
|
||||
0x00000000, 0x00000052, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000000A, 0x00000005, 0x000D0000,
|
||||
0x00F00000, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x000500F0, 0x02080000, 0x40000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
|
||||
0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00030208, 0x02260000, 0x40000000, 0x00000000,
|
||||
0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00050226,
|
||||
0x03210000, 0x40000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00130321, 0x07A40000, 0xC0000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000,
|
||||
0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000031, 0x00000001, 0x00010000, 0x0BB80000,
|
||||
0x00000000, 0x00000000, 0xFFFFFFF0, 0xFFFFFF87, 0x00000000, 0xFFFFFFF0, 0xFFFFFF87, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000004, 0x00000005, 0x00050000, 0x01800000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058,
|
||||
0xFFFFFFA1, 0x00000000, 0x00000058, 0x00000000, 0x00000000, 0x00000000, 0x00060180, 0x01C60000, 0x00000000,
|
||||
0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x000501C6, 0x022A0000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x0006022A, 0x02700000, 0x00000000, 0xFFFFFFA1, 0x00000000, 0x00000058,
|
||||
0xFFFFFFA1, 0x00000000, 0x00000058, 0x00000000, 0x00000000, 0x00000000, 0x00050270, 0x0BB90000, 0x00000000,
|
||||
0xFFFFFFA1, 0x00000000, 0x00000058, 0xFFFFFFA1, 0x00000000, 0x00000058, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000027, 0x00000001, 0x00010000, 0x0BB80000, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFE, 0x00000000,
|
||||
0x00000000, 0xFFFFFFFE, 0x00000000, 0x00000000, 0x00000000, 0x0000002A, 0x00000003, 0x00010000, 0x00920000,
|
||||
0x00000000, 0x000000C3, 0x00000006, 0x00000000, 0x000000C3, 0x00000006, 0x00000000, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00020092, 0x02F20000, 0x00000000, 0x000000C3, 0x00000006, 0x00000000, 0x000000C3, 0x00000006,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x000302F2, 0x0A440000, 0x00000000, 0x000000C3, 0x00000006,
|
||||
0x00000000, 0x000000C3, 0x00000006, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x0000002D, 0x00000001,
|
||||
0x0001032A, 0x03370337, 0x0000002D, 0x00000001, 0x00050339, 0x03570357, 0x0000002D, 0x00000001, 0x00010442,
|
||||
0x04610461, 0x00000001, 0x00010000, 0x012D0000, 0x00000000, 0x432F65F8, 0xFD97001E, 0x00470000, 0x00000000,
|
||||
0x432F65F8, 0xFD97001E, 0x00471FBC, 0x00000000, 0x432F65F8, 0xFD97001E, 0x0047D5E0, 0x00000000, 0x432F65F8,
|
||||
0xFD97001E, 0x00470000, 0x00000000, 0x432F65F8, 0xFD97001E, 0x00471F98, 0x00000000, 0x432F65F8, 0xFD97001E,
|
||||
0x00470000, 0x00000000, 0x4311CC7C, 0xFE38006B, 0x00380000, 0x00000000, 0x42726667, 0xFFB40036, 0x00470164,
|
||||
0x00000000, 0x42726667, 0x00740036, 0x00602100, 0x00000000, 0x42726667, 0x00EC000B, 0x00400049, 0x00000000,
|
||||
0x42726667, 0x00EC000B, 0x0040204C, 0x00000000, 0x42726667, 0x00EC000B, 0x0040E990, 0xFF000000, 0x42726667,
|
||||
0x00EC000B, 0x00400000, 0x00000001, 0x00010107, 0x05CC0000, 0x00000000, 0x4228E87B, 0x00A10035, 0x001A0000,
|
||||
0x00000000, 0x4228E87B, 0x00A10035, 0x001A1FBC, 0x00000000, 0x4228E87B, 0x00A10035, 0x001AD5E0, 0x00000000,
|
||||
0x4228E87B, 0x00820009, 0x00600000, 0x00000000, 0x4228E87B, 0x00820009, 0x00601F98, 0x00000000, 0x4228E87B,
|
||||
0x00820009, 0x00600000, 0x00000000, 0x4228E87B, 0x00820009, 0x00600000, 0xFF000000, 0x4228E87B, 0x00820009,
|
||||
0x00600164, 0x00000001, 0x0001017F, 0x05C20000, 0x00000000, 0x428C743C, 0x00CF002D, 0x00220000, 0x00000000,
|
||||
0x428C743C, 0x00CF002D, 0x00221FBC, 0x00000000, 0x428C743C, 0x00CF002D, 0x0022D5E0, 0x00000000, 0x428C743C,
|
||||
0x00CF002D, 0x00220000, 0xFF000000, 0x428C743C, 0x00CF002D, 0x00221F98, 0x00000001, 0x000101C5, 0x06080000,
|
||||
0x00000000, 0x42341BB1, 0xFFC6005A, 0x00460000, 0x00000000, 0x42341BB1, 0xFFC6005A, 0x00461FBC, 0x00000000,
|
||||
0x42341BB1, 0xFFC6005A, 0x0046D5E0, 0x00000000, 0x42341BB1, 0xFFC6005A, 0x00460000, 0xFF000000, 0x42341BB1,
|
||||
0xFFC6005A, 0x00461F98, 0x00000001, 0x00010229, 0x066C0000, 0x00000000, 0x428C743C, 0x00CF002D, 0x00220000,
|
||||
0x00000000, 0x428C743C, 0x00CF002D, 0x00221FBC, 0x00000000, 0x428C743C, 0x00CF002D, 0x0022D5E0, 0x00000000,
|
||||
0x428C743C, 0x00CF002D, 0x00220000, 0xFF000000, 0x428C743C, 0x00CF002D, 0x00221F98, 0x00000001, 0x0001026F,
|
||||
0x06B20000, 0x00000000, 0x4271B55A, 0x00A1003B, 0x00000000, 0x00000000, 0x4271B55A, 0x00A1003B, 0x00001FBC,
|
||||
0x00000000, 0x4271B55A, 0x00A1003B, 0x0000D5E0, 0x00000000, 0x4271B55A, 0x00A1003B, 0x00000000, 0xFF000000,
|
||||
0x4271B55A, 0x00A1003B, 0x00001F98, 0x00000001, 0x000102B5, 0x06F80000, 0x00000000, 0x4271B55A, 0x00970052,
|
||||
0x00230000, 0x00000000, 0x4271B55A, 0x00970052, 0x00231FBC, 0x00000000, 0x4271B55A, 0x00970052, 0x0023D5E0,
|
||||
0x00000000, 0x4271B55A, 0x00970052, 0x00230000, 0xFF000000, 0x4271B55A, 0x00970052, 0x00231F98, 0x00000001,
|
||||
0x000102FB, 0x03B00000, 0x00000000, 0x4271B55A, 0x00E60007, 0x00180000, 0x00000000, 0x4271B55A, 0x00E60007,
|
||||
0x00181FBC, 0x00000000, 0x4271B55A, 0x00E60007, 0x0018D5E0, 0x00000000, 0x4271B55A, 0x00CF003E, 0x000F0000,
|
||||
0x00000000, 0x428CDAA2, 0x00E600F0, 0x00181F98, 0x00000000, 0x428CDAA2, 0x00E600F0, 0x00180000, 0x00000000,
|
||||
0x428CDAA2, 0x00E600F0, 0x00180000, 0xFF000000, 0x428CDAA2, 0x00E600F0, 0x00180164, 0x00000001, 0x00010337,
|
||||
0x048D0000, 0x00000000, 0x42700000, 0x000D0356, 0x00020000, 0x00000000, 0x42700000, 0x00090355, 0x00051FBC,
|
||||
0x00000000, 0x42700000, 0xFFFD0355, 0x0005D5E0, 0x00000000, 0x42700000, 0xFFF70355, 0xFFFA0000, 0x00000000,
|
||||
0x42700000, 0xFFFE0354, 0xFFEF1F98, 0x00000000, 0x42700000, 0x00090354, 0xFFEF0000, 0x00000000, 0x42700000,
|
||||
0x00100354, 0xFFFA0000, 0x00000000, 0x42700000, 0x00090354, 0x00050164, 0xFF000000, 0x42700000, 0xFFFD0353,
|
||||
0x00052100, 0x00000005, 0x00010383, 0x08200000, 0x00000000, 0x4289332C, 0x00000021, 0xFFE50000, 0x00000000,
|
||||
0x4289332C, 0x00000021, 0xFFE51FBC, 0x00000000, 0x4289332C, 0x00000044, 0xFFE6D5E0, 0x00000000, 0x4289332C,
|
||||
0x00000067, 0xFFE60000, 0x00000000, 0x4289332C, 0x00000067, 0xFFE61F98, 0x00000000, 0x4289332C, 0x00000067,
|
||||
0xFFE60000, 0x00000000, 0x4289332C, 0x00000067, 0xFFE60000, 0xFF000000, 0x4289332C, 0x00000067, 0xFFE60164,
|
||||
0x00000002, 0x00010000, 0x014A0000, 0x001E0014, 0x432F65F8, 0xFD77FFB5, 0x00650000, 0x00E20014, 0x432F65F8,
|
||||
0xFD74FFB5, 0x00621FBC, 0x001E0014, 0x432F65F8, 0xFD6EFFB5, 0x0057D5E0, 0x00E20014, 0x432F65F8, 0xFD5A007F,
|
||||
0x00470000, 0x00000014, 0x432F65F8, 0xFD290000, 0x00471F98, 0x00000014, 0x4311CC7C, 0xFDFF0000, 0x002B0000,
|
||||
0x0000001E, 0x42726667, 0xFEA30059, 0x002F0000, 0x0000001E, 0x42726667, 0x0006003D, 0x00010164, 0x0000001E,
|
||||
0x42726667, 0x00210042, 0x001C2100, 0x0000001E, 0x42726667, 0x009E002A, 0x00010049, 0x0000001E, 0x42726667,
|
||||
0x009E002A, 0x0001204C, 0x0000001E, 0x42726667, 0x009E002A, 0x0001E990, 0xFF00001E, 0x42726667, 0x009E002A,
|
||||
0x00010000, 0x00000002, 0x00010107, 0x05E90000, 0x0000001E, 0x4228E87B, 0x0142003E, 0xFF860000, 0x0000001E,
|
||||
0x4228E87B, 0x0142003E, 0xFF861FBC, 0x00000032, 0x4228E87B, 0x0142003E, 0xFF86D5E0, 0x00000032, 0x4228E87B,
|
||||
0x00E8003F, 0xFFAD0000, 0x0000001E, 0x4228E87B, 0x00E8003F, 0xFFAD1F98, 0x000003E8, 0x4228E87B, 0x00E8003F,
|
||||
0xFFAD0000, 0x0000001E, 0x4228E87B, 0x00E8003F, 0xFFAD0000, 0xFF00001E, 0x4228E87B, 0x00E8003F, 0xFFAD0164,
|
||||
0x00000002, 0x0001017F, 0x05DF0000, 0x0000001E, 0x428C743C, 0x0033003E, 0xFF970000, 0x0000001E, 0x428C743C,
|
||||
0x0033003E, 0xFF971FBC, 0x000003E8, 0x428C743C, 0x0033003E, 0xFF97D5E0, 0x0000001E, 0x428C743C, 0x0033003E,
|
||||
0xFF970000, 0xFF00001E, 0x428C743C, 0x0033003E, 0xFF971F98, 0x00000002, 0x000101C5, 0x06250000, 0x0000001E,
|
||||
0x42341BB1, 0x00660016, 0xFFE10000, 0x0000001E, 0x42341BB1, 0x00660016, 0xFFE11FBC, 0x000003E8, 0x42341BB1,
|
||||
0x00660016, 0xFFE1D5E0, 0x0000001E, 0x42341BB1, 0x00660016, 0xFFE10000, 0xFF00001E, 0x42341BB1, 0x00660016,
|
||||
0xFFE11F98, 0x00000002, 0x00010229, 0x06890000, 0x0000001E, 0x428C743C, 0x0033003E, 0xFF970000, 0x0000001E,
|
||||
0x428C743C, 0x0033003E, 0xFF971FBC, 0x000003E8, 0x428C743C, 0x0033003E, 0xFF97D5E0, 0x0000001E, 0x428C743C,
|
||||
0x0033003E, 0xFF970000, 0xFF00001E, 0x428C743C, 0x0033003E, 0xFF971F98, 0x00000002, 0x0001026F, 0x06CF0000,
|
||||
0x0000001E, 0x4271B55A, 0x015B0016, 0x00000000, 0x0000001E, 0x4271B55A, 0x015B0016, 0x00001FBC, 0x000003E8,
|
||||
0x4271B55A, 0x015B0016, 0x0000D5E0, 0x0000001E, 0x4271B55A, 0x015B0016, 0x00000000, 0xFF00001E, 0x4271B55A,
|
||||
0x015B0016, 0x00001F98, 0x00000002, 0x000102B5, 0x07150000, 0x0000001E, 0x4271B55A, 0x0102FFE2, 0xFFCA0000,
|
||||
0x0000001E, 0x4271B55A, 0x0102FFE2, 0xFFCA1FBC, 0x000003E8, 0x4271B55A, 0x0102FFE2, 0xFFCAD5E0, 0x0000001E,
|
||||
0x4271B55A, 0x0102FFE2, 0xFFCA0000, 0xFF00001E, 0x4271B55A, 0x0102FFE2, 0xFFCA1F98, 0x00000002, 0x000102FB,
|
||||
0x03CD0000, 0x0000001E, 0x4271B55A, 0x00600069, 0xFFE30000, 0x00000028, 0x4271B55A, 0x00600069, 0xFFE31FBC,
|
||||
0x0000000F, 0x4271B55A, 0x00600069, 0xFFE3D5E0, 0x0000000F, 0x42701BC0, 0x006E00C4, 0xFFE60000, 0x00000014,
|
||||
0x428CDAA2, 0x00B9018F, 0x00061F98, 0x0000001E, 0x428CDAA2, 0x00B9018F, 0x00060000, 0x0000001E, 0x428CDAA2,
|
||||
0x00B9018F, 0x00060000, 0xFF00001E, 0x428CDAA2, 0x00B9018F, 0x00060164, 0x00000002, 0x00010337, 0x04BE0000,
|
||||
0x00000032, 0x42700000, 0x00030006, 0xFFFA0000, 0x00000028, 0x42700000, 0x00030006, 0xFFFA1FBC, 0x0000001E,
|
||||
0x424BFFF7, 0x00030006, 0xFFFAD5E0, 0x00000014, 0x41A4CC7E, 0x00030006, 0xFFFA0000, 0x00000033, 0x412CCC23,
|
||||
0x00030006, 0xFFFA1F98, 0x00000032, 0x412665BD, 0x00030006, 0xFFFA0000, 0x00000032, 0x412665BD, 0x00030006,
|
||||
0xFFFA0000, 0x00000032, 0x4123328A, 0x00030006, 0xFFFA0164, 0xFF000032, 0x412FFF56, 0x00030006, 0xFFFA2100,
|
||||
0x00000006, 0x00010383, 0x083D0000, 0x0000001E, 0x4289332C, 0x00000064, 0x00050000, 0x0000001E, 0x4289332C,
|
||||
0x00000065, 0x00061FBC, 0x0000001E, 0x4289332C, 0x00010063, 0x0029D5E0, 0x0000001E, 0x4289332C, 0x0000002A,
|
||||
0x00100000, 0x0000001E, 0x4289332C, 0x0000002A, 0x00101F98, 0x000003E8, 0x4289332C, 0x0000002A, 0x00100000,
|
||||
0x0000001E, 0x4289332C, 0x0000002A, 0x00100000, 0xFF00001E, 0x4289332C, 0x0000002A, 0x00100164, 0x0000003E,
|
||||
0x00000001, 0x00040000, 0x0BB8C10F, 0x00000000, 0x0000004D, 0x00000050, 0xFFFFFFFE, 0x00000000, 0x00000050,
|
||||
0x00000000, 0xBCD242E7, 0x00000000, 0x3CD242E7, 0x00000013, 0x0000000E, 0xFFFF0000, 0x018AFFFF, 0xFFFFFFFF,
|
||||
0x4041018A, 0x01BC0000, 0x00000000, 0xFFFF01BC, 0x01D0FFFF, 0xFFFFFFFF, 0x404601D0, 0x021F0000, 0x00000000,
|
||||
0xFFFF021F, 0x0234FFFF, 0xFFFFFFFF, 0x40490234, 0x02650000, 0x00000000, 0xFFFF0265, 0x027AFFFF, 0xFFFFFFFF,
|
||||
0x4047027A, 0x02AC0000, 0x00000000, 0xFFFF02AC, 0x02C0FFFF, 0xFFFFFFFF, 0x404A02C0, 0x02EE0000, 0x00000000,
|
||||
0xFFFF02EE, 0x043DFFFF, 0xFFFFFFFF, 0x003D043D, 0x04420000, 0x00000000, 0xFFFF0442, 0x047EFFFF, 0xFFFFFFFF,
|
||||
0x4042047E, 0x04880000, 0x00000000, 0x000003E8, 0x00000001, 0x001504A6, 0x04BD04BD, 0x00000056, 0x00000001,
|
||||
0x00440384, 0x03850000, 0x00000000, 0x00000000, 0xFFFFFFC7, 0x00000034, 0x00000000, 0xFFFFFFC7, 0x00000034,
|
||||
0x00000000, 0x00000000, 0x00000000, 0x0000007C, 0x00000001, 0x00040320, 0x03520000, 0x00000000, 0x00000000,
|
||||
0xFFFFFFC6, 0x00000030, 0x00000000, 0xFFFFFFC6, 0x00000030, 0x00000000, 0x00000000, 0x00000000, 0xFFFFFFFF,
|
||||
0x00000000,
|
||||
};
|
|
@ -1,15 +1,10 @@
|
|||
#include <ultra64.h>
|
||||
#include <global.h>
|
||||
#include "z_en_tk.h"
|
||||
/*
|
||||
* File: z_en_tk.c
|
||||
* Overlay: ovl_En_Tk
|
||||
* Description: Dampe NPC from "Dampe's Heart-Pounding Gravedigging Tour"
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
/* 0x0000 */ u8 health; /* SubActorStruct98.health */
|
||||
/* 0x0002 */ s16 h_2; /* SubActorStruct98.unk_10 */
|
||||
/* 0x0004 */ s16 h_4; /* SubActorStruct98.unk_12 */
|
||||
/* 0x0006 */ s16 h_6; /* SubActorStruct98.unk_14 */
|
||||
/* 0x0008 */ u8 mass; /* SubActorStruct98.mass */
|
||||
/* 0x000A */
|
||||
} EnTk_SubActorStruct98Init;
|
||||
#include "z_en_tk.h"
|
||||
|
||||
#define ROOM 0x00
|
||||
#define FLAGS 0x00000009
|
||||
|
@ -135,7 +130,7 @@ void EnTkEff_Draw(EnTk* this, GlobalContext* globalCtx) {
|
|||
for (i = 0; i < ARRAY_COUNT(this->eff); i++) {
|
||||
if (eff->active != 0) {
|
||||
if (gfxSetup == 0) {
|
||||
gfxCtx->polyXlu.p = func_80093774(gfxCtx->polyXlu.p, 0);
|
||||
gfxCtx->polyXlu.p = Gfx_CallSetupDL(gfxCtx->polyXlu.p, 0);
|
||||
gSPDisplayList(gfxCtx->polyXlu.p++, D_0600BC90);
|
||||
gDPSetEnvColor(gfxCtx->polyXlu.p++, 0x64, 0x3C, 0x14, 0x00);
|
||||
gfxSetup = 1;
|
||||
|
@ -181,7 +176,7 @@ static ColliderCylinderInit D_80B1D508 = {
|
|||
0x00, 0x00, 0x01, 0x00, 0x001E, 0x0034, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
static EnTk_SubActorStruct98Init D_80B1D534 = {
|
||||
static Sub98Init5 D_80B1D534 = {
|
||||
0x00, 0x0000, 0x0000, 0x0000, 0xFF,
|
||||
};
|
||||
|
||||
|
|
|
@ -291,5 +291,5 @@ void EnTuboTrap_Update(EnTuboTrap* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
void EnTuboTrap_Draw(EnTuboTrap* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, D_05017870);
|
||||
Gfx_DrawDListOpa(globalCtx, D_05017870);
|
||||
}
|
||||
|
|
|
@ -38,5 +38,5 @@ static void Destroy(ActorEnVase* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void Draw(ActorEnVase* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &DL_VASE);
|
||||
Gfx_DrawDListOpa(globalCtx, &DL_VASE);
|
||||
}
|
||||
|
|
|
@ -57,7 +57,12 @@ static ColliderCylinderInit colCylinderInit = {
|
|||
0x00, 0x01, 0x01, 0x00, 0x001E, 0x0028, 0x0000, 0x0000, 0x0000, 0x0000,
|
||||
};
|
||||
|
||||
static SubActor98Init subActor98Init = { 0x04, 0x001E, 0x0028, 0x96 };
|
||||
static Sub98Init4 sub98Init = {
|
||||
0x04,
|
||||
0x001E,
|
||||
0x0028,
|
||||
0x96,
|
||||
};
|
||||
|
||||
static ActorDamageChart damageChart = { {
|
||||
{ 0x1, 0x0 }, { 0x0, 0x2 }, { 0x0, 0x1 }, { 0x0, 0x2 }, { 0x1, 0x0 }, { 0x0, 0x2 }, { 0x0, 0x2 }, { 0x1, 0x0 },
|
||||
|
@ -96,7 +101,7 @@ static void EnWallmas_Init(EnWallmas* this, GlobalContext* globalCtx) {
|
|||
|
||||
ActorCollider_AllocCylinder(globalCtx, &this->colCylinder);
|
||||
ActorCollider_InitCylinder(globalCtx, &this->colCylinder, &this->actor, &colCylinderInit);
|
||||
func_80061ED4(&this->actor.sub_98, &damageChart, &subActor98Init);
|
||||
func_80061ED4(&this->actor.sub_98, &damageChart, &sub98Init);
|
||||
this2->switchFlag = (u8)(this2->actor.params >> 0x8);
|
||||
this->actor.params = this->actor.params & 0xFF;
|
||||
|
||||
|
|
|
@ -132,5 +132,5 @@ static void ObjBombiwa_Update(ObjBombiwa* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void ObjBombiwa_Draw(ObjBombiwa* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_060009E0);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_060009E0);
|
||||
}
|
||||
|
|
|
@ -121,5 +121,5 @@ static void ObjElevator_Update(ObjElevator* this, GlobalContext* globalCtx) {
|
|||
}
|
||||
|
||||
static void ObjElevator_Draw(ObjElevator* this, GlobalContext* globalCtx) {
|
||||
Draw_DListOpa(globalCtx, &D_06000180);
|
||||
Gfx_DrawDListOpa(globalCtx, &D_06000180);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue