EnClearTag OK and documented (#214)

* merge main

* Match Init

* Clear_Tag OK

* Full documentation

* More docs

* Fix function

* Fix MakeFile for assets and Fix texture swapped names

* Fix name

* Improve name and remove pad

* Can't stop the minor tweeks

* Adding potential Makefile fixes

* Minor name change

* Another name fix... and format

* PR Suggestion & Add Overlay File Description

* Re-documentation to match OoT WIP (more to come)

* Finish docs from OoT

* Fix merge and format

* Minor touch-ups

* Cleaner conditional
This commit is contained in:
engineer124 2021-07-21 01:07:05 +10:00 committed by GitHub
parent 5fa3049236
commit 9637e19303
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
21 changed files with 1155 additions and 100 deletions

View File

@ -0,0 +1,44 @@
<Root>
<File Name="ovl_En_Clear_Tag" BaseAddress="0x80947F60" RangeStart="0x2F00" RangeEnd="0x5D00" Segment="128">
<!-- Debris from explosion -->
<DList Name="gClearTagDebrisEffectMaterialDL" Offset="0x3130"/>
<Texture Name="gClearTagDebrisEffectTex" OutName="clear_tag_debris_effect" Format="rgb5a1" Width="16" Height="16" Offset="0x2F00"/>
<DList Name="gClearTagDebrisEffectDL" Offset="0x31B0"/>
<Array Name="gClearTagDebrisEffectVtx" Count="3" Offset="0x3100">
<Vtx/>
</Array>
<!-- Used for inner black smoke cloud from explosion: multi-texture -->
<DList Name="gClearTagFireEffectMaterialDL" Offset="0x37F8"/>
<Texture Name="gClearTagFireEffectFlickerTex" OutName="clear_tag_fire_effect_flicker" Format="i4" Width="32" Height="64" Offset="0x31C8"/>
<Texture Name="gClearTagFireEffectBackgroundTex" OutName="clear_tag_fire_effect_background" Format="i4" Width="32" Height="32" Offset="0x35C8"/>
<DList Name="gClearTagFireEffectDL" Offset="0x38A0"/>
<Array Name="gClearTagFireEffectVtx" Count="3" Offset="0x37C8">
<Vtx/>
</Array>
<!-- Used for spherical outer-most white-yellow cloud from explosions -->
<DList Name="gClearTagFlashEffectDL" Offset="0x4900"/>
<Texture Name="gClearTagFlashEffectTex" OutName="clear_tag_flash_effect" Format="i8" Width="64" Height="64" Offset="0x38C0"/>
<Array Name="gClearTagFlashEffectVtx" Count="4" Offset="0x48C0">
<Vtx/>
</Array>
<!-- Used for spherical outer-most cloud from explosions applied to floor poly -->
<DList Name="gClearTagFlashEffectGroundDL" Offset="0x4BB0"/>
<Texture Name="gClearTagFlashEffectGroundTex" OutName="clear_tag_flash_ground_effect" Format="i4" Width="32" Height="32" Offset="0x4980"/>
<Array Name="gClearTagFlashEffectGroundVtx" Count="3" Offset="0x4B80">
<Vtx/>
</Array>
<!-- Used for spherical glowing light orbs squished thin into light rays -->
<DList Name="gClearTagLightRayEffectMaterialDL" Offset="0x5C78"/>
<Texture Name="gClearTagLightRayEffectTex" OutName="clear_tag_light_ray_effect" Format="i8" Width="64" Height="64" Offset="0x4C38"/>
<DList Name="gClearTagLightRayEffectDL" Offset="0x5CE8"/>
<Array Name="gClearTagLightRayEffectVtx" Count="4" Offset="0x5C38">
<Vtx/>
</Array>
</File>
</Root>

View File

@ -34,8 +34,11 @@ def ExtractFunc(fullPath):
objectName = os.path.splitext(xmlName)[0]
outPath = os.path.join("assets", *pathList[2:-1], objectName)
basromPath = os.path.join("baserom", "assets", *pathList[2:-1])
outSourcePath = outPath
if "overlays" in pathList:
basromPath = os.path.join("baserom", *pathList[2:-1])
else:
basromPath = os.path.join("baserom", "assets", *pathList[2:-1])
## MM doesn't have _scene prefixed files, so this check is not necessary.
## This _may_ change in the future, so I wont delete this for now.

View File

@ -49,8 +49,6 @@
#define _SHIFTR(v, s, w) \
((unsigned int)(((unsigned int)(v) >> (s)) & ((0x01 << (w)) - 1)))
#define _SHIFT _SHIFTL /* old, for compatibility only */
#define G_ON (1)
#define G_OFF (0)

View File

@ -787,7 +787,7 @@ float func_800B6FC8(Player* player);
u32 func_800B7200(s32 param_1);
// void func_800B722C(void);
void func_800B724C(GlobalContext* globalCtx, Actor* actor, u8 param_3);
u32 func_800B7298(GlobalContext* globalCtx, UNK_TYPE4 param_2, u8 param_3);
u32 func_800B7298(GlobalContext* globalCtx, Actor* actor, u8 param_3);
void func_800B72E0(s32 param_1);
void func_800B72F8(DynaPolyActor* dpactor, f32 a1, s16 a2);
s32 Actor_IsLinkFacingActor(Actor* actor, s16 tolerance, GlobalContext* globalCtx);
@ -1007,7 +1007,7 @@ f32 func_800C411C(CollisionContext* colCtx, CollisionPoly** arg1, s32* arg2, Act
// void func_800C4488(void);
// void func_800C44F0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_800C455C(void);
s32 func_800C45C4(CollisionContext* colCtx, u32 param_2, Vec3f* param_3, Vec3f* param_4, Vec3f* param_5, f32 param_6, s32* param_7, s32* param_8, DynaPolyActor* param_9, f32 param_10, u8 param_11);
s32 func_800C45C4(CollisionContext* colCtx, u32 arg1, Vec3f* arg2, Vec3f* arg3, Vec3f* arg4, f32 arg5, s32* arg6, s32* arg7, DynaPolyActor* arg8, f32 arg9, u8 arg10);
// void func_800C4C74(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_800C4CD8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8);
// void func_800C4D3C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9);
@ -1019,23 +1019,23 @@ s32 func_800C45C4(CollisionContext* colCtx, u32 param_2, Vec3f* param_3, Vec3f*
// void func_800C5464(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_800C54AC(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
// void func_800C5538(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
s32 func_800C55C4(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*);
s32 func_800C55C4(CollisionContext* colCtx, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, CollisionPoly** arg4, u32 arg5, u32 arg6, u32 arg7, u32 arg8, u32* arg9);
// void func_800C5650(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11);
// void func_800C56E0(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10, UNK_TYPE4 param_11, UNK_TYPE4 param_12);
s32 func_800C576C(CollisionContext*, Vec3f*, Vec3f*, Vec3f*, CollisionPoly**, u32, u32, u32, u32, u32*);
s32 func_800C576C(CollisionContext* colCtx, Vec3f* arg1, Vec3f* arg2, Vec3f* arg3, CollisionPoly** arg4, u32 arg5, u32 arg6, u32 arg7, u32 arg8, u32* arg9);
// void func_800C57F8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_800C583C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9);
// void func_800C58C8(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE4 param_8, UNK_TYPE4 param_9, UNK_TYPE4 param_10);
// void func_800C5954(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7, UNK_TYPE2 param_8);
// void func_800C5A20(void);
s32 func_800C5A20(CollisionContext* colCtx, Vec3f* arg1, f32 arg2);
// void func_800C5A64(void);
void BgCheck_ScenePolygonListsInit(SSNodeList* param_1);
void BgCheck_ScenePolygonListsInit(SSNodeList* arg0);
void BgCheck_ScenePolygonListsAlloc(GlobalContext* globalCtx, SSNodeList* lists, s32 numNodes, u32 numPolygons);
s32 func_800C5B80(u16* param_1);
s32 func_800C5B80(u16* arg0);
u16 BgCheck_ScenePolygonListsReserveNode(SSNodeList* lists);
void BgCheck_ActorMeshParamsInit(ScaleRotPos* params);
void BgCheck_SetActorMeshParams(ScaleRotPos* params, Vec3f* scale, Vec3s* rotation, Vec3f* position);
s32 BgCheck_AreActorMeshParamsEqual(ScaleRotPos* param_1, ScaleRotPos* param_2);
s32 BgCheck_AreActorMeshParamsEqual(ScaleRotPos* arg0, ScaleRotPos* arg1);
void BgCheck_ActorMeshPolyListsHeadsInit(DynaLookup* lists);
void BgCheck_ActorMeshPolyListsInit(DynaLookup* lists);
void BgCheck_ActorMeshVerticesIndexInit(s16* index);
@ -1120,7 +1120,7 @@ u32 func_800C9E18(CollisionContext* colCtx, CollisionPoly* polygon, s32 index);
u32 func_800C9E40(CollisionContext* colCtx, CollisionPoly* polygon, s32 index);
u32 func_800C9E88(CollisionContext* colCtx, CollisionPoly* polygon, s32 index);
// void func_800C9EBC(GlobalContext* globalCtx, CollisionContext* colCtx, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6, UNK_TYPE4 param_7);
// void func_800CA1AC(GlobalContext* globalCtx, CollisionContext* colCtx, f32 param_3, f32 param_4, f32* param_5, UNK_PTR param_6);
s32 func_800CA1AC(GlobalContext* globalCtx, CollisionContext* colCtx, f32 x, f32 z, f32* ySurface, WaterBox** outWaterBox);
void func_800CA1E8(GlobalContext* globalCtx, CollisionContext* colCtx, f32 arg2, f32 arg3, f32* arg4, UNK_PTR arg5);
// void func_800CA22C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5, UNK_TYPE4 param_6);
// void func_800CA568(void);
@ -3051,10 +3051,10 @@ s32 func_8016970C(GlobalContext* globalCtx, s16 camId, Vec3f* at, Vec3f* eye);
// void func_8016981C(UNK_TYPE1 param_1, UNK_TYPE1 param_2, UNK_TYPE1 param_3, UNK_TYPE1 param_4, UNK_TYPE4 param_5);
// void func_80169940(void);
// void func_80169988(void);
void func_801699D4(GlobalContext* globalCtx, s16 param_2, s16 param_3);
void func_801699D4(GlobalContext* globalCtx, s16 arg1, s16 arg2);
// void func_80169A50(void);
// void func_80169AC0(void);
// void func_80169AFC(void);
void func_80169AFC(GlobalContext* globalCtx, s16 camId, s16 arg2);
// void func_80169C64(void);
// void func_80169C84(void);
// void convert_scene_number_among_shared_scenes(void);
@ -3396,7 +3396,7 @@ void SysMatrix_SetCurrentState(MtxF* matrix);
MtxF* SysMatrix_GetCurrentState(void);
void SysMatrix_InsertMatrix(MtxF* matrix, s32 appendToState);
void SysMatrix_InsertTranslation(f32 x, f32 y, f32 z, s32 appendToState);
void Matrix_Scale(f32 xScale, f32 yScale, f32 zScale, u8 appendToState);
void Matrix_Scale(f32 xScale, f32 yScale, f32 zScale, s32 appendToState);
void SysMatrix_InsertXRotation_s(s16 rotation, s32 appendToState);
void SysMatrix_InsertXRotation_f(f32 rotation, s32 appendToState);
void SysMatrix_RotateStateAroundXAxis(f32 rotation);
@ -3876,7 +3876,7 @@ void func_8019FAD8(Vec3f* param_1, u16 param_2, f32 param_3);
// void func_8019FC20(void);
// void func_8019FCB8(void);
// void func_8019FD90(void);
// void func_8019FDC8(void);
void func_8019FDC8(UNK_PTR arg0, u16 sfxId, UNK_TYPE arg2);
// void func_8019FE1C(void);
// void func_8019FE74(void);
// void func_8019FEDC(void);

View File

@ -1878,7 +1878,7 @@ extern UNK_PTR D_801DB478[7];
// extern UNK_TYPE1 D_801DB494;
// extern UNK_TYPE1 D_801DB49C;
// extern UNK_TYPE2 D_801DB4A0;
// extern UNK_TYPE4 D_801DB4A4;
extern UNK_TYPE D_801DB4A4;
// extern UNK_TYPE1 D_801DB4B0;
// extern UNK_TYPE1 D_801DB4B8;
// extern UNK_TYPE1 D_801DB4C0;

View File

@ -490,20 +490,6 @@ typedef struct {
/* 0x0 */ Vec3s pos;
} BgVertex; // size = 0x6
typedef struct {
/* 0x0 */ Vec3s minPos;
/* 0x6 */ UNK_TYPE1 xLength; // Created by retype action
/* 0x7 */ UNK_TYPE1 pad7[0x1];
/* 0x8 */ UNK_TYPE1 zLength; // Created by retype action
/* 0x9 */ UNK_TYPE1 pad9[0x3];
/* 0xC */ u32 properties;
} BgWaterBox; // size = 0x10
typedef struct {
/* 0x0 */ UNK_TYPE1 pad0[0x4];
/* 0x4 */ BgWaterBox* boxes;
} BgWaterboxList; // size = 0x8
typedef union {
F3DVertexColor color;
F3DVertexNormal normal;

View File

@ -1000,4 +1000,14 @@ typedef enum {
/* 0x2B2 */ ACTOR_ID_MAX // originally "ACTOR_DLF_MAX"
} ActorID;
typedef enum {
/* 0x00 */ CLEAR_TAG_SMALL_EXPLOSION,
/* 0x01 */ CLEAR_TAG_LARGE_EXPLOSION,
/* 0x02 */ CLEAR_TAG_POP,
/* 0x03 */ CLEAR_TAG_SMALL_LIGHT_RAYS,
/* 0x04 */ CLEAR_TAG_LARGE_LIGHT_RAYS,
/* 0x23 */ CLEAR_TAG_SPLASH = 35,
/* 0xC8 */ CLEAR_TAG_SMOKE = 200,
} ClearTagType;
#endif

View File

@ -2410,9 +2410,9 @@ SECTIONS
ovl_En_Clear_Tag : AT(RomLocation)
{
build/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o(.text)
build/asm/overlays/ovl_En_Clear_Tag_data.o(.data)
build/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o(.data)
build/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag.o(.rodata)
build/asm/overlays/ovl_En_Clear_Tag_rodata.o(.rodata)
build/src/overlays/actors/ovl_En_Clear_Tag/z_en_clear_tag_overlay.o(.ovl)
}
SegmentEnd = .;
SegmentSize = SegmentEnd - SegmentStart;

View File

@ -11,6 +11,16 @@ D_04029CB0 = 0x04029CB0;
D_04029CF0 = 0x04029CF0;
D_04029CB0 = 0x04029CB0;
D_04029CF0 = 0x04029CF0;
D_04030100 = 0x04030100;
D_040378F0 = 0x040378F0;
D_04037DF0 = 0x04037DF0;
D_040382F0 = 0x040382F0;
D_040387F0 = 0x040387F0;
D_04038CF0 = 0x04038CF0;
D_040391F0 = 0x040391F0;
D_040396F0 = 0x040396F0;
D_04039BF0 = 0x04039BF0;
D_0403A0F0 = 0x0403A0F0;
D_04058BA0 = 0x04058BA0;
D_0405AAB0 = 0x0405AAB0;
D_0405BEF0 = 0x0405BEF0;

View File

@ -32,7 +32,7 @@ extern AnimationHeader D_06000990;
extern FlexSkeletonHeader D_06008C40;
// Probably the same struct as ActorAnimationEntryS, need more info from func_8013BC6C
static ActorAnimationEntryS D_80C1E200[] = { &D_06000990, 1.0f, 0, -1, 0, 0};
static ActorAnimationEntryS D_80C1E200[] = { &D_06000990, 1.0f, 0, -1, 0, 0 };
s32 func_80C1DED0(DmNb* this, s32 arg1) {
s32 ret = 0;

File diff suppressed because it is too large Load Diff

View File

@ -5,9 +5,50 @@
struct EnClearTag;
typedef enum {
/* 0x00 */ CLEAR_TAG_EFFECT_AVAILABLE,
/* 0x01 */ CLEAR_TAG_EFFECT_DEBRIS,
/* 0x02 */ CLEAR_TAG_EFFECT_FIRE, // never set to, remnant of OoT
/* 0x03 */ CLEAR_TAG_EFFECT_SMOKE,
/* 0x04 */ CLEAR_TAG_EFFECT_FLASH,
/* 0x05 */ CLEAR_TAG_EFFECT_LIGHT_RAYS,
/* 0x06 */ CLEAR_TAG_EFFECT_SHOCKWAVE,
/* 0x07 */ CLEAR_TAG_EFFECT_SPLASH,
/* 0x08 */ CLEAR_TAG_EFFECT_ISOLATED_SMOKE,
} ClearTagEffectType;
typedef struct EnClearTagEffect {
/* 0x00 */ u8 type;
/* 0x01 */ u8 actionTimer;
/* 0x04 */ Vec3f position;
/* 0x10 */ Vec3f velocity;
/* 0x1C */ Vec3f acceleration;
/* 0x28 */ Color_RGBAf primColor;
/* 0x38 */ Color_RGBAf envColor;
/* 0x48 */ s16 bounces;
/* 0x4A */ s16 effectsTimer;
/* 0x4C */ s16 lightRayAlpha;
/* 0x4E */ s16 lightRayAlphaDecrementSpeed;
/* 0x50 */ f32 scale;
/* 0x54 */ f32 maxScale;
/* 0x58 */ f32 rotationY;
/* 0x5C */ f32 rotationX;
/* 0x60 */ f32 rotationZ;
/* 0x64 */ f32 maxScaleTarget;
/* 0x68 */ f32 smokeScaleY;
/* 0x6C */ f32 smokeScaleX;
} EnClearTagEffect; // size = 0x70
typedef struct EnClearTag {
/* 0x0000 */ Actor actor;
/* 0x0144 */ char unk_0144[0x2D40];
/* 0x0144 */ EnClearTagEffect effect[103];
/* 0x2E54 */ u8 cameraState;
/* 0x2E56 */ s16 activeTimer; // Actor Marked for Death when timer runs out
/* 0x2E58 */ UNK_TYPE1 unk2E58[0xC];
/* 0x2E64 */ s16 camId;
/* 0x2E66 */ Color_RGBA8 flashEnvColor;
/* 0x2E6C */ Vec3f eye; // Camera eye
/* 0x2E78 */ Vec3f at; // Camera lookAt
} EnClearTag; // size = 0x2E84
extern const ActorInit En_Clear_Tag_InitVars;

View File

@ -155,8 +155,8 @@ void EnEncount2_Popped(EnEncount2* this, GlobalContext* globalCtx) {
Math_Vec3f_Copy(&curPos, &this->dyna.actor.world.pos);
curPos.y += 60.0f;
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG, curPos.x, curPos.y, curPos.z, 0xFF, 0xFF, 0xC8,
0x0001);
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG, curPos.x, curPos.y, curPos.z, 255, 255, 200,
CLEAR_TAG_LARGE_EXPLOSION);
for (i = 0; i != 100; ++i) {
EnEncount2_InitParticles(this, &curPos, 10);

View File

@ -351,7 +351,8 @@ void EnFirefly_SetupFall(EnFirefly* this, GlobalContext* globalCtx) {
this->unk_2E8.x = 4.0f;
this->unk_2E8.y = 0.55f;
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG, this->collider.info.bumper.hitPos.x,
this->collider.info.bumper.hitPos.y, this->collider.info.bumper.hitPos.z, 0, 0, 0, 3);
this->collider.info.bumper.hitPos.y, this->collider.info.bumper.hitPos.z, 0, 0, 0,
CLEAR_TAG_SMALL_LIGHT_RAYS);
} else if (this->actor.colChkInfo.damageEffect == 2) {
this->unk_18F = 0;
this->unk_2E8.x = 4.0f;

View File

@ -557,7 +557,8 @@ void EnFsn_UpdateItemSelectedProperty(EnFsn* this) {
s32 i;
for (items = this->items, i = 0; i < this->totalSellingItems; items++, i++) {
if (this->actionFunc != EnFsn_SelectItem && this->actionFunc != EnFsn_PlayerCannotBuy && this->drawCursor == 0) {
if (this->actionFunc != EnFsn_SelectItem && this->actionFunc != EnFsn_PlayerCannotBuy &&
this->drawCursor == 0) {
(*items)->isSelected = false;
} else {
(*items)->isSelected = (i == this->cursorIdx) ? true : false;

View File

@ -1347,9 +1347,9 @@ void func_80B452EC(EnInvadepoh* this, GlobalContext* globalCtx) {
s32 i;
for (i = 0; i < this->unk379; i++) {
D_80B50320[i] = (EnInvadepoh*)Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_INVADEPOH, this->actor.world.pos.x,
this->actor.world.pos.y, this->actor.world.pos.z, 0, 0, 0,
(i & 7) | ((phi_s2 << 8) & 0x7F00) | 0x10);
D_80B50320[i] = (EnInvadepoh*)Actor_Spawn(
&globalCtx->actorCtx, globalCtx, ACTOR_EN_INVADEPOH, this->actor.world.pos.x, this->actor.world.pos.y,
this->actor.world.pos.z, 0, 0, 0, (i & 7) | ((phi_s2 << 8) & 0x7F00) | 0x10);
if (phi_s2 != 0xFF) {
Path* path = &globalCtx->setupPathList[phi_s2];
phi_s2 = path->unk1;
@ -2307,7 +2307,7 @@ void func_80B479E8(EnInvadepoh* this, GlobalContext* globalCtx) {
this->counter++;
if (this->actionTimer == 8) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG, this->actor.world.pos.x,
this->actor.world.pos.y - 10.0f, this->actor.world.pos.z, 0, 0, 3, 200);
this->actor.world.pos.y - 10.0f, this->actor.world.pos.z, 0, 0, 3, CLEAR_TAG_SMOKE);
}
if (this->actionTimer == 8) {
@ -2624,7 +2624,8 @@ void func_80B48848(EnInvadepoh* this, GlobalContext* globalCtx) {
Math_StepToS(&this->behaviorInfo.unk4C, 0x7D0, 0x46);
}
func_80B43E6C(this, 6, this->behaviorInfo.unk4C, 0x46);
if (((this->actor.flags & 0x40) == 0x40) && (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
if (((this->actor.flags & 0x40) == 0x40) &&
(func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK);
}
if (this->actionTimer > 0) {
@ -3077,7 +3078,8 @@ void func_80B49C38(EnInvadepoh* this, GlobalContext* globalCtx) {
this->actor.flags |= (0x8 | 0x1);
}
if (((this->actor.flags & 0x40) == 0x40) && (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
if (((this->actor.flags & 0x40) == 0x40) &&
(func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK);
}
if (this->clockTime >= 0.9999f) {
@ -3302,7 +3304,8 @@ void func_80B4A67C(EnInvadepoh* this, GlobalContext* globalCtx) {
this->unk378 = 0;
this->actor.flags |= (0x8 | 0x1);
}
if (((this->actor.flags & 0x40) == 0x40) && (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
if (((this->actor.flags & 0x40) == 0x40) &&
(func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK);
}
if (this->pathIndex == this->endPoint) {
@ -3463,8 +3466,7 @@ void func_80B4ADCC(EnInvadepoh* this, GlobalContext* globalCtx) {
}
if (this->textId == 0x3333) {
func_80B4AEC0(this);
}
else if (this->textId == 0x3334) {
} else if (this->textId == 0x3334) {
func_801477B4(globalCtx);
func_80B4B024(this);
}
@ -3554,7 +3556,6 @@ void func_80B4B218(Actor* thisx, GlobalContext* globalCtx) {
Player* player;
AlienBehaviorInfo* substruct = &this->behaviorInfo;
this->actionFunc(this, globalCtx);
if (sp38 && this->actor.update != NULL) {
SkelAnime_FrameUpdateMatrix(&this->skelAnime);
@ -3658,7 +3659,8 @@ void func_80B4B768(EnInvadepoh* this, GlobalContext* globalCtx) {
s32 pad;
Math_StepToF(&this->actor.speedXZ, 0.0f, 1.0f);
Math_SmoothStepToS(&this->actor.world.rot.y, Actor_YawBetweenActors(&this->actor, &D_80B5040C->actor), 5, 0x1388, 0x64);
Math_SmoothStepToS(&this->actor.world.rot.y, Actor_YawBetweenActors(&this->actor, &D_80B5040C->actor), 5, 0x1388,
0x64);
func_80B44E90(this, globalCtx);
if (func_801378B8(&this->skelAnime, 13.0f) || func_801378B8(&this->skelAnime, 19.0f)) {
Audio_PlayActorSound2(&this->actor, NA_SE_EV_SMALL_DOG_ANG_BARK);
@ -3836,7 +3838,8 @@ void func_80B4BC4C(EnInvadepoh* this, GlobalContext* globalCtx) {
}
}
if (((this->actor.flags & 0x40) == 0x40) && (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 12.0f))) {
if (((this->actor.flags & 0x40) == 0x40) &&
(func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 12.0f))) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK);
}
if (gSaveContext.time > CLOCK_TIME(20, 15)) {
@ -4056,7 +4059,8 @@ void func_80B4C730(EnInvadepoh* this, GlobalContext* globalCtx) {
substruct->unk26.y = CLAMP(temp_v1_4, -8000, 8000);
}
if (((this->actor.flags & 0x40) == 0x40) && (func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
if (((this->actor.flags & 0x40) == 0x40) &&
(func_801378B8(&this->skelAnime, 0.0f) || func_801378B8(&this->skelAnime, 7.0f))) {
Audio_PlayActorSound2(&this->actor, NA_SE_EN_ROMANI_WALK);
}

View File

@ -407,7 +407,7 @@ void func_8086A724(EnPametfrog* this, GlobalContext* globalCtx) {
this->unk_2C4 = 3.0f;
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG,
this->collider.elements[0].info.bumper.hitPos.x, this->collider.elements[0].info.bumper.hitPos.y,
this->collider.elements[0].info.bumper.hitPos.z, 0, 0, 0, 4);
this->collider.elements[0].info.bumper.hitPos.z, 0, 0, 0, CLEAR_TAG_LARGE_LIGHT_RAYS);
} else if (this->actor.colChkInfo.damageEffect == 3) {
func_8086A024(this);
}
@ -1305,7 +1305,8 @@ void EnPametfrog_ApplyDamage(EnPametfrog* this, GlobalContext* globalCtx) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG,
this->collider.elements[0].info.bumper.hitPos.x,
this->collider.elements[0].info.bumper.hitPos.y,
this->collider.elements[0].info.bumper.hitPos.z, 0, 0, 0, 4);
this->collider.elements[0].info.bumper.hitPos.z, 0, 0, 0,
CLEAR_TAG_LARGE_LIGHT_RAYS);
}
func_8086CB4C(this);
}

View File

@ -242,7 +242,7 @@ void EnPoFusen_IncrementRomaniPop(EnPoFusen* this) {
void EnPoFusen_Pop(EnPoFusen* this, GlobalContext* globalCtx) {
Actor_Spawn(&globalCtx->actorCtx, globalCtx, ACTOR_EN_CLEAR_TAG, this->actor.world.pos.x,
this->actor.world.pos.y + 20.0f, this->actor.world.pos.z, 255, 255, 200, 2);
this->actor.world.pos.y + 20.0f, this->actor.world.pos.z, 255, 255, 200, CLEAR_TAG_POP);
Audio_PlayActorSound2(&this->actor, NA_SE_IT_BOMB_EXPLOSION);
Actor_MarkForDeath(&this->actor);
}

View File

@ -53,7 +53,6 @@ static InitChainEntry sInitChain[] = {
static CollisionHeader* sColHeaders[] = { &D_06004FF8, &D_060048D0 };
void ObjRaillift_UpdatePosition(ObjRaillift* this, s32 idx) {
Math_Vec3s_ToVec3f(&this->dyna.actor.world.pos, &this->points[idx]);
}
@ -159,7 +158,8 @@ void ObjRaillift_Move(ObjRaillift* this, GlobalContext* globalCtx) {
this->dyna.actor.speedXZ *= 0.4f;
isTeleporting = OBJRAILLIFT_SHOULD_TELEPORT(&this->dyna.actor);
isPosUpdated = true;
if (((this->curPoint >= this->endPoint) && (this->direction > 0)) || ((this->curPoint <= 0) && (this->direction < 0))) {
if (((this->curPoint >= this->endPoint) && (this->direction > 0)) ||
((this->curPoint <= 0) && (this->direction < 0))) {
if (!isTeleporting) {
this->direction = -this->direction;
this->waitTimer = 10;
@ -168,7 +168,8 @@ void ObjRaillift_Move(ObjRaillift* this, GlobalContext* globalCtx) {
endPoint = &this->points[this->endPoint];
this->curPoint = this->direction > 0 ? 0 : this->endPoint;
initialPoint = &this->points[0];
if ((initialPoint->x != endPoint->x) || (initialPoint->y != endPoint->y) || (initialPoint->z != endPoint->z)) {
if ((initialPoint->x != endPoint->x) || (initialPoint->y != endPoint->y) ||
(initialPoint->z != endPoint->z)) {
this->actionFunc = ObjRaillift_Teleport;
func_800C62BC(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
isPosUpdated = false;
@ -245,7 +246,8 @@ void ObjRaillift_Update(Actor* thisx, GlobalContext* globalCtx) {
}
this->cycle += 0xCE4;
Math_StepToF(&this->maxHeight, 0.0f, 0.12f);
step = this->isWeightOn ? Math_CosS(fabsf(this->cycleSpeed) * 2048.0f) + 0.02f : Math_SinS(fabsf(this->cycleSpeed) * 2048.0f) + 0.02f;
step = this->isWeightOn ? Math_CosS(fabsf(this->cycleSpeed) * 2048.0f) + 0.02f
: Math_SinS(fabsf(this->cycleSpeed) * 2048.0f) + 0.02f;
target = this->isWeightOn ? -8.0f : 0.0f;
Math_StepToF(&this->cycleSpeed, target, step);
this->dyna.actor.shape.yOffset = ((Math_SinS(this->cycle) * this->maxHeight) + this->cycleSpeed) * 10.0f;
@ -269,8 +271,8 @@ void ObjRaillift_Draw(Actor* thisx, GlobalContext* globalCtx) {
OPEN_DISPS(globalCtx->state.gfxCtx);
func_8012C28C(globalCtx->state.gfxCtx);
gSPSegment(POLY_OPA_DISP++, 0x08,
Gfx_TwoTexScrollEnvColor(globalCtx->state.gfxCtx, 0, globalCtx->gameplayFrames, 0, 32, 32, 1, 0, 0,
32, 32, 0, 0, 0, 160));
Gfx_TwoTexScrollEnvColor(globalCtx->state.gfxCtx, 0, globalCtx->gameplayFrames, 0, 32, 32, 1, 0, 0, 32,
32, 0, 0, 0, 160));
gSPMatrix(POLY_OPA_DISP++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gSPDisplayList(POLY_OPA_DISP++, D_06004BF0);
CLOSE_DISPS(globalCtx->state.gfxCtx);

View File

@ -7576,21 +7576,21 @@
0x809469C0:("func_809469C0",),
0x8094702C:("func_8094702C",),
0x80947668:("func_80947668",),
0x80947F60:("func_80947F60",),
0x809480C8:("func_809480C8",),
0x80948264:("func_80948264",),
0x809484EC:("func_809484EC",),
0x809485A8:("func_809485A8",),
0x80948788:("func_80948788",),
0x8094899C:("func_8094899C",),
0x80948A54:("func_80948A54",),
0x80947F60:("EnClearTag_CreateDebrisEffect",),
0x809480C8:("EnClearTag_CreateSmokeEffect",),
0x80948264:("EnClearTag_CreateIsolatedSmokeEffect",),
0x809484EC:("EnClearTag_CreateFlashEffect",),
0x809485A8:("EnClearTag_CreateLightRayEffect",),
0x80948788:("EnClearTag_CreateIsolatedLightRayEffect",),
0x8094899C:("EnClearTag_CreateShockwaveEffect",),
0x80948A54:("EnClearTag_CreateSplashEffect",),
0x80948BB4:("EnClearTag_Destroy",),
0x80948BC4:("EnClearTag_Init",),
0x80949288:("func_80949288",),
0x80949288:("EnClearTag_UpdateCamera",),
0x80949570:("EnClearTag_Update",),
0x809495D8:("EnClearTag_Draw",),
0x809495F8:("func_809495F8",),
0x80949BD4:("func_80949BD4",),
0x809495F8:("EnClearTag_UpdateEffects",),
0x80949BD4:("EnClearTag_DrawEffects",),
0x8094DEE0:("func_8094DEE0",),
0x8094DF90:("func_8094DF90",),
0x8094DFF8:("func_8094DFF8",),

View File

@ -1,5 +1,6 @@
[preserve_macros]
"g[DS]P.*" = "void"
"gs[DS]P.*" = "void"
"gDma.*" = "void"
"G_IM_SIZ_.*" = "int"
"G_[AC]C.*" = "int"