diff options
author | Cameron Hall <cameronghall@cox.net> | 2019-08-11 13:11:32 -0500 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2019-08-11 13:11:32 -0500 |
commit | b0870ee7fbf34fe4fa8bf6a622a3c46aa326f1fb (patch) | |
tree | d460bab4119ca6326b0e71787c63794b52835fbd | |
parent | 4c8669a3aad601f1381ca9c67c78040ce80157df (diff) |
decompile through sub_51C3C
-rwxr-xr-x | .gitignore | 2 | ||||
-rwxr-xr-x | asm/options.s | 1257 | ||||
-rw-r--r-- | include/functions.h | 14 | ||||
-rwxr-xr-x | include/main.h | 7 | ||||
-rw-r--r-- | include/variables.h | 3 | ||||
-rwxr-xr-x | ld_script.txt | 1 | ||||
-rwxr-xr-x | src/gbplayer.c | 3 | ||||
-rw-r--r-- | src/options.c | 501 |
8 files changed, 517 insertions, 1271 deletions
@@ -29,4 +29,4 @@ build/ *.ddump baserom.* *.swp - +*.swo diff --git a/asm/options.s b/asm/options.s index 438dee1..d2938b9 100755 --- a/asm/options.s +++ b/asm/options.s @@ -4,1263 +4,6 @@ .text - thumb_func_start OptionsMain -OptionsMain: @ 0x08051220 - push {lr} - ldr r1, _08051238 @ =gUnknown_08527F08 - ldr r0, _0805123C @ =gMain - ldrb r0, [r0, #3] - lsls r0, r0, #2 - adds r0, r0, r1 - ldr r0, [r0] - bl _call_via_r0 - pop {r0} - bx r0 - .align 2, 0 -_08051238: .4byte gUnknown_08527F08 -_0805123C: .4byte gMain - - thumb_func_start sub_51240 -sub_51240: @ 0x08051240 - push {r4, r5, r6, r7, lr} - mov r7, sb - mov r6, r8 - push {r6, r7} - sub sp, #4 - bl sub_438 - movs r2, #0x80 - lsls r2, r2, #0x13 - movs r1, #0x84 - lsls r1, r1, #5 - adds r0, r1, #0 - strh r0, [r2] - ldr r1, _08051358 @ =0x04000008 - movs r0, #4 - strh r0, [r1] - ldrh r0, [r2] - movs r3, #0x80 - lsls r3, r3, #1 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r1, _0805135C @ =0x0400000A - adds r3, #9 - adds r0, r3, #0 - strh r0, [r1] - ldrh r0, [r2] - adds r3, #0xf7 - adds r1, r3, #0 - orrs r0, r1 - strh r0, [r2] - ldr r0, _08051360 @ =gMain - mov sb, r0 - ldrh r0, [r2] - mov r1, sb - strh r0, [r1, #0x16] - ldr r5, _08051364 @ =0x040000D4 - ldr r0, _08051368 @ =gUnknown_0852B468 - str r0, [r5] - movs r0, #0xa0 - lsls r0, r0, #0x13 - str r0, [r5, #4] - ldr r0, _0805136C @ =0x80000100 - str r0, [r5, #8] - ldr r0, [r5, #8] - ldr r0, _08051370 @ =gUnknown_08528828 - str r0, [r5] - ldr r0, _08051374 @ =0x06004000 - str r0, [r5, #4] - ldr r0, _08051378 @ =0x80000C00 - str r0, [r5, #8] - ldr r0, [r5, #8] - ldr r0, _0805137C @ =gUnknown_0852A848 - str r0, [r5] - ldr r0, _08051380 @ =0x06008000 - str r0, [r5, #4] - ldr r0, _08051384 @ =0x80000600 - str r0, [r5, #8] - ldr r0, [r5, #8] - ldr r0, _08051388 @ =gUnknown_08528028 - str r0, [r5] - ldr r7, _0805138C @ =gUnknown_03005C00 - str r7, [r5, #4] - ldr r6, _08051390 @ =0x80000400 - str r6, [r5, #8] - ldr r0, [r5, #8] - str r7, [r5] - movs r3, #0xc0 - lsls r3, r3, #0x13 - mov r8, r3 - str r3, [r5, #4] - str r6, [r5, #8] - ldr r0, [r5, #8] - ldr r0, _08051394 @ =gGameBoyPlayerEnabled - ldr r0, [r0] - cmp r0, #1 - beq _080512F8 - movs r4, #2 - str r4, [sp] - movs r0, #0x12 - movs r1, #4 - movs r2, #2 - movs r3, #1 - bl sub_1068C - str r4, [sp] - movs r0, #0x12 - movs r1, #5 - movs r2, #3 - movs r3, #2 - bl sub_1068C -_080512F8: - str r7, [r5] - mov r0, r8 - str r0, [r5, #4] - str r6, [r5, #8] - ldr r0, [r5, #8] - ldr r0, _08051398 @ =gUnknown_0852A048 - str r0, [r5] - ldr r0, _0805139C @ =0x06000800 - str r0, [r5, #4] - str r6, [r5, #8] - ldr r0, [r5, #8] - ldr r0, _080513A0 @ =gGBAButtonIcons_Pals - str r0, [r5] - ldr r0, _080513A4 @ =0x05000200 - str r0, [r5, #4] - ldr r0, _080513A8 @ =0x80000030 - str r0, [r5, #8] - ldr r0, [r5, #8] - ldr r0, _080513AC @ =gOptionsSprites_Gfx - str r0, [r5] - ldr r0, _080513B0 @ =0x06010000 - str r0, [r5, #4] - ldr r0, _080513B4 @ =0x80001010 - str r0, [r5, #8] - ldr r0, [r5, #8] - bl sub_513B8 - bl sub_51C9C - bl m4aMPlayAllStop - bl sub_CBC - bl sub_24C - bl sub_10C0 - mov r1, sb - ldrb r0, [r1, #3] - adds r0, #1 - strb r0, [r1, #3] - add sp, #4 - pop {r3, r4} - mov r8, r3 - mov sb, r4 - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - .align 2, 0 -_08051358: .4byte 0x04000008 -_0805135C: .4byte 0x0400000A -_08051360: .4byte gMain -_08051364: .4byte 0x040000D4 -_08051368: .4byte gUnknown_0852B468 -_0805136C: .4byte 0x80000100 -_08051370: .4byte gUnknown_08528828 -_08051374: .4byte 0x06004000 -_08051378: .4byte 0x80000C00 -_0805137C: .4byte gUnknown_0852A848 -_08051380: .4byte 0x06008000 -_08051384: .4byte 0x80000600 -_08051388: .4byte gUnknown_08528028 -_0805138C: .4byte gUnknown_03005C00 -_08051390: .4byte 0x80000400 -_08051394: .4byte gGameBoyPlayerEnabled -_08051398: .4byte gUnknown_0852A048 -_0805139C: .4byte 0x06000800 -_080513A0: .4byte gGBAButtonIcons_Pals -_080513A4: .4byte 0x05000200 -_080513A8: .4byte 0x80000030 -_080513AC: .4byte gOptionsSprites_Gfx -_080513B0: .4byte 0x06010000 -_080513B4: .4byte 0x80001010 - - thumb_func_start sub_513B8 -sub_513B8: @ 0x080513B8 - push {r4, r5, r6, lr} - ldr r0, _08051468 @ =gUnknown_02002920 - mov ip, r0 - movs r2, #0 - movs r1, #0 - strh r1, [r0] - strh r1, [r0, #2] - strh r1, [r0, #4] - movs r3, #1 - movs r0, #1 - mov r4, ip - strh r0, [r4, #6] - strh r1, [r4, #8] - strh r1, [r4, #0xa] - ldr r0, _0805146C @ =gMain+0x74 - adds r0, #0xcf - ldrb r0, [r0] - strh r0, [r4, #0xc] - strh r1, [r4, #0xe] - strh r1, [r4, #0x10] - strb r2, [r4, #0x12] - strb r2, [r4, #0x13] - strb r3, [r4, #0x14] - strb r2, [r4, #0x15] - strb r2, [r4, #0x16] - strb r3, [r4, #0x17] - strh r1, [r4, #0x18] - mov r2, ip - movs r3, #0 - movs r1, #5 - adds r0, r2, #0 - adds r0, #0x1f -_080513F8: - strb r3, [r0] - subs r0, #1 - subs r1, #1 - cmp r1, #0 - bge _080513F8 - movs r0, #0 - strh r0, [r2, #0x20] - strh r0, [r2, #0x22] - movs r3, #0xa - movs r1, #1 - adds r0, r2, #0 - adds r0, #0x26 -_08051410: - strh r3, [r0] - subs r0, #2 - subs r1, #1 - cmp r1, #0 - bge _08051410 - movs r0, #0 - strh r0, [r2, #0x28] - movs r1, #0 - ldr r6, _08051470 @ =gUnknown_02031AF0 - ldr r5, _08051474 @ =gUnknown_08527ED6 -_08051424: - adds r4, r1, #1 - lsls r0, r1, #2 - adds r0, r0, r1 - lsls r0, r0, #1 - adds r2, r0, r5 - adds r1, r0, r6 - movs r3, #9 -_08051432: - ldrb r0, [r2] - strb r0, [r1] - adds r2, #1 - adds r1, #1 - subs r3, #1 - cmp r3, #0 - bge _08051432 - adds r1, r4, #0 - cmp r1, #3 - ble _08051424 - bl sub_52528 - ldr r0, _08051478 @ =gGameBoyPlayerEnabled - ldr r4, [r0] - cmp r4, #1 - bne _0805147C - ldr r3, _08051468 @ =gUnknown_02002920 - ldr r0, _0805146C @ =gMain+0x74 - adds r0, #0xcd - ldrb r1, [r0] - adds r2, r3, #0 - adds r2, #0x2a - strb r1, [r2] - strb r4, [r0] - adds r2, r3, #0 - b _0805148C - .align 2, 0 -_08051468: .4byte gUnknown_02002920 -_0805146C: .4byte gMain+0x74 -_08051470: .4byte gUnknown_02031AF0 -_08051474: .4byte gUnknown_08527ED6 -_08051478: .4byte gGameBoyPlayerEnabled -_0805147C: - ldr r2, _080514B0 @ =gUnknown_02002920 - adds r0, r2, #0 - adds r0, #0x2a - movs r1, #0 - strb r1, [r0] - ldr r0, _080514B4 @ =gMain+0x74 - adds r0, #0xcd - strb r1, [r0] -_0805148C: - adds r1, r2, #0 - adds r1, #0x2e - movs r0, #0 - strb r0, [r1] - subs r1, #3 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r1, #2 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - pop {r4, r5, r6} - pop {r0} - bx r0 - .align 2, 0 -_080514B0: .4byte gUnknown_02002920 -_080514B4: .4byte gMain+0x74 - - thumb_func_start sub_514B8 -sub_514B8: @ 0x080514B8 - push {r4, r5, r6, r7, lr} - bl sub_51C9C - ldr r0, _080514D4 @ =gUnknown_02002920 - movs r1, #0 - ldrsh r0, [r0, r1] - cmp r0, #4 - bls _080514CA - b _08051B98 -_080514CA: - lsls r0, r0, #2 - ldr r1, _080514D8 @ =_080514DC - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080514D4: .4byte gUnknown_02002920 -_080514D8: .4byte _080514DC -_080514DC: @ jump table - .4byte _080514F0 @ case 0 - .4byte _080517A8 @ case 1 - .4byte _080518D4 @ case 2 - .4byte _08051A08 @ case 3 - .4byte _08051AB8 @ case 4 -_080514F0: - ldr r0, _08051514 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _0805152C - ldr r4, _08051518 @ =gUnknown_02002920 - movs r2, #0xa - ldrsh r0, [r4, r2] - cmp r0, #0xd - beq _0805156C - cmp r0, #0xe - bne _0805151C - movs r0, #0x67 - bl m4aSongNumStart - movs r0, #0xd - b _0805156A - .align 2, 0 -_08051514: .4byte gMain -_08051518: .4byte gUnknown_02002920 -_0805151C: - cmp r0, #0 - ble _0805156C - movs r0, #0x67 - bl m4aSongNumStart - ldrh r0, [r4, #0xa] - subs r0, #1 - b _0805156A -_0805152C: - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0805156C - ldr r4, _0805154C @ =gUnknown_02002920 - movs r3, #0xa - ldrsh r0, [r4, r3] - cmp r0, #5 - bgt _08051550 - movs r0, #0x67 - bl m4aSongNumStart - ldrh r0, [r4, #0xa] - adds r0, #1 - b _0805156A - .align 2, 0 -_0805154C: .4byte gUnknown_02002920 -_08051550: - cmp r0, #0xd - bne _0805155E - movs r0, #0x67 - bl m4aSongNumStart - movs r0, #0xe - b _0805156A -_0805155E: - cmp r0, #0xe - bne _0805156C - movs r0, #0x67 - bl m4aSongNumStart - movs r0, #2 -_0805156A: - strh r0, [r4, #0xa] -_0805156C: - ldr r0, _080515E8 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #0x10 - ands r0, r1 - cmp r0, #0 - beq _08051594 - ldr r0, _080515EC @ =gGameBoyPlayerEnabled - ldr r0, [r0] - cmp r0, #1 - bne _08051594 - ldr r4, _080515F0 @ =gUnknown_02002920 - ldrh r0, [r4, #0xa] - cmp r0, #1 - bhi _08051594 - movs r0, #0x67 - bl m4aSongNumStart - ldrh r0, [r4, #0xa] - adds r0, #0xd - strh r0, [r4, #0xa] -_08051594: - ldr r0, _080515E8 @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #0x20 - ands r0, r1 - cmp r0, #0 - beq _080515C2 - ldr r0, _080515EC @ =gGameBoyPlayerEnabled - ldr r0, [r0] - cmp r0, #1 - bne _080515C2 - ldr r4, _080515F0 @ =gUnknown_02002920 - ldrh r0, [r4, #0xa] - subs r0, #0xd - lsls r0, r0, #0x10 - lsrs r0, r0, #0x10 - cmp r0, #1 - bhi _080515C2 - movs r0, #0x67 - bl m4aSongNumStart - ldrh r0, [r4, #0xa] - subs r0, #0xd - strh r0, [r4, #0xa] -_080515C2: - ldr r4, _080515E8 @ =gMain - ldrh r1, [r4, #0x18] - movs r0, #1 - ands r0, r1 - cmp r0, #0 - bne _080515D0 - b _0805177C -_080515D0: - ldr r0, _080515F0 @ =gUnknown_02002920 - movs r6, #0xa - ldrsh r0, [r0, r6] - cmp r0, #0xe - bls _080515DC - b _08051A96 -_080515DC: - lsls r0, r0, #2 - ldr r1, _080515F4 @ =_080515F8 - adds r0, r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080515E8: .4byte gMain -_080515EC: .4byte gGameBoyPlayerEnabled -_080515F0: .4byte gUnknown_02002920 -_080515F4: .4byte _080515F8 -_080515F8: @ jump table - .4byte _08051634 @ case 0 - .4byte _08051674 @ case 1 - .4byte _080516B0 @ case 2 - .4byte _080516B0 @ case 3 - .4byte _080516B0 @ case 4 - .4byte _080516B0 @ case 5 - .4byte _080516D0 @ case 6 - .4byte _08051A96 @ case 7 - .4byte _08051A96 @ case 8 - .4byte _08051A96 @ case 9 - .4byte _08051A96 @ case 10 - .4byte _08051A96 @ case 11 - .4byte _08051A96 @ case 12 - .4byte _08051738 @ case 13 - .4byte _080516F8 @ case 14 -_08051634: - movs r0, #0x65 - bl m4aSongNumStart - ldr r3, _08051670 @ =gUnknown_02002920 - movs r4, #0 - movs r1, #0 - movs r2, #1 - movs r0, #1 - strh r0, [r3] - strh r1, [r3, #0x18] - adds r0, r3, #0 - adds r0, #0x30 - strb r2, [r0] - adds r1, r3, #0 - adds r1, #0x2e - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #1 - beq _0805165C - b _08051A96 -_0805165C: - adds r0, r3, #0 - adds r0, #0x2b - strb r4, [r0] - adds r0, #2 - strb r4, [r0] - subs r0, #1 - strb r4, [r0] - strb r4, [r1] - b _08051A96 - .align 2, 0 -_08051670: .4byte gUnknown_02002920 -_08051674: - movs r0, #0x65 - bl m4aSongNumStart - ldr r2, _080516AC @ =gUnknown_02002920 - movs r3, #0 - movs r1, #0 - movs r0, #2 - strh r0, [r2] - strh r1, [r2, #0x18] - adds r1, r2, #0 - adds r1, #0x30 - movs r0, #1 - strb r0, [r1] - subs r1, #2 - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #1 - beq _0805169A - b _08051A96 -_0805169A: - adds r0, r2, #0 - adds r0, #0x2b - strb r3, [r0] - adds r0, #2 - strb r3, [r0] - subs r0, #1 - strb r3, [r0] - strb r3, [r1] - b _08051A96 - .align 2, 0 -_080516AC: .4byte gUnknown_02002920 -_080516B0: - movs r0, #0x65 - bl m4aSongNumStart - ldr r0, _080516C8 @ =gUnknown_02002920 - ldrh r1, [r0, #0xa] - subs r1, #2 - strh r1, [r0, #0xc] - ldr r0, _080516CC @ =gMain+0x74 - adds r0, #0xcf - strb r1, [r0] - b _08051A96 - .align 2, 0 -_080516C8: .4byte gUnknown_02002920 -_080516CC: .4byte gMain+0x74 -_080516D0: - movs r0, #0x65 - bl m4aSongNumStart - ldr r2, _080516F0 @ =gUnknown_02002920 - ldrh r1, [r2, #0xa] - subs r1, #2 - strh r1, [r2, #0xc] - ldr r0, _080516F4 @ =gMain+0x74 - adds r0, #0xcf - strb r1, [r0] - movs r0, #7 - strh r0, [r2, #0xa] - movs r0, #3 - strh r0, [r2] - b _08051A96 - .align 2, 0 -_080516F0: .4byte gUnknown_02002920 -_080516F4: .4byte gMain+0x74 -_080516F8: - ldr r0, _08051730 @ =gGameBoyPlayerEnabled - ldr r0, [r0] - cmp r0, #1 - beq _08051702 - b _08051A96 -_08051702: - movs r0, #0x65 - bl m4aSongNumStart - ldr r1, _08051734 @ =gUnknown_02002920 - adds r0, r1, #0 - adds r0, #0x2d - movs r2, #0 - strb r2, [r0] - adds r3, r1, #0 - adds r3, #0x2e - movs r0, #0 - ldrsb r0, [r3, r0] - cmp r0, #1 - bne _08051720 - strb r2, [r3] -_08051720: - adds r0, r1, #0 - adds r0, #0x2b - strb r2, [r0] - adds r0, #1 - strb r2, [r0] - subs r0, #2 - strb r2, [r0] - b _08051A96 - .align 2, 0 -_08051730: .4byte gGameBoyPlayerEnabled -_08051734: .4byte gUnknown_02002920 -_08051738: - ldr r0, _08051774 @ =gGameBoyPlayerEnabled - ldr r4, [r0] - cmp r4, #1 - beq _08051742 - b _08051A96 -_08051742: - movs r0, #0x65 - bl m4aSongNumStart - movs r0, #0xb - bl sub_11B0 - ldr r2, _08051778 @ =gUnknown_02002920 - adds r1, r2, #0 - adds r1, #0x2e - movs r0, #0 - ldrsb r0, [r1, r0] - cmp r0, #0 - bne _0805175E - strb r4, [r1] -_0805175E: - adds r1, r2, #0 - adds r1, #0x2b - movs r0, #0 - strb r0, [r1] - adds r1, #1 - strb r0, [r1] - adds r0, r2, #0 - adds r0, #0x2a - strb r4, [r0] - b _08051A96 - .align 2, 0 -_08051774: .4byte gGameBoyPlayerEnabled -_08051778: .4byte gUnknown_02002920 -_0805177C: - movs r0, #2 - ands r0, r1 - cmp r0, #0 - bne _08051786 - b _08051A96 -_08051786: - movs r0, #0x66 - bl m4aSongNumStart - ldrb r0, [r4, #3] - adds r0, #1 - strb r0, [r4, #3] - ldr r7, _080517A4 @ =0x00000143 - adds r0, r4, r7 - ldrb r0, [r0] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - bl sub_525CC - b _08051A96 - .align 2, 0 -_080517A4: .4byte 0x00000143 -_080517A8: - ldr r1, _080517C8 @ =gMain - ldrh r2, [r1, #0x1c] - movs r0, #0x20 - ands r0, r2 - adds r3, r1, #0 - cmp r0, #0 - beq _080517D0 - ldr r0, _080517CC @ =gUnknown_02002920 - movs r2, #0x18 - ldrsh r1, [r0, r2] - adds r4, r0, #0 - cmp r1, #0 - bne _080517EC - ldrh r0, [r4, #0xe] - subs r0, #1 - b _080517E6 - .align 2, 0 -_080517C8: .4byte gMain -_080517CC: .4byte gUnknown_02002920 -_080517D0: - movs r0, #0x10 - ands r0, r2 - ldr r4, _080517FC @ =gUnknown_02002920 - cmp r0, #0 - beq _080517EC - movs r6, #0x18 - ldrsh r0, [r4, r6] - cmp r0, #0 - bne _080517EC - ldrh r0, [r4, #0xe] - adds r0, #1 -_080517E6: - strh r0, [r4, #0xe] - movs r0, #0xa - strh r0, [r4, #0x18] -_080517EC: - ldrh r1, [r3, #0x18] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _08051800 - ldrh r0, [r4, #0xe] - adds r0, #0xa - b _0805180C - .align 2, 0 -_080517FC: .4byte gUnknown_02002920 -_08051800: - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0805180E - ldrh r0, [r4, #0xe] - subs r0, #0xa -_0805180C: - strh r0, [r4, #0xe] -_0805180E: - ldr r5, _08051880 @ =gUnknown_02002920 - movs r7, #0xe - ldrsh r0, [r5, r7] - cmp r0, #0 - bge _0805181C - movs r0, #0x21 - strh r0, [r5, #0xe] -_0805181C: - movs r1, #0xe - ldrsh r0, [r5, r1] - cmp r0, #0x21 - ble _08051828 - movs r0, #0 - strh r0, [r5, #0xe] -_08051828: - ldrh r4, [r5, #0xe] - adds r4, #1 - lsls r4, r4, #0x10 - asrs r4, r4, #0x10 - adds r0, r4, #0 - movs r1, #0x64 - bl __divsi3 - strb r0, [r5, #0x12] - adds r0, r4, #0 - movs r1, #0x64 - bl __modsi3 - adds r4, r0, #0 - lsls r4, r4, #0x10 - asrs r4, r4, #0x10 - adds r0, r4, #0 - movs r1, #0xa - bl __divsi3 - strb r0, [r5, #0x13] - adds r0, r4, #0 - movs r1, #0xa - bl __modsi3 - strb r0, [r5, #0x14] - ldr r0, _08051884 @ =gMain - ldrh r1, [r0, #0x18] - movs r4, #1 - ands r4, r1 - cmp r4, #0 - beq _0805188C - bl m4aMPlayAllStop - ldr r0, _08051888 @ =gUnknown_08527D22 - movs r2, #0xe - ldrsh r1, [r5, r2] - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - bl m4aSongNumStart - b _080518AA - .align 2, 0 -_08051880: .4byte gUnknown_02002920 -_08051884: .4byte gMain -_08051888: .4byte gUnknown_08527D22 -_0805188C: - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080518AA - bl m4aMPlayAllStop - movs r0, #0x66 - bl m4aSongNumStart - movs r1, #0 - strh r4, [r5, #4] - adds r0, r5, #0 - adds r0, #0x30 - strb r1, [r0] - strh r4, [r5] -_080518AA: - ldr r0, _080518CC @ =gMain - ldr r0, [r0, #0x4c] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _080518C0 - ldr r2, _080518D0 @ =gUnknown_02002920 - ldrh r1, [r2, #4] - movs r0, #1 - subs r0, r0, r1 - strh r0, [r2, #4] -_080518C0: - ldr r1, _080518D0 @ =gUnknown_02002920 - ldrh r2, [r1, #0x18] - movs r3, #0x18 - ldrsh r0, [r1, r3] - b _080519F4 - .align 2, 0 -_080518CC: .4byte gMain -_080518D0: .4byte gUnknown_02002920 -_080518D4: - ldr r1, _080518F4 @ =gMain - ldrh r2, [r1, #0x1c] - movs r0, #0x20 - ands r0, r2 - adds r3, r1, #0 - cmp r0, #0 - beq _080518FC - ldr r0, _080518F8 @ =gUnknown_02002920 - movs r6, #0x18 - ldrsh r1, [r0, r6] - adds r4, r0, #0 - cmp r1, #0 - bne _08051918 - ldrh r0, [r4, #0x10] - subs r0, #1 - b _08051912 - .align 2, 0 -_080518F4: .4byte gMain -_080518F8: .4byte gUnknown_02002920 -_080518FC: - movs r0, #0x10 - ands r0, r2 - ldr r4, _08051928 @ =gUnknown_02002920 - cmp r0, #0 - beq _08051918 - movs r7, #0x18 - ldrsh r0, [r4, r7] - cmp r0, #0 - bne _08051918 - ldrh r0, [r4, #0x10] - adds r0, #1 -_08051912: - strh r0, [r4, #0x10] - movs r0, #0xa - strh r0, [r4, #0x18] -_08051918: - ldrh r1, [r3, #0x18] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _0805192C - ldrh r0, [r4, #0x10] - adds r0, #0xa - b _08051938 - .align 2, 0 -_08051928: .4byte gUnknown_02002920 -_0805192C: - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _0805193A - ldrh r0, [r4, #0x10] - subs r0, #0xa -_08051938: - strh r0, [r4, #0x10] -_0805193A: - ldr r5, _080519AC @ =gUnknown_02002920 - movs r1, #0x10 - ldrsh r0, [r5, r1] - cmp r0, #0 - bge _08051948 - movs r0, #0xb7 - strh r0, [r5, #0x10] -_08051948: - movs r2, #0x10 - ldrsh r0, [r5, r2] - cmp r0, #0xb7 - ble _08051954 - movs r0, #0 - strh r0, [r5, #0x10] -_08051954: - ldrh r4, [r5, #0x10] - adds r4, #1 - lsls r4, r4, #0x10 - asrs r4, r4, #0x10 - adds r0, r4, #0 - movs r1, #0x64 - bl __divsi3 - strb r0, [r5, #0x15] - adds r0, r4, #0 - movs r1, #0x64 - bl __modsi3 - adds r4, r0, #0 - lsls r4, r4, #0x10 - asrs r4, r4, #0x10 - adds r0, r4, #0 - movs r1, #0xa - bl __divsi3 - strb r0, [r5, #0x16] - adds r0, r4, #0 - movs r1, #0xa - bl __modsi3 - strb r0, [r5, #0x17] - ldr r0, _080519B0 @ =gMain - ldrh r1, [r0, #0x18] - movs r4, #1 - ands r4, r1 - cmp r4, #0 - beq _080519B8 - bl m4aMPlayAllStop - ldr r0, _080519B4 @ =gUnknown_08527D66 - movs r3, #0x10 - ldrsh r1, [r5, r3] - lsls r1, r1, #1 - adds r1, r1, r0 - ldrh r0, [r1] - bl m4aSongNumStart - b _080519D6 - .align 2, 0 -_080519AC: .4byte gUnknown_02002920 -_080519B0: .4byte gMain -_080519B4: .4byte gUnknown_08527D66 -_080519B8: - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _080519D6 - bl m4aMPlayAllStop - movs r0, #0x66 - bl m4aSongNumStart - movs r1, #0 - strh r4, [r5, #4] - adds r0, r5, #0 - adds r0, #0x30 - strb r1, [r0] - strh r4, [r5] -_080519D6: - ldr r0, _08051A00 @ =gMain - ldr r0, [r0, #0x4c] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _080519EC - ldr r2, _08051A04 @ =gUnknown_02002920 - ldrh r1, [r2, #4] - movs r0, #1 - subs r0, r0, r1 - strh r0, [r2, #4] -_080519EC: - ldr r1, _08051A04 @ =gUnknown_02002920 - ldrh r2, [r1, #0x18] - movs r6, #0x18 - ldrsh r0, [r1, r6] -_080519F4: - cmp r0, #0 - bgt _080519FA - b _08051B98 -_080519FA: - subs r0, r2, #1 - strh r0, [r1, #0x18] - b _08051B98 - .align 2, 0 -_08051A00: .4byte gMain -_08051A04: .4byte gUnknown_02002920 -_08051A08: - ldr r0, _08051A2C @ =gMain - ldrh r1, [r0, #0x18] - movs r0, #0x40 - ands r0, r1 - cmp r0, #0 - beq _08051A34 - ldr r4, _08051A30 @ =gUnknown_02002920 - movs r7, #0xa - ldrsh r0, [r4, r7] - cmp r0, #7 - ble _08051A52 - movs r0, #0x67 - bl m4aSongNumStart - ldrh r0, [r4, #0xa] - subs r0, #1 - b _08051A50 - .align 2, 0 -_08051A2C: .4byte gMain -_08051A30: .4byte gUnknown_02002920 -_08051A34: - movs r0, #0x80 - ands r0, r1 - cmp r0, #0 - beq _08051A52 - ldr r4, _08051A78 @ =gUnknown_02002920 - movs r1, #0xa - ldrsh r0, [r4, r1] - cmp r0, #0xa - bgt _08051A52 - movs r0, #0x67 - bl m4aSongNumStart - ldrh r0, [r4, #0xa] - adds r0, #1 -_08051A50: - strh r0, [r4, #0xa] -_08051A52: - ldr r0, _08051A7C @ =gMain - ldrh r1, [r0, #0x18] - movs r4, #1 - ands r4, r1 - cmp r4, #0 - beq _08051A80 - movs r0, #0x65 - bl m4aSongNumStart - ldr r0, _08051A78 @ =gUnknown_02002920 - movs r1, #4 - strh r1, [r0] - movs r2, #0xa - ldrsh r1, [r0, r2] - adds r0, r0, r1 - movs r1, #1 - strb r1, [r0, #0x13] - b _08051A96 - .align 2, 0 -_08051A78: .4byte gUnknown_02002920 -_08051A7C: .4byte gMain -_08051A80: - movs r0, #2 - ands r0, r1 - cmp r0, #0 - beq _08051A96 - movs r0, #0x66 - bl m4aSongNumStart - ldr r1, _08051AB0 @ =gUnknown_02002920 - movs r0, #6 - strh r0, [r1, #0xa] - strh r4, [r1] -_08051A96: - ldr r0, _08051AB4 @ =gMain - ldr r0, [r0, #0x4c] - movs r1, #7 - ands r0, r1 - cmp r0, #0 - bne _08051B98 - ldr r2, _08051AB0 @ =gUnknown_02002920 - ldrh r1, [r2, #2] - movs r0, #1 - subs r0, r0, r1 - strh r0, [r2, #2] - b _08051B98 - .align 2, 0 -_08051AB0: .4byte gUnknown_02002920 -_08051AB4: .4byte gMain -_08051AB8: - ldr r4, _08051BF4 @ =gUnknown_02002920 - ldrh r0, [r4, #8] - adds r0, #1 - movs r5, #0 - strh r0, [r4, #8] - lsls r0, r0, #0x10 - asrs r0, r0, #0x10 - cmp r0, #0x18 - ble _08051AD4 - strh r5, [r4, #8] - ldrh r1, [r4, #6] - movs r0, #1 - subs r0, r0, r1 - strh r0, [r4, #6] -_08051AD4: - ldr r0, _08051BF8 @ =gMain - ldrh r1, [r0, #0x18] - ldr r0, _08051BFC @ =0x000003F7 - ands r0, r1 - cmp r0, #0 - beq _08051B0E - movs r0, #0x65 - bl m4aSongNumStart - movs r0, #0xa - strh r0, [r4, #0x20] - strh r5, [r4, #0x22] - movs r0, #0 - adds r3, r4, #0 - adds r3, #0x24 - movs r2, #0xa -_08051AF4: - lsls r1, r0, #0x10 - asrs r1, r1, #0x10 - lsls r0, r1, #1 - adds r0, r0, r3 - strh r2, [r0] - adds r1, #1 - lsls r1, r1, #0x10 - lsrs r0, r1, #0x10 - asrs r1, r1, #0x10 - cmp r1, #1 - ble _08051AF4 - movs r0, #0 - strh r0, [r4, #0x28] -_08051B0E: - ldr r4, _08051BF4 @ =gUnknown_02002920 - movs r3, #0x20 - ldrsh r0, [r4, r3] - cmp r0, #0 - ble _08051B98 - bl sub_524BC - ldrh r0, [r4, #0x20] - subs r0, #1 - strh r0, [r4, #0x20] - lsls r0, r0, #0x10 - asrs r5, r0, #0x10 - cmp r5, #0 - bne _08051B98 - ldr r2, _08051C00 @ =gUnknown_02031AF0 - movs r6, #0xa - ldrsh r0, [r4, r6] - subs r0, #7 - lsls r0, r0, #1 - adds r2, #0x28 - adds r0, r0, r2 - ldrh r1, [r4, #0x24] - strb r1, [r0] - movs r7, #0xa - ldrsh r0, [r4, r7] - subs r0, #7 - lsls r0, r0, #1 - adds r0, #1 - adds r0, r0, r2 - ldrh r1, [r4, #0x26] - strb r1, [r0] - ldr r2, _08051C04 @ =gMain+0x74 - movs r0, #0xa - ldrsh r1, [r4, r0] - subs r1, #7 - lsls r1, r1, #2 - adds r0, r2, #0 - adds r0, #0xd0 - adds r1, r1, r0 - ldr r3, _08051C08 @ =gUnknown_086BB910 - movs r6, #0x24 - ldrsh r0, [r4, r6] - lsls r0, r0, #3 - adds r0, r0, r3 - ldrh r0, [r0] - strh r0, [r1] - movs r7, #0xa - ldrsh r1, [r4, r7] - subs r1, #7 - lsls r1, r1, #2 - adds r2, #0xd2 - adds r1, r1, r2 - movs r2, #0x26 - ldrsh r0, [r4, r2] - lsls r0, r0, #3 - adds r0, r0, r3 - ldrh r0, [r0] - strh r0, [r1] - movs r0, #3 - strh r0, [r4] - movs r3, #0xa - ldrsh r0, [r4, r3] - adds r0, r4, r0 - adds r0, #0x13 - movs r1, #0 - strb r1, [r0] - strh r5, [r4, #8] - movs r0, #1 - strh r0, [r4, #6] -_08051B98: - ldr r2, _08051BF4 @ =gUnknown_02002920 - movs r6, #0x2e - adds r6, r6, r2 - mov ip, r6 - movs r0, #0 - ldrsb r0, [r6, r0] - cmp r0, #1 - bne _08051C10 - adds r4, r2, #0 - adds r4, #0x2b - ldrb r0, [r4] - adds r0, #1 - movs r5, #0 - strb r0, [r4] - lsls r0, r0, #0x18 - ldr r6, _08051C0C @ =gUnknown_086BB9B4 - adds r3, r2, #0 - adds r3, #0x2c - movs r1, #0 - ldrsb r1, [r3, r1] - lsls r1, r1, #2 - adds r1, r1, r6 - asrs r0, r0, #0x18 - movs r7, #2 - ldrsh r1, [r1, r7] - cmp r0, r1 - ble _08051C30 - strb r5, [r4] - ldrb r0, [r3] - adds r0, #1 - strb r0, [r3] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - adds r2, #0x2d - cmp r0, #0xc - ble _08051BE8 - strb r5, [r3] - strb r5, [r2] - mov r0, ip - strb r5, [r0] -_08051BE8: - movs r0, #0 - ldrsb r0, [r3, r0] - lsls r0, r0, #2 - adds r0, r0, r6 - ldrb r0, [r0] - b _08051C2E - .align 2, 0 -_08051BF4: .4byte gUnknown_02002920 -_08051BF8: .4byte gMain -_08051BFC: .4byte 0x000003F7 -_08051C00: .4byte gUnknown_02031AF0 -_08051C04: .4byte gMain+0x74 -_08051C08: .4byte gUnknown_086BB910 -_08051C0C: .4byte gUnknown_086BB9B4 -_08051C10: - adds r1, r2, #0 - adds r1, #0x2b - ldrb r0, [r1] - adds r0, #1 - strb r0, [r1] - lsls r0, r0, #0x18 - asrs r0, r0, #0x18 - cmp r0, #0x12 - ble _08051C30 - movs r0, #0 - strb r0, [r1] - adds r2, #0x2d - ldrb r1, [r2] - movs r0, #1 - subs r0, r0, r1 -_08051C2E: - strb r0, [r2] -_08051C30: - bl sub_11FC - pop {r4, r5, r6, r7} - pop {r0} - bx r0 - - thumb_func_start sub_51C3C -sub_51C3C: @ 0x08051C3C - push {lr} - bl sub_111C - bl sub_1170 - cmp r0, #0 - beq _08051C56 - bl sub_1198 - ldr r1, _08051C5C @ =gMain - ldrb r0, [r1, #3] - adds r0, #1 - strb r0, [r1, #3] -_08051C56: - pop {r0} - bx r0 - .align 2, 0 -_08051C5C: .4byte gMain - thumb_func_start sub_51C60 sub_51C60: @ 0x08051C60 push {lr} diff --git a/include/functions.h b/include/functions.h index 0606057..7d843c5 100644 --- a/include/functions.h +++ b/include/functions.h @@ -330,14 +330,14 @@ extern void sub_1050C(void); //extern ? OptionsMain(); //extern ? sub_51240(); -//extern ? sub_513B8(); +extern void sub_513B8(void); //extern ? sub_514B8(); //extern ? sub_51C3C(); //extern ? sub_51C60(); -//extern ? sub_51C9C(); -//extern ? sub_524BC(); -//extern ? sub_52528(); -//extern ? sub_525CC(); +extern void sub_51C9C(void); +extern void sub_524BC(void); +extern void sub_52528(void); +extern void sub_525CC(s8); // asm/pokedex.s @@ -388,7 +388,7 @@ extern void sub_8ABC(void); // asm/rom_1068C.s -//extern ? sub_1068C(); +void sub_1068C(int, int, int, int, u16); extern void sub_10708(void *volatile, void *volatile, s16, s16); //extern ? sub_10750(); //extern ? sub_10798(); @@ -830,4 +830,4 @@ extern void sub_1175C(void); extern void sub_11968(void); extern void sub_11B74(void); -#endif // GUARD_FUNCTIONS_H
\ No newline at end of file +#endif // GUARD_FUNCTIONS_H diff --git a/include/main.h b/include/main.h index 3e0c744..6415742 100755 --- a/include/main.h +++ b/include/main.h @@ -11,8 +11,9 @@ struct SaveData /*0x141*/ u8 unk141; /*0x142*/ u8 unk142; /*0x143*/ u8 unk143; - /*0x144*/ u8 filler144[0x2D8-0x144]; - s8 signature[10]; + /*0x144*/ //u8 filler144[0x2D8-0x144]; + u16 unk144[0x65][2]; + /*0x2D8*/ s8 signature[10]; u16 unk2E2; u32 unk2E4; }; @@ -67,7 +68,7 @@ struct Main extern struct Main gMain; -extern u8 gUnknown_0200B134[]; +extern struct SaveData gUnknown_0200B134; extern struct SpriteGroup gUnknown_0200B3B8[]; extern u32 IntrMain_Buffer[0x200]; extern u32 IntrMain[]; diff --git a/include/variables.h b/include/variables.h index 590ae00..a2112e1 100644 --- a/include/variables.h +++ b/include/variables.h @@ -3,6 +3,7 @@ // Place all external variable declarations in this file +extern void (*const gUnknown_08527F08[])(void); extern u16 gUnknown_0201A520[]; extern u16 gUnknown_0201AD20[]; extern u32 gUnknown_0201A500[]; @@ -172,4 +173,4 @@ extern struct Coord16 gUnknown_086A9694[]; extern struct Coord16 gUnknown_086A96AC[]; extern struct Coord16 gUnknown_086A96C0[]; -#endif // GUARD_VARIABLES_H
\ No newline at end of file +#endif // GUARD_VARIABLES_H diff --git a/ld_script.txt b/ld_script.txt index 56aef78..f07c1bd 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -45,6 +45,7 @@ SECTIONS asm/rom_11B9C.o(.text); src/rom_3219C.o(.text); asm/rom_3219C.o(.text); + src/options.o(.text); asm/options.o(.text); src/rom_528AC.o(.text); asm/m4a_1.o(.text); diff --git a/src/gbplayer.c b/src/gbplayer.c index c0d9655..e2c1cea 100755 --- a/src/gbplayer.c +++ b/src/gbplayer.c @@ -291,8 +291,7 @@ void sub_1198(void) void sub_11B0(int arg0) { - if (gUnknown_0200B134[0xCD]) - //if (gMain.saveData.unk141) + if (gUnknown_0200B134.unk141) { gUnknown_02019BF8 = arg0; gUnknown_02019BFC = 0; diff --git a/src/options.c b/src/options.c new file mode 100644 index 0000000..ef31b58 --- /dev/null +++ b/src/options.c @@ -0,0 +1,501 @@ +#include "global.h" +#include "m4a.h" +#include "main.h" + +struct OptionsData +{ + s16 unk0; + u16 unk2; + u16 unk4; + u16 unk6; + s16 unk8; + s16 unkA; + u16 unkC; + s16 unkE; + s16 unk10; + u8 unk12; + u8 unk13; + u8 unk14; + u8 unk15; + u8 unk16; + u8 unk17; + s16 unk18; + u8 unk1A[6]; + s16 unk20; + u16 unk22; + s16 unk24[2]; + u16 unk28; + u8 unk2A; + s8 unk2B; + s8 unk2C; + u8 unk2D; + s8 unk2E; + u8 unk2F; + u8 unk30; +}; + +extern struct OptionsData gUnknown_02002920; + +void OptionsMain(void) +{ + gUnknown_08527F08[gMain.subState](); +} + +extern const u16 gUnknown_0852B468[]; +extern const u8 gUnknown_08528828[]; +extern const u8 gUnknown_0852A848[]; +extern const u8 gUnknown_08528028[]; +extern const u8 gUnknown_0852A048[]; + +void sub_51240(void) +{ + sub_438(); + + REG_DISPCNT = 0x1080; + REG_BG0CNT = 4; + REG_DISPCNT |= 0x100; + REG_BG1CNT = 0x109; + REG_DISPCNT |= 0x200; + + gMain.unk16 = REG_DISPCNT; + + DmaCopy16(3, gUnknown_0852B468, (void *)PLTT, 0x200); + DmaCopy16(3, gUnknown_08528828, (void *)(VRAM + 0x4000), 0x1800); + DmaCopy16(3, gUnknown_0852A848, (void *)(VRAM + 0x8000), 0xC00); + DmaCopy16(3, gUnknown_08528028, gUnknown_03005C00, 0x800); + DmaCopy16(3, gUnknown_03005C00, (void *)VRAM, 0x800); + + if (gGameBoyPlayerEnabled != 1) + { + sub_1068C(0x12, 4, 2, 1, 2); + sub_1068C(0x12, 5, 3, 2, 2); + } + + DmaCopy16(3, gUnknown_03005C00, (void *)VRAM, 0x800); + DmaCopy16(3, gUnknown_0852A048, (void *)(VRAM + 0x800), 0x800); + DmaCopy16(3, gGBAButtonIcons_Pals, (void *)(PLTT + 0x200), 0x60); + DmaCopy16(3, gOptionsSprites_Gfx, (void *)(VRAM + 0x10000), 0x2020); + sub_513B8(); + sub_51C9C(); + m4aMPlayAllStop(); + sub_CBC(); + sub_24C(); + sub_10C0(); + + gMain.subState++; +} + +extern u8 gUnknown_02031AF0[][10]; +extern u8 gUnknown_08527ED6[][10]; + +void sub_513B8(void) +{ + int i; + int j; + + gUnknown_02002920.unk0 = 0; + gUnknown_02002920.unk2 = 0; + gUnknown_02002920.unk4 = 0; + gUnknown_02002920.unk6 = 1; + gUnknown_02002920.unk8 = 0; + gUnknown_02002920.unkA = 0; + gUnknown_02002920.unkC = gUnknown_0200B134.unk143; + gUnknown_02002920.unkE = 0; + gUnknown_02002920.unk10 = 0; + gUnknown_02002920.unk12 = 0; + gUnknown_02002920.unk13 = 0; + gUnknown_02002920.unk14 = 1; + gUnknown_02002920.unk15 = 0; + gUnknown_02002920.unk16 = 0; + gUnknown_02002920.unk17 = 1; + gUnknown_02002920.unk18 = 0; + for (i = 0; i < 6; i++) + gUnknown_02002920.unk1A[i] = 0; + gUnknown_02002920.unk20 = 0; + gUnknown_02002920.unk22 = 0; + for (i = 0; i < 2; i++) + gUnknown_02002920.unk24[i] = 10; + gUnknown_02002920.unk28 = 0; + for (i = 0; i < 4; i++) + { + for (j = 0; j < 10; j++) + gUnknown_02031AF0[i][j] = gUnknown_08527ED6[i][j]; + } + sub_52528(); + if (gGameBoyPlayerEnabled == 1) + { + gUnknown_02002920.unk2A = gUnknown_0200B134.unk141; + gUnknown_0200B134.unk141 = 1; + } + else + { + gUnknown_02002920.unk2A = 0; + gUnknown_0200B134.unk141 = 0; + } + gUnknown_02002920.unk2E = 0; + gUnknown_02002920.unk2B = 0; + gUnknown_02002920.unk2C = 0; + gUnknown_02002920.unk2D = 0; + gUnknown_02002920.unk2F = 0; + gUnknown_02002920.unk30 = 0; +} + +extern u16 gUnknown_08527D22[]; +extern u16 gUnknown_086BB910[][4]; +extern struct {u8 unk0; s16 unk2;} gUnknown_086BB9B4[]; +extern u16 gUnknown_08527D66[]; + +void sub_514B8(void) +{ + s16 r4; + + sub_51C9C(); + switch (gUnknown_02002920.unk0) + { + case 0: + if (gMain.newKeys & 0x40) + { + if (gUnknown_02002920.unkA != 0xD) + { + if (gUnknown_02002920.unkA == 0xE) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA = 0xD; + } + else if (gUnknown_02002920.unkA > 0) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA--; + } + } + } + //_0805152C + else if (gMain.newKeys & 0x80) + { + if (gUnknown_02002920.unkA < 6) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA++; + } + else if (gUnknown_02002920.unkA == 0xD) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA = 0xE; + } + //_0805155E + else if (gUnknown_02002920.unkA == 0xE) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA = 2; + } + // _0805156A + } + //_0805156C + if ((gMain.newKeys & 0x10) && gGameBoyPlayerEnabled == 1 && (u16)gUnknown_02002920.unkA < 2) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA += 0xD; + } + if ((gMain.newKeys & 0x20) && gGameBoyPlayerEnabled == 1 && (u16)(gUnknown_02002920.unkA - 13) < 2) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA -= 0xD; + } + //_080515C2 + if (gMain.newKeys & 1) + { + switch (gUnknown_02002920.unkA) + { + case 0: + m4aSongNumStart(0x65); + gUnknown_02002920.unk0 = 1; + gUnknown_02002920.unk18 = 0; + gUnknown_02002920.unk30 = 1; + if (gUnknown_02002920.unk2E == 1) + { + gUnknown_02002920.unk2B = 0; + gUnknown_02002920.unk2D = 0; + gUnknown_02002920.unk2C = 0; + gUnknown_02002920.unk2E = 0; + } + break; + case 1: + m4aSongNumStart(0x65); + gUnknown_02002920.unk0 = 2; + gUnknown_02002920.unk18 = 0; + gUnknown_02002920.unk30 = 1; + if (gUnknown_02002920.unk2E == 1) + { + gUnknown_02002920.unk2B = 0; + gUnknown_02002920.unk2D = 0; + gUnknown_02002920.unk2C = 0; + gUnknown_02002920.unk2E = 0; + } + break; + case 2: + case 3: + case 4: + case 5: + m4aSongNumStart(0x65); + gUnknown_02002920.unkC = gUnknown_02002920.unkA - 2; + gUnknown_0200B134.unk143 = gUnknown_02002920.unkC; + break; + case 6: + m4aSongNumStart(0x65); + gUnknown_02002920.unkC = gUnknown_02002920.unkA - 2; + gUnknown_0200B134.unk143 = gUnknown_02002920.unkC; + gUnknown_02002920.unkA = 7; + gUnknown_02002920.unk0 = 3; + break; + case 14: + if (gGameBoyPlayerEnabled == 1) + { + m4aSongNumStart(0x65); + gUnknown_02002920.unk2D = 0; + if (gUnknown_02002920.unk2E == 1) + gUnknown_02002920.unk2E = 0; + gUnknown_02002920.unk2B = 0; + gUnknown_02002920.unk2C = 0; + gUnknown_02002920.unk2A = 0; + } + break; + case 13: + if (gGameBoyPlayerEnabled == 1) + { + m4aSongNumStart(0x65); + sub_11B0(11); + if (gUnknown_02002920.unk2E == 0) + gUnknown_02002920.unk2E = 1; + + gUnknown_02002920.unk2B = 0; + gUnknown_02002920.unk2C = 0; + gUnknown_02002920.unk2A = 1; + } + break; + } + } + //_0805177C + else if (gMain.newKeys & 2) + { + m4aSongNumStart(0x66); + gMain.subState++; + sub_525CC(gMain.saveData.unk143); + + } + if (!(gMain.unk4C & 7)) + gUnknown_02002920.unk2 = 1 - gUnknown_02002920.unk2; + break; + case 1: // _080517A8 + if (gMain.heldKeys & 0x20) + { + if (gUnknown_02002920.unk18 == 0) + { + gUnknown_02002920.unkE--; + gUnknown_02002920.unk18 = 10; + } + } + else if (gMain.heldKeys & 0x10) + { + if (gUnknown_02002920.unk18 == 0) + { + gUnknown_02002920.unkE++; + gUnknown_02002920.unk18 = 10; + } + } + if (gMain.newKeys & 0x40) + gUnknown_02002920.unkE += 10; + else if (gMain.newKeys & 0x80) + gUnknown_02002920.unkE -= 10; + if (gUnknown_02002920.unkE < 0) + gUnknown_02002920.unkE = 33; + if (gUnknown_02002920.unkE > 33) + gUnknown_02002920.unkE = 0; + + r4 = gUnknown_02002920.unkE + 1; + gUnknown_02002920.unk12 = r4 / 100; + r4 %= 100; + gUnknown_02002920.unk13 = r4 / 10; + gUnknown_02002920.unk14 = r4 % 10; + if (gMain.newKeys & 1) + { + m4aMPlayAllStop(); + m4aSongNumStart(gUnknown_08527D22[gUnknown_02002920.unkE]); + } + else if (gMain.newKeys & 2) + { + m4aMPlayAllStop(); + m4aSongNumStart(0x66); + gUnknown_02002920.unk4 = 0; + gUnknown_02002920.unk30 = 0; + gUnknown_02002920.unk0 = 0; + } + //_080518AA + if (!(gMain.unk4C & 7)) + gUnknown_02002920.unk4 = 1 - gUnknown_02002920.unk4; + if (gUnknown_02002920.unk18 > 0) + gUnknown_02002920.unk18--; + break; + case 2: + if (gMain.heldKeys & 0x20) + { + if (gUnknown_02002920.unk18 == 0) + { + gUnknown_02002920.unk10--; + gUnknown_02002920.unk18 = 10; + } + } + else if (gMain.heldKeys & 0x10) + { + if (gUnknown_02002920.unk18 == 0) + { + gUnknown_02002920.unk10++; + gUnknown_02002920.unk18 = 10; + } + } + //_08051918 + if (gMain.newKeys & 0x40) + gUnknown_02002920.unk10 += 10; + else if (gMain.newKeys & 0x80) + gUnknown_02002920.unk10 -= 10; + if (gUnknown_02002920.unk10 < 0) + gUnknown_02002920.unk10 = 0xB7; + if (gUnknown_02002920.unk10 > 0xB7) + gUnknown_02002920.unk10 = 0; + + r4 = gUnknown_02002920.unk10 + 1; + gUnknown_02002920.unk15 = r4 / 100; + r4 %= 100; + gUnknown_02002920.unk16 = r4 / 10; + gUnknown_02002920.unk17 = r4 % 10; + if (gMain.newKeys & 0x1) + { + m4aMPlayAllStop(); + m4aSongNumStart(gUnknown_08527D66[gUnknown_02002920.unk10]); + } + else if (gMain.newKeys & 0x2) + { + m4aMPlayAllStop(); + m4aSongNumStart(0x66); + gUnknown_02002920.unk4 = 0; + gUnknown_02002920.unk30 = 0; + gUnknown_02002920.unk0 = 0; + } + if (!(gMain.unk4C & 7)) + gUnknown_02002920.unk4 = 1 - gUnknown_02002920.unk4; + if (gUnknown_02002920.unk18 > 0) + gUnknown_02002920.unk18--; + break; + case 3: //_08051A08 + if (gMain.newKeys & 0x40) + { + if (gUnknown_02002920.unkA > 7) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA--; + } + } + //_08051A34 + else if (gMain.newKeys & 0x80) + { + if (gUnknown_02002920.unkA <= 10) + { + m4aSongNumStart(0x67); + gUnknown_02002920.unkA++; + } + } + //_08051A52 + if (gMain.newKeys & 1) + { + m4aSongNumStart(0x65); + gUnknown_02002920.unk0 = 4; + gUnknown_02002920.unk1A[gUnknown_02002920.unkA - 7] = 1; + } + //_08051A80 + else if (gMain.newKeys & 2) + { + m4aSongNumStart(0x66); + gUnknown_02002920.unkA = 6; + gUnknown_02002920.unk0 = 0; + } + //_08051A96 + if (!(gMain.unk4C & 7)) + gUnknown_02002920.unk2 = 1 - gUnknown_02002920.unk2; + break; + case 4: + gUnknown_02002920.unk8++; + if (gUnknown_02002920.unk8 > 24) + { + gUnknown_02002920.unk8 = 0; + gUnknown_02002920.unk6 = 1 - gUnknown_02002920.unk6; + } + if (gMain.newKeys & 0x3F7) + { + s16 i; + + m4aSongNumStart(0x65); + gUnknown_02002920.unk20 = 10; + gUnknown_02002920.unk22 = 0; + for (i = 0; i < 2; i++) + gUnknown_02002920.unk24[i] = 10; + gUnknown_02002920.unk28 = 0; + } + //_08051B0E + if (gUnknown_02002920.unk20 > 0) + { + sub_524BC(); + gUnknown_02002920.unk20--; + if (gUnknown_02002920.unk20 == 0) + { + gUnknown_02031AF0[4][(gUnknown_02002920.unkA - 7) * 2 + 0] = gUnknown_02002920.unk24[0]; + gUnknown_02031AF0[4][(gUnknown_02002920.unkA - 7) * 2 + 1] = gUnknown_02002920.unk24[1]; + gUnknown_0200B134.unk144[(gUnknown_02002920.unkA - 7)][0] = gUnknown_086BB910[gUnknown_02002920.unk24[0]][0]; + gUnknown_0200B134.unk144[(gUnknown_02002920.unkA - 7)][1] = gUnknown_086BB910[gUnknown_02002920.unk24[1]][0]; + gUnknown_02002920.unk0 = 3; + gUnknown_02002920.unk1A[gUnknown_02002920.unkA - 7] = 0; + gUnknown_02002920.unk8 = 0; + gUnknown_02002920.unk6 = 1; + } + } + break; + } + //_08051B98 + if (gUnknown_02002920.unk2E == 1) + { + //gUnknown_02002920.unk2B++; + if (++gUnknown_02002920.unk2B > gUnknown_086BB9B4[gUnknown_02002920.unk2C].unk2) + { + gUnknown_02002920.unk2B = 0; + gUnknown_02002920.unk2C++; + if (gUnknown_02002920.unk2C > 12) + { + gUnknown_02002920.unk2C = 0; + gUnknown_02002920.unk2D = 0; + gUnknown_02002920.unk2E = 0; + } + //_08051BE8 + gUnknown_02002920.unk2D = gUnknown_086BB9B4[gUnknown_02002920.unk2C].unk0; + } + // _08051C30 + } + else + //_08051C10 + { + gUnknown_02002920.unk2B++; + if (gUnknown_02002920.unk2B > 18) + { + gUnknown_02002920.unk2B = 0; + gUnknown_02002920.unk2D = 1 - gUnknown_02002920.unk2D; + } + } + sub_11FC(); +} + +void sub_51C3C(void) +{ + sub_111C(); + if (sub_1170() != 0) + { + sub_1198(); + gMain.subState++; + } +} |