summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDiegoisawesome <Diegoisawesome@users.noreply.github.com>2018-01-21 06:59:13 -0600
committerGitHub <noreply@github.com>2018-01-21 06:59:13 -0600
commit0db23bc215000bbad41968ba5a650e55f86ceb71 (patch)
tree2d42133425d9f4bd20b04b80d506668318ee9283
parent8a60952fc01ada92e029be488481a29da32f47eb (diff)
parente0fbd5daad0646c77d1f587d2763bc707df5d417 (diff)
Merge pull request #164 from DizzyEggg/decompile_option_menu
Decompile option menu
-rw-r--r--asm/battle_anim_80FE840.s2
-rwxr-xr-xasm/battle_frontier_1.s6
-rw-r--r--asm/battle_records.s2
-rw-r--r--asm/berry_tag_screen.s2
-rw-r--r--asm/cable_car.s2
-rw-r--r--asm/contest_painting.s2
-rw-r--r--asm/field_screen.s4
-rw-r--r--asm/intro.s2
-rwxr-xr-xasm/item_menu.s2
-rw-r--r--asm/link.s12
-rw-r--r--asm/main_menu.s12
-rw-r--r--asm/mon_markings.s2
-rw-r--r--asm/option_menu.s1684
-rw-r--r--asm/overworld.s2
-rwxr-xr-xasm/party_menu.s2
-rw-r--r--asm/pokedex.s2
-rwxr-xr-xasm/pokemon_summary_screen.s2
-rwxr-xr-xasm/pokenav.s4
-rwxr-xr-xasm/rayquaza_scene.s6
-rw-r--r--asm/reset_rtc_screen.s2
-rw-r--r--asm/roulette.s2
-rw-r--r--asm/shop.s2
-rw-r--r--asm/start_menu.s4
-rw-r--r--asm/title_screen.s2
-rw-r--r--asm/trainer_card.s12
-rw-r--r--asm/unknown_task.s6
-rw-r--r--data/graphics.s2
-rw-r--r--data/option_menu.s30
-rw-r--r--data/strings.s14
-rw-r--r--data/text_window.s196
-rw-r--r--graphics/misc/option_menu_equals_sign.pngbin0 -> 81 bytes
-rw-r--r--graphics/misc/option_menu_text.pal19
-rw-r--r--include/graphics.h4
-rw-r--r--include/option_menu.h6
-rw-r--r--include/strings.h25
-rw-r--r--include/text_window.h15
-rw-r--r--include/unknown_task.h2
-rw-r--r--ld_script.txt6
-rw-r--r--src/berry_fix_program.c2
-rwxr-xr-xsrc/diploma.c2
-rw-r--r--src/egg_hatch.c4
-rw-r--r--src/evolution_scene.c2
-rw-r--r--src/hall_of_fame.c2
-rw-r--r--src/mail.c2
-rw-r--r--src/main.c4
-rw-r--r--src/option_menu.c662
-rw-r--r--src/pokeblock.c2
-rwxr-xr-xsrc/pokemon_summary_screen.c4
-rwxr-xr-xsrc/save_failed_screen.c3
-rw-r--r--src/starter_choose.c4
-rw-r--r--src/text_window.c114
-rw-r--r--src/wallclock.c2
-rw-r--r--sym_ewram.txt5
53 files changed, 899 insertions, 2016 deletions
diff --git a/asm/battle_anim_80FE840.s b/asm/battle_anim_80FE840.s
index 884383591..031bf2128 100644
--- a/asm/battle_anim_80FE840.s
+++ b/asm/battle_anim_80FE840.s
@@ -18852,7 +18852,7 @@ _0810800C:
negs r0, r0
cmp r1, r0
bne _08108022
- bl remove_some_task
+ bl ScanlineEffect_Stop
adds r0, r7, 0
bl DestroyTask
_08108022:
diff --git a/asm/battle_frontier_1.s b/asm/battle_frontier_1.s
index 8e82de6c6..c2517586e 100755
--- a/asm/battle_frontier_1.s
+++ b/asm/battle_frontier_1.s
@@ -9449,7 +9449,7 @@ _08193AA8:
b _08193BC2
_08193ABA:
bl FreeAllWindowBuffers
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r4, =gUnknown_0203CD7C
ldr r0, [r4]
bl Free
@@ -9494,7 +9494,7 @@ _08193B20:
cmp r6, 0
bne _08193BC2
bl FreeAllWindowBuffers
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r4, =gUnknown_0203CD7C
ldr r0, [r4]
bl Free
@@ -9534,7 +9534,7 @@ _08193B84:
cmp r6, 0
bne _08193BC2
bl FreeAllWindowBuffers
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r4, =gUnknown_0203CD7C
ldr r0, [r4]
bl Free
diff --git a/asm/battle_records.s b/asm/battle_records.s
index c441adc74..bcf82dbb8 100644
--- a/asm/battle_records.s
+++ b/asm/battle_records.s
@@ -1034,7 +1034,7 @@ _0813C6FA:
thumb_func_start sub_813C80C
sub_813C80C: @ 813C80C
push {lr}
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl ResetPaletteFade
diff --git a/asm/berry_tag_screen.s b/asm/berry_tag_screen.s
index 75e50f88d..2a87fbf18 100644
--- a/asm/berry_tag_screen.s
+++ b/asm/berry_tag_screen.s
@@ -119,7 +119,7 @@ _08177D18:
bl clear_scheduled_bg_copies_to_vram
b _08177DDC
_08177D26:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _08177DDC
_08177D2C:
bl ResetPaletteFade
diff --git a/asm/cable_car.s b/asm/cable_car.s
index 092e9a75e..6fd44dd9f 100644
--- a/asm/cable_car.s
+++ b/asm/cable_car.s
@@ -88,7 +88,7 @@ _0814FD20:
bl SetVBlankCallback
movs r0, 0
bl sub_8150B6C
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r3, 0xC0
lsls r3, 19
movs r4, 0xC0
diff --git a/asm/contest_painting.s b/asm/contest_painting.s
index 4e58b4cc3..8bb38eeed 100644
--- a/asm/contest_painting.s
+++ b/asm/contest_painting.s
@@ -107,7 +107,7 @@ _0812FE80:
.4byte _0812FF2A
.4byte _0812FF54
_0812FE94:
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0
bl SetVBlankCallback
bl AllocateMonSpritesGfx
diff --git a/asm/field_screen.s b/asm/field_screen.s
index fc6516b0c..6b49b9c7c 100644
--- a/asm/field_screen.s
+++ b/asm/field_screen.s
@@ -9621,7 +9621,7 @@ _080AFE64:
ldrsh r0, [r4, r3]
cmp r0, 0x1
bne _080AFEB4
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0x2
strh r0, [r4]
b _080AFEC6
@@ -9714,7 +9714,7 @@ _080AFF28:
ldrsh r0, [r4, r3]
cmp r0, 0x1
bne _080AFF78
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0x2
strh r0, [r4]
b _080AFF8A
diff --git a/asm/intro.s b/asm/intro.s
index d9f6e558f..efc36e7d9 100644
--- a/asm/intro.s
+++ b/asm/intro.s
@@ -184,7 +184,7 @@ _0816CCF4:
movs r0, 0
movs r2, 0
bl load_copyright_graphics
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
diff --git a/asm/item_menu.s b/asm/item_menu.s
index db3d38668..1d79852fe 100755
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -343,7 +343,7 @@ _081AAE34:
bl clear_scheduled_bg_copies_to_vram
b _081AB012
_081AAE3E:
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r1, =gMain
movs r2, 0x87
lsls r2, 3
diff --git a/asm/link.s b/asm/link.s
index 05dda2cb7..bb1904ae1 100644
--- a/asm/link.s
+++ b/asm/link.s
@@ -3360,7 +3360,7 @@ c2_800ACD4: @ 800AF30
movs r2, 0x2
bl FillPalette
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r1, =gLinkVSyncDisabled
ldrb r0, [r1]
cmp r0, 0
@@ -28637,7 +28637,7 @@ _08018482:
bl ResetSpriteData
bl FreeAllSpritePalettes
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r0, 0
bl ResetBgsAndClearDma3BusyFlags
ldr r1, =gUnknown_082F0598
@@ -32620,7 +32620,7 @@ sub_801A43C: @ 801A43C
bl ResetPaletteFade
bl ResetSpriteData
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl m4aSoundVSyncOn
ldr r0, =sub_801A418
bl SetVBlankCallback
@@ -45999,7 +45999,7 @@ _080210A0:
movs r0, 0
movs r1, 0
bl SetGpuReg
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl reset_temp_tile_data_buffers
b _080212FC
_080210BE:
@@ -61951,7 +61951,7 @@ sub_8028FF8: @ 8028FF8
lsls r4, 24
lsrs r4, 24
adds r0, r4, 0
- bl sub_8098758
+ bl GetWindowFrameTilesPal
ldr r1, [r0]
movs r2, 0x90
lsls r2, 1
@@ -61959,7 +61959,7 @@ sub_8028FF8: @ 8028FF8
movs r3, 0x1
bl LoadBgTiles
adds r0, r4, 0
- bl sub_8098758
+ bl GetWindowFrameTilesPal
ldr r0, [r0, 0x4]
movs r1, 0xA0
movs r2, 0x20
diff --git a/asm/main_menu.s b/asm/main_menu.s
index 5b50c42de..9d6cba40f 100644
--- a/asm/main_menu.s
+++ b/asm/main_menu.s
@@ -127,7 +127,7 @@ InitMainMenu: @ 802F6F4
movs r1, 0xF0
movs r2, 0x20
bl LoadPalette
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
@@ -1487,7 +1487,7 @@ _08030460:
ldr r0, =gMain
ldr r1, =CB2_ReinitMainMenu
str r1, [r0, 0x8]
- ldr r0, =CB2_OptionsMenu
+ ldr r0, =CB2_InitOptionMenu
b _0803048A
.pool
_08030478:
@@ -1929,7 +1929,7 @@ task_new_game_prof_birch_speech_1: @ 80307B0
movs r1, 0x1
movs r2, 0x10
bl LoadPalette
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetSpriteData
bl FreeAllSpritePalettes
bl dp13_810BB8C
@@ -3708,7 +3708,7 @@ new_game_prof_birch_speech_part2_start: @ 8031678
strh r0, [r4, 0x16]
ldr r0, =0x0000ffc4
strh r0, [r4, 0x10]
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetSpriteData
bl FreeAllSpritePalettes
bl dp13_810BB8C
@@ -4783,7 +4783,7 @@ LoadMainMenuWindowFrameTiles: @ 80320A4
ldr r0, [r6]
ldrb r0, [r0, 0x14]
lsrs r0, 3
- bl sub_8098758
+ bl GetWindowFrameTilesPal
ldr r1, [r0]
movs r2, 0x90
lsls r2, 1
@@ -4793,7 +4793,7 @@ LoadMainMenuWindowFrameTiles: @ 80320A4
ldr r0, [r6]
ldrb r0, [r0, 0x14]
lsrs r0, 3
- bl sub_8098758
+ bl GetWindowFrameTilesPal
ldr r0, [r0, 0x4]
movs r1, 0x20
movs r2, 0x20
diff --git a/asm/mon_markings.s b/asm/mon_markings.s
index 1624fddca..dfc375fdf 100644
--- a/asm/mon_markings.s
+++ b/asm/mon_markings.s
@@ -21,7 +21,7 @@ sub_811F918: @ 811F918
ldr r0, [r0]
ldrb r0, [r0, 0x14]
lsrs r0, 3
- bl sub_8098758
+ bl GetWindowFrameTilesPal
ldr r3, =gUnknown_0203A124
ldr r2, [r3]
ldr r1, [r0]
diff --git a/asm/option_menu.s b/asm/option_menu.s
index 1c554e26f..c3fc4d140 100644
--- a/asm/option_menu.s
+++ b/asm/option_menu.s
@@ -5,1690 +5,6 @@
.text
- thumb_func_start sub_80BA4B0
-sub_80BA4B0: @ 80BA4B0
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80BA4B0
- thumb_func_start sub_80BA4C8
-sub_80BA4C8: @ 80BA4C8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80BA4C8
-
- thumb_func_start CB2_OptionsMenu
-CB2_OptionsMenu: @ 80BA4DC
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xB
- bhi _080BA538
- lsls r0, 2
- ldr r1, =_080BA508
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080BA508:
- .4byte _080BA538
- .4byte _080BA54C
- .4byte _080BA69C
- .4byte _080BA6BC
- .4byte _080BA6E0
- .4byte _080BA718
- .4byte _080BA728
- .4byte _080BA740
- .4byte _080BA748
- .4byte _080BA760
- .4byte _080BA774
- .4byte _080BA80C
-_080BA538:
- movs r0, 0
- bl SetVBlankCallback
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _080BA7F4
- .pool
-_080BA54C:
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r1, sp, 0x8
- mov r8, r1
- add r2, sp, 0x4
- movs r6, 0
- ldr r1, =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080BA56A:
- strh r6, [r2]
- add r0, sp, 0x4
- 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 _080BA56A
- strh r6, [r2]
- add r2, sp, 0x4
- 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, 0x8]
- ldr r2, =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
- add r0, sp, 0x4
- 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, =gUnknown_0855C698
- movs r0, 0
- movs r2, 0x2
- 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, =gUnknown_0855C680
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x1
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0x23
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0xC1
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x4
- bl SetGpuReg
- movs r1, 0xC1
- lsls r1, 6
- movs r0, 0
- bl SetGpuReg
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- b _080BA7EC
- .pool
-_080BA69C:
- bl ResetPaletteFade
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _080BA7F4
- .pool
-_080BA6BC:
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- lsrs r0, 3
- bl sub_8098758
- ldr r1, [r0]
- movs r2, 0x90
- lsls r2, 1
- movs r3, 0xD1
- lsls r3, 1
- movs r0, 0x1
- bl LoadBgTiles
- b _080BA7EC
- .pool
-_080BA6E0:
- ldr r0, =gUnknown_0855C6A0
- movs r1, 0
- movs r2, 0x2
- bl LoadPalette
- ldr r0, =gSaveBlock2Ptr
- ldr r0, [r0]
- ldrb r0, [r0, 0x14]
- lsrs r0, 3
- bl sub_8098758
- ldr r0, [r0, 0x4]
- movs r1, 0x70
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _080BA7F4
- .pool
-_080BA718:
- ldr r0, =gUnknown_0855C604
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- b _080BA7EC
- .pool
-_080BA728:
- movs r0, 0
- bl PutWindowTilemap
- bl sub_80BB0D0
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _080BA7F4
- .pool
-_080BA740:
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- b _080BA7F4
-_080BA748:
- movs r0, 0x1
- bl PutWindowTilemap
- bl sub_80BB104
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_080BA760:
- bl sub_80BB154
- ldr r1, =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _080BA7F4
- .pool
-_080BA774:
- ldr r0, =sub_80BA83C
- movs r1, 0
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r0, 0
- strh r0, [r4, 0x8]
- ldr r0, =gSaveBlock2Ptr
- ldr r2, [r0]
- ldrb r0, [r2, 0x14]
- lsls r0, 29
- lsrs r0, 29
- strh r0, [r4, 0xA]
- ldrb r1, [r2, 0x15]
- lsls r1, 29
- lsrs r1, 31
- strh r1, [r4, 0xC]
- ldrb r1, [r2, 0x15]
- lsls r1, 30
- lsrs r1, 31
- strh r1, [r4, 0xE]
- ldrb r1, [r2, 0x15]
- lsls r1, 31
- lsrs r1, 31
- strh r1, [r4, 0x10]
- ldrb r1, [r2, 0x13]
- strh r1, [r4, 0x12]
- ldrb r1, [r2, 0x14]
- lsrs r1, 3
- strh r1, [r4, 0x14]
- bl sub_80BAC38
- ldrb r0, [r4, 0xC]
- bl sub_80BAD08
- ldrb r0, [r4, 0xE]
- bl sub_80BAD84
- ldrb r0, [r4, 0x10]
- bl sub_80BAE08
- ldrb r0, [r4, 0x12]
- bl sub_80BB028
- ldrb r0, [r4, 0x14]
- bl sub_80BAF0C
- ldrb r0, [r4, 0x8]
- bl sub_80BAB38
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
-_080BA7EC:
- ldr r1, =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
-_080BA7F4:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080BA828
- .pool
-_080BA80C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r0, =sub_80BA4C8
- bl SetVBlankCallback
- ldr r0, =sub_80BA4B0
- bl SetMainCallback2
-_080BA828:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end CB2_OptionsMenu
-
- thumb_func_start sub_80BA83C
-sub_80BA83C: @ 80BA83C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BA85C
- ldr r0, =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, =sub_80BA86C
- str r0, [r1]
-_080BA85C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BA83C
-
- thumb_func_start sub_80BA86C
-sub_80BA86C: @ 80BA86C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _080BA89C
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- movs r2, 0x8
- ldrsh r0, [r1, r2]
- cmp r0, 0x6
- beq _080BA892
- b _080BAA5A
-_080BA892:
- b _080BA8AE
- .pool
-_080BA89C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _080BA8BC
- ldr r0, =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
-_080BA8AE:
- ldr r0, =sub_80BAA64
- str r0, [r1]
- b _080BAA5A
- .pool
-_080BA8BC:
- movs r0, 0x40
- ands r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- cmp r6, 0
- beq _080BA8EC
- ldr r1, =gTasks
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r1
- ldrh r5, [r3, 0x8]
- movs r6, 0x8
- ldrsh r0, [r3, r6]
- adds r7, r1, 0
- cmp r0, 0
- ble _080BA8E8
- subs r0, r5, 0x1
- b _080BA90C
- .pool
-_080BA8E8:
- movs r0, 0x6
- b _080BA90C
-_080BA8EC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080BA924
- ldr r1, =gTasks
- lsls r2, r4, 2
- adds r0, r2, r4
- lsls r0, 3
- adds r3, r0, r1
- ldrh r5, [r3, 0x8]
- movs r7, 0x8
- ldrsh r0, [r3, r7]
- adds r7, r1, 0
- cmp r0, 0x5
- bgt _080BA914
- adds r0, r5, 0x1
-_080BA90C:
- strh r0, [r3, 0x8]
- b _080BA916
- .pool
-_080BA914:
- strh r6, [r3, 0x8]
-_080BA916:
- adds r0, r2, r4
- lsls r0, 3
- adds r0, r7
- ldrb r0, [r0, 0x8]
- bl sub_80BAB38
- b _080BAA5A
-_080BA924:
- ldr r0, =gTasks
- lsls r2, r4, 2
- adds r1, r2, r4
- lsls r1, 3
- adds r1, r0
- movs r3, 0x8
- ldrsh r1, [r1, r3]
- adds r7, r0, 0
- cmp r1, 0x5
- bls _080BA93A
- b _080BAA5A
-_080BA93A:
- lsls r0, r1, 2
- ldr r1, =_080BA94C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .pool
- .align 2, 0
-_080BA94C:
- .4byte _080BA964
- .4byte _080BA98A
- .4byte _080BA9B0
- .4byte _080BA9D6
- .4byte _080BA9FC
- .4byte _080BAA22
-_080BA964:
- adds r4, r2, r4
- lsls r4, 3
- adds r4, r7
- ldrb r5, [r4, 0xA]
- adds r0, r5, 0
- bl sub_80BABDC
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- strh r0, [r4, 0xA]
- movs r6, 0xA
- ldrsh r0, [r4, r6]
- cmp r5, r0
- beq _080BAA46
- adds r0, r1, 0
- bl sub_80BAC38
- b _080BAA46
-_080BA98A:
- adds r4, r2, r4
- lsls r4, 3
- adds r4, r7
- ldrb r5, [r4, 0xC]
- adds r0, r5, 0
- bl sub_80BACE0
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- strh r0, [r4, 0xC]
- movs r7, 0xC
- ldrsh r0, [r4, r7]
- cmp r5, r0
- beq _080BAA46
- adds r0, r1, 0
- bl sub_80BAD08
- b _080BAA46
-_080BA9B0:
- adds r4, r2, r4
- lsls r4, 3
- adds r4, r7
- ldrb r5, [r4, 0xE]
- adds r0, r5, 0
- bl sub_80BAD5C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- strh r0, [r4, 0xE]
- movs r2, 0xE
- ldrsh r0, [r4, r2]
- cmp r5, r0
- beq _080BAA46
- adds r0, r1, 0
- bl sub_80BAD84
- b _080BAA46
-_080BA9D6:
- adds r4, r2, r4
- lsls r4, 3
- adds r4, r7
- ldrb r5, [r4, 0x10]
- adds r0, r5, 0
- bl sub_80BADD8
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- strh r0, [r4, 0x10]
- movs r3, 0x10
- ldrsh r0, [r4, r3]
- cmp r5, r0
- beq _080BAA46
- adds r0, r1, 0
- bl sub_80BAE08
- b _080BAA46
-_080BA9FC:
- adds r4, r2, r4
- lsls r4, 3
- adds r4, r7
- ldrb r5, [r4, 0x12]
- adds r0, r5, 0
- bl sub_80BAFCC
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- strh r0, [r4, 0x12]
- movs r6, 0x12
- ldrsh r0, [r4, r6]
- cmp r5, r0
- beq _080BAA46
- adds r0, r1, 0
- bl sub_80BB028
- b _080BAA46
-_080BAA22:
- adds r4, r2, r4
- lsls r4, 3
- adds r4, r7
- ldrb r5, [r4, 0x14]
- adds r0, r5, 0
- bl sub_80BAE5C
- lsls r0, 24
- lsrs r0, 24
- adds r1, r0, 0
- strh r0, [r4, 0x14]
- movs r7, 0x14
- ldrsh r0, [r4, r7]
- cmp r5, r0
- beq _080BAA46
- adds r0, r1, 0
- bl sub_80BAF0C
-_080BAA46:
- ldr r1, =gUnknown_02039B48
- ldrb r0, [r1]
- cmp r0, 0
- beq _080BAA5A
- movs r0, 0
- strb r0, [r1]
- movs r0, 0x1
- movs r1, 0x2
- bl CopyWindowToVram
-_080BAA5A:
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BA86C
-
- thumb_func_start sub_80BAA64
-sub_80BAA64: @ 80BAA64
- push {r4-r6,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- ldr r6, =gSaveBlock2Ptr
- ldr r3, [r6]
- ldr r1, =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r0, 0x7
- ldrb r1, [r4, 0xA]
- ands r1, r0
- ldrb r2, [r3, 0x14]
- movs r0, 0x8
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x14]
- ldr r3, [r6]
- movs r5, 0x1
- ldrb r1, [r4, 0xC]
- ands r1, r5
- lsls r1, 2
- ldrb r2, [r3, 0x15]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x15]
- ldr r3, [r6]
- ldrb r1, [r4, 0xE]
- ands r1, r5
- lsls r1, 1
- ldrb r2, [r3, 0x15]
- movs r0, 0x3
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x15]
- ldr r3, [r6]
- ldrb r1, [r4, 0x10]
- ands r1, r5
- ldrb r2, [r3, 0x15]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x15]
- ldr r1, [r6]
- ldrh r0, [r4, 0x12]
- movs r5, 0
- strb r0, [r1, 0x13]
- ldr r3, [r6]
- ldrb r1, [r4, 0x14]
- lsls r1, 3
- ldrb r2, [r3, 0x14]
- movs r0, 0x7
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x14]
- movs r0, 0x1
- negs r0, r0
- str r5, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, =sub_80BAB08
- str r0, [r4]
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BAA64
-
- thumb_func_start sub_80BAB08
-sub_80BAB08: @ 80BAB08
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080BAB2C
- adds r0, r2, 0
- bl DestroyTask
- bl FreeAllWindowBuffers
- ldr r0, =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_080BAB2C:
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BAB08
-
- thumb_func_start sub_80BAB38
-sub_80BAB38: @ 80BAB38
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0x87
- lsls r1, 5
- movs r0, 0x40
- bl SetGpuReg
- lsls r4, 4
- adds r1, r4, 0
- adds r1, 0x28
- lsls r1, 8
- adds r4, 0x38
- orrs r1, r4
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x44
- bl SetGpuReg
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80BAB38
-
- thumb_func_start sub_80BAB68
-sub_80BAB68: @ 80BAB68
- push {r4-r6,lr}
- sub sp, 0x1C
- adds r4, r0, 0
- lsls r1, 24
- lsrs r6, r1, 24
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r3, 24
- movs r2, 0
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _080BABA0
-_080BAB84:
- mov r0, sp
- adds r0, r2
- adds r0, 0xC
- strb r1, [r0]
- adds r4, 0x1
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r2, r0, 16
- ldrb r1, [r4]
- adds r0, r1, 0
- cmp r0, 0xFF
- beq _080BABA0
- cmp r2, 0xE
- bls _080BAB84
-_080BABA0:
- cmp r3, 0
- beq _080BABAE
- add r1, sp, 0xC
- movs r0, 0x4
- strb r0, [r1, 0x2]
- movs r0, 0x5
- strb r0, [r1, 0x5]
-_080BABAE:
- mov r1, sp
- adds r1, r2
- adds r1, 0xC
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- add r2, sp, 0xC
- adds r3, r6, 0
- bl PrintTextOnWindow
- add sp, 0x1C
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_80BAB68
-
- thumb_func_start sub_80BABDC
-sub_80BABDC: @ 80BABDC
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080BAC08
- cmp r3, 0x1
- bhi _080BAC00
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- b _080BAC02
- .pool
-_080BAC00:
- movs r3, 0
-_080BAC02:
- ldr r1, =gUnknown_02039B48
- movs r0, 0x1
- strb r0, [r1]
-_080BAC08:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080BAC2C
- cmp r3, 0
- beq _080BAC24
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- b _080BAC26
- .pool
-_080BAC24:
- movs r3, 0x2
-_080BAC26:
- ldr r1, =gUnknown_02039B48
- movs r0, 0x1
- strb r0, [r1]
-_080BAC2C:
- adds r0, r3, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BABDC
-
- thumb_func_start sub_80BAC38
-sub_80BAC38: @ 80BAC38
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- movs r2, 0
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r4, =gText_TextSpeedSlow
- mov r0, sp
- ldrb r3, [r0]
- adds r0, r4, 0
- movs r1, 0x68
- bl sub_80BAB68
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- adds r4, r0, 0
- ldr r0, =gText_TextSpeedMid
- mov r8, r0
- movs r0, 0x1
- mov r1, r8
- movs r2, 0
- bl GetStringWidth
- adds r5, r0, 0
- ldr r6, =gText_TextSpeedFast
- movs r0, 0x1
- adds r1, r6, 0
- movs r2, 0
- bl GetStringWidth
- subs r5, 0x5E
- subs r4, r5
- subs r4, r0
- lsrs r0, r4, 31
- adds r4, r0
- asrs r4, 1
- adds r4, 0x68
- lsls r4, 24
- lsrs r4, 24
- mov r0, sp
- ldrb r3, [r0, 0x1]
- mov r0, r8
- adds r1, r4, 0
- movs r2, 0
- bl sub_80BAB68
- movs r0, 0x1
- adds r1, r6, 0
- movs r2, 0xC6
- bl GetStringRightAlignXOffset
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- ldrb r3, [r0, 0x2]
- adds r0, r6, 0
- movs r2, 0
- bl sub_80BAB68
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BAC38
-
- thumb_func_start sub_80BACE0
-sub_80BACE0: @ 80BACE0
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _080BACFA
- movs r1, 0x1
- eors r2, r1
- ldr r0, =gUnknown_02039B48
- strb r1, [r0]
-_080BACFA:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BACE0
-
- thumb_func_start sub_80BAD08
-sub_80BAD08: @ 80BAD08
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- movs r2, 0
- strb r2, [r1]
- strb r2, [r1, 0x1]
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =gText_BattleSceneOn
- mov r1, sp
- ldrb r3, [r1]
- movs r1, 0x68
- movs r2, 0x10
- bl sub_80BAB68
- ldr r4, =gText_BattleSceneOff
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xC6
- bl GetStringRightAlignXOffset
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- ldrb r3, [r0, 0x1]
- adds r0, r4, 0
- movs r2, 0x10
- bl sub_80BAB68
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BAD08
-
- thumb_func_start sub_80BAD5C
-sub_80BAD5C: @ 80BAD5C
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _080BAD76
- movs r1, 0x1
- eors r2, r1
- ldr r0, =gUnknown_02039B48
- strb r1, [r0]
-_080BAD76:
- adds r0, r2, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BAD5C
-
- thumb_func_start sub_80BAD84
-sub_80BAD84: @ 80BAD84
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- movs r2, 0
- strb r2, [r1]
- strb r2, [r1, 0x1]
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =gText_BattleStyleShift
- mov r1, sp
- ldrb r3, [r1]
- movs r1, 0x68
- movs r2, 0x20
- bl sub_80BAB68
- ldr r4, =gText_BattleStyleSet
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xC6
- bl GetStringRightAlignXOffset
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- ldrb r3, [r0, 0x1]
- adds r0, r4, 0
- movs r2, 0x20
- bl sub_80BAB68
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BAD84
-
- thumb_func_start sub_80BADD8
-sub_80BADD8: @ 80BADD8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x30
- ands r0, r1
- cmp r0, 0
- beq _080BADF8
- movs r4, 0x1
- eors r5, r4
- adds r0, r5, 0
- bl SetPokemonCryStereo
- ldr r0, =gUnknown_02039B48
- strb r4, [r0]
-_080BADF8:
- adds r0, r5, 0
- pop {r4,r5}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BADD8
-
- thumb_func_start sub_80BAE08
-sub_80BAE08: @ 80BAE08
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- movs r2, 0
- strb r2, [r1]
- strb r2, [r1, 0x1]
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, =gText_SoundMono
- mov r1, sp
- ldrb r3, [r1]
- movs r1, 0x68
- movs r2, 0x30
- bl sub_80BAB68
- ldr r4, =gText_SoundStereo
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0xC6
- bl GetStringRightAlignXOffset
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- ldrb r3, [r0, 0x1]
- adds r0, r4, 0
- movs r2, 0x30
- bl sub_80BAB68
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BAE08
-
- thumb_func_start sub_80BAE5C
-sub_80BAE5C: @ 80BAE5C
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080BAEAE
- cmp r4, 0x12
- bhi _080BAE80
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- b _080BAE82
- .pool
-_080BAE80:
- movs r4, 0
-_080BAE82:
- adds r0, r4, 0
- bl sub_8098758
- ldr r1, [r0]
- movs r2, 0x90
- lsls r2, 1
- movs r3, 0xD1
- lsls r3, 1
- movs r0, 0x1
- bl LoadBgTiles
- adds r0, r4, 0
- bl sub_8098758
- ldr r0, [r0, 0x4]
- movs r1, 0x70
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =gUnknown_02039B48
- movs r0, 0x1
- strb r0, [r1]
-_080BAEAE:
- ldr r0, =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080BAEFE
- cmp r4, 0
- beq _080BAED0
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- b _080BAED2
- .pool
-_080BAED0:
- movs r4, 0x13
-_080BAED2:
- adds r0, r4, 0
- bl sub_8098758
- ldr r1, [r0]
- movs r2, 0x90
- lsls r2, 1
- movs r3, 0xD1
- lsls r3, 1
- movs r0, 0x1
- bl LoadBgTiles
- adds r0, r4, 0
- bl sub_8098758
- ldr r0, [r0, 0x4]
- movs r1, 0x70
- movs r2, 0x20
- bl LoadPalette
- ldr r1, =gUnknown_02039B48
- movs r0, 0x1
- strb r0, [r1]
-_080BAEFE:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BAE5C
-
- thumb_func_start sub_80BAF0C
-sub_80BAF0C: @ 80BAF0C
- push {r4-r7,lr}
- sub sp, 0x10
- lsls r0, 24
- movs r1, 0x80
- lsls r1, 17
- adds r0, r1
- lsrs r6, r0, 24
- movs r5, 0
- ldr r1, =gText_FrameTypeNumber
- ldrb r0, [r1]
- ldr r7, =gText_FrameType
- cmp r0, 0xFF
- beq _080BAF44
- adds r2, r1, 0
-_080BAF28:
- mov r0, sp
- adds r1, r0, r5
- adds r0, r5, r2
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r5, r2
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _080BAF44
- cmp r5, 0x5
- bls _080BAF28
-_080BAF44:
- adds r0, r6, 0
- movs r1, 0xA
- bl __udivsi3
- adds r2, r0, 0
- lsls r0, r2, 24
- cmp r0, 0
- beq _080BAF80
- mov r0, sp
- adds r1, r0, r5
- adds r0, r2, 0
- adds r0, 0xA1
- strb r0, [r1]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- mov r1, sp
- adds r4, r1, r5
- adds r0, r6, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r4]
- b _080BAF9E
- .pool
-_080BAF80:
- mov r0, sp
- adds r4, r0, r5
- adds r0, r6, 0
- movs r1, 0xA
- bl __umodsi3
- adds r0, 0xA1
- strb r0, [r4]
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- mov r0, sp
- adds r1, r0, r5
- movs r0, 0x77
- strb r0, [r1]
-_080BAF9E:
- adds r0, r5, 0x1
- lsls r0, 16
- lsrs r5, r0, 16
- mov r0, sp
- adds r1, r0, r5
- movs r0, 0xFF
- strb r0, [r1]
- adds r0, r7, 0
- movs r1, 0x68
- movs r2, 0x50
- movs r3, 0
- bl sub_80BAB68
- mov r0, sp
- movs r1, 0x80
- movs r2, 0x50
- movs r3, 0x1
- bl sub_80BAB68
- add sp, 0x10
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80BAF0C
-
- thumb_func_start sub_80BAFCC
-sub_80BAFCC: @ 80BAFCC
- push {lr}
- lsls r0, 24
- lsrs r3, r0, 24
- ldr r2, =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _080BAFF8
- cmp r3, 0x1
- bhi _080BAFF0
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- b _080BAFF2
- .pool
-_080BAFF0:
- movs r3, 0
-_080BAFF2:
- ldr r1, =gUnknown_02039B48
- movs r0, 0x1
- strb r0, [r1]
-_080BAFF8:
- ldrh r1, [r2, 0x2E]
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _080BB01C
- cmp r3, 0
- beq _080BB014
- subs r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- b _080BB016
- .pool
-_080BB014:
- movs r3, 0x2
-_080BB016:
- ldr r1, =gUnknown_02039B48
- movs r0, 0x1
- strb r0, [r1]
-_080BB01C:
- adds r0, r3, 0
- pop {r1}
- bx r1
- .pool
- thumb_func_end sub_80BAFCC
-
- thumb_func_start sub_80BB028
-sub_80BB028: @ 80BB028
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- lsls r0, 24
- lsrs r0, 24
- mov r1, sp
- movs r2, 0
- strb r2, [r1]
- strb r2, [r1, 0x1]
- strb r2, [r1, 0x2]
- adds r1, r0
- movs r0, 0x1
- strb r0, [r1]
- ldr r4, =gText_ButtonTypeNormal
- mov r0, sp
- ldrb r3, [r0]
- adds r0, r4, 0
- movs r1, 0x68
- movs r2, 0x40
- bl sub_80BAB68
- movs r0, 0x1
- adds r1, r4, 0
- movs r2, 0
- bl GetStringWidth
- adds r4, r0, 0
- ldr r0, =gText_ButtonTypeLR
- mov r8, r0
- movs r0, 0x1
- mov r1, r8
- movs r2, 0
- bl GetStringWidth
- adds r5, r0, 0
- ldr r6, =gText_ButtonTypeLEqualsA
- movs r0, 0x1
- adds r1, r6, 0
- movs r2, 0
- bl GetStringWidth
- subs r5, 0x5E
- subs r4, r5
- subs r4, r0
- lsrs r0, r4, 31
- adds r4, r0
- asrs r4, 1
- adds r4, 0x68
- lsls r4, 24
- lsrs r4, 24
- mov r0, sp
- ldrb r3, [r0, 0x1]
- mov r0, r8
- adds r1, r4, 0
- movs r2, 0x40
- bl sub_80BAB68
- movs r0, 0x1
- adds r1, r6, 0
- movs r2, 0xC6
- bl GetStringRightAlignXOffset
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- mov r0, sp
- ldrb r3, [r0, 0x2]
- adds r0, r6, 0
- movs r2, 0x40
- bl sub_80BAB68
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BB028
-
- thumb_func_start sub_80BB0D0
-sub_80BB0D0: @ 80BB0D0
- push {lr}
- sub sp, 0xC
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r2, =gText_Option
- movs r0, 0x1
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0x1
- movs r3, 0x8
- bl PrintTextOnWindow
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BB0D0
-
- thumb_func_start sub_80BB104
-sub_80BB104: @ 80BB104
- push {r4,r5,lr}
- sub sp, 0xC
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- movs r4, 0
- ldr r5, =gUnknown_0855C664
-_080BB114:
- lsls r0, r4, 2
- adds r0, r5
- ldr r2, [r0]
- lsls r0, r4, 4
- adds r0, 0x1
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x1
- movs r3, 0x8
- bl PrintTextOnWindow
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x6
- bls _080BB114
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BB104
-
- thumb_func_start sub_80BB154
-sub_80BB154: @ 80BB154
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- movs r5, 0x7
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD1
- lsls r1, 1
- movs r2, 0x1
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0x1B
- mov r8, r0
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- ldr r1, =0x000001a3
- movs r2, 0x2
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD2
- lsls r1, 1
- movs r2, 0x1C
- movs r3, 0
- bl FillBgTilemapBufferRect
- str r4, [sp]
- movs r6, 0x2
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- ldr r1, =0x000001a5
- movs r2, 0x1
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- ldr r1, =0x000001a7
- movs r2, 0x1C
- movs r3, 0x1
- bl FillBgTilemapBufferRect
- movs r7, 0xD4
- lsls r7, 1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0x1
- movs r3, 0x3
- bl FillBgTilemapBufferRect
- ldr r0, =0x000001a9
- mov r10, r0
- mov r0, r8
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- mov r1, r10
- movs r2, 0x2
- movs r3, 0x3
- bl FillBgTilemapBufferRect
- movs r0, 0xD5
- lsls r0, 1
- mov r9, r0
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- mov r1, r9
- movs r2, 0x1C
- movs r3, 0x3
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD1
- lsls r1, 1
- movs r2, 0x1
- movs r3, 0x4
- bl FillBgTilemapBufferRect
- movs r0, 0x1A
- mov r8, r0
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- ldr r1, =0x000001a3
- movs r2, 0x2
- movs r3, 0x4
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0xD2
- lsls r1, 1
- movs r2, 0x1C
- movs r3, 0x4
- bl FillBgTilemapBufferRect
- str r4, [sp]
- movs r6, 0x12
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- ldr r1, =0x000001a5
- movs r2, 0x1
- movs r3, 0x5
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r6, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- ldr r1, =0x000001a7
- movs r2, 0x1C
- movs r3, 0x5
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- adds r1, r7, 0
- movs r2, 0x1
- movs r3, 0x13
- bl FillBgTilemapBufferRect
- mov r0, r8
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- mov r1, r10
- movs r2, 0x2
- movs r3, 0x13
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r0, 0x1
- mov r1, r9
- movs r2, 0x1C
- movs r3, 0x13
- bl FillBgTilemapBufferRect
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .pool
- thumb_func_end sub_80BB154
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/overworld.s b/asm/overworld.s
index 61a9352e1..b66748808 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -4122,7 +4122,7 @@ sub_80867D8: @ 80867D8
movs r0, 0
movs r1, 0
bl SetGpuReg
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r2, =0x05000002
mov r1, sp
movs r0, 0
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 27ec779e7..730e90932 100755
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -107,7 +107,7 @@ _081B0290:
b _081B048C
.pool
_081B02AC:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _081B0484
_081B02B2:
bl ResetPaletteFade
diff --git a/asm/pokedex.s b/asm/pokedex.s
index 92130e051..8da7d6df0 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -379,7 +379,7 @@ _080BB582:
b _080BB74C
.pool
_080BB5FC:
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl ResetPaletteFade
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 51f322e1e..0030b33d2 100755
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -2239,7 +2239,7 @@ _081C50E4:
bl clear_scheduled_bg_copies_to_vram
b _081C51A2
_081C50EE:
- bl remove_some_task
+ bl ScanlineEffect_Stop
b _081C51A2
_081C50F4:
bl FreeAllSpritePalettes
diff --git a/asm/pokenav.s b/asm/pokenav.s
index 32d053222..b9cb53492 100755
--- a/asm/pokenav.s
+++ b/asm/pokenav.s
@@ -7095,7 +7095,7 @@ titlescreen_0: @ 81CA92C
movs r0, 0x44
movs r1, 0xA0
bl SetGpuRegBits
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl sub_81CAA3C
ldr r2, =gUnknown_08620384
ldr r0, [r2]
@@ -7122,7 +7122,7 @@ sub_81CA994: @ 81CA994
lsls r1, 6
movs r0, 0
bl ClearGpuRegBits
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r0, =sub_81CA9EC
bl FindTaskIdByFunc
lsls r0, 24
diff --git a/asm/rayquaza_scene.s b/asm/rayquaza_scene.s
index ab04d8660..f60b2a252 100755
--- a/asm/rayquaza_scene.s
+++ b/asm/rayquaza_scene.s
@@ -45,7 +45,7 @@ sub_81D6774: @ 81D6774
push {lr}
bl SetVBlankHBlankCallbacksToNull
bl clear_scheduled_bg_copies_to_vram
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl FreeAllSpritePalettes
bl ResetPaletteFade
bl ResetSpriteData
@@ -1522,7 +1522,7 @@ _081D73D8:
adds r0, r2
ldrh r1, [r4, 0x6]
strh r1, [r0, 0xE]
- bl remove_some_task
+ bl ScanlineEffect_Stop
_081D7428:
ldrh r0, [r4]
adds r0, 0x1
@@ -1774,7 +1774,7 @@ sub_81D7600: @ 81D7600
bl ChangeBgY
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetSpriteData
bl FreeAllSpritePalettes
strh r4, [r5]
diff --git a/asm/reset_rtc_screen.s b/asm/reset_rtc_screen.s
index 1f5ef83d8..ab5e0840c 100644
--- a/asm/reset_rtc_screen.s
+++ b/asm/reset_rtc_screen.s
@@ -887,7 +887,7 @@ _0809EFCA:
movs r1, 0x80
bl ResetOamRange
bl LoadOam
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl dp12_8087EA4
bl ResetSpriteData
bl ResetTasks
diff --git a/asm/roulette.s b/asm/roulette.s
index 9d9e39feb..3568c1911 100644
--- a/asm/roulette.s
+++ b/asm/roulette.s
@@ -423,7 +423,7 @@ _081405F4:
_08140618:
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
bl ResetVramOamAndBgCntRegs
bl ResetAllBgsCoordinates
diff --git a/asm/shop.s b/asm/shop.s
index ccbf458c9..4ecab08ca 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -448,7 +448,7 @@ _080DFE20:
ldr r2, =0x01000100
add r0, sp, 0x8
bl CpuFastSet
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl reset_temp_tile_data_buffers
bl FreeAllSpritePalettes
bl ResetPaletteFade
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 6182c3c27..e8f9c3090 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -653,7 +653,7 @@ _0809FD38:
bl play_some_sound
bl RemoveExtraStartMenuWindows
bl overworld_free_bg_tilemaps
- ldr r0, =CB2_OptionsMenu
+ ldr r0, =CB2_InitOptionMenu
bl SetMainCallback2
ldr r1, =gMain
ldr r0, =sub_8086194
@@ -1510,7 +1510,7 @@ _080A0418:
bl SetGpuReg
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
movs r2, 0xA0
lsls r2, 19
mov r1, sp
diff --git a/asm/title_screen.s b/asm/title_screen.s
index b5286d049..54c1b5353 100644
--- a/asm/title_screen.s
+++ b/asm/title_screen.s
@@ -614,7 +614,7 @@ _080AA8C4:
ldr r0, =gUnknown_08DDE458
ldr r1, =0x0600d800
bl LZ77UnCompVram
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl ResetTasks
bl ResetSpriteData
bl FreeAllSpritePalettes
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index ab1b199e7..709e3e8f3 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -1556,7 +1556,7 @@ sub_80C3404: @ 80C3404
sub_80C3414: @ 80C3414
push {lr}
bl ResetTasks
- bl remove_some_task
+ bl ScanlineEffect_Stop
ldr r0, =sub_80C2760
movs r1, 0
bl CreateTask
@@ -3976,7 +3976,7 @@ sub_80C4998: @ 80C4998
bl HideBg
movs r0, 0x3
bl HideBg
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl dp12_8087EA4
movs r1, 0
ldr r0, =gUnknown_02038C28
@@ -5310,7 +5310,7 @@ _080C54AC:
_080C54D8:
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
movs r0, 0x2
bl DisableInterrupts
@@ -5594,7 +5594,7 @@ _080C577C:
bl HideBg
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C57E4
_080C57A6:
@@ -7189,7 +7189,7 @@ _080C64F0:
_080C6510:
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C6694
_080C6520:
@@ -7400,7 +7400,7 @@ _080C66FC:
_080C6722:
movs r0, 0
bl SetVBlankCallback
- bl remove_some_task
+ bl ScanlineEffect_Stop
bl SetVBlankHBlankCallbacksToNull
b _080C67A4
_080C6732:
diff --git a/asm/unknown_task.s b/asm/unknown_task.s
index f6b96287e..a8672ac8f 100644
--- a/asm/unknown_task.s
+++ b/asm/unknown_task.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start remove_some_task
-remove_some_task: @ 80B9FB8
+ thumb_func_start ScanlineEffect_Stop
+ScanlineEffect_Stop: @ 80B9FB8
push {r4,lr}
ldr r4, =gUnknown_02039B28
movs r0, 0
@@ -32,7 +32,7 @@ _080B9FE2:
pop {r0}
bx r0
.pool
- thumb_func_end remove_some_task
+ thumb_func_end ScanlineEffect_Stop
thumb_func_start dp12_8087EA4
dp12_8087EA4: @ 80B9FF8
diff --git a/data/graphics.s b/data/graphics.s
index 11244eb99..8527e570d 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -5041,7 +5041,7 @@ gUnknown_08DDD704:: @ 8DDD704
.incbin "graphics/unknown/unknown_DDD704.bin" @ textbox tilemap??
.align 2
-gUnknown_08DDD728:: @ 8DDD728
+gMessageBox_Pal:: @ 8DDD728
.incbin "graphics/text_window/message_box.gbapal"
.align 2
diff --git a/data/option_menu.s b/data/option_menu.s
deleted file mode 100644
index 0f8608f4b..000000000
--- a/data/option_menu.s
+++ /dev/null
@@ -1,30 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
-gUnknown_0855C604:: @ 855C604
- .incbin "graphics/interface/855C604.gbapal"
- .incbin "graphics/interface/855C624.bin"
-
-gUnknown_0855C664:: @ 855C664
- .4byte gUnknown_085EE590
- .4byte gUnknown_085EE59B
- .4byte gUnknown_085EE5A8
- .4byte gUnknown_085EE5B5
- .4byte gUnknown_085EE5C8
- .4byte gUnknown_085EE5BB
- .4byte gUnknown_085EE5C1
-
-gUnknown_0855C680:: @ 855C680
- window_template 1, 2, 1, 0x1A, 2, 1, 2
- window_template 0, 2, 5, 0x1A, 14, 1, 0x36
- null_window_template
-
-gUnknown_0855C698:: @ 855C698
- .4byte 0x1E5
- .4byte 0x11F4
-
-gUnknown_0855C6A0:: @ 855C6A0
- .2byte 0x7E51, 0
diff --git a/data/strings.s b/data/strings.s
index 360f26711..75b430dd1 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4379,25 +4379,25 @@ gText_ABtnTitleScreen:: @ 85EE572
gText_Option:: @ 85EE589
.string "OPTION$"
-gUnknown_085EE590:: @ 85EE590
+gText_TextSpeed:: @ 85EE590
.string "TEXT SPEED$"
-gUnknown_085EE59B:: @ 85EE59B
+gText_BattleScene:: @ 85EE59B
.string "BATTLE SCENE$"
-gUnknown_085EE5A8:: @ 85EE5A8
+gText_BattleStyle:: @ 85EE5A8
.string "BATTLE STYLE$"
-gUnknown_085EE5B5:: @ 85EE5B5
+gText_Sound:: @ 85EE5B5
.string "SOUND$"
-gUnknown_085EE5BB:: @ 85EE5BB
+gText_Frame:: @ 85EE5BB
.string "FRAME$"
-gUnknown_085EE5C1:: @ 85EE5C1
+gText_OptionMenuCancel:: @ 85EE5C1
.string "CANCEL$"
-gUnknown_085EE5C8:: @ 85EE5C8
+gText_ButtonMode:: @ 85EE5C8
.string "BUTTON MODE$"
gText_TextSpeedSlow:: @ 85EE5D4
diff --git a/data/text_window.s b/data/text_window.s
deleted file mode 100644
index 8acbe5a25..000000000
--- a/data/text_window.s
+++ /dev/null
@@ -1,196 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
-
- .align 2
-gTextWindowFrame1_Gfx:: @ 850E87C
- .incbin "graphics/text_window/1.4bpp"
-
- .align 2
-gTextWindowFrame2_Gfx:: @ 850E99C
- .incbin "graphics/text_window/2.4bpp"
-
- .align 2
-gTextWindowFrame3_Gfx:: @ 850EABC
- .incbin "graphics/text_window/3.4bpp"
-
- .align 2
-gTextWindowFrame4_Gfx:: @ 850EBDC
- .incbin "graphics/text_window/4.4bpp"
-
- .align 2
-gTextWindowFrame5_Gfx:: @ 850ECFC
- .incbin "graphics/text_window/5.4bpp"
-
- .align 2
-gTextWindowFrame6_Gfx:: @ 850EE1C
- .incbin "graphics/text_window/6.4bpp"
-
- .align 2
-gTextWindowFrame7_Gfx:: @ 850EF3C
- .incbin "graphics/text_window/7.4bpp"
-
- .align 2
-gTextWindowFrame8_Gfx:: @ 850F05C
- .incbin "graphics/text_window/8.4bpp"
-
- .align 2
-gTextWindowFrame9_Gfx:: @ 850F17C
- .incbin "graphics/text_window/9.4bpp"
-
- .align 2
-gTextWindowFrame10_Gfx:: @ 850F29C
- .incbin "graphics/text_window/10.4bpp"
-
- .align 2
-gTextWindowFrame11_Gfx:: @ 850F3BC
- .incbin "graphics/text_window/11.4bpp"
-
- .align 2
-gTextWindowFrame12_Gfx:: @ 850F4DC
- .incbin "graphics/text_window/12.4bpp"
-
- .align 2
-gTextWindowFrame13_Gfx:: @ 850F5FC
- .incbin "graphics/text_window/13.4bpp"
-
- .align 2
-gTextWindowFrame14_Gfx:: @ 850F71C
- .incbin "graphics/text_window/14.4bpp"
-
- .align 2
-gTextWindowFrame15_Gfx:: @ 850F83C
- .incbin "graphics/text_window/15.4bpp"
-
- .align 2
-gTextWindowFrame16_Gfx:: @ 850F95C
- .incbin "graphics/text_window/16.4bpp"
-
- .align 2
-gTextWindowFrame17_Gfx:: @ 850FA7C
- .incbin "graphics/text_window/17.4bpp"
-
- .align 2
-gTextWindowFrame18_Gfx:: @ 850FB9C
- .incbin "graphics/text_window/18.4bpp"
-
- .align 2
-gTextWindowFrame19_Gfx:: @ 850FCBC
- .incbin "graphics/text_window/19.4bpp"
-
- .align 2
-gTextWindowFrame20_Gfx:: @ 850FDDC
- .incbin "graphics/text_window/20.4bpp"
-
- .align 2
-gTextWindowFrame1_Pal:: @ 850FEFC
- .incbin "graphics/text_window/1.gbapal"
-
- .align 2
-gTextWindowFrame2_Pal:: @ 850FF1C
- .incbin "graphics/text_window/2.gbapal"
-
- .align 2
-gTextWindowFrame3_Pal:: @ 850FF3C
- .incbin "graphics/text_window/3.gbapal"
-
- .align 2
-gTextWindowFrame4_Pal:: @ 850FF5C
- .incbin "graphics/text_window/4.gbapal"
-
- .align 2
-gTextWindowFrame5_Pal:: @ 850FF7C
- .incbin "graphics/text_window/5.gbapal"
-
- .align 2
-gTextWindowFrame6_Pal:: @ 850FF9C
- .incbin "graphics/text_window/6.gbapal"
-
- .align 2
-gTextWindowFrame7_Pal:: @ 850FFBC
- .incbin "graphics/text_window/7.gbapal"
-
- .align 2
-gTextWindowFrame8_Pal:: @ 850FFDC
- .incbin "graphics/text_window/8.gbapal"
-
- .align 2
-gTextWindowFrame9_Pal:: @ 850FFFC
- .incbin "graphics/text_window/9.gbapal"
-
- .align 2
-gTextWindowFrame10_Pal:: @ 851001C
- .incbin "graphics/text_window/10.gbapal"
-
- .align 2
-gTextWindowFrame11_Pal:: @ 851003C
- .incbin "graphics/text_window/11.gbapal"
-
- .align 2
-gTextWindowFrame12_Pal:: @ 851005C
- .incbin "graphics/text_window/12.gbapal"
-
- .align 2
-gTextWindowFrame13_Pal:: @ 851007C
- .incbin "graphics/text_window/13.gbapal"
-
- .align 2
-gTextWindowFrame14_Pal:: @ 851009C
- .incbin "graphics/text_window/14.gbapal"
-
- .align 2
-gTextWindowFrame15_Pal:: @ 85100BC
- .incbin "graphics/text_window/15.gbapal"
-
- .align 2
-gTextWindowFrame16_Pal:: @ 85100DC
- .incbin "graphics/text_window/16.gbapal"
-
- .align 2
-gTextWindowFrame17_Pal:: @ 85100FC
- .incbin "graphics/text_window/17.gbapal"
-
- .align 2
-gTextWindowFrame18_Pal:: @ 851011C
- .incbin "graphics/text_window/18.gbapal"
-
- .align 2
-gTextWindowFrame19_Pal:: @ 851013C
- .incbin "graphics/text_window/19.gbapal"
-
- .align 2
-gTextWindowFrame20_Pal:: @ 851015C
- .incbin "graphics/text_window/20.gbapal"
-
- .align 2
-gUnknown_0851017C:: @ 851017C
- .incbin "graphics/text_window/message_box.gbapal"
-
- .incbin "graphics/text_window/text_pal1.gbapal"
- .incbin "graphics/text_window/text_pal2.gbapal"
- .incbin "graphics/text_window/text_pal3.gbapal"
- .incbin "graphics/text_window/text_pal4.gbapal"
-
- .align 2
-gUnknown_0851021C:: @ 851021C
- .4byte gTextWindowFrame1_Gfx, gTextWindowFrame1_Pal
- .4byte gTextWindowFrame2_Gfx, gTextWindowFrame2_Pal
- .4byte gTextWindowFrame3_Gfx, gTextWindowFrame3_Pal
- .4byte gTextWindowFrame4_Gfx, gTextWindowFrame4_Pal
- .4byte gTextWindowFrame5_Gfx, gTextWindowFrame5_Pal
- .4byte gTextWindowFrame6_Gfx, gTextWindowFrame6_Pal
- .4byte gTextWindowFrame7_Gfx, gTextWindowFrame7_Pal
- .4byte gTextWindowFrame8_Gfx, gTextWindowFrame8_Pal
- .4byte gTextWindowFrame9_Gfx, gTextWindowFrame9_Pal
- .4byte gTextWindowFrame10_Gfx, gTextWindowFrame10_Pal
- .4byte gTextWindowFrame11_Gfx, gTextWindowFrame11_Pal
- .4byte gTextWindowFrame12_Gfx, gTextWindowFrame12_Pal
- .4byte gTextWindowFrame13_Gfx, gTextWindowFrame13_Pal
- .4byte gTextWindowFrame14_Gfx, gTextWindowFrame14_Pal
- .4byte gTextWindowFrame15_Gfx, gTextWindowFrame15_Pal
- .4byte gTextWindowFrame16_Gfx, gTextWindowFrame16_Pal
- .4byte gTextWindowFrame17_Gfx, gTextWindowFrame17_Pal
- .4byte gTextWindowFrame18_Gfx, gTextWindowFrame18_Pal
- .4byte gTextWindowFrame19_Gfx, gTextWindowFrame19_Pal
- .4byte gTextWindowFrame20_Gfx, gTextWindowFrame20_Pal
diff --git a/graphics/misc/option_menu_equals_sign.png b/graphics/misc/option_menu_equals_sign.png
new file mode 100644
index 000000000..7e56e3cc3
--- /dev/null
+++ b/graphics/misc/option_menu_equals_sign.png
Binary files differ
diff --git a/graphics/misc/option_menu_text.pal b/graphics/misc/option_menu_text.pal
new file mode 100644
index 000000000..e7d6c330a
--- /dev/null
+++ b/graphics/misc/option_menu_text.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+255 180 82
+197 123 0
+255 139 131
+255 49 24
+74 74 74
+213 213 205
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/include/graphics.h b/include/graphics.h
index 85e31aec9..5917e9d2a 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -1,6 +1,10 @@
#ifndef GUARD_GRAPHICS_H
#define GUARD_GRAPHICS_H
+// overworld
+extern const u32 gMessageBox_Gfx[];
+extern const u16 gMessageBox_Pal[];
+
// interface pokeballs
extern const u8 gInterfaceGfx_PokeBall[];
extern const u8 gInterfacePal_PokeBall[];
diff --git a/include/option_menu.h b/include/option_menu.h
new file mode 100644
index 000000000..b23a73c4c
--- /dev/null
+++ b/include/option_menu.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_OPTION_MENU_H
+#define GUARD_OPTION_MENU_H
+
+void CB2_InitOptionMenu(void);
+
+#endif // GUARD_OPTION_MENU_H
diff --git a/include/strings.h b/include/strings.h
index a382191a0..7527e56fb 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -170,4 +170,29 @@ extern const u8 gText_Peak[];
extern const u8 gText_SafariBallStock[];
extern const u8 gText_BattlePyramidFloor[];
+// option menu texts
+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_FrameTypeNumber[];
+extern const u8 gText_FrameType[];
+extern const u8 gText_ButtonTypeNormal[];
+extern const u8 gText_ButtonTypeLR[];
+extern const u8 gText_ButtonTypeLEqualsA[];
+extern const u8 gText_Option[];
+extern const u8 gText_OptionMenu[];
+extern const u8 gText_TextSpeed[];
+extern const u8 gText_BattleScene[];
+extern const u8 gText_BattleStyle[];
+extern const u8 gText_Sound[];
+extern const u8 gText_Frame[];
+extern const u8 gText_OptionMenuCancel[];
+extern const u8 gText_ButtonMode[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/text_window.h b/include/text_window.h
index 0af007397..e6a753fcb 100644
--- a/include/text_window.h
+++ b/include/text_window.h
@@ -1,13 +1,18 @@
#ifndef GUARD_TEXT_WINDOW_H
#define GUARD_TEXT_WINDOW_H
+#define WINDOW_FRAMES_COUNT 20
+
struct TilesPal
{
- u32 *tiles;
- u16 *pal;
+ const u32 *tiles;
+ const u16 *pal;
};
-const struct TilesPal* sub_8098758(u8 id);
+extern const u32 gTextWindowFrame1_Gfx[];
+extern const u16 gTextWindowFrame1_Pal[];
+
+const struct TilesPal* GetWindowFrameTilesPal(u8 id);
void copy_textbox_border_tile_patterns_to_vram(u8 windowId, u16 destOffset, u8 palOffset);
void sub_809882C(u8 windowId, u16 destOffset, u8 palOffset);
void sub_80987D4(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset);
@@ -15,8 +20,8 @@ void box_border_load_tiles_and_pal(u8 windowId, u16 destOffset, u8 palOffset);
void sub_8098858(u8 windowId, u16 tileNum, u8 palNum);
void sub_80989E0(u8 windowId, u16 tileNum, u8 palNum);
void rbox_fill_rectangle(u8 windowId);
-const u16* stdpal_get(u8 id);
-const u16* GetOverworldTextboxPalettePtr(void);
+const u16 *stdpal_get(u8 id);
+const u16 *GetOverworldTextboxPalettePtr(void);
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset);
#endif // GUARD_TEXT_WINDOW_H
diff --git a/include/unknown_task.h b/include/unknown_task.h
index 9c6968c30..906fed3e0 100644
--- a/include/unknown_task.h
+++ b/include/unknown_task.h
@@ -15,7 +15,7 @@ extern struct UnknownTaskStruct gUnknown_0831AC70;
// Exported RAM declarations
// Exported ROM declarations
-void remove_some_task(void);
+void ScanlineEffect_Stop(void);
void sub_80BA038(struct UnknownTaskStruct arg0);
void sub_80BA0A8(void);
diff --git a/ld_script.txt b/ld_script.txt
index a7379d18b..dc411c8cb 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -127,7 +127,7 @@ SECTIONS {
src/wild_encounter.o(.text);
asm/field_effect.o(.text);
asm/unknown_task.o(.text);
- asm/option_menu.o(.text);
+ src/option_menu.o(.text);
src/pokedex.o(.text);
asm/pokedex.o(.text);
asm/trainer_card.o(.text);
@@ -405,7 +405,7 @@ SECTIONS {
data/field_map_obj.o(.rodata);
data/field_ground_effect.o(.rodata);
data/map_obj_8097404.o(.rodata);
- data/text_window.o(.rodata);
+ src/text_window.o(.rodata);
src/scrcmd.o(.rodata);
data/coord_event_weather.o(.rodata);
data/field_tasks.o(.rodata);
@@ -426,7 +426,7 @@ SECTIONS {
src/trainer_see.o(.rodata);
data/wild_encounter.o(.rodata);
data/field_effect.o(.rodata);
- data/option_menu.o(.rodata);
+ src/option_menu.o(.rodata);
src/pokedex.o(.rodata);
data/pokedex.o(.rodata);
data/trainer_card.o(.rodata);
diff --git a/src/berry_fix_program.c b/src/berry_fix_program.c
index 3b2bfb5f7..f487489d4 100644
--- a/src/berry_fix_program.c
+++ b/src/berry_fix_program.c
@@ -141,7 +141,7 @@ void InitBerryFixProgram(void)
SetVBlankCallback(NULL);
ResetSpriteData();
ResetTasks();
- remove_some_task();
+ ScanlineEffect_Stop();
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
berry_fix_mb_manager = AllocZeroed(0x50);
berry_fix_mb_manager->state = 0;
diff --git a/src/diploma.c b/src/diploma.c
index d4a269757..fedc10bd0 100755
--- a/src/diploma.c
+++ b/src/diploma.c
@@ -72,7 +72,7 @@ void CB2_ShowDiploma(void)
DmaFill16(3, 0, VRAM, VRAM_SIZE);
DmaFill32(3, 0, OAM, OAM_SIZE);
DmaFill16(3, 0, PLTT, PLTT_SIZE);
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
diff --git a/src/egg_hatch.c b/src/egg_hatch.c
index 1aff894b9..37f2b2e19 100644
--- a/src/egg_hatch.c
+++ b/src/egg_hatch.c
@@ -66,7 +66,7 @@ extern void overworld_free_bg_tilemaps(void);
extern void sub_80AF168(void);
extern void AllocateMonSpritesGfx(void);
extern void FreeMonSpritesGfx(void);
-extern void remove_some_task(void);
+extern void ScanlineEffect_Stop(void);
extern void reset_temp_tile_data_buffers(void);
extern void c2_exit_to_overworld_2_switch(void);
extern void play_some_sound(void);
@@ -512,7 +512,7 @@ static void CB2_EggHatch_0(void)
FreeAllSpritePalettes();
ResetSpriteData();
ResetTasks();
- remove_some_task();
+ ScanlineEffect_Stop();
m4aSoundVSyncOn();
gMain.state++;
break;
diff --git a/src/evolution_scene.c b/src/evolution_scene.c
index 4b59147ff..5dfc36cb2 100644
--- a/src/evolution_scene.c
+++ b/src/evolution_scene.c
@@ -269,7 +269,7 @@ void EvolutionScene(struct Pokemon* mon, u16 speciesToEvolve, bool8 canStopEvo,
sub_80356D0();
LoadBattleTextboxAndBackground();
ResetSpriteData();
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
FreeAllSpritePalettes();
diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c
index 4465f65a3..3e70e22fa 100644
--- a/src/hall_of_fame.c
+++ b/src/hall_of_fame.c
@@ -1302,7 +1302,7 @@ static void ClearVramOamPltt_LoadHofPal(void)
static void sub_8174F70(void)
{
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
reset_temp_tile_data_buffers();
diff --git a/src/mail.c b/src/mail.c
index ca3531786..c3cbe4a3c 100644
--- a/src/mail.c
+++ b/src/mail.c
@@ -305,7 +305,7 @@ static bool8 MailReadBuildGraphics(void)
{
case 0:
SetVBlankCallback(NULL);
- remove_some_task();
+ ScanlineEffect_Stop();
SetGpuReg(REG_OFFSET_DISPCNT, 0x0000);
break;
case 1:
diff --git a/src/main.c b/src/main.c
index 07b7d9147..d4601293b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -29,7 +29,7 @@ extern void MapMusicMain(void);
extern void EnableInterrupts(u16);
extern void sub_8033648(void);
extern u16 SetFlashTimerIntr(u8 timerNum, void (**intrFunc)(void));
-extern void remove_some_task(void);
+extern void ScanlineEffect_Stop(void);
extern struct SoundInfo gSoundInfo;
extern u32 gFlashMemoryPresent;
@@ -425,7 +425,7 @@ void DoSoftReset(void)
{
REG_IME = 0;
m4aSoundVSyncOff();
- remove_some_task();
+ ScanlineEffect_Stop();
DmaStop(1);
DmaStop(2);
DmaStop(3);
diff --git a/src/option_menu.c b/src/option_menu.c
new file mode 100644
index 000000000..7f92756ab
--- /dev/null
+++ b/src/option_menu.c
@@ -0,0 +1,662 @@
+#include "global.h"
+#include "option_menu.h"
+#include "main.h"
+#include "menu.h"
+#include "unknown_task.h"
+#include "palette.h"
+#include "sprite.h"
+#include "task.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "window.h"
+#include "text.h"
+#include "text_window.h"
+#include "international_string_util.h"
+#include "strings.h"
+
+extern void SetPokemonCryStereo(u32 val);
+
+// Task data
+enum
+{
+ TD_MENUSELECTION,
+ TD_TEXTSPEED,
+ TD_BATTLESCENE,
+ TD_BATTLESTYLE,
+ TD_SOUND,
+ TD_BUTTONMODE,
+ TD_FRAMETYPE,
+};
+
+// Menu items
+enum
+{
+ MENUITEM_TEXTSPEED,
+ 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 Task_OptionMenuFadeIn(u8 taskId);
+static void Task_OptionMenuProcessInput(u8 taskId);
+static void Task_OptionMenuSave(u8 taskId);
+static void Task_OptionMenuFadeOut(u8 taskId);
+static void HighlightOptionMenuItem(u8 selection);
+static u8 TextSpeed_ProcessInput(u8 selection);
+static void TextSpeed_DrawChoices(u8 selection);
+static u8 BattleScene_ProcessInput(u8 selection);
+static void BattleScene_DrawChoices(u8 selection);
+static u8 BattleStyle_ProcessInput(u8 selection);
+static void BattleStyle_DrawChoices(u8 selection);
+static u8 Sound_ProcessInput(u8 selection);
+static void Sound_DrawChoices(u8 selection);
+static u8 FrameType_ProcessInput(u8 selection);
+static void FrameType_DrawChoices(u8 selection);
+static u8 ButtonMode_ProcessInput(u8 selection);
+static void ButtonMode_DrawChoices(u8 selection);
+static void DrawTextOption(void);
+static void DrawOptionMenuTexts(void);
+static void sub_80BB154(void);
+
+// EWRAM vars
+EWRAM_DATA static bool8 sArrowPressed = FALSE;
+
+// const rom data
+static const u16 sUnknown_0855C604[] = INCBIN_U16("graphics/misc/option_menu_text.gbapal");
+// note: this is only used in the Japanese release
+static const u8 sEqualSignGfx[] = INCBIN_U8("graphics/misc/option_menu_equals_sign.4bpp");
+
+static const u8 *const sOptionMenuItemsNames[MENUITEM_COUNT] =
+{
+ gText_TextSpeed,
+ gText_BattleScene,
+ gText_BattleStyle,
+ gText_Sound,
+ gText_ButtonMode,
+ gText_Frame,
+ gText_OptionMenuCancel,
+};
+
+static const struct WindowTemplate sOptionMenuWinTemplates[] =
+{
+ {1, 2, 1, 0x1A, 2, 1, 2},
+ {0, 2, 5, 0x1A, 0xE, 1, 0x36},
+ 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
+ }
+};
+
+static const u16 sUnknown_0855C6A0[] = {0x7E51};
+
+// code
+static void MainCB2(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void VBlankCB(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void CB2_InitOptionMenu(void)
+{
+ switch (gMain.state)
+ {
+ default:
+ case 0:
+ SetVBlankCallback(NULL);
+ gMain.state++;
+ break;
+ case 1:
+ {
+ u8 *addr;
+ u32 size;
+
+ addr = (u8 *)VRAM;
+ size = 0x18000;
+ while (1)
+ {
+ DmaFill16(3, 0, addr, 0x1000);
+ addr += 0x1000;
+ size -= 0x1000;
+ if (size <= 0x1000)
+ {
+ DmaFill16(3, 0, addr, size);
+ break;
+ }
+ }
+ DmaClear32(3, OAM, OAM_SIZE);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sOptionMenuBgTemplates, ARRAY_COUNT(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_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 1);
+ SetGpuReg(REG_OFFSET_WINOUT, 35);
+ SetGpuReg(REG_OFFSET_BLDCNT, 193);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 4);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON | DISPCNT_OBJ_ON | DISPCNT_OBJ_1D_MAP);
+ ShowBg(0);
+ ShowBg(1);
+ gMain.state++;
+ }
+ break;
+ case 2:
+ ResetPaletteFade();
+ ScanlineEffect_Stop();
+ ResetTasks();
+ ResetSpriteData();
+ gMain.state++;
+ break;
+ case 3:
+ LoadBgTiles(1, GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->tiles, 0x120, 0x1A2);
+ gMain.state++;
+ break;
+ case 4:
+ LoadPalette(sUnknown_0855C6A0, 0, sizeof(sUnknown_0855C6A0));
+ LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, 0x70, 0x20);
+ gMain.state++;
+ break;
+ case 5:
+ LoadPalette(sUnknown_0855C604, 0x10, sizeof(sUnknown_0855C604));
+ gMain.state++;
+ break;
+ case 6:
+ PutWindowTilemap(0);
+ DrawTextOption();
+ gMain.state++;
+ break;
+ case 7:
+ gMain.state++;
+ break;
+ case 8:
+ PutWindowTilemap(1);
+ DrawOptionMenuTexts();
+ gMain.state++;
+ case 9:
+ sub_80BB154();
+ gMain.state++;
+ break;
+ case 10:
+ {
+ u8 taskId = CreateTask(Task_OptionMenuFadeIn, 0);
+
+ gTasks[taskId].data[TD_MENUSELECTION] = 0;
+ gTasks[taskId].data[TD_TEXTSPEED] = gSaveBlock2Ptr->optionsTextSpeed;
+ gTasks[taskId].data[TD_BATTLESCENE] = gSaveBlock2Ptr->optionsBattleSceneOff;
+ gTasks[taskId].data[TD_BATTLESTYLE] = gSaveBlock2Ptr->optionsBattleStyle;
+ gTasks[taskId].data[TD_SOUND] = gSaveBlock2Ptr->optionsSound;
+ gTasks[taskId].data[TD_BUTTONMODE] = gSaveBlock2Ptr->optionsButtonMode;
+ gTasks[taskId].data[TD_FRAMETYPE] = gSaveBlock2Ptr->optionsWindowFrameType;
+
+ TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
+ BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
+ BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
+ Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
+ ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
+ FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
+ HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
+
+ CopyWindowToVram(WIN_OPTIONS, 3);
+ gMain.state++;
+ break;
+ }
+ case 11:
+ BeginNormalPaletteFade(-1, 0, 0x10, 0, 0);
+ SetVBlankCallback(VBlankCB);
+ SetMainCallback2(MainCB2);
+ return;
+ }
+}
+
+static void Task_OptionMenuFadeIn(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ gTasks[taskId].func = Task_OptionMenuProcessInput;
+}
+
+static void Task_OptionMenuProcessInput(u8 taskId)
+{
+ if (gMain.newKeys & A_BUTTON)
+ {
+ if (gTasks[taskId].data[TD_MENUSELECTION] == MENUITEM_CANCEL)
+ gTasks[taskId].func = Task_OptionMenuSave;
+ }
+ else if (gMain.newKeys & B_BUTTON)
+ {
+ gTasks[taskId].func = Task_OptionMenuSave;
+ }
+ else if (gMain.newKeys & DPAD_UP)
+ {
+ if (gTasks[taskId].data[TD_MENUSELECTION] > 0)
+ gTasks[taskId].data[TD_MENUSELECTION]--;
+ else
+ gTasks[taskId].data[TD_MENUSELECTION] = 6;
+ HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
+ }
+ else if (gMain.newKeys & DPAD_DOWN)
+ {
+ if (gTasks[taskId].data[TD_MENUSELECTION] <= 5)
+ gTasks[taskId].data[TD_MENUSELECTION]++;
+ else
+ gTasks[taskId].data[TD_MENUSELECTION] = 0;
+ HighlightOptionMenuItem(gTasks[taskId].data[TD_MENUSELECTION]);
+ }
+ else
+ {
+ u8 previousOption;
+
+ switch (gTasks[taskId].data[TD_MENUSELECTION])
+ {
+ case MENUITEM_TEXTSPEED:
+ previousOption = gTasks[taskId].data[TD_TEXTSPEED];
+ gTasks[taskId].data[TD_TEXTSPEED] = TextSpeed_ProcessInput(gTasks[taskId].data[TD_TEXTSPEED]);
+
+ if (previousOption != gTasks[taskId].data[TD_TEXTSPEED])
+ TextSpeed_DrawChoices(gTasks[taskId].data[TD_TEXTSPEED]);
+ break;
+ case MENUITEM_BATTLESCENE:
+ previousOption = gTasks[taskId].data[TD_BATTLESCENE];
+ gTasks[taskId].data[TD_BATTLESCENE] = BattleScene_ProcessInput(gTasks[taskId].data[TD_BATTLESCENE]);
+
+ if (previousOption != gTasks[taskId].data[TD_BATTLESCENE])
+ BattleScene_DrawChoices(gTasks[taskId].data[TD_BATTLESCENE]);
+ break;
+ case MENUITEM_BATTLESTYLE:
+ previousOption = gTasks[taskId].data[TD_BATTLESTYLE];
+ gTasks[taskId].data[TD_BATTLESTYLE] = BattleStyle_ProcessInput(gTasks[taskId].data[TD_BATTLESTYLE]);
+
+ if (previousOption != gTasks[taskId].data[TD_BATTLESTYLE])
+ BattleStyle_DrawChoices(gTasks[taskId].data[TD_BATTLESTYLE]);
+ break;
+ case MENUITEM_SOUND:
+ previousOption = gTasks[taskId].data[TD_SOUND];
+ gTasks[taskId].data[TD_SOUND] = Sound_ProcessInput(gTasks[taskId].data[TD_SOUND]);
+
+ if (previousOption != gTasks[taskId].data[TD_SOUND])
+ Sound_DrawChoices(gTasks[taskId].data[TD_SOUND]);
+ break;
+ case MENUITEM_BUTTONMODE:
+ previousOption = gTasks[taskId].data[TD_BUTTONMODE];
+ gTasks[taskId].data[TD_BUTTONMODE] = ButtonMode_ProcessInput(gTasks[taskId].data[TD_BUTTONMODE]);
+
+ if (previousOption != gTasks[taskId].data[TD_BUTTONMODE])
+ ButtonMode_DrawChoices(gTasks[taskId].data[TD_BUTTONMODE]);
+ break;
+ case MENUITEM_FRAMETYPE:
+ previousOption = gTasks[taskId].data[TD_FRAMETYPE];
+ gTasks[taskId].data[TD_FRAMETYPE] = FrameType_ProcessInput(gTasks[taskId].data[TD_FRAMETYPE]);
+
+ if (previousOption != gTasks[taskId].data[TD_FRAMETYPE])
+ FrameType_DrawChoices(gTasks[taskId].data[TD_FRAMETYPE]);
+ break;
+ default:
+ return;
+ }
+
+ if (sArrowPressed)
+ {
+ sArrowPressed = FALSE;
+ CopyWindowToVram(WIN_OPTIONS, 2);
+ }
+ }
+}
+
+static void Task_OptionMenuSave(u8 taskId)
+{
+ gSaveBlock2Ptr->optionsTextSpeed = gTasks[taskId].data[TD_TEXTSPEED];
+ gSaveBlock2Ptr->optionsBattleSceneOff = gTasks[taskId].data[TD_BATTLESCENE];
+ gSaveBlock2Ptr->optionsBattleStyle = gTasks[taskId].data[TD_BATTLESTYLE];
+ gSaveBlock2Ptr->optionsSound = gTasks[taskId].data[TD_SOUND];
+ gSaveBlock2Ptr->optionsButtonMode = gTasks[taskId].data[TD_BUTTONMODE];
+ gSaveBlock2Ptr->optionsWindowFrameType = gTasks[taskId].data[TD_FRAMETYPE];
+
+ BeginNormalPaletteFade(-1, 0, 0, 0x10, 0);
+ gTasks[taskId].func = Task_OptionMenuFadeOut;
+}
+
+static void Task_OptionMenuFadeOut(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ DestroyTask(taskId);
+ FreeAllWindowBuffers();
+ SetMainCallback2(gMain.savedCallback);
+ }
+}
+
+static void HighlightOptionMenuItem(u8 index)
+{
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE(16, 224));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE(index * 16 + 40, index * 16 + 56));
+}
+
+static void DrawOptionMenuChoice(const u8 *text, u8 x, u8 y, u8 style)
+{
+ u8 dst[16];
+ u16 i;
+
+ for (i = 0; *text != EOS && i <= 14; i++)
+ dst[i] = *(text++);
+
+ if (style != 0)
+ {
+ dst[2] = 4;
+ dst[5] = 5;
+ }
+
+ dst[i] = EOS;
+ PrintTextOnWindow(WIN_OPTIONS, 1, dst, x, y + 1, TEXT_SPEED_FF, NULL);
+}
+
+static u8 TextSpeed_ProcessInput(u8 selection)
+{
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (selection <= 1)
+ selection++;
+ else
+ selection = 0;
+
+ sArrowPressed = TRUE;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (selection != 0)
+ selection--;
+ else
+ selection = 2;
+
+ sArrowPressed = TRUE;
+ }
+ return selection;
+}
+
+static void TextSpeed_DrawChoices(u8 selection)
+{
+ u8 styles[3];
+ s32 widthSlow, widthMid, widthFast, xMid;
+
+ styles[0] = 0;
+ styles[1] = 0;
+ styles[2] = 0;
+ styles[selection] = 1;
+
+ DrawOptionMenuChoice(gText_TextSpeedSlow, 104, 0, styles[0]);
+
+ widthSlow = GetStringWidth(1, gText_TextSpeedSlow, 0);
+ widthMid = GetStringWidth(1, gText_TextSpeedMid, 0);
+ widthFast = GetStringWidth(1, gText_TextSpeedFast, 0);
+
+ widthMid -= 94;
+ xMid = (widthSlow - widthMid - widthFast) / 2 + 104;
+ DrawOptionMenuChoice(gText_TextSpeedMid, xMid, 0, styles[1]);
+
+ DrawOptionMenuChoice(gText_TextSpeedFast, GetStringRightAlignXOffset(1, gText_TextSpeedFast, 198), 0, styles[2]);
+}
+
+static u8 BattleScene_ProcessInput(u8 selection)
+{
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ {
+ selection ^= 1;
+ sArrowPressed = TRUE;
+ }
+
+ return selection;
+}
+
+static void BattleScene_DrawChoices(u8 selection)
+{
+ u8 styles[2];
+
+ styles[0] = 0;
+ styles[1] = 0;
+ styles[selection] = 1;
+
+ DrawOptionMenuChoice(gText_BattleSceneOn, 104, 16, styles[0]);
+ DrawOptionMenuChoice(gText_BattleSceneOff, GetStringRightAlignXOffset(1, gText_BattleSceneOff, 198), 16, styles[1]);
+}
+
+static u8 BattleStyle_ProcessInput(u8 selection)
+{
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ {
+ selection ^= 1;
+ sArrowPressed = TRUE;
+ }
+
+ return selection;
+}
+
+static void BattleStyle_DrawChoices(u8 selection)
+{
+ u8 styles[2];
+
+ styles[0] = 0;
+ styles[1] = 0;
+ styles[selection] = 1;
+
+ DrawOptionMenuChoice(gText_BattleStyleShift, 104, 32, styles[0]);
+ DrawOptionMenuChoice(gText_BattleStyleSet, GetStringRightAlignXOffset(1, gText_BattleStyleSet, 198), 32, styles[1]);
+}
+
+static u8 Sound_ProcessInput(u8 selection)
+{
+ if (gMain.newKeys & (DPAD_LEFT | DPAD_RIGHT))
+ {
+ selection ^= 1;
+ SetPokemonCryStereo(selection);
+ sArrowPressed = TRUE;
+ }
+
+ return selection;
+}
+
+static void Sound_DrawChoices(u8 selection)
+{
+ u8 styles[2];
+
+ styles[0] = 0;
+ styles[1] = 0;
+ styles[selection] = 1;
+
+ DrawOptionMenuChoice(gText_SoundMono, 104, 48, styles[0]);
+ DrawOptionMenuChoice(gText_SoundStereo, GetStringRightAlignXOffset(1, gText_SoundStereo, 198), 48, styles[1]);
+}
+
+static u8 FrameType_ProcessInput(u8 selection)
+{
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (selection < WINDOW_FRAMES_COUNT - 1)
+ selection++;
+ else
+ selection = 0;
+
+ LoadBgTiles(1, GetWindowFrameTilesPal(selection)->tiles, 0x120, 0x1A2);
+ LoadPalette(GetWindowFrameTilesPal(selection)->pal, 0x70, 0x20);
+ sArrowPressed = TRUE;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (selection != 0)
+ selection--;
+ else
+ selection = WINDOW_FRAMES_COUNT - 1;
+
+ LoadBgTiles(1, GetWindowFrameTilesPal(selection)->tiles, 0x120, 0x1A2);
+ LoadPalette(GetWindowFrameTilesPal(selection)->pal, 0x70, 0x20);
+ sArrowPressed = TRUE;
+ }
+ return selection;
+}
+
+static void FrameType_DrawChoices(u8 selection)
+{
+ u8 text[16];
+ u8 n = selection + 1;
+ u16 i;
+
+ for (i = 0; gText_FrameTypeNumber[i] != EOS && i <= 5; i++)
+ text[i] = gText_FrameTypeNumber[i];
+
+ // Convert a number to decimal string
+ if (n / 10 != 0)
+ {
+ text[i] = n / 10 + CHAR_0;
+ i++;
+ text[i] = n % 10 + CHAR_0;
+ i++;
+ }
+ else
+ {
+ text[i] = n % 10 + CHAR_0;
+ i++;
+ text[i] = 0x77;
+ i++;
+ }
+
+ text[i] = EOS;
+
+ DrawOptionMenuChoice(gText_FrameType, 104, 80, 0);
+ DrawOptionMenuChoice(text, 128, 80, 1);
+}
+
+static u8 ButtonMode_ProcessInput(u8 selection)
+{
+ if (gMain.newKeys & DPAD_RIGHT)
+ {
+ if (selection <= 1)
+ selection++;
+ else
+ selection = 0;
+
+ sArrowPressed = TRUE;
+ }
+ if (gMain.newKeys & DPAD_LEFT)
+ {
+ if (selection != 0)
+ selection--;
+ else
+ selection = 2;
+
+ sArrowPressed = TRUE;
+ }
+ return selection;
+}
+
+static void ButtonMode_DrawChoices(u8 selection)
+{
+ s32 widthNormal, widthLR, widthLA, xLR;
+ u8 styles[3];
+
+ styles[0] = 0;
+ styles[1] = 0;
+ styles[2] = 0;
+ styles[selection] = 1;
+
+ DrawOptionMenuChoice(gText_ButtonTypeNormal, 104, 64, styles[0]);
+
+ widthNormal = GetStringWidth(1, gText_ButtonTypeNormal, 0);
+ widthLR = GetStringWidth(1, gText_ButtonTypeLR, 0);
+ widthLA = GetStringWidth(1, gText_ButtonTypeLEqualsA, 0);
+
+ widthLR -= 94;
+ xLR = (widthNormal - widthLR - widthLA) / 2 + 104;
+ DrawOptionMenuChoice(gText_ButtonTypeLR, xLR, 64, styles[1]);
+
+ DrawOptionMenuChoice(gText_ButtonTypeLEqualsA, GetStringRightAlignXOffset(1, gText_ButtonTypeLEqualsA, 198), 64, styles[2]);
+}
+
+static void DrawTextOption(void)
+{
+ FillWindowPixelBuffer(WIN_TEXT_OPTION, 0x11);
+ PrintTextOnWindow(WIN_TEXT_OPTION, 1, gText_Option, 8, 1, TEXT_SPEED_FF, NULL);
+ CopyWindowToVram(WIN_TEXT_OPTION, 3);
+}
+
+static void DrawOptionMenuTexts(void)
+{
+ u8 i;
+
+ FillWindowPixelBuffer(WIN_OPTIONS, 0x11);
+ for (i = 0; i < MENUITEM_COUNT; i++)
+ {
+ PrintTextOnWindow(WIN_OPTIONS, 1, sOptionMenuItemsNames[i], 8, (i * 16) + 1, TEXT_SPEED_FF, NULL);
+ }
+ CopyWindowToVram(WIN_OPTIONS, 3);
+}
+
+static void sub_80BB154(void)
+{
+ // bg, tileNum, x, y, width, height, pal
+ FillBgTilemapBufferRect(1, 0x1A2, 1, 0, 1, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A3, 2, 0, 0x1B, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A4, 28, 0, 1, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A5, 1, 1, 1, 2, 7);
+ FillBgTilemapBufferRect(1, 0x1A7, 28, 1, 1, 2, 7);
+ FillBgTilemapBufferRect(1, 0x1A8, 1, 3, 1, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A9, 2, 3, 0x1B, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1AA, 28, 3, 1, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A2, 1, 4, 1, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A3, 2, 4, 0x1A, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A4, 28, 4, 1, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A5, 1, 5, 1, 0x12, 7);
+ FillBgTilemapBufferRect(1, 0x1A7, 28, 5, 1, 0x12, 7);
+ FillBgTilemapBufferRect(1, 0x1A8, 1, 19, 1, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1A9, 2, 19, 0x1A, 1, 7);
+ FillBgTilemapBufferRect(1, 0x1AA, 28, 19, 1, 1, 7);
+
+ CopyBgTilemapBufferToVram(1);
+}
diff --git a/src/pokeblock.c b/src/pokeblock.c
index 737f2c6f3..573eed52b 100644
--- a/src/pokeblock.c
+++ b/src/pokeblock.c
@@ -419,7 +419,7 @@ static bool8 InitPokeblockMenu(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c
index e56448d8b..a900badd1 100755
--- a/src/pokemon_summary_screen.c
+++ b/src/pokemon_summary_screen.c
@@ -75,7 +75,7 @@ extern u8 sub_81221AC();
extern void SetVBlankHBlankCallbacksToNull();
extern void ResetVramOamAndBgCntRegs();
extern void clear_scheduled_bg_copies_to_vram();
-extern void remove_some_task();
+extern void ScanlineEffect_Stop();
extern void ResetBgsAndClearDma3BusyFlags(u32 leftoverFireRedLeafGreenVariable);
extern void ShowBg(u8 a);
extern void SetGpuReg(u8 regOffset, u16 value);
@@ -455,7 +455,7 @@ bool8 sub_81BFB10(void)
gMain.state++;
break;
case 1:
- remove_some_task();
+ ScanlineEffect_Stop();
gMain.state++;
break;
case 2:
diff --git a/src/save_failed_screen.c b/src/save_failed_screen.c
index efe38fbae..8764daa5f 100755
--- a/src/save_failed_screen.c
+++ b/src/save_failed_screen.c
@@ -9,6 +9,7 @@
#include "menu.h"
#include "save.h"
#include "gba/flash_internal.h"
+#include "text_window.h"
#define MSG_WIN_TOP 12
#define CLOCK_WIN_TOP (MSG_WIN_TOP - 4)
@@ -21,9 +22,7 @@ extern const u8 gBirchHelpGfx[];
extern const u8 gBirchBagTilemap[];
extern const u8 gBirchGrassTilemap[];
extern const u16 gBirchBagGrassPal[];
-extern const u16 gTextWindowFrame1_Pal[];
extern const u16 gUnknown_0860F074[];
-extern const u32 gTextWindowFrame1_Gfx[];
extern struct SaveSection gSaveDataBuffer;
extern u8 gText_SaveFailedCheckingBackup[];
diff --git a/src/starter_choose.c b/src/starter_choose.c
index c2c553d46..83a7b8112 100644
--- a/src/starter_choose.c
+++ b/src/starter_choose.c
@@ -53,7 +53,7 @@ extern const u8 gUnknown_085B1E0C[];
extern const u8 gUnknown_085B1E28[][2];
extern void sub_809882C(u8, u16, u8);
-extern void remove_some_task(void);
+extern void ScanlineEffect_Stop(void);
extern void clear_scheduled_bg_copies_to_vram(void);
extern void dp13_810BB8C(void);
extern void do_scheduled_bg_tilemap_copies_to_vram(void);
@@ -134,7 +134,7 @@ void CB2_ChooseStarter(void)
DeactivateAllTextPrinters();
sub_809882C(0, 0x2A8, 0xD0);
clear_scheduled_bg_copies_to_vram();
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
diff --git a/src/text_window.c b/src/text_window.c
index c5334b11e..33cd7cffe 100644
--- a/src/text_window.c
+++ b/src/text_window.c
@@ -3,21 +3,92 @@
#include "text_window.h"
#include "window.h"
#include "palette.h"
-
-extern u8 LoadBgTiles(u8 bg, const void *src, u16 size, u16 destOffset);
-extern void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
-
-extern const struct TilesPal gUnknown_0851021C[];
-extern const u32 gMessageBox_Gfx[];
-extern const u16 gUnknown_0851017C[];
-extern const u16 gUnknown_08DDD728[];
-
-const struct TilesPal* sub_8098758(u8 id)
+#include "bg.h"
+#include "graphics.h"
+
+// const rom data
+const u32 gTextWindowFrame1_Gfx[] = INCBIN_U32("graphics/text_window/1.4bpp");
+static const u32 sTextWindowFrame2_Gfx[] = INCBIN_U32("graphics/text_window/2.4bpp");
+static const u32 sTextWindowFrame3_Gfx[] = INCBIN_U32("graphics/text_window/3.4bpp");
+static const u32 sTextWindowFrame4_Gfx[] = INCBIN_U32("graphics/text_window/4.4bpp");
+static const u32 sTextWindowFrame5_Gfx[] = INCBIN_U32("graphics/text_window/5.4bpp");
+static const u32 sTextWindowFrame6_Gfx[] = INCBIN_U32("graphics/text_window/6.4bpp");
+static const u32 sTextWindowFrame7_Gfx[] = INCBIN_U32("graphics/text_window/7.4bpp");
+static const u32 sTextWindowFrame8_Gfx[] = INCBIN_U32("graphics/text_window/8.4bpp");
+static const u32 sTextWindowFrame9_Gfx[] = INCBIN_U32("graphics/text_window/9.4bpp");
+static const u32 sTextWindowFrame10_Gfx[] = INCBIN_U32("graphics/text_window/10.4bpp");
+static const u32 sTextWindowFrame11_Gfx[] = INCBIN_U32("graphics/text_window/11.4bpp");
+static const u32 sTextWindowFrame12_Gfx[] = INCBIN_U32("graphics/text_window/12.4bpp");
+static const u32 sTextWindowFrame13_Gfx[] = INCBIN_U32("graphics/text_window/13.4bpp");
+static const u32 sTextWindowFrame14_Gfx[] = INCBIN_U32("graphics/text_window/14.4bpp");
+static const u32 sTextWindowFrame15_Gfx[] = INCBIN_U32("graphics/text_window/15.4bpp");
+static const u32 sTextWindowFrame16_Gfx[] = INCBIN_U32("graphics/text_window/16.4bpp");
+static const u32 sTextWindowFrame17_Gfx[] = INCBIN_U32("graphics/text_window/17.4bpp");
+static const u32 sTextWindowFrame18_Gfx[] = INCBIN_U32("graphics/text_window/18.4bpp");
+static const u32 sTextWindowFrame19_Gfx[] = INCBIN_U32("graphics/text_window/19.4bpp");
+static const u32 sTextWindowFrame20_Gfx[] = INCBIN_U32("graphics/text_window/20.4bpp");
+
+const u16 gTextWindowFrame1_Pal[] = INCBIN_U16("graphics/text_window/1.gbapal");
+static const u16 sTextWindowFrame2_Pal[] = INCBIN_U16("graphics/text_window/2.gbapal");
+static const u16 sTextWindowFrame3_Pal[] = INCBIN_U16("graphics/text_window/3.gbapal");
+static const u16 sTextWindowFrame4_Pal[] = INCBIN_U16("graphics/text_window/4.gbapal");
+static const u16 sTextWindowFrame5_Pal[] = INCBIN_U16("graphics/text_window/5.gbapal");
+static const u16 sTextWindowFrame6_Pal[] = INCBIN_U16("graphics/text_window/6.gbapal");
+static const u16 sTextWindowFrame7_Pal[] = INCBIN_U16("graphics/text_window/7.gbapal");
+static const u16 sTextWindowFrame8_Pal[] = INCBIN_U16("graphics/text_window/8.gbapal");
+static const u16 sTextWindowFrame9_Pal[] = INCBIN_U16("graphics/text_window/9.gbapal");
+static const u16 sTextWindowFrame10_Pal[] = INCBIN_U16("graphics/text_window/10.gbapal");
+static const u16 sTextWindowFrame11_Pal[] = INCBIN_U16("graphics/text_window/11.gbapal");
+static const u16 sTextWindowFrame12_Pal[] = INCBIN_U16("graphics/text_window/12.gbapal");
+static const u16 sTextWindowFrame13_Pal[] = INCBIN_U16("graphics/text_window/13.gbapal");
+static const u16 sTextWindowFrame14_Pal[] = INCBIN_U16("graphics/text_window/14.gbapal");
+static const u16 sTextWindowFrame15_Pal[] = INCBIN_U16("graphics/text_window/15.gbapal");
+static const u16 sTextWindowFrame16_Pal[] = INCBIN_U16("graphics/text_window/16.gbapal");
+static const u16 sTextWindowFrame17_Pal[] = INCBIN_U16("graphics/text_window/17.gbapal");
+static const u16 sTextWindowFrame18_Pal[] = INCBIN_U16("graphics/text_window/18.gbapal");
+static const u16 sTextWindowFrame19_Pal[] = INCBIN_U16("graphics/text_window/19.gbapal");
+static const u16 sTextWindowFrame20_Pal[] = INCBIN_U16("graphics/text_window/20.gbapal");
+
+static const u16 sUnknown_0851017C[][16] =
{
- if (id > 19)
- return &gUnknown_0851021C[0];
+ INCBIN_U16("graphics/text_window/message_box.gbapal"),
+ INCBIN_U16("graphics/text_window/text_pal1.gbapal"),
+ INCBIN_U16("graphics/text_window/text_pal2.gbapal"),
+ INCBIN_U16("graphics/text_window/text_pal3.gbapal"),
+ INCBIN_U16("graphics/text_window/text_pal4.gbapal")
+};
+
+static const struct TilesPal sWindowFrames[WINDOW_FRAMES_COUNT] =
+{
+ {gTextWindowFrame1_Gfx, gTextWindowFrame1_Pal},
+ {sTextWindowFrame2_Gfx, sTextWindowFrame2_Pal},
+ {sTextWindowFrame3_Gfx, sTextWindowFrame3_Pal},
+ {sTextWindowFrame4_Gfx, sTextWindowFrame4_Pal},
+ {sTextWindowFrame5_Gfx, sTextWindowFrame5_Pal},
+ {sTextWindowFrame6_Gfx, sTextWindowFrame6_Pal},
+ {sTextWindowFrame7_Gfx, sTextWindowFrame7_Pal},
+ {sTextWindowFrame8_Gfx, sTextWindowFrame8_Pal},
+ {sTextWindowFrame9_Gfx, sTextWindowFrame9_Pal},
+ {sTextWindowFrame10_Gfx, sTextWindowFrame10_Pal},
+ {sTextWindowFrame11_Gfx, sTextWindowFrame11_Pal},
+ {sTextWindowFrame12_Gfx, sTextWindowFrame12_Pal},
+ {sTextWindowFrame13_Gfx, sTextWindowFrame13_Pal},
+ {sTextWindowFrame14_Gfx, sTextWindowFrame14_Pal},
+ {sTextWindowFrame15_Gfx, sTextWindowFrame15_Pal},
+ {sTextWindowFrame16_Gfx, sTextWindowFrame16_Pal},
+ {sTextWindowFrame17_Gfx, sTextWindowFrame17_Pal},
+ {sTextWindowFrame18_Gfx, sTextWindowFrame18_Pal},
+ {sTextWindowFrame19_Gfx, sTextWindowFrame19_Pal},
+ {sTextWindowFrame20_Gfx, sTextWindowFrame20_Pal}
+};
+
+// code
+const struct TilesPal *GetWindowFrameTilesPal(u8 id)
+{
+ if (id >= WINDOW_FRAMES_COUNT)
+ return &sWindowFrames[0];
else
- return &gUnknown_0851021C[id];
+ return &sWindowFrames[id];
}
void copy_textbox_border_tile_patterns_to_vram(u8 windowId, u16 destOffset, u8 palOffset)
@@ -33,8 +104,8 @@ void box_border_load_tiles_and_pal(u8 windowId, u16 destOffset, u8 palOffset)
void sub_80987D4(u8 windowId, u8 frameId, u16 destOffset, u8 palOffset)
{
- LoadBgTiles(GetWindowAttribute(windowId, WINDOW_PRIORITY), gUnknown_0851021C[frameId].tiles, 0x120, destOffset);
- LoadPalette(gUnknown_0851021C[frameId].pal, palOffset, 0x20);
+ LoadBgTiles(GetWindowAttribute(windowId, WINDOW_PRIORITY), sWindowFrames[frameId].tiles, 0x120, destOffset);
+ LoadPalette(sWindowFrames[frameId].pal, palOffset, 0x20);
}
void sub_809882C(u8 windowId, u16 destOffset, u8 palOffset)
@@ -89,7 +160,7 @@ void rbox_fill_rectangle(u8 windowId)
FillBgTilemapBufferRect(bgLayer, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0x11);
}
-const u16* stdpal_get(u8 id)
+const u16 *stdpal_get(u8 id)
{
switch (id)
{
@@ -110,16 +181,17 @@ const u16* stdpal_get(u8 id)
id = 0x40;
break;
}
- return &gUnknown_0851017C[id];
+
+ return (const u16 *)(sUnknown_0851017C) + id;
}
-const u16* GetOverworldTextboxPalettePtr(void)
+const u16 *GetOverworldTextboxPalettePtr(void)
{
- return gUnknown_08DDD728;
+ return gMessageBox_Pal;
}
void sub_8098C6C(u8 bg, u16 destOffset, u8 palOffset)
{
- LoadBgTiles(bg, gUnknown_0851021C[gSaveBlock2Ptr->optionsWindowFrameType].tiles, 0x120, destOffset);
- LoadPalette(sub_8098758(gSaveBlock2Ptr->optionsWindowFrameType)->pal, palOffset, 0x20);
+ LoadBgTiles(bg, sWindowFrames[gSaveBlock2Ptr->optionsWindowFrameType].tiles, 0x120, destOffset);
+ LoadPalette(GetWindowFrameTilesPal(gSaveBlock2Ptr->optionsWindowFrameType)->pal, palOffset, 0x20);
}
diff --git a/src/wallclock.c b/src/wallclock.c
index ea6137c5d..dbea24b4c 100644
--- a/src/wallclock.c
+++ b/src/wallclock.c
@@ -578,7 +578,7 @@ static void LoadWallClockGraphics(void)
DeactivateAllTextPrinters();
sub_809882C(0, 0x250, 0xd0);
clear_scheduled_bg_copies_to_vram();
- remove_some_task();
+ ScanlineEffect_Stop();
ResetTasks();
ResetSpriteData();
ResetPaletteFade();
diff --git a/sym_ewram.txt b/sym_ewram.txt
index d328d8864..53df84320 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -743,8 +743,9 @@ gUnknown_02039B28: @ 2039B28
gUnknown_02039B44: @ 2039B44
.space 0x4
-gUnknown_02039B48: @ 2039B48
- .space 0x4
+ .include "src/option_menu.o"
+
+ .align 2
gUnknown_02039B4C: @ 2039B4C
.space 0x4