summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-11-21 11:35:50 -0500
committerGitHub <noreply@github.com>2019-11-21 11:35:50 -0500
commit74b05cfb0a5b54acc269a557c765f84431afe559 (patch)
tree11a039ad7737c105d4b81ae653ba899d342b6e57
parent1234d0252cbe2b0001784b10b75f0d339824632d (diff)
parent407d22af8e685076bc92f837266786dfe78e7123 (diff)
Merge pull request #159 from ghoulslash/master
option_menu to src
-rw-r--r--asm/option_menu.s1337
-rw-r--r--data/option_menu.s43
-rw-r--r--data/strings.s48
-rw-r--r--graphics/misc/unk_83cc2e4.pal19
-rw-r--r--include/global.h10
-rw-r--r--include/menu_helpers.h2
-rw-r--r--include/strings.h25
-rw-r--r--include/text.h13
-rw-r--r--ld_script.txt4
-rw-r--r--src/berry_pouch.c6
-rw-r--r--src/item_pc.c2
-rw-r--r--src/menu_helpers.c6
-rw-r--r--src/option_menu.c577
-rw-r--r--src/tm_case.c6
-rw-r--r--sym_ewram.txt3
15 files changed, 677 insertions, 1424 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/option_menu.s b/data/option_menu.s
deleted file mode 100644
index 098e76f31..000000000
--- a/data/option_menu.s
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "constants/maps.h"
-#include "constants/species.h"
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2
-
-gUnknown_83CC2B8:: @ 83CC2B8
- .incbin "baserom.gba", 0x3CC2B8, 0x20
-
-gUnknown_83CC2D8:: @ 83CC2D8
- .incbin "baserom.gba", 0x3CC2D8, 0xC
-
-gUnknown_83CC2E4:: @ 83CC2E4
- .incbin "baserom.gba", 0x3CC2E4, 0x20
-
-gUnknown_83CC304:: @ 83CC304
- .incbin "baserom.gba", 0x3CC304, 0x10
-
-gUnknown_83CC314:: @ 83CC314
- .incbin "baserom.gba", 0x3CC314, 0x1C
-
-gUnknown_83CC330:: @ 83CC330
- .incbin "baserom.gba", 0x3CC330, 0xC
-
-gUnknown_83CC33C:: @ 83CC33C
- .incbin "baserom.gba", 0x3CC33C, 0x8
-
-gUnknown_83CC344:: @ 83CC344
- .incbin "baserom.gba", 0x3CC344, 0x8
-
-gUnknown_83CC34C:: @ 83CC34C
- .incbin "baserom.gba", 0x3CC34C, 0x8
-
-gUnknown_83CC354:: @ 83CC354
- .incbin "baserom.gba", 0x3CC354, 0xC
-
-gUnknown_83CC360:: @ 83CC360
- .incbin "baserom.gba", 0x3CC360, 0x3
-
-gUnknown_83CC363:: @ 83CC363
- .incbin "baserom.gba", 0x3CC363, 0x3
diff --git a/data/strings.s b/data/strings.s
index f39060846..a1892e209 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -2904,73 +2904,73 @@ gUnknown_8419D89:: @ 8419D89
.string "Waiting for the other TRAINER to\n"
.string "finish reading your TRAINER CARD.$"
-gUnknown_8419DCC:: @ 8419DCC
+gText_MenuOption:: @ 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
+gText_TextSpeedSlow:: @ 0x8419E17
.string "SLOW$"
-gUnknown_8419E1C:: @ 0x8419E1C
+gText_TextSpeedMid:: @ 0x8419E1C
.string "MID$"
-gUnknown_8419E20:: @ 0x8419E20
+gText_TextSpeedFast:: @ 0x8419E20
.string "FAST$"
-gUnknown_8419E25:: @ 0x8419E25
+gText_BattleSceneOn:: @ 0x8419E25
.string "ON$"
-gUnknown_8419E28:: @ 0x8419E28
+gText_BattleSceneOff:: @ 0x8419E28
.string "OFF$"
-gUnknown_8419E2C:: @ 0x8419E2C
+gText_BattleStyleShift:: @ 0x8419E2C
.string "SHIFT$"
-gUnknown_8419E32:: @ 0x8419E32
+gText_BattleStyleSet:: @ 0x8419E32
.string "SET$"
-gUnknown_8419E36:: @ 0x8419E36
+gText_SoundMono:: @ 0x8419E36
.string "MONO$"
-gUnknown_8419E3B:: @ 0x8419E3B
+gText_SoundStereo:: @ 0x8419E3B
.string "STEREO$"
-gUnknown_8419E42:: @ 0x8419E42
+gTextJP_Type:: @ 0x8419E42
.string "タイプ$"
-gUnknown_8419E46:: @ 0x8419E46
+gText_ButtonTypeHelp:: @ 0x8419E46
.string "HELP$"
-gUnknown_8419E4B:: @ 0x8419E4B
- .string "LゅA$"
+gText_ButtonTypeLEqualsA:: @ 0x8419E4B
+ .string "L=A$"
-gUnknown_8419E4F:: @ 0x8419E4F
+gText_ButtonTypeLR:: @ 0x8419E4F
.string "LR$"
-gUnknown_8419E52:: @ 8419E52
+gText_FrameType:: @ 8419E52
.string "TYPE$"
-gUnknown_8419E57:: @ 8419E57
+gText_PickSwitchCancel:: @ 8419E57
.string "{DPAD_UPDOWN}PICK {DPAD_LEFTRIGHT}SWITCH {A_BUTTON}{B_BUTTON}CANCEL$"
gUnknown_8419E72:: @ 0x8419E72
diff --git a/graphics/misc/unk_83cc2e4.pal b/graphics/misc/unk_83cc2e4.pal
new file mode 100644
index 000000000..b2172775f
--- /dev/null
+++ b/graphics/misc/unk_83cc2e4.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+255 255 255
+99 99 99
+214 214 206
+230 8 8
+255 189 115
+33 156 8
+148 247 148
+49 82 206
+165 197 247
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/include/global.h b/include/global.h
index 2f34de1a0..744d23eb3 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/menu_helpers.h b/include/menu_helpers.h
index 6ea771500..8d042825c 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -12,7 +12,7 @@ struct YesNoFuncTable
};
bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
-bool8 sub_80BF72C(void);
+bool32 sub_80BF72C(void);
bool8 sub_80BF748(void);
bool8 MenuHelpers_LinkSomething(void);
void SetVBlankHBlankCallbacksToNull(void);
diff --git a/include/strings.h b/include/strings.h
index e71256907..7750b271c 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -763,6 +763,31 @@ extern const u8 gText_DecimalPoint[];
// map_name_popup
extern const u8 gUnknown_841D18D[];
+// option 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_TextSpeedSlow[];
+extern const u8 gText_TextSpeedMid[];
+extern const u8 gText_TextSpeedFast[];
+extern const u8 gText_BattleSceneOn[];
+extern const u8 gText_BattleSceneOff[];
+extern const u8 gText_BattleStyleShift[];
+extern const u8 gText_BattleStyleSet[];
+extern const u8 gText_SoundMono[];
+extern const u8 gText_SoundStereo[];
+extern const u8 gText_ButtonTypeHelp[];
+extern const u8 gText_ButtonTypeLR[];
+extern const u8 gText_ButtonTypeLEqualsA[];
+extern const u8 gText_MenuOption[];
+extern const u8 gText_FrameType[];
+extern const u8 gTextJP_Type[];
+extern const u8 gText_PickSwitchCancel[];
+
// evolution_scene
extern const u8 gText_PkmnIsEvolving[];
extern const u8 gText_CongratsPkmnEvolved[];
diff --git a/include/text.h b/include/text.h
index c4199190f..578a0d735 100644
--- a/include/text.h
+++ b/include/text.h
@@ -81,6 +81,19 @@
#define TEXT_COLOR_TRANSPARENT 0x0
#define TEXT_COLOR_WHITE 0x1
#define TEXT_COLOR_DARK_GREY 0x2
+#define TEXT_COLOR_LIGHT_GREY 0x3
+#define TEXT_COLOR_RED 0x4
+#define TEXT_COLOR_LIGHT_RED 0x5
+#define TEXT_COLOR_GREEN 0x6
+#define TEXT_COLOR_LIGHT_GREEN 0x7
+#define TEXT_COLOR_BLUE 0x8
+#define TEXT_COLOR_LIGHT_BLUE 0x9
+#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white
+#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green
+#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white
+#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine
+#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green
+#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean
// battle placeholders are located in battle_message.h
#define EXT_CTRL_CODE_COLOR 0x1
diff --git a/ld_script.txt b/ld_script.txt
index 16e7b576c..8141efec6 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);
@@ -432,7 +432,7 @@ SECTIONS {
data/trainer_see.o(.rodata);
src/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
- data/option_menu.o(.rodata);
+ src/option_menu.o(.rodata);
data/trainer_card.o(.rodata);
data/pokemon_storage_system.o(.rodata);
src/pokemon_icon.o(.rodata);
diff --git a/src/berry_pouch.c b/src/berry_pouch.c
index f6b976ba3..b8b66c0bc 100644
--- a/src/berry_pouch.c
+++ b/src/berry_pouch.c
@@ -457,7 +457,7 @@ static void CB2_InitBerryPouch(void)
{
while (1)
{
- if (sub_80BF72C() == TRUE)
+ if ((u8)sub_80BF72C() == TRUE)
break;
if (RunBerryPouchInit() == TRUE)
break;
@@ -934,7 +934,7 @@ static void Task_BerryPouchMain(u8 taskId)
{
s16 * data = gTasks[taskId].data;
s32 menuInput;
- if (!gPaletteFade.active && sub_80BF72C() != TRUE)
+ if (!gPaletteFade.active && (u8)sub_80BF72C() != TRUE)
{
menuInput = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sStaticCnt.listMenuScrollOffset, &sStaticCnt.listMenuSelectedRow);
@@ -1040,7 +1040,7 @@ static void Task_NormalContextMenu(u8 taskId)
static void Task_NormalContextMenu_HandleInput(u8 taskId)
{
s8 input;
- if (sub_80BF72C() != TRUE)
+ if ((u8)sub_80BF72C() != TRUE)
{
input = Menu_ProcessInputNoWrapAround();
switch (input)
diff --git a/src/item_pc.c b/src/item_pc.c
index 8569844b9..60a74ac59 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -384,7 +384,7 @@ static bool8 ItemPc_DoGfxSetup(void)
gMain.state++;
break;
case 20:
- if (sub_80BF72C() != TRUE)
+ if ((u8)sub_80BF72C() != TRUE)
gMain.state++;
break;
default:
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 06e7bb08b..f17bff0d0 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -125,17 +125,17 @@ bool8 MenuHelpers_LinkSomething(void)
return FALSE;
}
-bool8 sub_80BF72C(void)
+bool32 sub_80BF72C(void)
{
if (!MenuHelpers_LinkSomething())
return FALSE;
else
- return sub_8058244();
+ return (u8)sub_8058244();
}
bool8 sub_80BF748(void)
{
- if (sub_80BF72C() == TRUE)
+ if ((u8)sub_80BF72C() == TRUE)
return TRUE;
else if (sub_800B270() != TRUE)
return FALSE;
diff --git a/src/option_menu.c b/src/option_menu.c
new file mode 100644
index 000000000..35fe957be
--- /dev/null
+++ b/src/option_menu.c
@@ -0,0 +1,577 @@
+#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
+};
+
+// RAM symbols
+struct OptionMenu
+{
+ /*0x00*/ u16 option[MENUITEM_COUNT];
+ /*0x0E*/ u16 unkE;
+ /*0x10*/ u8 state3;
+ /*0x11*/ u8 state;
+ /*0x12*/ u8 state2;
+ /*0x13*/ u8 unk13;
+};
+
+static EWRAM_DATA struct OptionMenu *sOptionMenuPtr = NULL;
+
+//Function Declarataions
+static void CB2_InitOptionMenu(void);
+static void VBlankCB_OptionMenu(void);
+static void OptionMenu_InitCallbacks(void);
+static void OptionMenu_SetVBlankCallback(void);
+static void CB2_OptionMenu(void);
+static void SetOptionMenuTask(void);
+static void InitOptionMenuBg(void);
+static void OptionMenu_PickSwitchCancel(void);
+static void OptionMenu_ResetSpriteData(void);
+static bool8 LoadOptionMenuPalette(void);
+static void Task_OptionMenu(u8 taskId);
+static u8 OptionMenu_ProcessInput(void);
+static void BufferOptionMenuString(u8 selection);
+static void CloseAndSaveOptionMenu(u8 taskId);
+static void PrintOptionMenuHeader(void);
+static void sub_8088C0C(void);
+static void LoadOptionMenuItemNames(void);
+static void sub_8088DE0(u16 selection);
+
+// Data Definitions
+static const struct WindowTemplate sOptionMenuWinTemplates[] =
+{
+ {
+ .bg = 1,
+ .tilemapLeft = 2,
+ .tilemapTop = 3,
+ .width = 26,
+ .height = 2,
+ .paletteNum = 1,
+ .baseBlock = 2
+ },
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 7,
+ .width = 26,
+ .height = 12,
+ .paletteNum = 1,
+ .baseBlock = 0x36
+ },
+ {
+ .bg = 2,
+ .tilemapLeft = 0,
+ .tilemapTop = 0,
+ .width = 30,
+ .height = 2,
+ .paletteNum = 0xF,
+ .baseBlock = 0x16e
+ },
+ DUMMY_WIN_TEMPLATE
+};
+
+static const struct BgTemplate sOptionMenuBgTemplates[] =
+{
+ {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 30,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0
+ },
+ {
+ .bg = 0,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0
+ },
+ {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 29,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0
+ },
+};
+
+static const u16 sOptionMenuPalette[] = INCBIN_U16("graphics/misc/unk_83cc2e4.gbapal");
+static const u16 sOptionMenuItemCounts[MENUITEM_COUNT] = {3, 2, 2, 2, 3, 10, 0};
+
+static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] =
+{
+ [MENUITEM_TEXTSPEED] = gText_TextSpeed,
+ [MENUITEM_BATTLESCENE] = gText_BattleScene,
+ [MENUITEM_BATTLESTYLE] = gText_BattleStyle,
+ [MENUITEM_SOUND] = gText_Sound,
+ [MENUITEM_BUTTONMODE] = gText_ButtonMode,
+ [MENUITEM_FRAMETYPE] = gText_Frame,
+ [MENUITEM_CANCEL] = gText_OptionMenuCancel,
+};
+
+static const u8 *const sTextSpeedOptions[] =
+{
+ gText_TextSpeedSlow,
+ gText_TextSpeedMid,
+ gText_TextSpeedFast
+};
+
+static const u8 *const sBattleSceneOptions[] =
+{
+ gText_BattleSceneOn,
+ gText_BattleSceneOff
+};
+
+static const u8 *const sBattleStyleOptions[] =
+{
+ gText_BattleStyleShift,
+ gText_BattleStyleSet
+};
+
+static const u8 *const sSoundOptions[] =
+{
+ gText_SoundMono,
+ gText_SoundStereo
+};
+
+static const u8 *const sButtonTypeOptions[] =
+{
+ gText_ButtonTypeHelp,
+ gText_ButtonTypeLR,
+ gText_ButtonTypeLEqualsA
+};
+
+static const u8 sOptionMenuPickSwitchCancelTextColor[] = {TEXT_DYNAMIC_COLOR_6, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY};
+static const u8 sOptionMenuTextColor[] = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_LIGHT_RED, TEXT_COLOR_RED};
+
+// Functions
+static void CB2_InitOptionMenu(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB_OptionMenu(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void CB2_OptionsMenuFromStartMenu(void)
+{
+ u8 i;
+
+ if (gMain.savedCallback == NULL)
+ gMain.savedCallback = CB2_ReturnToStartMenu;
+ sOptionMenuPtr = AllocZeroed(sizeof(struct OptionMenu));
+ sOptionMenuPtr->state3 = 0;
+ sOptionMenuPtr->state2 = 0;
+ sOptionMenuPtr->state = 0;
+ sOptionMenuPtr->unkE = 0;
+ sOptionMenuPtr->option[MENUITEM_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed;
+ sOptionMenuPtr->option[MENUITEM_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff;
+ sOptionMenuPtr->option[MENUITEM_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle;
+ sOptionMenuPtr->option[MENUITEM_SOUND] = gSaveBlock2Ptr->optionsSound;
+ sOptionMenuPtr->option[MENUITEM_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode;
+ sOptionMenuPtr->option[MENUITEM_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType;
+
+ for (i = 0; i < MENUITEM_COUNT - 1; i++)
+ {
+ if (sOptionMenuPtr->option[i] > (sOptionMenuItemCounts[i]) - 1)
+ sOptionMenuPtr->option[i] = 0;
+ }
+ HelpSystem_SetSomeVariable2(0xD);
+ SetMainCallback2(CB2_OptionMenu);
+}
+
+static void OptionMenu_InitCallbacks(void)
+{
+ SetVBlankCallback(NULL);
+ SetHBlankCallback(NULL);
+}
+
+static void OptionMenu_SetVBlankCallback(void)
+{
+ SetVBlankCallback(VBlankCB_OptionMenu);
+}
+
+static void CB2_OptionMenu(void)
+{
+ u8 i, state;
+ state = sOptionMenuPtr->state;
+ switch (state)
+ {
+ case 0:
+ OptionMenu_InitCallbacks();
+ break;
+ case 1:
+ InitOptionMenuBg();
+ break;
+ case 2:
+ OptionMenu_ResetSpriteData();
+ break;
+ case 3:
+ if (LoadOptionMenuPalette() != TRUE)
+ return;
+ break;
+ case 4:
+ PrintOptionMenuHeader();
+ break;
+ case 5:
+ sub_8088C0C();
+ break;
+ case 6:
+ LoadOptionMenuItemNames();
+ break;
+ case 7:
+ for (i = 0; i < MENUITEM_COUNT; i++)
+ BufferOptionMenuString(i);
+ break;
+ case 8:
+ sub_8088DE0(sOptionMenuPtr->unkE);
+ break;
+ case 9:
+ OptionMenu_PickSwitchCancel();
+ break;
+ default:
+ SetOptionMenuTask();
+ break;
+ }
+ sOptionMenuPtr->state++;
+}
+
+static void SetOptionMenuTask(void)
+{
+ CreateTask(Task_OptionMenu, 0);
+ SetMainCallback2(CB2_InitOptionMenu);
+}
+
+static void InitOptionMenuBg(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, DISPCNT_MODE_0);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sOptionMenuBgTemplates, NELEMS(sOptionMenuBgTemplates));
+ 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(sOptionMenuWinTemplates);
+ DeactivateAllTextPrinters();
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG0 | BLDCNT_EFFECT_BLEND | BLDCNT_EFFECT_LIGHTEN);
+ SetGpuReg(REG_OFFSET_BLDY, BLDCNT_TGT1_BG1);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG0 | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2 | WINOUT_WIN01_CLR);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON);
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+};
+
+static void OptionMenu_PickSwitchCancel(void)
+{
+ s32 x;
+ x = 0xE4 - GetStringWidth(0, gText_PickSwitchCancel, 0);
+ FillWindowPixelBuffer(2, PIXEL_FILL(15));
+ AddTextPrinterParameterized3(2, 0, x, 0, sOptionMenuPickSwitchCancelTextColor, 0, gText_PickSwitchCancel);
+ PutWindowTilemap(2);
+ CopyWindowToVram(2, 3);
+}
+
+static void OptionMenu_ResetSpriteData(void)
+{
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ScanlineEffect_Stop();
+}
+
+static bool8 LoadOptionMenuPalette(void)
+{
+ switch (sOptionMenuPtr->state2)
+ {
+ case 0:
+ LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
+ break;
+ case 1:
+ LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
+ break;
+ case 2:
+ LoadPalette(sOptionMenuPalette, 0x10, 0x20);
+ LoadPalette(stdpal_get(2), 0xF0, 0x20);
+ break;
+ case 3:
+ sub_814FDA0(1, 0x1B3, 0x30);
+ break;
+ default:
+ return TRUE;
+ }
+ sOptionMenuPtr->state2++;
+ return FALSE;
+}
+
+static void Task_OptionMenu(u8 taskId)
+{
+ switch (sOptionMenuPtr->state3)
+ {
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK);
+ OptionMenu_SetVBlankCallback();
+ sOptionMenuPtr->state3++;
+ break;
+ case 2:
+ if (sub_80BF72C() == TRUE)
+ break;
+ switch (OptionMenu_ProcessInput())
+ {
+ case 0:
+ break;
+ case 1:
+ sOptionMenuPtr->state3++;
+ break;
+ case 2:
+ LoadBgTiles(1, GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->tiles, 0x120, 0x1AA);
+ LoadPalette(GetUserFrameGraphicsInfo(sOptionMenuPtr->option[MENUITEM_FRAMETYPE])->palette, 0x20, 0x20);
+ BufferOptionMenuString(sOptionMenuPtr->unkE);
+ break;
+ case 3:
+ sub_8088DE0(sOptionMenuPtr->unkE);
+ break;
+ case 4:
+ BufferOptionMenuString(sOptionMenuPtr->unkE);
+ break;
+ }
+ break;
+ case 3:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK);
+ sOptionMenuPtr->state3++;
+ break;
+ case 1:
+ case 4:
+ if (gPaletteFade.active)
+ return;
+ sOptionMenuPtr->state3++;
+ break;
+ case 5:
+ CloseAndSaveOptionMenu(taskId);
+ break;
+ }
+}
+
+static u8 OptionMenu_ProcessInput(void)
+{
+ u16 current;
+ u16* curr;
+ if (JOY_REPT(DPAD_RIGHT))
+ {
+ current = sOptionMenuPtr->option[(sOptionMenuPtr->unkE)];
+ if (current == (sOptionMenuItemCounts[sOptionMenuPtr->unkE] - 1))
+ sOptionMenuPtr->option[sOptionMenuPtr->unkE] = 0;
+ else
+ sOptionMenuPtr->option[sOptionMenuPtr->unkE] = current + 1;
+ if (sOptionMenuPtr->unkE == MENUITEM_FRAMETYPE)
+ return 2;
+ else
+ return 4;
+ }
+ else if (JOY_REPT(DPAD_LEFT))
+ {
+ curr = &sOptionMenuPtr->option[sOptionMenuPtr->unkE];
+ if (*curr == 0)
+ *curr = sOptionMenuItemCounts[sOptionMenuPtr->unkE] - 1;
+ else
+ --*curr;
+
+ if (sOptionMenuPtr->unkE == MENUITEM_FRAMETYPE)
+ return 2;
+ else
+ return 4;
+ }
+ else if (JOY_REPT(DPAD_UP))
+ {
+ if (sOptionMenuPtr->unkE == MENUITEM_TEXTSPEED)
+ sOptionMenuPtr->unkE = MENUITEM_CANCEL;
+ else
+ sOptionMenuPtr->unkE = sOptionMenuPtr->unkE - 1;
+ return 3;
+ }
+ else if (JOY_REPT(DPAD_DOWN))
+ {
+ if (sOptionMenuPtr->unkE == MENUITEM_CANCEL)
+ sOptionMenuPtr->unkE = MENUITEM_TEXTSPEED;
+ else
+ sOptionMenuPtr->unkE = sOptionMenuPtr->unkE + 1;
+ return 3;
+ }
+ else if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON))
+ {
+ return 1;
+ }
+ else
+ {
+ return 0;
+ }
+}
+
+static void BufferOptionMenuString(u8 selection)
+{
+ u8 str[20];
+ u8 buf[12];
+ u8 dst[3];
+ u8 x, y;
+
+ memcpy(dst, sOptionMenuTextColor, 3);
+ x = 0x82;
+ 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, sTextSpeedOptions[sOptionMenuPtr->option[selection]]);
+ break;
+ case MENUITEM_BATTLESCENE:
+ AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleSceneOptions[sOptionMenuPtr->option[selection]]);
+ break;
+ case MENUITEM_BATTLESTYLE:
+ AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sBattleStyleOptions[sOptionMenuPtr->option[selection]]);
+ break;
+ case MENUITEM_SOUND:
+ AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sSoundOptions[sOptionMenuPtr->option[selection]]);
+ break;
+ case MENUITEM_BUTTONMODE:
+ AddTextPrinterParameterized3(1, 2, x, y, dst, -1, sButtonTypeOptions[sOptionMenuPtr->option[selection]]);
+ break;
+ case MENUITEM_FRAMETYPE:
+ StringCopy(str, gText_FrameType);
+ ConvertIntToDecimalStringN(buf, sOptionMenuPtr->option[selection] + 1, 1, 2);
+ StringAppendN(str, buf, 3);
+ AddTextPrinterParameterized3(1, 2, x, y, dst, -1, str);
+ break;
+ default:
+ break;
+ }
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+}
+
+static void CloseAndSaveOptionMenu(u8 taskId)
+{
+ gFieldCallback = sub_807DF64;
+ SetMainCallback2(gMain.savedCallback);
+ FreeAllWindowBuffers();
+ gSaveBlock2Ptr->optionsTextSpeed = sOptionMenuPtr->option[MENUITEM_TEXTSPEED];
+ gSaveBlock2Ptr->optionsBattleSceneOff = sOptionMenuPtr->option[MENUITEM_BATTLESCENE];
+ gSaveBlock2Ptr->optionsBattleStyle = sOptionMenuPtr->option[MENUITEM_BATTLESTYLE];
+ gSaveBlock2Ptr->optionsSound = sOptionMenuPtr->option[MENUITEM_SOUND];
+ gSaveBlock2Ptr->optionsButtonMode = sOptionMenuPtr->option[MENUITEM_BUTTONMODE];
+ gSaveBlock2Ptr->optionsWindowFrameType = sOptionMenuPtr->option[MENUITEM_FRAMETYPE];
+ SetPokemonCryStereo(gSaveBlock2Ptr->optionsSound);
+ FREE_AND_SET_NULL(sOptionMenuPtr);
+ DestroyTask(taskId);
+}
+
+static void PrintOptionMenuHeader(void)
+{
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ AddTextPrinterParameterized(WIN_TEXT_OPTION, 2, gText_MenuOption, 8, 1, TEXT_SPEED_FF, NULL);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+}
+
+static void sub_8088C0C(void)
+{
+ u8 h;
+ h = 2;
+
+ 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, h, 3);
+ FillBgTilemapBufferRect(1, 0x1B8, 0x1C, 3, 1, h, 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, h);
+ FillBgTilemapBufferRect(1, 0x1AB, 2, 6, 0x1A, 1, h);
+ FillBgTilemapBufferRect(1, 0x1AC, 0x1C, 6, 1, 1, h);
+ FillBgTilemapBufferRect(1, 0x1AD, 1, 7, 1, 0x10, h);
+ FillBgTilemapBufferRect(1, 0x1AF, 0x1C, 7, 1, 0x10, h);
+ FillBgTilemapBufferRect(1, 0x1B0, 1, 0x13, 1, 1, h);
+ FillBgTilemapBufferRect(1, 0x1B1, 2, 0x13, 0x1A, 1, h);
+ FillBgTilemapBufferRect(1, 0x1B2, 0x1C, 0x13, 1, 1, h);
+ CopyBgTilemapBufferToVram(1);
+}
+
+static void LoadOptionMenuItemNames(void)
+{
+ u8 i;
+
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ for (i = 0; i < MENUITEM_COUNT; i++)
+ {
+ AddTextPrinterParameterized(WIN_OPTIONS, 2, sOptionMenuItemsNames[i], 8, (u8)((i * (GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT))) + 2) - i, TEXT_SPEED_FF, NULL);
+ }
+}
+
+static void sub_8088DE0(u16 selection)
+{
+ u16 v1, v2;
+
+ v1 = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT);
+ v2 = selection * (v1 - 1) + 0x3A;
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(v2, v2 + v1));
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(0x10, 0xE0));
+}
diff --git a/src/tm_case.c b/src/tm_case.c
index 260efaa53..25fe9a72c 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -305,7 +305,7 @@ static void CB2_SetUpTMCaseUI_Blocking(void)
{
while (1)
{
- if (sub_80BF72C() == TRUE)
+ if ((u8)sub_80BF72C() == TRUE)
break;
if (DoSetUpTMCaseUI() == TRUE)
break;
@@ -734,7 +734,7 @@ static void Task_TMCaseMain(u8 taskId)
if (!gPaletteFade.active)
{
- if (sub_80BF72C() != TRUE)
+ if ((u8)sub_80BF72C() != TRUE)
{
input = ListMenu_ProcessInput(data[0]);
ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
@@ -815,7 +815,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
{
s8 input;
- if (sub_80BF72C() != TRUE)
+ if ((u8)sub_80BF72C() != TRUE)
{
input = Menu_ProcessInputNoWrapAround();
switch (input)
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 178e86dda..7a25f1726 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -226,8 +226,7 @@ gFieldEffectArguments: @ 20386E0
.include "src/scanline_effect.o"
.align 2
-gUnknown_2039620: @ 2039620
- .space 0x4
+ .include "src/option_menu.o"
gTrainerCards: @ 2039624
.space 0x180