mirror of https://github.com/zeldaret/oot.git
Merge 1e7fb6f7cd into eb5dac74d6
This commit is contained in:
commit
7d87de438c
|
|
@ -56,16 +56,16 @@
|
|||
<Array Name="object_st_Vtx_0026D0" Count="398" Offset="0x26D0">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
<DList Name="object_st_DL_003FB0" Offset="0x3FB0"/>
|
||||
<DList Name="object_st_DL_0043D8" Offset="0x43D8"/>
|
||||
<DList Name="object_st_DL_0045C0" Offset="0x45C0"/>
|
||||
<DList Name="object_st_DL_004658" Offset="0x4658"/>
|
||||
<DList Name="object_st_DL_0046F0" Offset="0x46F0"/>
|
||||
<DList Name="object_st_DL_004788" Offset="0x4788"/>
|
||||
<DList Name="object_st_DL_004820" Offset="0x4820"/>
|
||||
<DList Name="object_st_DL_0048B8" Offset="0x48B8"/>
|
||||
<DList Name="object_st_DL_004950" Offset="0x4950"/>
|
||||
<DList Name="object_st_DL_0049E8" Offset="0x49E8"/>
|
||||
<DList Name="gGoldSkulltulaLimb5Dlist" Offset="0x3FB0"/>
|
||||
<DList Name="gGoldSkulltulaLimb4Dlist" Offset="0x43D8"/>
|
||||
<DList Name="gGoldSkulltulaLimb11Dlist" Offset="0x45C0"/>
|
||||
<DList Name="gGoldSkulltulaLimb14Dlist" Offset="0x4658"/>
|
||||
<DList Name="gGoldSkulltulaLimb8Dlist" Offset="0x46F0"/>
|
||||
<DList Name="gGoldSkulltulaLimb23Dlist" Offset="0x4788"/>
|
||||
<DList Name="gGoldSkulltulaLimb26Dlist" Offset="0x4820"/>
|
||||
<DList Name="gGoldSkulltulaLimb20Dlist" Offset="0x48B8"/>
|
||||
<DList Name="gGoldSkulltulaLimb17Dlist" Offset="0x4950"/>
|
||||
<DList Name="gGoldSkulltulaLimb29Dlist" Offset="0x49E8"/>
|
||||
<Array Name="gSkulltulaTokenVtx" Count="25" Offset="0x4A80">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
|
|
|
|||
|
|
@ -1085,7 +1085,7 @@ s32 OnePointCutscene_SetInfo(PlayState* play, s16 subCamId, s16 csId, Actor* act
|
|||
D_801211D4[0].atTargetInit.x = actor->focus.pos.x;
|
||||
D_801211D4[0].atTargetInit.y = actor->focus.pos.y - 5.0f;
|
||||
D_801211D4[0].atTargetInit.z = actor->focus.pos.z;
|
||||
spC0 = ((EnSw*)actor)->unk_364;
|
||||
spC0 = ((EnSw*)actor)->surfaceNormal;
|
||||
PRINTF("%s(%d): xyz_t: %s (%f %f %f)\n", "../z_onepointdemo.c", 1671, "&cp", spC0.x, spC0.y, spC0.z);
|
||||
D_801211D4[0].eyeTargetInit.x = (actor->focus.pos.x + (120.0f * spC0.x)) - (Rand_ZeroOne() * 20.0f);
|
||||
D_801211D4[0].eyeTargetInit.y = actor->focus.pos.y + (120.0f * spC0.y) + 20.0f;
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -14,39 +14,53 @@ typedef struct EnSw {
|
|||
/* 0x0190 */ EnSwActionFunc actionFunc;
|
||||
/* 0x0194 */ ColliderJntSph collider;
|
||||
/* 0x01B4 */ ColliderJntSphElement colliderElements[1];
|
||||
/* 0x01F4 */ Color_RGBA8 unk_1F4;
|
||||
/* 0x01F4 */ Color_RGBA8 limb4Color; // never set past black.
|
||||
/* 0x01F8 */ Vec3s jointTable[30];
|
||||
/* 0x02AC */ Vec3s morphTable[30];
|
||||
/* 0x0360 */ u8 unk_360;
|
||||
/* 0x0364 */ Vec3f unk_364;
|
||||
/* 0x0370 */ Vec3f unk_370;
|
||||
/* 0x037C */ Vec3f unk_37C;
|
||||
/* 0x0388 */ s16 unk_388;
|
||||
/* 0x038A */ s16 unk_38A;
|
||||
/* 0x038C */ s16 unk_38C;
|
||||
/* 0x038E */ s16 unk_38E;
|
||||
/* 0x0390 */ s16 unk_390;
|
||||
/* 0x0392 */ s16 unk_392;
|
||||
/* 0x0394 */ s16 unk_394;
|
||||
/* 0x0396 */ char unk_396[0x42];
|
||||
/* 0x03D8 */ MtxF unk_3D8;
|
||||
/* 0x0360 */ u8 goldInAir; // set when revealed, unset when landing.
|
||||
/* 0x0364 */ Vec3f surfaceNormal; // normal of wall/floor/ceiling it's on.
|
||||
/* 0x0370 */ Vec3f unk_370; // used for rotate calculation
|
||||
/* 0x037C */ Vec3f unk_37C; // used for rotate calculation
|
||||
/* 0x0388 */ s16 animTimer;
|
||||
/* 0x038A */ s16 animVar; // used to determine crawl and "death bounce" animations.
|
||||
/* 0x038C */ s16 waitTimer;
|
||||
/* 0x038E */ s16 crawlTimer;
|
||||
/* 0x0390 */ s16 attackTimer;
|
||||
/* 0x0392 */ s16 damageTimer;
|
||||
/* 0x0394 */ s16 deathFlamesTimer;
|
||||
/* 0x0396 */ char unk_396[0x42]; //another Mtx(F)?
|
||||
/* 0x03D8 */ MtxF rotMtxF;
|
||||
/* 0x0418 */ char unk_418[8];
|
||||
/* 0x0420 */ f32 unk_420;
|
||||
/* 0x0420 */ f32 rotateMag;
|
||||
/* 0x0424 */ char unk_424[0x8];
|
||||
/* 0x042C */ u8 unk_42C;
|
||||
/* 0x0430 */ struct CollisionPoly* unk_430;
|
||||
/* 0x0434 */ Vec3f unk_434;
|
||||
/* 0x0440 */ s16 unk_440;
|
||||
/* 0x0442 */ s16 unk_442;
|
||||
/* 0x0444 */ s16 unk_444;
|
||||
/* 0x0446 */ s16 unk_446;
|
||||
/* 0x0448 */ Vec3f unk_448;
|
||||
/* 0x0454 */ Vec3f unk_454;
|
||||
/* 0x0460 */ Vec3f unk_460;
|
||||
/* 0x046C */ Vec3f unk_46C;
|
||||
/* 0x0478 */ Vec3f unk_478;
|
||||
/* 0x0484 */ Vec3f unk_484;
|
||||
/* 0x042C */ u8 goldMoveBool; // set during EnSw_GoldMove, never read.
|
||||
/* 0x0430 */ struct CollisionPoly* wallPoly;
|
||||
/* 0x0434 */ Vec3f unk_434; // set during EnSW_LineTestWall, never read. another target pos?
|
||||
/* 0x0440 */ s16 sfxTimer;
|
||||
/* 0x0442 */ s16 dashTimer;
|
||||
/* 0x0444 */ s16 rotZTarget;
|
||||
/* 0x0448 */ Vec3f targetPos;
|
||||
/* 0x0454 */ Vec3f eyeLine0; // used for line tests of walls/player
|
||||
/* 0x0460 */ Vec3f eyeLine1;
|
||||
/* 0x046C */ Vec3f eyeLine2;
|
||||
/* 0x0478 */ Vec3f eyeLine3;
|
||||
/* 0x0484 */ Vec3f wallCast;
|
||||
/* 0x0490 */ char unk_490[0x48];
|
||||
} EnSw; // size = 0x04D8
|
||||
|
||||
// Skullwalltula type stored in last 3 bits of params.
|
||||
#define ENSW_GET_TYPE(thisx) PARAMS_GET_S(thisx->params,13,3)
|
||||
// version of the macro used for the whole entity struct.
|
||||
#define ENSW_GET_TYPE_EN(this) PARAMS_GET_S(this->actor.params,13,3)
|
||||
|
||||
#define EN_SW_PARAM_GOLD_SOIL 0x8000
|
||||
#define EN_SW_PARAM_GOLD_TREE 0xE000
|
||||
|
||||
typedef enum EnSwType{
|
||||
SW_TYPE_NORMAL, // normal Skull(wall)tula
|
||||
SW_TYPE_GOLD_DEFAULT, // normal Gold Skulltula, found in dungeons
|
||||
SW_TYPE_GOLD_NIGHT, // nocturnal Gold Skulltula, found outside
|
||||
SW_TYPE_GOLD_HIDDEN_SOIL, // found by using bugs on soil patches and hitting crates
|
||||
SW_TYPE_GOLD_HIDDEN_TREE, // found by hitting trees
|
||||
} EnSwType;
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -20,6 +20,8 @@
|
|||
#include "player.h"
|
||||
#include "skin_matrix.h"
|
||||
|
||||
#include "overlays/actors/ovl_En_Sw/z_en_sw.h"
|
||||
|
||||
#include "assets/objects/object_wood02/object_wood02.h"
|
||||
|
||||
#define FLAGS 0
|
||||
|
|
@ -357,7 +359,7 @@ void EnWood02_Update(Actor* thisx, PlayState* play2) {
|
|||
} else {
|
||||
if (this->actor.home.rot.z != 0) {
|
||||
this->actor.home.rot.z &= 0x1FFF;
|
||||
this->actor.home.rot.z |= 0xE000;
|
||||
this->actor.home.rot.z |= EN_SW_PARAM_GOLD_TREE;
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_SW, dropsSpawnPt.x, dropsSpawnPt.y, dropsSpawnPt.z, 0,
|
||||
this->actor.world.rot.y, 0, this->actor.home.rot.z);
|
||||
this->actor.home.rot.z = 0;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@
|
|||
#include "effect.h"
|
||||
#include "play_state.h"
|
||||
|
||||
#include "overlays/actors/ovl_En_Sw/z_en_sw.h"
|
||||
|
||||
#include "assets/objects/object_kibako2/object_kibako2.h"
|
||||
|
||||
#define FLAGS 0
|
||||
|
|
@ -171,7 +173,7 @@ void ObjKibako2_Kill(ObjKibako2* this, PlayState* play) {
|
|||
|
||||
if (PARAMS_GET_NOSHIFT(params, 15, 1) == 0) {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_SW, this->dyna.actor.world.pos.x, this->dyna.actor.world.pos.y,
|
||||
this->dyna.actor.world.pos.z, 0, this->dyna.actor.shape.rot.y, 0, params | 0x8000);
|
||||
this->dyna.actor.world.pos.z, 0, this->dyna.actor.shape.rot.y, 0, params | EN_SW_PARAM_GOLD_SOIL);
|
||||
}
|
||||
ObjKibako2_SpawnCollectible(this, play);
|
||||
Actor_Kill(&this->dyna.actor);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@
|
|||
#include "play_state.h"
|
||||
#include "player.h"
|
||||
|
||||
#include "overlays/actors/ovl_En_Sw/z_en_sw.h"
|
||||
|
||||
#define FLAGS ACTOR_FLAG_UPDATE_CULLING_DISABLED
|
||||
|
||||
void ObjMakekinsuta_Init(Actor* thisx, PlayState* play);
|
||||
|
|
@ -52,7 +54,8 @@ void func_80B98320(ObjMakekinsuta* this, PlayState* play) {
|
|||
if (this->unk_152 != 0) {
|
||||
if (this->timer >= 60 && !func_8002DEEC(GET_PLAYER(play))) {
|
||||
Actor_Spawn(&play->actorCtx, play, ACTOR_EN_SW, this->actor.world.pos.x, this->actor.world.pos.y,
|
||||
this->actor.world.pos.z, 0, this->actor.shape.rot.y, 0, (this->actor.params | 0x8000));
|
||||
this->actor.world.pos.z, 0, this->actor.shape.rot.y, 0,
|
||||
(this->actor.params | EN_SW_PARAM_GOLD_SOIL));
|
||||
this->actionFunc = ObjMakekinsuta_DoNothing;
|
||||
} else {
|
||||
this->timer++;
|
||||
|
|
|
|||
Loading…
Reference in New Issue