mirror of
https://github.com/zeldaret/tww.git
synced 2026-05-23 23:05:11 -04:00
185 lines
5.3 KiB
C++
185 lines
5.3 KiB
C++
#ifndef JAISTREAMMGR_H
|
|
#define JAISTREAMMGR_H
|
|
|
|
#include "dolphin/dvd/dvd.h"
|
|
#include "JSystem/JAudio/JAISound.h"
|
|
#include "JSystem/JAudio/JASHeapCtrl.h"
|
|
|
|
class JAISound;
|
|
|
|
namespace JASystem {
|
|
class TDSPChannel;
|
|
namespace DSPInterface {
|
|
class DSPBuffer;
|
|
}
|
|
}
|
|
|
|
namespace JAInter {
|
|
class Actor;
|
|
|
|
struct streamUpdate_t {
|
|
streamUpdate_t() { mpSound = NULL; }
|
|
|
|
/* 0x00 */ u8 field_0x0;
|
|
/* 0x01 */ u8 field_0x1;
|
|
/* 0x02 */ u8 field_0x2;
|
|
/* 0x04 */ f32 field_0x4;
|
|
/* 0x08 */ f32 field_0x8;
|
|
/* 0x0C */ f32 field_0xc;
|
|
/* 0x10 */ u32 mActiveTrackFlag;
|
|
/* 0x14 */ JAISound* mpSound;
|
|
};
|
|
|
|
struct streamList_t {
|
|
/* 0x00 */ u8 field_0x00[0x10 - 0x00];
|
|
/* 0x10 */ char field_0x10[0x10];
|
|
/* 0x20 */ u8 field_0x20[0x10];
|
|
};
|
|
|
|
class StreamParameter {
|
|
public:
|
|
void init() {} // TODO
|
|
|
|
/* 0x000 */ u8 mPauseMode;
|
|
/* 0x004 */ int field_0x4;
|
|
/* 0x008 */ u32 mVolumeFlags;
|
|
/* 0x00C */ u32 mPitchFlags;
|
|
/* 0x010 */ u32 mPanFlags;
|
|
/* 0x014 */ JAInter::MoveParaSet mVolumes[20];
|
|
/* 0x154 */ JAInter::MoveParaSet* pitch;
|
|
/* 0x158 */ JAInter::MoveParaSet* pan;
|
|
/* 0x15C */ streamUpdate_t* mUpdateData;
|
|
};
|
|
|
|
namespace StreamMgr {
|
|
void init();
|
|
void storeStreamBuffer(JAISound**, Actor*, u32, u32, u8, void*);
|
|
void releaseStreamBuffer(JAISound*, u32);
|
|
void processGFrameStream();
|
|
void checkEntriedStream();
|
|
void checkWaitStream();
|
|
void checkRequestStream();
|
|
void checkPlayingStream();
|
|
|
|
struct flags_t {
|
|
u8 flag1 : 1;
|
|
u8 flag2 : 1;
|
|
u8 flag3 : 1;
|
|
u8 flag4 : 1;
|
|
u8 flag5 : 1;
|
|
u8 flag6 : 1;
|
|
u8 flag7 : 1;
|
|
u8 flag8 : 1;
|
|
u8 flag9 : 1;
|
|
};
|
|
|
|
extern LinkSound streamControl;
|
|
extern flags_t flags;
|
|
extern streamUpdate_t* streamUpdate;
|
|
extern streamList_t* streamList;
|
|
extern streamList_t* initOnCodeStrm;
|
|
|
|
inline streamUpdate_t* getUpdateInfo() { return streamUpdate; }
|
|
}
|
|
|
|
namespace StreamLib {
|
|
void Play_DirectPCM(JASystem::TDSPChannel*, s16*, u16, u32, s16, u16);
|
|
int Get_DirectPCM_LoopRemain(JASystem::DSPInterface::DSPBuffer*);
|
|
int Get_DirectPCM_Remain(JASystem::DSPInterface::DSPBuffer*);
|
|
void init(bool);
|
|
void allocBuffer(void*, s32);
|
|
bool deallocBuffer();
|
|
u32 getNeedBufferSize();
|
|
void setAllocBufferCallback(void (*)(void));
|
|
void setDeallocBufferCallback(void (*)(void));
|
|
void sync(s32);
|
|
void __DecodePCM();
|
|
void __DecodeADPCM();
|
|
void __Decode();
|
|
void __LoadFin(s32, DVDFileInfo*);
|
|
void LoadADPCM();
|
|
void setVolume(f32);
|
|
void setPitch(f32);
|
|
void setPan(f32 param_1);
|
|
void stop();
|
|
void setPauseFlag(u8 param_1);
|
|
void clearPauseFlag(u8 param_1);
|
|
void setPrepareFlag(u8 param_1);
|
|
void setOutputMode(u32 param_1);
|
|
u8 getPlayingFlag();
|
|
void setDecodedBufferBlocks(u32 param_1);
|
|
void LoopInit();
|
|
s32 directPlayWait(void* param_1);
|
|
void start(char* param_1, u32 param_2, void* param_3);
|
|
void __start();
|
|
s32 callBack(void* param_1);
|
|
|
|
struct StreamHeader {
|
|
int field_0x0;
|
|
int field_0x4;
|
|
u16 field_0x8;
|
|
u16 field_0xa;
|
|
u16 field_0xc;
|
|
u16 field_0xe;
|
|
u32 field_0x10;
|
|
u32 field_0x14;
|
|
int field_0x18;
|
|
int field_0x1c;
|
|
};
|
|
|
|
extern s16 filter_table[];
|
|
extern s16 table4[];
|
|
extern DVDFileInfo finfo;
|
|
extern StreamHeader header;
|
|
extern char Filename[];
|
|
extern JASystem::Kernel::TSolidHeap streamHeap;
|
|
extern u32 LOOP_BLOCKS;
|
|
extern int LOOP_SAMPLESIZE;
|
|
extern int outputmode;
|
|
extern u32 adpcm_remain;
|
|
extern u32 adpcm_loadpoint;
|
|
extern u32 loadsize;
|
|
extern s16* adpcm_buffer;
|
|
extern s16*** loop_buffer;
|
|
extern void** store_buffer;
|
|
extern JASystem::TDSPChannel* assign_ch[2];
|
|
extern u32 playside;
|
|
extern int playback_samples;
|
|
extern int loadup_samples;
|
|
extern u32 adpcmbuf_state;
|
|
extern u32 movieframe;
|
|
extern bool stopflag;
|
|
extern bool stopflag2;
|
|
extern u8 playflag;
|
|
extern u8 playflag2;
|
|
extern u8 prepareflag;
|
|
extern u8 dspch_deallockflag;
|
|
extern f32 outvolume;
|
|
extern f32 outpitch;
|
|
extern f32 outpan;
|
|
extern f32 stackvolume;
|
|
extern f32 stackpitch;
|
|
extern f32 stackpan;
|
|
extern u8 outflag_volume;
|
|
extern bool outflag_pan;
|
|
extern bool outflag_pitch;
|
|
extern int loop_start_flag;
|
|
extern int outpause;
|
|
extern int playmode;
|
|
extern int shift_sample;
|
|
extern int extra_sample;
|
|
extern int DvdLoadFlag;
|
|
extern u32 startInitFlag;
|
|
extern int Mode;
|
|
extern int sFillBlockSize;
|
|
extern void* Head;
|
|
extern bool bufferMode;
|
|
extern u8 allocFlag;
|
|
extern u8 dspFinishFlag;
|
|
extern void (*allocCallback)();
|
|
extern void (*deallocCallback)();
|
|
}
|
|
}
|
|
|
|
#endif /* JAISTREAMMGR_H */
|