Merge branch 'develop' into aManchipelago

This commit is contained in:
aMannus
2025-05-30 23:49:18 +02:00
258 changed files with 5160 additions and 5264 deletions
+1 -1
View File
@@ -84,7 +84,7 @@ void func_800AA15C(void) {
D_80160FD0.unk_104 = 2;
}
void func_800AA16C(void) {
void Rumble_ClearRequests(void) {
D_80160FD0.unk_104 = 0;
}
+20 -1
View File
@@ -7,6 +7,8 @@
#include "objects/gameplay_keep/gameplay_keep.h"
#include "objects/gameplay_dangeon_keep/gameplay_dangeon_keep.h"
#include "objects/object_bdoor/object_bdoor.h"
#include "soh/ObjectExtension/ObjectExtension.h"
#include "soh/ObjectExtension/ActorListIndex.h"
#include "soh/frame_interpolation.h"
#include "soh/Enhancements/cosmetics/cosmeticsTypes.h"
#include "soh/Enhancements/enemyrandomizer.h"
@@ -2574,7 +2576,11 @@ void Actor_UpdateAll(PlayState* play, ActorContext* actorCtx) {
if (play->numSetupActors != 0) {
actorEntry = &play->setupActorList[0];
for (i = 0; i < play->numSetupActors; i++) {
Actor_SpawnEntry(&play->actorCtx, actorEntry++, play);
Actor* spawnedActor = Actor_SpawnEntry(&play->actorCtx, actorEntry++, play);
// #region SOH [ObjectExtension] ActorListIndex tracking
SetActorListIndex(spawnedActor, (s16)i);
// #endregion
}
play->numSetupActors = 0;
GameInteractor_ExecuteOnSceneSpawnActors();
@@ -3352,6 +3358,10 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos
return NULL;
}
// #region SOH [ObjectExtension]
SetActorListIndex(actor, -1);
// #endregion
assert(dbEntry->numLoaded < 255);
dbEntry->numLoaded++;
@@ -3391,6 +3401,8 @@ Actor* Actor_Spawn(ActorContext* actorCtx, PlayState* play, s16 actorId, f32 pos
Actor_Init(actor, play);
gSegments[6] = temp;
GameInteractor_ExecuteOnActorSpawn(actor);
return actor;
}
@@ -3466,6 +3478,9 @@ Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, PlayState* play) {
player = GET_PLAYER(play);
// Execute before actor memory is freed
GameInteractor_ExecuteOnActorDestroy(actor);
dbEntry = ActorDB_Retrieve(actor->id);
if (HREG(20) != 0) {
@@ -3494,6 +3509,10 @@ Actor* Actor_Delete(ActorContext* actorCtx, Actor* actor, PlayState* play) {
newHead = Actor_RemoveFromCategory(play, actorCtx, actor);
// #region SOH [ObjectExtension]
ObjectExtension_Free(actor);
// #endregion
ZELDA_ARENA_FREE_DEBUG(actor);
dbEntry->numLoaded--;
+1 -1
View File
@@ -892,7 +892,7 @@ void Environment_Update(PlayState* play, EnvironmentContext* envCtx, LightContex
if ((((void)0, gSaveContext.gameMode) != GAMEMODE_NORMAL) &&
(((void)0, gSaveContext.gameMode) != GAMEMODE_END_CREDITS)) {
func_800AA16C(play);
Rumble_ClearRequests();
}
if (pauseCtx->state == 0) {
+2 -1
View File
@@ -4113,7 +4113,8 @@ void Interface_DrawItemButtons(PlayState* play) {
if (CVarGetInteger(CVAR_COSMETIC("HUD.CDownButton.UseMargins"), 0) != 0) {
X_Margins_CD = Left_HUD_Margin;
};
C_Down_BTN_Pos[0] = (CVarGetInteger(CVAR_COSMETIC("HUD.CDownButton.PosX"), 0) + X_Margins_CD);
C_Down_BTN_Pos[0] =
OTRGetDimensionFromLeftEdge(CVarGetInteger(CVAR_COSMETIC("HUD.CDownButton.PosX"), 0) + X_Margins_CD);
} else if (CVarGetInteger(CVAR_COSMETIC("HUD.CDownButton.PosType"), 0) == ANCHOR_RIGHT) {
if (CVarGetInteger(CVAR_COSMETIC("HUD.CDownButton.UseMargins"), 0) != 0) {
X_Margins_CD = Right_HUD_Margin;
+2 -2
View File
@@ -1289,12 +1289,12 @@ s32 Player_OverrideLimbDrawGameplayCommon(PlayState* play, s32 limbIndex, Gfx**
D_80160000 = &this->meleeWeaponInfo[2].base;
if (!LINK_IS_ADULT) {
if (!(this->skelAnime.moveFlags & 4) || (this->skelAnime.moveFlags & 1)) {
if (!(this->skelAnime.movementFlags & 4) || (this->skelAnime.movementFlags & 1)) {
pos->x *= 0.64f;
pos->z *= 0.64f;
}
if (!(this->skelAnime.moveFlags & 4) || (this->skelAnime.moveFlags & 2)) {
if (!(this->skelAnime.movementFlags & 4) || (this->skelAnime.movementFlags & 2)) {
pos->y *= 0.64f;
}
}
+14 -14
View File
@@ -1170,9 +1170,9 @@ void SkelAnime_InitLink(PlayState* play, SkelAnime* skelAnime, FlexSkeletonHeade
*/
void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime) {
if (skelAnime->mode <= ANIMMODE_LOOP_INTERP) {
skelAnime->update = LinkAnimation_Loop;
skelAnime->update.link = LinkAnimation_Loop;
} else {
skelAnime->update = LinkAnimation_Once;
skelAnime->update.link = LinkAnimation_Once;
}
skelAnime->morphWeight = 0.0f;
}
@@ -1182,7 +1182,7 @@ void LinkAnimation_SetUpdateFunction(SkelAnime* skelAnime) {
* finishes.
*/
s32 LinkAnimation_Update(PlayState* play, SkelAnime* skelAnime) {
return skelAnime->update(play, skelAnime);
return skelAnime->update.link(play, skelAnime);
}
/**
@@ -1294,7 +1294,7 @@ void LinkAnimation_Change(PlayState* play, SkelAnime* skelAnime, LinkAnimationHe
SkelAnime_CopyFrameTable(skelAnime, skelAnime->morphTable, skelAnime->jointTable);
morphFrames = -morphFrames;
} else {
skelAnime->update = LinkAnimation_Morph;
skelAnime->update.link = LinkAnimation_Morph;
AnimationContext_SetLoadFrame(play, animation, (s32)startFrame, skelAnime->limbCount,
skelAnime->morphTable);
}
@@ -1559,11 +1559,11 @@ s32 SkelAnime_InitSkin(PlayState* play, SkelAnime* skelAnime, SkeletonHeader* sk
*/
void SkelAnime_SetUpdate(SkelAnime* skelAnime) {
if (skelAnime->mode <= ANIMMODE_LOOP_INTERP) {
skelAnime->update = SkelAnime_LoopFull;
skelAnime->update.normal = SkelAnime_LoopFull;
} else if (skelAnime->mode <= ANIMMODE_ONCE_INTERP) {
skelAnime->update = SkelAnime_Once;
skelAnime->update.normal = SkelAnime_Once;
} else {
skelAnime->update = SkelAnime_LoopPartial;
skelAnime->update.normal = SkelAnime_LoopPartial;
}
}
@@ -1572,7 +1572,7 @@ void SkelAnime_SetUpdate(SkelAnime* skelAnime) {
* finishes.
*/
s32 SkelAnime_Update(SkelAnime* skelAnime) {
return skelAnime->update(skelAnime);
return skelAnime->update.normal(skelAnime);
}
/**
@@ -1741,10 +1741,10 @@ void Animation_ChangeImpl(SkelAnime* skelAnime, AnimationHeader* animation, f32
morphFrames = -morphFrames;
} else {
if (taper != ANIMTAPER_NONE) {
skelAnime->update = SkelAnime_MorphTaper;
skelAnime->update.normal = SkelAnime_MorphTaper;
skelAnime->taper = taper;
} else {
skelAnime->update = SkelAnime_Morph;
skelAnime->update.normal = SkelAnime_Morph;
}
SkelAnime_GetFrameData(animation, startFrame, skelAnime->limbCount, skelAnime->morphTable);
}
@@ -1895,7 +1895,7 @@ void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle) {
f32 sin;
f32 cos;
if (skelAnime->moveFlags & ANIM_FLAG_NOMOVE) {
if (skelAnime->movementFlags & ANIM_FLAG_NOMOVE) {
diff->x = diff->z = 0.0f;
} else {
x = skelAnime->jointTable[0].x;
@@ -1917,8 +1917,8 @@ void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle) {
skelAnime->jointTable[0].x = skelAnime->baseTransl.x;
skelAnime->prevTransl.z = skelAnime->jointTable[0].z;
skelAnime->jointTable[0].z = skelAnime->baseTransl.z;
if (skelAnime->moveFlags & ANIM_FLAG_UPDATEY) {
if (skelAnime->moveFlags & ANIM_FLAG_NOMOVE) {
if (skelAnime->movementFlags & ANIM_FLAG_UPDATEY) {
if (skelAnime->movementFlags & ANIM_FLAG_NOMOVE) {
diff->y = 0.0f;
} else {
diff->y = skelAnime->jointTable[0].y - skelAnime->prevTransl.y;
@@ -1929,7 +1929,7 @@ void SkelAnime_UpdateTranslation(SkelAnime* skelAnime, Vec3f* diff, s16 angle) {
diff->y = 0.0f;
skelAnime->prevTransl.y = skelAnime->jointTable[0].y;
}
skelAnime->moveFlags &= ~ANIM_FLAG_NOMOVE;
skelAnime->movementFlags &= ~ANIM_FLAG_NOMOVE;
}
/**