You've already forked Microtransactions64
mirror of
https://github.com/Print-and-Panic/Microtransactions64.git
synced 2026-01-21 10:17:19 -08:00
202 lines
5.6 KiB
C
202 lines
5.6 KiB
C
#ifndef AUDIO_DATA_H
|
|
#define AUDIO_DATA_H
|
|
|
|
#include <PR/ultratypes.h>
|
|
|
|
#include "internal.h"
|
|
#include "types.h"
|
|
#include "synthesis.h"
|
|
|
|
#define AUDIO_LOCK_UNINITIALIZED 0x00000000
|
|
#define AUDIO_LOCK_NOT_LOADING 0x76557364
|
|
#define AUDIO_LOCK_LOADING 0x19710515
|
|
|
|
#define NUMAIBUFFERS 3
|
|
|
|
#if defined(VERSION_EU)
|
|
#define DMA_BUF_SIZE_0 0x400
|
|
#define DMA_BUF_SIZE_1 0x200
|
|
#else
|
|
#define DMA_BUF_SIZE_0 (144 * 9)
|
|
#define DMA_BUF_SIZE_1 (160 * 9)
|
|
#endif
|
|
|
|
#ifdef EXPAND_AUDIO_HEAP
|
|
#define PERSISTENT_SEQ_MEM 0x8200
|
|
#define PERSISTENT_BANK_MEM 0xDC00
|
|
#define TEMPORARY_SEQ_MEM 0xE800
|
|
#define TEMPORARY_BANK_MEM 0x5500
|
|
#define BANK_SETS_ALLOC 0x400
|
|
#define EXT_AUDIO_INIT_POOL_SIZE 0x2000
|
|
#else
|
|
#define PERSISTENT_SEQ_MEM 0x4100
|
|
#define PERSISTENT_BANK_MEM 0x6E00
|
|
#define TEMPORARY_SEQ_MEM 0x7400
|
|
#define TEMPORARY_BANK_MEM 0x2A80
|
|
#define BANK_SETS_ALLOC 0x100
|
|
#define EXT_AUDIO_INIT_POOL_SIZE 0x0
|
|
#endif
|
|
|
|
#define SEQ_BANK_MEM (PERSISTENT_SEQ_MEM + PERSISTENT_BANK_MEM + TEMPORARY_SEQ_MEM + TEMPORARY_BANK_MEM)
|
|
|
|
// constant .data
|
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
extern struct AudioSessionSettingsEU gAudioSessionPresets[];
|
|
extern struct ReverbSettingsEU sReverbSettings[8];
|
|
#else
|
|
extern struct AudioSessionSettings gAudioSessionPresets[1];
|
|
extern struct ReverbSettingsUS gReverbSettings[18];
|
|
#endif
|
|
extern u16 D_80332388[128]; // unused
|
|
|
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
extern f32 gPitchBendFrequencyScale[256];
|
|
#else
|
|
extern f32 gPitchBendFrequencyScale[255];
|
|
#endif
|
|
extern f32 gNoteFrequencies[128];
|
|
|
|
extern u8 gDefaultShortNoteVelocityTable[16];
|
|
extern u8 gDefaultShortNoteDurationTable[16];
|
|
extern s8 gVibratoCurve[16];
|
|
extern struct AdsrEnvelope gDefaultEnvelope[3];
|
|
|
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
extern s16 gEuUnknownWave7[256];
|
|
extern s16 *gWaveSamples[6];
|
|
#else
|
|
extern s16 *gWaveSamples[4];
|
|
#endif
|
|
|
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
extern u8 euUnknownData_8030194c[4];
|
|
#ifdef VERSION_EU
|
|
extern u16 gHeadsetPanQuantization[0x10];
|
|
#else
|
|
extern u16 gHeadsetPanQuantization[0x40];
|
|
#endif
|
|
extern s16 euUnknownData_80301950[64];
|
|
extern struct NoteSubEu gZeroNoteSub;
|
|
extern struct NoteSubEu gDefaultNoteSub;
|
|
#else
|
|
extern u16 gHeadsetPanQuantization[10];
|
|
#endif
|
|
extern f32 gHeadsetPanVolume[128];
|
|
extern f32 gStereoPanVolume[128];
|
|
extern f32 gDefaultPanVolume[128];
|
|
|
|
extern f32 gVolRampingLhs136[128];
|
|
extern f32 gVolRampingRhs136[128];
|
|
extern f32 gVolRampingLhs144[128];
|
|
extern f32 gVolRampingRhs144[128];
|
|
extern f32 gVolRampingLhs128[128];
|
|
extern f32 gVolRampingRhs128[128];
|
|
|
|
// non-constant .data
|
|
extern s16 gTatumsPerBeat;
|
|
extern s32 gAudioHeapSize; // AUDIO_HEAP_SIZE
|
|
extern s32 gAudioInitPoolSize; // AUDIO_INIT_POOL_SIZE
|
|
extern volatile s32 gAudioLoadLock;
|
|
|
|
// .bss
|
|
extern volatile s32 gAudioFrameCount;
|
|
|
|
// number of DMAs performed during this frame
|
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
extern s32 gCurrAudioFrameDmaCount;
|
|
#else
|
|
extern volatile s32 gCurrAudioFrameDmaCount;
|
|
#endif
|
|
|
|
extern s32 gAudioTaskIndex;
|
|
extern s32 gCurrAiBufferIndex;
|
|
|
|
extern u64 *gAudioCmdBuffers[2];
|
|
extern u64 *gAudioCmd;
|
|
|
|
extern struct SPTask *gAudioTask;
|
|
extern struct SPTask gAudioTasks[2];
|
|
|
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
extern f32 D_EU_802298D0;
|
|
extern s32 gRefreshRate;
|
|
#endif
|
|
|
|
extern s16 *gAiBuffers[NUMAIBUFFERS];
|
|
extern s16 gAiBufferLengths[NUMAIBUFFERS];
|
|
#if defined(VERSION_SH)
|
|
#define AIBUFFER_LEN 0xb00
|
|
#elif defined(VERSION_EU)
|
|
#define AIBUFFER_LEN (0xa0 * 17)
|
|
#else
|
|
#define AIBUFFER_LEN (0xa0 * 16)
|
|
#endif
|
|
|
|
extern u32 gAudioRandom;
|
|
|
|
#if defined(VERSION_US) || defined(VERSION_JP)
|
|
#define NOTES_BUFFER_SIZE \
|
|
( \
|
|
MAX_SIMULTANEOUS_NOTES * ((4 /* updatesPerFrame */ * 20 * 2 * sizeof(u64)) \
|
|
+ ALIGN16(sizeof(struct Note)) \
|
|
+ (DMA_BUF_SIZE_0 * 3) \
|
|
+ DMA_BUF_SIZE_1 \
|
|
+ ALIGN16(sizeof(struct NoteSynthesisBuffers))) \
|
|
+ (320 * 2 * sizeof(u64)) /* gMaxAudioCmds */ \
|
|
)
|
|
#else // Probably SH incompatible but that's an entirely different headache to save at this point tbh
|
|
#define NOTES_BUFFER_SIZE \
|
|
( \
|
|
MAX_SIMULTANEOUS_NOTES * ((4 /* updatesPerFrame */ * 0x10 * 2 * sizeof(u64)) \
|
|
+ ALIGN16(sizeof(struct Note)) \
|
|
+ (DMA_BUF_SIZE_0 * 3 * 1 /* presetUnk4 */) \
|
|
+ (DMA_BUF_SIZE_1) \
|
|
+ ALIGN16(sizeof(struct NoteSynthesisBuffers)) \
|
|
+ ALIGN16(4 /* updatesPerFrame */ * sizeof(struct NoteSubEu))) \
|
|
+ ((0x300 + (4 /* numReverbs */ * 0x20)) * 2 * sizeof(u64)) /* gMaxAudioCmds */ \
|
|
)
|
|
#endif
|
|
|
|
#ifdef VERSION_SH
|
|
extern f32 unk_sh_data_1[];
|
|
|
|
extern volatile u32 gAudioLoadLockSH;
|
|
|
|
extern u8 D_SH_80350F18;
|
|
extern u8 D_SH_80350F19;
|
|
|
|
extern OSMesg D_SH_80350F1C[1];
|
|
extern OSMesgQueue D_SH_80350F20; // address written to D_SH_80350F38
|
|
extern OSMesgQueue *D_SH_80350F38;
|
|
|
|
extern OSMesg D_SH_80350F40[4];
|
|
extern OSMesgQueue D_SH_80350F50; // address written to D_SH_80350F68
|
|
extern OSMesgQueue *D_SH_80350F68;
|
|
|
|
extern OSMesg D_SH_80350F6C[1];
|
|
extern OSMesgQueue D_SH_80350F70; // address written to D_SH_80350F88
|
|
extern OSMesgQueue *D_SH_80350F88;
|
|
|
|
extern OSMesg D_SH_80350F8C[1];
|
|
extern OSMesgQueue D_SH_80350F90; // address written to D_SH_80350F90
|
|
extern OSMesgQueue *D_SH_80350FA8;
|
|
#endif
|
|
|
|
#if defined(VERSION_EU) || defined(VERSION_SH)
|
|
#define AUDIO_INIT_POOL_SIZE (0x2B00 + BANK_SETS_ALLOC + EXT_AUDIO_INIT_POOL_SIZE)
|
|
#else
|
|
#define AUDIO_INIT_POOL_SIZE (0x2400 + BANK_SETS_ALLOC + EXT_AUDIO_INIT_POOL_SIZE)
|
|
#endif
|
|
|
|
// TODO: needs validation once EU can compile. EU is very likely incorrect!
|
|
#define AUDIO_HEAP_SIZE (SEQ_BANK_MEM + AUDIO_INIT_POOL_SIZE + NOTES_BUFFER_SIZE + BETTER_REVERB_SIZE + REVERB_WINDOW_HEAP_SIZE)
|
|
|
|
#ifdef VERSION_SH
|
|
extern u32 D_SH_80315EF0;
|
|
extern u16 D_SH_80315EF4;
|
|
extern u16 D_SH_80315EF8;
|
|
extern u16 D_SH_80315EFC;
|
|
#endif
|
|
|
|
#endif // AUDIO_DATA_H
|