mirror of
https://github.com/zeldaret/tp
synced 2026-07-08 14:36:36 -04:00
Z2SoundObject, JAUSoundAnimator OK, work on Z2SoundHandles (#1968)
* d_a_tag_evtarea mostly done, work on d_a_npc * work on d_a_npc_ash * work on Z2SoundHandles * Z2SoundObject, JAUSoundAnimator OK * Update Progress.md --------- Co-authored-by: randomsalience <randomsalience@gmail.com>
This commit is contained in:
@@ -4,47 +4,12 @@
|
||||
//
|
||||
|
||||
#include "Z2AudioLib/Z2SoundHandles.h"
|
||||
#include "JSystem/JAudio2/JASGadget.h"
|
||||
#include "JSystem/JAudio2/JAISoundInfo.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "dol2asm.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
template <typename A0>
|
||||
struct JASMemPool {};
|
||||
/* JASMemPool<Z2SoundHandlePool> */
|
||||
struct JASMemPool__template4 {
|
||||
/* 802AB200 */ void func_802AB200(void* _this);
|
||||
};
|
||||
|
||||
struct JASGenericMemPool {
|
||||
/* 80290848 */ JASGenericMemPool();
|
||||
/* 80290860 */ ~JASGenericMemPool();
|
||||
/* 80290948 */ void alloc(u32);
|
||||
/* 80290994 */ void free(void*, u32);
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__14Z2SoundHandlesFv();
|
||||
extern "C" void __dt__14Z2SoundHandlesFv();
|
||||
extern "C" void initHandlesPool__14Z2SoundHandlesFUc();
|
||||
extern "C" void deleteHandlesPool__14Z2SoundHandlesFv();
|
||||
extern "C" void func_802AB200(void* _this);
|
||||
extern "C" void getHandleSoundID__14Z2SoundHandlesF10JAISoundID();
|
||||
extern "C" void getHandleUserData__14Z2SoundHandlesFUl();
|
||||
extern "C" void getFreeHandle__14Z2SoundHandlesFv();
|
||||
extern "C" void getLowPrioSound__14Z2SoundHandlesF10JAISoundID();
|
||||
extern "C" void stopAllSounds__14Z2SoundHandlesFUl();
|
||||
extern "C" void isActive__14Z2SoundHandlesCFv();
|
||||
extern "C" void func_802AB538();
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void __ct__17JASGenericMemPoolFv();
|
||||
extern "C" void __dt__17JASGenericMemPoolFv();
|
||||
extern "C" void alloc__17JASGenericMemPoolFUl();
|
||||
@@ -63,13 +28,15 @@ extern "C" void _savegpr_26();
|
||||
extern "C" void _savegpr_28();
|
||||
extern "C" void _restgpr_26();
|
||||
extern "C" void _restgpr_28();
|
||||
extern "C" extern u8 data_80450B5C[4];
|
||||
extern "C" extern u8 data_80451348[8];
|
||||
extern "C" extern u8 __OSReport_disable;
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
/* 804341B8-804341C4 060ED8 000C+00 3/3 0/0 0/0 .bss @632 */
|
||||
static u8 lit_632[12];
|
||||
|
||||
/* 804341C4-804341D8 060EE4 0010+04 3/3 1/1 0/0 .bss
|
||||
* memPool_$localstatic3$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv */
|
||||
extern u8 data_804341C4[16 + 4 /* padding */];
|
||||
u8 data_804341C4[16 + 4 /* padding */];
|
||||
|
||||
// inline JAISoundID::JAISoundID(u32 pId) : mId(pId) {}
|
||||
|
||||
@@ -89,16 +56,18 @@ void Z2SoundHandles::initHandlesPool(u8 pNumHandles) {
|
||||
mNumHandles = pNumHandles;
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 804341B8-804341C4 060ED8 000C+00 3/3 0/0 0/0 .bss @632 */
|
||||
static u8 lit_632[12];
|
||||
|
||||
/* 804341C4-804341D8 060EE4 0010+04 3/3 1/1 0/0 .bss
|
||||
* memPool_$localstatic3$getMemPool___39JASPoolAllocObject<17Z2SoundHandlePool>Fv */
|
||||
extern u8 data_804341C4[16 + 4 /* padding */];
|
||||
u8 data_804341C4[16 + 4 /* padding */];
|
||||
|
||||
/* 802AB120-802AB200 2A5A60 00E0+00 1/1 1/1 0/0 .text deleteHandlesPool__14Z2SoundHandlesFv */
|
||||
#ifdef NONMATCHING
|
||||
void Z2SoundHandles::deleteHandlesPool() {
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
while (link = getFirst(), link != NULL) {
|
||||
Z2SoundHandlePool* handle = link->getObject();
|
||||
remove(handle);
|
||||
delete handle;
|
||||
}
|
||||
mNumHandles = 0;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -107,6 +76,7 @@ asm void Z2SoundHandles::deleteHandlesPool() {
|
||||
#include "asm/Z2AudioLib/Z2SoundHandles/deleteHandlesPool__14Z2SoundHandlesFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802AB200-802AB254 2A5B40 0054+00 3/3 1/1 0/0 .text __dt__31JASMemPool<17Z2SoundHandlePool>Fv */
|
||||
#pragma push
|
||||
@@ -148,25 +118,62 @@ JAISoundHandle* Z2SoundHandles::getHandleUserData(u32 pUserData) {
|
||||
|
||||
/* 802AB2D8-802AB3D0 2A5C18 00F8+00 0/0 3/3 0/0 .text getFreeHandle__14Z2SoundHandlesFv
|
||||
*/
|
||||
#ifdef NONMATCHING
|
||||
JAISoundHandle* Z2SoundHandles::getFreeHandle() {
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
for (link = getFirst(); link != NULL; link = link->getNext()) {
|
||||
JAISoundHandle* handle = link->getObject();
|
||||
if (!handle->isSoundAttached()) {
|
||||
return handle;
|
||||
}
|
||||
}
|
||||
|
||||
if (getNumHandles() < mNumHandles)
|
||||
{
|
||||
Z2SoundHandlePool* handle = new Z2SoundHandlePool();
|
||||
if (handle != NULL) {
|
||||
append(handle);
|
||||
return handle;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void Z2SoundHandles::getFreeHandle() {
|
||||
asm JAISoundHandle* Z2SoundHandles::getFreeHandle() {
|
||||
nofralloc
|
||||
#include "asm/Z2AudioLib/Z2SoundHandles/getFreeHandle__14Z2SoundHandlesFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802AB3D0-802AB4A0 2A5D10 00D0+00 0/0 2/2 0/0 .text
|
||||
* getLowPrioSound__14Z2SoundHandlesF10JAISoundID */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void Z2SoundHandles::getLowPrioSound(JAISoundID param_0) {
|
||||
nofralloc
|
||||
#include "asm/Z2AudioLib/Z2SoundHandles/getLowPrioSound__14Z2SoundHandlesF10JAISoundID.s"
|
||||
JAISoundHandle* Z2SoundHandles::getLowPrioSound(JAISoundID pSoundId) {
|
||||
JAISoundInfo* sound_info = JASGlobalInstance<JAISoundInfo>::getInstance();
|
||||
JAISoundHandle* handle;
|
||||
u32 low_prio = 0xffff;
|
||||
JAISoundHandle* low_prio_handle = NULL;
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
for (link = getFirst(); link != NULL; link = link->getNext()) {
|
||||
handle = link->getObject();
|
||||
if (!handle->isSoundAttached()) {
|
||||
return handle;
|
||||
}
|
||||
u32 prio = sound_info->getPriority(handle->getSound()->getID());
|
||||
if (prio < low_prio) {
|
||||
low_prio = prio;
|
||||
low_prio_handle = handle;
|
||||
}
|
||||
}
|
||||
if (sound_info->getPriority(pSoundId) >= low_prio) {
|
||||
return low_prio_handle;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
void Z2SoundHandles::stopAllSounds(u32 fadeout) {
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
@@ -194,6 +201,21 @@ bool Z2SoundHandles::isActive() const {
|
||||
|
||||
/* 802AB538-802AB64C 2A5E78 0114+00 0/0 1/1 0/0 .text
|
||||
* setPos__14Z2SoundHandlesFRCQ29JGeometry8TVec3<f> */
|
||||
#ifdef NONMATCHING
|
||||
void Z2SoundHandles::setPos(JGeometry::TVec3<f32> const& param_0) {
|
||||
JSULink<Z2SoundHandlePool>* link;
|
||||
for (link = getFirst(); link != NULL; link = link->getNext()) {
|
||||
Z2SoundHandlePool* handle = link->getObject();
|
||||
if (handle->isSoundAttached()) {
|
||||
handle->getSound()->setPos(param_0);
|
||||
}
|
||||
else {
|
||||
remove(handle);
|
||||
delete handle;
|
||||
}
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
@@ -202,3 +224,4 @@ asm void Z2SoundHandles::setPos(JGeometry::TVec3<f32> const& param_0) {
|
||||
#include "asm/Z2AudioLib/Z2SoundHandles/func_802AB538.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user