diff options
-rw-r--r-- | asm/sound_check_menu.s | 516 | ||||
-rw-r--r-- | include/global.h | 3 | ||||
-rwxr-xr-x | src/sound_check_menu.c | 252 |
3 files changed, 224 insertions, 547 deletions
diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s index 9ebeee4e8..1501070fc 100644 --- a/asm/sound_check_menu.s +++ b/asm/sound_check_menu.s @@ -6,522 +6,6 @@ .text - thumb_func_start sub_80BAA48 -sub_80BAA48: @ 80BAA48 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _080BAA90 @ =gMain - ldrh r2, [r1, 0x2E] - movs r0, 0x2 - ands r0, r2 - cmp r0, 0 - beq _080BAAA8 - movs r1, 0x80 - lsls r1, 19 - ldr r2, _080BAA94 @ =0x00007140 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x40 - ldr r2, _080BAA98 @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BAA9C @ =0x0000011f - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x13 - bl MenuZeroFillWindowRect - ldr r1, _080BAAA0 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BAAA4 @ =sub_80BA258 - str r1, [r0] - b _080BACC6 - .align 2, 0 -_080BAA90: .4byte gMain -_080BAA94: .4byte 0x00007140 -_080BAA98: .4byte 0x000011df -_080BAA9C: .4byte 0x0000011f -_080BAAA0: .4byte gTasks -_080BAAA4: .4byte sub_80BA258 -_080BAAA8: - ldrh r1, [r1, 0x30] - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080BAAD0 - ldr r1, _080BAACC @ =gUnknown_020387B3 - ldrb r2, [r1] - subs r0, r2, 0x1 - strb r0, [r1] - lsls r0, 24 - cmp r0, 0 - bge _080BAAEA - movs r0, 0x8 - strb r0, [r1] - b _080BAAEA - .align 2, 0 -_080BAACC: .4byte gUnknown_020387B3 -_080BAAD0: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BAAF8 - ldr r1, _080BAAF4 @ =gUnknown_020387B3 - ldrb r2, [r1] - adds r0, r2, 0x1 - strb r0, [r1] - lsls r0, 24 - asrs r0, 24 - cmp r0, 0x8 - ble _080BAAEA - strb r3, [r1] -_080BAAEA: - ldrb r1, [r1] - adds r0, r2, 0 - bl sub_80BAE10 - b _080BACC6 - .align 2, 0 -_080BAAF4: .4byte gUnknown_020387B3 -_080BAAF8: - movs r0, 0x8 - ands r0, r2 - cmp r0, 0 - beq _080BAB14 - ldr r0, _080BAB10 @ =gUnknown_020387D8 - ldrb r1, [r0] - movs r2, 0x1 - eors r1, r2 - strb r1, [r0] - bl sub_80BAD5C - b _080BACC6 - .align 2, 0 -_080BAB10: .4byte gUnknown_020387D8 -_080BAB14: - movs r0, 0x4 - ands r0, r2 - cmp r0, 0 - beq _080BAB38 - ldr r4, _080BAB34 @ =gUnknown_020387D9 - ldrb r0, [r4] - movs r1, 0x1 - eors r0, r1 - strb r0, [r4] - bl sub_80BAD5C - ldrb r0, [r4] - bl SetPokemonCryStereo - b _080BACC6 - .align 2, 0 -_080BAB34: .4byte gUnknown_020387D9 -_080BAB38: - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BAB46 - movs r0, 0xA - b _080BAB6E -_080BAB46: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080BAB56 - movs r0, 0xA - negs r0, r0 - b _080BAB6E -_080BAB56: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080BAB64 - movs r0, 0x1 - negs r0, r0 - b _080BAB6E -_080BAB64: - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _080BAB78 - movs r0, 0x1 -_080BAB6E: - bl sub_80BACDC - bl sub_80BAD5C - b _080BACC6 -_080BAB78: - movs r0, 0x1 - ands r0, r2 - cmp r0, 0 - bne _080BAB82 - b _080BACA2 -_080BAB82: - ldr r4, _080BABE4 @ =gUnknown_020387B4 - ldrb r0, [r4, 0x4] - bl SetPokemonCryVolume - movs r0, 0x8 - ldrsb r0, [r4, r0] - bl SetPokemonCryPanpot - movs r1, 0xC - ldrsh r0, [r4, r1] - bl SetPokemonCryPitch - ldrh r0, [r4, 0x10] - bl SetPokemonCryLength - ldr r0, [r4, 0x18] - bl SetPokemonCryProgress - ldrb r0, [r4, 0x14] - bl SetPokemonCryRelease - movs r0, 0x1C - ldrsb r0, [r4, r0] - bl SetPokemonCryChorus - ldr r0, [r4, 0x20] - lsls r0, 24 - lsrs r0, 24 - bl SetPokemonCryPriority - ldr r4, [r4] - adds r0, r4, 0 - cmp r4, 0 - bge _080BABC8 - adds r0, 0x7F -_080BABC8: - asrs r2, r0, 7 - lsls r0, r2, 7 - subs r0, r4, r0 - lsls r0, 24 - lsrs r1, r0, 24 - lsls r0, r2, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _080BAC1C - cmp r0, 0x1 - bgt _080BABE8 - cmp r0, 0 - beq _080BABF2 - b _080BACA2 - .align 2, 0 -_080BABE4: .4byte gUnknown_020387B4 -_080BABE8: - cmp r0, 0x2 - beq _080BAC48 - cmp r0, 0x3 - beq _080BAC74 - b _080BACA2 -_080BABF2: - ldr r0, _080BAC04 @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC0C - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC08 @ =voicegroup_84537C0 - b _080BAC98 - .align 2, 0 -_080BAC04: .4byte gUnknown_020387D8 -_080BAC08: .4byte voicegroup_84537C0 -_080BAC0C: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC18 @ =voicegroup_8452590 - b _080BAC98 - .align 2, 0 -_080BAC18: .4byte voicegroup_8452590 -_080BAC1C: - ldr r0, _080BAC30 @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC38 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC34 @ =voicegroup_8453DC0 - b _080BAC98 - .align 2, 0 -_080BAC30: .4byte gUnknown_020387D8 -_080BAC34: .4byte voicegroup_8453DC0 -_080BAC38: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC44 @ =voicegroup_8452B90 - b _080BAC98 - .align 2, 0 -_080BAC44: .4byte voicegroup_8452B90 -_080BAC48: - ldr r0, _080BAC5C @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC64 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC60 @ =voicegroup_84543C0 - b _080BAC98 - .align 2, 0 -_080BAC5C: .4byte gUnknown_020387D8 -_080BAC60: .4byte voicegroup_84543C0 -_080BAC64: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC70 @ =voicegroup_8453190 - b _080BAC98 - .align 2, 0 -_080BAC70: .4byte voicegroup_8453190 -_080BAC74: - ldr r0, _080BAC88 @ =gUnknown_020387D8 - ldrb r0, [r0] - cmp r0, 0 - beq _080BAC90 - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BAC8C @ =voicegroup_84549C0 - b _080BAC98 - .align 2, 0 -_080BAC88: .4byte gUnknown_020387D8 -_080BAC8C: .4byte voicegroup_84549C0 -_080BAC90: - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 2 - ldr r1, _080BACCC @ =voicegroup_8453790 -_080BAC98: - adds r0, r1 - bl SetPokemonCryTone - ldr r1, _080BACD0 @ =gUnknown_03005D30 - str r0, [r1] -_080BACA2: - ldr r0, _080BACD0 @ =gUnknown_03005D30 - ldr r0, [r0] - cmp r0, 0 - beq _080BACC6 - ldr r5, _080BACD4 @ =gUnknown_020387B1 - bl IsPokemonCryPlaying - strb r0, [r5] - ldr r4, _080BACD8 @ =gUnknown_020387B2 - lsls r0, 24 - lsrs r0, 24 - ldrb r2, [r4] - cmp r0, r2 - beq _080BACC2 - bl sub_80BAD5C -_080BACC2: - ldrb r0, [r5] - strb r0, [r4] -_080BACC6: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080BACCC: .4byte voicegroup_8453790 -_080BACD0: .4byte gUnknown_03005D30 -_080BACD4: .4byte gUnknown_020387B1 -_080BACD8: .4byte gUnknown_020387B2 - thumb_func_end sub_80BAA48 - - thumb_func_start sub_80BACDC -sub_80BACDC: @ 80BACDC - push {r4-r6,lr} - sub sp, 0x40 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r1, _080BAD50 @ =gUnknown_083D039C - mov r0, sp - movs r2, 0x40 - bl memcpy - ldr r6, _080BAD54 @ =gUnknown_020387B4 - ldr r5, _080BAD58 @ =gUnknown_020387B3 - movs r1, 0 - ldrsb r1, [r5, r1] - lsls r1, 2 - adds r1, r6 - lsls r4, 24 - asrs r4, 24 - ldr r0, [r1] - adds r0, r4 - str r0, [r1] - movs r2, 0 - ldrsb r2, [r5, r2] - lsls r0, r2, 2 - adds r3, r0, r6 - lsls r0, r2, 1 - adds r0, 0x1 - lsls r0, 2 - add r0, sp - ldr r1, [r3] - ldr r0, [r0] - cmp r1, r0 - ble _080BAD26 - lsls r0, r2, 3 - add r0, sp - ldr r0, [r0] - str r0, [r3] -_080BAD26: - movs r2, 0 - ldrsb r2, [r5, r2] - lsls r0, r2, 2 - adds r3, r0, r6 - lsls r0, r2, 3 - add r0, sp - ldr r1, [r3] - ldr r0, [r0] - cmp r1, r0 - bge _080BAD46 - lsls r0, r2, 1 - adds r0, 0x1 - lsls r0, 2 - add r0, sp - ldr r0, [r0] - str r0, [r3] -_080BAD46: - add sp, 0x40 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BAD50: .4byte gUnknown_083D039C -_080BAD54: .4byte gUnknown_020387B4 -_080BAD58: .4byte gUnknown_020387B3 - thumb_func_end sub_80BACDC - - thumb_func_start sub_80BAD5C -sub_80BAD5C: @ 80BAD5C - push {r4,lr} - ldr r4, _080BAE00 @ =gUnknown_020387B4 - ldr r0, [r4] - adds r0, 0x1 - movs r1, 0xB - movs r2, 0x1 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x4] - movs r1, 0xB - movs r2, 0x3 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x8] - movs r1, 0xB - movs r2, 0x5 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0xC] - movs r1, 0xB - movs r2, 0x7 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x10] - movs r1, 0xB - movs r2, 0x9 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x14] - movs r1, 0xB - movs r2, 0xB - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x18] - movs r1, 0xB - movs r2, 0xD - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x1C] - movs r1, 0xB - movs r2, 0xF - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, [r4, 0x20] - movs r1, 0xB - movs r2, 0x11 - movs r3, 0x5 - bl sub_80BAE78 - ldr r0, _080BAE04 @ =gUnknown_020387B1 - ldrb r0, [r0] - movs r1, 0x1B - movs r2, 0x10 - movs r3, 0x1 - bl sub_80BAE78 - ldr r0, _080BAE08 @ =gUnknown_020387D8 - ldrb r0, [r0] - movs r1, 0x1B - movs r2, 0xE - movs r3, 0x1 - bl sub_80BAE78 - ldr r0, _080BAE0C @ =gUnknown_020387D9 - ldrb r0, [r0] - movs r1, 0x1B - movs r2, 0xC - movs r3, 0x1 - bl sub_80BAE78 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BAE00: .4byte gUnknown_020387B4 -_080BAE04: .4byte gUnknown_020387B1 -_080BAE08: .4byte gUnknown_020387D8 -_080BAE0C: .4byte gUnknown_020387D9 - thumb_func_end sub_80BAD5C - - thumb_func_start sub_80BAE10 -sub_80BAE10: @ 80BAE10 - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0x8 - adds r4, r0, 0 - adds r5, r1, 0 - lsls r4, 24 - lsrs r4, 24 - lsls r5, 24 - lsrs r5, 24 - ldr r1, _080BAE6C @ =gUnknown_083D03DC - mov r0, sp - movs r2, 0x2 - bl memcpy - add r0, sp, 0x4 - mov r8, r0 - ldr r1, _080BAE70 @ =gUnknown_083D03DE - movs r2, 0x2 - bl memcpy - ldr r6, _080BAE74 @ =gUnknown_083D0300 - lsls r4, 1 - adds r0, r4, r6 - ldrb r1, [r0] - adds r4, 0x1 - adds r4, r6 - ldrb r2, [r4] - mov r0, r8 - bl MenuPrint - lsls r5, 1 - adds r0, r5, r6 - ldrb r1, [r0] - adds r5, 0x1 - adds r5, r6 - ldrb r2, [r5] - mov r0, sp - bl MenuPrint - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BAE6C: .4byte gUnknown_083D03DC -_080BAE70: .4byte gUnknown_083D03DE -_080BAE74: .4byte gUnknown_083D0300 - thumb_func_end sub_80BAE10 - thumb_func_start sub_80BAE78 sub_80BAE78: @ 80BAE78 push {r4-r7,lr} diff --git a/include/global.h b/include/global.h index e90fcdd0f..ce58c02f4 100644 --- a/include/global.h +++ b/include/global.h @@ -43,6 +43,9 @@ fndec\ #define min(a, b) (a >= b ? a : b) #define max(a, b) (a <= b ? a : b) +// why does GF hate 2d arrays +#define ARR_2D(x, y) ((x) * 2 + (y)) + enum { VERSION_SAPPHIRE = 1, diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c index a46e7e363..8736a63f1 100755 --- a/src/sound_check_menu.c +++ b/src/sound_check_menu.c @@ -22,38 +22,55 @@ enum SE_WINDOW }; -extern void sub_80BA6B8(u8); -extern void sub_80BA800(u8); +// driver test cry enums +enum +{ + CRY_TEST_UNK0, + CRY_TEST_VOLUME, + CRY_TEST_PANPOT, + CRY_TEST_PITCH, + CRY_TEST_LENGTH, + CRY_TEST_RELEASE, + CRY_TEST_PROGRESS, + CRY_TEST_CHORUS, + CRY_TEST_PRIORITY +}; + +// minmax range enums +enum +{ + MIN, + MAX +}; + 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); +extern void sub_80BAE78(int, int, int, int); -struct Struct_20387B4 -{ - u32 unk0; - u32 unk4; - u32 unk8; - u32 unkC; - u32 unk10; - u32 unk14; - u32 unk18; - u32 unk1C; - u32 unk20; -}; +extern struct ToneData voicegroup_84537C0[]; +extern struct ToneData voicegroup_8452590[]; +extern struct ToneData voicegroup_8453DC0[]; +extern struct ToneData voicegroup_8452B90[]; +extern struct ToneData voicegroup_84543C0[]; +extern struct ToneData voicegroup_8453190[]; +extern struct ToneData voicegroup_84549C0[]; +extern struct ToneData voicegroup_8453790[]; + +extern u8 gUnknown_083D0300[18]; -extern struct Struct_20387B4 gUnknown_020387B4; +extern int gUnknown_020387B4[9]; +extern int gUnknown_083D039C[16]; -extern u8 gUnknown_020387B3; +extern s8 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 struct MusicPlayerInfo *gUnknown_03005D30; + extern u8 *gBGMNames[]; extern u8 *gSENames[]; @@ -77,12 +94,20 @@ extern u8 gDebugText_Priority[]; extern u8 gDebugText_Playing[]; extern u8 gDebugText_Reverse[]; extern u8 gDebugText_Stereo[]; +extern u8 gUnknown_083D03DC[]; +extern u8 gUnknown_083D03DE[]; void sub_80BA258(u8); void sub_80BA384(u8); void sub_80BA65C(u8); +void sub_80BA6B8(u8); void sub_80BA700(u16, u16, u16); void sub_80BA79C(u8 *, u16, u16); +void sub_80BA800(u8); +void sub_80BAA48(u8); +void sub_80BACDC(s8); +void sub_80BAD5C(void); +void sub_80BAE10(u8, u8); void sub_80BA0A8(void) { @@ -744,7 +769,7 @@ void sub_80BA79C(u8 *string, u16 x, u16 y) MenuPrint(str, x, y); } -void sub_80BA800(u8 taskId) +void sub_80BA800(u8 taskId) // Task_DrawDriverTestMenu { u8 bbackStr[10]; u8 aplayStr[11]; @@ -797,19 +822,184 @@ void sub_80BA800(u8 taskId) gUnknown_020387B3 = 0; gUnknown_020387B1 = 0; gUnknown_020387B2 = 0; - gUnknown_03005D30 = 0; + gUnknown_03005D30 = NULL; 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; + gUnknown_020387B4[CRY_TEST_UNK0] = 0; + gUnknown_020387B4[CRY_TEST_VOLUME] = 0x78; + gUnknown_020387B4[CRY_TEST_PANPOT] = 0; + gUnknown_020387B4[CRY_TEST_PITCH] = 0x3C00; + gUnknown_020387B4[CRY_TEST_LENGTH] = 0xB4; + gUnknown_020387B4[CRY_TEST_PROGRESS] = 0; + gUnknown_020387B4[CRY_TEST_RELEASE] = 0; + gUnknown_020387B4[CRY_TEST_CHORUS] = 0; + gUnknown_020387B4[CRY_TEST_PRIORITY] = 2; sub_80BAD5C(); sub_80BAE10(0, 0); gTasks[taskId].func = sub_80BAA48; } + +void sub_80BAA48(u8 taskId) // Task_ProcessDriverTestInput +{ + if(gMain.newKeys & 0x2) + { + REG_DISPCNT = 0x7140; + REG_WIN0H = 0x11DF; + REG_WIN0V = 0x11F; + MenuZeroFillWindowRect(0, 0, 0x1D, 0x13); + gTasks[taskId].func = sub_80BA258; + return; + } + if(gMain.newAndRepeatedKeys & 0x40) // _080BAAA8 + { + u8 backupVar = gUnknown_020387B3; + if(--gUnknown_020387B3 < 0) + gUnknown_020387B3 = 8; + + sub_80BAE10(backupVar, gUnknown_020387B3); + return; + } + if(gMain.newAndRepeatedKeys & 0x80) // _080BAAD0 + { + u8 backupVar = gUnknown_020387B3; + if(++gUnknown_020387B3 > 8) + gUnknown_020387B3 = 0; + + sub_80BAE10(backupVar, gUnknown_020387B3); + return; + } + if(gMain.newKeys & 0x8) // _080BAAF8 + { + gUnknown_020387D8 ^= 1; + sub_80BAD5C(); + return; + } + if(gMain.newKeys & 0x4) // _080BAB14 + { + gUnknown_020387D9 ^= 1; + sub_80BAD5C(); + SetPokemonCryStereo(gUnknown_020387D9); + return; + } + if(gMain.newAndRepeatedKeys & 0x100) // _080BAB38 + { + sub_80BACDC(10); + sub_80BAD5C(); + return; + } + if(gMain.newAndRepeatedKeys & 0x200) // _080BAB46 + { + sub_80BACDC(-10); + sub_80BAD5C(); + return; + } + if(gMain.newAndRepeatedKeys & 0x20) // _080BAB56 + { + sub_80BACDC(-1); + sub_80BAD5C(); + return; + } + if(gMain.newAndRepeatedKeys & 0x10) // _080BAB64 + { + sub_80BACDC(1); + sub_80BAD5C(); + return; + } + if(gMain.newKeys & 0x1) // _080BAB78 + { + u8 divide, remaining; + + SetPokemonCryVolume(gUnknown_020387B4[CRY_TEST_VOLUME]); + SetPokemonCryPanpot(gUnknown_020387B4[CRY_TEST_PANPOT]); + SetPokemonCryPitch(gUnknown_020387B4[CRY_TEST_PITCH]); + SetPokemonCryLength(gUnknown_020387B4[CRY_TEST_LENGTH]); + SetPokemonCryProgress(gUnknown_020387B4[CRY_TEST_PROGRESS]); + SetPokemonCryRelease(gUnknown_020387B4[CRY_TEST_RELEASE]); + SetPokemonCryChorus(gUnknown_020387B4[CRY_TEST_CHORUS]); + SetPokemonCryPriority(gUnknown_020387B4[CRY_TEST_PRIORITY]); + + remaining = gUnknown_020387B4[CRY_TEST_UNK0] % 128; + divide = gUnknown_020387B4[CRY_TEST_UNK0] / 128; + + switch(divide) + { + case 0: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84537C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452590[remaining]); + break; + case 1: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453DC0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8452B90[remaining]); + break; + case 2: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84543C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453190[remaining]); + break; + case 3: + if(gUnknown_020387D8) + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_84549C0[remaining]); + else + gUnknown_03005D30 = SetPokemonCryTone(&voicegroup_8453790[remaining]); + break; + } + } + + // _080BACA2 + if(gUnknown_03005D30 != NULL) + { + gUnknown_020387B1 = IsPokemonCryPlaying(gUnknown_03005D30); + + if(gUnknown_020387B1 != gUnknown_020387B2) + sub_80BAD5C(); + + gUnknown_020387B2 = gUnknown_020387B1; + } +} + +void sub_80BACDC(s8 var) +{ + int minMaxArray[16]; + + memcpy(minMaxArray, gUnknown_083D039C, sizeof minMaxArray); + gUnknown_020387B4[gUnknown_020387B3] += var; + + if(gUnknown_020387B4[gUnknown_020387B3] > minMaxArray[ARR_2D(gUnknown_020387B3, MAX)]) + gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[ARR_2D(gUnknown_020387B3, MIN)]; + + if(gUnknown_020387B4[gUnknown_020387B3] < minMaxArray[ARR_2D(gUnknown_020387B3, MIN)]) + gUnknown_020387B4[gUnknown_020387B3] = minMaxArray[ARR_2D(gUnknown_020387B3, MAX)]; +} + +void sub_80BAD5C(void) +{ + sub_80BAE78(gUnknown_020387B4[CRY_TEST_UNK0] + 1, 0xB, 0x1, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_VOLUME], 0xB, 0x3, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PANPOT], 0xB, 0x5, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PITCH], 0xB, 0x7, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_LENGTH], 0xB, 0x9, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_RELEASE], 0xB, 0xB, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PROGRESS], 0xB, 0xD, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_CHORUS], 0xB, 0xF, 0x5); + sub_80BAE78(gUnknown_020387B4[CRY_TEST_PRIORITY], 0xB, 0x11, 0x5); + sub_80BAE78(gUnknown_020387B1, 0x1B, 0x10, 0x1); + sub_80BAE78(gUnknown_020387D8, 0x1B, 0xE, 0x1); + sub_80BAE78(gUnknown_020387D9, 0x1B, 0xC, 0x1); +} + +void sub_80BAE10(u8 var1, u8 var2) +{ + u8 str1[2]; + u8 str2[2]; + + memcpy(str1, gUnknown_083D03DC, sizeof str1); + memcpy(str2, gUnknown_083D03DE, sizeof str2); + + MenuPrint(str2, gUnknown_083D0300[ARR_2D(var1, 0)], gUnknown_083D0300[ARR_2D(var1, 1)]); + MenuPrint(str1, gUnknown_083D0300[ARR_2D(var2, 0)], gUnknown_083D0300[ARR_2D(var2, 1)]); +} |