diff options
-rw-r--r-- | asm/.fuse_hidden00001c3c00000003 | 2244 | ||||
-rw-r--r-- | asm/.fuse_hidden00001c3c00000005 | 2244 | ||||
-rw-r--r-- | asm/berry_pouch.s | 2 | ||||
-rw-r--r-- | asm/field_specials.s | 2 | ||||
-rw-r--r-- | asm/item_menu.s | 14 | ||||
-rw-r--r-- | asm/item_pc.s | 6 | ||||
-rw-r--r-- | asm/learn_move.s | 2 | ||||
-rw-r--r-- | asm/list_menu.s | 6 | ||||
-rw-r--r-- | asm/player_pc.s | 2 | ||||
-rw-r--r-- | asm/pokedex_screen.s | 12 | ||||
-rw-r--r-- | asm/shop.s | 2 | ||||
-rw-r--r-- | asm/teachy_tv.s | 8 | ||||
-rw-r--r-- | include/global.fieldmap.h | 4 | ||||
-rw-r--r-- | include/list_menu.h | 2 | ||||
-rw-r--r-- | src/.fuse_hidden00001c3f00000004 | 346 | ||||
-rw-r--r-- | src/fame_checker.c | 6 | ||||
-rw-r--r-- | src/teachy_tv.c | 10 | ||||
-rw-r--r-- | src/tm_case.c | 2 |
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); |