diff --git a/asm/high_scores.s b/asm/high_scores.s index 473c9ec..641c1e3 100644 --- a/asm/high_scores.s +++ b/asm/high_scores.s @@ -4,610 +4,6 @@ .text - thumb_func_start sub_DEB4 -sub_DEB4: @ 0x0800DEB4 - push {r4, r5, r6, r7, lr} - mov r7, sl - mov r6, sb - mov r5, r8 - push {r5, r6, r7} - movs r2, #0 - ldr r0, _0800DF54 @ =gUnknown_02002858 - mov r8, r0 - ldr r0, _0800DF58 @ =gMain - mov ip, r0 - ldr r0, _0800DF5C @ =gUnknown_0202C610 - mov sl, r0 - movs r0, #0x74 - add r0, ip - mov sb, r0 -_0800DED2: - movs r1, #0 - lsls r0, r2, #1 - adds r7, r2, #1 - adds r0, r0, r2 - lsls r5, r0, #6 - adds r6, r5, #0 - adds r6, #0xe4 -_0800DEE0: - lsls r0, r1, #1 - adds r4, r1, #1 - adds r0, r0, r1 - lsls r0, r0, #3 - adds r1, r0, r6 - add r1, sb - adds r0, r0, r5 - mov r2, sl - adds r3, r0, r2 - movs r2, #5 -_0800DEF4: - ldm r1!, {r0} - stm r3!, {r0} - subs r2, #1 - cmp r2, #0 - bge _0800DEF4 - adds r1, r4, #0 - cmp r1, #7 - ble _0800DEE0 - adds r2, r7, #0 - cmp r2, #1 - ble _0800DED2 - movs r0, #0 - movs r1, #0 - mov r2, r8 - strh r0, [r2, #8] - strh r0, [r2, #0x1e] - strh r0, [r2, #0x1c] - strb r1, [r2, #0xb] - ldr r2, _0800DF60 @ =gUnknown_02002882 - strh r0, [r2] - movs r2, #1 - rsbs r2, r2, #0 - adds r0, r2, #0 - ldr r2, _0800DF64 @ =gUnknown_02002880 - strh r0, [r2] - mov r0, r8 - adds r0, #0x24 - strb r1, [r0] - mov r0, r8 - strb r1, [r0, #0xa] - ldr r2, _0800DF60 @ =gUnknown_02002882 - ldrh r1, [r2] - movs r0, #0xbd - lsls r0, r0, #2 - add r0, ip - strh r1, [r0] - ldrh r1, [r2] - movs r0, #0xbc - lsls r0, r0, #2 - add r0, ip - strh r1, [r0] - pop {r3, r4, r5} - mov r8, r3 - mov sb, r4 - mov sl, r5 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_0800DF54: .4byte gUnknown_02002858 -_0800DF58: .4byte gMain -_0800DF5C: .4byte gUnknown_0202C610 -_0800DF60: .4byte gUnknown_02002882 -_0800DF64: .4byte gUnknown_02002880 - - thumb_func_start sub_DF68 -sub_DF68: @ 0x0800DF68 - push {r4, r5, lr} - ldr r0, _0800DF80 @ =gUnknown_02002858 - ldrb r4, [r0, #0xa] - adds r5, r0, #0 - cmp r4, #1 - beq _0800DFE8 - cmp r4, #1 - bgt _0800DF88 - cmp r4, #0 - beq _0800DF94 - ldr r4, _0800DF84 @ =gMain - b _0800E072 - .align 2, 0 -_0800DF80: .4byte gUnknown_02002858 -_0800DF84: .4byte gMain -_0800DF88: - cmp r4, #2 - beq _0800E020 - ldr r4, _0800DF90 @ =gMain - b _0800E072 - .align 2, 0 -_0800DF90: .4byte gMain -_0800DF94: - ldrh r0, [r5, #0x1e] - adds r0, #1 - strh r0, [r5, #0x1e] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #8 - ble _0800DFC0 - strh r4, [r5, #0x1e] - movs r0, #0x1c - ldrsh r2, [r5, r0] - movs r0, #0 - movs r1, #0 - bl sub_F8B0 - ldrh r0, [r5, #0x1c] - adds r0, #1 - strh r0, [r5, #0x1c] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #2 - ble _0800DFC0 - strh r4, [r5, #0x1c] -_0800DFC0: - ldr r0, _0800DFE0 @ =gUnknown_02002858 - movs r1, #8 - ldrsh r2, [r0, r1] - movs r1, #0x96 - lsls r1, r1, #2 - adds r5, r0, #0 - ldr r4, _0800DFE4 @ =gMain - cmp r2, r1 - ble _0800E072 - movs r0, #0 - strh r0, [r5, #8] - strh r0, [r5, #0x1e] - strh r0, [r5, #0x1c] - movs r0, #1 - strb r0, [r5, #0xa] - b _0800E072 - .align 2, 0 -_0800DFE0: .4byte gUnknown_02002858 -_0800DFE4: .4byte gMain -_0800DFE8: - ldr r2, _0800E018 @ =gUnknown_02002882 - ldrh r0, [r2] - adds r0, #8 - strh r0, [r2] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xef - ble _0800E000 - movs r0, #0 - strh r0, [r5, #8] - movs r0, #2 - strb r0, [r5, #0xa] -_0800E000: - ldr r1, _0800E01C @ =gMain - ldrh r2, [r2] - movs r3, #0xbd - lsls r3, r3, #2 - adds r0, r1, r3 - strh r2, [r0] - subs r3, #4 - adds r0, r1, r3 - strh r2, [r0] - adds r4, r1, #0 - b _0800E072 - .align 2, 0 -_0800E018: .4byte gUnknown_02002882 -_0800E01C: .4byte gMain -_0800E020: - ldrh r0, [r5, #0x1e] - adds r0, #1 - movs r4, #0 - strh r0, [r5, #0x1e] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #8 - ble _0800E04E - strh r4, [r5, #0x1e] - movs r0, #0x1c - ldrsh r2, [r5, r0] - movs r0, #1 - movs r1, #0 - bl sub_F8B0 - ldrh r0, [r5, #0x1c] - adds r0, #1 - strh r0, [r5, #0x1c] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #2 - ble _0800E04E - strh r4, [r5, #0x1c] -_0800E04E: - ldr r0, _0800E0B0 @ =gUnknown_02002858 - movs r1, #8 - ldrsh r2, [r0, r1] - movs r1, #0x96 - lsls r1, r1, #2 - adds r5, r0, #0 - ldr r4, _0800E0B4 @ =gMain - cmp r2, r1 - ble _0800E072 - movs r1, #0 - movs r0, #0 - strh r0, [r5, #8] - adds r0, r5, #0 - adds r0, #0x24 - strb r1, [r0] - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] -_0800E072: - ldrh r0, [r5, #8] - adds r0, #1 - strh r0, [r5, #8] - ldr r1, _0800E0B8 @ =0x040000D4 - ldr r0, _0800E0BC @ =gUnknown_03005C00 - str r0, [r1] - movs r0, #0xc0 - lsls r0, r0, #0x13 - str r0, [r1, #4] - ldr r0, _0800E0C0 @ =0x80000800 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldrh r1, [r4, #0x18] - movs r0, #0xb - ands r0, r1 - cmp r0, #0 - beq _0800E0A8 - movs r0, #0x66 - bl m4aSongNumStart - adds r1, r5, #0 - adds r1, #0x24 - movs r0, #1 - strb r0, [r1] - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] -_0800E0A8: - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_0800E0B0: .4byte gUnknown_02002858 -_0800E0B4: .4byte gMain -_0800E0B8: .4byte 0x040000D4 -_0800E0BC: .4byte gUnknown_03005C00 -_0800E0C0: .4byte 0x80000800 - - thumb_func_start sub_E0C4 -sub_E0C4: @ 0x0800E0C4 - push {lr} - bl sub_02B4 - bl m4aMPlayAllStop - bl sub_0D10 - ldr r0, _0800E0E8 @ =gUnknown_02002858 - adds r0, #0x24 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - bl SetMainGameState - pop {r0} - bx r0 - .align 2, 0 -_0800E0E8: .4byte gUnknown_02002858 - - thumb_func_start sub_E0EC -sub_E0EC: @ 0x0800E0EC - push {r4, r5, r6, lr} - mov r6, r8 - push {r6} - bl ResetSomeGraphicsRelatedStuff - movs r2, #0x80 - lsls r2, r2, #0x13 - movs r1, #0x84 - lsls r1, r1, #5 - adds r0, r1, #0 - strh r0, [r2] - ldr r1, _0800E1CC @ =0x0400000C - ldr r3, _0800E1D0 @ =0x00004006 - adds r0, r3, #0 - strh r0, [r1] - ldrh r0, [r2] - movs r3, #0x80 - lsls r3, r3, #3 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _0800E1D4 @ =0x0400000E - ldr r3, _0800E1D8 @ =0x0000420F - adds r0, r3, #0 - strh r0, [r1] - ldrh r0, [r2] - movs r3, #0x80 - lsls r3, r3, #4 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r6, _0800E1DC @ =gMain - ldrh r0, [r2] - strh r0, [r6, #0x16] - ldr r4, _0800E1E0 @ =0x040000D4 - ldr r0, _0800E1E4 @ =gUnknown_0809DBE0 - str r0, [r4] - movs r0, #0xa0 - lsls r0, r0, #0x13 - str r0, [r4, #4] - ldr r0, _0800E1E8 @ =0x80000100 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800E1EC @ =gUnknown_080957A0 - str r0, [r4] - ldr r0, _0800E1F0 @ =0x06004000 - str r0, [r4, #4] - ldr r0, _0800E1F4 @ =0x80002400 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800E1F8 @ =gUnknown_0809AFC0 - str r0, [r4] - ldr r0, _0800E1FC @ =0x0600C000 - str r0, [r4, #4] - ldr r0, _0800E200 @ =0x80001600 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800E204 @ =gUnknown_080947A0 - str r0, [r4] - ldr r0, _0800E208 @ =gUnknown_03005C00 - mov r8, r0 - str r0, [r4, #4] - ldr r5, _0800E20C @ =0x80000800 - str r5, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800E210 @ =gUnknown_08099FC0 - str r0, [r4] - ldr r0, _0800E214 @ =0x06001000 - str r0, [r4, #4] - str r5, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800E218 @ =gUnknown_0809DDE0 - str r0, [r4] - ldr r0, _0800E21C @ =0x05000200 - str r0, [r4, #4] - ldr r0, _0800E220 @ =0x80000010 - str r0, [r4, #8] - ldr r0, [r4, #8] - ldr r0, _0800E224 @ =gUnknown_0809DFE0 - str r0, [r4] - ldr r0, _0800E228 @ =0x06010000 - str r0, [r4, #4] - ldr r0, _0800E22C @ =0x80002210 - str r0, [r4, #8] - ldr r0, [r4, #8] - bl sub_DEB4 - bl sub_EE64 - mov r1, r8 - str r1, [r4] - movs r0, #0xc0 - lsls r0, r0, #0x13 - str r0, [r4, #4] - str r5, [r4, #8] - ldr r0, [r4, #8] - movs r0, #9 - bl m4aSongNumStart - bl sub_0CBC - bl sub_024C - ldrb r0, [r6, #3] - adds r0, #1 - strb r0, [r6, #3] - pop {r3} - mov r8, r3 - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_0800E1CC: .4byte 0x0400000C -_0800E1D0: .4byte 0x00004006 -_0800E1D4: .4byte 0x0400000E -_0800E1D8: .4byte 0x0000420F -_0800E1DC: .4byte gMain -_0800E1E0: .4byte 0x040000D4 -_0800E1E4: .4byte gUnknown_0809DBE0 -_0800E1E8: .4byte 0x80000100 -_0800E1EC: .4byte gUnknown_080957A0 -_0800E1F0: .4byte 0x06004000 -_0800E1F4: .4byte 0x80002400 -_0800E1F8: .4byte gUnknown_0809AFC0 -_0800E1FC: .4byte 0x0600C000 -_0800E200: .4byte 0x80001600 -_0800E204: .4byte gUnknown_080947A0 -_0800E208: .4byte gUnknown_03005C00 -_0800E20C: .4byte 0x80000800 -_0800E210: .4byte gUnknown_08099FC0 -_0800E214: .4byte 0x06001000 -_0800E218: .4byte gUnknown_0809DDE0 -_0800E21C: .4byte 0x05000200 -_0800E220: .4byte 0x80000010 -_0800E224: .4byte gUnknown_0809DFE0 -_0800E228: .4byte 0x06010000 -_0800E22C: .4byte 0x80002210 - - thumb_func_start sub_E230 -sub_E230: @ 0x0800E230 - push {r4, r5, lr} - ldr r0, _0800E248 @ =gUnknown_02002858 - ldrb r4, [r0, #0xa] - adds r5, r0, #0 - cmp r4, #1 - beq _0800E2BC - cmp r4, #1 - bgt _0800E250 - cmp r4, #0 - beq _0800E25C - ldr r4, _0800E24C @ =gMain - b _0800E344 - .align 2, 0 -_0800E248: .4byte gUnknown_02002858 -_0800E24C: .4byte gMain -_0800E250: - cmp r4, #2 - beq _0800E2F4 - ldr r4, _0800E258 @ =gMain - b _0800E344 - .align 2, 0 -_0800E258: .4byte gMain -_0800E25C: - ldr r0, _0800E2B0 @ =gUnknown_0202BED8 - ldr r1, [r0] - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - beq _0800E292 - ldrh r0, [r5, #0x1e] - adds r0, #1 - strh r0, [r5, #0x1e] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #8 - ble _0800E292 - strh r4, [r5, #0x1e] - movs r0, #0x1c - ldrsh r2, [r5, r0] - movs r0, #0 - bl sub_F8B0 - ldrh r0, [r5, #0x1c] - adds r0, #1 - strh r0, [r5, #0x1c] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #2 - ble _0800E292 - strh r4, [r5, #0x1c] -_0800E292: - ldr r0, _0800E2B4 @ =gUnknown_02002858 - movs r2, #8 - ldrsh r1, [r0, r2] - adds r5, r0, #0 - ldr r4, _0800E2B8 @ =gMain - cmp r1, #0x78 - ble _0800E344 - movs r0, #0 - strh r0, [r5, #8] - strh r0, [r5, #0x1e] - strh r0, [r5, #0x1c] - movs r0, #1 - strb r0, [r5, #0xa] - b _0800E344 - .align 2, 0 -_0800E2B0: .4byte gUnknown_0202BED8 -_0800E2B4: .4byte gUnknown_02002858 -_0800E2B8: .4byte gMain -_0800E2BC: - ldr r2, _0800E2EC @ =gUnknown_02002882 - ldrh r0, [r2] - adds r0, #8 - strh r0, [r2] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xef - ble _0800E2D4 - movs r0, #0 - strh r0, [r5, #8] - movs r0, #2 - strb r0, [r5, #0xa] -_0800E2D4: - ldr r1, _0800E2F0 @ =gMain - ldrh r2, [r2] - movs r3, #0xbd - lsls r3, r3, #2 - adds r0, r1, r3 - strh r2, [r0] - subs r3, #4 - adds r0, r1, r3 - strh r2, [r0] - adds r4, r1, #0 - b _0800E344 - .align 2, 0 -_0800E2EC: .4byte gUnknown_02002882 -_0800E2F0: .4byte gMain -_0800E2F4: - ldr r0, _0800E378 @ =gUnknown_0201B170 - ldr r1, [r0] - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - beq _0800E32C - ldrh r0, [r5, #0x1e] - adds r0, #1 - movs r4, #0 - strh r0, [r5, #0x1e] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #8 - ble _0800E32C - strh r4, [r5, #0x1e] - movs r0, #0x1c - ldrsh r2, [r5, r0] - movs r0, #1 - bl sub_F8B0 - ldrh r0, [r5, #0x1c] - adds r0, #1 - strh r0, [r5, #0x1c] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #2 - ble _0800E32C - strh r4, [r5, #0x1c] -_0800E32C: - ldr r0, _0800E37C @ =gUnknown_02002858 - movs r2, #8 - ldrsh r1, [r0, r2] - adds r5, r0, #0 - ldr r4, _0800E380 @ =gMain - cmp r1, #0x78 - ble _0800E344 - movs r0, #0 - strh r0, [r5, #8] - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] -_0800E344: - ldrh r0, [r5, #8] - adds r0, #1 - strh r0, [r5, #8] - ldr r1, _0800E384 @ =0x040000D4 - ldr r0, _0800E388 @ =gUnknown_03005C00 - str r0, [r1] - movs r0, #0xc0 - lsls r0, r0, #0x13 - str r0, [r1, #4] - ldr r0, _0800E38C @ =0x80000800 - str r0, [r1, #8] - ldr r0, [r1, #8] - ldrh r1, [r4, #0x18] - movs r0, #0xb - ands r0, r1 - cmp r0, #0 - beq _0800E372 - movs r0, #0x66 - bl m4aSongNumStart - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] -_0800E372: - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_0800E378: .4byte gUnknown_0201B170 -_0800E37C: .4byte gUnknown_02002858 -_0800E380: .4byte gMain -_0800E384: .4byte 0x040000D4 -_0800E388: .4byte gUnknown_03005C00 -_0800E38C: .4byte 0x80000800 - - thumb_func_start sub_E390 -sub_E390: @ 0x0800E390 - push {lr} - bl sub_02B4 - bl m4aMPlayAllStop - bl sub_0D10 - movs r0, #8 - bl SetMainGameState - pop {r0} - bx r0 - thumb_func_start sub_E3A8 sub_E3A8: @ 0x0800E3A8 push {r4, r5, r6, r7, lr} diff --git a/include/functions.h b/include/functions.h index ceedbb4..3cd673d 100644 --- a/include/functions.h +++ b/include/functions.h @@ -137,7 +137,6 @@ extern void sub_D9F8(void); //extern ? sub_DD4C(); //extern ? sub_DD70(); extern void sub_DEB4(void); -//extern ? sub_DF68(); //extern ? sub_E0C4(); //extern ? sub_E0EC(); //extern ? sub_E230(); diff --git a/src/high_scores.c b/src/high_scores.c index 67cfb99..c1e0b95 100644 --- a/src/high_scores.c +++ b/src/high_scores.c @@ -28,7 +28,7 @@ struct unkStruct_2002858 { u32 unk0; u32 unk4; - u8 fill8[2]; + s16 unk8; u8 unkA; u8 unkB; s32 unkC; @@ -42,7 +42,7 @@ struct unkStruct_2002858 s16 unk1E; s16 unk20; s16 unk22; - u8 unk24; + s8 unk24; u8 unk25; u8 unk26; }; @@ -900,3 +900,191 @@ void sub_DD70(void) sub_024C(); gMain.subState++; } + +void sub_DEB4(void) +{ + int i, j, k; + + for (i = 0; i < 2; i++) + { + for (j = 0; j < NUM_HIGH_SCORES; j++) + { + for (k = 0; k < 6; k++) + { + gUnknown_0202C610[i][j].data.raw[k] = gMain_saveData.highScores[i][j].data.raw[k]; + } + } + } + + gUnknown_02002858.unk8 = 0; + gUnknown_02002858.unk1E = 0; + gUnknown_02002858.unk1C = 0; + gUnknown_02002858.unkB = 0; + gUnknown_02002882 = 0; + gUnknown_02002880 = -1; + gUnknown_02002858.unk24 = 0; + gUnknown_02002858.unkA = 0; + gMain.unk2E8[3].unk0 = gUnknown_02002882; + gMain.unk2E8[2].unk0 = gUnknown_02002882; +} + +void sub_DF68(void) +{ + switch (gUnknown_02002858.unkA) + { + case 0: + if (++gUnknown_02002858.unk1E > 8) + { + gUnknown_02002858.unk1E = 0; + sub_F8B0(0, 0, gUnknown_02002858.unk1C); + if (++gUnknown_02002858.unk1C > 2) + gUnknown_02002858.unk1C = 0; + } + if (gUnknown_02002858.unk8 > 600) + { + gUnknown_02002858.unk8 = 0; + gUnknown_02002858.unk1E = 0; + gUnknown_02002858.unk1C = 0; + gUnknown_02002858.unkA = 1; + } + break; + case 1: + gUnknown_02002882 += 8; + if (gUnknown_02002882 >= 240) + { + gUnknown_02002858.unk8 = 0; + gUnknown_02002858.unkA = 2; + } + gMain.unk2E8[3].unk0 = gUnknown_02002882; + gMain.unk2E8[2].unk0 = gUnknown_02002882; + break; + case 2: + if (++gUnknown_02002858.unk1E > 8) + { + gUnknown_02002858.unk1E = 0; + sub_F8B0(1, 0, gUnknown_02002858.unk1C); + if (++gUnknown_02002858.unk1C > 2) + gUnknown_02002858.unk1C = 0; + } + if (gUnknown_02002858.unk8 > 600) + { + gUnknown_02002858.unk8 = 0; + gUnknown_02002858.unk24 = 0; + gMain.subState++; + } + break; + } + + gUnknown_02002858.unk8++; + DmaCopy16(3, gUnknown_03005C00, 0x6000000, 0x1000); + + if (gMain.newKeys & (START_BUTTON | A_BUTTON | B_BUTTON)) + { + m4aSongNumStart(0x66); + gUnknown_02002858.unk24 = 1; + gMain.subState++; + } +} + +void sub_E0C4(void) +{ + sub_02B4(); + m4aMPlayAllStop(); + sub_0D10(); + SetMainGameState(gUnknown_02002858.unk24); +} + +void sub_E0EC(void) +{ + ResetSomeGraphicsRelatedStuff(); + REG_DISPCNT = DISPCNT_OBJ_ON | DISPCNT_FORCED_BLANK; + REG_BG2CNT = 0x4006; + REG_DISPCNT |= DISPCNT_BG2_ON; + REG_BG3CNT = 0x420f; + REG_DISPCNT |= DISPCNT_BG3_ON; + gMain.unk16 = REG_DISPCNT; + DmaCopy16(3, gUnknown_0809DBE0, (void*) PLTT, 0x200); + DmaCopy16(3, gUnknown_080957A0, (void*) BG_VRAM + 0x4000, 0x4800); + DmaCopy16(3, gUnknown_0809AFC0, (void *)BG_VRAM + 0xC000, 0x2C00); + DmaCopy16(3, gUnknown_080947A0, gUnknown_03005C00, 0x1000); + DmaCopy16(3, gUnknown_08099FC0, (void *)BG_SCREEN_ADDR(2), 0x1000); + DmaCopy16(3, gUnknown_0809DDE0, (void *)OBJ_PLTT, 0x20); + DmaCopy16(3, gUnknown_0809DFE0, (void *)OBJ_VRAM0, 0x4420); + sub_DEB4(); + sub_EE64(); + DmaCopy16(3, gUnknown_03005C00,0x6000000, 0x1000); + m4aSongNumStart(0x9); + sub_0CBC(); + sub_024C(); + gMain.subState++; +} + +void sub_E230(void) +{ + switch (gUnknown_02002858.unkA) + { + case 0: + if (gUnknown_0202BED8 != -1) + { + if (++gUnknown_02002858.unk1E > 8) + { + gUnknown_02002858.unk1E = 0; + sub_F8B0(0, gUnknown_0202BED8, gUnknown_02002858.unk1C); + if (++gUnknown_02002858.unk1C > 2) + gUnknown_02002858.unk1C = 0; + } + } + if (gUnknown_02002858.unk8 > 120) + { + gUnknown_02002858.unk8 = 0; + gUnknown_02002858.unk1E = 0; + gUnknown_02002858.unk1C = 0; + gUnknown_02002858.unkA = 1; + } + break; + case 1: + gUnknown_02002882 += 8; + if (gUnknown_02002882 >= 240) + { + gUnknown_02002858.unk8 = 0; + gUnknown_02002858.unkA = 2; + } + gMain.unk2E8[3].unk0 = gUnknown_02002882; + gMain.unk2E8[2].unk0 = gUnknown_02002882; + break; + case 2: + if (gUnknown_0201B170 != -1) + { + if (++gUnknown_02002858.unk1E > 8) + { + gUnknown_02002858.unk1E = 0; + sub_F8B0(1, gUnknown_0201B170, gUnknown_02002858.unk1C); + if (++gUnknown_02002858.unk1C > 2) + gUnknown_02002858.unk1C = 0; + } + } + if (gUnknown_02002858.unk8 > 120) + { + gUnknown_02002858.unk8 = 0; + gMain.subState++; + } + break; + } + + gUnknown_02002858.unk8++; + DmaCopy16(3, gUnknown_03005C00, 0x6000000, 0x1000); + + if (gMain.newKeys & (START_BUTTON | A_BUTTON | B_BUTTON)) + { + m4aSongNumStart(0x66); + gMain.subState++; + } +} + +void sub_E390(void) +{ + sub_02B4(); + m4aMPlayAllStop(); + sub_0D10(); + SetMainGameState(8); +}