1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-16 12:54:40 +00:00
oot/src/audio/debug.inc.c
engineer124 a0d31dba68
Document Audio Thread Commands (#1399)
* begin docs

* cleanup

* copy over progress

* cleanup

* small cleanup

* more docs, fill out cmds

* small touchup

* pan weight ganon comment

* fix specId

* seqcmd cleanup

* format

* small cleanup

* one more thing

* small feedback from MM

* partial PR

* some PR Suggestions

* small adjustments

* ticks, seqticks, frames, updates: term cleanup

* small fix

* PR Review

* PR Review

* PR Review

* rm param

* adjust comment

* update renamed functions

* format

---------

Co-authored-by: Dragorn421 <Dragorn421@users.noreply.github.com>
2024-01-31 18:25:23 -05:00

1381 lines
51 KiB
C

u32 sDebugPadHold;
u32 sDebugPadBtnLast;
u32 sDebugPadPress;
s32 sAudioUpdateTaskStart;
s32 sAudioUpdateTaskEnd;
f32 D_80131C8C = 0.0f;
f32 sAudioUpdateDuration = 0.0f;
f32 sAudioUpdateDurationMax = 0.0f;
u8 sAudioDebugEverOpened = 0;
u8 sAudioSfxMuted = 0;
u8 sAudioDebugPage = 0;
u8 sAudioSndContSel = 0;
u8 sAudioDebugTextColor = 7;
char sAudioDebugPageNames[15][23] = {
"Non",
"Sound Control",
"Spec Info",
"Heap Info",
"Grp Track Info",
"Sub Track Info",
"Channel Info",
"Interface Info",
"SE Flag Swap",
"Block Change BGM",
"Natural Sound Control",
"Ocarina Test",
"SE Parameter Change",
"Scroll Print",
"Free Area",
};
u16 sAudioSndContWork[11] = { 0 };
u16 sAudioSndContWorkLims[11] = { 128, 128, 7, 512, 4, 2, 16, 32, 2, 2, 2 };
char sSfxBankNames[7][11] = { "PLAYER", "ITEM", "ENVIROMENT", "ENEMY", "SYSTEM", "OCARINA", "VOICE" };
char sSoundModeNames[5][10] = { "W-STEREO", "HEADPHONE", "3D SOUND", "MONO", "" };
s8 sAudioIntInfoX = 0;
s8 sAudioIntInfoY = 0;
s8 sAudioIntInfoSel = 0;
s8 sAudioIntInfoBankPage[7] = { 0, 0, 2, 2, 0, 0, 0 };
u8 sAudioScrPrtSel = 0;
u8 sAudioScrPrtInd = 0;
u8 sAudioScrPrtOverflow = 0;
s8 sAudioScrPrtX = 26;
s8 sAudioScrPrtY = 1;
u8 sAudioScrPrtWork[11] = { 1, 19, 6, 0, 0, 0, 0, 0, 0, 0, 1 };
u8 sAudioScrPrtWorkLims[11] = { 2, SCROLL_PRINT_BUF_SIZE, 8, 2, 2, 2, 2, 2, 2, 2, 2 };
u8 sAudioSubTrackInfoSpec = 0;
u8 sAudioSfxSwapIsEditing = 0;
u8 sAudioSfxSwapSel = 0;
u8 sAudioSfxSwapNibbleSel = 0;
char sAudioSfxSwapModeNames[2][5] = { "SWAP", "ADD" };
u8 sAudioSfxParamChgSel = 0;
u8 sAudioSfxParamChgBitSel = 0;
u16 sAudioSfxParamChgWork[4] = { 0 };
u8 sAudioSubTrackInfoPlayerSel = SEQ_PLAYER_BGM_MAIN;
u8 sAudioSubTrackInfoChannelSel = 0;
u8 sSeqPlayerPeakNumLayers[20] = { 0 };
char sAudioSceneNames[3][2] = { "A", "S", "X" };
u8 sAudioBlkChgBgmWork[2] = { 0 };
u8 sAudioBlkChgBgmSel = 0;
char sBoolStrs[3][5] = { "OFF", "ON", "STBY" };
u8 sAudioNatureFailed = false;
u8 sPeakNumNotes = 0;
void AudioDebug_SetInput(void) {
Input inputs[MAXCONTROLLERS];
u32 btn;
PadMgr_RequestPadData(&gPadMgr, inputs, false);
btn = inputs[3].cur.button;
sDebugPadHold = btn & 0xFFFF;
sDebugPadPress = (btn ^ sDebugPadBtnLast) & btn;
sDebugPadBtnLast = btn;
}
char* AudioDebug_ToStringBinary(u32 num, u8 bits) {
u8 i;
u32 flg = 1;
for (i = 0; i < bits; flg *= 2, i++) {
if (num & flg) {
sBinToStrBuf[bits - i - 1] = '1';
} else {
sBinToStrBuf[bits - i - 1] = '0';
}
}
sBinToStrBuf[bits] = '\0';
return sBinToStrBuf;
}
void AudioDebug_Draw(GfxPrint* printer) {
s32 pad[3];
u8 i;
u8 j;
u8 ctr;
u8 ctr2;
s8 k;
s8 k2;
s8 ind;
u8 numEnabledNotes = 0;
char digitStr[2] = "1";
#define SETCOL_COMMON(v, r, g, b) \
GfxPrint_SetColor(printer, ((v & 4) >> 2) * (r), ((v & 2) >> 1) * (g), (v & 1) * (b), 255)
#define SETCOL(r, g, b) SETCOL_COMMON(sAudioDebugTextColor, r, g, b)
#define SETCOL_SCROLLPRINT(r, g, b) SETCOL_COMMON(sAudioScrPrtWork[2], r, g, b)
sAudioDebugEverOpened = true;
GfxPrint_SetPos(printer, 3, 2);
SETCOL(255, 255, 255);
GfxPrint_Printf(printer, "Audio Debug Mode");
GfxPrint_SetPos(printer, 3, 3);
GfxPrint_Printf(printer, "- %s -", sAudioDebugPageNames[sAudioDebugPage]);
for (i = 0; i < gAudioSpecs[gAudioSpecId].numNotes; i++) {
if (gAudioCtx.notes[i].noteSubEu.bitField0.enabled == 1) {
numEnabledNotes++;
}
}
if (sPeakNumNotes < numEnabledNotes) {
sPeakNumNotes = numEnabledNotes;
}
if (sAudioSpecPeakNumNotes[gAudioSpecId] < numEnabledNotes) {
sAudioSpecPeakNumNotes[gAudioSpecId] = numEnabledNotes;
}
if (sAudioScrPrtWork[0] != 0) {
GfxPrint_SetPos(printer, sAudioScrPrtX, sAudioScrPrtY);
SETCOL_SCROLLPRINT(200, 200, 200);
GfxPrint_Printf(printer, "Audio ScrPrt");
ind = sAudioScrPrtInd;
for (k = 0; k < sAudioScrPrtWork[1] + 1; k++) {
if (ind == 0) {
if (sAudioScrPrtOverflow == 1) {
ind = SCROLL_PRINT_BUF_SIZE - 1;
} else {
k = sAudioScrPrtWork[1] + 1; // "break;"
}
} else {
ind--;
}
if (k != sAudioScrPrtWork[1] + 1) {
if ((ind % 5) != 0) {
SETCOL_SCROLLPRINT(180, 180, 180);
} else {
SETCOL_SCROLLPRINT(120, 120, 120);
}
GfxPrint_SetPos(printer, 2 + sAudioScrPrtX, sAudioScrPrtY + sAudioScrPrtWork[1] + 1 - k);
GfxPrint_Printf(printer, "%s", sAudioScrPrtBuf[ind].str);
GfxPrint_SetPos(printer, 7 + sAudioScrPrtX, sAudioScrPrtY + sAudioScrPrtWork[1] + 1 - k);
GfxPrint_Printf(printer, "%04X", sAudioScrPrtBuf[ind].num);
}
}
}
switch (sAudioDebugPage) {
case PAGE_NON:
GfxPrint_SetPos(printer, 3, 4);
SETCOL(255, 64, 64);
GfxPrint_Printf(printer, "BGM CANCEL:%s", sBoolStrs[sAudioSndContWork[5]]);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "SE MUTE:%s", sBoolStrs[sAudioSfxMuted]);
GfxPrint_SetPos(printer, 18, 4);
SETCOL(255, 255, 255);
GfxPrint_Printf(printer, "PUSH CONT-4 A-BTN");
ind = (s8)sAudioSndContWork[2];
i = gSfxBanks[ind][0].next;
j = 0;
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(printer, "SE HANDLE:%s", sSfxBankNames[ind]);
while (i != 0xFF) {
GfxPrint_SetPos(printer, 3, 7 + j++);
GfxPrint_Printf(printer, "%02x %04x %02x %08x", i, gSfxBanks[ind][i].sfxId, gSfxBanks[ind][i].state,
gSfxBanks[ind][i].priority);
i = gSfxBanks[ind][i].next;
}
break;
case PAGE_SOUND_CONTROL:
GfxPrint_SetPos(printer, 2, 4 + sAudioSndContSel);
SETCOL(127, 255, 127);
GfxPrint_Printf(printer, "*");
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 4);
GfxPrint_Printf(printer, "Seq 0 : %2x", sAudioSndContWork[0]);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "Seq 1 : %2x", sAudioSndContWork[1]);
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(printer, "SE HD : %2x %s", sAudioSndContWork[2], sSfxBankNames[sAudioSndContWork[2]]);
GfxPrint_SetPos(printer, 3, 7);
GfxPrint_Printf(printer, "SE No. :%3x", sAudioSndContWork[3]);
GfxPrint_SetPos(printer, 3, 8);
GfxPrint_Printf(printer, "S-Out : %2x %s", sAudioSndContWork[4], sSoundModeNames[sAudioSndContWork[4]]);
GfxPrint_SetPos(printer, 3, 9);
GfxPrint_Printf(printer, "BGM Ent: %2x", sAudioSndContWork[5]);
GfxPrint_SetPos(printer, 3, 10);
GfxPrint_Printf(printer, "Spec : %2x", sAudioSndContWork[6]);
GfxPrint_SetPos(printer, 3, 11);
GfxPrint_Printf(printer, "Na Snd : %2x", sAudioSndContWork[7]);
GfxPrint_SetPos(printer, 3, 12);
GfxPrint_Printf(printer, "Cam Wt : %s", sBoolStrs[sAudioSndContWork[8]]);
GfxPrint_SetPos(printer, 3, 13);
GfxPrint_Printf(printer, "Lnk Wt : %s", sBoolStrs[sAudioSndContWork[9]]);
GfxPrint_SetPos(printer, 3, 14);
GfxPrint_Printf(printer, "SE Ent : %2x", sAudioSndContWork[10]);
break;
case PAGE_INTERFACE_INFO:
ind = 0;
for (k = 0; k < 7; k++) {
if (k == sAudioIntInfoSel) {
SETCOL(255, 127, 127);
} else {
SETCOL(255, 255, 255);
}
GfxPrint_SetPos(printer, 2 + sAudioIntInfoX, 4 + ind + sAudioIntInfoY);
GfxPrint_Printf(printer, "%s <%d>", sSfxBankNames[k], sAudioIntInfoBankPage[k]);
for (k2 = 0; k2 < gChannelsPerBank[gSfxChannelLayout][k]; k2++) {
#define entryIndex (gActiveSfx[k][k2].entryIndex)
#define entry (&gSfxBanks[k][entryIndex])
#define chan (gAudioCtx.seqPlayers[SEQ_PLAYER_SFX].channels[entry->channelIndex])
GfxPrint_SetPos(printer, 2 + sAudioIntInfoX, 5 + ind + sAudioIntInfoY);
if (sAudioIntInfoBankPage[k] == 1) {
if ((entryIndex != 0xFF) &&
((entry->state == SFX_STATE_PLAYING_1) || (entry->state == SFX_STATE_PLAYING_2))) {
GfxPrint_Printf(printer, "%2X %5d %5d %5d %02X %04X %04X", entryIndex, (s32)*entry->posX,
(s32)*entry->posY, (s32)*entry->posZ, entry->sfxImportance,
entry->sfxParams, entry->sfxId);
} else {
GfxPrint_Printf(printer, "FF ----- ----- ----- -- ---- ----");
}
} else if (sAudioIntInfoBankPage[k] == 2) {
if ((entryIndex != 0xFF) &&
((entry->state == SFX_STATE_PLAYING_1) || (entry->state == SFX_STATE_PLAYING_2))) {
GfxPrint_Printf(printer, "%2X %5d %5d %5d %3d %3d %04X", entryIndex, (s32)*entry->posX,
(s32)*entry->posY, (s32)*entry->posZ, (s32)(chan->volume * 127.1f),
chan->newPan, entry->sfxId);
} else {
GfxPrint_Printf(printer, "FF ----- ----- ----- --- --- ----");
}
} else if (sAudioIntInfoBankPage[k] == 3) {
if ((entryIndex != 0xFF) &&
((entry->state == SFX_STATE_PLAYING_1) || (entry->state == SFX_STATE_PLAYING_2))) {
GfxPrint_Printf(printer, "%2X %5d %5d %5d %3d %3d %04X", entryIndex, (s32)*entry->posX,
(s32)*entry->posY, (s32)*entry->posZ, (s32)(chan->freqScale * 100.0f),
chan->targetReverbVol, entry->sfxId);
} else {
GfxPrint_Printf(printer, "FF ----- ----- ----- --- --- ----");
}
} else if (sAudioIntInfoBankPage[k] == 4) {
if ((entryIndex != 0xFF) &&
((entry->state == SFX_STATE_PLAYING_1) || (entry->state == SFX_STATE_PLAYING_2))) {
GfxPrint_Printf(printer, "%2X %04X", entryIndex, entry->sfxId);
} else {
GfxPrint_Printf(printer, "FF ----");
}
}
#undef entryIndex
#undef entry
#undef chan
if (sAudioIntInfoBankPage[k] != 0) {
ind++;
}
}
ind++;
}
break;
case PAGE_SCROLL_PRINT:
GfxPrint_SetPos(printer, 2, 4 + sAudioScrPrtSel);
SETCOL(255, 255, 255);
GfxPrint_Printf(printer, "*");
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 4);
GfxPrint_Printf(printer, "Swicth : %d", sAudioScrPrtWork[0]);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "Lines : %d", sAudioScrPrtWork[1] + 1);
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(printer, "Color : %d", sAudioScrPrtWork[2]);
GfxPrint_SetPos(printer, 3, 7);
GfxPrint_Printf(printer, "%s : %d", sSfxBankNames[0], sAudioScrPrtWork[3]);
GfxPrint_SetPos(printer, 3, 8);
GfxPrint_Printf(printer, "%s : %d", sSfxBankNames[1], sAudioScrPrtWork[4]);
GfxPrint_SetPos(printer, 3, 9);
GfxPrint_Printf(printer, "ENVRONM : %d", sAudioScrPrtWork[5]);
GfxPrint_SetPos(printer, 3, 10);
GfxPrint_Printf(printer, "%s : %d", sSfxBankNames[3], sAudioScrPrtWork[6]);
GfxPrint_SetPos(printer, 3, 11);
GfxPrint_Printf(printer, "%s : %d", sSfxBankNames[4], sAudioScrPrtWork[7]);
GfxPrint_SetPos(printer, 3, 12);
GfxPrint_Printf(printer, "%s : %d", sSfxBankNames[5], sAudioScrPrtWork[8]);
GfxPrint_SetPos(printer, 3, 13);
GfxPrint_Printf(printer, "%s : %d", sSfxBankNames[6], sAudioScrPrtWork[9]);
GfxPrint_SetPos(printer, 3, 14);
GfxPrint_Printf(printer, "SEQ ENT : %d", sAudioScrPrtWork[10]);
break;
case PAGE_SFX_SWAP:
GfxPrint_SetPos(printer, 3, 4);
SETCOL(255, 255, 255);
if (gAudioSfxSwapOff) {
GfxPrint_Printf(printer, "SWAP OFF");
}
if (sAudioSfxSwapIsEditing == 0) {
SETCOL(255, 255, 255);
} else {
SETCOL(127, 127, 127);
}
GfxPrint_SetPos(printer, 2, 6 + sAudioSfxSwapSel);
GfxPrint_Printf(printer, "*");
ctr = sAudioSfxSwapNibbleSel;
if (sAudioSfxSwapNibbleSel >= 4) {
ctr++;
}
if (sAudioSfxSwapIsEditing == 1) {
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3 + ctr, 5);
GfxPrint_Printf(printer, "V");
}
for (i = 0; i < 10; i++) {
if (i == sAudioSfxSwapSel) {
if (sAudioSfxSwapIsEditing == 0) {
SETCOL(192, 192, 192);
} else {
SETCOL(255, 255, 255);
}
} else if (sAudioSfxSwapIsEditing == 0) {
SETCOL(144, 144, 144);
} else {
SETCOL(96, 96, 96);
}
GfxPrint_SetPos(printer, 3, 6 + i);
GfxPrint_Printf(printer, "%04x %04x %s", gAudioSfxSwapSource[i], gAudioSfxSwapTarget[i],
sAudioSfxSwapModeNames[gAudioSfxSwapMode[i]]);
}
break;
case PAGE_SUB_TRACK_INFO:
GfxPrint_SetPos(printer, 3, 4);
SETCOL(255, 255, 255);
GfxPrint_Printf(printer, "Group Track:%d", sAudioSubTrackInfoPlayerSel);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "Sub Track :%d", sAudioSubTrackInfoChannelSel);
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(printer, "TRK NO. ");
GfxPrint_SetPos(printer, 3, 7);
GfxPrint_Printf(printer, "ENTRY ");
GfxPrint_SetPos(printer, 3, 8);
GfxPrint_Printf(printer, "MUTE ");
GfxPrint_SetPos(printer, 3, 9);
GfxPrint_Printf(printer, "OPENNOTE");
ctr2 = 0;
for (i = 0; i < 16; i++) {
if (i == sAudioSubTrackInfoChannelSel) {
SETCOL(255, 255, 255);
} else {
SETCOL(200, 200, 200);
}
GfxPrint_SetPos(printer, 15 + i, 6);
GfxPrint_Printf(printer, "%1X", i);
GfxPrint_SetPos(printer, 15 + i, 7);
if (gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel].channels[i]->enabled) {
GfxPrint_Printf(printer, "O");
} else {
GfxPrint_Printf(printer, "X");
}
GfxPrint_SetPos(printer, 15 + i, 8);
if (gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel].channels[i]->muted) {
GfxPrint_Printf(printer, "O");
} else {
GfxPrint_Printf(printer, "X");
}
GfxPrint_SetPos(printer, 15 + i, 9);
ctr = 0;
for (j = 0; j < 4; j++) {
if (gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel].channels[i]->layers[j] != NULL) {
ctr++;
}
}
GfxPrint_Printf(printer, "%1X", ctr);
ctr2 += ctr;
}
SETCOL(255, 255, 255);
if (sSeqPlayerPeakNumLayers[sAudioSubTrackInfoPlayerSel] < ctr2) {
sSeqPlayerPeakNumLayers[sAudioSubTrackInfoPlayerSel] = ctr2;
}
GfxPrint_SetPos(printer, 16 + i, 9);
GfxPrint_Printf(printer, "%2d,%2d", ctr2, sSeqPlayerPeakNumLayers[sAudioSubTrackInfoPlayerSel]);
GfxPrint_SetPos(printer, 3, 11);
GfxPrint_Printf(printer, "VOL ");
GfxPrint_SetPos(printer, 3, 12);
GfxPrint_Printf(printer, "E VOL ");
GfxPrint_SetPos(printer, 3, 13);
GfxPrint_Printf(printer, "BANK ID ");
GfxPrint_SetPos(printer, 3, 14);
GfxPrint_Printf(printer, "PROG ");
GfxPrint_SetPos(printer, 3, 15);
GfxPrint_Printf(printer, "PAN ");
GfxPrint_SetPos(printer, 3, 16);
GfxPrint_Printf(printer, "PANPOW ");
GfxPrint_SetPos(printer, 3, 17);
GfxPrint_Printf(printer, "FXMIX ");
GfxPrint_SetPos(printer, 3, 18);
GfxPrint_Printf(printer, "PRIO ");
GfxPrint_SetPos(printer, 3, 19);
GfxPrint_Printf(printer, "VIB PIT ");
GfxPrint_SetPos(printer, 3, 20);
GfxPrint_Printf(printer, "VIB DEP ");
GfxPrint_SetPos(printer, 3, 21);
GfxPrint_Printf(printer, "TUNE ");
GfxPrint_SetPos(printer, 3, 22);
GfxPrint_Printf(printer, "TUNE ");
for (i = 0; i < 8; i++) {
GfxPrint_SetPos(printer, 15 + 3 * i, 22);
GfxPrint_Printf(printer, "%02X ",
(u8)gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->seqScriptIO[i]);
}
if (gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel].channels[sAudioSubTrackInfoChannelSel]->enabled) {
GfxPrint_SetPos(printer, 15, 11);
GfxPrint_Printf(printer, "%d",
(u8)(gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->volume *
127.1));
GfxPrint_SetPos(printer, 15, 12);
GfxPrint_Printf(printer, "%d",
(u8)(gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->volumeScale *
127.1));
GfxPrint_SetPos(printer, 15, 13);
GfxPrint_Printf(
printer, "%X",
gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel].channels[sAudioSubTrackInfoChannelSel]->fontId);
ctr = (u8)(gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->instOrWave);
if (ctr == 0) {
ctr2 = 0x7F;
} else if (ctr < 0x80) {
ctr2 = ctr - 1;
} else {
ctr2 = ctr;
}
GfxPrint_SetPos(printer, 15, 14);
GfxPrint_Printf(printer, "%d", ctr2);
GfxPrint_SetPos(printer, 15, 15);
GfxPrint_Printf(
printer, "%d",
gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel].channels[sAudioSubTrackInfoChannelSel]->newPan);
GfxPrint_SetPos(printer, 15, 16);
GfxPrint_Printf(printer, "%d",
gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->panChannelWeight);
GfxPrint_SetPos(printer, 15, 17);
GfxPrint_Printf(printer, "%d",
gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->targetReverbVol);
GfxPrint_SetPos(printer, 15, 18);
GfxPrint_Printf(printer, "%d",
gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->notePriority);
GfxPrint_SetPos(printer, 15, 19);
GfxPrint_Printf(printer, "%d",
(u8)(gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->vibratoRateTarget /
32));
GfxPrint_SetPos(printer, 15, 20);
GfxPrint_Printf(printer, "%d",
(u8)(gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->vibratoDepthTarget /
8));
GfxPrint_SetPos(printer, 15, 21);
GfxPrint_Printf(printer, "%d",
(u16)(gAudioCtx.seqPlayers[sAudioSubTrackInfoPlayerSel]
.channels[sAudioSubTrackInfoChannelSel]
->freqScale *
100));
}
break;
case PAGE_HEAP_INFO:
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 4);
GfxPrint_Printf(printer, "TOTAL %d", gAudioHeapInitSizes.heapSize);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "DRIVER %05X / %05X",
gAudioCtx.miscPool.curRamAddr - gAudioCtx.miscPool.startRamAddr, gAudioCtx.miscPool.size);
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(
printer, "AT-SEQ %02X-%02X (%05X-%05X / %05X)", (u8)gAudioCtx.seqCache.temporary.entries[0].id,
(u8)gAudioCtx.seqCache.temporary.entries[1].id, gAudioCtx.seqCache.temporary.entries[0].size,
gAudioCtx.seqCache.temporary.entries[1].size, gAudioCtx.seqCache.temporary.pool.size);
GfxPrint_SetPos(printer, 3, 7);
GfxPrint_Printf(
printer, "AT-BNK %02X-%02X (%05X-%05X / %05X)", (u8)gAudioCtx.fontCache.temporary.entries[0].id,
(u8)gAudioCtx.fontCache.temporary.entries[1].id, gAudioCtx.fontCache.temporary.entries[0].size,
gAudioCtx.fontCache.temporary.entries[1].size, gAudioCtx.fontCache.temporary.pool.size);
GfxPrint_SetPos(printer, 3, 8);
GfxPrint_Printf(printer, "ST-SEQ %02Xseqs (%05X / %06X)", gAudioCtx.seqCache.persistent.numEntries,
gAudioCtx.seqCache.persistent.pool.curRamAddr -
gAudioCtx.seqCache.persistent.pool.startRamAddr,
gAudioCtx.seqCache.persistent.pool.size);
for (k = 0; (u32)k < gAudioCtx.seqCache.persistent.numEntries; k++) {
GfxPrint_SetPos(printer, 3 + 3 * k, 9);
GfxPrint_Printf(printer, "%02x", gAudioCtx.seqCache.persistent.entries[k].id);
}
GfxPrint_SetPos(printer, 3, 10);
GfxPrint_Printf(printer, "ST-BNK %02Xbanks (%05X / %06X)", gAudioCtx.fontCache.persistent.numEntries,
gAudioCtx.fontCache.persistent.pool.curRamAddr -
gAudioCtx.fontCache.persistent.pool.startRamAddr,
gAudioCtx.fontCache.persistent.pool.size);
for (k = 0; (u32)k < gAudioCtx.fontCache.persistent.numEntries; k++) {
GfxPrint_SetPos(printer, 3 + 3 * k, 11);
GfxPrint_Printf(printer, "%02x", gAudioCtx.fontCache.persistent.entries[k].id);
}
GfxPrint_SetPos(printer, 3, 12);
GfxPrint_Printf(printer, "E-MEM %05X / %05X",
gAudioCtx.permanentPool.curRamAddr - gAudioCtx.permanentPool.startRamAddr,
gAudioCtx.permanentPool.size);
break;
case PAGE_BLOCK_CHANGE_BGM:
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 4);
GfxPrint_Printf(printer, "BGM No. %02X", sAudioBlkChgBgmWork[0]);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "SCENE SET %02X %s", sAudioBlkChgBgmWork[1],
sAudioSceneNames[sAudioBlkChgBgmWork[1]]);
SETCOL(0x64, 255, 0x64);
GfxPrint_SetPos(printer, 2, 4 + sAudioBlkChgBgmSel);
GfxPrint_Printf(printer, "*");
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 7);
GfxPrint_Printf(printer, "NEXT SCENE %02X %s", (u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[2],
sAudioSceneNames[(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[2]]);
GfxPrint_SetPos(printer, 3, 8);
GfxPrint_Printf(printer, "NOW SCENE %02X %s", (u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[4],
sAudioSceneNames[(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[4]]);
GfxPrint_SetPos(printer, 3, 9);
GfxPrint_Printf(printer, "NOW BLOCK %02X",
(gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[5] + 1) & 0xFF);
GfxPrint_SetPos(printer, 3, 11);
GfxPrint_Printf(printer, "PORT");
GfxPrint_SetPos(printer, 3, 12);
GfxPrint_Printf(printer, "%02X %02X %02X %02X",
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[0],
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[1],
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[2],
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[3]);
GfxPrint_SetPos(printer, 3, 13);
GfxPrint_Printf(printer, "%02X %02X %02X %02X",
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[4],
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[5],
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[6],
(u8)gAudioCtx.seqPlayers[SEQ_PLAYER_BGM_MAIN].seqScriptIO[7]);
break;
case PAGE_OCARINA_TEST:
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 4);
GfxPrint_Printf(printer, "SEQ INFO : %2d %02x %d", sPlaybackStaff.buttonIndex, sPlaybackStaff.state,
sPlaybackStaff.pos);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "PLAY INFO : %2d %02x %d", sPlayingStaff.buttonIndex, sPlayingStaff.state,
sPlayingStaff.pos);
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(printer, "8note REC POINTER : %08x", gScarecrowSpawnSongPtr);
ctr = 0;
for (j = 0; j < 4; j++) {
for (i = 0; i < 8; i++) {
GfxPrint_SetPos(printer, 3 + 3 * i, 7 + j);
GfxPrint_Printf(printer, "%02x", gScarecrowSpawnSongPtr[ctr++]);
}
}
GfxPrint_SetPos(printer, 3, 24);
GfxPrint_Printf(printer, "OCA:%02x SEQ:%04x PLAY:%02x REC:%02x", sOcarinaInstrumentId, sOcarinaFlags,
sPlaybackState, sRecordingState);
break;
case PAGE_SFX_PARAMETER_CHANGE:
GfxPrint_SetPos(printer, 2, 4 + sAudioSfxParamChgSel);
SETCOL(127, 255, 127);
GfxPrint_Printf(printer, "*");
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 4);
GfxPrint_Printf(printer, "SE HD : %02x %s", sAudioSfxParamChgWork[0],
sSfxBankNames[sAudioSfxParamChgWork[0]]);
GfxPrint_SetPos(printer, 3, 5);
GfxPrint_Printf(printer, "SE No. : %02x", sAudioSfxParamChgWork[1]);
GfxPrint_SetPos(printer, 20, 6);
GfxPrint_Printf(printer, " : %04x",
gSfxParams[sAudioSfxParamChgWork[0]][sAudioSfxParamChgWork[1]].params);
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(
printer, "SE SW %s",
AudioDebug_ToStringBinary(gSfxParams[sAudioSfxParamChgWork[0]][sAudioSfxParamChgWork[1]].params, 16));
SETCOL(127, 255, 127);
digitStr[0] = (char)('0' + ((gSfxParams[sAudioSfxParamChgWork[0]][sAudioSfxParamChgWork[1]].params >>
(15 - sAudioSfxParamChgBitSel)) &
1));
GfxPrint_SetPos(printer, 12 + sAudioSfxParamChgBitSel, 6);
GfxPrint_Printf(printer, "%s", digitStr);
SETCOL(255, 255, 255);
GfxPrint_SetPos(printer, 3, 7);
GfxPrint_Printf(printer, "SE PR : %02x",
gSfxParams[sAudioSfxParamChgWork[0]][sAudioSfxParamChgWork[1]].importance);
break;
case PAGE_FREE_AREA:
GfxPrint_SetPos(printer, 3, 4);
SETCOL(255, 255, 255);
GfxPrint_Printf(printer, "env_fx %d code_fx %d SPEC %d", sAudioEnvReverb, sAudioCodeReverb, gAudioSpecId);
if (sAudioUpdateTaskStart == sAudioUpdateTaskEnd) {
sAudioUpdateDuration = OS_CYCLES_TO_NSEC(sAudioUpdateEndTime - sAudioUpdateStartTime) / (1e9f / 20);
if (sAudioUpdateDurationMax < sAudioUpdateDuration) {
sAudioUpdateDurationMax = sAudioUpdateDuration;
}
}
GfxPrint_SetPos(printer, 3, 6);
GfxPrint_Printf(printer, "SOUND GAME FRAME NOW %f", sAudioUpdateDuration);
GfxPrint_SetPos(printer, 3, 7);
GfxPrint_Printf(printer, "SOUND GAME FRAME MAX %f", sAudioUpdateDurationMax);
GfxPrint_SetPos(printer, 3, 9);
GfxPrint_Printf(printer, "SWITCH BGM MODE %d %d %d (FLAG %d)", sPrevSeqMode, sNumFramesStill,
sNumFramesMoving, sSeqModeInput);
GfxPrint_SetPos(printer, 3, 10);
GfxPrint_Printf(printer, "ENEMY DIST %f VOL %3d", sAudioEnemyDist, sAudioEnemyVol);
GfxPrint_SetPos(printer, 3, 11);
GfxPrint_Printf(printer, "GANON DIST VOL %3d", sGanonsTowerVol);
GfxPrint_SetPos(printer, 3, 12);
GfxPrint_Printf(printer, "DEMO FLAG %d", sAudioCutsceneFlag);
GfxPrint_SetPos(printer, 3, 12);
if (sIsMalonSinging == true) {
GfxPrint_Printf(printer, "MARON BGM DIST %f", sMalonSingingDist);
sIsMalonSinging = false;
}
GfxPrint_SetPos(printer, 3, 23);
if (sAudioNatureFailed != false) {
GfxPrint_Printf(printer, "NATURE FAILED %01x", sAudioNatureFailed);
}
GfxPrint_SetPos(printer, 3, 24);
if (sSariaBgmPtr != NULL) {
GfxPrint_Printf(printer, "SARIA BGM PTR %08x", sSariaBgmPtr);
}
GfxPrint_SetPos(printer, 3, 25);
GfxPrint_Printf(printer, "POLI %d(%d)", sPeakNumNotes, numEnabledNotes);
for (i = 0; i < 11; i++) {
GfxPrint_SetPos(printer, 3 + 3 * i, 26);
GfxPrint_Printf(printer, "%d", sAudioSpecPeakNumNotes[i]);
}
break;
}
#undef SETCOL_COMMON
#undef SETCOL
#undef SETCOL_SCROLLPRINT
}
void AudioDebug_ProcessInput_SndCont(void) {
u16 step = 1;
if (CHECK_BTN_ANY(sDebugPadHold, BTN_CDOWN)) {
if (sAudioSndContWorkLims[sAudioSndContSel] >= 16) {
step = 16;
}
} else if (CHECK_BTN_ANY(sDebugPadHold, BTN_CLEFT)) {
if (sAudioSndContWorkLims[sAudioSndContSel] >= 16) {
step = 8;
}
} else if (CHECK_BTN_ANY(sDebugPadHold, BTN_CUP)) {
sAudioSndContWork[sAudioSndContSel] = 0;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) {
if (sAudioSndContSel > 0) {
sAudioSndContSel--;
} else {
sAudioSndContSel = 10;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
if (sAudioSndContSel < 10) {
sAudioSndContSel++;
} else {
sAudioSndContSel = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DLEFT)) {
if (sAudioSndContWork[sAudioSndContSel] >= step) {
if (1) {
sAudioSndContWork[sAudioSndContSel] -= step;
}
} else {
sAudioSndContWork[sAudioSndContSel] += sAudioSndContWorkLims[sAudioSndContSel] - step;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DRIGHT)) {
if (sAudioSndContWork[sAudioSndContSel] + step < sAudioSndContWorkLims[sAudioSndContSel]) {
sAudioSndContWork[sAudioSndContSel] += step;
} else {
sAudioSndContWork[sAudioSndContSel] += step - sAudioSndContWorkLims[sAudioSndContSel];
}
}
if (sAudioSndContSel == 8) {
if (sAudioSndContWork[sAudioSndContSel] != 0) {
Audio_SetExtraFilter(0x20);
} else {
Audio_SetExtraFilter(0);
}
}
if (sAudioSndContSel == 9) {
if (sAudioSndContWork[sAudioSndContSel] != 0) {
Audio_SetBaseFilter(0x20);
} else {
Audio_SetBaseFilter(0);
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) {
switch (sAudioSndContSel) {
case 0:
case 1:
SEQCMD_PLAY_SEQUENCE(sAudioSndContSel, 0, 0, sAudioSndContWork[sAudioSndContSel]);
break;
case 2:
case 3:
Audio_PlaySfxGeneral(((sAudioSndContWork[2] << 12) & 0xFFFF) + sAudioSndContWork[3] + SFX_FLAG,
&gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultReverb);
break;
case 4:
func_800F6700(sAudioSndContWork[sAudioSndContSel]);
break;
case 5:
SEQCMD_DISABLE_PLAY_SEQUENCES(sAudioSndContWork[sAudioSndContSel]);
break;
case 6:
SEQCMD_RESET_AUDIO_HEAP(0, sAudioSndContWork[sAudioSndContSel]);
sAudioSubTrackInfoSpec = sAudioSndContWork[6];
if (sAudioSubTrackInfoPlayerSel > gAudioSpecs[sAudioSubTrackInfoSpec].numSequencePlayers - 1) {
sAudioSubTrackInfoPlayerSel = gAudioSpecs[sAudioSubTrackInfoSpec].numSequencePlayers - 1;
}
break;
case 7:
Audio_PlayNatureAmbienceSequence(sAudioSndContWork[sAudioSndContSel]);
break;
case 8:
case 9:
break;
case 10:
Audio_SetSfxBanksMute(sAudioSndContWork[sAudioSndContSel] * 0x7F);
break;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
switch (sAudioSndContSel) {
case 0:
case 1:
SEQCMD_STOP_SEQUENCE(sAudioSndContSel, 0);
break;
case 7:
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0);
break;
case 2:
case 3:
Audio_StopSfxByBank(sAudioSndContWork[2]);
break;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) {
if (sAudioSndContSel == 0) {
if (1) {}
Audio_PlaySequenceInCutscene(sAudioSndContWork[sAudioSndContSel]);
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CRIGHT)) {
if (sAudioSndContSel == 0) {
if (1) {}
func_800F5ACC(sAudioSndContWork[sAudioSndContSel]);
}
}
}
void AudioDebug_ProcessInput_IntInfo(void) {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CUP)) {
sAudioIntInfoY--;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) {
sAudioIntInfoY++;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CLEFT)) {
sAudioIntInfoX--;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CRIGHT)) {
sAudioIntInfoX++;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
sAudioIntInfoX = 0;
sAudioIntInfoY = 0;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP) && sAudioIntInfoSel > 0) {
sAudioIntInfoSel--;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN) && sAudioIntInfoSel < 6) {
sAudioIntInfoSel++;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DLEFT) && sAudioIntInfoBankPage[sAudioIntInfoSel] > 0) {
sAudioIntInfoBankPage[sAudioIntInfoSel]--;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DRIGHT) && sAudioIntInfoBankPage[sAudioIntInfoSel] < 4) {
sAudioIntInfoBankPage[sAudioIntInfoSel]++;
}
}
void AudioDebug_ProcessInput_ScrPrt(void) {
if (sAudioScrPrtWork[0] != 0) {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CUP)) {
sAudioScrPrtY--;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) {
sAudioScrPrtY++;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CLEFT)) {
sAudioScrPrtX--;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CRIGHT)) {
sAudioScrPrtX++;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) {
sAudioScrPrtX = 26;
sAudioScrPrtY = 1;
sAudioScrPrtWork[2] = 6;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
sAudioScrPrtInd = 0;
sAudioScrPrtOverflow = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) {
if (sAudioScrPrtSel > 0) {
sAudioScrPrtSel--;
} else {
sAudioScrPrtSel = 10;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
if (sAudioScrPrtSel < 10) {
sAudioScrPrtSel++;
} else {
sAudioScrPrtSel = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DLEFT)) {
if (sAudioScrPrtWork[sAudioScrPrtSel] > 0) {
sAudioScrPrtWork[sAudioScrPrtSel]--;
} else {
sAudioScrPrtWork[sAudioScrPrtSel] = sAudioScrPrtWorkLims[sAudioScrPrtSel] - 1;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DRIGHT)) {
if (sAudioScrPrtWork[sAudioScrPrtSel] < sAudioScrPrtWorkLims[sAudioScrPrtSel] - 1) {
sAudioScrPrtWork[sAudioScrPrtSel]++;
} else {
sAudioScrPrtWork[sAudioScrPrtSel] = 0;
}
}
D_801333F0 = sAudioScrPrtWork[3] + (sAudioScrPrtWork[4] * 2) + (sAudioScrPrtWork[5] * 4) +
(sAudioScrPrtWork[6] * 8) + (sAudioScrPrtWork[7] * 0x10) + (sAudioScrPrtWork[8] * 0x20);
}
void AudioDebug_ProcessInput_SfxSwap(void) {
s16 step;
u16 val;
u8 prev;
if (!sAudioSfxSwapIsEditing) {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) {
if (sAudioSfxSwapSel > 0) {
sAudioSfxSwapSel--;
} else {
sAudioSfxSwapSel = 9;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
if (sAudioSfxSwapSel < 9) {
sAudioSfxSwapSel++;
} else {
sAudioSfxSwapSel = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) {
sAudioSfxSwapIsEditing = true;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
gAudioSfxSwapSource[sAudioSfxSwapSel] = 0;
gAudioSfxSwapTarget[sAudioSfxSwapSel] = 0;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_START)) {
if (sAudioSfxSwapSel != 0) {
prev = sAudioSfxSwapSel - 1;
} else {
prev = 9;
}
gAudioSfxSwapSource[sAudioSfxSwapSel] = gAudioSfxSwapSource[prev];
gAudioSfxSwapTarget[sAudioSfxSwapSel] = gAudioSfxSwapTarget[prev];
}
} else {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DLEFT)) {
if (sAudioSfxSwapNibbleSel > 0) {
sAudioSfxSwapNibbleSel--;
} else {
sAudioSfxSwapNibbleSel = 7;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DRIGHT)) {
if (sAudioSfxSwapNibbleSel < 7) {
sAudioSfxSwapNibbleSel++;
} else {
sAudioSfxSwapNibbleSel = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP) || CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) {
step = CHECK_BTN_ANY(sDebugPadHold, BTN_CUP) ? 8 : 1;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
step = CHECK_BTN_ANY(sDebugPadHold, BTN_CUP) ? -8 : -1;
}
if (sAudioSfxSwapNibbleSel < 4) {
val = gAudioSfxSwapSource[sAudioSfxSwapSel] >> ((3 - sAudioSfxSwapNibbleSel) * 4);
val = (val + step) & 0xF;
gAudioSfxSwapSource[sAudioSfxSwapSel] =
(gAudioSfxSwapSource[sAudioSfxSwapSel] & ((0xF << ((3 - sAudioSfxSwapNibbleSel) * 4)) ^ 0xFFFF)) +
(val << ((3 - sAudioSfxSwapNibbleSel) * 4));
} else {
val = gAudioSfxSwapTarget[sAudioSfxSwapSel] >> ((7 - sAudioSfxSwapNibbleSel) * 4);
val = (val + step) & 0xF;
gAudioSfxSwapTarget[sAudioSfxSwapSel] =
(gAudioSfxSwapTarget[sAudioSfxSwapSel] & ((0xF << ((7 - sAudioSfxSwapNibbleSel) * 4)) ^ 0xFFFF)) +
(val << ((7 - sAudioSfxSwapNibbleSel) * 4));
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) {
sAudioSfxSwapIsEditing = false;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
if (sAudioSfxSwapNibbleSel < 4) {
gAudioSfxSwapSource[sAudioSfxSwapSel] = 0;
} else {
gAudioSfxSwapTarget[sAudioSfxSwapSel] = 0;
}
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CLEFT)) {
gAudioSfxSwapOff ^= 1;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) {
gAudioSfxSwapMode[sAudioSfxSwapSel] ^= 1;
}
}
void AudioDebug_ProcessInput_SubTrackInfo(void) {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
if (sAudioSubTrackInfoPlayerSel != 0) {
sAudioSubTrackInfoPlayerSel--;
} else {
sAudioSubTrackInfoPlayerSel = gAudioSpecs[sAudioSubTrackInfoSpec].numSequencePlayers - 1;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) {
if (sAudioSubTrackInfoPlayerSel < gAudioSpecs[sAudioSubTrackInfoSpec].numSequencePlayers - 1) {
sAudioSubTrackInfoPlayerSel++;
} else {
sAudioSubTrackInfoPlayerSel = SEQ_PLAYER_BGM_MAIN;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DLEFT)) {
sAudioSubTrackInfoChannelSel = (sAudioSubTrackInfoChannelSel - 1) & 0xF;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DRIGHT)) {
sAudioSubTrackInfoChannelSel = (sAudioSubTrackInfoChannelSel + 1) & 0xF;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_START)) {
sSeqPlayerPeakNumLayers[sAudioSubTrackInfoPlayerSel] = SEQ_PLAYER_BGM_MAIN;
}
}
void AudioDebug_ProcessInput_HeapInfo(void) {
}
void AudioDebug_ProcessInput_BlkChgBgm(void) {
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) {
if (sAudioBlkChgBgmSel > 0) {
sAudioBlkChgBgmSel--;
} else {
sAudioBlkChgBgmSel = 1;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
if (sAudioBlkChgBgmSel <= 0) {
sAudioBlkChgBgmSel++;
} else {
sAudioBlkChgBgmSel = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DLEFT)) {
sAudioBlkChgBgmWork[sAudioBlkChgBgmSel]--;
if (sAudioBlkChgBgmSel == 1) {
Audio_SetSequenceMode(sAudioBlkChgBgmWork[1]);
; // might be a fake match?
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DRIGHT)) {
sAudioBlkChgBgmWork[sAudioBlkChgBgmSel]++;
if (sAudioBlkChgBgmSel == 1) {
Audio_SetSequenceMode(sAudioBlkChgBgmWork[1]);
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) {
AUDIOCMD_SEQPLAYER_SET_IO(SEQ_PLAYER_BGM_MAIN, 0, sAudioBlkChgBgmWork[1]);
SEQCMD_PLAY_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 1, 0, sAudioBlkChgBgmWork[0]);
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 1);
}
}
void AudioDebug_ProcessInput_OcaTest(void) {
}
void AudioDebug_ProcessInput_SfxParamChg(void) {
s32 step;
u16 sfx;
if (CHECK_BTN_ANY(sDebugPadHold, BTN_CLEFT)) {
step = 8;
} else {
step = 1;
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DUP)) {
if (sAudioSfxParamChgSel > 0) {
sAudioSfxParamChgSel--;
} else {
sAudioSfxParamChgSel = 3;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DDOWN)) {
if (sAudioSfxParamChgSel < 3) {
sAudioSfxParamChgSel++;
} else {
sAudioSfxParamChgSel = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DLEFT)) {
if (sAudioSfxParamChgSel < 2) {
if (sAudioSfxParamChgSel == 0) {
if (sAudioSfxParamChgWork[sAudioSfxParamChgSel] > 0) {
sAudioSfxParamChgWork[sAudioSfxParamChgSel]--;
} else {
sAudioSfxParamChgWork[sAudioSfxParamChgSel] = sAudioSndContWorkLims[2] - 1;
}
} else {
sAudioSfxParamChgWork[sAudioSfxParamChgSel] -= step;
sAudioSfxParamChgWork[sAudioSfxParamChgSel] &= 0x1FF;
}
} else if (sAudioSfxParamChgSel == 3) {
gSfxParams[sAudioSfxParamChgWork[0]][sAudioSfxParamChgWork[1]].importance -= step;
} else {
sAudioSfxParamChgBitSel = (sAudioSfxParamChgBitSel - 1) & 0xF;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_DRIGHT)) {
if (sAudioSfxParamChgSel < 2) {
if (sAudioSfxParamChgSel == 0) {
if (sAudioSfxParamChgWork[sAudioSfxParamChgSel] < (sAudioSndContWorkLims[2] - 1)) {
sAudioSfxParamChgWork[sAudioSfxParamChgSel]++;
} else {
sAudioSfxParamChgWork[sAudioSfxParamChgSel] = 0;
}
} else {
sAudioSfxParamChgWork[sAudioSfxParamChgSel] += step;
sAudioSfxParamChgWork[sAudioSfxParamChgSel] &= 0x1FF;
}
} else if (sAudioSfxParamChgSel == 3) {
gSfxParams[sAudioSfxParamChgWork[0]][sAudioSfxParamChgWork[1]].importance += step;
} else {
sAudioSfxParamChgBitSel = (sAudioSfxParamChgBitSel + 1) & 0xF;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) {
sfx = (u16)(sAudioSfxParamChgWork[0] << 12) + sAudioSfxParamChgWork[1] + SFX_FLAG;
Audio_PlaySfxGeneral(sfx, &gSfxDefaultPos, 4, &gSfxDefaultFreqAndVolScale, &gSfxDefaultFreqAndVolScale,
&gSfxDefaultReverb);
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
Audio_StopSfxByBank(sAudioSfxParamChgWork[0]);
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CDOWN)) {
if (sAudioSfxParamChgSel == 2) {
gSfxParams[sAudioSfxParamChgWork[0]][sAudioSfxParamChgWork[1]].params ^=
(1 << (0xF - sAudioSfxParamChgBitSel));
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_CUP)) {
if (sAudioSfxParamChgSel < 2) {
sAudioSfxParamChgWork[sAudioSfxParamChgSel] = 0;
}
}
}
void AudioDebug_ScrPrt(const char* str, u16 num) {
u8 i = 0;
sAudioScrPrtBuf[sAudioScrPrtInd].num = num;
while (str[i] != '\0') {
sAudioScrPrtBuf[sAudioScrPrtInd].str[i] = str[i];
i++;
}
while (i < 5) {
sAudioScrPrtBuf[sAudioScrPrtInd].str[i] = '\0';
i++;
}
if (sAudioScrPrtInd < 25 - 1) {
sAudioScrPrtInd++;
} else {
sAudioScrPrtInd = 0;
sAudioScrPrtOverflow = 1;
}
}
void AudioDebug_ProcessInput(void) {
if (!sAudioDebugEverOpened) {
return;
}
if (sAudioSfxMuted) {
Audio_SetSfxBanksMute(0x6F);
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_L)) {
if (sAudioDebugPage < PAGE_MAX - 1) {
sAudioDebugPage++;
} else {
sAudioDebugPage = 0;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_R)) {
if (sAudioDebugPage > 0) {
sAudioDebugPage--;
} else {
sAudioDebugPage = PAGE_MAX - 1;
}
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_Z)) {
sAudioDebugTextColor++;
sAudioDebugTextColor &= 7;
}
switch (sAudioDebugPage) {
case PAGE_NON:
if (CHECK_BTN_ANY(sDebugPadPress, BTN_A)) {
sAudioSndContWork[5] ^= 1;
SEQCMD_DISABLE_PLAY_SEQUENCES(sAudioSndContWork[5]);
if (Audio_GetActiveSeqId(SEQ_PLAYER_BGM_MAIN) != NA_BGM_NATURE_AMBIENCE) {
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_MAIN, 0);
}
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_FANFARE, 0);
SEQCMD_STOP_SEQUENCE(SEQ_PLAYER_BGM_SUB, 0);
}
if (CHECK_BTN_ANY(sDebugPadPress, BTN_B)) {
sAudioSfxMuted ^= 1;
if (!sAudioSfxMuted) {
Audio_SetSfxBanksMute(0);
}
}
break;
case PAGE_SOUND_CONTROL:
AudioDebug_ProcessInput_SndCont();
break;
case PAGE_INTERFACE_INFO:
AudioDebug_ProcessInput_IntInfo();
break;
case PAGE_SCROLL_PRINT:
AudioDebug_ProcessInput_ScrPrt();
break;
case PAGE_SFX_SWAP:
AudioDebug_ProcessInput_SfxSwap();
break;
case PAGE_SUB_TRACK_INFO:
AudioDebug_ProcessInput_SubTrackInfo();
break;
case PAGE_HEAP_INFO:
AudioDebug_ProcessInput_HeapInfo();
break;
case PAGE_BLOCK_CHANGE_BGM:
AudioDebug_ProcessInput_BlkChgBgm();
break;
case PAGE_OCARINA_TEST:
AudioDebug_ProcessInput_OcaTest();
break;
case PAGE_SFX_PARAMETER_CHANGE:
AudioDebug_ProcessInput_SfxParamChg();
break;
case PAGE_FREE_AREA:
default:
break;
}
gAudioDebugPrintSeqCmd = sAudioScrPrtWork[10];
}