summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/.fuse_hidden00001c3c000000032244
-rw-r--r--asm/.fuse_hidden00001c3c000000052244
-rw-r--r--asm/berry_pouch.s2
-rw-r--r--asm/field_specials.s2
-rw-r--r--asm/item_menu.s14
-rw-r--r--asm/item_pc.s6
-rw-r--r--asm/learn_move.s2
-rw-r--r--asm/list_menu.s6
-rw-r--r--asm/player_pc.s2
-rw-r--r--asm/pokedex_screen.s12
-rw-r--r--asm/shop.s2
-rw-r--r--asm/teachy_tv.s8
-rw-r--r--include/global.fieldmap.h4
-rw-r--r--include/list_menu.h2
-rw-r--r--src/.fuse_hidden00001c3f00000004346
-rw-r--r--src/fame_checker.c6
-rw-r--r--src/teachy_tv.c10
-rw-r--r--src/tm_case.c2
18 files changed, 4874 insertions, 40 deletions
diff --git a/asm/.fuse_hidden00001c3c00000003 b/asm/.fuse_hidden00001c3c00000003
new file mode 100644
index 000000000..a97657691
--- /dev/null
+++ b/asm/.fuse_hidden00001c3c00000003
@@ -0,0 +1,2244 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start TeachyTvConfigRboxAndObj
+TeachyTvConfigRboxAndObj: @ 815B118
+ push {r4-r7,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _0815B190 @ =gTasks+0x8
+ adds r5, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B194 @ =gSprites
+ adds r7, r0, r1
+ movs r0, 0x1
+ bl ClearWindowTilemap
+ bl TeachyTvClearWindowRegs
+ ldr r0, _0815B198 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ cmp r0, 0
+ blt _0815B1B8
+ cmp r0, 0x3
+ bgt _0815B1A8
+ ldrb r0, [r5, 0x2]
+ movs r1, 0x78
+ movs r2, 0x38
+ movs r3, 0
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+ movs r4, 0xC0
+ lsls r4, 6
+ movs r0, 0x3
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl ChangeBgX
+ movs r0, 0x3
+ adds r1, r4, 0
+ movs r2, 0x2
+ bl ChangeBgY
+ ldr r2, _0815B19C @ =gUnknown_203F450
+ ldr r1, [r2]
+ ldr r0, _0815B1A0 @ =0x00004004
+ adds r1, r0
+ ldrb r0, [r1]
+ adds r0, 0x3
+ strb r0, [r1]
+ ldr r1, [r2]
+ ldr r0, _0815B1A4 @ =0x00004005
+ adds r1, r0
+ ldrb r0, [r1]
+ subs r0, 0x3
+ strb r0, [r1]
+ b _0815B1B8
+ .align 2, 0
+_0815B190: .4byte gTasks+0x8
+_0815B194: .4byte gSprites
+_0815B198: .4byte gTeachyTV_StaticResources
+_0815B19C: .4byte gUnknown_203F450
+_0815B1A0: .4byte 0x00004004
+_0815B1A4: .4byte 0x00004005
+_0815B1A8:
+ cmp r0, 0x5
+ bgt _0815B1B8
+ ldrb r0, [r5, 0x2]
+ movs r1, 0x78
+ movs r2, 0x38
+ movs r3, 0
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+_0815B1B8:
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ movs r0, 0x24
+ ldrsh r1, [r7, r0]
+ movs r0, 0x26
+ ldrsh r2, [r7, r0]
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r6, 0
+ movs r3, 0
+ bl sub_815BAA0
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end TeachyTvConfigRboxAndObj
+
+ thumb_func_start sub_815B1DC
+sub_815B1DC: @ 815B1DC
+ push {r4,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ ldr r2, _0815B21C @ =gTextFlags
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ bl GetTextSpeedSetting
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+ movs r0, 0xC
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x4
+ adds r2, r4, 0
+ bl AddTextPrinterParametrized
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B21C: .4byte gTextFlags
+ thumb_func_end sub_815B1DC
+
+ thumb_func_start sub_815B220
+sub_815B220: @ 815B220
+ push {r4,lr}
+ ldr r4, _0815B238 @ =gUnknown_203F450
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ bl FreeAllWindowBuffers
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B238: .4byte gUnknown_203F450
+ thumb_func_end sub_815B220
+
+ thumb_func_start sub_815B23C
+sub_815B23C: @ 815B23C
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r1, _0815B26C @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _0815B270 @ =sub_815B274
+ str r1, [r0]
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B26C: .4byte gTasks
+_0815B270: .4byte sub_815B274
+ thumb_func_end sub_815B23C
+
+ thumb_func_start sub_815B274
+sub_815B274: @ 815B274
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0815B298 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0815B2B6
+ ldr r0, _0815B29C @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0815B2A0
+ bl SetMainCallback2
+ b _0815B2AC
+ .align 2, 0
+_0815B298: .4byte gPaletteFade
+_0815B29C: .4byte gUnknown_203F450
+_0815B2A0:
+ bl sub_8055DC4
+ ldr r0, _0815B2BC @ =gTeachyTV_StaticResources
+ ldr r0, [r0]
+ bl SetMainCallback2
+_0815B2AC:
+ bl sub_815B220
+ adds r0, r4, 0
+ bl DestroyTask
+_0815B2B6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B2BC: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B274
+
+ thumb_func_start sub_815B2C0
+sub_815B2C0: @ 815B2C0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _0815B31C @ =gTasks+0x8
+ adds r6, r0, r1
+ bl TeachyTvBg2AnimController
+ ldr r0, _0815B320 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0815B37A
+ ldrb r0, [r6]
+ bl ListMenuHandleInput
+ adds r5, r0, 0
+ ldrb r0, [r6]
+ ldr r4, _0815B324 @ =gTeachyTV_StaticResources+6
+ adds r2, r4, 0x2
+ adds r1, r4, 0
+ bl ListMenuGetScrollAndRow
+ ldr r0, _0815B328 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0815B30A
+ subs r0, r4, 0x6
+ ldr r1, [r0]
+ ldr r0, _0815B32C @ =UseFameCheckerFromMenu
+ cmp r1, r0
+ bne _0815B330
+_0815B30A:
+ movs r0, 0x2
+ negs r0, r0
+ cmp r5, r0
+ beq _0815B330
+ adds r0, 0x1
+ cmp r5, r0
+ bne _0815B33E
+ b _0815B37A
+ .align 2, 0
+_0815B31C: .4byte gTasks+0x8
+_0815B320: .4byte gPaletteFade
+_0815B324: .4byte gTeachyTV_StaticResources+6
+_0815B328: .4byte gMain
+_0815B32C: .4byte UseFameCheckerFromMenu
+_0815B330:
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r7, 0
+ bl sub_815B23C
+ b _0815B37A
+_0815B33E:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r2, _0815B380 @ =gTeachyTV_StaticResources
+ movs r4, 0
+ strb r5, [r2, 0x5]
+ ldrb r0, [r6]
+ adds r1, r2, 0x6
+ adds r2, 0x8
+ bl DestroyListMenu
+ bl TeachyTvClearWindowRegs
+ movs r0, 0x1
+ bl ClearWindowTilemap
+ movs r0, 0
+ bl schedule_bg_copy_tilemap_to_vram
+ bl TeachyTvRemoveScrollIndicatorArrowPair
+ strh r4, [r6, 0x6]
+ strh r4, [r6, 0x4]
+ ldr r1, _0815B384 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _0815B388 @ =sub_815B4EC
+ str r1, [r0]
+_0815B37A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B380: .4byte gTeachyTV_StaticResources
+_0815B384: .4byte gTasks
+_0815B388: .4byte sub_815B4EC
+ thumb_func_end sub_815B2C0
+
+ thumb_func_start sub_815B38C
+sub_815B38C: @ 815B38C
+ push {r4,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B3F8 @ =gTasks+0x8
+ adds r4, r1, r0
+ bl TeachyTvBg2AnimController
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _0815B3F0
+ ldr r0, _0815B3FC @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r0, _0815B400 @ =0x00003004
+ adds r1, r0
+ movs r0, 0x20
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x8
+ movs r2, 0x38
+ movs r3, 0x7
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+ movs r0, 0x2
+ bl schedule_bg_copy_tilemap_to_vram
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ movs r0, 0x88
+ lsls r0, 1
+ bl PlayNewMapMusic
+_0815B3F0:
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B3F8: .4byte gTasks+0x8
+_0815B3FC: .4byte gUnknown_203F450
+_0815B400: .4byte 0x00003004
+ thumb_func_end sub_815B38C
+
+ thumb_func_start sub_815B404
+sub_815B404: @ 815B404
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B450 @ =gTasks+0x8
+ adds r4, r1, r0
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x86
+ bne _0815B448
+ movs r0, 0x1A
+ str r0, [sp]
+ movs r0, 0xC
+ str r0, [sp, 0x4]
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0x2
+ bl schedule_bg_copy_tilemap_to_vram
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B448:
+ add sp, 0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B450: .4byte gTasks+0x8
+ thumb_func_end sub_815B404
+
+ thumb_func_start sub_815B454
+sub_815B454: @ 815B454
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B484 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B488 @ =gSprites
+ adds r1, r0, r1
+ ldrh r2, [r4, 0x4]
+ movs r3, 0x4
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x23
+ beq _0815B48C
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x4]
+ b _0815B4B8
+ .align 2, 0
+_0815B484: .4byte gTasks+0x8
+_0815B488: .4byte gSprites
+_0815B48C:
+ ldrh r2, [r1, 0x24]
+ movs r3, 0x24
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x78
+ bne _0815B4B4
+ adds r0, r1, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ ldr r0, _0815B4B0 @ =gUnknown_841B83D
+ bl sub_815B1DC
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ b _0815B4B8
+ .align 2, 0
+_0815B4B0: .4byte gUnknown_841B83D
+_0815B4B4:
+ adds r0, r2, 0x1
+ strh r0, [r1, 0x24]
+_0815B4B8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815B454
+
+ thumb_func_start sub_815B4C0
+sub_815B4C0: @ 815B4C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B4E8 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r0, 0
+ bl sub_80BF518
+ lsls r0, 16
+ cmp r0, 0
+ bne _0815B4E2
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B4E2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B4E8: .4byte gTasks+0x8
+ thumb_func_end sub_815B4C0
+
+ thumb_func_start sub_815B4EC
+sub_815B4EC: @ 815B4EC
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r6, r0, 3
+ ldr r7, _0815B548 @ =gTasks+0x8
+ adds r5, r6, r7
+ ldr r0, _0815B54C @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0815B55C
+ ldr r0, _0815B550 @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r1, _0815B554 @ =0x00004006
+ adds r0, r1
+ movs r4, 0
+ movs r1, 0x1
+ strb r1, [r0]
+ ldrb r0, [r5, 0x2]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+ movs r0, 0
+ movs r1, 0xCC
+ bl FillWindowPixelBuffer
+ movs r0, 0
+ movs r1, 0x2
+ bl CopyWindowToVram
+ bl sub_815B908
+ strh r4, [r5, 0x4]
+ strh r4, [r5, 0x6]
+ adds r0, r7, 0
+ subs r0, 0x8
+ adds r0, r6, r0
+ ldr r1, _0815B558 @ =sub_815B92C
+ str r1, [r0]
+ b _0815B578
+ .align 2, 0
+_0815B548: .4byte gTasks+0x8
+_0815B54C: .4byte gMain
+_0815B550: .4byte gUnknown_203F450
+_0815B554: .4byte 0x00004006
+_0815B558: .4byte sub_815B92C
+_0815B55C:
+ ldr r1, _0815B580 @ =gUnknown_8479548
+ ldr r0, _0815B584 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ movs r3, 0x6
+ ldrsh r0, [r5, r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ adds r0, r2, 0
+ bl _call_via_r1
+_0815B578:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B580: .4byte gUnknown_8479548
+_0815B584: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B4EC
+
+ thumb_func_start sub_815B588
+sub_815B588: @ 815B588
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0815B5B4 @ =gTasks+0x8
+ adds r4, r0
+ ldr r1, _0815B5B8 @ =gUnknown_8479560
+ ldr r0, _0815B5BC @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl sub_815B1DC
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B5B4: .4byte gTasks+0x8
+_0815B5B8: .4byte gUnknown_8479560
+_0815B5BC: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B588
+
+ thumb_func_start sub_815B5C0
+sub_815B5C0: @ 815B5C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0815B5EC @ =gTasks+0x8
+ adds r4, r0
+ ldr r1, _0815B5F0 @ =gUnknown_8479578
+ ldr r0, _0815B5F4 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl sub_815B1DC
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B5EC: .4byte gTasks+0x8
+_0815B5F0: .4byte gUnknown_8479578
+_0815B5F4: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B5C0
+
+ thumb_func_start sub_815B5F8
+sub_815B5F8: @ 815B5F8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B620 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r0, 0
+ bl sub_80BF518
+ lsls r0, 16
+ cmp r0, 0
+ bne _0815B61A
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B61A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B620: .4byte gTasks+0x8
+ thumb_func_end sub_815B5F8
+
+ thumb_func_start sub_815B624
+sub_815B624: @ 815B624
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B65C @ =gTasks+0x8
+ adds r4, r1, r0
+ ldr r0, _0815B660 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ beq _0815B656
+ movs r0, 0
+ movs r1, 0xCC
+ bl FillWindowPixelBuffer
+ movs r0, 0
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B656:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B65C: .4byte gTasks+0x8
+_0815B660: .4byte gMain
+ thumb_func_end sub_815B624
+
+ thumb_func_start sub_815B664
+sub_815B664: @ 815B664
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0815B6A0 @ =gTasks+0x8
+ adds r4, r0
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B6A4 @ =gSprites
+ adds r0, r1
+ movs r1, 0x5
+ bl StartSpriteAnim
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ strh r0, [r4, 0x8]
+ movs r0, 0x1
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B6A0: .4byte gTasks+0x8
+_0815B6A4: .4byte gSprites
+ thumb_func_end sub_815B664
+
+ thumb_func_start sub_815B6A8
+sub_815B6A8: @ 815B6A8
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0815B730 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B734 @ =gSprites
+ adds r6, r0, r1
+ movs r1, 0x80
+ lsls r1, 1
+ movs r0, 0x3
+ movs r2, 0x2
+ bl ChangeBgY
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ movs r3, 0xF
+ ands r3, r0
+ cmp r3, 0
+ bne _0815B702
+ ldr r0, _0815B738 @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r2, _0815B73C @ =0x00004005
+ adds r1, r2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ movs r0, 0x24
+ ldrsh r1, [r6, r0]
+ movs r0, 0x26
+ ldrsh r2, [r6, r0]
+ str r3, [sp]
+ adds r0, r5, 0
+ movs r3, 0
+ bl sub_815BAA0
+_0815B702:
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x30
+ bne _0815B726
+ movs r1, 0
+ strh r1, [r4, 0x4]
+ movs r2, 0x1
+ negs r2, r2
+ adds r0, r2, 0
+ strh r0, [r4, 0x8]
+ strh r1, [r4, 0xA]
+ adds r0, r6, 0
+ movs r1, 0x7
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B726:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B730: .4byte gTasks+0x8
+_0815B734: .4byte gSprites
+_0815B738: .4byte gUnknown_203F450
+_0815B73C: .4byte 0x00004005
+ thumb_func_end sub_815B6A8
+
+ thumb_func_start sub_815B740
+sub_815B740: @ 815B740
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0815B7D4 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B7D8 @ =gSprites
+ adds r6, r0, r1
+ movs r1, 0x80
+ lsls r1, 1
+ movs r0, 0x3
+ movs r2, 0x1
+ bl ChangeBgX
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ movs r2, 0xF
+ ands r0, r2
+ cmp r0, 0
+ bne _0815B78A
+ ldr r0, _0815B7DC @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r3, _0815B7E0 @ =0x00004004
+ adds r1, r3
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0815B78A:
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ adds r0, 0x8
+ ands r0, r2
+ cmp r0, 0
+ bne _0815B7AC
+ ldrh r1, [r6, 0x24]
+ adds r1, 0x8
+ lsls r1, 16
+ asrs r1, 16
+ movs r3, 0x26
+ ldrsh r2, [r6, r3]
+ str r0, [sp]
+ adds r0, r5, 0
+ movs r3, 0
+ bl sub_815BAA0
+_0815B7AC:
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x30
+ bne _0815B7CA
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B7CA:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B7D4: .4byte gTasks+0x8
+_0815B7D8: .4byte gSprites
+_0815B7DC: .4byte gUnknown_203F450
+_0815B7E0: .4byte 0x00004004
+ thumb_func_end sub_815B740
+
+ thumb_func_start sub_815B7E4
+sub_815B7E4: @ 815B7E4
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r5, r6, 2
+ adds r5, r6
+ lsls r5, 3
+ ldr r0, _0815B838 @ =gTasks+0x8
+ adds r5, r0
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0815B83C @ =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl StartSpriteAnim
+ ldrh r0, [r5, 0x6]
+ adds r0, 0x1
+ strh r0, [r5, 0x6]
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ movs r0, 0x24
+ ldrsh r1, [r4, r0]
+ movs r0, 0x26
+ ldrsh r2, [r4, r0]
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r6, 0
+ movs r3, 0
+ bl sub_815BAA0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B838: .4byte gTasks+0x8
+_0815B83C: .4byte gSprites
+ thumb_func_end sub_815B7E4
+
+ thumb_func_start sub_815B840
+sub_815B840: @ 815B840
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, _0815B890 @ =gTasks+0x8
+ adds r5, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B894 @ =gSprites
+ adds r4, r0, r1
+ ldrh r1, [r4, 0x24]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _0815B87E
+ subs r1, 0x8
+ lsls r1, 16
+ asrs r1, 16
+ movs r6, 0x26
+ ldrsh r2, [r4, r6]
+ str r0, [sp]
+ adds r0, r3, 0
+ movs r3, 0
+ bl sub_815BAA0
+_0815B87E:
+ ldrh r1, [r4, 0x24]
+ movs r2, 0x24
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x8
+ bne _0815B898
+ ldrh r0, [r5, 0x6]
+ adds r0, 0x1
+ strh r0, [r5, 0x6]
+ b _0815B89C
+ .align 2, 0
+_0815B890: .4byte gTasks+0x8
+_0815B894: .4byte gSprites
+_0815B898:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x24]
+_0815B89C:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815B840
+
+ thumb_func_start sub_815B8A4
+sub_815B8A4: @ 815B8A4
+ push {r4,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B900 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0815B8DC
+ ldr r1, _0815B904 @ =gUnknown_8479590
+ movs r0, 0x8
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x14
+ movs r3, 0xA
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ movs r0, 0x1
+ bl schedule_bg_copy_tilemap_to_vram
+_0815B8DC:
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7E
+ ble _0815B8F8
+ bl sub_815B908
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B8F8:
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B900: .4byte gTasks+0x8
+_0815B904: .4byte gUnknown_8479590
+ thumb_func_end sub_815B8A4
+
+ thumb_func_start sub_815B908
+sub_815B908: @ 815B908
+ push {lr}
+ sub sp, 0x8
+ movs r0, 0x8
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0x14
+ movs r3, 0xA
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0x1
+ bl schedule_bg_copy_tilemap_to_vram
+ add sp, 0x8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815B908
+
+ thumb_func_start sub_815B92C
+sub_815B92C: @ 815B92C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r6, r1, 3
+ ldr r7, _0815B9DC @ =gTasks+0x8
+ adds r5, r6, r7
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0815B94C
+ movs r0, 0xAD
+ lsls r0, 1
+ bl PlayNewMapMusic
+_0815B94C:
+ bl TeachyTvBg2AnimController
+ ldrh r0, [r5, 0x4]
+ adds r0, 0x1
+ strh r0, [r5, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _0815B9D4
+ movs r4, 0
+ strh r4, [r5, 0x4]
+ strh r4, [r5, 0x6]
+ bl TeachyTvSetupWindow
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5]
+ adds r0, r7, 0
+ subs r0, 0x8
+ adds r0, r6, r0
+ ldr r1, _0815B9E0 @ =sub_815B2C0
+ str r1, [r0]
+ movs r0, 0
+ bl PutWindowTilemap
+ bl TeachyTvSetupScrollIndicatorArrowPair
+ bl TeachyTvSetWindowRegs
+ movs r0, 0
+ bl schedule_bg_copy_tilemap_to_vram
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x3
+ movs r2, 0x2
+ bl ChangeBgX
+ movs r1, 0xA0
+ lsls r1, 6
+ movs r0, 0x3
+ movs r2, 0x1
+ bl ChangeBgY
+ ldr r2, _0815B9E4 @ =gUnknown_203F450
+ ldr r0, [r2]
+ ldr r1, _0815B9E8 @ =0x00004004
+ adds r0, r1
+ strb r4, [r0]
+ ldr r0, [r2]
+ adds r1, 0x1
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0]
+ ldr r0, [r2]
+ ldr r1, _0815B9EC @ =0x00004006
+ adds r0, r1
+ strb r4, [r0]
+_0815B9D4:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B9DC: .4byte gTasks+0x8
+_0815B9E0: .4byte sub_815B2C0
+_0815B9E4: .4byte gUnknown_203F450
+_0815B9E8: .4byte 0x00004004
+_0815B9EC: .4byte 0x00004006
+ thumb_func_end sub_815B92C
+
+ thumb_func_start sub_815B9F0
+sub_815B9F0: @ 815B9F0
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r2, r1, 0
+ ldr r0, _0815BA0C @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ cmp r0, 0
+ blt _0815BA22
+ cmp r0, 0x3
+ bgt _0815BA10
+ adds r0, r1, 0
+ bl sub_815BC90
+ b _0815BA22
+ .align 2, 0
+_0815BA0C: .4byte gTeachyTV_StaticResources
+_0815BA10:
+ cmp r0, 0x5
+ bgt _0815BA22
+ ldr r0, _0815BA28 @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r0, _0815BA2C @ =sub_815BA30
+ str r0, [r1]
+ adds r0, r2, 0
+ bl sub_815B23C
+_0815BA22:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BA28: .4byte gUnknown_203F450
+_0815BA2C: .4byte sub_815BA30
+ thumb_func_end sub_815B9F0
+
+ thumb_func_start sub_815BA30
+sub_815BA30: @ 815BA30
+ push {lr}
+ ldr r0, _0815BA44 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ cmp r0, 0x4
+ bne _0815BA48
+ movs r0, 0xA
+ bl sub_810B108
+ b _0815BA4E
+ .align 2, 0
+_0815BA44: .4byte gTeachyTV_StaticResources
+_0815BA48:
+ movs r0, 0x9
+ bl sub_810B108
+_0815BA4E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BA30
+
+ thumb_func_start TeachyTvTaskFunction
+TeachyTvTaskFunction: @ 815BA54
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r2, r1, 3
+ ldr r4, _0815BA8C @ =gTasks+0x8
+ adds r3, r2, r4
+ ldr r0, _0815BA90 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0815BA86
+ ldr r1, _0815BA94 @ =gUnknown_8479390
+ ldr r0, _0815BA98 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r3, 0x6]
+ adds r0, r4, 0
+ subs r0, 0x8
+ adds r0, r2, r0
+ ldr r1, _0815BA9C @ =sub_815B4EC
+ str r1, [r0]
+_0815BA86:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BA8C: .4byte gTasks+0x8
+_0815BA90: .4byte gPaletteFade
+_0815BA94: .4byte gUnknown_8479390
+_0815BA98: .4byte gTeachyTV_StaticResources
+_0815BA9C: .4byte sub_815B4EC
+ thumb_func_end TeachyTvTaskFunction
+
+ thumb_func_start sub_815BAA0
+sub_815BAA0: @ 815BAA0
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r4, [sp, 0x1C]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r1, r2, 16
+ lsls r3, 24
+ lsrs r7, r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r8, r4
+ ldr r0, _0815BB34 @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r2, _0815BB38 @ =0x00004006
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0815BB5C
+ lsls r0, r6, 16
+ ldr r2, _0815BB3C @ =0xfff00000
+ adds r0, r2
+ asrs r0, 16
+ lsls r1, 16
+ asrs r5, r1, 16
+ adds r1, r5, 0
+ bl sub_815BC40
+ lsls r0, 24
+ cmp r0, 0
+ beq _0815BB5C
+ ldr r0, _0815BB40 @ =gUnknown_83A0010
+ ldr r0, [r0, 0x10]
+ movs r1, 0
+ movs r2, 0
+ adds r3, r7, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _0815BB44 @ =gSprites
+ adds r4, r1, r0
+ strh r6, [r4, 0x24]
+ adds r0, r5, 0
+ adds r0, 0x8
+ strh r0, [r4, 0x26]
+ ldr r0, _0815BB48 @ =sub_815BB6C
+ str r0, [r4, 0x1C]
+ mov r0, r9
+ strh r0, [r4, 0x2E]
+ mov r2, r8
+ cmp r2, 0x1
+ bne _0815BB4C
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl SeekSpriteAnim
+ ldrb r0, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x8
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ b _0815BB5C
+ .align 2, 0
+_0815BB34: .4byte gUnknown_203F450
+_0815BB38: .4byte 0x00004006
+_0815BB3C: .4byte 0xfff00000
+_0815BB40: .4byte gUnknown_83A0010
+_0815BB44: .4byte gSprites
+_0815BB48: .4byte sub_815BB6C
+_0815BB4C:
+ ldr r1, _0815BB68 @ =gUnknown_84795B8
+ adds r0, r4, 0
+ bl SetSubspriteTables
+ adds r1, r4, 0
+ adds r1, 0x42
+ movs r0, 0x40
+ strb r0, [r1]
+_0815BB5C:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BB68: .4byte gUnknown_84795B8
+ thumb_func_end sub_815BAA0
+
+ thumb_func_start sub_815BB6C
+sub_815BB6C: @ 815BB6C
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _0815BBA4 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815BBA8 @ =gSprites
+ adds r5, r0, r1
+ ldr r0, _0815BBAC @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r1, _0815BBB0 @ =0x00004006
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0815BBB4
+ adds r0, r3, 0
+ bl DestroySprite
+ b _0815BC3A
+ .align 2, 0
+_0815BBA4: .4byte gTasks+0x8
+_0815BBA8: .4byte gSprites
+_0815BBAC: .4byte gUnknown_203F450
+_0815BBB0: .4byte 0x00004006
+_0815BBB4:
+ adds r0, r3, 0
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0815BBD2
+ adds r2, r3, 0
+ adds r2, 0x42
+ ldrb r0, [r2]
+ movs r1, 0x40
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x1
+ orrs r1, r0
+ strb r1, [r2]
+ b _0815BBE0
+_0815BBD2:
+ adds r2, r3, 0
+ adds r2, 0x42
+ ldrb r1, [r2]
+ movs r0, 0x40
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_0815BBE0:
+ ldrh r0, [r4, 0x8]
+ ldrh r2, [r3, 0x24]
+ adds r0, r2
+ strh r0, [r3, 0x24]
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r3, 0x26]
+ adds r0, r1
+ strh r0, [r3, 0x26]
+ adds r0, r3, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0815BC3A
+ adds r1, r3, 0
+ adds r1, 0x43
+ movs r0, 0
+ strb r0, [r1]
+ ldrh r1, [r3, 0x24]
+ ldrh r0, [r5, 0x24]
+ subs r1, r0
+ ldrh r0, [r3, 0x26]
+ ldrh r2, [r5, 0x26]
+ subs r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ movs r2, 0xF0
+ lsls r2, 12
+ adds r1, r2
+ lsrs r1, 16
+ cmp r1, 0x1E
+ bhi _0815BC34
+ lsls r0, 16
+ asrs r1, r0, 16
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ ble _0815BC34
+ cmp r1, 0x17
+ ble _0815BC3A
+_0815BC34:
+ adds r0, r3, 0
+ bl DestroySprite
+_0815BC3A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BB6C
+
+ thumb_func_start sub_815BC40
+sub_815BC40: @ 815BC40
+ push {r4,r5,lr}
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r4, r0, 16
+ cmp r4, 0
+ blt _0815BC52
+ lsls r1, 16
+ cmp r1, 0
+ bge _0815BC56
+_0815BC52:
+ movs r0, 0
+ b _0815BC78
+_0815BC56:
+ ldr r3, _0815BC80 @ =gUnknown_84795C8
+ ldr r0, _0815BC84 @ =gUnknown_203F450
+ ldr r2, [r0]
+ ldr r5, _0815BC88 @ =0x00004005
+ adds r0, r2, r5
+ asrs r1, 20
+ ldrb r0, [r0]
+ adds r1, r0
+ lsls r1, 4
+ ldr r0, _0815BC8C @ =0x00004004
+ adds r2, r0
+ asrs r0, r4, 20
+ ldrb r2, [r2]
+ adds r0, r2
+ adds r1, r0
+ adds r1, r3
+ ldrb r0, [r1]
+_0815BC78:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0815BC80: .4byte gUnknown_84795C8
+_0815BC84: .4byte gUnknown_203F450
+_0815BC88: .4byte 0x00004005
+_0815BC8C: .4byte 0x00004004
+ thumb_func_end sub_815BC40
+
+ thumb_func_start sub_815BC90
+sub_815BC90: @ 815BC90
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _0815BCCC @ =gTasks+0x8
+ adds r5, r0, r1
+ bl sub_815B220
+ ldr r1, _0815BCD0 @ =gSpecialVar_0x8004
+ ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources
+ ldrb r0, [r4, 0x5]
+ strh r0, [r1]
+ ldr r1, _0815BCD8 @ =gMain
+ ldr r0, _0815BCDC @ =sub_815BD58
+ str r0, [r1, 0x8]
+ bl SavePlayerParty
+ bl sub_8159F40
+ movs r0, 0
+ bl PlayMapChosenOrBattleBGM
+ ldrb r0, [r4, 0x5]
+ cmp r0, 0
+ bne _0815BCE0
+ movs r0, 0x9
+ b _0815BCE2
+ .align 2, 0
+_0815BCCC: .4byte gTasks+0x8
+_0815BCD0: .4byte gSpecialVar_0x8004
+_0815BCD4: .4byte gTeachyTV_StaticResources
+_0815BCD8: .4byte gMain
+_0815BCDC: .4byte sub_815BD58
+_0815BCE0:
+ movs r0, 0x8
+_0815BCE2:
+ strh r0, [r5, 0xC]
+ movs r0, 0
+ strh r0, [r5, 0xE]
+ ldr r1, _0815BCFC @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _0815BD00 @ =sub_815BD04
+ str r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BCFC: .4byte gTasks
+_0815BD00: .4byte sub_815BD04
+ thumb_func_end sub_815BC90
+
+ thumb_func_start sub_815BD04
+sub_815BD04: @ 815BD04
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0815BD24 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0815BD28
+ cmp r0, 0x1
+ beq _0815BD36
+ b _0815BD4C
+ .align 2, 0
+_0815BD24: .4byte gTasks+0x8
+_0815BD28:
+ ldrb r0, [r4, 0xC]
+ bl sub_80D08B8
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ b _0815BD4C
+_0815BD36:
+ bl sub_80D08F8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0815BD4C
+ ldr r0, _0815BD54 @ =sub_800FD9C
+ bl SetMainCallback2
+ adds r0, r5, 0
+ bl DestroyTask
+_0815BD4C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BD54: .4byte sub_800FD9C
+ thumb_func_end sub_815BD04
+
+ thumb_func_start sub_815BD58
+sub_815BD58: @ 815BD58
+ push {lr}
+ bl LoadPlayerParty
+ ldr r0, _0815BD6C @ =gUnknown_2023E8A
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0815BD70
+ bl sub_815AC20
+ b _0815BD78
+ .align 2, 0
+_0815BD6C: .4byte gUnknown_2023E8A
+_0815BD70:
+ movs r0, 0x88
+ lsls r0, 1
+ bl PlayNewMapMusic
+_0815BD78:
+ bl CB2_ReturnToTeachyTV
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BD58
+
+ thumb_func_start sub_815BD80
+sub_815BD80: @ 815BD80
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x10]
+ ldr r1, _0815BE1C @ =Route1_Layout
+ mov r8, r1
+ movs r0, 0x80
+ lsls r0, 4
+ bl AllocZeroed
+ adds r6, r0, 0
+ movs r0, 0x80
+ lsls r0, 8
+ bl AllocZeroed
+ str r0, [sp, 0x8]
+ movs r0, 0x10
+ bl Alloc
+ str r0, [sp, 0xC]
+ movs r1, 0xFF
+ movs r2, 0x10
+ bl memset
+ mov r2, r8
+ ldr r0, [r2, 0x10]
+ movs r2, 0xA0
+ lsls r2, 2
+ ldr r1, [sp, 0x8]
+ bl sub_815BF48
+ mov r3, r8
+ ldr r0, [r3, 0x14]
+ ldr r2, [sp, 0x8]
+ movs r3, 0xA0
+ lsls r3, 7
+ adds r1, r2, r3
+ movs r2, 0xC0
+ lsls r2, 1
+ bl sub_815BF48
+ movs r4, 0
+_0815BDDE:
+ movs r2, 0
+ adds r0, r4, 0x6
+ str r0, [sp, 0x18]
+ lsls r1, r4, 4
+ mov r10, r1
+ lsls r3, r4, 6
+ mov r9, r3
+ adds r4, 0x1
+ str r4, [sp, 0x14]
+_0815BDF0:
+ mov r1, r8
+ ldr r0, [r1]
+ ldr r3, [sp, 0x18]
+ muls r0, r3
+ ldr r1, [r1, 0xC]
+ adds r0, r2, r0
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0, 0x10]
+ ldr r3, _0815BE20 @ =0x000003ff
+ adds r0, r3, 0
+ adds r4, r0, 0
+ ands r4, r1
+ movs r3, 0
+ mov r0, r10
+ adds r1, r0, r2
+ lsls r5, r2, 1
+ adds r7, r2, 0x1
+ cmp r3, r1
+ bge _0815BE3C
+ ldrh r0, [r6]
+ b _0815BE34
+ .align 2, 0
+_0815BE1C: .4byte Route1_Layout
+_0815BE20: .4byte 0x000003ff
+_0815BE24:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, r1
+ bge _0815BE3C
+ lsls r0, r3, 1
+ adds r0, r6
+ ldrh r0, [r0]
+_0815BE34:
+ cmp r0, 0
+ beq _0815BE46
+ cmp r0, r4
+ bne _0815BE24
+_0815BE3C:
+ lsls r0, r3, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _0815BE56
+_0815BE46:
+ lsls r0, r3, 1
+ adds r0, r6
+ strh r4, [r0]
+ ldr r0, [sp, 0x10]
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x10]
+_0815BE56:
+ mov r2, r9
+ adds r1, r2, r5
+ lsls r1, 1
+ ldr r0, [sp, 0x4]
+ adds r1, r0, r1
+ str r3, [sp]
+ mov r0, r8
+ ldr r2, [sp, 0xC]
+ adds r3, r4, 0
+ bl sub_815BF70
+ lsls r0, r7, 16
+ lsrs r2, r0, 16
+ cmp r2, 0xF
+ bls _0815BDF0
+ ldr r1, [sp, 0x14]
+ lsls r0, r1, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x8
+ bls _0815BDDE
+ ldr r2, [sp, 0x10]
+ lsls r0, r2, 7
+ bl Alloc
+ adds r7, r0, 0
+ movs r0, 0x80
+ bl Alloc
+ adds r5, r0, 0
+ movs r4, 0
+ ldr r3, [sp, 0x10]
+ lsls r3, 23
+ mov r9, r3
+ ldr r0, [sp, 0x10]
+ cmp r4, r0
+ bcs _0815BF00
+ ldr r1, _0815BECC @ =0x0000027f
+ mov r10, r1
+_0815BEA2:
+ adds r0, r5, 0
+ movs r1, 0
+ movs r2, 0x80
+ bl memset
+ lsls r0, r4, 1
+ adds r1, r0, r6
+ ldrh r0, [r1]
+ cmp r0, r10
+ bhi _0815BED0
+ mov r2, r8
+ ldr r0, [r2, 0x10]
+ ldrh r1, [r1]
+ lsls r1, 4
+ ldr r0, [r0, 0xC]
+ adds r0, r1
+ adds r1, r5, 0
+ ldr r2, [sp, 0x8]
+ bl sub_815BFF0
+ b _0815BEE8
+ .align 2, 0
+_0815BECC: .4byte 0x0000027f
+_0815BED0:
+ mov r3, r8
+ ldr r0, [r3, 0x14]
+ ldrh r1, [r1]
+ ldr r2, _0815BF44 @ =0xfffffd80
+ adds r1, r2
+ lsls r1, 4
+ ldr r0, [r0, 0xC]
+ adds r0, r1
+ adds r1, r5, 0
+ ldr r2, [sp, 0x8]
+ bl sub_815BFF0
+_0815BEE8:
+ lsls r1, r4, 7
+ adds r1, r7, r1
+ adds r0, r5, 0
+ movs r2, 0x20
+ bl CpuFastSet
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r3, [sp, 0x10]
+ cmp r4, r3
+ bcc _0815BEA2
+_0815BF00:
+ mov r0, r9
+ lsrs r2, r0, 16
+ movs r0, 0x3
+ adds r1, r7, 0
+ movs r3, 0
+ bl LoadBgTiles
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ bl sub_815C230
+ adds r0, r5, 0
+ bl Free
+ adds r0, r7, 0
+ bl Free
+ ldr r0, [sp, 0xC]
+ bl Free
+ ldr r0, [sp, 0x8]
+ bl Free
+ adds r0, r6, 0
+ bl Free
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BF44: .4byte 0xfffffd80
+ thumb_func_end sub_815BD80
+
+ thumb_func_start sub_815BF48
+sub_815BF48: @ 815BF48
+ push {lr}
+ adds r3, r0, 0
+ lsls r2, 16
+ lsrs r2, 16
+ cmp r3, 0
+ beq _0815BF6A
+ ldrb r0, [r3]
+ cmp r0, 0
+ bne _0815BF64
+ ldr r0, [r3, 0x4]
+ lsls r2, 3
+ bl CpuFastSet
+ b _0815BF6A
+_0815BF64:
+ ldr r0, [r3, 0x4]
+ bl LZDecompressWram
+_0815BF6A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BF48
+
+ thumb_func_start sub_815BF70
+sub_815BF70: @ 815BF70
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r7, r1, 0
+ adds r6, r2, 0
+ ldr r0, [sp, 0x14]
+ lsls r3, 16
+ lsrs r1, r3, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r0, _0815BF8C @ =0x0000027f
+ cmp r1, r0
+ bhi _0815BF90
+ ldr r0, [r5, 0x10]
+ b _0815BF96
+ .align 2, 0
+_0815BF8C: .4byte 0x0000027f
+_0815BF90:
+ ldr r0, [r5, 0x14]
+ ldr r2, _0815BFEC @ =0xfffffd80
+ adds r1, r2
+_0815BF96:
+ lsls r1, 4
+ ldr r0, [r0, 0xC]
+ adds r5, r0, r1
+ ldrh r1, [r5]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ lsls r0, 12
+ lsls r4, 2
+ adds r0, r4
+ strh r0, [r7]
+ ldrh r1, [r5, 0x2]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ lsls r0, 12
+ adds r0, r4
+ adds r0, 0x1
+ strh r0, [r7, 0x2]
+ ldrh r1, [r5, 0x4]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ adds r1, r7, 0
+ adds r1, 0x40
+ lsls r0, 12
+ adds r0, r4
+ adds r0, 0x2
+ strh r0, [r1]
+ ldrh r1, [r5, 0x6]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ adds r1, r7, 0
+ adds r1, 0x42
+ lsls r0, 12
+ adds r0, r4
+ adds r0, 0x3
+ strh r0, [r1]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BFEC: .4byte 0xfffffd80
+ thumb_func_end sub_815BF70
+
+ thumb_func_start sub_815BFF0
+sub_815BFF0: @ 815BFF0
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ mov r8, r0
+ mov r9, r1
+ adds r5, r2, 0
+ ldrh r2, [r0]
+ ldr r4, _0815C0D0 @ =0x000003ff
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ movs r6, 0x3
+ ands r2, r6
+ mov r0, r9
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0x8]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r9
+ bl sub_815C0D4
+ movs r0, 0x20
+ add r0, r9
+ mov r10, r0
+ mov r0, r8
+ ldrh r2, [r0, 0x2]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0xA]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ movs r0, 0x40
+ add r0, r9
+ mov r10, r0
+ mov r0, r8
+ ldrh r2, [r0, 0x4]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0xC]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ movs r0, 0x60
+ add r9, r0
+ mov r0, r8
+ ldrh r2, [r0, 0x6]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r9
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0xE]
+ ands r4, r2
+ lsls r4, 5
+ adds r5, r4
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_815C0D4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815C0D0: .4byte 0x000003ff
+ thumb_func_end sub_815BFF0
+
+ thumb_func_start sub_815C0D4
+sub_815C0D4: @ 815C0D4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r9, r0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ movs r0, 0x20
+ bl AllocZeroed
+ adds r6, r0, 0
+ movs r0, 0x20
+ bl AllocZeroed
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r6, 0
+ movs r2, 0x8
+ bl CpuFastSet
+ movs r0, 0x1
+ mov r1, r10
+ ands r0, r1
+ cmp r0, 0
+ beq _0815C15A
+ movs r5, 0
+ movs r7, 0xF
+ mov r12, r7
+ movs r0, 0xF0
+ mov r8, r0
+_0815C118:
+ movs r3, 0
+ lsls r4, r5, 2
+_0815C11C:
+ subs r0, r3, 0x3
+ subs r0, r4, r0
+ adds r0, r6, r0
+ ldrb r1, [r0]
+ adds r2, r4, r3
+ ldr r7, [sp]
+ adds r2, r7, r2
+ adds r0, r1, 0
+ mov r7, r12
+ ands r0, r7
+ lsls r0, 4
+ mov r7, r8
+ ands r1, r7
+ lsrs r1, 4
+ adds r0, r1
+ strb r0, [r2]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x3
+ bls _0815C11C
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x7
+ bls _0815C118
+ ldr r0, [sp]
+ adds r1, r6, 0
+ movs r2, 0x8
+ bl CpuFastSet
+_0815C15A:
+ movs r0, 0x2
+ mov r1, r10
+ ands r0, r1
+ cmp r0, 0
+ beq _0815C18E
+ movs r5, 0
+_0815C166:
+ lsls r0, r5, 2
+ ldr r7, [sp]
+ adds r0, r7
+ movs r1, 0x7
+ subs r1, r5
+ lsls r1, 2
+ adds r1, r6
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x7
+ bls _0815C166
+ ldr r0, [sp]
+ adds r1, r6, 0
+ movs r2, 0x8
+ bl CpuFastSet
+_0815C18E:
+ movs r5, 0
+ movs r0, 0xF0
+ mov r8, r0
+ movs r1, 0xF
+ mov r12, r1
+_0815C198:
+ adds r4, r6, r5
+ ldrb r0, [r4]
+ mov r3, r8
+ ands r3, r0
+ cmp r3, 0
+ beq _0815C1B2
+ mov r7, r9
+ adds r2, r7, r5
+ ldrb r1, [r2]
+ mov r0, r12
+ ands r0, r1
+ adds r0, r3
+ strb r0, [r2]
+_0815C1B2:
+ ldrb r0, [r4]
+ mov r3, r12
+ ands r3, r0
+ cmp r3, 0
+ beq _0815C1CA
+ mov r0, r9
+ adds r2, r0, r5
+ ldrb r1, [r2]
+ mov r0, r8
+ ands r0, r1
+ adds r0, r3
+ strb r0, [r2]
+_0815C1CA:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1F
+ bls _0815C198
+ ldr r0, [sp]
+ bl Free
+ adds r0, r6, 0
+ bl Free
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815C0D4
+
+ thumb_func_start sub_815C1F0
+sub_815C1F0: @ 815C1F0
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 28
+ movs r3, 0
+ ldrb r0, [r4]
+ cmp r0, r1
+ beq _0815C220
+ cmp r0, 0xFF
+ bne _0815C208
+ strb r1, [r4]
+ b _0815C220
+_0815C208:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0xF
+ bhi _0815C220
+ adds r2, r4, r3
+ ldrb r0, [r2]
+ cmp r0, r1
+ beq _0815C220
+ cmp r0, 0xFF
+ bne _0815C208
+ strb r1, [r2]
+_0815C220:
+ movs r0, 0xF
+ subs r0, r3
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_815C1F0
+
+ thumb_func_start sub_815C230
+sub_815C230: @ 815C230
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ movs r4, 0
+ ldrb r0, [r5]
+ cmp r0, 0xFF
+ beq _0815C274
+_0815C23E:
+ adds r1, r5, r4
+ ldrb r0, [r1]
+ cmp r0, 0x6
+ bls _0815C24A
+ ldr r0, [r6, 0x14]
+ b _0815C24C
+_0815C24A:
+ ldr r0, [r6, 0x10]
+_0815C24C:
+ ldrb r1, [r1]
+ lsls r1, 5
+ ldr r0, [r0, 0x8]
+ adds r0, r1
+ movs r1, 0xF
+ subs r1, r4
+ lsls r1, 20
+ lsrs r1, 16
+ movs r2, 0x20
+ bl LoadPalette
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bhi _0815C274
+ adds r0, r5, r4
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ bne _0815C23E
+_0815C274:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815C230
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/.fuse_hidden00001c3c00000005 b/asm/.fuse_hidden00001c3c00000005
new file mode 100644
index 000000000..2aff48af5
--- /dev/null
+++ b/asm/.fuse_hidden00001c3c00000005
@@ -0,0 +1,2244 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start TeachyTvConfigRboxAndObj
+TeachyTvConfigRboxAndObj: @ 815B118
+ push {r4-r7,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _0815B190 @ =gTasks+0x8
+ adds r5, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B194 @ =gSprites
+ adds r7, r0, r1
+ movs r0, 0x1
+ bl ClearWindowTilemap
+ bl TeachyTvClearWindowRegs
+ ldr r0, _0815B198 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ cmp r0, 0
+ blt _0815B1B8
+ cmp r0, 0x3
+ bgt _0815B1A8
+ ldrb r0, [r5, 0x2]
+ movs r1, 0x78
+ movs r2, 0x38
+ movs r3, 0
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+ movs r4, 0xC0
+ lsls r4, 6
+ movs r0, 0x3
+ adds r1, r4, 0
+ movs r2, 0x1
+ bl ChangeBgX
+ movs r0, 0x3
+ adds r1, r4, 0
+ movs r2, 0x2
+ bl ChangeBgY
+ ldr r2, _0815B19C @ =gUnknown_203F450
+ ldr r1, [r2]
+ ldr r0, _0815B1A0 @ =0x00004004
+ adds r1, r0
+ ldrb r0, [r1]
+ adds r0, 0x3
+ strb r0, [r1]
+ ldr r1, [r2]
+ ldr r0, _0815B1A4 @ =0x00004005
+ adds r1, r0
+ ldrb r0, [r1]
+ subs r0, 0x3
+ strb r0, [r1]
+ b _0815B1B8
+ .align 2, 0
+_0815B190: .4byte gTasks+0x8
+_0815B194: .4byte gSprites
+_0815B198: .4byte gTeachyTV_StaticResources
+_0815B19C: .4byte gUnknown_203F450
+_0815B1A0: .4byte 0x00004004
+_0815B1A4: .4byte 0x00004005
+_0815B1A8:
+ cmp r0, 0x5
+ bgt _0815B1B8
+ ldrb r0, [r5, 0x2]
+ movs r1, 0x78
+ movs r2, 0x38
+ movs r3, 0
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+_0815B1B8:
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ movs r0, 0x24
+ ldrsh r1, [r7, r0]
+ movs r0, 0x26
+ ldrsh r2, [r7, r0]
+ movs r0, 0x1
+ str r0, [sp]
+ adds r0, r6, 0
+ movs r3, 0
+ bl sub_815BAA0
+ add sp, 0x4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end TeachyTvConfigRboxAndObj
+
+ thumb_func_start sub_815B1DC
+sub_815B1DC: @ 815B1DC
+ push {r4,lr}
+ sub sp, 0x10
+ adds r4, r0, 0
+ ldr r2, _0815B21C @ =gTextFlags
+ ldrb r1, [r2]
+ movs r0, 0x5
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+ bl GetTextSpeedSetting
+ adds r3, r0, 0
+ lsls r3, 24
+ lsrs r3, 24
+ movs r0, 0
+ str r0, [sp]
+ movs r0, 0x1
+ str r0, [sp, 0x4]
+ movs r0, 0xC
+ str r0, [sp, 0x8]
+ movs r0, 0x3
+ str r0, [sp, 0xC]
+ movs r0, 0
+ movs r1, 0x4
+ adds r2, r4, 0
+ bl AddTextPrinterParametrized
+ add sp, 0x10
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B21C: .4byte gTextFlags
+ thumb_func_end sub_815B1DC
+
+ thumb_func_start sub_815B220
+sub_815B220: @ 815B220
+ push {r4,lr}
+ ldr r4, _0815B238 @ =gUnknown_203F450
+ ldr r0, [r4]
+ bl Free
+ movs r0, 0
+ str r0, [r4]
+ bl FreeAllWindowBuffers
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B238: .4byte gUnknown_203F450
+ thumb_func_end sub_815B220
+
+ thumb_func_start sub_815B23C
+sub_815B23C: @ 815B23C
+ push {r4,lr}
+ sub sp, 0x4
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0x1
+ negs r0, r0
+ movs r1, 0
+ str r1, [sp]
+ movs r2, 0
+ movs r3, 0x10
+ bl BeginNormalPaletteFade
+ ldr r1, _0815B26C @ =gTasks
+ lsls r0, r4, 2
+ adds r0, r4
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _0815B270 @ =sub_815B274
+ str r1, [r0]
+ add sp, 0x4
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B26C: .4byte gTasks
+_0815B270: .4byte sub_815B274
+ thumb_func_end sub_815B23C
+
+ thumb_func_start sub_815B274
+sub_815B274: @ 815B274
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ ldr r0, _0815B298 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0815B2B6
+ ldr r0, _0815B29C @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r0, [r0]
+ cmp r0, 0
+ beq _0815B2A0
+ bl SetMainCallback2
+ b _0815B2AC
+ .align 2, 0
+_0815B298: .4byte gPaletteFade
+_0815B29C: .4byte gUnknown_203F450
+_0815B2A0:
+ bl sub_8055DC4
+ ldr r0, _0815B2BC @ =gTeachyTV_StaticResources
+ ldr r0, [r0]
+ bl SetMainCallback2
+_0815B2AC:
+ bl sub_815B220
+ adds r0, r4, 0
+ bl DestroyTask
+_0815B2B6:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B2BC: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B274
+
+ thumb_func_start sub_815B2C0
+sub_815B2C0: @ 815B2C0
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ ldr r1, _0815B31C @ =gTasks+0x8
+ adds r6, r0, r1
+ bl TeachyTvBg2AnimController
+ ldr r0, _0815B320 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0815B37A
+ ldrb r0, [r6]
+ bl ListMenuHandleInput
+ adds r5, r0, 0
+ ldrb r0, [r6]
+ ldr r4, _0815B324 @ =gTeachyTV_StaticResources+6
+ adds r2, r4, 0x2
+ adds r1, r4, 0
+ bl get_coro_args_x18_x1A
+ ldr r0, _0815B328 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x4
+ ands r0, r1
+ cmp r0, 0
+ beq _0815B30A
+ subs r0, r4, 0x6
+ ldr r1, [r0]
+ ldr r0, _0815B32C @ =UseFameCheckerFromMenu
+ cmp r1, r0
+ bne _0815B330
+_0815B30A:
+ movs r0, 0x2
+ negs r0, r0
+ cmp r5, r0
+ beq _0815B330
+ adds r0, 0x1
+ cmp r5, r0
+ bne _0815B33E
+ b _0815B37A
+ .align 2, 0
+_0815B31C: .4byte gTasks+0x8
+_0815B320: .4byte gPaletteFade
+_0815B324: .4byte gTeachyTV_StaticResources+6
+_0815B328: .4byte gMain
+_0815B32C: .4byte UseFameCheckerFromMenu
+_0815B330:
+ movs r0, 0x5
+ bl PlaySE
+ adds r0, r7, 0
+ bl sub_815B23C
+ b _0815B37A
+_0815B33E:
+ movs r0, 0x5
+ bl PlaySE
+ ldr r2, _0815B380 @ =gTeachyTV_StaticResources
+ movs r4, 0
+ strb r5, [r2, 0x5]
+ ldrb r0, [r6]
+ adds r1, r2, 0x6
+ adds r2, 0x8
+ bl DestroyListMenu
+ bl TeachyTvClearWindowRegs
+ movs r0, 0x1
+ bl ClearWindowTilemap
+ movs r0, 0
+ bl schedule_bg_copy_tilemap_to_vram
+ bl TeachyTvRemoveScrollIndicatorArrowPair
+ strh r4, [r6, 0x6]
+ strh r4, [r6, 0x4]
+ ldr r1, _0815B384 @ =gTasks
+ lsls r0, r7, 2
+ adds r0, r7
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _0815B388 @ =sub_815B4EC
+ str r1, [r0]
+_0815B37A:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B380: .4byte gTeachyTV_StaticResources
+_0815B384: .4byte gTasks
+_0815B388: .4byte sub_815B4EC
+ thumb_func_end sub_815B2C0
+
+ thumb_func_start sub_815B38C
+sub_815B38C: @ 815B38C
+ push {r4,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B3F8 @ =gTasks+0x8
+ adds r4, r1, r0
+ bl TeachyTvBg2AnimController
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _0815B3F0
+ ldr r0, _0815B3FC @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r0, _0815B400 @ =0x00003004
+ adds r1, r0
+ movs r0, 0x20
+ str r0, [sp]
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x2
+ movs r2, 0
+ movs r3, 0
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ ldrb r0, [r4, 0x2]
+ movs r1, 0x8
+ movs r2, 0x38
+ movs r3, 0x7
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+ movs r0, 0x2
+ bl schedule_bg_copy_tilemap_to_vram
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ movs r0, 0x88
+ lsls r0, 1
+ bl PlayNewMapMusic
+_0815B3F0:
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B3F8: .4byte gTasks+0x8
+_0815B3FC: .4byte gUnknown_203F450
+_0815B400: .4byte 0x00003004
+ thumb_func_end sub_815B38C
+
+ thumb_func_start sub_815B404
+sub_815B404: @ 815B404
+ push {r4,lr}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B450 @ =gTasks+0x8
+ adds r4, r1, r0
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x86
+ bne _0815B448
+ movs r0, 0x1A
+ str r0, [sp]
+ movs r0, 0xC
+ str r0, [sp, 0x4]
+ movs r0, 0x2
+ movs r1, 0
+ movs r2, 0x2
+ movs r3, 0x1
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0x2
+ bl schedule_bg_copy_tilemap_to_vram
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B448:
+ add sp, 0x8
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B450: .4byte gTasks+0x8
+ thumb_func_end sub_815B404
+
+ thumb_func_start sub_815B454
+sub_815B454: @ 815B454
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B484 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B488 @ =gSprites
+ adds r1, r0, r1
+ ldrh r2, [r4, 0x4]
+ movs r3, 0x4
+ ldrsh r0, [r4, r3]
+ cmp r0, 0x23
+ beq _0815B48C
+ adds r0, r2, 0x1
+ strh r0, [r4, 0x4]
+ b _0815B4B8
+ .align 2, 0
+_0815B484: .4byte gTasks+0x8
+_0815B488: .4byte gSprites
+_0815B48C:
+ ldrh r2, [r1, 0x24]
+ movs r3, 0x24
+ ldrsh r0, [r1, r3]
+ cmp r0, 0x78
+ bne _0815B4B4
+ adds r0, r1, 0
+ movs r1, 0
+ bl StartSpriteAnim
+ ldr r0, _0815B4B0 @ =gUnknown_841B83D
+ bl sub_815B1DC
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ b _0815B4B8
+ .align 2, 0
+_0815B4B0: .4byte gUnknown_841B83D
+_0815B4B4:
+ adds r0, r2, 0x1
+ strh r0, [r1, 0x24]
+_0815B4B8:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815B454
+
+ thumb_func_start sub_815B4C0
+sub_815B4C0: @ 815B4C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B4E8 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r0, 0
+ bl sub_80BF518
+ lsls r0, 16
+ cmp r0, 0
+ bne _0815B4E2
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B4E2:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B4E8: .4byte gTasks+0x8
+ thumb_func_end sub_815B4C0
+
+ thumb_func_start sub_815B4EC
+sub_815B4EC: @ 815B4EC
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r0, r2, 2
+ adds r0, r2
+ lsls r6, r0, 3
+ ldr r7, _0815B548 @ =gTasks+0x8
+ adds r5, r6, r7
+ ldr r0, _0815B54C @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x2
+ ands r0, r1
+ cmp r0, 0
+ beq _0815B55C
+ ldr r0, _0815B550 @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r1, _0815B554 @ =0x00004006
+ adds r0, r1
+ movs r4, 0
+ movs r1, 0x1
+ strb r1, [r0]
+ ldrb r0, [r5, 0x2]
+ movs r1, 0
+ movs r2, 0
+ movs r3, 0
+ bl TeachyTvSetSpriteCoordsAndSwitchFrame
+ movs r0, 0
+ movs r1, 0xCC
+ bl FillWindowPixelBuffer
+ movs r0, 0
+ movs r1, 0x2
+ bl CopyWindowToVram
+ bl sub_815B908
+ strh r4, [r5, 0x4]
+ strh r4, [r5, 0x6]
+ adds r0, r7, 0
+ subs r0, 0x8
+ adds r0, r6, r0
+ ldr r1, _0815B558 @ =sub_815B92C
+ str r1, [r0]
+ b _0815B578
+ .align 2, 0
+_0815B548: .4byte gTasks+0x8
+_0815B54C: .4byte gMain
+_0815B550: .4byte gUnknown_203F450
+_0815B554: .4byte 0x00004006
+_0815B558: .4byte sub_815B92C
+_0815B55C:
+ ldr r1, _0815B580 @ =gUnknown_8479548
+ ldr r0, _0815B584 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ movs r3, 0x6
+ ldrsh r0, [r5, r3]
+ lsls r0, 2
+ adds r0, r1
+ ldr r1, [r0]
+ adds r0, r2, 0
+ bl _call_via_r1
+_0815B578:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B580: .4byte gUnknown_8479548
+_0815B584: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B4EC
+
+ thumb_func_start sub_815B588
+sub_815B588: @ 815B588
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0815B5B4 @ =gTasks+0x8
+ adds r4, r0
+ ldr r1, _0815B5B8 @ =gUnknown_8479560
+ ldr r0, _0815B5BC @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl sub_815B1DC
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B5B4: .4byte gTasks+0x8
+_0815B5B8: .4byte gUnknown_8479560
+_0815B5BC: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B588
+
+ thumb_func_start sub_815B5C0
+sub_815B5C0: @ 815B5C0
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0815B5EC @ =gTasks+0x8
+ adds r4, r0
+ ldr r1, _0815B5F0 @ =gUnknown_8479578
+ ldr r0, _0815B5F4 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ lsls r0, 2
+ adds r0, r1
+ ldr r0, [r0]
+ bl sub_815B1DC
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B5EC: .4byte gTasks+0x8
+_0815B5F0: .4byte gUnknown_8479578
+_0815B5F4: .4byte gTeachyTV_StaticResources
+ thumb_func_end sub_815B5C0
+
+ thumb_func_start sub_815B5F8
+sub_815B5F8: @ 815B5F8
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B620 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r0, 0
+ bl sub_80BF518
+ lsls r0, 16
+ cmp r0, 0
+ bne _0815B61A
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B61A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B620: .4byte gTasks+0x8
+ thumb_func_end sub_815B5F8
+
+ thumb_func_start sub_815B624
+sub_815B624: @ 815B624
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B65C @ =gTasks+0x8
+ adds r4, r1, r0
+ ldr r0, _0815B660 @ =gMain
+ ldrh r1, [r0, 0x2E]
+ movs r0, 0x3
+ ands r0, r1
+ cmp r0, 0
+ beq _0815B656
+ movs r0, 0
+ movs r1, 0xCC
+ bl FillWindowPixelBuffer
+ movs r0, 0
+ movs r1, 0x2
+ bl CopyWindowToVram
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B656:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B65C: .4byte gTasks+0x8
+_0815B660: .4byte gMain
+ thumb_func_end sub_815B624
+
+ thumb_func_start sub_815B664
+sub_815B664: @ 815B664
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r4, r0, 2
+ adds r4, r0
+ lsls r4, 3
+ ldr r0, _0815B6A0 @ =gTasks+0x8
+ adds r4, r0
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B6A4 @ =gSprites
+ adds r0, r1
+ movs r1, 0x5
+ bl StartSpriteAnim
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ strh r0, [r4, 0x8]
+ movs r0, 0x1
+ strh r0, [r4, 0xA]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B6A0: .4byte gTasks+0x8
+_0815B6A4: .4byte gSprites
+ thumb_func_end sub_815B664
+
+ thumb_func_start sub_815B6A8
+sub_815B6A8: @ 815B6A8
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0815B730 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B734 @ =gSprites
+ adds r6, r0, r1
+ movs r1, 0x80
+ lsls r1, 1
+ movs r0, 0x3
+ movs r2, 0x2
+ bl ChangeBgY
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ movs r3, 0xF
+ ands r3, r0
+ cmp r3, 0
+ bne _0815B702
+ ldr r0, _0815B738 @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r2, _0815B73C @ =0x00004005
+ adds r1, r2
+ ldrb r0, [r1]
+ subs r0, 0x1
+ strb r0, [r1]
+ movs r0, 0x24
+ ldrsh r1, [r6, r0]
+ movs r0, 0x26
+ ldrsh r2, [r6, r0]
+ str r3, [sp]
+ adds r0, r5, 0
+ movs r3, 0
+ bl sub_815BAA0
+_0815B702:
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x30
+ bne _0815B726
+ movs r1, 0
+ strh r1, [r4, 0x4]
+ movs r2, 0x1
+ negs r2, r2
+ adds r0, r2, 0
+ strh r0, [r4, 0x8]
+ strh r1, [r4, 0xA]
+ adds r0, r6, 0
+ movs r1, 0x7
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B726:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B730: .4byte gTasks+0x8
+_0815B734: .4byte gSprites
+_0815B738: .4byte gUnknown_203F450
+_0815B73C: .4byte 0x00004005
+ thumb_func_end sub_815B6A8
+
+ thumb_func_start sub_815B740
+sub_815B740: @ 815B740
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ adds r5, r0, 0
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0815B7D4 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r4, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B7D8 @ =gSprites
+ adds r6, r0, r1
+ movs r1, 0x80
+ lsls r1, 1
+ movs r0, 0x3
+ movs r2, 0x1
+ bl ChangeBgX
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ movs r2, 0xF
+ ands r0, r2
+ cmp r0, 0
+ bne _0815B78A
+ ldr r0, _0815B7DC @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r3, _0815B7E0 @ =0x00004004
+ adds r1, r3
+ ldrb r0, [r1]
+ adds r0, 0x1
+ strb r0, [r1]
+_0815B78A:
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ adds r0, 0x8
+ ands r0, r2
+ cmp r0, 0
+ bne _0815B7AC
+ ldrh r1, [r6, 0x24]
+ adds r1, 0x8
+ lsls r1, 16
+ asrs r1, 16
+ movs r3, 0x26
+ ldrsh r2, [r6, r3]
+ str r0, [sp]
+ adds r0, r5, 0
+ movs r3, 0
+ bl sub_815BAA0
+_0815B7AC:
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0x30
+ bne _0815B7CA
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ strh r0, [r4, 0x8]
+ strh r0, [r4, 0xA]
+ adds r0, r6, 0
+ movs r1, 0x3
+ bl StartSpriteAnim
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B7CA:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B7D4: .4byte gTasks+0x8
+_0815B7D8: .4byte gSprites
+_0815B7DC: .4byte gUnknown_203F450
+_0815B7E0: .4byte 0x00004004
+ thumb_func_end sub_815B740
+
+ thumb_func_start sub_815B7E4
+sub_815B7E4: @ 815B7E4
+ push {r4-r6,lr}
+ sub sp, 0x4
+ adds r6, r0, 0
+ lsls r6, 24
+ lsrs r6, 24
+ lsls r5, r6, 2
+ adds r5, r6
+ lsls r5, 3
+ ldr r0, _0815B838 @ =gTasks+0x8
+ adds r5, r0
+ movs r1, 0x2
+ ldrsh r0, [r5, r1]
+ lsls r4, r0, 4
+ adds r4, r0
+ lsls r4, 2
+ ldr r0, _0815B83C @ =gSprites
+ adds r4, r0
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl StartSpriteAnim
+ ldrh r0, [r5, 0x6]
+ adds r0, 0x1
+ strh r0, [r5, 0x6]
+ movs r0, 0
+ strh r0, [r5, 0x8]
+ strh r0, [r5, 0xA]
+ movs r0, 0x24
+ ldrsh r1, [r4, r0]
+ movs r0, 0x26
+ ldrsh r2, [r4, r0]
+ movs r0, 0
+ str r0, [sp]
+ adds r0, r6, 0
+ movs r3, 0
+ bl sub_815BAA0
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B838: .4byte gTasks+0x8
+_0815B83C: .4byte gSprites
+ thumb_func_end sub_815B7E4
+
+ thumb_func_start sub_815B840
+sub_815B840: @ 815B840
+ push {r4-r6,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r0, r3, 2
+ adds r0, r3
+ lsls r0, 3
+ ldr r1, _0815B890 @ =gTasks+0x8
+ adds r5, r0, r1
+ movs r0, 0x2
+ ldrsh r1, [r5, r0]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815B894 @ =gSprites
+ adds r4, r0, r1
+ ldrh r1, [r4, 0x24]
+ movs r0, 0xF
+ ands r0, r1
+ cmp r0, 0
+ bne _0815B87E
+ subs r1, 0x8
+ lsls r1, 16
+ asrs r1, 16
+ movs r6, 0x26
+ ldrsh r2, [r4, r6]
+ str r0, [sp]
+ adds r0, r3, 0
+ movs r3, 0
+ bl sub_815BAA0
+_0815B87E:
+ ldrh r1, [r4, 0x24]
+ movs r2, 0x24
+ ldrsh r0, [r4, r2]
+ cmp r0, 0x8
+ bne _0815B898
+ ldrh r0, [r5, 0x6]
+ adds r0, 0x1
+ strh r0, [r5, 0x6]
+ b _0815B89C
+ .align 2, 0
+_0815B890: .4byte gTasks+0x8
+_0815B894: .4byte gSprites
+_0815B898:
+ subs r0, r1, 0x1
+ strh r0, [r4, 0x24]
+_0815B89C:
+ add sp, 0x4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815B840
+
+ thumb_func_start sub_815B8A4
+sub_815B8A4: @ 815B8A4
+ push {r4,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r1, 3
+ ldr r0, _0815B900 @ =gTasks+0x8
+ adds r4, r1, r0
+ movs r1, 0x4
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ bne _0815B8DC
+ ldr r1, _0815B904 @ =gUnknown_8479590
+ movs r0, 0x8
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x11
+ str r0, [sp, 0x8]
+ movs r0, 0x1
+ movs r2, 0x14
+ movs r3, 0xA
+ bl CopyToBgTilemapBufferRect_ChangePalette
+ movs r0, 0x1
+ bl schedule_bg_copy_tilemap_to_vram
+_0815B8DC:
+ ldrh r0, [r4, 0x4]
+ adds r0, 0x1
+ strh r0, [r4, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x7E
+ ble _0815B8F8
+ bl sub_815B908
+ movs r0, 0
+ strh r0, [r4, 0x4]
+ ldrh r0, [r4, 0x6]
+ adds r0, 0x1
+ strh r0, [r4, 0x6]
+_0815B8F8:
+ add sp, 0xC
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B900: .4byte gTasks+0x8
+_0815B904: .4byte gUnknown_8479590
+ thumb_func_end sub_815B8A4
+
+ thumb_func_start sub_815B908
+sub_815B908: @ 815B908
+ push {lr}
+ sub sp, 0x8
+ movs r0, 0x8
+ str r0, [sp]
+ movs r0, 0x2
+ str r0, [sp, 0x4]
+ movs r0, 0x1
+ movs r1, 0
+ movs r2, 0x14
+ movs r3, 0xA
+ bl FillBgTilemapBufferRect_Palette0
+ movs r0, 0x1
+ bl schedule_bg_copy_tilemap_to_vram
+ add sp, 0x8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815B908
+
+ thumb_func_start sub_815B92C
+sub_815B92C: @ 815B92C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r6, r1, 3
+ ldr r7, _0815B9DC @ =gTasks+0x8
+ adds r5, r6, r7
+ movs r1, 0x4
+ ldrsh r0, [r5, r1]
+ cmp r0, 0
+ bne _0815B94C
+ movs r0, 0xAD
+ lsls r0, 1
+ bl PlayNewMapMusic
+_0815B94C:
+ bl TeachyTvBg2AnimController
+ ldrh r0, [r5, 0x4]
+ adds r0, 0x1
+ strh r0, [r5, 0x4]
+ lsls r0, 16
+ asrs r0, 16
+ cmp r0, 0x3F
+ ble _0815B9D4
+ movs r4, 0
+ strh r4, [r5, 0x4]
+ strh r4, [r5, 0x6]
+ bl TeachyTvSetupWindow
+ lsls r0, 24
+ lsrs r0, 24
+ strh r0, [r5]
+ adds r0, r7, 0
+ subs r0, 0x8
+ adds r0, r6, r0
+ ldr r1, _0815B9E0 @ =sub_815B2C0
+ str r1, [r0]
+ movs r0, 0
+ bl PutWindowTilemap
+ bl TeachyTvSetupScrollIndicatorArrowPair
+ bl TeachyTvSetWindowRegs
+ movs r0, 0
+ bl schedule_bg_copy_tilemap_to_vram
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgX
+ movs r0, 0x3
+ movs r1, 0
+ movs r2, 0
+ bl ChangeBgY
+ movs r1, 0x80
+ lsls r1, 5
+ movs r0, 0x3
+ movs r2, 0x2
+ bl ChangeBgX
+ movs r1, 0xA0
+ lsls r1, 6
+ movs r0, 0x3
+ movs r2, 0x1
+ bl ChangeBgY
+ ldr r2, _0815B9E4 @ =gUnknown_203F450
+ ldr r0, [r2]
+ ldr r1, _0815B9E8 @ =0x00004004
+ adds r0, r1
+ strb r4, [r0]
+ ldr r0, [r2]
+ adds r1, 0x1
+ adds r0, r1
+ movs r1, 0x3
+ strb r1, [r0]
+ ldr r0, [r2]
+ ldr r1, _0815B9EC @ =0x00004006
+ adds r0, r1
+ strb r4, [r0]
+_0815B9D4:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815B9DC: .4byte gTasks+0x8
+_0815B9E0: .4byte sub_815B2C0
+_0815B9E4: .4byte gUnknown_203F450
+_0815B9E8: .4byte 0x00004004
+_0815B9EC: .4byte 0x00004006
+ thumb_func_end sub_815B92C
+
+ thumb_func_start sub_815B9F0
+sub_815B9F0: @ 815B9F0
+ push {lr}
+ lsls r0, 24
+ lsrs r1, r0, 24
+ adds r2, r1, 0
+ ldr r0, _0815BA0C @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ cmp r0, 0
+ blt _0815BA22
+ cmp r0, 0x3
+ bgt _0815BA10
+ adds r0, r1, 0
+ bl sub_815BC90
+ b _0815BA22
+ .align 2, 0
+_0815BA0C: .4byte gTeachyTV_StaticResources
+_0815BA10:
+ cmp r0, 0x5
+ bgt _0815BA22
+ ldr r0, _0815BA28 @ =gUnknown_203F450
+ ldr r1, [r0]
+ ldr r0, _0815BA2C @ =sub_815BA30
+ str r0, [r1]
+ adds r0, r2, 0
+ bl sub_815B23C
+_0815BA22:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BA28: .4byte gUnknown_203F450
+_0815BA2C: .4byte sub_815BA30
+ thumb_func_end sub_815B9F0
+
+ thumb_func_start sub_815BA30
+sub_815BA30: @ 815BA30
+ push {lr}
+ ldr r0, _0815BA44 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ cmp r0, 0x4
+ bne _0815BA48
+ movs r0, 0xA
+ bl sub_810B108
+ b _0815BA4E
+ .align 2, 0
+_0815BA44: .4byte gTeachyTV_StaticResources
+_0815BA48:
+ movs r0, 0x9
+ bl sub_810B108
+_0815BA4E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BA30
+
+ thumb_func_start TeachyTvTaskFunction
+TeachyTvTaskFunction: @ 815BA54
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 2
+ adds r1, r0
+ lsls r2, r1, 3
+ ldr r4, _0815BA8C @ =gTasks+0x8
+ adds r3, r2, r4
+ ldr r0, _0815BA90 @ =gPaletteFade
+ ldrb r1, [r0, 0x7]
+ movs r0, 0x80
+ ands r0, r1
+ cmp r0, 0
+ bne _0815BA86
+ ldr r1, _0815BA94 @ =gUnknown_8479390
+ ldr r0, _0815BA98 @ =gTeachyTV_StaticResources
+ ldrb r0, [r0, 0x5]
+ adds r0, r1
+ ldrb r0, [r0]
+ strh r0, [r3, 0x6]
+ adds r0, r4, 0
+ subs r0, 0x8
+ adds r0, r2, r0
+ ldr r1, _0815BA9C @ =sub_815B4EC
+ str r1, [r0]
+_0815BA86:
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BA8C: .4byte gTasks+0x8
+_0815BA90: .4byte gPaletteFade
+_0815BA94: .4byte gUnknown_8479390
+_0815BA98: .4byte gTeachyTV_StaticResources
+_0815BA9C: .4byte sub_815B4EC
+ thumb_func_end TeachyTvTaskFunction
+
+ thumb_func_start sub_815BAA0
+sub_815BAA0: @ 815BAA0
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ ldr r4, [sp, 0x1C]
+ lsls r0, 24
+ lsrs r0, 24
+ mov r9, r0
+ lsls r1, 16
+ lsrs r6, r1, 16
+ lsls r2, 16
+ lsrs r1, r2, 16
+ lsls r3, 24
+ lsrs r7, r3, 24
+ lsls r4, 24
+ lsrs r4, 24
+ mov r8, r4
+ ldr r0, _0815BB34 @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r2, _0815BB38 @ =0x00004006
+ adds r0, r2
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ beq _0815BB5C
+ lsls r0, r6, 16
+ ldr r2, _0815BB3C @ =0xfff00000
+ adds r0, r2
+ asrs r0, 16
+ lsls r1, 16
+ asrs r5, r1, 16
+ adds r1, r5, 0
+ bl sub_815BC40
+ lsls r0, 24
+ cmp r0, 0
+ beq _0815BB5C
+ ldr r0, _0815BB40 @ =gUnknown_83A0010
+ ldr r0, [r0, 0x10]
+ movs r1, 0
+ movs r2, 0
+ adds r3, r7, 0
+ bl CreateSprite
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, r0, 4
+ adds r1, r0
+ lsls r1, 2
+ ldr r0, _0815BB44 @ =gSprites
+ adds r4, r1, r0
+ strh r6, [r4, 0x24]
+ adds r0, r5, 0
+ adds r0, 0x8
+ strh r0, [r4, 0x26]
+ ldr r0, _0815BB48 @ =sub_815BB6C
+ str r0, [r4, 0x1C]
+ mov r0, r9
+ strh r0, [r4, 0x2E]
+ mov r2, r8
+ cmp r2, 0x1
+ bne _0815BB4C
+ adds r0, r4, 0
+ movs r1, 0x4
+ bl SeekSpriteAnim
+ ldrb r0, [r4, 0x5]
+ movs r1, 0xD
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x8
+ orrs r1, r0
+ strb r1, [r4, 0x5]
+ b _0815BB5C
+ .align 2, 0
+_0815BB34: .4byte gUnknown_203F450
+_0815BB38: .4byte 0x00004006
+_0815BB3C: .4byte 0xfff00000
+_0815BB40: .4byte gUnknown_83A0010
+_0815BB44: .4byte gSprites
+_0815BB48: .4byte sub_815BB6C
+_0815BB4C:
+ ldr r1, _0815BB68 @ =gUnknown_84795B8
+ adds r0, r4, 0
+ bl SetSubspriteTables
+ adds r1, r4, 0
+ adds r1, 0x42
+ movs r0, 0x40
+ strb r0, [r1]
+_0815BB5C:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BB68: .4byte gUnknown_84795B8
+ thumb_func_end sub_815BAA0
+
+ thumb_func_start sub_815BB6C
+sub_815BB6C: @ 815BB6C
+ push {r4,r5,lr}
+ adds r3, r0, 0
+ movs r0, 0x2E
+ ldrsh r1, [r3, r0]
+ lsls r0, r1, 2
+ adds r0, r1
+ lsls r0, 3
+ ldr r1, _0815BBA4 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r2, 0x2
+ ldrsh r1, [r4, r2]
+ lsls r0, r1, 4
+ adds r0, r1
+ lsls r0, 2
+ ldr r1, _0815BBA8 @ =gSprites
+ adds r5, r0, r1
+ ldr r0, _0815BBAC @ =gUnknown_203F450
+ ldr r0, [r0]
+ ldr r1, _0815BBB0 @ =0x00004006
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0x1
+ bne _0815BBB4
+ adds r0, r3, 0
+ bl DestroySprite
+ b _0815BC3A
+ .align 2, 0
+_0815BBA4: .4byte gTasks+0x8
+_0815BBA8: .4byte gSprites
+_0815BBAC: .4byte gUnknown_203F450
+_0815BBB0: .4byte 0x00004006
+_0815BBB4:
+ adds r0, r3, 0
+ adds r0, 0x2B
+ ldrb r0, [r0]
+ cmp r0, 0
+ bne _0815BBD2
+ adds r2, r3, 0
+ adds r2, 0x42
+ ldrb r0, [r2]
+ movs r1, 0x40
+ negs r1, r1
+ ands r1, r0
+ movs r0, 0x1
+ orrs r1, r0
+ strb r1, [r2]
+ b _0815BBE0
+_0815BBD2:
+ adds r2, r3, 0
+ adds r2, 0x42
+ ldrb r1, [r2]
+ movs r0, 0x40
+ negs r0, r0
+ ands r0, r1
+ strb r0, [r2]
+_0815BBE0:
+ ldrh r0, [r4, 0x8]
+ ldrh r2, [r3, 0x24]
+ adds r0, r2
+ strh r0, [r3, 0x24]
+ ldrh r0, [r4, 0xA]
+ ldrh r1, [r3, 0x26]
+ adds r0, r1
+ strh r0, [r3, 0x26]
+ adds r0, r3, 0
+ adds r0, 0x3F
+ ldrb r1, [r0]
+ movs r0, 0x10
+ ands r0, r1
+ cmp r0, 0
+ beq _0815BC3A
+ adds r1, r3, 0
+ adds r1, 0x43
+ movs r0, 0
+ strb r0, [r1]
+ ldrh r1, [r3, 0x24]
+ ldrh r0, [r5, 0x24]
+ subs r1, r0
+ ldrh r0, [r3, 0x26]
+ ldrh r2, [r5, 0x26]
+ subs r0, r2
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r1, 16
+ movs r2, 0xF0
+ lsls r2, 12
+ adds r1, r2
+ lsrs r1, 16
+ cmp r1, 0x1E
+ bhi _0815BC34
+ lsls r0, 16
+ asrs r1, r0, 16
+ movs r0, 0x10
+ negs r0, r0
+ cmp r1, r0
+ ble _0815BC34
+ cmp r1, 0x17
+ ble _0815BC3A
+_0815BC34:
+ adds r0, r3, 0
+ bl DestroySprite
+_0815BC3A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BB6C
+
+ thumb_func_start sub_815BC40
+sub_815BC40: @ 815BC40
+ push {r4,r5,lr}
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r4, r0, 16
+ cmp r4, 0
+ blt _0815BC52
+ lsls r1, 16
+ cmp r1, 0
+ bge _0815BC56
+_0815BC52:
+ movs r0, 0
+ b _0815BC78
+_0815BC56:
+ ldr r3, _0815BC80 @ =gUnknown_84795C8
+ ldr r0, _0815BC84 @ =gUnknown_203F450
+ ldr r2, [r0]
+ ldr r5, _0815BC88 @ =0x00004005
+ adds r0, r2, r5
+ asrs r1, 20
+ ldrb r0, [r0]
+ adds r1, r0
+ lsls r1, 4
+ ldr r0, _0815BC8C @ =0x00004004
+ adds r2, r0
+ asrs r0, r4, 20
+ ldrb r2, [r2]
+ adds r0, r2
+ adds r1, r0
+ adds r1, r3
+ ldrb r0, [r1]
+_0815BC78:
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_0815BC80: .4byte gUnknown_84795C8
+_0815BC84: .4byte gUnknown_203F450
+_0815BC88: .4byte 0x00004005
+_0815BC8C: .4byte 0x00004004
+ thumb_func_end sub_815BC40
+
+ thumb_func_start sub_815BC90
+sub_815BC90: @ 815BC90
+ push {r4-r6,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ ldr r1, _0815BCCC @ =gTasks+0x8
+ adds r5, r0, r1
+ bl sub_815B220
+ ldr r1, _0815BCD0 @ =gSpecialVar_0x8004
+ ldr r4, _0815BCD4 @ =gTeachyTV_StaticResources
+ ldrb r0, [r4, 0x5]
+ strh r0, [r1]
+ ldr r1, _0815BCD8 @ =gMain
+ ldr r0, _0815BCDC @ =sub_815BD58
+ str r0, [r1, 0x8]
+ bl SavePlayerParty
+ bl sub_8159F40
+ movs r0, 0
+ bl PlayMapChosenOrBattleBGM
+ ldrb r0, [r4, 0x5]
+ cmp r0, 0
+ bne _0815BCE0
+ movs r0, 0x9
+ b _0815BCE2
+ .align 2, 0
+_0815BCCC: .4byte gTasks+0x8
+_0815BCD0: .4byte gSpecialVar_0x8004
+_0815BCD4: .4byte gTeachyTV_StaticResources
+_0815BCD8: .4byte gMain
+_0815BCDC: .4byte sub_815BD58
+_0815BCE0:
+ movs r0, 0x8
+_0815BCE2:
+ strh r0, [r5, 0xC]
+ movs r0, 0
+ strh r0, [r5, 0xE]
+ ldr r1, _0815BCFC @ =gTasks
+ lsls r0, r6, 2
+ adds r0, r6
+ lsls r0, 3
+ adds r0, r1
+ ldr r1, _0815BD00 @ =sub_815BD04
+ str r1, [r0]
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BCFC: .4byte gTasks
+_0815BD00: .4byte sub_815BD04
+ thumb_func_end sub_815BC90
+
+ thumb_func_start sub_815BD04
+sub_815BD04: @ 815BD04
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r5, r0, 24
+ lsls r0, r5, 2
+ adds r0, r5
+ lsls r0, 3
+ ldr r1, _0815BD24 @ =gTasks+0x8
+ adds r4, r0, r1
+ movs r1, 0xE
+ ldrsh r0, [r4, r1]
+ cmp r0, 0
+ beq _0815BD28
+ cmp r0, 0x1
+ beq _0815BD36
+ b _0815BD4C
+ .align 2, 0
+_0815BD24: .4byte gTasks+0x8
+_0815BD28:
+ ldrb r0, [r4, 0xC]
+ bl sub_80D08B8
+ ldrh r0, [r4, 0xE]
+ adds r0, 0x1
+ strh r0, [r4, 0xE]
+ b _0815BD4C
+_0815BD36:
+ bl sub_80D08F8
+ lsls r0, 24
+ cmp r0, 0
+ beq _0815BD4C
+ ldr r0, _0815BD54 @ =sub_800FD9C
+ bl SetMainCallback2
+ adds r0, r5, 0
+ bl DestroyTask
+_0815BD4C:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BD54: .4byte sub_800FD9C
+ thumb_func_end sub_815BD04
+
+ thumb_func_start sub_815BD58
+sub_815BD58: @ 815BD58
+ push {lr}
+ bl LoadPlayerParty
+ ldr r0, _0815BD6C @ =gUnknown_2023E8A
+ ldrb r0, [r0]
+ cmp r0, 0x3
+ bne _0815BD70
+ bl sub_815AC20
+ b _0815BD78
+ .align 2, 0
+_0815BD6C: .4byte gUnknown_2023E8A
+_0815BD70:
+ movs r0, 0x88
+ lsls r0, 1
+ bl PlayNewMapMusic
+_0815BD78:
+ bl CB2_ReturnToTeachyTV
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BD58
+
+ thumb_func_start sub_815BD80
+sub_815BD80: @ 815BD80
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x1C
+ str r0, [sp, 0x4]
+ movs r0, 0
+ str r0, [sp, 0x10]
+ ldr r1, _0815BE1C @ =Route1_Layout
+ mov r8, r1
+ movs r0, 0x80
+ lsls r0, 4
+ bl AllocZeroed
+ adds r6, r0, 0
+ movs r0, 0x80
+ lsls r0, 8
+ bl AllocZeroed
+ str r0, [sp, 0x8]
+ movs r0, 0x10
+ bl Alloc
+ str r0, [sp, 0xC]
+ movs r1, 0xFF
+ movs r2, 0x10
+ bl memset
+ mov r2, r8
+ ldr r0, [r2, 0x10]
+ movs r2, 0xA0
+ lsls r2, 2
+ ldr r1, [sp, 0x8]
+ bl sub_815BF48
+ mov r3, r8
+ ldr r0, [r3, 0x14]
+ ldr r2, [sp, 0x8]
+ movs r3, 0xA0
+ lsls r3, 7
+ adds r1, r2, r3
+ movs r2, 0xC0
+ lsls r2, 1
+ bl sub_815BF48
+ movs r4, 0
+_0815BDDE:
+ movs r2, 0
+ adds r0, r4, 0x6
+ str r0, [sp, 0x18]
+ lsls r1, r4, 4
+ mov r10, r1
+ lsls r3, r4, 6
+ mov r9, r3
+ adds r4, 0x1
+ str r4, [sp, 0x14]
+_0815BDF0:
+ mov r1, r8
+ ldr r0, [r1]
+ ldr r3, [sp, 0x18]
+ muls r0, r3
+ ldr r1, [r1, 0xC]
+ adds r0, r2, r0
+ lsls r0, 1
+ adds r0, r1
+ ldrh r1, [r0, 0x10]
+ ldr r3, _0815BE20 @ =0x000003ff
+ adds r0, r3, 0
+ adds r4, r0, 0
+ ands r4, r1
+ movs r3, 0
+ mov r0, r10
+ adds r1, r0, r2
+ lsls r5, r2, 1
+ adds r7, r2, 0x1
+ cmp r3, r1
+ bge _0815BE3C
+ ldrh r0, [r6]
+ b _0815BE34
+ .align 2, 0
+_0815BE1C: .4byte Route1_Layout
+_0815BE20: .4byte 0x000003ff
+_0815BE24:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, r1
+ bge _0815BE3C
+ lsls r0, r3, 1
+ adds r0, r6
+ ldrh r0, [r0]
+_0815BE34:
+ cmp r0, 0
+ beq _0815BE46
+ cmp r0, r4
+ bne _0815BE24
+_0815BE3C:
+ lsls r0, r3, 1
+ adds r0, r6
+ ldrh r0, [r0]
+ cmp r0, 0
+ bne _0815BE56
+_0815BE46:
+ lsls r0, r3, 1
+ adds r0, r6
+ strh r4, [r0]
+ ldr r0, [sp, 0x10]
+ adds r0, 0x1
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0x10]
+_0815BE56:
+ mov r2, r9
+ adds r1, r2, r5
+ lsls r1, 1
+ ldr r0, [sp, 0x4]
+ adds r1, r0, r1
+ str r3, [sp]
+ mov r0, r8
+ ldr r2, [sp, 0xC]
+ adds r3, r4, 0
+ bl sub_815BF70
+ lsls r0, r7, 16
+ lsrs r2, r0, 16
+ cmp r2, 0xF
+ bls _0815BDF0
+ ldr r1, [sp, 0x14]
+ lsls r0, r1, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x8
+ bls _0815BDDE
+ ldr r2, [sp, 0x10]
+ lsls r0, r2, 7
+ bl Alloc
+ adds r7, r0, 0
+ movs r0, 0x80
+ bl Alloc
+ adds r5, r0, 0
+ movs r4, 0
+ ldr r3, [sp, 0x10]
+ lsls r3, 23
+ mov r9, r3
+ ldr r0, [sp, 0x10]
+ cmp r4, r0
+ bcs _0815BF00
+ ldr r1, _0815BECC @ =0x0000027f
+ mov r10, r1
+_0815BEA2:
+ adds r0, r5, 0
+ movs r1, 0
+ movs r2, 0x80
+ bl memset
+ lsls r0, r4, 1
+ adds r1, r0, r6
+ ldrh r0, [r1]
+ cmp r0, r10
+ bhi _0815BED0
+ mov r2, r8
+ ldr r0, [r2, 0x10]
+ ldrh r1, [r1]
+ lsls r1, 4
+ ldr r0, [r0, 0xC]
+ adds r0, r1
+ adds r1, r5, 0
+ ldr r2, [sp, 0x8]
+ bl sub_815BFF0
+ b _0815BEE8
+ .align 2, 0
+_0815BECC: .4byte 0x0000027f
+_0815BED0:
+ mov r3, r8
+ ldr r0, [r3, 0x14]
+ ldrh r1, [r1]
+ ldr r2, _0815BF44 @ =0xfffffd80
+ adds r1, r2
+ lsls r1, 4
+ ldr r0, [r0, 0xC]
+ adds r0, r1
+ adds r1, r5, 0
+ ldr r2, [sp, 0x8]
+ bl sub_815BFF0
+_0815BEE8:
+ lsls r1, r4, 7
+ adds r1, r7, r1
+ adds r0, r5, 0
+ movs r2, 0x20
+ bl CpuFastSet
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r3, [sp, 0x10]
+ cmp r4, r3
+ bcc _0815BEA2
+_0815BF00:
+ mov r0, r9
+ lsrs r2, r0, 16
+ movs r0, 0x3
+ adds r1, r7, 0
+ movs r3, 0
+ bl LoadBgTiles
+ mov r0, r8
+ ldr r1, [sp, 0xC]
+ bl sub_815C230
+ adds r0, r5, 0
+ bl Free
+ adds r0, r7, 0
+ bl Free
+ ldr r0, [sp, 0xC]
+ bl Free
+ ldr r0, [sp, 0x8]
+ bl Free
+ adds r0, r6, 0
+ bl Free
+ add sp, 0x1C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BF44: .4byte 0xfffffd80
+ thumb_func_end sub_815BD80
+
+ thumb_func_start sub_815BF48
+sub_815BF48: @ 815BF48
+ push {lr}
+ adds r3, r0, 0
+ lsls r2, 16
+ lsrs r2, 16
+ cmp r3, 0
+ beq _0815BF6A
+ ldrb r0, [r3]
+ cmp r0, 0
+ bne _0815BF64
+ ldr r0, [r3, 0x4]
+ lsls r2, 3
+ bl CpuFastSet
+ b _0815BF6A
+_0815BF64:
+ ldr r0, [r3, 0x4]
+ bl LZDecompressWram
+_0815BF6A:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815BF48
+
+ thumb_func_start sub_815BF70
+sub_815BF70: @ 815BF70
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ adds r7, r1, 0
+ adds r6, r2, 0
+ ldr r0, [sp, 0x14]
+ lsls r3, 16
+ lsrs r1, r3, 16
+ lsls r0, 16
+ lsrs r4, r0, 16
+ ldr r0, _0815BF8C @ =0x0000027f
+ cmp r1, r0
+ bhi _0815BF90
+ ldr r0, [r5, 0x10]
+ b _0815BF96
+ .align 2, 0
+_0815BF8C: .4byte 0x0000027f
+_0815BF90:
+ ldr r0, [r5, 0x14]
+ ldr r2, _0815BFEC @ =0xfffffd80
+ adds r1, r2
+_0815BF96:
+ lsls r1, 4
+ ldr r0, [r0, 0xC]
+ adds r5, r0, r1
+ ldrh r1, [r5]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ lsls r0, 12
+ lsls r4, 2
+ adds r0, r4
+ strh r0, [r7]
+ ldrh r1, [r5, 0x2]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ lsls r0, 12
+ adds r0, r4
+ adds r0, 0x1
+ strh r0, [r7, 0x2]
+ ldrh r1, [r5, 0x4]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ adds r1, r7, 0
+ adds r1, 0x40
+ lsls r0, 12
+ adds r0, r4
+ adds r0, 0x2
+ strh r0, [r1]
+ ldrh r1, [r5, 0x6]
+ adds r0, r6, 0
+ bl sub_815C1F0
+ adds r1, r7, 0
+ adds r1, 0x42
+ lsls r0, 12
+ adds r0, r4
+ adds r0, 0x3
+ strh r0, [r1]
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815BFEC: .4byte 0xfffffd80
+ thumb_func_end sub_815BF70
+
+ thumb_func_start sub_815BFF0
+sub_815BFF0: @ 815BFF0
+ push {r4-r6,lr}
+ mov r6, r10
+ mov r5, r9
+ mov r4, r8
+ push {r4-r6}
+ mov r8, r0
+ mov r9, r1
+ adds r5, r2, 0
+ ldrh r2, [r0]
+ ldr r4, _0815C0D0 @ =0x000003ff
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ movs r6, 0x3
+ ands r2, r6
+ mov r0, r9
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0x8]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r9
+ bl sub_815C0D4
+ movs r0, 0x20
+ add r0, r9
+ mov r10, r0
+ mov r0, r8
+ ldrh r2, [r0, 0x2]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0xA]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ movs r0, 0x40
+ add r0, r9
+ mov r10, r0
+ mov r0, r8
+ ldrh r2, [r0, 0x4]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0xC]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r10
+ bl sub_815C0D4
+ movs r0, 0x60
+ add r9, r0
+ mov r0, r8
+ ldrh r2, [r0, 0x6]
+ adds r1, r4, 0
+ ands r1, r2
+ lsls r1, 5
+ adds r1, r5, r1
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r9
+ bl sub_815C0D4
+ mov r0, r8
+ ldrh r2, [r0, 0xE]
+ ands r4, r2
+ lsls r4, 5
+ adds r5, r4
+ lsrs r2, 10
+ ands r2, r6
+ mov r0, r9
+ adds r1, r5, 0
+ bl sub_815C0D4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0815C0D0: .4byte 0x000003ff
+ thumb_func_end sub_815BFF0
+
+ thumb_func_start sub_815C0D4
+sub_815C0D4: @ 815C0D4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r9, r0
+ adds r4, r1, 0
+ lsls r2, 24
+ lsrs r2, 24
+ mov r10, r2
+ movs r0, 0x20
+ bl AllocZeroed
+ adds r6, r0, 0
+ movs r0, 0x20
+ bl AllocZeroed
+ str r0, [sp]
+ adds r0, r4, 0
+ adds r1, r6, 0
+ movs r2, 0x8
+ bl CpuFastSet
+ movs r0, 0x1
+ mov r1, r10
+ ands r0, r1
+ cmp r0, 0
+ beq _0815C15A
+ movs r5, 0
+ movs r7, 0xF
+ mov r12, r7
+ movs r0, 0xF0
+ mov r8, r0
+_0815C118:
+ movs r3, 0
+ lsls r4, r5, 2
+_0815C11C:
+ subs r0, r3, 0x3
+ subs r0, r4, r0
+ adds r0, r6, r0
+ ldrb r1, [r0]
+ adds r2, r4, r3
+ ldr r7, [sp]
+ adds r2, r7, r2
+ adds r0, r1, 0
+ mov r7, r12
+ ands r0, r7
+ lsls r0, 4
+ mov r7, r8
+ ands r1, r7
+ lsrs r1, 4
+ adds r0, r1
+ strb r0, [r2]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x3
+ bls _0815C11C
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x7
+ bls _0815C118
+ ldr r0, [sp]
+ adds r1, r6, 0
+ movs r2, 0x8
+ bl CpuFastSet
+_0815C15A:
+ movs r0, 0x2
+ mov r1, r10
+ ands r0, r1
+ cmp r0, 0
+ beq _0815C18E
+ movs r5, 0
+_0815C166:
+ lsls r0, r5, 2
+ ldr r7, [sp]
+ adds r0, r7
+ movs r1, 0x7
+ subs r1, r5
+ lsls r1, 2
+ adds r1, r6
+ movs r2, 0x4
+ bl memcpy
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x7
+ bls _0815C166
+ ldr r0, [sp]
+ adds r1, r6, 0
+ movs r2, 0x8
+ bl CpuFastSet
+_0815C18E:
+ movs r5, 0
+ movs r0, 0xF0
+ mov r8, r0
+ movs r1, 0xF
+ mov r12, r1
+_0815C198:
+ adds r4, r6, r5
+ ldrb r0, [r4]
+ mov r3, r8
+ ands r3, r0
+ cmp r3, 0
+ beq _0815C1B2
+ mov r7, r9
+ adds r2, r7, r5
+ ldrb r1, [r2]
+ mov r0, r12
+ ands r0, r1
+ adds r0, r3
+ strb r0, [r2]
+_0815C1B2:
+ ldrb r0, [r4]
+ mov r3, r12
+ ands r3, r0
+ cmp r3, 0
+ beq _0815C1CA
+ mov r0, r9
+ adds r2, r0, r5
+ ldrb r1, [r2]
+ mov r0, r8
+ ands r0, r1
+ adds r0, r3
+ strb r0, [r2]
+_0815C1CA:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0x1F
+ bls _0815C198
+ ldr r0, [sp]
+ bl Free
+ adds r0, r6, 0
+ bl Free
+ add sp, 0x4
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815C0D4
+
+ thumb_func_start sub_815C1F0
+sub_815C1F0: @ 815C1F0
+ push {r4,lr}
+ adds r4, r0, 0
+ lsls r1, 16
+ lsrs r1, 28
+ movs r3, 0
+ ldrb r0, [r4]
+ cmp r0, r1
+ beq _0815C220
+ cmp r0, 0xFF
+ bne _0815C208
+ strb r1, [r4]
+ b _0815C220
+_0815C208:
+ adds r0, r3, 0x1
+ lsls r0, 16
+ lsrs r3, r0, 16
+ cmp r3, 0xF
+ bhi _0815C220
+ adds r2, r4, r3
+ ldrb r0, [r2]
+ cmp r0, r1
+ beq _0815C220
+ cmp r0, 0xFF
+ bne _0815C208
+ strb r1, [r2]
+_0815C220:
+ movs r0, 0xF
+ subs r0, r3
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_815C1F0
+
+ thumb_func_start sub_815C230
+sub_815C230: @ 815C230
+ push {r4-r6,lr}
+ adds r6, r0, 0
+ adds r5, r1, 0
+ movs r4, 0
+ ldrb r0, [r5]
+ cmp r0, 0xFF
+ beq _0815C274
+_0815C23E:
+ adds r1, r5, r4
+ ldrb r0, [r1]
+ cmp r0, 0x6
+ bls _0815C24A
+ ldr r0, [r6, 0x14]
+ b _0815C24C
+_0815C24A:
+ ldr r0, [r6, 0x10]
+_0815C24C:
+ ldrb r1, [r1]
+ lsls r1, 5
+ ldr r0, [r0, 0x8]
+ adds r0, r1
+ movs r1, 0xF
+ subs r1, r4
+ lsls r1, 20
+ lsrs r1, 16
+ movs r2, 0x20
+ bl LoadPalette
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xF
+ bhi _0815C274
+ adds r0, r5, r4
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ bne _0815C23E
+_0815C274:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_815C230
+
+ .align 2, 0 @ Don't pad with nop.
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 9e53e6624..8cad42ba7 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -1694,7 +1694,7 @@ _0813DA9E:
ldr r4, _0813DAE0 @ =gUnknown_203F37A
subs r2, r4, 0x2
adds r1, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _0813DAE4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x4
diff --git a/asm/field_specials.s b/asm/field_specials.s
index d98798352..475153ce6 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -2753,7 +2753,7 @@ sub_80CBADC: @ 80CBADC
ldr r4, _080CBB20 @ =gUnknown_3005378
adds r1, r4, 0
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r1, _080CBB24 @ =gUnknown_2039A18
ldrh r0, [r4]
strh r0, [r1]
diff --git a/asm/item_menu.s b/asm/item_menu.s
index c81730a55..b9f3a6a19 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -2313,7 +2313,7 @@ _08108FA0:
adds r4, 0x2
mov r1, sp
adds r2, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r1, [r0]
ldrh r0, [r4]
@@ -2353,7 +2353,7 @@ _08108FE4:
adds r3, r5, 0
adds r3, 0x8
adds r2, r3
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r0, 0x2
negs r0, r0
cmp r4, r0
@@ -2830,7 +2830,7 @@ sub_81093B8: @ 81093B8
mov r2, sp
adds r2, 0x16
add r1, sp, 0x14
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r2, r8
ldrb r0, [r2]
movs r1, 0x10
@@ -2942,7 +2942,7 @@ sub_81094B0: @ 81094B0
adds r1, r2, r1
adds r3, 0x8
adds r2, r3
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldrb r0, [r4]
bl ListMenuGetYCoordForPrintingArrowCursor
adds r1, r0, 0
@@ -2967,7 +2967,7 @@ sub_81094B0: @ 81094B0
adds r4, 0x2
mov r1, sp
adds r2, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r1, [r0]
ldrh r0, [r4]
@@ -3001,7 +3001,7 @@ _08109558:
adds r4, 0x2
mov r1, sp
adds r2, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r1, [r0]
ldrh r0, [r4]
@@ -4573,7 +4573,7 @@ sub_810A288: @ 810A288
adds r6, 0x2
mov r1, sp
adds r2, r6, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r0, [r0]
ldrh r1, [r6]
diff --git a/asm/item_pc.s b/asm/item_pc.s
index aab19813a..714d5b853 100644
--- a/asm/item_pc.s
+++ b/asm/item_pc.s
@@ -1403,7 +1403,7 @@ sub_810DEA0: @ 810DEA0
adds r4, 0x2
mov r1, sp
adds r2, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
mov r0, sp
ldrh r1, [r0]
ldrh r0, [r4]
@@ -1436,7 +1436,7 @@ _0810DF20:
ldrb r0, [r6]
ldr r1, _0810DF44 @ =gUnknown_203ADD0
adds r2, r1, 0x2
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r0, 0x2
negs r0, r0
cmp r4, r0
@@ -1630,7 +1630,7 @@ sub_810E0B4: @ 810E0B4
ldr r7, _0810E120 @ =gUnknown_203ADD0
adds r2, r7, 0x2
adds r1, r7, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r5, 0x20
negs r5, r5
ldrb r0, [r4]
diff --git a/asm/learn_move.s b/asm/learn_move.s
index 92f6abfea..ddc063348 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -736,7 +736,7 @@ _080E4C7E:
adds r1, r2, r3
ldr r6, _080E4CD4 @ =0x00000a6a
adds r2, r6
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl FreeAllWindowBuffers
ldr r0, _080E4CD8 @ =gPlayerParty
ldr r5, [r7]
diff --git a/asm/list_menu.s b/asm/list_menu.s
index 4615e249b..5dab81d29 100644
--- a/asm/list_menu.s
+++ b/asm/list_menu.s
@@ -563,8 +563,8 @@ _081072CA:
_081072D0: .4byte gTasks+0x8
thumb_func_end sub_81072AC
- thumb_func_start get_coro_args_x18_x1A
-get_coro_args_x18_x1A: @ 81072D4
+ thumb_func_start ListMenuGetScrollAndRow
+ListMenuGetScrollAndRow: @ 81072D4
push {lr}
adds r3, r1, 0
lsls r0, 24
@@ -588,7 +588,7 @@ _081072F6:
bx r0
.align 2, 0
_081072FC: .4byte gTasks+0x8
- thumb_func_end get_coro_args_x18_x1A
+ thumb_func_end ListMenuGetScrollAndRow
thumb_func_start ListMenuGetYCoordForPrintingArrowCursor
ListMenuGetYCoordForPrintingArrowCursor: @ 8107300
diff --git a/asm/player_pc.s b/asm/player_pc.s
index b5149a435..cb6c9f9d0 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -1142,7 +1142,7 @@ sub_80EBF40: @ 80EBF40
mov r8, r1
adds r1, r7, 0
mov r2, r8
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r0, 0x2
negs r0, r0
cmp r6, r0
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s
index 24094d9af..09ec6cb62 100644
--- a/asm/pokedex_screen.s
+++ b/asm/pokedex_screen.s
@@ -593,7 +593,7 @@ _081029D0:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl sub_806E25C
cmp r0, 0
beq _081029F4
@@ -627,7 +627,7 @@ _08102A14:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _08102A4C @ =gMain
ldrh r1, [r0, 0x2E]
movs r3, 0x1
@@ -1367,7 +1367,7 @@ _0810307C:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl sub_81039F0
ldr r1, [r4]
adds r1, 0x60
@@ -1385,7 +1385,7 @@ _08103098:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _081030F0 @ =gMain
ldrh r1, [r0, 0x2E]
movs r3, 0x1
@@ -1687,7 +1687,7 @@ _08103344:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
bl sub_81039F0
ldr r1, [r4]
adds r1, 0x60
@@ -1706,7 +1706,7 @@ _08103362:
ldrb r0, [r1, 0x17]
adds r1, 0x62
movs r2, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _081033C4 @ =gMain
ldrh r1, [r0, 0x2E]
movs r2, 0x1
diff --git a/asm/shop.s b/asm/shop.s
index 2dfc294a3..539e02b55 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -2170,7 +2170,7 @@ sub_809BBC0: @ 809BBC0
ldr r7, _0809BC08 @ =gUnknown_2039942
subs r2, r7, 0x2
adds r1, r7, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
movs r0, 0x2
negs r0, r0
cmp r4, r0
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s
index 46824b53b..f12a91885 100644
--- a/asm/teachy_tv.s
+++ b/asm/teachy_tv.s
@@ -238,7 +238,7 @@ sub_815B2C0: @ 815B2C0
ldr r4, _0815B324 @ =gTeachyTV_StaticResources+6
adds r2, r4, 0x2
adds r1, r4, 0
- bl get_coro_args_x18_x1A
+ bl ListMenuGetScrollAndRow
ldr r0, _0815B328 @ =gMain
ldrh r1, [r0, 0x2E]
movs r0, 0x4
@@ -1186,8 +1186,8 @@ _0815BA4E:
bx r0
thumb_func_end sub_815BA30
- thumb_func_start TeachyTvTaskFunction
-TeachyTvTaskFunction: @ 815BA54
+ thumb_func_start TeachyTvPostBattleFadeControl
+TeachyTvPostBattleFadeControl: @ 815BA54
push {r4,lr}
lsls r0, 24
lsrs r0, 24
@@ -1223,7 +1223,7 @@ _0815BA90: .4byte gPaletteFade
_0815BA94: .4byte gUnknown_8479390
_0815BA98: .4byte gTeachyTV_StaticResources
_0815BA9C: .4byte sub_815B4EC
- thumb_func_end TeachyTvTaskFunction
+ thumb_func_end TeachyTvPostBattleFadeControl
thumb_func_start sub_815BAA0
sub_815BAA0: @ 815BAA0
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index a14905cc2..3623737ea 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -51,8 +51,8 @@ struct Tileset
/*0x04*/ void *tiles;
/*0x08*/ void *palettes;
/*0x0c*/ void *metatiles;
- /*0x14*/ TilesetCB callback;
- /*0x10*/ void *metatileAttributes;
+ /*0x10*/ TilesetCB callback;
+ /*0x14*/ void *metatileAttributes;
};
struct MapData
diff --git a/include/list_menu.h b/include/list_menu.h
index 1c632e89c..1aae55c82 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -54,7 +54,7 @@ extern struct ListMenuTemplate gMultiuseListMenuTemplate;
u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
s32 ListMenuHandleInput(u8 id);
-void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
+void ListMenuGetScrollAndRow(u8 a0, u16 *a1, u16 *a2);
void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
void DestroyListMenu(u8, u16 *, u16 *);
u16 ListMenuGetYCoordForPrintingArrowCursor(u8);
diff --git a/src/.fuse_hidden00001c3f00000004 b/src/.fuse_hidden00001c3f00000004
new file mode 100644
index 000000000..8c91f0f46
--- /dev/null
+++ b/src/.fuse_hidden00001c3f00000004
@@ -0,0 +1,346 @@
+#include "main.h"
+#include "global.h"
+#include "task.h"
+#include "menu.h"
+#include "palette.h"
+#include "sprite.h"
+#include "menu_helpers.h"
+#include "sound.h"
+#include "malloc.h"
+#include "sprite.h"
+#include "scanline_effect.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "decompress.h"
+#include "window.h"
+#include "list_menu.h"
+#include "item.h"
+#include "menu_indicators.h"
+#include "field_map_obj.h"
+#include "random.h"
+#include "constants/songs.h"
+#include "constants/items.h"
+
+typedef struct {
+ void (*callback)();
+ u8 mode;
+ u8 param1;
+ u16 scrollOffset;
+ u16 selectedRow;
+ u8 param4;
+ u8 filler;
+} TeachyTv_s;
+
+extern TeachyTv_s gTeachyTV_StaticResources;
+extern void * gUnknown_203F450;
+void C2TeachyTv();
+void C2TeachyTvMainCallback();
+void VblankHandlerTeachyTv();
+void sub_815ABC4(u8 mode, void (*cb)());
+void CB2_ReturnToTeachyTV();
+extern void sub_815AC20();
+void TeachyTvCreateAndRenderRbox();
+void TeachyTvInitIo();
+u8 TeachyTvSetupObjEventAndOam();
+extern void TeachyTvConfigRboxAndObj(u8);
+u8 TeachyTvSetupWindow();
+void TeachyTvSetupScrollIndicatorArrowPair();
+void TeachyTvSetWindowRegs();
+void TeachyTvSetupBg();
+void TeachyTvLoadGraphic();
+extern void TeachyTvTaskFunction(u8);
+extern void sub_815B2C0(u8);
+extern void VblankHblankHandlerSetZero();
+extern void sub_812B1E0(u16);
+extern struct BgTemplate gUnknown_84792E0;
+extern void *gUnknown_203F450; // tilemap pointer location
+extern u8 gUnknown_8E86240; // tilemap
+extern u8 gUnknown_8E86BE8;
+extern u8 gUnknown_8E86D6C;
+extern u8 gUnknown_8E86F98; // pal
+extern struct SpritePalette gUnknown_83A5348;
+extern void sub_815BD80(void *);
+typedef struct Task Task;
+extern struct WindowTemplate gUnknown_84792F0;
+
+
+void C2TeachyTv()
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ do_scheduled_bg_tilemap_copies_to_vram();
+ UpdatePaletteFade();
+}
+
+void VblankHandlerTeachyTv()
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void sub_815ABC4(u8 mode, void (*cb)())
+{
+ TeachyTv_s *v3 = &gTeachyTV_StaticResources;
+ u16 v4 = 0;
+ v3->mode = mode;
+ v3->callback = cb;
+ if(!mode) {
+ v3->scrollOffset = v4;
+ v3->selectedRow = v4;
+ v3->param1 = 0;
+ }
+ if(mode == 1)
+ v3->mode = 0;
+ SetMainCallback2(C2TeachyTvMainCallback);
+}
+
+void CB2_ReturnToTeachyTV()
+{
+ if(gTeachyTV_StaticResources.mode == 1)
+ sub_815ABC4(1,gTeachyTV_StaticResources.callback);
+ else
+ sub_815ABC4(2,gTeachyTV_StaticResources.callback);
+}
+
+void sub_815AC20()
+{
+ gTeachyTV_StaticResources.mode = 1;
+}
+
+void C2TeachyTvMainCallback()
+{
+ int state;
+ void *mallocPtr;
+ int taskId;
+ Task *taskAddr;
+ u8 **v4;
+ u32 x;
+
+ state = gMain.state;
+ // tried several ways to reproduce the control flow, but all failed. Now using goto
+ if ( state == 0 )
+ goto section_0;
+ else if ( state == 1 )
+ goto section_1;
+ else
+ return;
+ section_0:
+ v4 = (u8 **)&gUnknown_203F450;
+ (*v4) = (u8*)AllocZeroed(0x4008u);
+ *(u32*)gUnknown_203F450 = (u32)state;
+ *((u8*)gUnknown_203F450 + 0x4006) = state;
+ *((u8*)gUnknown_203F450 + 0x4007) = 0xFF;
+ VblankHblankHandlerSetZero();
+ clear_scheduled_bg_copies_to_vram();
+ ScanlineEffect_Stop();
+ FreeAllSpritePalettes();
+ ResetPaletteFade();
+ ResetSpriteData();
+ ResetTasks();
+ TeachyTvSetupBg();
+ TeachyTvLoadGraphic();
+ ++gMain.state;
+ return;
+ section_1:
+ if( free_temp_tile_data_buffers_if_possible() == 1 )
+ return;
+ TeachyTvCreateAndRenderRbox();
+ TeachyTvInitIo();
+ if ( gTeachyTV_StaticResources.mode == 2 )
+ {
+ taskId = CreateTask(TeachyTvTaskFunction, 0);
+ gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
+ TeachyTvConfigRboxAndObj(taskId);
+ }
+ else
+ {
+ taskId = CreateTask(sub_815B2C0, 0);
+ x = (u32)TeachyTvSetupWindow();
+ gTasks[taskId].data[0] = (x << 24) >> 24;
+ gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
+ TeachyTvSetupScrollIndicatorArrowPair();
+ PlayNewMapMusic(BGM_FRLG_TEACHY_TV);
+ TeachyTvSetWindowRegs();
+ }
+ schedule_bg_copy_tilemap_to_vram(0);
+ schedule_bg_copy_tilemap_to_vram(1u);
+ schedule_bg_copy_tilemap_to_vram(2u);
+ schedule_bg_copy_tilemap_to_vram(3u);
+ sub_812B1E0(9); // help system something
+ BlendPalettes(0xFFFFFFFF, 0x10u, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10u, 0, 0);
+ SetVBlankCallback(VblankHandlerTeachyTv);
+ SetMainCallback2(C2TeachyTv);
+}
+
+void TeachyTvSetupBg()
+{
+ InitBgReg();
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, &gUnknown_84792E0, 4u);
+ SetBgTilemapBuffer(1u, (u8 *)gUnknown_203F450 + 4);
+ SetBgTilemapBuffer(2u, (u8 *)gUnknown_203F450 + 0x1004);
+ SetBgTilemapBuffer(3u, (u8 *)gUnknown_203F450 + 0x2004);
+ SetGpuReg(0, 0x3040u);
+ ShowBg(0);
+ ShowBg(1u);
+ ShowBg(2u);
+ ShowBg(3u);
+ ChangeBgX(3u, 0x1000u, 2u);
+ ChangeBgY(3u, 0x2800u, 1u);
+ *((u8 *)gUnknown_203F450 + 0x4004) = 0;
+ *((u8 *)gUnknown_203F450 + 0x4005) = 3;
+ SetGpuReg(0x50u, 0);
+}
+
+void TeachyTvLoadGraphic()
+{
+ u16 src;
+ src = 0;
+ reset_temp_tile_data_buffers();
+ decompress_and_copy_tile_data_to_vram(1u, &gUnknown_8E86240, 0, 0, 0);
+ LZDecompressWram((u8 *)&gUnknown_8E86BE8, (*(u8 **)&gUnknown_203F450) + 4);
+ LZDecompressWram((u8 *)&gUnknown_8E86D6C, (*(u8 **)&gUnknown_203F450) + 0x3004);
+ LoadCompressedPalette(&gUnknown_8E86F98, 0, 0x80u);
+ LoadPalette(&src, 0, 2u);
+ LoadSpritePalette((struct SpritePalette *)&gUnknown_83A5348);
+ sub_815BD80((u8 *)gUnknown_203F450 + 0x2004);
+}
+
+void TeachyTvCreateAndRenderRbox()
+{
+ InitWindows(&gUnknown_84792F0);
+ DeactivateAllTextPrinters();
+ FillWindowPixelBuffer(0, 0xCCu);
+ PutWindowTilemap(0);
+ PutWindowTilemap(1u);
+ CopyWindowToVram(0, 2u);
+}
+
+extern struct ListMenuTemplate gUnknown_8479368;
+extern struct ListMenuItem gUnknown_8479340;
+extern u8 ListMenuInitInternal(struct ListMenuTemplate *, u16 scrollOffset, u16 selectedRow);
+void TeachyTvAudioByInput(s32, bool8, struct ListMenu *);
+
+u8 TeachyTvSetupWindow()
+{
+ int hasItem;
+ gMultiuseListMenuTemplate = gUnknown_8479368;
+ gMultiuseListMenuTemplate.windowId = 1;
+ gMultiuseListMenuTemplate.moveCursorFunc = TeachyTvAudioByInput;
+ hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u);
+ if ( !(hasItem << 24) )
+ {
+ gMultiuseListMenuTemplate.items = &gUnknown_8479340;
+ gMultiuseListMenuTemplate.totalItems = 5;
+ gMultiuseListMenuTemplate.maxShowed = 5;
+ gMultiuseListMenuTemplate.upText_Y = (gMultiuseListMenuTemplate.upText_Y + 8) & 0xF;
+ }
+ return ListMenuInit(
+ &gMultiuseListMenuTemplate,
+ gTeachyTV_StaticResources.scrollOffset,
+ gTeachyTV_StaticResources.selectedRow);
+}
+
+extern const struct ScrollArrowsTemplate gUnknown_8479380;
+
+void TeachyTvSetupScrollIndicatorArrowPair()
+{
+ int hasItem;
+ hasItem = (u8)CheckBagHasItem(ITEM_TM_CASE, 1u);
+ if ( ! hasItem << 24 ) {
+ u8 * temp = (u8 *)gUnknown_203F450;
+ *((u8 *)temp + 0x4007) = 0xFF;
+ }
+
+ else {
+ u8 *temp, res;
+ res = AddScrollIndicatorArrowPair(
+ &gUnknown_8479380,
+ &(gTeachyTV_StaticResources.scrollOffset));
+ temp = (u8 *)gUnknown_203F450;
+ *((u8 *)temp + 0x4007) = res;
+ }
+}
+
+void TeachyTvRemoveScrollIndicatorArrowPair()
+{
+ u8 *temp = ((u8*)gUnknown_203F450 + 0x4007);
+ if ( *temp != 0xFF )
+ {
+ RemoveScrollIndicatorArrowPair(*temp);
+ *((u8*)gUnknown_203F450 + 0x4007) = 0xFF;
+ }
+}
+
+void TeachyTvAudioByInput(s32 notUsed, bool8 play, struct ListMenu *notUsedAlt)
+{
+ if ( play != 1 )
+ PlaySE(SE_SELECT);
+}
+
+void TeachyTvInitIo()
+{
+ SetGpuReg(0x48u, 0x3Fu);
+ SetGpuReg(0x4Au, 0x1Fu);
+ SetGpuReg(0x50u, 0xCCu);
+ SetGpuReg(0x54u, 5u);
+}
+
+u8 TeachyTvSetupObjEventAndOam()
+{
+ u8 temp = AddPseudoEventObject(90, SpriteCallbackDummy, 0, 0, 8);
+ gSprites[temp].oam.priority = 2;
+ gSprites[temp].invisible = 1;
+ return temp;
+}
+
+void TeachyTvSetSpriteCoordsAndSwitchFrame(u8 objId, u16 x, u16 y, u8 frame)
+{
+ gSprites[objId].pos2.x = x;
+ gSprites[objId].pos2.y = y;
+ gSprites[objId].invisible = 0;
+ StartSpriteAnim(&gSprites[objId], frame);
+}
+
+void TeachyTvSetWindowRegs()
+{
+ SetGpuReg(0x44u, 0xC64u);
+ SetGpuReg(0x40u, 0x1CD4u);
+}
+
+void TeachyTvClearWindowRegs()
+{
+ SetGpuReg(0x44u, 0);
+ SetGpuReg(0x40u, 0);
+}
+
+void TeachyTvBg2AnimController()
+{
+ u16 *tilemapBuffer;
+ u8 counter;
+ u32 offset2;
+ u32 offset;
+ u32 counter2;
+
+ tilemapBuffer = (u16 *)GetBgTilemapBuffer(2u);
+ counter = 1;
+ do
+ {
+ offset2 = 2;
+ offset = 0x20 * counter;
+ counter2 = counter + 1;
+ do
+ {
+ tilemapBuffer[offset + offset2] = ((Random() & 3) << 10) + 0x301F;
+ offset2 = (offset2 + 1) << 0x18 >> 0x18;
+ }
+ while ( offset2 <= 0x1B );
+ counter = counter2;
+ }
+ while ( counter2 << 0x18 >> 0x18 <= 0xCu );
+ schedule_bg_copy_tilemap_to_vram(2u);
+}
+
diff --git a/src/fame_checker.c b/src/fame_checker.c
index aff9733e9..b136ebfa8 100644
--- a/src/fame_checker.c
+++ b/src/fame_checker.c
@@ -1270,7 +1270,7 @@ static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list
struct Task *task = &gTasks[taskId];
PlaySE(SE_SELECT);
task->data[1] = 0;
- get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL);
+ ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL);
sFameCheckerData->listMenuTopIdx = listMenuTopIdx;
if (itemIndex != sFameCheckerData->numUnlockedPersons - 1)
{
@@ -1339,7 +1339,7 @@ static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit)
u16 listY;
u16 cursorY;
u16 who;
- get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
+ ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
who = listY + cursorY;
AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].name);
if (!onInit)
@@ -1432,7 +1432,7 @@ static void FreeListMenuSelectorArrowPairResources(void)
static u16 FameCheckerGetCursorY(void)
{
u16 listY, cursorY;
- get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
+ ListMenuGetScrollAndRow(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
return listY + cursorY;
}
diff --git a/src/teachy_tv.c b/src/teachy_tv.c
index 60b182575..9e34cdb70 100644
--- a/src/teachy_tv.c
+++ b/src/teachy_tv.c
@@ -18,13 +18,14 @@
#include "menu_indicators.h"
#include "field_map_obj.h"
#include "random.h"
+#include "text.h"
#include "constants/songs.h"
#include "constants/items.h"
typedef struct {
void (*callback)();
u8 mode;
- u8 param1;
+ u8 optionChosen;
u16 scrollOffset;
u16 selectedRow;
u8 param4;
@@ -48,7 +49,7 @@ void TeachyTvSetupScrollIndicatorArrowPair();
void TeachyTvSetWindowRegs();
void TeachyTvSetupBg();
void TeachyTvLoadGraphic();
-extern void TeachyTvTaskFunction(u8);
+extern void TeachyTvPostBattleFadeControl(u8);
extern void sub_815B2C0(u8);
extern void VblankHblankHandlerSetZero();
extern void sub_812B1E0(u16);
@@ -89,7 +90,7 @@ void sub_815ABC4(u8 mode, void (*cb)())
if(!mode) {
v3->scrollOffset = v4;
v3->selectedRow = v4;
- v3->param1 = 0;
+ v3->optionChosen = 0;
}
if(mode == 1)
v3->mode = 0;
@@ -112,7 +113,6 @@ void sub_815AC20()
void C2TeachyTvMainCallback()
{
int state;
- void *mallocPtr;
int taskId;
Task *taskAddr;
u8 **v4;
@@ -150,7 +150,7 @@ void C2TeachyTvMainCallback()
TeachyTvInitIo();
if ( gTeachyTV_StaticResources.mode == 2 )
{
- taskId = CreateTask(TeachyTvTaskFunction, 0);
+ taskId = CreateTask(TeachyTvPostBattleFadeControl, 0);
gTasks[taskId].data[1] = TeachyTvSetupObjEventAndOam();
TeachyTvSetupPostBattleWindowAndObj(taskId);
}
diff --git a/src/tm_case.c b/src/tm_case.c
index ce31e79c3..81e0fd371 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -737,7 +737,7 @@ static void Task_TMCaseMain(u8 taskId)
if (sub_80BF72C() != TRUE)
{
input = ListMenuHandleInput(data[0]);
- get_coro_args_x18_x1A(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
+ ListMenuGetScrollAndRow(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
if (JOY_NEW(SELECT_BUTTON) && sTMCaseStaticResources.unk_05 == 1)
{
PlaySE(SE_SELECT);