diff options
author | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-06-25 20:12:08 -0400 |
---|---|---|
committer | ProjectRevoTPP <projectrevotpp@hotmail.com> | 2017-06-25 20:12:08 -0400 |
commit | 637774362fdbedd8a54b651e6196a1e1a4f4c093 (patch) | |
tree | 3166b9488e566fc831a287e0f88eb52876fc97d8 | |
parent | 5e786fcdd9f414eb9614331ea13af21de6f667d0 (diff) |
start decompiling sound_check_menu.c
-rw-r--r-- | asm/sound_check_menu.s | 684 | ||||
-rw-r--r-- | data/sound_check_menu.s | 2 | ||||
-rwxr-xr-x | include/player_pc.h | 4 | ||||
-rw-r--r-- | include/task.h | 4 | ||||
-rwxr-xr-x | ld_script.txt | 1 | ||||
-rwxr-xr-x | src/sound_check_menu.c | 622 |
6 files changed, 628 insertions, 689 deletions
diff --git a/asm/sound_check_menu.s b/asm/sound_check_menu.s index b47229d2b..99b894c83 100644 --- a/asm/sound_check_menu.s +++ b/asm/sound_check_menu.s @@ -6,690 +6,6 @@ .text - thumb_func_start sub_80BA0A8 -sub_80BA0A8: @ 80BA0A8 - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_80BA0A8 - - thumb_func_start sub_80BA0C0 -sub_80BA0C0: @ 80BA0C0 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - ldr r0, _080BA0E8 @ =gUnknown_020387B0 - ldrb r0, [r0] - cmp r0, 0 - beq _080BA0E2 - bl m4aSoundMain - bl m4aSoundMain - bl m4aSoundMain -_080BA0E2: - pop {r0} - bx r0 - .align 2, 0 -_080BA0E8: .4byte gUnknown_020387B0 - thumb_func_end sub_80BA0C0 - - thumb_func_start unref_sub_80BA0EC -unref_sub_80BA0EC: @ 80BA0EC - push {r4-r6,lr} - sub sp, 0xC - movs r0, 0 - bl SetVBlankCallback - movs r6, 0x80 - lsls r6, 19 - movs r5, 0 - strh r5, [r6] - ldr r0, _080BA20C @ =REG_BG2CNT - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - subs r0, 0x2 - strh r5, [r0] - adds r0, 0x10 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - subs r0, 0x6 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - subs r0, 0x6 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - add r0, sp, 0x4 - strh r5, [r0] - ldr r1, _080BA210 @ =0x040000d4 - str r0, [r1] - movs r0, 0xC0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080BA214 @ =0x8100c000 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r4, 0 - str r4, [sp, 0x8] - add r0, sp, 0x8 - str r0, [r1] - movs r0, 0xE0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080BA218 @ =0x85000100 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - add r0, sp, 0x4 - strh r4, [r0] - str r0, [r1] - movs r0, 0xA0 - lsls r0, 19 - str r0, [r1, 0x4] - ldr r0, _080BA21C @ =0x81000200 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - bl ResetPaletteFade - bl ResetTasks - bl ResetSpriteData - ldr r0, _080BA220 @ =gWindowConfig_81E6C3C - bl SetUpWindowConfig - ldr r0, _080BA224 @ =gWindowConfig_81E6CE4 - bl InitMenuWindow - movs r0, 0x1 - negs r0, r0 - str r4, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r0, _080BA228 @ =REG_WIN0H - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - subs r0, 0x2 - strh r4, [r0] - adds r0, 0x4 - strh r4, [r0] - ldr r1, _080BA22C @ =REG_WININ - ldr r2, _080BA230 @ =0x00001111 - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x31 - strh r0, [r1] - adds r1, 0x6 - movs r0, 0xE1 - strh r0, [r1] - ldr r0, _080BA234 @ =REG_BLDALPHA - strh r4, [r0] - adds r1, 0x4 - movs r0, 0x7 - strh r0, [r1] - ldr r1, _080BA238 @ =0x04000200 - movs r2, 0x1 - strh r2, [r1] - ldrh r0, [r1] - orrs r0, r2 - strh r0, [r1] - ldr r2, _080BA23C @ =REG_DISPSTAT - ldrh r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strh r0, [r2] - ldr r0, _080BA240 @ =sub_80BA0C0 - bl SetVBlankCallback - ldr r0, _080BA244 @ =sub_80BA0A8 - bl SetMainCallback2 - ldr r1, _080BA248 @ =0x00007140 - adds r0, r1, 0 - strh r0, [r6] - ldr r0, _080BA24C @ =sub_80BA258 - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080BA250 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - strh r4, [r1, 0x8] - strh r4, [r1, 0xA] - strh r4, [r1, 0xC] - strh r4, [r1, 0xE] - ldr r0, _080BA254 @ =gUnknown_020387B0 - strb r5, [r0] - strh r4, [r1, 0xE] - bl m4aSoundInit - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080BA20C: .4byte REG_BG2CNT -_080BA210: .4byte 0x040000d4 -_080BA214: .4byte 0x8100c000 -_080BA218: .4byte 0x85000100 -_080BA21C: .4byte 0x81000200 -_080BA220: .4byte gWindowConfig_81E6C3C -_080BA224: .4byte gWindowConfig_81E6CE4 -_080BA228: .4byte REG_WIN0H -_080BA22C: .4byte REG_WININ -_080BA230: .4byte 0x00001111 -_080BA234: .4byte REG_BLDALPHA -_080BA238: .4byte 0x04000200 -_080BA23C: .4byte REG_DISPSTAT -_080BA240: .4byte sub_80BA0C0 -_080BA244: .4byte sub_80BA0A8 -_080BA248: .4byte 0x00007140 -_080BA24C: .4byte sub_80BA258 -_080BA250: .4byte gTasks -_080BA254: .4byte gUnknown_020387B0 - thumb_func_end unref_sub_80BA0EC - - thumb_func_start sub_80BA258 -sub_80BA258: @ 80BA258 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x40 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - ldr r1, _080BA354 @ =gDebugText_SoundCheckJap - mov r0, sp - movs r2, 0x9 - bl memcpy - add r7, sp, 0xC - ldr r1, _080BA358 @ =gDebugText_BGM - adds r0, r7, 0 - movs r2, 0x4 - bl memcpy - add r0, sp, 0x10 - mov r8, r0 - ldr r1, _080BA35C @ =gDebugText_SE - movs r2, 0x4 - bl memcpy - add r5, sp, 0x14 - ldr r1, _080BA360 @ =gUnknown_083D02D9 - adds r0, r5, 0 - movs r2, 0xD - bl memcpy - add r4, sp, 0x24 - ldr r1, _080BA364 @ =gDebugText_UpDown - adds r0, r4, 0 - movs r2, 0xC - bl memcpy - add r6, sp, 0x30 - ldr r1, _080BA368 @ =gDebugText_DriverTest - adds r0, r6, 0 - movs r2, 0xE - bl memcpy - ldr r0, _080BA36C @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080BA344 - movs r0, 0x2 - movs r1, 0 - movs r2, 0x1B - movs r3, 0x3 - bl MenuDrawTextWindow - movs r0, 0x2 - movs r1, 0x5 - movs r2, 0x1B - movs r3, 0xA - bl MenuDrawTextWindow - movs r0, 0x2 - movs r1, 0xC - movs r2, 0x1B - movs r3, 0x11 - bl MenuDrawTextWindow - mov r0, sp - movs r1, 0x4 - movs r2, 0x1 - bl MenuPrint - adds r0, r5, 0 - movs r1, 0xE - movs r2, 0x1 - bl MenuPrint - adds r0, r7, 0 - movs r1, 0x4 - movs r2, 0x6 - bl MenuPrint - adds r0, r4, 0 - movs r1, 0xE - movs r2, 0x6 - bl MenuPrint - mov r0, r8 - movs r1, 0x4 - movs r2, 0xD - bl MenuPrint - adds r0, r4, 0 - movs r1, 0xE - movs r2, 0xD - bl MenuPrint - adds r0, r6, 0 - movs r1, 0xE - movs r2, 0x12 - bl MenuPrint - ldr r1, _080BA370 @ =gTasks - mov r2, r9 - lsls r0, r2, 2 - add r0, r9 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BA374 @ =sub_80BA384 - str r1, [r0] - ldr r1, _080BA378 @ =REG_WIN0H - ldr r2, _080BA37C @ =0x000011df - adds r0, r2, 0 - strh r0, [r1] - adds r1, 0x4 - ldr r2, _080BA380 @ =0x0000011f - adds r0, r2, 0 - strh r0, [r1] -_080BA344: - add sp, 0x40 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080BA354: .4byte gDebugText_SoundCheckJap -_080BA358: .4byte gDebugText_BGM -_080BA35C: .4byte gDebugText_SE -_080BA360: .4byte gUnknown_083D02D9 -_080BA364: .4byte gDebugText_UpDown -_080BA368: .4byte gDebugText_DriverTest -_080BA36C: .4byte gPaletteFade -_080BA370: .4byte gTasks -_080BA374: .4byte sub_80BA384 -_080BA378: .4byte REG_WIN0H -_080BA37C: .4byte 0x000011df -_080BA380: .4byte 0x0000011f - thumb_func_end sub_80BA258 - - thumb_func_start sub_80BA384 -sub_80BA384: @ 80BA384 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r1, _080BA3EC @ =gTasks - lsls r4, r0, 2 - adds r4, r0 - lsls r4, 3 - adds r4, r1 - ldrb r0, [r4, 0x8] - bl sub_80BA6B8 - ldr r1, _080BA3F0 @ =0x0000015d - adds r0, r1, 0 - ldrh r2, [r4, 0xA] - adds r0, r2 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x7 - movs r2, 0x8 - bl sub_80BA700 - ldr r1, _080BA3F4 @ =gBGMNames - movs r2, 0xA - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xB - movs r2, 0x8 - bl sub_80BA79C - ldrh r0, [r4, 0xC] - movs r1, 0x7 - movs r2, 0xF - bl sub_80BA700 - ldr r1, _080BA3F8 @ =gSENames - movs r2, 0xC - ldrsh r0, [r4, r2] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0xB - movs r2, 0xF - bl sub_80BA79C - ldr r0, _080BA3FC @ =sub_80BA65C - str r0, [r4] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080BA3EC: .4byte gTasks -_080BA3F0: .4byte 0x0000015d -_080BA3F4: .4byte gBGMNames -_080BA3F8: .4byte gSENames -_080BA3FC: .4byte sub_80BA65C - thumb_func_end sub_80BA384 - - thumb_func_start sub_80BA400 -sub_80BA400: @ 80BA400 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r2, _080BA428 @ =gMain - ldrh r1, [r2, 0x2E] - movs r0, 0x80 - lsls r0, 1 - ands r0, r1 - cmp r0, 0 - beq _080BA434 - ldr r0, _080BA42C @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BA430 @ =sub_80BA800 - str r0, [r1] - b _080BA64C - .align 2, 0 -_080BA428: .4byte gMain -_080BA42C: .4byte gTasks -_080BA430: .4byte sub_80BA800 -_080BA434: - movs r0, 0x80 - lsls r0, 2 - ands r0, r1 - cmp r0, 0 - beq _080BA458 - ldr r0, _080BA450 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BA454 @ =sub_80BAF84 - str r0, [r1] - b _080BA64C - .align 2, 0 -_080BA450: .4byte gTasks -_080BA454: .4byte sub_80BAF84 -_080BA458: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _080BA478 - ldr r0, _080BA470 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldr r0, _080BA474 @ =sub_80BB25C - str r0, [r1] - b _080BA64C - .align 2, 0 -_080BA470: .4byte gTasks -_080BA474: .4byte sub_80BB25C -_080BA478: - movs r6, 0x1 - movs r5, 0x1 - ands r5, r1 - cmp r5, 0 - beq _080BA538 - ldr r0, _080BA4AC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r5, r1, r0 - movs r1, 0x8 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _080BA4D0 - movs r2, 0x10 - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080BA4BA - movs r3, 0xC - ldrsh r4, [r5, r3] - cmp r4, 0 - beq _080BA4B0 - ldrh r0, [r5, 0x10] - bl m4aSongNumStop - b _080BA4C4 - .align 2, 0 -_080BA4AC: .4byte gTasks -_080BA4B0: - ldrh r0, [r5, 0x10] - bl m4aSongNumStop - strh r4, [r5, 0x10] - b _080BA64C -_080BA4BA: - movs r4, 0xC - ldrsh r0, [r5, r4] - cmp r0, 0 - bne _080BA4C4 - b _080BA64C -_080BA4C4: - ldrh r0, [r5, 0xC] - bl m4aSongNumStart - ldrh r0, [r5, 0xC] - strh r0, [r5, 0x10] - b _080BA64C -_080BA4D0: - ldrh r1, [r5, 0xE] - movs r2, 0xE - ldrsh r0, [r5, r2] - cmp r0, 0 - beq _080BA514 - movs r3, 0xA - ldrsh r4, [r5, r3] - cmp r4, 0 - beq _080BA500 - ldr r0, _080BA4FC @ =0x0000015d - adds r4, r0, 0 - adds r0, r1, r4 - lsls r0, 16 - lsrs r0, 16 - bl m4aSongNumStop - ldrh r1, [r5, 0xA] - adds r4, r1 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - b _080BA528 - .align 2, 0 -_080BA4FC: .4byte 0x0000015d -_080BA500: - ldr r2, _080BA510 @ =0x0000015d - adds r0, r1, r2 - lsls r0, 16 - lsrs r0, 16 - bl m4aSongNumStop - strh r4, [r5, 0xE] - b _080BA64C - .align 2, 0 -_080BA510: .4byte 0x0000015d -_080BA514: - ldrh r1, [r5, 0xA] - movs r3, 0xA - ldrsh r0, [r5, r3] - cmp r0, 0 - bne _080BA520 - b _080BA64C -_080BA520: - ldr r4, _080BA534 @ =0x0000015d - adds r0, r1, r4 - lsls r0, 16 - lsrs r0, 16 -_080BA528: - bl m4aSongNumStart - ldrh r0, [r5, 0xA] - strh r0, [r5, 0xE] - b _080BA64C - .align 2, 0 -_080BA534: .4byte 0x0000015d -_080BA538: - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _080BA570 - movs r0, 0x5 - bl m4aSongNumStart - movs r0, 0x1 - negs r0, r0 - str r5, [sp] - movs r1, 0 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _080BA568 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r0, r1 - ldr r1, _080BA56C @ =sub_80BA68C - str r1, [r0] - b _080BA64C - .align 2, 0 -_080BA568: .4byte gTasks -_080BA56C: .4byte sub_80BA68C -_080BA570: - ldrh r1, [r2, 0x30] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _080BA582 - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _080BA59C -_080BA582: - ldr r0, _080BA598 @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0x8] - eors r0, r6 - strh r0, [r1, 0x8] -_080BA592: - movs r0, 0x1 - b _080BA64E - .align 2, 0 -_080BA598: .4byte gTasks -_080BA59C: - movs r0, 0x10 - ands r0, r1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, 0 - beq _080BA5EA - ldr r0, _080BA5CC @ =gTasks - lsls r1, r4, 2 - adds r1, r4 - lsls r1, 3 - adds r1, r0 - movs r2, 0x8 - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _080BA5D6 - ldrh r2, [r1, 0xC] - movs r3, 0xC - ldrsh r0, [r1, r3] - cmp r0, 0 - ble _080BA5D0 - subs r0, r2, 0x1 - strh r0, [r1, 0xC] - b _080BA592 - .align 2, 0 -_080BA5CC: .4byte gTasks -_080BA5D0: - movs r0, 0xF7 - strh r0, [r1, 0xC] - b _080BA592 -_080BA5D6: - ldrh r2, [r1, 0xA] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r0, 0 - ble _080BA5E4 - subs r0, r2, 0x1 - b _080BA5E6 -_080BA5E4: - movs r0, 0x75 -_080BA5E6: - strh r0, [r1, 0xA] - b _080BA592 -_080BA5EA: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _080BA630 - ldr r1, _080BA614 @ =gTasks - lsls r0, r4, 2 - adds r0, r4 - lsls r0, 3 - adds r1, r0, r1 - movs r0, 0x8 - ldrsh r2, [r1, r0] - cmp r2, 0 - beq _080BA61C - ldrh r2, [r1, 0xC] - movs r4, 0xC - ldrsh r0, [r1, r4] - cmp r0, 0xF6 - bgt _080BA618 - adds r0, r2, 0x1 - strh r0, [r1, 0xC] - b _080BA592 - .align 2, 0 -_080BA614: .4byte gTasks -_080BA618: - strh r3, [r1, 0xC] - b _080BA592 -_080BA61C: - ldrh r3, [r1, 0xA] - movs r4, 0xA - ldrsh r0, [r1, r4] - cmp r0, 0x74 - bgt _080BA62C - adds r0, r3, 0x1 - strh r0, [r1, 0xA] - b _080BA592 -_080BA62C: - strh r2, [r1, 0xA] - b _080BA592 -_080BA630: - ldrh r1, [r2, 0x2C] - movs r0, 0x4 - ands r0, r1 - lsls r0, 16 - lsrs r1, r0, 16 - cmp r1, 0 - beq _080BA648 - ldr r0, _080BA644 @ =gUnknown_020387B0 - strb r6, [r0] - b _080BA64C - .align 2, 0 -_080BA644: .4byte gUnknown_020387B0 -_080BA648: - ldr r0, _080BA658 @ =gUnknown_020387B0 - strb r1, [r0] -_080BA64C: - movs r0, 0 -_080BA64E: - add sp, 0x4 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_080BA658: .4byte gUnknown_020387B0 - thumb_func_end sub_80BA400 - thumb_func_start sub_80BA65C sub_80BA65C: @ 80BA65C push {r4,lr} diff --git a/data/sound_check_menu.s b/data/sound_check_menu.s index a91f55d04..6e4702ae3 100644 --- a/data/sound_check_menu.s +++ b/data/sound_check_menu.s @@ -14,7 +14,7 @@ gDebugText_BGM:: @ 83D02D1 gDebugText_SE:: @ 83D02D5 .string "SE $" -gUnknown_083D02D9:: @ 83D02D9 +gDebugText_ABDesc:: @ 83D02D9 .string "A‥さいせい B‥おわり$" gDebugText_UpDown:: @ 83D02E6 diff --git a/include/player_pc.h b/include/player_pc.h index f2446ebdf..8debeda88 100755 --- a/include/player_pc.h +++ b/include/player_pc.h @@ -1,10 +1,6 @@ #ifndef GUARD_PLAYER_PC_H #define GUARD_PLAYER_PC_H -// general task defines -#define TASK gTasks[taskId] -#define FUNC func - // local task defines #define PAGE_INDEX data[0] #define ITEMS_ABOVE_TOP data[1] diff --git a/include/task.h b/include/task.h index 6c6efdf4f..a71577ee3 100644 --- a/include/task.h +++ b/include/task.h @@ -1,6 +1,10 @@ #ifndef GUARD_TASK_H #define GUARD_TASK_H +// general task defines +#define TASK gTasks[taskId] +#define FUNC func + typedef void (*TaskFunc)(u8 taskId); struct Task diff --git a/ld_script.txt b/ld_script.txt index 281f1781d..523c35a85 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -166,6 +166,7 @@ SECTIONS { asm/contest_effect.o(.text); src/record_mixing.o(.text); asm/record_mixing.o(.text); + src/sound_check_menu.o(.text); asm/sound_check_menu.o(.text); src/secret_base.o(.text); asm/secret_base.o(.text_80BC1D0); diff --git a/src/sound_check_menu.c b/src/sound_check_menu.c new file mode 100755 index 000000000..75cf48798 --- /dev/null +++ b/src/sound_check_menu.c @@ -0,0 +1,622 @@ +#include "global.h" +#include "sprite.h" +#include "palette.h" +#include "task.h" +#include "m4a.h" +#include "main.h" +#include "text.h" +#include "menu.h" +#include "songs.h" + +// local task defines +#define UNK_DATA0 data[0] +#define BGM_INDEX data[1] +#define SE_INDEX data[2] +#define UNK_DATA3 data[3] + +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 u8 gUnknown_020387B0; + +extern u8 *gBGMNames[]; +extern u8 *gSENames[]; + +extern u8 gDebugText_SoundCheckJap[]; +extern u8 gDebugText_BGM[]; +extern u8 gDebugText_SE[]; +extern u8 gDebugText_ABDesc[]; +extern u8 gDebugText_UpDown[]; +extern u8 gDebugText_DriverTest[]; + +void sub_80BA258(u8); +void sub_80BA384(u8); + +void sub_80BA0A8(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_80BA0C0(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); + + if(gUnknown_020387B0 != 0) + { + m4aSoundMain(); + m4aSoundMain(); + m4aSoundMain(); + } +} + +// unused +void CB2_StartSoundCheckMenu(void) +{ + u8 taskId; + + SetVBlankCallback(NULL); + REG_DISPCNT = 0; + REG_BG2CNT = 0; + REG_BG1CNT = 0; + REG_BG0CNT = 0; + REG_BG2HOFS = 0; + REG_BG2VOFS = 0; + REG_BG1HOFS = 0; + REG_BG1VOFS = 0; + REG_BG0HOFS = 0; + REG_BG0VOFS = 0; + DmaFill16(3, 0, VRAM, VRAM_SIZE); + DmaFill32(3, 0, OAM, OAM_SIZE); + DmaFill16(3, 0, PLTT, PLTT_SIZE); + ResetPaletteFade(); + ResetTasks(); + ResetSpriteData(); + SetUpWindowConfig(&gWindowConfig_81E6C3C); + InitMenuWindow(&gWindowConfig_81E6CE4); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, 0); + REG_WIN0H = 0; + REG_WIN0V = 0; + REG_WIN1H = 0; + REG_WIN1V = 0; + REG_WININ = 0x1111; + REG_WINOUT = 0x31; + REG_BLDCNT = 0xE1; + REG_BLDALPHA = 0; + REG_BLDY = 7; + REG_IE = 1; // could be a typo of REG_IME + REG_IE |= 1; + REG_DISPSTAT |= 8; + SetVBlankCallback(sub_80BA0C0); + SetMainCallback2(sub_80BA0A8); + REG_DISPCNT = 0x7140; + taskId = CreateTask(sub_80BA258, 0); + TASK.UNK_DATA0 = 0; + TASK.BGM_INDEX = 0; + TASK.SE_INDEX = 0; + TASK.UNK_DATA3 = 0; + gUnknown_020387B0 = 0; + TASK.UNK_DATA3 = 0; // why? + m4aSoundInit(); +} + +// Task_InitSoundCheckMenu +void sub_80BA258(u8 taskId) +{ + u8 soundcheckStr[9]; + u8 bgmStr[4]; + u8 seStr[4]; + u8 abDescStr[13]; + u8 upDownStr[12]; + u8 driverStr[14]; + + // these probably used size of the strings themselves, but they are not in the C file yet. + memcpy(soundcheckStr, gDebugText_SoundCheckJap, sizeof soundcheckStr); + memcpy(bgmStr, gDebugText_BGM, sizeof bgmStr); + memcpy(seStr, gDebugText_SE, sizeof seStr); + memcpy(abDescStr, gDebugText_ABDesc, sizeof abDescStr); + memcpy(upDownStr, gDebugText_UpDown, sizeof upDownStr); + memcpy(driverStr, gDebugText_DriverTest, sizeof driverStr); + + if(!gPaletteFade.active) + { + MenuDrawTextWindow(0x2, 0, 0x1B, 0x3); + MenuDrawTextWindow(0x2, 0x5, 0x1B, 0xA); + MenuDrawTextWindow(0x2, 0xC, 0x1B, 0x11); + MenuPrint(soundcheckStr, 4, 1); + MenuPrint(abDescStr, 14, 1); + MenuPrint(bgmStr, 4, 6); + MenuPrint(upDownStr, 14, 6); + MenuPrint(seStr, 4, 13); + MenuPrint(upDownStr, 14, 13); + MenuPrint(driverStr, 14, 18); + TASK.FUNC = sub_80BA384; + REG_WIN0H = 0x11DF; + REG_WIN0V = 0x11F; + } +} + +void sub_80BA384(u8 taskId) +{ + sub_80BA6B8(TASK.UNK_DATA0); + 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); + sub_80BA79C(gSENames[TASK.SE_INDEX], 11, 15); + TASK.FUNC = sub_80BA65C; +} + +#ifdef NONMATCHING +bool8 sub_80BA400(u8 taskId) +{ + if(gMain.newKeys & R_BUTTON) // driver test + { + gTasks[taskId].func = sub_80BA800; + return FALSE; + } + if(gMain.newKeys & L_BUTTON) + { + gTasks[taskId].func = sub_80BAF84; + return FALSE; + } + if(gMain.newKeys & START_BUTTON) + { + gTasks[taskId].func = sub_80BB25C; + return FALSE; + } + if(gMain.newKeys & A_BUTTON) // both these cases insist on non reuses of certain data variables and cause the function to not match. + { + if(gTasks[taskId].data[0] != 0) // is playing? + { + if(gTasks[taskId].data[4] != 0) + { + if(gTasks[taskId].data[2] != 0) // why are you insiting on a non signed halfword? + { + m4aSongNumStop(gTasks[taskId].data[4]); + } + else + { + m4aSongNumStop(gTasks[taskId].data[2]); + gTasks[taskId].data[4] = gTasks[taskId].data[2]; + return FALSE; + } + } + else if(gTasks[taskId].data[2] == 0) // _080BA4BA + { + return FALSE; + } + // _080BA4C4 + m4aSongNumStart(gTasks[taskId].data[2]); + gTasks[taskId].data[4] = gTasks[taskId].data[2]; + } + else // _080BA4D0 + { + if(gTasks[taskId].data[3] != 0) + { + if(gTasks[taskId].data[1] != 0) + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + } + else // _080BA500 + { + m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].data[1]; + return FALSE; + } + } + else if(gTasks[taskId].data[1] == 0) // _080BA514 + return FALSE; + + m4aSongNumStart(gTasks[taskId].data[1] + BGM_STOP); + gTasks[taskId].data[3] = gTasks[taskId].data[1]; + } + return FALSE; + } + if(gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(5); + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); + gTasks[taskId].func = sub_80BA68C; + return FALSE; + } + if(gMain.newAndRepeatedKeys & DPAD_UP) + { + gTasks[taskId].data[8] ^= A_BUTTON; // huh? + return TRUE; + } + if(gMain.newAndRepeatedKeys & DPAD_DOWN) + { + gTasks[taskId].data[8] ^= A_BUTTON; // huh? + return TRUE; + } + else + { + u16 keys = gMain.newAndRepeatedKeys & DPAD_RIGHT; + if(keys) + { + if(gTasks[taskId].data[0] != 0) + { + if(gTasks[taskId].data[2] > 0) + { + gTasks[taskId].data[2]--; + } + else + { + gTasks[taskId].data[2] = 0xF7; + } + } + else if(gTasks[taskId].data[1] > 0) + { + gTasks[taskId].data[1]--; + } + else + { + gTasks[taskId].data[1] = 0x75; + } + return TRUE; + } + if(gMain.newAndRepeatedKeys & DPAD_LEFT) + { + if(gTasks[taskId].data[0] != 0) + { + if(gTasks[taskId].data[2] < 0xF7) + { + gTasks[taskId].data[2]++; + } + else + { + gTasks[taskId].data[2] = keys; // ?? + } + } + else if(gTasks[taskId].data[1] < 0x75) + { + gTasks[taskId].data[1]++; + return TRUE; + } + else + { + gTasks[taskId].data[1] = gTasks[taskId].data[2]; + return TRUE; + } + return TRUE; + } + if(gMain.heldKeys & SELECT_BUTTON) + { + gUnknown_020387B0 = A_BUTTON; + return FALSE; + } + else + { + gUnknown_020387B0 = (gMain.heldKeys & SELECT_BUTTON); + return FALSE; + } + } +} +#else +__attribute__((naked)) +bool8 sub_80BA400(u8 taskId) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x4\n\ + lsls r0, 24\n\ + lsrs r4, r0, 24\n\ + ldr r2, _080BA428 @ =gMain\n\ + ldrh r1, [r2, 0x2E]\n\ + movs r0, 0x80\n\ + lsls r0, 1\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA434\n\ + ldr r0, _080BA42C @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _080BA430 @ =sub_80BA800\n\ + str r0, [r1]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA428: .4byte gMain\n\ +_080BA42C: .4byte gTasks\n\ +_080BA430: .4byte sub_80BA800\n\ +_080BA434:\n\ + movs r0, 0x80\n\ + lsls r0, 2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA458\n\ + ldr r0, _080BA450 @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _080BA454 @ =sub_80BAF84\n\ + str r0, [r1]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA450: .4byte gTasks\n\ +_080BA454: .4byte sub_80BAF84\n\ +_080BA458:\n\ + movs r0, 0x8\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA478\n\ + ldr r0, _080BA470 @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldr r0, _080BA474 @ =sub_80BB25C\n\ + str r0, [r1]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA470: .4byte gTasks\n\ +_080BA474: .4byte sub_80BB25C\n\ +_080BA478:\n\ + movs r6, 0x1\n\ + movs r5, 0x1\n\ + ands r5, r1\n\ + cmp r5, 0\n\ + beq _080BA538\n\ + ldr r0, _080BA4AC @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r5, r1, r0\n\ + movs r1, 0x8\n\ + ldrsh r0, [r5, r1]\n\ + cmp r0, 0\n\ + beq _080BA4D0\n\ + movs r2, 0x10\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _080BA4BA\n\ + movs r3, 0xC\n\ + ldrsh r4, [r5, r3]\n\ + cmp r4, 0\n\ + beq _080BA4B0\n\ + ldrh r0, [r5, 0x10]\n\ + bl m4aSongNumStop\n\ + b _080BA4C4\n\ + .align 2, 0\n\ +_080BA4AC: .4byte gTasks\n\ +_080BA4B0:\n\ + ldrh r0, [r5, 0x10]\n\ + bl m4aSongNumStop\n\ + strh r4, [r5, 0x10]\n\ + b _080BA64C\n\ +_080BA4BA:\n\ + movs r4, 0xC\n\ + ldrsh r0, [r5, r4]\n\ + cmp r0, 0\n\ + bne _080BA4C4\n\ + b _080BA64C\n\ +_080BA4C4:\n\ + ldrh r0, [r5, 0xC]\n\ + bl m4aSongNumStart\n\ + ldrh r0, [r5, 0xC]\n\ + strh r0, [r5, 0x10]\n\ + b _080BA64C\n\ +_080BA4D0:\n\ + ldrh r1, [r5, 0xE]\n\ + movs r2, 0xE\n\ + ldrsh r0, [r5, r2]\n\ + cmp r0, 0\n\ + beq _080BA514\n\ + movs r3, 0xA\n\ + ldrsh r4, [r5, r3]\n\ + cmp r4, 0\n\ + beq _080BA500\n\ + ldr r0, _080BA4FC @ =0x0000015d\n\ + adds r4, r0, 0\n\ + adds r0, r1, r4\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl m4aSongNumStop\n\ + ldrh r1, [r5, 0xA]\n\ + adds r4, r1\n\ + lsls r4, 16\n\ + lsrs r4, 16\n\ + adds r0, r4, 0\n\ + b _080BA528\n\ + .align 2, 0\n\ +_080BA4FC: .4byte 0x0000015d\n\ +_080BA500:\n\ + ldr r2, _080BA510 @ =0x0000015d\n\ + adds r0, r1, r2\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ + bl m4aSongNumStop\n\ + strh r4, [r5, 0xE]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA510: .4byte 0x0000015d\n\ +_080BA514:\n\ + ldrh r1, [r5, 0xA]\n\ + movs r3, 0xA\n\ + ldrsh r0, [r5, r3]\n\ + cmp r0, 0\n\ + bne _080BA520\n\ + b _080BA64C\n\ +_080BA520:\n\ + ldr r4, _080BA534 @ =0x0000015d\n\ + adds r0, r1, r4\n\ + lsls r0, 16\n\ + lsrs r0, 16\n\ +_080BA528:\n\ + bl m4aSongNumStart\n\ + ldrh r0, [r5, 0xA]\n\ + strh r0, [r5, 0xE]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA534: .4byte 0x0000015d\n\ +_080BA538:\n\ + movs r0, 0x2\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA570\n\ + movs r0, 0x5\n\ + bl m4aSongNumStart\n\ + movs r0, 0x1\n\ + negs r0, r0\n\ + str r5, [sp]\n\ + movs r1, 0\n\ + movs r2, 0\n\ + movs r3, 0x10\n\ + bl BeginNormalPaletteFade\n\ + ldr r1, _080BA568 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r0, r1\n\ + ldr r1, _080BA56C @ =sub_80BA68C\n\ + str r1, [r0]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA568: .4byte gTasks\n\ +_080BA56C: .4byte sub_80BA68C\n\ +_080BA570:\n\ + ldrh r1, [r2, 0x30]\n\ + movs r0, 0x40\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + bne _080BA582\n\ + movs r0, 0x80\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA59C\n\ +_080BA582:\n\ + ldr r0, _080BA598 @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + ldrh r0, [r1, 0x8]\n\ + eors r0, r6\n\ + strh r0, [r1, 0x8]\n\ +_080BA592:\n\ + movs r0, 0x1\n\ + b _080BA64E\n\ + .align 2, 0\n\ +_080BA598: .4byte gTasks\n\ +_080BA59C:\n\ + movs r0, 0x10\n\ + ands r0, r1\n\ + lsls r0, 16\n\ + lsrs r3, r0, 16\n\ + cmp r3, 0\n\ + beq _080BA5EA\n\ + ldr r0, _080BA5CC @ =gTasks\n\ + lsls r1, r4, 2\n\ + adds r1, r4\n\ + lsls r1, 3\n\ + adds r1, r0\n\ + movs r2, 0x8\n\ + ldrsh r0, [r1, r2]\n\ + cmp r0, 0\n\ + beq _080BA5D6\n\ + ldrh r2, [r1, 0xC]\n\ + movs r3, 0xC\n\ + ldrsh r0, [r1, r3]\n\ + cmp r0, 0\n\ + ble _080BA5D0\n\ + subs r0, r2, 0x1\n\ + strh r0, [r1, 0xC]\n\ + b _080BA592\n\ + .align 2, 0\n\ +_080BA5CC: .4byte gTasks\n\ +_080BA5D0:\n\ + movs r0, 0xF7\n\ + strh r0, [r1, 0xC]\n\ + b _080BA592\n\ +_080BA5D6:\n\ + ldrh r2, [r1, 0xA]\n\ + movs r4, 0xA\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0\n\ + ble _080BA5E4\n\ + subs r0, r2, 0x1\n\ + b _080BA5E6\n\ +_080BA5E4:\n\ + movs r0, 0x75\n\ +_080BA5E6:\n\ + strh r0, [r1, 0xA]\n\ + b _080BA592\n\ +_080BA5EA:\n\ + movs r0, 0x20\n\ + ands r0, r1\n\ + cmp r0, 0\n\ + beq _080BA630\n\ + ldr r1, _080BA614 @ =gTasks\n\ + lsls r0, r4, 2\n\ + adds r0, r4\n\ + lsls r0, 3\n\ + adds r1, r0, r1\n\ + movs r0, 0x8\n\ + ldrsh r2, [r1, r0]\n\ + cmp r2, 0\n\ + beq _080BA61C\n\ + ldrh r2, [r1, 0xC]\n\ + movs r4, 0xC\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0xF6\n\ + bgt _080BA618\n\ + adds r0, r2, 0x1\n\ + strh r0, [r1, 0xC]\n\ + b _080BA592\n\ + .align 2, 0\n\ +_080BA614: .4byte gTasks\n\ +_080BA618:\n\ + strh r3, [r1, 0xC]\n\ + b _080BA592\n\ +_080BA61C:\n\ + ldrh r3, [r1, 0xA]\n\ + movs r4, 0xA\n\ + ldrsh r0, [r1, r4]\n\ + cmp r0, 0x74\n\ + bgt _080BA62C\n\ + adds r0, r3, 0x1\n\ + strh r0, [r1, 0xA]\n\ + b _080BA592\n\ +_080BA62C:\n\ + strh r2, [r1, 0xA]\n\ + b _080BA592\n\ +_080BA630:\n\ + ldrh r1, [r2, 0x2C]\n\ + movs r0, 0x4\n\ + ands r0, r1\n\ + lsls r0, 16\n\ + lsrs r1, r0, 16\n\ + cmp r1, 0\n\ + beq _080BA648\n\ + ldr r0, _080BA644 @ =gUnknown_020387B0\n\ + strb r6, [r0]\n\ + b _080BA64C\n\ + .align 2, 0\n\ +_080BA644: .4byte gUnknown_020387B0\n\ +_080BA648:\n\ + ldr r0, _080BA658 @ =gUnknown_020387B0\n\ + strb r1, [r0]\n\ +_080BA64C:\n\ + movs r0, 0\n\ +_080BA64E:\n\ + add sp, 0x4\n\ + pop {r4-r6}\n\ + pop {r1}\n\ + bx r1\n\ + .align 2, 0\n\ +_080BA658: .4byte gUnknown_020387B0\n\ + .syntax divided"); +} +#endif |