Merge branch 'main' of https://github.com/zeldaret/ss into d_snd

This commit is contained in:
robojumper
2025-06-07 22:32:29 +02:00
23 changed files with 2047 additions and 906 deletions
+19 -22
View File
@@ -17,6 +17,7 @@
#include "f/f_list_nd.h"
#include "m/m_angle.h"
#include "m/m_vec.h"
#include "toBeSorted/actor_info.h"
#include "toBeSorted/event.h"
#include "toBeSorted/event_manager.h"
#include "toBeSorted/file_manager.h"
@@ -33,13 +34,10 @@ mVec3_c *dAcBase_c::s_Create_Position;
mAng3_c *dAcBase_c::s_Create_Rotation;
mVec3_c *dAcBase_c::s_Create_Scale;
dAcBase_c *dAcBase_c::s_Create_Parent;
ObjInfo *dAcBase_c::s_Create_ObjInfo;
const ActorInfo *dAcBase_c::s_Create_ActorInfo;
u8 dAcBase_c::s_Create_Subtype;
extern "C" ObjInfo *getObjByActorIdAndSubtype_unkNamespace(ProfileName, u8);
extern "C" ObjInfo *getObjByActorName_unkNamespace(char *name);
extern "C" char *getObjectName_8006a730(ObjInfo *);
extern "C" dSoundSourceIf_c *soundForActorInitRelated_803889c0(s8, fBase_c *, char *, u8);
extern "C" dSoundSourceIf_c *soundForActorInitRelated_803889c0(s8, fBase_c *, const char *, u8);
bool dAcBase_c::createHeap() {
return true;
@@ -50,7 +48,7 @@ bool dAcBase_c::createHeap() {
// 8002c3b0
dAcBase_c::dAcBase_c()
: heap_allocator(),
obj_info(s_Create_ObjInfo),
mpActorInfo(s_Create_ActorInfo),
sound_list(),
obj_pos(&position),
params2(s_Create_Params2),
@@ -82,8 +80,8 @@ dAcBase_c::dAcBase_c()
fProfile::fActorProfile_c *profile = (fProfile::fActorProfile_c *)((*fProfile::sProfileList)[profile_name]);
actor_properties = profile->mActorProperties;
if (obj_info == nullptr) {
obj_info = getObjByActorIdAndSubtype_unkNamespace(profile_name, actor_subtype);
if (mpActorInfo == nullptr) {
mpActorInfo = getActorInfoByProfileAndSubtype(profile_name, actor_subtype);
}
someStr[0] = '\0';
}
@@ -98,7 +96,7 @@ dAcBase_c::~dAcBase_c() {}
void dAcBase_c::setTempCreateParams(
mVec3_c *pos, mAng3_c *rot, mVec3_c *scale, s32 roomId, u32 params2, dAcBase_c *parent, u8 subtype, u16 unkFlag,
s8 viewClipIdx, ObjInfo *objInfo
s8 viewClipIdx, const ActorInfo *actorInfo
) {
s_Create_Position = pos;
s_Create_Rotation = rot;
@@ -109,22 +107,21 @@ void dAcBase_c::setTempCreateParams(
s_Create_Subtype = subtype;
s_Create_UnkFlags = unkFlag;
s_Create_ViewClipIdx = viewClipIdx;
s_Create_ObjInfo = objInfo;
s_Create_ActorInfo = actorInfo;
}
// has regswap
dSoundSourceIf_c *dAcBase_c::FUN_8002c690() {
if (obj_info == nullptr) {
dSoundSourceIf_c *dAcBase_c::createSoundSource() {
if (mpActorInfo == nullptr) {
return nullptr;
}
s32 unk_val = obj_info->unk_0xA;
if (unk_val == -1) {
s32 soundSourceType = mpActorInfo->soundSourceType;
if (soundSourceType == -1) {
return nullptr;
}
char *objName = getObjectName_8006a730(obj_info);
return soundForActorInitRelated_803889c0(unk_val, this, objName, subtype);
const char *actorName = getActorName(mpActorInfo);
return soundForActorInitRelated_803889c0(soundSourceType, this, actorName, subtype);
}
int dAcBase_c::initAllocatorWork1Heap(int size, char *name, int align) {
@@ -135,7 +132,7 @@ int dAcBase_c::initAllocator(int size, char *name, EGG::Heap *heap, int align) {
if (!heap_allocator.createNewTempFrmHeap(size, heap, name, 0x20, 0)) {
return 0;
}
sound_source = FUN_8002c690();
sound_source = createSoundSource();
int success = createHeap();
heap_allocator.adjustFrmHeapRestoreCurrent();
return success;
@@ -344,16 +341,16 @@ u32 dAcBase_c::getParams2Lower() const {
// 8002d020
dAcBase_c *dAcBase_c::findActor(char *objName, dAcBase_c *parent) {
ObjInfo *objInfo = getObjByActorName_unkNamespace(objName);
if (objInfo == nullptr) {
const ActorInfo *actorInfo = getActorInfoByName(objName);
if (actorInfo == nullptr) {
return nullptr;
} else {
do {
parent = (dAcBase_c *)fManager_c::searchBaseByProfName(objInfo->obj_id, parent);
parent = (dAcBase_c *)fManager_c::searchBaseByProfName(actorInfo->profileId, parent);
if (parent == nullptr) {
break;
}
} while (parent->actor_subtype != objInfo->subtype);
} while (parent->actor_subtype != actorInfo->subtype);
}
return parent;
}