summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorProjectRevoTPP <projectrevotpp@hotmail.com>2017-06-26 21:09:49 -0400
committerProjectRevoTPP <projectrevotpp@hotmail.com>2017-06-26 21:09:49 -0400
commitd10bffc7d8977bee1b42a550dc154d03bf92c3c6 (patch)
tree68b660f18ea933835710cfcb1fee5041837feee6 /src
parentf85513f76999c79c6355711fcefaf058d02c7c46 (diff)
decompile up to sub_80BA800
Diffstat (limited to 'src')
-rwxr-xr-xsrc/sound_check_menu.c209
1 files changed, 201 insertions, 8 deletions
diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c
index 75cf48798..a46e7e363 100755
--- a/src/sound_check_menu.c
+++ b/src/sound_check_menu.c
@@ -7,22 +7,51 @@
#include "text.h"
#include "menu.h"
#include "songs.h"
+#include "title_screen.h"
// local task defines
-#define UNK_DATA0 data[0]
+#define WINDOW_SELECTED data[0]
#define BGM_INDEX data[1]
#define SE_INDEX data[2]
#define UNK_DATA3 data[3]
+// window selections
+enum
+{
+ BGM_WINDOW,
+ SE_WINDOW
+};
+
extern void sub_80BA6B8(u8);
-extern void sub_80BA700(u16, u8, u8);
-extern void sub_80BA79C(u8 *, u8, u8);
-extern void sub_80BA65C(u8);
extern void sub_80BA800(u8);
extern void sub_80BAF84(u8);
extern void sub_80BB25C(u8);
extern void sub_80BA68C(u8);
+extern void sub_80BAD5C(void);
+extern void sub_80BAE10(u8, u8);
+extern void sub_80BAA48(u8);
+
+struct Struct_20387B4
+{
+ u32 unk0;
+ u32 unk4;
+ u32 unk8;
+ u32 unkC;
+ u32 unk10;
+ u32 unk14;
+ u32 unk18;
+ u32 unk1C;
+ u32 unk20;
+};
+
+extern struct Struct_20387B4 gUnknown_020387B4;
+extern u8 gUnknown_020387B3;
+extern u8 gUnknown_020387B1;
+extern u8 gUnknown_020387B2;
+extern u32 gUnknown_03005D30;
+extern u8 gUnknown_020387D8;
+extern u8 gUnknown_020387D9;
extern u8 gUnknown_020387B0;
extern u8 *gBGMNames[];
@@ -34,9 +63,26 @@ extern u8 gDebugText_SE[];
extern u8 gDebugText_ABDesc[];
extern u8 gDebugText_UpDown[];
extern u8 gDebugText_DriverTest[];
+extern u8 gDebugText_BBack[];
+extern u8 gDebugText_APlay[];
+extern u8 gDebugText_Voice[];
+extern u8 gDebugText_Volume[];
+extern u8 gDebugText_Panpot[];
+extern u8 gDebugText_Pitch[];
+extern u8 gDebugText_Length[];
+extern u8 gDebugText_Release[];
+extern u8 gDebugText_Progress[];
+extern u8 gDebugText_Chorus[];
+extern u8 gDebugText_Priority[];
+extern u8 gDebugText_Playing[];
+extern u8 gDebugText_Reverse[];
+extern u8 gDebugText_Stereo[];
void sub_80BA258(u8);
void sub_80BA384(u8);
+void sub_80BA65C(u8);
+void sub_80BA700(u16, u16, u16);
+void sub_80BA79C(u8 *, u16, u16);
void sub_80BA0A8(void)
{
@@ -101,7 +147,7 @@ void CB2_StartSoundCheckMenu(void)
SetMainCallback2(sub_80BA0A8);
REG_DISPCNT = 0x7140;
taskId = CreateTask(sub_80BA258, 0);
- TASK.UNK_DATA0 = 0;
+ TASK.WINDOW_SELECTED = BGM_WINDOW;
TASK.BGM_INDEX = 0;
TASK.SE_INDEX = 0;
TASK.UNK_DATA3 = 0;
@@ -146,9 +192,9 @@ void sub_80BA258(u8 taskId)
}
}
-void sub_80BA384(u8 taskId)
+void sub_80BA384(u8 taskId) // Task_HandleDrawingSoundCheckMenuText
{
- sub_80BA6B8(TASK.UNK_DATA0);
+ sub_80BA6B8(TASK.WINDOW_SELECTED);
sub_80BA700(TASK.BGM_INDEX + BGM_STOP, 7, 8); // print by BGM index
sub_80BA79C(gBGMNames[TASK.BGM_INDEX], 11, 8);
sub_80BA700(TASK.SE_INDEX, 7, 15);
@@ -157,7 +203,7 @@ void sub_80BA384(u8 taskId)
}
#ifdef NONMATCHING
-bool8 sub_80BA400(u8 taskId)
+bool8 sub_80BA400(u8 taskId) // Task_ProcessSoundCheckMenuInput
{
if(gMain.newKeys & R_BUTTON) // driver test
{
@@ -198,6 +244,7 @@ bool8 sub_80BA400(u8 taskId)
// _080BA4C4
m4aSongNumStart(gTasks[taskId].data[2]);
gTasks[taskId].data[4] = gTasks[taskId].data[2];
+ return FALSE;
}
else // _080BA4D0
{
@@ -620,3 +667,149 @@ _080BA658: .4byte gUnknown_020387B0\n\
.syntax divided");
}
#endif
+
+void sub_80BA65C(u8 taskId)
+{
+ if(sub_80BA400(taskId) != FALSE)
+ gTasks[taskId].func = sub_80BA384;
+}
+
+void sub_80BA68C(u8 taskId)
+{
+ if(!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ SetMainCallback2(CB2_InitTitleScreen);
+ }
+}
+
+void sub_80BA6B8(u8 windowType)
+{
+ switch(windowType)
+ {
+ case BGM_WINDOW:
+ default:
+ REG_WIN1H = 0x11DF;
+ REG_WIN1V = 0x2957;
+ break;
+ case SE_WINDOW:
+ REG_WIN1H = 0x11DF;
+ REG_WIN1V = 0x618F;
+ break;
+ }
+}
+
+void sub_80BA700(u16 soundIndex, u16 x, u16 y) // PrintSoundNumber ?
+{
+ u8 i;
+ u8 str[5];
+ bool8 someBool;
+ u8 divisorValue;
+
+ for(i = 0; i < 3; i++)
+ str[i] = 0; // initialize array
+
+ str[3] = 0xB0;
+ str[4] = 0xFF;
+ someBool = FALSE;
+
+ divisorValue = soundIndex / 100;
+ if(divisorValue)
+ {
+ str[0] = divisorValue + 0xA1;
+ someBool = TRUE;
+ }
+
+ divisorValue = (soundIndex % 100) / 10;
+ if(divisorValue || someBool != FALSE)
+ str[1] = divisorValue + 0xA1;
+
+ str[2] = ((soundIndex % 100) % 10) + 0xA1;
+ MenuPrint(str, x, y);
+}
+
+void sub_80BA79C(u8 *string, u16 x, u16 y)
+{
+ u8 i;
+ u8 str[11];
+
+ for(i = 0; i < 11; i++)
+ str[i] = 0; // format string.
+
+ str[10] = 0xFF; // the above for loop formats the last element of the array unnecessarily.
+
+ for(i = 0; string[i] != 0xFF && i < 10; i++)
+ str[i] = string[i];
+
+ MenuPrint(str, x, y);
+}
+
+void sub_80BA800(u8 taskId)
+{
+ u8 bbackStr[10];
+ u8 aplayStr[11];
+ u8 voiceStr[10];
+ u8 volumeStr[10];
+ u8 panpotStr[10];
+ u8 pitchStr[10];
+ u8 lengthStr[10];
+ u8 releaseStr[10];
+ u8 progressStr[10];
+ u8 chorusStr[10];
+ u8 priorityStr[10];
+ u8 playingStr[9];
+ u8 reverseStr[9];
+ u8 stereoStr[9];
+
+ memcpy(bbackStr, gDebugText_BBack, sizeof bbackStr);
+ memcpy(aplayStr, gDebugText_APlay, sizeof aplayStr);
+ memcpy(voiceStr, gDebugText_Voice, sizeof voiceStr);
+ memcpy(volumeStr, gDebugText_Volume, sizeof volumeStr);
+ memcpy(panpotStr, gDebugText_Panpot, sizeof panpotStr);
+ memcpy(pitchStr, gDebugText_Pitch, sizeof pitchStr);
+ memcpy(lengthStr, gDebugText_Length, sizeof lengthStr);
+ memcpy(releaseStr, gDebugText_Release, sizeof releaseStr);
+ memcpy(progressStr, gDebugText_Progress, sizeof progressStr);
+ memcpy(chorusStr, gDebugText_Chorus, sizeof chorusStr);
+ memcpy(priorityStr, gDebugText_Priority, sizeof priorityStr);
+ memcpy(playingStr, gDebugText_Playing, sizeof playingStr);
+ memcpy(reverseStr, gDebugText_Reverse, sizeof reverseStr);
+ memcpy(stereoStr, gDebugText_Stereo, sizeof stereoStr);
+
+ REG_DISPCNT = 0x3140;
+ MenuDrawTextWindow(0, 0, 0x1D, 0x13);
+ MenuPrint(bbackStr, 0x13, 0x4);
+ MenuPrint(aplayStr, 0x13, 0x2);
+ MenuPrint(voiceStr, 0x2, 0x1);
+ MenuPrint(volumeStr, 0x2, 0x3);
+ MenuPrint(panpotStr, 0x2, 0x5);
+ MenuPrint(pitchStr, 0x2, 0x7);
+ MenuPrint(lengthStr, 0x2, 0x9);
+ MenuPrint(releaseStr, 0x2, 0xB);
+ MenuPrint(progressStr, 0x2, 0xD);
+ MenuPrint(chorusStr, 0x2, 0xF);
+ MenuPrint(priorityStr, 0x2, 0x11);
+ MenuPrint(playingStr, 0x13, 0x10);
+ MenuPrint(reverseStr, 0x13, 0xE);
+ MenuPrint(stereoStr, 0x13, 0xC);
+ REG_WIN0H = 0xF0;
+ REG_WIN0V = 0xA0;
+ gUnknown_020387B3 = 0;
+ gUnknown_020387B1 = 0;
+ gUnknown_020387B2 = 0;
+ gUnknown_03005D30 = 0;
+ gUnknown_020387D8 = 0;
+ gUnknown_020387D9 = 1;
+ gUnknown_020387B4.unk0 = 0;
+ gUnknown_020387B4.unk4 = 0x78;
+ gUnknown_020387B4.unk8 = 0;
+ gUnknown_020387B4.unkC = 0x3C00;
+ gUnknown_020387B4.unk10 = 0xB4;
+ gUnknown_020387B4.unk18 = 0;
+ gUnknown_020387B4.unk14 = 0;
+ gUnknown_020387B4.unk1C = 0;
+ gUnknown_020387B4.unk20 = 2;
+ sub_80BAD5C();
+ sub_80BAE10(0, 0);
+ gTasks[taskId].func = sub_80BAA48;
+}