diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-06-26 21:09:49 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-06-26 21:09:49 -0400 |
commit | d10bffc7d8977bee1b42a550dc154d03bf92c3c6 (patch) | |
tree | 68b660f18ea933835710cfcb1fee5041837feee6 /src | |
parent | f85513f76999c79c6355711fcefaf058d02c7c46 (diff) |
decompile up to sub_80BA800
Diffstat (limited to 'src')
-rwxr-xr-x | src/sound_check_menu.c | 209 |
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; +} |