Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #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 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;
- }
- extern void sub_80BA800(u8);
- extern void sub_80BAF84(u8);
- extern void sub_80BB25C(u8);
- extern void sub_80BA68C(u8);
- // Task_ProcessSoundCheckMenuInput
- 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)
- {
- if(gTasks[taskId].data[0] != 0) // is playing?
- {
- if(gTasks[taskId].data[4] != 0)
- {
- s16 data2 = gTasks[taskId].data[2];
- if(data2 != 0) // why are you insiting on a non signed halfword?
- {
- m4aSongNumStop(gTasks[taskId].data[4]);
- m4aSongNumStart(gTasks[taskId].data[2]);
- gTasks[taskId].data[4] = data2;
- }
- else
- {
- m4aSongNumStop(gTasks[taskId].data[4]);
- gTasks[taskId].data[4] = data2;
- }
- }
- else if(gTasks[taskId].data[2] != 0) // _080BA4BA
- {
- m4aSongNumStart(gTasks[taskId].data[2]);
- gTasks[taskId].data[4] = gTasks[taskId].data[2];
- }
- }
- else // _080BA4D0
- {
- if(gTasks[taskId].data[3] != 0) // why not use data3?
- {
- if(gTasks[taskId].data[1] != 0)
- {
- m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP);
- m4aSongNumStart(gTasks[taskId].data[1] + BGM_STOP);
- gTasks[taskId].data[3] = gTasks[taskId].data[1];
- }
- else // _080BA500
- {
- m4aSongNumStop(gTasks[taskId].data[3] + BGM_STOP);
- gTasks[taskId].data[3] = gTasks[taskId].data[1];
- }
- }
- else if(gTasks[taskId].data[1] != 0) // _080BA514
- {
- 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]++;
- }
- else
- {
- gTasks[taskId].data[1] = gTasks[taskId].data[0];
- }
- return TRUE;
- }
- if(gMain.heldKeys & SELECT_BUTTON)
- {
- gUnknown_020387B0 = A_BUTTON;
- return FALSE;
- }
- else
- {
- gUnknown_020387B0 = (gMain.heldKeys & SELECT_BUTTON);
- return FALSE;
- }
- }
- }
- /*
- 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
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement