diff --git a/asm/high_scores.s b/asm/high_scores.s index f037c74..3550b72 100644 --- a/asm/high_scores.s +++ b/asm/high_scores.s @@ -4,240 +4,6 @@ .text - thumb_func_start sub_D9F8 -sub_D9F8: @ 0x0800D9F8 - push {lr} - bl sub_19B4 - bl sub_E908 - ldr r1, _0800DA18 @ =gUnknown_0201B124 - movs r0, #0 - strb r0, [r1] - bl sub_E464 - ldr r1, _0800DA1C @ =gMain - movs r0, #6 - strb r0, [r1, #3] - pop {r0} - bx r0 - .align 2, 0 -_0800DA18: .4byte gUnknown_0201B124 -_0800DA1C: .4byte gMain - - thumb_func_start sub_DA20 -sub_DA20: @ 0x0800DA20 - push {r4, r5, lr} - bl sub_E464 - ldr r4, _0800DA4C @ =gMain - ldrh r1, [r4, #0x18] - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _0800DA58 - movs r0, #0x66 - bl m4aSongNumStart - ldr r0, _0800DA50 @ =gUnknown_0201B178 - movs r1, #0 - strb r1, [r0] - ldr r0, _0800DA54 @ =gUnknown_0202BEBC - strb r1, [r0] - bl sub_2568 - movs r0, #3 - strb r0, [r4, #3] - b _0800DB2E - .align 2, 0 -_0800DA4C: .4byte gMain -_0800DA50: .4byte gUnknown_0201B178 -_0800DA54: .4byte gUnknown_0202BEBC -_0800DA58: - ldr r5, _0800DAB8 @ =gUnknown_0202ADD0 - ldr r0, _0800DABC @ =gUnknown_0202BEC8 - ldr r1, _0800DAC0 @ =gUnknown_0202C5F0 - ldr r2, _0800DAC4 @ =gUnknown_0201A4D0 - bl sub_1B04 - str r0, [r5] - ldr r1, _0800DAC8 @ =gUnknown_0202BDF0 - movs r3, #3 - ands r3, r0 - str r3, [r1] - ldr r2, _0800DACC @ =gUnknown_0201C1AC - movs r1, #0x1c - ands r1, r0 - lsrs r1, r1, #2 - strb r1, [r2] - ldr r2, _0800DAD0 @ =gUnknown_0202ADDC - movs r1, #0xe0 - lsls r1, r1, #4 - ands r1, r0 - lsrs r1, r1, #9 - strb r1, [r2] - movs r1, #0x40 - ands r1, r0 - cmp r1, #0 - beq _0800DB2E - cmp r3, #1 - bhi _0800DB2E - bl sub_E970 - ldr r0, [r5] - movs r1, #0x80 - lsls r1, r1, #1 - ands r0, r1 - cmp r0, #0 - bne _0800DAE8 - bl sub_E94C - lsls r0, r0, #0x10 - asrs r1, r0, #0x10 - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - bne _0800DAD4 - movs r0, #8 - strb r0, [r4, #3] - b _0800DAE8 - .align 2, 0 -_0800DAB8: .4byte gUnknown_0202ADD0 -_0800DABC: .4byte gUnknown_0202BEC8 -_0800DAC0: .4byte gUnknown_0202C5F0 -_0800DAC4: .4byte gUnknown_0201A4D0 -_0800DAC8: .4byte gUnknown_0202BDF0 -_0800DACC: .4byte gUnknown_0201C1AC -_0800DAD0: .4byte gUnknown_0202ADDC -_0800DAD4: - cmp r1, #1 - bne _0800DAE8 - ldr r0, _0800DB34 @ =gUnknown_0202BEBC - movs r1, #2 - strb r1, [r0] - movs r0, #7 - strb r0, [r4, #3] - movs r0, #0x8a - bl m4aSongNumStart -_0800DAE8: - ldr r1, _0800DB38 @ =gUnknown_0201A510 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - ldr r0, _0800DB3C @ =gUnknown_0202ADD0 - ldr r0, [r0] - movs r1, #0xfe - lsls r1, r1, #0xf - ands r0, r1 - cmp r0, #0 - beq _0800DB2E - ldr r0, _0800DB40 @ =gUnknown_0202ADE4 - movs r1, #0 - ldrsb r1, [r0, r1] - movs r0, #1 - rsbs r0, r0, #0 - cmp r1, r0 - bne _0800DB2E - ldr r1, _0800DB44 @ =gUnknown_0201A444 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0xb4 - ble _0800DB2E - ldr r1, _0800DB34 @ =gUnknown_0202BEBC - movs r0, #2 - strb r0, [r1] - ldr r1, _0800DB48 @ =gMain - movs r0, #7 - strb r0, [r1, #3] - movs r0, #0x8a - bl m4aSongNumStart -_0800DB2E: - pop {r4, r5} - pop {r0} - bx r0 - .align 2, 0 -_0800DB34: .4byte gUnknown_0202BEBC -_0800DB38: .4byte gUnknown_0201A510 -_0800DB3C: .4byte gUnknown_0202ADD0 -_0800DB40: .4byte gUnknown_0202ADE4 -_0800DB44: .4byte gUnknown_0201A444 -_0800DB48: .4byte gMain - - thumb_func_start sub_DB4C -sub_DB4C: @ 0x0800DB4C - ldr r1, _0800DB68 @ =gUnknown_0201A444 - ldrh r0, [r1] - adds r0, #1 - strh r0, [r1] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #2 - ble _0800DB66 - movs r0, #0 - strh r0, [r1] - ldr r1, _0800DB6C @ =gMain - movs r0, #5 - strb r0, [r1, #3] -_0800DB66: - bx lr - .align 2, 0 -_0800DB68: .4byte gUnknown_0201A444 -_0800DB6C: .4byte gMain - - thumb_func_start sub_DB70 -sub_DB70: @ 0x0800DB70 - push {r4, r5, r6, lr} - bl sub_E464 - ldr r1, _0800DBDC @ =gUnknown_02002858 - ldrh r0, [r1, #0x22] - adds r0, #1 - movs r2, #0 - strh r0, [r1, #0x22] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x5a - ble _0800DBD4 - movs r0, #0 - strh r0, [r1, #0x22] - ldr r0, _0800DBE0 @ =gUnknown_0201B178 - strb r2, [r0] - ldr r0, _0800DBE4 @ =gUnknown_0202BEBC - strb r2, [r0] - bl sub_2568 - bl sub_1AA4 - movs r1, #0 - ldr r6, _0800DBE8 @ =gUnknown_0202C550 - ldr r5, _0800DBEC @ =gUnknown_0202C610 -_0800DBA2: - lsls r0, r1, #1 - adds r4, r1, #1 - adds r0, r0, r1 - lsls r1, r0, #3 - lsls r0, r0, #6 - adds r3, r0, r5 - adds r1, r1, r6 - movs r2, #5 -_0800DBB2: - ldm r3!, {r0} - stm r1!, {r0} - subs r2, #1 - cmp r2, #0 - bge _0800DBB2 - adds r1, r4, #0 - cmp r1, #1 - ble _0800DBA2 - movs r4, #0 - bl sub_02B4 - bl m4aMPlayAllStop - bl sub_0D10 - ldr r0, _0800DBF0 @ =gMain - strb r4, [r0, #3] -_0800DBD4: - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_0800DBDC: .4byte gUnknown_02002858 -_0800DBE0: .4byte gUnknown_0201B178 -_0800DBE4: .4byte gUnknown_0202BEBC -_0800DBE8: .4byte gUnknown_0202C550 -_0800DBEC: .4byte gUnknown_0202C610 -_0800DBF0: .4byte gMain - thumb_func_start sub_DBF4 sub_DBF4: @ 0x0800DBF4 push {r4, r5, r6, r7, lr} diff --git a/include/functions.h b/include/functions.h index ca7a2c0..26d0b2e 100644 --- a/include/functions.h +++ b/include/functions.h @@ -130,7 +130,6 @@ extern void sub_D4B8(void); extern void sub_D664(void); extern void sub_D9F8(void); -extern void sub_DA20(void); //extern ? sub_DB4C(); //extern ? sub_DB70(); //extern ? sub_DBF4(); @@ -146,9 +145,9 @@ extern void sub_DA20(void); extern void sub_E3A8(void); extern void sub_E464(void); extern void sub_E860(void); -//extern ? sub_E908(); -//extern ? sub_E94C(); -//extern ? sub_E970(); +extern void sub_E908(void); +extern s16 sub_E94C(void); +extern void sub_E970(void); //extern ? sub_E994(); //extern ? sub_EAC0(); //extern ? sub_EBEC(); diff --git a/include/variables.h b/include/variables.h index fad2afa..ed0b370 100644 --- a/include/variables.h +++ b/include/variables.h @@ -197,6 +197,7 @@ extern struct Coord16 gUnknown_086A96C0[]; extern u16 gUnknown_02019C40[]; extern s16 gUnknown_0201A514; extern s16 gUnknown_0202ADE0; +extern s8 gUnknown_0202ADE4; extern s16 gUnknown_0202BEB8; extern s16 gUnknown_0202C5B0; diff --git a/src/high_scores.c b/src/high_scores.c index e7b239a..a261bcd 100644 --- a/src/high_scores.c +++ b/src/high_scores.c @@ -50,6 +50,7 @@ struct unkStruct_2002858 struct unkStruct_2002858 gUnknown_02002858; extern struct HighScoreEntry gUnknown_0202C610[2][NUM_HIGH_SCORES]; +extern struct HighScoreEntry gUnknown_0202C550[2]; extern u8 gUnknown_0809AFC0[]; extern u8 gUnknown_080947A0[]; extern u8 gUnknown_0809DDE0[]; @@ -582,7 +583,8 @@ void sub_D4B8(void) gMain.unk2E8[2].unk0 = gUnknown_02002882; } -void sub_D664(void) { +void sub_D664(void) +{ int i, j, k; sub_E3A8(); @@ -710,3 +712,93 @@ void sub_D664(void) { if (gUnknown_02002858.unk20 > 0) gUnknown_02002858.unk20--; } + +void sub_D9F8(void) +{ + sub_19B4(); + sub_E908(); + gUnknown_0201B124 = 0; + sub_E464(); + gMain.subState = 6; +} + +void sub_DA20(void) +{ + sub_E464(); + if (gMain.newKeys & B_BUTTON) + { + m4aSongNumStart(0x66); + gUnknown_0201B178 = 0; + gUnknown_0202BEBC = 0; + sub_2568(); + gMain.subState = 3; + } + else + { + gUnknown_0202ADD0 = sub_1B04(&gUnknown_0202BEC8, gUnknown_0202C5F0, gUnknown_0201A4D0); + gUnknown_0202BDF0 = gUnknown_0202ADD0 & 3; + gUnknown_0201C1AC = (gUnknown_0202ADD0 & 0x1c) >> 2; + gUnknown_0202ADDC = (gUnknown_0202ADD0 & 0xe00) >> 9; + if (((gUnknown_0202ADD0 & 0x40) != 0) && gUnknown_0202BDF0 < 2) + { + sub_E970(); + if ((gUnknown_0202ADD0 & 0x100) == 0) + { + s16 var0 = sub_E94C(); + if (var0 == -1) + { + gMain.subState = 8; + } + else if (var0 == 1) + { + gUnknown_0202BEBC = 2; + gMain.subState = 7; + m4aSongNumStart(0x8A); + } + } + + gUnknown_0201A510++; + if ((gUnknown_0202ADD0 & 0x7f0000) != 0 && gUnknown_0202ADE4 == -1 && ++gUnknown_0201A444 > 180) + { + gUnknown_0202BEBC = 2; + gMain.subState = 7; + m4aSongNumStart(0x8A); + } + } + } +} + +void sub_DB4C(void) +{ + if (++gUnknown_0201A444 > 2) + { + gUnknown_0201A444 = 0; + gMain.subState = 5; + } +} + +void sub_DB70(void) +{ + int i, j; + + sub_E464(); + if (++gUnknown_02002858.unk22 > 90) + { + gUnknown_02002858.unk22 = 0; + gUnknown_0201B178 = 0; + gUnknown_0202BEBC = 0; + sub_2568(); + sub_1AA4(); + for (i = 0; i < 2; i++) + { + for (j = 0; j < 6; j++) + { + gUnknown_0202C550[i].data.raw[j] = gUnknown_0202C610[i][0].data.raw[j]; + } + } + sub_02B4(); + m4aMPlayAllStop(); + sub_0D10(); + gMain.subState = 0; + } +}