diff options
author | Evan <eroelke@gmail.com> | 2019-11-16 19:45:55 -0700 |
---|---|---|
committer | Evan <eroelke@gmail.com> | 2019-11-16 19:45:55 -0700 |
commit | 46602859cd1cf7b3ecbc3f0730eebe2e60ef3845 (patch) | |
tree | 570d164eb403ace2476c2f55094350f5d6426bb5 | |
parent | 83cba310335678aa8ecac24b58708b3c924b581a (diff) |
remove compile errors
-rw-r--r-- | asm/option_menu.s | 1337 | ||||
-rw-r--r-- | data/strings.s | 14 | ||||
-rw-r--r-- | include/global.h | 10 | ||||
-rw-r--r-- | include/strings.h | 11 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/option_menu.c | 594 | ||||
-rw-r--r-- | sym_ewram.txt | 2 |
7 files changed, 619 insertions, 1351 deletions
diff --git a/asm/option_menu.s b/asm/option_menu.s deleted file mode 100644 index 3b08810c5..000000000 --- a/asm/option_menu.s +++ /dev/null @@ -1,1337 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start sub_808835C -sub_808835C: @ 808835C - push {lr} - bl RunTasks - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_808835C - - thumb_func_start sub_8088374 -sub_8088374: @ 8088374 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end sub_8088374 - - thumb_func_start CB2_OptionsMenuFromStartMenu -CB2_OptionsMenuFromStartMenu: @ 8088388 - push {r4-r6,lr} - ldr r1, _08088418 @ =gMain - ldr r0, [r1, 0x8] - cmp r0, 0 - bne _08088396 - ldr r0, _0808841C @ =CB2_ReturnToStartMenu - str r0, [r1, 0x8] -_08088396: - ldr r4, _08088420 @ =gUnknown_2039620 - movs r0, 0x14 - bl AllocZeroed - str r0, [r4] - movs r1, 0 - strb r1, [r0, 0x10] - ldr r0, [r4] - strb r1, [r0, 0x12] - ldr r0, [r4] - strb r1, [r0, 0x11] - ldr r2, [r4] - strh r1, [r2, 0xE] - ldr r0, _08088424 @ =gSaveBlock2Ptr - ldr r1, [r0] - ldrb r0, [r1, 0x14] - lsls r0, 29 - lsrs r0, 29 - strh r0, [r2] - ldrb r0, [r1, 0x15] - lsls r0, 29 - lsrs r0, 31 - strh r0, [r2, 0x2] - ldrb r0, [r1, 0x15] - lsls r0, 30 - lsrs r0, 31 - strh r0, [r2, 0x4] - ldrb r0, [r1, 0x15] - lsls r0, 31 - lsrs r0, 31 - strh r0, [r2, 0x6] - ldrb r0, [r1, 0x13] - strh r0, [r2, 0x8] - ldrb r0, [r1, 0x14] - lsrs r0, 3 - strh r0, [r2, 0xA] - movs r3, 0 - adds r6, r4, 0 - ldr r5, _08088428 @ =gUnknown_83CC304 - movs r4, 0 -_080883E6: - ldr r1, [r6] - lsls r0, r3, 1 - adds r2, r1, r0 - ldrh r1, [r2] - adds r0, r5 - ldrh r0, [r0] - subs r0, 0x1 - cmp r1, r0 - ble _080883FA - strh r4, [r2] -_080883FA: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x5 - bls _080883E6 - movs r0, 0xD - bl HelpSystem_SetSomeVariable2 - ldr r0, _0808842C @ =sub_8088454 - bl SetMainCallback2 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088418: .4byte gMain -_0808841C: .4byte CB2_ReturnToStartMenu -_08088420: .4byte gUnknown_2039620 -_08088424: .4byte gSaveBlock2Ptr -_08088428: .4byte gUnknown_83CC304 -_0808842C: .4byte sub_8088454 - thumb_func_end CB2_OptionsMenuFromStartMenu - - thumb_func_start sub_8088430 -sub_8088430: @ 8088430 - push {lr} - movs r0, 0 - bl SetVBlankCallback - movs r0, 0 - bl SetHBlankCallback - pop {r0} - bx r0 - thumb_func_end sub_8088430 - - thumb_func_start sub_8088444 -sub_8088444: @ 8088444 - push {lr} - ldr r0, _08088450 @ =sub_8088374 - bl SetVBlankCallback - pop {r0} - bx r0 - .align 2, 0 -_08088450: .4byte sub_8088374 - thumb_func_end sub_8088444 - - thumb_func_start sub_8088454 -sub_8088454: @ 8088454 - push {r4,lr} - ldr r0, _0808846C @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r0, [r0, 0x11] - cmp r0, 0x9 - bhi _080884FA - lsls r0, 2 - ldr r1, _08088470 @ =_08088474 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0808846C: .4byte gUnknown_2039620 -_08088470: .4byte _08088474 - .align 2, 0 -_08088474: - .4byte _0808849C - .4byte _080884A2 - .4byte _080884A8 - .4byte _080884AE - .4byte _080884BC - .4byte _080884C2 - .4byte _080884C8 - .4byte _080884CE - .4byte _080884E2 - .4byte _080884F4 -_0808849C: - bl sub_8088430 - b _080884FE -_080884A2: - bl sub_8088530 - b _080884FE -_080884A8: - bl sub_80886D4 - b _080884FE -_080884AE: - bl sub_80886F0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08088508 - b _080884FE -_080884BC: - bl sub_8088BD0 - b _080884FE -_080884C2: - bl sub_8088C0C - b _080884FE -_080884C8: - bl sub_8088D8C - b _080884FE -_080884CE: - movs r4, 0 -_080884D0: - adds r0, r4, 0 - bl sub_80889A8 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _080884D0 - b _080884FE -_080884E2: - ldr r0, _080884F0 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080884FE - .align 2, 0 -_080884F0: .4byte gUnknown_2039620 -_080884F4: - bl sub_8088680 - b _080884FE -_080884FA: - bl sub_8088514 -_080884FE: - ldr r0, _08088510 @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x11] - adds r0, 0x1 - strb r0, [r1, 0x11] -_08088508: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088510: .4byte gUnknown_2039620 - thumb_func_end sub_8088454 - - thumb_func_start sub_8088514 -sub_8088514: @ 8088514 - push {lr} - ldr r0, _08088528 @ =sub_8088780 - movs r1, 0 - bl CreateTask - ldr r0, _0808852C @ =sub_808835C - bl SetMainCallback2 - pop {r0} - bx r0 - .align 2, 0 -_08088528: .4byte sub_8088780 -_0808852C: .4byte sub_808835C - thumb_func_end sub_8088514 - - thumb_func_start sub_8088530 -sub_8088530: @ 8088530 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - movs r3, 0xC0 - lsls r3, 19 - movs r4, 0xC0 - lsls r4, 9 - add r0, sp, 0x4 - mov r8, r0 - mov r2, sp - movs r6, 0 - ldr r1, _08088670 @ =0x040000d4 - movs r5, 0x80 - lsls r5, 5 - ldr r7, _08088674 @ =0x81000800 - movs r0, 0x81 - lsls r0, 24 - mov r12, r0 -_08088556: - strh r6, [r2] - mov r0, sp - str r0, [r1] - str r3, [r1, 0x4] - str r7, [r1, 0x8] - ldr r0, [r1, 0x8] - adds r3, r5 - subs r4, r5 - cmp r4, r5 - bhi _08088556 - strh r6, [r2] - mov r2, sp - str r2, [r1] - str r3, [r1, 0x4] - lsrs r0, r4, 1 - mov r2, r12 - orrs r0, r2 - str r0, [r1, 0x8] - ldr r0, [r1, 0x8] - movs r0, 0xE0 - lsls r0, 19 - movs r3, 0x80 - lsls r3, 3 - movs r4, 0 - str r4, [sp, 0x4] - ldr r2, _08088670 @ =0x040000d4 - mov r1, r8 - str r1, [r2] - str r0, [r2, 0x4] - lsrs r0, r3, 2 - movs r1, 0x85 - lsls r1, 24 - orrs r0, r1 - str r0, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r1, 0xA0 - lsls r1, 19 - mov r0, sp - strh r4, [r0] - str r0, [r2] - str r1, [r2, 0x4] - lsrs r3, 1 - movs r0, 0x81 - lsls r0, 24 - orrs r3, r0 - str r3, [r2, 0x8] - ldr r0, [r2, 0x8] - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _08088678 @ =gUnknown_83CC2D8 - movs r0, 0 - movs r2, 0x3 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0x3 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - ldr r0, _0808867C @ =gUnknown_83CC2B8 - bl InitWindows - bl DeactivateAllTextPrinters - movs r0, 0x50 - movs r1, 0xC1 - bl SetGpuReg - movs r0, 0x54 - movs r1, 0x2 - bl SetGpuReg - movs r0, 0x48 - movs r1, 0x1 - bl SetGpuReg - movs r0, 0x4A - movs r1, 0x27 - bl SetGpuReg - movs r1, 0xC1 - lsls r1, 6 - movs r0, 0 - bl SetGpuReg - movs r0, 0 - bl ShowBg - movs r0, 0x1 - bl ShowBg - movs r0, 0x2 - bl ShowBg - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088670: .4byte 0x040000d4 -_08088674: .4byte 0x81000800 -_08088678: .4byte gUnknown_83CC2D8 -_0808867C: .4byte gUnknown_83CC2B8 - thumb_func_end sub_8088530 - - thumb_func_start sub_8088680 -sub_8088680: @ 8088680 - push {r4,r5,lr} - sub sp, 0xC - ldr r5, _080886CC @ =gUnknown_8419E57 - movs r0, 0 - adds r1, r5, 0 - movs r2, 0 - bl GetStringWidth - movs r4, 0xE4 - subs r4, r0 - movs r0, 0x2 - movs r1, 0xFF - bl FillWindowPixelBuffer - lsls r4, 24 - lsrs r4, 24 - ldr r0, _080886D0 @ =gUnknown_83CC360 - str r0, [sp] - movs r0, 0 - str r0, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x2 - movs r1, 0 - adds r2, r4, 0 - movs r3, 0 - bl AddTextPrinterParameterized3 - movs r0, 0x2 - bl PutWindowTilemap - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080886CC: .4byte gUnknown_8419E57 -_080886D0: .4byte gUnknown_83CC360 - thumb_func_end sub_8088680 - - thumb_func_start sub_80886D4 -sub_80886D4: @ 80886D4 - push {lr} - bl ResetSpriteData - bl ResetPaletteFade - bl FreeAllSpritePalettes - bl ResetTasks - bl ScanlineEffect_Stop - pop {r0} - bx r0 - thumb_func_end sub_80886D4 - - thumb_func_start sub_80886F0 -sub_80886F0: @ 80886F0 - push {lr} - ldr r0, _08088708 @ =gUnknown_2039620 - ldr r0, [r0] - ldrb r1, [r0, 0x12] - cmp r1, 0x1 - beq _0808872E - cmp r1, 0x1 - bgt _0808870C - cmp r1, 0 - beq _08088716 - b _08088768 - .align 2, 0 -_08088708: .4byte gUnknown_2039620 -_0808870C: - cmp r1, 0x2 - beq _0808873A - cmp r1, 0x3 - beq _08088758 - b _08088768 -_08088716: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - b _0808876C -_0808872E: - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - b _0808874C -_0808873A: - ldr r0, _08088754 @ =gUnknown_83CC2E4 - movs r1, 0x10 - movs r2, 0x20 - bl LoadPalette - movs r0, 0x2 - bl stdpal_get - movs r1, 0xF0 -_0808874C: - movs r2, 0x20 - bl LoadPalette - b _0808876C - .align 2, 0 -_08088754: .4byte gUnknown_83CC2E4 -_08088758: - ldr r1, _08088764 @ =0x000001b3 - movs r0, 0x1 - movs r2, 0x30 - bl sub_814FDA0 - b _0808876C - .align 2, 0 -_08088764: .4byte 0x000001b3 -_08088768: - movs r0, 0x1 - b _08088778 -_0808876C: - ldr r0, _0808877C @ =gUnknown_2039620 - ldr r1, [r0] - ldrb r0, [r1, 0x12] - adds r0, 0x1 - strb r0, [r1, 0x12] - movs r0, 0 -_08088778: - pop {r1} - bx r1 - .align 2, 0 -_0808877C: .4byte gUnknown_2039620 - thumb_func_end sub_80886F0 - - thumb_func_start sub_8088780 -sub_8088780: @ 8088780 - push {r4,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080887A0 @ =gUnknown_2039620 - ldr r0, [r1] - ldrb r0, [r0, 0x10] - adds r3, r1, 0 - cmp r0, 0x5 - bls _08088796 - b _080888B6 -_08088796: - lsls r0, 2 - ldr r1, _080887A4 @ =_080887A8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080887A0: .4byte gUnknown_2039620 -_080887A4: .4byte _080887A8 - .align 2, 0 -_080887A8: - .4byte _080887C0 - .4byte _08088894 - .4byte _080887E0 - .4byte _08088878 - .4byte _08088894 - .4byte _080888B0 -_080887C0: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - bl sub_8088444 - ldr r0, _080887DC @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_080887DC: .4byte gUnknown_2039620 -_080887E0: - bl sub_80BF72C - cmp r0, 0x1 - beq _080888B6 - bl sub_80888C0 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x4 - bhi _080888B6 - lsls r0, 2 - ldr r1, _08088800 @ =_08088804 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088800: .4byte _08088804 - .align 2, 0 -_08088804: - .4byte _080888B6 - .4byte _08088818 - .4byte _08088824 - .4byte _08088858 - .4byte _08088868 -_08088818: - ldr r0, _08088820 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088820: .4byte gUnknown_2039620 -_08088824: - ldr r4, _08088854 @ =gUnknown_2039620 - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r1, [r0] - movs r2, 0x90 - lsls r2, 1 - movs r3, 0xD5 - lsls r3, 1 - movs r0, 0x1 - bl LoadBgTiles - ldr r0, [r4] - ldrb r0, [r0, 0xA] - bl GetUserFrameGraphicsInfo - ldr r0, [r0, 0x4] - movs r1, 0x20 - movs r2, 0x20 - bl LoadPalette - ldr r0, [r4] - b _0808886C - .align 2, 0 -_08088854: .4byte gUnknown_2039620 -_08088858: - ldr r0, _08088864 @ =gUnknown_2039620 - ldr r0, [r0] - ldrh r0, [r0, 0xE] - bl sub_8088DE0 - b _080888B6 - .align 2, 0 -_08088864: .4byte gUnknown_2039620 -_08088868: - ldr r0, _08088874 @ =gUnknown_2039620 - ldr r0, [r0] -_0808886C: - ldrb r0, [r0, 0xE] - bl sub_80889A8 - b _080888B6 - .align 2, 0 -_08088874: .4byte gUnknown_2039620 -_08088878: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r0, _08088890 @ =gUnknown_2039620 - ldr r1, [r0] - b _080888A2 - .align 2, 0 -_08088890: .4byte gUnknown_2039620 -_08088894: - ldr r0, _080888AC @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _080888B6 - ldr r1, [r3] -_080888A2: - ldrb r0, [r1, 0x10] - adds r0, 0x1 - strb r0, [r1, 0x10] - b _080888B6 - .align 2, 0 -_080888AC: .4byte gPaletteFade -_080888B0: - adds r0, r2, 0 - bl sub_8088B00 -_080888B6: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088780 - - thumb_func_start sub_80888C0 -sub_80888C0: @ 80888C0 - push {r4,lr} - ldr r3, _080888EC @ =gMain - ldrh r1, [r3, 0x30] - movs r0, 0x10 - ands r0, r1 - cmp r0, 0 - beq _08088906 - ldr r2, _080888F0 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r0, 1 - adds r3, r1, r0 - ldrh r4, [r3] - ldr r1, _080888F4 @ =gUnknown_83CC304 - adds r0, r1 - ldrh r0, [r0] - subs r0, 0x1 - cmp r4, r0 - bne _080888F8 - movs r0, 0 - b _080888FA - .align 2, 0 -_080888EC: .4byte gMain -_080888F0: .4byte gUnknown_2039620 -_080888F4: .4byte gUnknown_83CC304 -_080888F8: - adds r0, r4, 0x1 -_080888FA: - strh r0, [r3] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - beq _08088930 - b _0808893C -_08088906: - movs r0, 0x20 - ands r0, r1 - cmp r0, 0 - beq _08088940 - ldr r2, _08088934 @ =gUnknown_2039620 - ldr r1, [r2] - ldrh r0, [r1, 0xE] - lsls r3, r0, 1 - adds r1, r3 - ldrh r0, [r1] - cmp r0, 0 - bne _08088924 - ldr r0, _08088938 @ =gUnknown_83CC304 - adds r0, r3, r0 - ldrh r0, [r0] -_08088924: - subs r0, 0x1 - strh r0, [r1] - ldr r0, [r2] - ldrh r0, [r0, 0xE] - cmp r0, 0x5 - bne _0808893C -_08088930: - movs r0, 0x2 - b _080889A0 - .align 2, 0 -_08088934: .4byte gUnknown_2039620 -_08088938: .4byte gUnknown_83CC304 -_0808893C: - movs r0, 0x4 - b _080889A0 -_08088940: - movs r0, 0x40 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08088964 - ldr r0, _0808895C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0 - bne _08088960 - movs r0, 0x6 - b _08088982 - .align 2, 0 -_0808895C: .4byte gUnknown_2039620 -_08088960: - subs r0, 0x1 - b _08088982 -_08088964: - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08088988 - ldr r0, _0808897C @ =gUnknown_2039620 - ldr r1, [r0] - ldrh r0, [r1, 0xE] - cmp r0, 0x6 - bne _08088980 - strh r2, [r1, 0xE] - b _08088984 - .align 2, 0 -_0808897C: .4byte gUnknown_2039620 -_08088980: - adds r0, 0x1 -_08088982: - strh r0, [r1, 0xE] -_08088984: - movs r0, 0x3 - b _080889A0 -_08088988: - ldrh r1, [r3, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _0808899A - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0808899E -_0808899A: - movs r0, 0x1 - b _080889A0 -_0808899E: - movs r0, 0 -_080889A0: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_80888C0 - - thumb_func_start sub_80889A8 -sub_80889A8: @ 80889A8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x30 - lsls r0, 24 - lsrs r5, r0, 24 - add r4, sp, 0x2C - ldr r1, _08088A08 @ =gUnknown_83CC363 - adds r0, r4, 0 - movs r2, 0x3 - bl memcpy - movs r0, 0x82 - mov r8, r0 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r0, 0x1 - muls r0, r5 - adds r0, 0x2 - lsls r0, 24 - lsrs r7, r0, 24 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x46 - str r1, [sp] - str r0, [sp, 0x4] - movs r0, 0x1 - movs r1, 0x1 - movs r2, 0x82 - adds r3, r7, 0 - bl FillWindowPixelRect - adds r6, r4, 0 - cmp r5, 0x5 - bhi _08088ADE - lsls r0, r5, 2 - ldr r1, _08088A0C @ =_08088A10 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08088A08: .4byte gUnknown_83CC363 -_08088A0C: .4byte _08088A10 - .align 2, 0 -_08088A10: - .4byte _08088A28 - .4byte _08088A38 - .4byte _08088A48 - .4byte _08088A58 - .4byte _08088A68 - .4byte _08088A9C -_08088A28: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A34 @ =gUnknown_83CC330 - b _08088A72 - .align 2, 0 -_08088A34: .4byte gUnknown_83CC330 -_08088A38: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A44 @ =gUnknown_83CC33C - b _08088A72 - .align 2, 0 -_08088A44: .4byte gUnknown_83CC33C -_08088A48: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A54 @ =gUnknown_83CC344 - b _08088A72 - .align 2, 0 -_08088A54: .4byte gUnknown_83CC344 -_08088A58: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A64 @ =gUnknown_83CC34C - b _08088A72 - .align 2, 0 -_08088A64: .4byte gUnknown_83CC34C -_08088A68: - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - ldr r2, _08088A94 @ =gUnknown_83CC354 -_08088A72: - ldr r0, _08088A98 @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r0, [r0] - lsls r0, 2 - adds r0, r2 - ldr r0, [r0] - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 - b _08088ADE - .align 2, 0 -_08088A94: .4byte gUnknown_83CC354 -_08088A98: .4byte gUnknown_2039620 -_08088A9C: - ldr r1, _08088AF8 @ =gUnknown_8419E52 - add r0, sp, 0xC - bl StringCopy - add r4, sp, 0x20 - ldr r0, _08088AFC @ =gUnknown_2039620 - ldr r0, [r0] - lsls r1, r5, 1 - adds r0, r1 - ldrh r1, [r0] - adds r1, 0x1 - adds r0, r4, 0 - movs r2, 0x1 - movs r3, 0x2 - bl ConvertIntToDecimalStringN - add r0, sp, 0xC - adds r1, r4, 0 - movs r2, 0x3 - bl StringAppendN - str r6, [sp] - movs r0, 0x1 - negs r0, r0 - str r0, [sp, 0x4] - add r0, sp, 0xC - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - mov r2, r8 - adds r3, r7, 0 - bl AddTextPrinterParameterized3 -_08088ADE: - movs r0, 0x1 - bl PutWindowTilemap - movs r0, 0x1 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0x30 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08088AF8: .4byte gUnknown_8419E52 -_08088AFC: .4byte gUnknown_2039620 - thumb_func_end sub_80889A8 - - thumb_func_start sub_8088B00 -sub_8088B00: @ 8088B00 - push {r4-r6,lr} - mov r6, r8 - push {r6} - mov r8, r0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - ldr r1, _08088BBC @ =gFieldCallback - ldr r0, _08088BC0 @ =sub_807DF64 - str r0, [r1] - ldr r0, _08088BC4 @ =gMain - ldr r0, [r0, 0x8] - bl SetMainCallback2 - bl FreeAllWindowBuffers - ldr r3, _08088BC8 @ =gSaveBlock2Ptr - ldr r5, [r3] - ldr r4, _08088BCC @ =gUnknown_2039620 - ldr r0, [r4] - movs r2, 0x7 - ldrb r1, [r0] - ands r1, r2 - ldrb r2, [r5, 0x14] - movs r0, 0x8 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r5, [r3] - ldr r0, [r4] - movs r6, 0x1 - ldrb r1, [r0, 0x2] - ands r1, r6 - lsls r1, 2 - ldrb r2, [r5, 0x15] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x4] - ands r1, r6 - lsls r1, 1 - ldrb r2, [r5, 0x15] - movs r0, 0x3 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0x6] - ands r1, r6 - ldrb r2, [r5, 0x15] - movs r0, 0x2 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x15] - ldr r1, [r3] - ldr r0, [r4] - ldrh r0, [r0, 0x8] - movs r6, 0 - strb r0, [r1, 0x13] - ldr r5, [r3] - ldr r0, [r4] - ldrb r1, [r0, 0xA] - lsls r1, 3 - ldrb r2, [r5, 0x14] - movs r0, 0x7 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x14] - ldr r0, [r3] - ldrb r0, [r0, 0x15] - lsls r0, 31 - lsrs r0, 31 - bl SetPokemonCryStereo - ldr r0, [r4] - bl Free - str r6, [r4] - mov r0, r8 - bl DestroyTask - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088BBC: .4byte gFieldCallback -_08088BC0: .4byte sub_807DF64 -_08088BC4: .4byte gMain -_08088BC8: .4byte gSaveBlock2Ptr -_08088BCC: .4byte gUnknown_2039620 - thumb_func_end sub_8088B00 - - thumb_func_start sub_8088BD0 -sub_8088BD0: @ 8088BD0 - push {lr} - sub sp, 0xC - movs r0, 0 - movs r1, 0x11 - bl FillWindowPixelBuffer - ldr r2, _08088C08 @ =gUnknown_8419DCC - movs r0, 0x1 - str r0, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - add sp, 0xC - pop {r0} - bx r0 - .align 2, 0 -_08088C08: .4byte gUnknown_8419DCC - thumb_func_end sub_8088BD0 - - thumb_func_start sub_8088C0C -sub_8088C0C: @ 8088C0C - push {r4-r6,lr} - mov r6, r8 - push {r6} - sub sp, 0xC - movs r6, 0x2 - ldr r1, _08088D6C @ =0x000001b3 - movs r4, 0x1 - str r4, [sp] - str r4, [sp, 0x4] - movs r5, 0x3 - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDA - lsls r1, 1 - movs r0, 0x1B - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x2 - bl FillBgTilemapBufferRect - ldr r1, _08088D70 @ =0x000001b5 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x2 - bl FillBgTilemapBufferRect - movs r1, 0xDB - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x3 - bl FillBgTilemapBufferRect - movs r1, 0xDC - lsls r1, 1 - str r4, [sp] - str r6, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x3 - bl FillBgTilemapBufferRect - ldr r1, _08088D74 @ =0x000001b9 - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xDD - lsls r1, 1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x5 - bl FillBgTilemapBufferRect - ldr r1, _08088D78 @ =0x000001bb - str r4, [sp] - str r4, [sp, 0x4] - str r5, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x5 - bl FillBgTilemapBufferRect - movs r1, 0xD5 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D7C @ =0x000001ab - movs r0, 0x1A - mov r8, r0 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x6 - bl FillBgTilemapBufferRect - movs r1, 0xD6 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x6 - bl FillBgTilemapBufferRect - ldr r1, _08088D80 @ =0x000001ad - str r4, [sp] - movs r5, 0x10 - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x7 - bl FillBgTilemapBufferRect - ldr r1, _08088D84 @ =0x000001af - str r4, [sp] - str r5, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x7 - bl FillBgTilemapBufferRect - movs r1, 0xD8 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1 - movs r3, 0x13 - bl FillBgTilemapBufferRect - ldr r1, _08088D88 @ =0x000001b1 - mov r0, r8 - str r0, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x2 - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r1, 0xD9 - lsls r1, 1 - str r4, [sp] - str r4, [sp, 0x4] - str r6, [sp, 0x8] - movs r0, 0x1 - movs r2, 0x1C - movs r3, 0x13 - bl FillBgTilemapBufferRect - movs r0, 0x1 - bl CopyBgTilemapBufferToVram - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08088D6C: .4byte 0x000001b3 -_08088D70: .4byte 0x000001b5 -_08088D74: .4byte 0x000001b9 -_08088D78: .4byte 0x000001bb -_08088D7C: .4byte 0x000001ab -_08088D80: .4byte 0x000001ad -_08088D84: .4byte 0x000001af -_08088D88: .4byte 0x000001b1 - thumb_func_end sub_8088C0C - - thumb_func_start sub_8088D8C -sub_8088D8C: @ 8088D8C - push {r4,lr} - sub sp, 0xC - movs r0, 0x1 - movs r1, 0x11 - bl FillWindowPixelBuffer - movs r4, 0 -_08088D9A: - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - adds r1, r4, 0 - muls r1, r0 - adds r1, 0x2 - subs r1, r4 - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08088DDC @ =gUnknown_83CC314 - lsls r0, r4, 2 - adds r0, r2 - ldr r2, [r0] - str r1, [sp] - movs r0, 0xFF - str r0, [sp, 0x4] - movs r0, 0 - str r0, [sp, 0x8] - movs r0, 0x1 - movs r1, 0x2 - movs r3, 0x8 - bl AddTextPrinterParameterized - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x6 - bls _08088D9A - add sp, 0xC - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08088DDC: .4byte gUnknown_83CC314 - thumb_func_end sub_8088D8C - - thumb_func_start sub_8088DE0 -sub_8088DE0: @ 8088DE0 - push {r4,lr} - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - movs r0, 0x2 - movs r1, 0x1 - bl GetFontAttribute - lsls r0, 24 - lsrs r0, 24 - subs r1, r0, 0x1 - adds r2, r4, 0 - muls r2, r1 - adds r2, 0x3A - lsls r2, 16 - lsrs r2, 16 - lsls r1, r2, 8 - adds r2, r0 - orrs r1, r2 - lsls r1, 16 - lsrs r1, 16 - movs r0, 0x44 - bl SetGpuReg - movs r1, 0x87 - lsls r1, 5 - movs r0, 0x40 - bl SetGpuReg - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8088DE0 - - .align 2, 0 @ Don't pad with nop. diff --git a/data/strings.s b/data/strings.s index 101946475..14a4472e3 100644 --- a/data/strings.s +++ b/data/strings.s @@ -2907,25 +2907,25 @@ gUnknown_8419D89:: @ 8419D89 gUnknown_8419DCC:: @ 8419DCC .string "OPTION$" -gUnknown_8419DD3:: @ 0x8419DD3 +gText_TextSpeed:: @ 0x8419DD3 .string "TEXT SPEED$" -gUnknown_8419DDE:: @ 0x8419DDE +gText_BattleScene:: @ 0x8419DDE .string "BATTLE SCENE$" -gUnknown_8419DEB:: @ 0x8419DEB +gText_BattleStyle:: @ 0x8419DEB .string "BATTLE STYLE$" -gUnknown_8419DF8:: @ 0x8419DF8 +gText_Sound:: @ 0x8419DF8 .string "SOUND$" -gUnknown_8419DFE:: @ 0x8419DFE +gText_ButtonMode:: @ 0x8419DFE .string "BUTTON MODE$" -gUnknown_8419E0A:: @ 0x8419E0A +gText_Frame:: @ 0x8419E0A .string "FRAME$" -gUnknown_8419E10:: @ 0x8419E10 +gText_OptionMenuCancel:: @ 0x8419E10 .string "CANCEL$" gUnknown_8419E17:: @ 0x8419E17 diff --git a/include/global.h b/include/global.h index 2f34de1a0..63c6923bd 100644 --- a/include/global.h +++ b/include/global.h @@ -291,11 +291,11 @@ struct SaveBlock2 /*0x012*/ u8 playTimeVBlanks; /*0x013*/ u8 optionsButtonMode; // OPTIONS_BUTTON_MODE_[NORMAL/LR/L_EQUALS_A] /*0x014*/ u16 optionsTextSpeed:3; // OPTIONS_TEXT_SPEED_[SLOW/MID/FAST] - u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes - u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] - u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] - u16 optionsBattleSceneOff:1; // whether battle animations are disabled - u16 regionMapZoom:1; // whether the map is zoomed in + u16 optionsWindowFrameType:5; // Specifies one of the 20 decorative borders for text boxes + /*0x15*/ u16 optionsSound:1; // OPTIONS_SOUND_[MONO/STEREO] + u16 optionsBattleStyle:1; // OPTIONS_BATTLE_STYLE_[SHIFT/SET] + u16 optionsBattleSceneOff:1; // whether battle animations are disabled + u16 regionMapZoom:1; // whether the map is zoomed in /*0x018*/ struct Pokedex pokedex; /*0x090*/ u8 filler_90[0x8]; /*0x098*/ struct Time localTimeOffset; diff --git a/include/strings.h b/include/strings.h index 6ad76e2fa..bdef1b956 100644 --- a/include/strings.h +++ b/include/strings.h @@ -741,4 +741,15 @@ extern const u8 gText_DecimalPoint[]; // map_name_popup extern const u8 gUnknown_841D18D[]; +// options menu +extern const u8 gText_TextSpeed[]; +extern const u8 gText_BattleScene[]; +extern const u8 gText_BattleStyle[]; +extern const u8 gText_Sound[]; +extern const u8 gText_ButtonMode[]; +extern const u8 gText_Frame[]; +extern const u8 gText_OptionMenuCancel[]; +extern const u8 gText_PickSwitchCancel[]; + + #endif //GUARD_STRINGS_H diff --git a/ld_script.txt b/ld_script.txt index d84a70c7a..5a98f75cc 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -128,7 +128,7 @@ SECTIONS { src/wild_encounter.o(.text); asm/field_effect.o(.text); src/scanline_effect.o(.text); - asm/option_menu.o(.text); + src/option_menu.o(.text); src/pokedex.o(.text); asm/trainer_card.o(.text); asm/pokemon_storage_system.o(.text); diff --git a/src/option_menu.c b/src/option_menu.c new file mode 100644 index 000000000..57de35f11 --- /dev/null +++ b/src/option_menu.c @@ -0,0 +1,594 @@ +#include "global.h" +#include "gpu_regs.h" +#include "scanline_effect.h" +#include "text_window_graphics.h" +#include "menu.h" +#include "menu_helpers.h" +#include "task.h" +#include "palette.h" +#include "overworld.h" +#include "malloc.h" +#include "help_system.h" +#include "main.h" +#include "bg.h" +#include "window.h" +#include "text.h" +#include "text_window.h" +#include "string_util.h" +#include "strings.h" +#include "field_fadetransition.h" +#include "gba/m4a_internal.h" + + +// Menu items +enum +{ + MENUITEM_TEXTSPEED = 0, + MENUITEM_BATTLESCENE, + MENUITEM_BATTLESTYLE, + MENUITEM_SOUND, + MENUITEM_BUTTONMODE, + MENUITEM_FRAMETYPE, + MENUITEM_CANCEL, + MENUITEM_COUNT, +}; +// Window Ids +enum +{ + WIN_TEXT_OPTION, + WIN_OPTIONS +}; + +//This file's functions +static void sub_808835C(void); +static void sub_8088374(void); +static void sub_8088430(void); +static void sub_8088444(void); +static void sub_8088454(void); +static void sub_8088514(void); +static void sub_8088530(void); +static void sub_8088680(void); +static void sub_80886D4(void); +static bool8 sub_80886F0(void); +static void sub_8088780(u8 taskId); +static u8 sub_80888C0(void); +static void sub_80889A8(u8 selection); +static void sub_8088B00(u8 taskId); +static void sub_8088BD0(void); +static void sub_8088C0C(void); +static void sub_8088D8C(void); +static void sub_8088DE0(u8 selection); + +extern const u16 gUnknown_83CC304[]; //sOptionsMenuItemCounts +extern const struct BgTemplate gUnknown_83CC2D8[]; +extern const u8 gUnknown_83CC360[]; +extern const u16 gUnknown_83CC2E4[]; +extern const struct WindowTemplate gUnknown_83CC2B8[]; +extern const u8 gUnknown_83CC363[]; +extern const u8 gUnknown_83CC330[]; +extern const u8 gUnknown_83CC33C[]; +extern const u8 gUnknown_83CC344[]; +extern const u8 gUnknown_83CC34C[]; +extern const u8 gUnknown_83CC354[]; +extern const u8 gUnknown_8419E52[]; +extern const u8 gUnknown_8419DCC[]; +extern const u8* gUnknown_83CC314[MENUITEM_COUNT]; +extern const u8 gUnknown_8419E57[]; + +struct OptionsMenu +{ + /*0x00*/ u16 option[7]; + /*0x0E*/ u16 unkE; + /*0x10*/ u8 state3; + /*0x11*/ u8 state; + /*0x12*/ u8 state2; + /*0x13*/ u8 unk13; +}; + +EWRAM_DATA struct OptionsMenu *sOptionsMenu = {0}; + + +//CB2_InitOptionsMenu +static void sub_808835C(void) +{ + RunTasks(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + + +//VBlankCB_OptionsMenu +static void sub_8088374(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + + +//sub_8088388 +void CB2_OptionsMenuFromStartMenu(void) +{ + int i; + + if (gMain.savedCallback == NULL) + gMain.savedCallback = CB2_ReturnToStartMenu; + sOptionsMenu = AllocZeroed(sizeof(struct OptionsMenu)); + sOptionsMenu->state3 = 0; + sOptionsMenu->state2 = 0; + sOptionsMenu->state = 0; + sOptionsMenu->unkE = 0; + sOptionsMenu->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed; + sOptionsMenu->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff; + sOptionsMenu->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle; + sOptionsMenu->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound; + sOptionsMenu->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode; + sOptionsMenu->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType; + + for (i = 0; i < MENUITEM_COUNT-2; i++) + { + if (sOptionsMenu->option[i] > gUnknown_83CC304[i]-1) + sOptionsMenu->option[i] = 0; + } + HelpSystem_SetSomeVariable2(0xD); + SetMainCallback2(sub_8088454); +} + + +//sub_8088430 +static void sub_8088430(void) +{ + SetVBlankCallback(0); + SetHBlankCallback(0); +} + + +//sub_8088444 +static void sub_8088444(void) +{ + SetVBlankCallback(sub_8088374); +} + +//sub_8088454 +static void sub_8088454(void) +{ + int i; + switch (sOptionsMenu->state) + { + case 0: + sub_8088430(); + sOptionsMenu->state++; + break; + case 1: + sub_8088530(); + sOptionsMenu->state++; + break; + case 2: + sub_80886D4(); + sOptionsMenu->state++; + break; + case 3: + if (!(sub_80886F0())); + return; + sOptionsMenu->state++; + break; + case 4: + sub_8088BD0(); + sOptionsMenu->state++; + break; + case 5: + sub_8088C0C(); + sOptionsMenu->state++; + break; + case 6: + sub_8088D8C(); + sOptionsMenu->state++; + break; + case 7: + for (i = 0; i < MENUITEM_COUNT; i++) + sub_80889A8(i); + sOptionsMenu->state++; + break; + case 8: + sub_8088DE0(sOptionsMenu->unkE); + sOptionsMenu->state++; + break; + case 9: + sub_8088680(); + sOptionsMenu->state++; + break; + default: + sub_8088514(); + return; + } +} + +//sub_8088514 +static void sub_8088514(void) +{ + CreateTask(sub_8088780, 0); + SetMainCallback2(sub_808835C); +} + + +//sub_8088530 +static void sub_8088530(void) +{ + void * dest = (void *) VRAM; + DmaClearLarge16(3, dest, VRAM_SIZE, 0x1000); + + DmaClear32(3, (void *)OAM, OAM_SIZE); + DmaClear16(3, (void *)PLTT, PLTT_SIZE); + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(0); + InitBgsFromTemplates(0, gUnknown_83CC2D8, 3); //3 -> ARRAY_COUNT(gUnknown_83CC2D8) + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + ChangeBgX(1, 0, 0); + ChangeBgY(1, 0, 0); + ChangeBgX(2, 0, 0); + ChangeBgY(2, 0, 0); + ChangeBgX(3, 0, 0); + ChangeBgY(3, 0, 0); + InitWindows(gUnknown_83CC2B8); + DeactivateAllTextPrinters(); + SetGpuReg(REG_OFFSET_BLDCNT, 193); + SetGpuReg(REG_OFFSET_BLDY, 2); + SetGpuReg(REG_OFFSET_WININ, 1); + SetGpuReg(REG_OFFSET_WINOUT, 27); + SetGpuReg(0, 0x3040); + ShowBg(0); + ShowBg(1); + ShowBg(2); +}; + +//sub_8088680 +static void sub_8088680(void) +{ + s32 x; + x = 0xE4 - GetStringWidth(0, gUnknown_8419E57, 0); + FillWindowPixelBuffer(WIN_OPTIONS, 0xFF); + AddTextPrinterParameterized3(2, 0, x, 0, gUnknown_83CC360, 0, gUnknown_8419E57); + PutWindowTilemap(2); + CopyWindowToVram(2, 3); +} + + +//sub_80886D4 +static void sub_80886D4(void) +{ + ResetSpriteData(); + ResetPaletteFade(); + FreeAllSpritePalettes(); + ResetTasks(); + ScanlineEffect_Stop(); +} + +//sub_80886F0 +static bool8 sub_80886F0(void) +{ + switch (sOptionsMenu->state2) + { + case 0: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + break; + case 1: + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + break; + case 2: + LoadPalette(gUnknown_83CC2E4, 0x10, 0x20); + LoadPalette(stdpal_get(2), 0xF0, 0x20); + break; + case 3: + sub_814FDA0(1, 0x1B3, 0x30); + break; + default: + return TRUE; + } + sOptionsMenu->state2++; + return FALSE; +} + + +//sub_8088780 +static void sub_8088780(u8 taskId) +{ + switch (sOptionsMenu->state3) + { + case 0: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); + sub_8088444(); + sOptionsMenu->state3++; + break; + case 2: + if (sub_80BF72C) + return; + switch (sub_80888C0()) + { + case 0: + return; + case 1: + sOptionsMenu->state3++; + break; + case 2: + LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->tiles, 0x120, 0x1AA); + LoadPalette(GetUserFrameGraphicsInfo(sOptionsMenu->option[6])->palette, 0x20, 0x20); + sub_80889A8(sOptionsMenu->unkE); + return; + case 3: + sub_8088DE0(sOptionsMenu->unkE); + return; + case 4: + sub_80889A8(sOptionsMenu->unkE); + return; + default: + return; + } + case 3: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); + sOptionsMenu->state3++; + break; + case 1: + case 4: + if (gPaletteFade.active) + return; + sOptionsMenu->state3++; + return; + case 5: + sub_8088B00(taskId); + return; + default: + return; + } +} + + +//OptionsMenu_ProcessInput +static u8 sub_80888C0(void) +{ + u16 current, selection; + if (gMain.newAndRepeatedKeys & DPAD_RIGHT) + { + selection = 2 * sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + + if (current == gUnknown_83CC304[selection] - 1) + sOptionsMenu->option[selection] = 0; + else + sOptionsMenu->option[selection] = current + 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_LEFT) + { + selection = 2*sOptionsMenu->unkE; + current = sOptionsMenu->option[selection]; + if (current == 0) + sOptionsMenu->option[selection] = gUnknown_83CC304[selection] - 1; + else + sOptionsMenu->option[selection] = current - 1; + if (sOptionsMenu->unkE == MENUITEM_FRAMETYPE) + return 2; + else + return 4; + } + else if (gMain.newAndRepeatedKeys & DPAD_UP) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_TEXTSPEED) + sOptionsMenu->unkE = MENUITEM_CANCEL; + else + sOptionsMenu->unkE = selection - 1; + return 3; + } + else if (gMain.newAndRepeatedKeys & DPAD_DOWN) + { + selection = sOptionsMenu->unkE; + if (selection == MENUITEM_CANCEL) + sOptionsMenu->unkE = MENUITEM_TEXTSPEED; + else + sOptionsMenu->unkE = selection + 1; + return 3; + } + else if ((gMain.newKeys & B_BUTTON) || (gMain.newKeys & A_BUTTON)) + { + return 1; + } + else + { + return 0; + } +} + +/* +// must match with goto :( +bool sub_80888C0() +{ + int v0; // r0@2 + _WORD *v1; // r3@2 + int v2; // r4@2 + __int16 v3; // r0@3 + int v4; // r3@8 + __int16 v5; // r0@8 + int v7; // r1@14 + signed __int16 v8; // r0@15 + int v9; // r0@18 + + if (gMain.buttons4_new_and_keyrepeat & DPAD_RIGHT) + { + v0 = 2 * *(_WORD *)(sOptionsMenu + 14); + v1 = (_WORD *)(sOptionsMenu + v0); + v2 = *(_WORD *)(sOptionsMenu + v0); + if ( v2 == *(_WORD *)((char *)&sOptionsMenuItemCounts + v0) - 1 ) + v3 = 0; + else + v3 = v2 + 1; + *v1 = v3; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & DPAD_LEFT ) + { + v4 = 2 * *(_WORD *)(sOptionsMenu + 14); + v5 = *(_WORD *)(sOptionsMenu + v4); + if ( !*(_WORD *)(sOptionsMenu + v4) ) + v5 = *(_WORD *)((char *)&sOptionsMenuItemCounts + v4); + *(_WORD *)(sOptionsMenu + v4) = v5 - 1; + if ( *(_WORD *)(sOptionsMenu + 14) != 5 ) + return 4; + return 2; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x40 ) + { + v7 = sOptionsMenu; + if ( *(_WORD *)(sOptionsMenu + 14) ) + v8 = *(_WORD *)(sOptionsMenu + 14) - 1; + else + v8 = 6; + goto LABEL_21; + } + if ( gMain.buttons4_new_and_keyrepeat & 0x80 ) + { + v7 = sOptionsMenu; + v9 = *(_WORD *)(sOptionsMenu + 14); + if ( v9 == 6 ) + { + *(_WORD *)(sOptionsMenu + 14) = 0; + return 3; + } + v8 = v9 + 1; +LABEL_21: + *(_WORD *)(v7 + 14) = v8; + return 3; + } + return gMain.buttons3_new_remapped & 2 || gMain.buttons3_new_remapped & 1; +} +*/ + + +//sub_80889A8 +static void sub_80889A8(u8 selection) +{ + u8* dst; + u8* str; + u8* v8; + u8 x, y; + + x = 0x82; + memcpy(dst, gUnknown_83CC363, 3); + y = ((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) - 1) * selection) + 2; + FillWindowPixelRect(1, 1, x, y, 0x46, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT)); + switch (selection) + { + case MENUITEM_TEXTSPEED: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC330); + break; + case MENUITEM_BATTLESCENE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC33C); + break; + case MENUITEM_BATTLESTYLE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC344); + break; + case MENUITEM_SOUND: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC34C); + break; + case MENUITEM_BUTTONMODE: + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, gUnknown_83CC354); + break; + case MENUITEM_FRAMETYPE: + StringCopy(str, gUnknown_8419E52); + ConvertIntToDecimalStringN(v8, sOptionsMenu->option[2*selection] + 1, 1, 2); + StringAppendN(str, v8, 3); + AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str); + break; + default: + break; + } + PutWindowTilemap(1); + CopyWindowToVram(1, 3); +} + + +//sub_8088B00 +static void sub_8088B00(u8 taskId) +{ + gFieldCallback = sub_807DF64; + SetMainCallback2(gMain.savedCallback); + FreeAllWindowBuffers(); + + gSaveBlock2Ptr->optionsTextSpeed = sOptionsMenu->option[MENUITEM_TEXTSPEED] & 0x7; + gSaveBlock2Ptr->optionsBattleSceneOff = sOptionsMenu->option[MENUITEM_BATTLESCENE] & 0x1; + gSaveBlock2Ptr->optionsBattleStyle = sOptionsMenu->option[MENUITEM_BATTLESTYLE] & 0x1; + gSaveBlock2Ptr->optionsSound = sOptionsMenu->option[MENUITEM_SOUND] & 0x1; + gSaveBlock2Ptr->optionsButtonMode = sOptionsMenu->option[MENUITEM_BUTTONMODE]; + gSaveBlock2Ptr->optionsWindowFrameType = sOptionsMenu->option[MENUITEM_FRAMETYPE]; + + SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound); + Free(sOptionsMenu); + sOptionsMenu = NULL; + DestroyTask(taskId); +} + + +//sub_8088BD0 +static void sub_8088BD0(void) +{ + FillWindowPixelBuffer(0, 0x11); + AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gUnknown_8419DCC, 8, 1, TEXT_SPEED_FF, NULL); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + + +//sub_8088C0C +static void sub_8088C0C(void) +{ + FillBgTilemapBufferRect(1, 0x1B3, 1, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B4, 2, 2, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1B5, 0x1C, 2, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1B6, 1, 3, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B8, 1, 0x1C, 1, 2, 3); + FillBgTilemapBufferRect(1, 0x1B9, 1, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1BA, 2, 5, 0x1B, 1, 3); + FillBgTilemapBufferRect(1, 0x1BB, 0x1C, 5, 1, 1, 3); + FillBgTilemapBufferRect(1, 0x1AA, 1, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, 2); + FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, 2); + FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, 2); + FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, 2); + CopyBgTilemapBufferToVram(1); +} + + +//sub_8088D8C +static void sub_8088D8C(void) +{ + int i; + u8 attr; + + FillWindowPixelBuffer(1, 0x11); + + for (i = 0; i < MENUITEM_COUNT; i++) + { + attr = (((GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))*i) + 2) - i; + AddTextPrinterParameterized(1, 2, gUnknown_83CC314[i], 8, attr, 0xFF, 0); + } +} + + +//sub_8088DE0 +static void sub_8088DE0(u8 selection) +{ + u8 attr; + attr = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT); + SetGpuReg(0x44, ((selection * (attr - 1) + 58) << 8) | (selection * (attr - 1) + 58 + attr)); + SetGpuReg(0x40, 4320); +} + diff --git a/sym_ewram.txt b/sym_ewram.txt index a892eb532..cec65b59c 100644 --- a/sym_ewram.txt +++ b/sym_ewram.txt @@ -226,7 +226,7 @@ gFieldEffectArguments: @ 20386E0 .include "src/scanline_effect.o" .align 2 -gUnknown_2039620: @ 2039620 +sOptionsMenu: @ 2039620 .space 0x4 gTrainerCards: @ 2039624 |