mirror of
https://github.com/HarbourMasters/Starship
synced 2026-09-10 12:55:02 -04:00
Some further docs for audio spec and planet paths (#219)
* avoid ub * format * torch * more stuff
This commit is contained in:
+86
-29
@@ -144,35 +144,92 @@ static ReverbSettings D_800C76A8[] = {
|
||||
{ 1, 0x30, 0x4FFF, 0, 0 },
|
||||
};
|
||||
AudioSpec gAudioSpecs[] = {
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C74D0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C74E0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C74F0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7500, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7510, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7520, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7530, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7540, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7550, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7560, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7570, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7580, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 1, 0x16, 2, D_800C7590, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x2B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C75A0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C75B0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 3, D_800C75C0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x34000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C75D8, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C75E8, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C75F8, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7608, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7618, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
{ 0x7D00, 2, 0x20, 2, D_800C7628, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0 },
|
||||
{ 0x7D00, 1, 0x20, 2, D_800C7638, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0 },
|
||||
{ 0x7D00, 1, 0x20, 2, D_800C7648, 0x7FFF, 0x1200, 0xA000, 0, 0x5B00, 0x1D00, 0, 0, 0 },
|
||||
{ 0x7D00, 1, 0x16, 2, D_800C7658, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0, 0x60000 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7668, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C7678, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0 },
|
||||
{ 0x7D00, 2, 0x20, 2, D_800C7688, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0 },
|
||||
{ 0x7D00, 2, 0x16, 2, D_800C74D0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000, 0x35000 },
|
||||
/* 0 */ { 32000, 2, 22, ARRAY_COUNT(D_800C74D0), D_800C74D0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 1 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C74E0), D_800C74E0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 2 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C74F0), D_800C74F0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 3 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7500), D_800C7500, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 4 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7510), D_800C7510, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 5 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7520), D_800C7520, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 6 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7530), D_800C7530, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 7 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7540), D_800C7540, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 8 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7550), D_800C7550, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 9 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7560), D_800C7560, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 10 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7570), D_800C7570, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 11 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7580), D_800C7580, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 12 */
|
||||
{ 32000, 1, 22, ARRAY_COUNT(D_800C7590), D_800C7590, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x2B000,
|
||||
0x35000 },
|
||||
/* 13 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C75A0), D_800C75A0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 14 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C75B0), D_800C75B0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 15 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C75C0), D_800C75C0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x34000 },
|
||||
/* 16 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C75D8), D_800C75D8, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 17 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C75E8), D_800C75E8, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 18 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C75F8), D_800C75F8, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 19 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7608), D_800C7608, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 20 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7618), D_800C7618, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
/* 21 */
|
||||
{ 32000, 2, 32, ARRAY_COUNT(D_800C7628), D_800C7628, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x00000 },
|
||||
/* 22 */
|
||||
{ 32000, 1, 32, ARRAY_COUNT(D_800C7638), D_800C7638, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x00000 },
|
||||
/* 23 */
|
||||
{ 32000, 1, 32, ARRAY_COUNT(D_800C7648), D_800C7648, 0x7FFF, 0x1200, 0xA000, 0, 0x5B00, 0x1D00, 0, 0x00000,
|
||||
0x00000 },
|
||||
/* 24 */
|
||||
{ 32000, 1, 22, ARRAY_COUNT(D_800C7658), D_800C7658, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x00000,
|
||||
0x60000 },
|
||||
/* 25 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7668), D_800C7668, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x00000 },
|
||||
/* 26 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C7678), D_800C7678, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x00000 },
|
||||
/* 27 */
|
||||
{ 32000, 2, 32, ARRAY_COUNT(D_800C7688), D_800C7688, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x00000 },
|
||||
/* 28 */
|
||||
{ 32000, 2, 22, ARRAY_COUNT(D_800C74D0), D_800C74D0, 0x7FFF, 0x1200, 0x1100, 0, 0x5000, 0x2400, 0, 0x1B000,
|
||||
0x35000 },
|
||||
};
|
||||
s32 D_800C7C28 = 0x20000000; // unused?
|
||||
s16 gSeqTicksPerBeat = 0x30;
|
||||
|
||||
@@ -215,8 +215,7 @@ f32 func_80013B90(AdsrState* adsr) {
|
||||
break;
|
||||
default:
|
||||
if (adsr->delay >= 4) {
|
||||
adsr->delay =
|
||||
(adsr->delay * gAudioBufferParams.ticksPerUpdate / gAudioBufferParams.specUnk4) / 4;
|
||||
adsr->delay = (adsr->delay * gAudioBufferParams.ticksPerUpdate / gAudioBufferParams.count) / 4;
|
||||
}
|
||||
if (adsr->delay == 0) {
|
||||
adsr->delay = 1;
|
||||
|
||||
@@ -82,7 +82,7 @@ u8 sSeqCmdWritePos = 0;
|
||||
u8 sSeqCmdReadPos = 0;
|
||||
u8 sStartSeqDisabled = 0;
|
||||
u8 sSoundModeList[4] = { SOUNDMODE_STEREO, SOUNDMODE_HEADSET, SOUNDMODE_SURROUND, SOUNDMODE_MONO };
|
||||
u8 sNewAudioSpecId = 0;
|
||||
u8 sNewAudioSpecId = AUDIOSPEC_0;
|
||||
u8 D_800C5D58 = 0;
|
||||
s32 D_800C5D5C = 0; // unused. file split?
|
||||
s8 sBaseReverb = 0;
|
||||
@@ -751,7 +751,7 @@ void func_80017494(void) {
|
||||
}
|
||||
|
||||
void func_80017550(void) {
|
||||
if (sNewAudioSpecId == 12) {
|
||||
if (sNewAudioSpecId == AUDIOSPEC_12) {
|
||||
AUDIOCMD_GLOBAL_SYNC_LOAD_SEQ_PARTS(14, 0);
|
||||
}
|
||||
}
|
||||
@@ -2684,7 +2684,7 @@ void Audio_PlayFanfare(u16 seqId, u8 bgmVolume, u8 bgmFadeoutTime, u8 bgmFadeinT
|
||||
void func_8001D520(void) {
|
||||
u8 i;
|
||||
|
||||
if (sNewAudioSpecId == 24) {
|
||||
if (sNewAudioSpecId == AUDIOSPEC_24) {
|
||||
Audio_ClearVoice();
|
||||
func_8001D6DC(0);
|
||||
AUDIO_PLAY_SFX(0x0903F004, gDefaultSfxSource, 4);
|
||||
@@ -2840,9 +2840,9 @@ void func_8001DD40(void) {
|
||||
u16 sp1E = 1;
|
||||
|
||||
Audio_StartSequence(SEQ_PLAYER_VOICE, SEQ_ID_VOICE, 0xFF, 1);
|
||||
if (sNewAudioSpecId == 12) {
|
||||
if (sNewAudioSpecId == AUDIOSPEC_12) {
|
||||
sp1E = 360;
|
||||
} else if (sNewAudioSpecId < 23) {
|
||||
} else if (sNewAudioSpecId < AUDIOSPEC_23) {
|
||||
sp1E = 90;
|
||||
}
|
||||
Audio_StartSequence(SEQ_PLAYER_SFX, SEQ_ID_SFX, 0xFF, sp1E);
|
||||
@@ -2860,11 +2860,11 @@ void func_8001DD40(void) {
|
||||
}
|
||||
|
||||
void func_8001DE1C(u8 oldSpecId) {
|
||||
if (oldSpecId == 16) {
|
||||
if ((sNewAudioSpecId == 22) || (sNewAudioSpecId == 23)) {
|
||||
if (oldSpecId == AUDIOSPEC_16) {
|
||||
if ((sNewAudioSpecId == AUDIOSPEC_22) || (sNewAudioSpecId == AUDIOSPEC_23)) {
|
||||
D_800C5D58 = 2;
|
||||
}
|
||||
} else if ((oldSpecId == 28) && (sNewAudioSpecId == 23)) {
|
||||
} else if ((oldSpecId == AUDIOSPEC_28) && (sNewAudioSpecId == AUDIOSPEC_23)) {
|
||||
D_800C5D58 = 2;
|
||||
} else {
|
||||
D_800C5D58 = 1;
|
||||
|
||||
@@ -535,7 +535,7 @@ void AudioHeap_UpdateReverbs(void) {
|
||||
s32 count;
|
||||
s32 reverbIndex;
|
||||
|
||||
if (gAudioBufferParams.specUnk4 == 2) {
|
||||
if (gAudioBufferParams.count == 2) {
|
||||
count = 2;
|
||||
} else {
|
||||
count = 1;
|
||||
@@ -563,7 +563,7 @@ s32 AudioHeap_ResetStep(void) {
|
||||
s32 j;
|
||||
s32 sp24;
|
||||
|
||||
if (gAudioBufferParams.specUnk4 == 2) {
|
||||
if (gAudioBufferParams.count == 2) {
|
||||
sp24 = 2;
|
||||
} else {
|
||||
sp24 = 1;
|
||||
@@ -665,12 +665,12 @@ void AudioHeap_Init(void) {
|
||||
gNumNotes = spec->numNotes;
|
||||
D_8014C1B0 = spec->unk_14;
|
||||
gMaxTempo = (u16) ((gAudioBufferParams.ticksPerUpdate * 2880000.0f / gSeqTicksPerBeat) / gMaxTempoTvTypeFactors);
|
||||
gAudioBufferParams.specUnk4 = spec->unk_04;
|
||||
gAudioBufferParams.samplesPerFrameTarget *= gAudioBufferParams.specUnk4;
|
||||
gAudioBufferParams.maxAiBufferLength *= gAudioBufferParams.specUnk4;
|
||||
gAudioBufferParams.minAiBufferLength *= gAudioBufferParams.specUnk4;
|
||||
gAudioBufferParams.ticksPerUpdate *= gAudioBufferParams.specUnk4;
|
||||
if (gAudioBufferParams.specUnk4 >= 2) {
|
||||
gAudioBufferParams.count = spec->numBuffers;
|
||||
gAudioBufferParams.samplesPerFrameTarget *= gAudioBufferParams.count;
|
||||
gAudioBufferParams.maxAiBufferLength *= gAudioBufferParams.count;
|
||||
gAudioBufferParams.minAiBufferLength *= gAudioBufferParams.count;
|
||||
gAudioBufferParams.ticksPerUpdate *= gAudioBufferParams.count;
|
||||
if (gAudioBufferParams.count >= 2) {
|
||||
gAudioBufferParams.maxAiBufferLength -= 0x10;
|
||||
}
|
||||
gMaxAudioCmds = (gNumNotes * 0x14 * gAudioBufferParams.ticksPerUpdate) + (spec->numReverbs * 0x20) + 0x1E0;
|
||||
|
||||
@@ -157,7 +157,7 @@ void AudioLoad_InitSampleDmaBuffers(s32 numNotes) {
|
||||
u8* dma;
|
||||
|
||||
gSampleDmaBuffSize = 0x2D0;
|
||||
for (i = 0; i < (3 * gNumNotes * gAudioBufferParams.specUnk4); i++) {
|
||||
for (i = 0; i < (3 * gNumNotes * gAudioBufferParams.count); i++) {
|
||||
dma = AudioHeap_Alloc(&gMiscPool, gSampleDmaBuffSize);
|
||||
gSampleDmas[gSampleDmaCount].ramAddr = dma;
|
||||
if (dma == NULL) {
|
||||
@@ -876,7 +876,7 @@ void AudioLoad_Init(void) {
|
||||
gAiBuffers[i][j] = 0;
|
||||
}
|
||||
}
|
||||
gAudioSpecId = 0;
|
||||
gAudioSpecId = AUDIOSPEC_0;
|
||||
gResetStatus = 1;
|
||||
AudioHeap_ResetStep();
|
||||
gSequenceTable = &gSeqTableInit;
|
||||
|
||||
@@ -54,7 +54,7 @@ SPTask* AudioThread_CreateTask(void) {
|
||||
s32 pad30;
|
||||
|
||||
gAudioTaskCountQ++;
|
||||
if ((gAudioTaskCountQ % gAudioBufferParams.specUnk4) != 0) {
|
||||
if ((gAudioTaskCountQ % gAudioBufferParams.count) != 0) {
|
||||
return gWaitingAudioTask;
|
||||
}
|
||||
osSendMesg(gAudioTaskStartQueue, (OSMesg) gAudioTaskCountQ, 0);
|
||||
@@ -142,7 +142,7 @@ SPTask* AudioThread_CreateTask(void) {
|
||||
gMaxAbiCmdCnt = sp50;
|
||||
}
|
||||
|
||||
if (gAudioBufferParams.specUnk4 == 1) {
|
||||
if (gAudioBufferParams.count == 1) {
|
||||
return gAudioCurTask;
|
||||
} else {
|
||||
gWaitingAudioTask = gAudioCurTask;
|
||||
|
||||
Reference in New Issue
Block a user