.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start sub_813CA54 sub_813CA54: @ 813CA54 ldr r0, =gUnknown_0203AB7C ldr r0, [r0] movs r1, 0x8A lsls r1, 1 adds r0, r1 movs r1, 0 strh r1, [r0] bx lr .pool thumb_func_end sub_813CA54 thumb_func_start sub_813CA68 sub_813CA68: @ 813CA68 push {lr} sub sp, 0x4 ldr r0, =gUnknown_0203AB7C ldr r0, [r0] movs r1, 0x8A lsls r1, 1 adds r0, r1 ldrh r0, [r0] cmp r0, 0x4 bhi _0813CB20 lsls r0, 2 ldr r1, =_0813CA90 adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0813CA90: .4byte _0813CAA4 .4byte _0813CAB4 .4byte _0813CABA .4byte _0813CAEC .4byte _0813CB10 _0813CAA4: ldr r0, =gUnknown_0203AB7C ldr r0, [r0] ldrh r0, [r0, 0xE] bl sub_813CB40 b _0813CB24 .pool _0813CAB4: bl sub_813CF0C b _0813CB24 _0813CABA: ldr r1, =gUnknown_085B3DB4 movs r0, 0 str r0, [sp] movs r0, 0x2 movs r2, 0 movs r3, 0 bl decompress_and_copy_tile_data_to_vram ldr r0, =gUnknown_0203AB7C ldr r1, [r0] movs r0, 0x8B lsls r0, 1 adds r1, r0 movs r2, 0xA0 lsls r2, 3 movs r0, 0x2 movs r3, 0 bl LoadBgTilemap b _0813CB24 .pool _0813CAEC: bl free_temp_tile_data_buffers_if_possible lsls r0, 24 cmp r0, 0 bne _0813CB34 ldr r0, =gUnknown_085B3D94 ldr r1, =gPlttBufferUnfaded + 0x140 ldr r2, =0x04000008 bl CpuSet b _0813CB24 .pool _0813CB10: ldr r1, =0xfffff800 movs r0, 0x2 movs r2, 0 bl ChangeBgY b _0813CB24 .pool _0813CB20: movs r0, 0 b _0813CB36 _0813CB24: ldr r0, =gUnknown_0203AB7C ldr r1, [r0] movs r0, 0x8A lsls r0, 1 adds r1, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] _0813CB34: movs r0, 0x1 _0813CB36: add sp, 0x4 pop {r1} bx r1 .pool thumb_func_end sub_813CA68 thumb_func_start sub_813CB40 sub_813CB40: @ 813CB40 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 16 lsrs r7, r0, 16 ldr r5, =gUnknown_0203AB7C ldr r0, [r5] ldr r1, =0x000006e2 adds r0, r1 movs r4, 0 strh r4, [r0] ldr r0, =0x0000403e bl VarGet ldr r1, [r5] ldr r2, =0x000006e4 adds r1, r2 strh r0, [r1] lsls r0, 16 lsrs r0, 16 cmp r0, 0x8 bls _0813CB70 strh r4, [r1] _0813CB70: ldr r0, =gSaveBlock1Ptr ldr r0, [r0] ldr r3, =0x000031dc adds r0, r3 ldrh r1, [r0, 0x8] cmp r7, r1 bne _0813CB80 b _0813CCB8 _0813CB80: ldr r1, [r5] movs r2, 0x88 lsls r2, 1 adds r0, r1, r2 strh r4, [r0] movs r3, 0x89 lsls r3, 1 adds r0, r1, r3 strh r4, [r0] movs r6, 0 ldr r1, =gUnknown_085B3EE8 _0813CB96: lsls r0, r6, 1 adds r0, r1 ldrh r0, [r0] cmp r0, r7 bne _0813CBA2 b _0813CCF8 _0813CBA2: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 cmp r6, 0 beq _0813CB96 movs r6, 0 ldr r4, =gUnknown_085B3EF0 ldrh r0, [r4] movs r1, 0xCE lsls r1, 1 cmp r0, r1 beq _0813CC44 mov r8, r4 adds r5, r4, 0x4 mov r9, r1 _0813CBC0: lsls r0, r6, 1 adds r1, r0, r6 lsls r2, r1, 1 mov r3, r8 adds r1, r2, r3 adds r3, r0, 0 ldrh r1, [r1] cmp r7, r1 bne _0813CC2E adds r0, r4, 0x2 adds r0, r2, r0 ldrh r0, [r0] cmp r0, 0x18 beq _0813CC1A cmp r0, 0x18 bgt _0813CC08 cmp r0, 0 beq _0813CC0E b _0813CC2E .pool _0813CC08: cmp r0, 0x1A beq _0813CC1A b _0813CC2E _0813CC0E: adds r0, r2, r5 ldrh r1, [r0] movs r0, 0 bl sub_813CD04 b _0813CC2E _0813CC1A: adds r1, r3, r6 lsls r1, 1 mov r0, r8 adds r0, 0x2 adds r0, r1, r0 ldrh r0, [r0] adds r1, r5 ldrh r1, [r1] bl sub_813CD64 _0813CC2E: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 ldr r4, =gUnknown_085B3EF0 lsls r0, r6, 1 adds r0, r6 lsls r0, 1 adds r0, r4 ldrh r0, [r0] cmp r0, r9 bne _0813CBC0 _0813CC44: movs r6, 0 ldr r1, =gWildMonHeaders ldrb r0, [r1] cmp r0, 0xFF beq _0813CCF8 _0813CC4E: lsls r4, r6, 2 adds r0, r4, r6 lsls r0, 2 adds r5, r0, r1 adds r0, r5, 0 adds r1, r7, 0 bl sub_813CE48 lsls r0, 24 cmp r0, 0 beq _0813CC9C ldrb r0, [r5] cmp r0, 0x18 beq _0813CC8C cmp r0, 0x18 bgt _0813CC7C cmp r0, 0 beq _0813CC82 b _0813CC9C .pool _0813CC7C: cmp r0, 0x1A beq _0813CC8C b _0813CC9C _0813CC82: ldrb r1, [r5, 0x1] movs r0, 0 bl sub_813CD04 b _0813CC9C _0813CC8C: ldr r0, =gWildMonHeaders adds r1, r4, r6 lsls r1, 2 adds r1, r0 ldrb r0, [r1] ldrb r1, [r1, 0x1] bl sub_813CD64 _0813CC9C: adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 ldr r1, =gWildMonHeaders lsls r0, r6, 2 adds r0, r6 lsls r0, 2 adds r0, r1 ldrb r0, [r0] cmp r0, 0xFF bne _0813CC4E b _0813CCF8 .pool _0813CCB8: ldr r2, [r5] movs r3, 0x89 lsls r3, 1 adds r1, r2, r3 strh r4, [r1] ldrb r1, [r0, 0x13] cmp r1, 0 beq _0813CCF0 adds r0, r2, 0 adds r0, 0x10 adds r1, r2, 0 adds r1, 0x11 bl GetRoamerLocation ldr r1, [r5] ldrb r0, [r1, 0x10] ldrb r1, [r1, 0x11] bl get_mapheader_by_bank_and_number ldr r1, [r5] ldrb r0, [r0, 0x14] strh r0, [r1, 0x12] movs r0, 0x88 lsls r0, 1 adds r1, r0 movs r0, 0x1 strh r0, [r1] b _0813CCF8 _0813CCF0: movs r3, 0x88 lsls r3, 1 adds r0, r2, r3 strh r1, [r0] _0813CCF8: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end sub_813CB40 thumb_func_start sub_813CD04 sub_813CD04: @ 813CD04 push {r4,r5,lr} lsls r0, 16 lsrs r5, r0, 16 lsls r1, 16 lsrs r3, r1, 16 ldr r4, =gUnknown_0203AB7C ldr r2, [r4] movs r0, 0x88 lsls r0, 1 adds r1, r2, r0 ldrh r0, [r1] cmp r0, 0x3F bhi _0813CD58 lsls r0, 2 adds r0, r2, r0 strb r5, [r0, 0x10] ldr r1, [r4] movs r2, 0x88 lsls r2, 1 adds r0, r1, r2 ldrh r0, [r0] lsls r0, 2 adds r1, r0 strb r3, [r1, 0x11] adds r0, r5, 0 adds r1, r3, 0 bl get_mapheader_by_bank_and_number ldrb r0, [r0, 0x14] bl CorrectSpecialMapSecId ldr r2, [r4] movs r1, 0x88 lsls r1, 1 adds r3, r2, r1 ldrh r1, [r3] lsls r1, 2 adds r2, r1 strh r0, [r2, 0x12] ldrh r0, [r3] adds r0, 0x1 strh r0, [r3] _0813CD58: pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_813CD04 thumb_func_start sub_813CD64 sub_813CD64: @ 813CD64 push {r4-r7,lr} lsls r0, 16 lsrs r2, r0, 16 lsls r1, 16 lsrs r1, 16 ldr r0, =gUnknown_0203AB7C ldr r0, [r0] movs r3, 0x89 lsls r3, 1 adds r0, r3 ldrh r0, [r0] cmp r0, 0x1F bhi _0813CE22 lsls r0, r2, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 bl sub_813CE34 lsls r0, 16 lsrs r5, r0, 16 cmp r5, 0xD4 bhi _0813CE22 movs r3, 0 ldr r0, =gUnknown_085B3EEA _0813CD96: ldrh r4, [r0] cmp r5, r4 beq _0813CE22 adds r0, 0x2 adds r3, 0x1 cmp r3, 0x2 bls _0813CD96 ldr r1, =gUnknown_085B3EFC ldrh r0, [r1] cmp r0, 0xD5 beq _0813CDD2 adds r4, r1, 0 adds r7, r4, 0 movs r6, 0 _0813CDB2: ldrh r0, [r4] cmp r5, r0 bne _0813CDC8 adds r0, r7, 0x2 adds r0, r6, r0 ldrh r0, [r0] bl FlagGet lsls r0, 24 cmp r0, 0 beq _0813CE22 _0813CDC8: adds r4, 0x4 adds r6, 0x4 ldrh r0, [r4] cmp r0, 0xD5 bne _0813CDB2 _0813CDD2: movs r3, 0 ldr r0, =gUnknown_0203AB7C ldr r2, [r0] movs r4, 0x89 lsls r4, 1 adds r1, r2, r4 ldrh r4, [r1] adds r1, r0, 0 cmp r3, r4 bge _0813CE02 movs r6, 0xC4 lsls r6, 3 adds r0, r2, r6 ldrh r0, [r0] cmp r0, r5 beq _0813CE02 adds r2, r6 _0813CDF4: adds r2, 0x2 adds r3, 0x1 cmp r3, r4 bge _0813CE02 ldrh r0, [r2] cmp r0, r5 bne _0813CDF4 _0813CE02: ldr r1, [r1] movs r0, 0x89 lsls r0, 1 adds r2, r1, r0 ldrh r4, [r2] cmp r3, r4 bne _0813CE22 lsls r0, r3, 1 movs r6, 0xC4 lsls r6, 3 adds r1, r6 adds r1, r0 strh r5, [r1] ldrh r0, [r2] adds r0, 0x1 strh r0, [r2] _0813CE22: pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_813CD64 thumb_func_start sub_813CE34 sub_813CE34: @ 813CE34 push {lr} lsls r0, 24 lsrs r0, 24 lsls r1, 24 lsrs r1, 24 bl get_mapheader_by_bank_and_number ldrb r0, [r0, 0x14] pop {r1} bx r1 thumb_func_end sub_813CE34 thumb_func_start sub_813CE48 sub_813CE48: @ 813CE48 push {r4,r5,lr} adds r4, r0, 0 lsls r1, 16 lsrs r5, r1, 16 ldrb r0, [r4] ldrb r1, [r4, 0x1] bl sub_813CE34 lsls r0, 16 lsrs r0, 16 cmp r0, 0xD2 bne _0813CE7C ldr r0, =gUnknown_0203AB7C ldr r2, [r0] ldr r0, =0x000006e2 adds r1, r2, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] ldrh r1, [r1] ldr r0, =0x000006e4 adds r2, r0 ldrh r0, [r2] adds r0, 0x1 cmp r1, r0 bne _0813CEBC _0813CE7C: ldr r0, [r4, 0x4] adds r1, r5, 0 movs r2, 0xC bl sub_813CED4 lsls r0, 24 cmp r0, 0 bne _0813CECC ldr r0, [r4, 0x8] adds r1, r5, 0 movs r2, 0x5 bl sub_813CED4 lsls r0, 24 cmp r0, 0 bne _0813CECC ldr r0, [r4, 0x10] adds r1, r5, 0 movs r2, 0xC bl sub_813CED4 lsls r0, 24 cmp r0, 0 bne _0813CECC ldr r0, [r4, 0xC] adds r1, r5, 0 movs r2, 0x5 bl sub_813CED4 lsls r0, 24 cmp r0, 0 bne _0813CECC _0813CEBC: movs r0, 0 b _0813CECE .pool _0813CECC: movs r0, 0x1 _0813CECE: pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_813CE48 thumb_func_start sub_813CED4 sub_813CED4: @ 813CED4 push {r4,lr} lsls r1, 16 lsrs r4, r1, 16 lsls r2, 16 lsrs r2, 16 cmp r0, 0 beq _0813CF02 movs r3, 0 cmp r3, r2 bcs _0813CF02 ldr r1, [r0, 0x4] _0813CEEA: lsls r0, r3, 2 adds r0, r1 ldrh r0, [r0, 0x2] cmp r0, r4 bne _0813CEF8 movs r0, 0x1 b _0813CF04 _0813CEF8: adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r2 bcc _0813CEEA _0813CF02: movs r0, 0 _0813CF04: pop {r4} pop {r1} bx r1 thumb_func_end sub_813CED4 thumb_func_start sub_813CF0C sub_813CF0C: @ 813CF0C push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 movs r4, 0 ldr r2, =gUnknown_0203AB7C adds r7, r2, 0 movs r6, 0x8B lsls r6, 1 movs r5, 0 ldr r3, =0x0000027f _0813CF26: ldr r0, [r7] lsls r1, r4, 1 adds r0, r6 adds r0, r1 strh r5, [r0] adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, r3 bls _0813CF26 movs r4, 0 ldr r0, [r2] movs r1, 0x88 lsls r1, 1 adds r0, r1 ldrh r0, [r0] cmp r4, r0 bcs _0813CFB2 adds r3, r2, 0 _0813CF4C: movs r5, 0 movs r6, 0 adds r2, r4, 0x1 mov r8, r2 lsls r4, 2 mov r9, r4 _0813CF58: movs r4, 0 _0813CF5A: adds r0, r4, 0 adds r1, r6, 0 str r3, [sp] bl GetRegionMapSectionIdAt ldr r3, [sp] ldr r2, [r3] mov r7, r9 adds r1, r2, r7 lsls r0, 16 lsrs r0, 16 ldrh r1, [r1, 0x12] cmp r0, r1 bne _0813CF84 lsls r0, r5, 1 movs r7, 0x8B lsls r7, 1 adds r1, r2, r7 adds r1, r0 ldr r0, =0x0000ffff strh r0, [r1] _0813CF84: adds r0, r5, 0x1 lsls r0, 16 lsrs r5, r0, 16 adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x1F bls _0813CF5A adds r0, r6, 0x1 lsls r0, 16 lsrs r6, r0, 16 cmp r6, 0x13 bls _0813CF58 mov r1, r8 lsls r0, r1, 16 lsrs r4, r0, 16 ldr r0, [r3] movs r2, 0x88 lsls r2, 1 adds r0, r2 ldrh r0, [r0] cmp r4, r0 bcc _0813CF4C _0813CFB2: movs r5, 0 movs r6, 0 ldr r7, =gUnknown_0203AB7C mov r12, r7 movs r7, 0x8B lsls r7, 1 ldr r3, =0x0000ffff _0813CFC0: movs r4, 0 adds r1, r6, 0x1 mov r9, r1 _0813CFC6: mov r2, r12 ldr r0, [r2] lsls r1, r5, 1 adds r2, r0, r7 adds r1, r2, r1 ldrh r0, [r1] adds r1, r5, 0x1 mov r8, r1 cmp r0, r3 bne _0813D0D2 cmp r4, 0 beq _0813CFF0 subs r0, r5, 0x1 lsls r0, 1 adds r1, r2, r0 ldrh r2, [r1] cmp r2, r3 beq _0813CFF0 movs r0, 0x2 orrs r0, r2 strh r0, [r1] _0813CFF0: adds r2, r5, 0x1 mov r8, r2 cmp r4, 0x1F beq _0813D00E mov r1, r12 ldr r0, [r1] lsls r1, r2, 1 adds r0, r7 adds r2, r0, r1 ldrh r1, [r2] cmp r1, r3 beq _0813D00E movs r0, 0x1 orrs r0, r1 strh r0, [r2] _0813D00E: cmp r6, 0 beq _0813D02C mov r2, r12 ldr r1, [r2] adds r0, r5, 0 subs r0, 0x20 lsls r0, 1 adds r1, r7 adds r1, r0 ldrh r2, [r1] cmp r2, r3 beq _0813D02C movs r0, 0x8 orrs r0, r2 strh r0, [r1] _0813D02C: cmp r6, 0x13 beq _0813D04A mov r0, r12 ldr r1, [r0] adds r0, r5, 0 adds r0, 0x20 lsls r0, 1 adds r1, r7 adds r1, r0 ldrh r2, [r1] cmp r2, r3 beq _0813D04A movs r0, 0x4 orrs r0, r2 strh r0, [r1] _0813D04A: cmp r4, 0 beq _0813D06C cmp r6, 0 beq _0813D06C mov r2, r12 ldr r1, [r2] adds r0, r5, 0 subs r0, 0x21 lsls r0, 1 adds r1, r7 adds r1, r0 ldrh r2, [r1] cmp r2, r3 beq _0813D06C movs r0, 0x10 orrs r0, r2 strh r0, [r1] _0813D06C: cmp r4, 0x1F beq _0813D08E cmp r6, 0 beq _0813D08E mov r0, r12 ldr r1, [r0] adds r0, r5, 0 subs r0, 0x1F lsls r0, 1 adds r1, r7 adds r1, r0 ldrh r2, [r1] cmp r2, r3 beq _0813D08E movs r0, 0x40 orrs r0, r2 strh r0, [r1] _0813D08E: cmp r4, 0 beq _0813D0B0 cmp r6, 0x13 beq _0813D0B0 mov r2, r12 ldr r1, [r2] adds r0, r5, 0 adds r0, 0x1F lsls r0, 1 adds r1, r7 adds r1, r0 ldrh r2, [r1] cmp r2, r3 beq _0813D0B0 movs r0, 0x20 orrs r0, r2 strh r0, [r1] _0813D0B0: cmp r4, 0x1F beq _0813D0D2 cmp r6, 0x13 beq _0813D0D2 mov r0, r12 ldr r1, [r0] adds r0, r5, 0 adds r0, 0x21 lsls r0, 1 adds r1, r7 adds r1, r0 ldrh r2, [r1] cmp r2, r3 beq _0813D0D2 movs r0, 0x80 orrs r0, r2 strh r0, [r1] _0813D0D2: mov r1, r8 lsls r0, r1, 16 lsrs r5, r0, 16 adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x1F bhi _0813D0E4 b _0813CFC6 _0813D0E4: mov r2, r9 lsls r0, r2, 16 lsrs r6, r0, 16 cmp r6, 0x13 bhi _0813D0F0 b _0813CFC0 _0813D0F0: movs r4, 0 ldr r6, =gUnknown_0203AB7C movs r5, 0x8B lsls r5, 1 ldr r7, =0x0000ffff mov r12, r7 movs r0, 0xA0 lsls r0, 8 mov r9, r0 ldr r7, =0x0000a010 ldr r1, =0x0000ffcf mov r8, r1 _0813D108: ldr r0, [r6] lsls r3, r4, 1 adds r0, r5 adds r2, r0, r3 ldrh r1, [r2] adds r0, r1, 0 cmp r0, r12 bne _0813D130 strh r7, [r2] b _0813D198 .pool _0813D130: cmp r0, 0 beq _0813D198 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _0813D142 mov r0, r8 ands r0, r1 strh r0, [r2] _0813D142: ldr r0, [r6] adds r0, r5 adds r2, r0, r3 ldrh r1, [r2] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _0813D158 ldr r0, =0x0000ff3f ands r0, r1 strh r0, [r2] _0813D158: ldr r0, [r6] adds r0, r5 adds r2, r0, r3 ldrh r1, [r2] movs r0, 0x8 ands r0, r1 cmp r0, 0 beq _0813D16E ldr r0, =0x0000ffaf ands r0, r1 strh r0, [r2] _0813D16E: ldr r0, [r6] adds r0, r5 adds r2, r0, r3 ldrh r1, [r2] movs r0, 0x4 ands r0, r1 cmp r0, 0 beq _0813D184 ldr r0, =0x0000ff5f ands r0, r1 strh r0, [r2] _0813D184: ldr r1, [r6] adds r1, r5 adds r1, r3 ldr r2, =gUnknown_085B3F18 ldrh r0, [r1] adds r0, r2 ldrb r0, [r0] mov r2, r9 orrs r0, r2 strh r0, [r1] _0813D198: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldr r0, =0x0000027f cmp r4, r0 bls _0813D108 add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_813CF0C thumb_func_start sub_813D1C8 sub_813D1C8: @ 813D1C8 push {lr} ldr r1, =gUnknown_0203AB7C ldr r2, [r1] movs r3, 0x89 lsls r3, 1 adds r0, r2, r3 ldrh r0, [r0] adds r3, r1, 0 cmp r0, 0 beq _0813D1FC movs r1, 0x88 lsls r1, 1 adds r0, r2, r1 ldrh r0, [r0] cmp r0, 0 bne _0813D1FC ldr r0, =0x0000061e adds r1, r2, r0 movs r0, 0x1 strb r0, [r1] b _0813D206 .pool _0813D1FC: ldr r0, [r3] ldr r1, =0x0000061e adds r0, r1 movs r1, 0 strb r1, [r0] _0813D206: ldr r1, [r3] ldr r2, =0x00000616 adds r0, r1, r2 movs r2, 0 strh r2, [r0] movs r3, 0xC3 lsls r3, 3 adds r0, r1, r3 strh r2, [r0] adds r3, 0x2 adds r0, r1, r3 strh r2, [r0] ldr r0, =0x0000061c adds r2, r1, r0 movs r0, 0x40 strh r0, [r2] ldr r2, =0x0000061f adds r1, r2 movs r0, 0x1 strb r0, [r1] ldr r1, =0x00003f44 movs r0, 0x50 bl SetGpuReg movs r1, 0x80 lsls r1, 5 movs r0, 0x52 bl SetGpuReg bl sub_813D25C pop {r0} bx r0 .pool thumb_func_end sub_813D1C8 thumb_func_start sub_813D25C sub_813D25C: @ 813D25C push {r4-r7,lr} mov r7, r8 push {r7} ldr r0, =gUnknown_0203AB7C ldr r2, [r0] ldr r3, =0x0000061e adds r1, r2, r3 ldrb r1, [r1] adds r7, r0, 0 cmp r1, 0 bne _0813D32A ldr r0, =0x00000616 adds r1, r2, r0 ldrh r0, [r1] cmp r0, 0 bne _0813D324 movs r1, 0xC3 lsls r1, 3 adds r0, r2, r1 ldrh r1, [r0] adds r1, 0x1 strh r1, [r0] movs r0, 0x1 ands r1, r0 cmp r1, 0 beq _0813D2A4 subs r3, 0x4 adds r0, r2, r3 b _0813D2A8 .pool _0813D2A4: ldr r1, =0x0000061c adds r0, r2, r1 _0813D2A8: ldrh r1, [r0] adds r1, 0x4 movs r2, 0x7F ands r1, r2 strh r1, [r0] ldr r3, =gSineTable ldr r1, [r7] ldr r2, =0x0000061a adds r0, r1, r2 ldrh r0, [r0] lsls r0, 1 adds r0, r3 ldrh r2, [r0] lsls r2, 16 asrs r2, 20 lsls r2, 16 ldr r0, =0x0000061c adds r1, r0 ldrh r0, [r1] lsls r0, 1 adds r0, r3 ldrh r1, [r0] lsls r1, 16 asrs r1, 20 lsls r1, 24 orrs r1, r2 lsrs r1, 16 movs r0, 0x52 bl SetGpuReg ldr r1, [r7] ldr r2, =0x00000616 adds r0, r1, r2 movs r3, 0 strh r3, [r0] movs r0, 0xC3 lsls r0, 3 adds r2, r1, r0 ldrh r0, [r2] cmp r0, 0x40 bne _0813D3C6 strh r3, [r2] movs r2, 0x89 lsls r2, 1 adds r0, r1, r2 ldrh r0, [r0] cmp r0, 0 beq _0813D3C6 ldr r3, =0x0000061e adds r1, r3 movs r0, 0x1 b _0813D3C4 .pool _0813D324: subs r0, 0x1 strh r0, [r1] b _0813D3C6 _0813D32A: ldr r0, =0x00000616 adds r1, r2, r0 ldrh r0, [r1] adds r0, 0x1 strh r0, [r1] lsls r0, 16 lsrs r0, 16 cmp r0, 0xC bls _0813D3C6 movs r0, 0 strh r0, [r1] ldr r3, =0x0000061f adds r1, r2, r3 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] movs r4, 0 ldr r0, [r7] movs r6, 0x89 lsls r6, 1 adds r0, r6 ldrh r0, [r0] cmp r4, r0 bcs _0813D3A0 adds r5, r7, 0 movs r0, 0x1 mov r12, r0 movs r1, 0x5 negs r1, r1 mov r8, r1 _0813D366: ldr r1, [r5] lsls r2, r4, 2 movs r3, 0xCC lsls r3, 3 adds r0, r1, r3 adds r0, r2 ldr r3, [r0] ldr r0, =0x0000061f adds r1, r0 ldrb r0, [r1] movs r1, 0x1 adds r3, 0x3E ands r1, r0 mov r2, r12 ands r1, r2 lsls r1, 2 ldrb r2, [r3] mov r0, r8 ands r0, r2 orrs r0, r1 strb r0, [r3] adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldr r0, [r5] adds r0, r6 ldrh r0, [r0] cmp r4, r0 bcc _0813D366 _0813D3A0: ldr r0, [r7] ldr r3, =0x0000061f adds r1, r0, r3 ldrb r0, [r1] cmp r0, 0x4 bls _0813D3C6 movs r0, 0x1 strb r0, [r1] ldr r1, [r7] movs r2, 0x88 lsls r2, 1 adds r0, r1, r2 ldrh r0, [r0] cmp r0, 0 beq _0813D3C6 subs r3, 0x1 adds r1, r3 movs r0, 0 _0813D3C4: strb r0, [r1] _0813D3C6: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_813D25C thumb_func_start sub_813D3D8 sub_813D3D8: @ 813D3D8 push {r4-r6,lr} adds r4, r0, 0 adds r6, r1, 0 lsls r4, 16 lsrs r4, 16 ldr r5, =gUnknown_0203AB7C ldr r0, =0x000015bc bl AllocZeroed str r0, [r5] movs r1, 0 movs r5, 0 strh r4, [r0, 0xE] movs r2, 0xDD lsls r2, 3 adds r0, r2 str r6, [r0] strb r1, [r6] ldr r0, =sub_813D42C movs r1, 0 bl CreateTask lsls r0, 24 lsrs r0, 24 ldr r2, =gTasks lsls r1, r0, 2 adds r1, r0 lsls r1, 3 adds r1, r2 strh r5, [r1, 0x8] pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_813D3D8 thumb_func_start sub_813D42C sub_813D42C: @ 813D42C push {r4,lr} sub sp, 0x4 lsls r0, 24 lsrs r4, r0, 24 ldr r1, =gTasks lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r1 movs r2, 0x8 ldrsh r0, [r0, r2] adds r2, r1, 0 cmp r0, 0xB bls _0813D44A b _0813D584 _0813D44A: lsls r0, 2 ldr r1, =_0813D45C adds r0, r1 ldr r0, [r0] mov pc, r0 .pool .align 2, 0 _0813D45C: .4byte _0813D48C .4byte _0813D4A8 .4byte _0813D4D4 .4byte _0813D4E6 .4byte _0813D4EC .4byte _0813D4F8 .4byte _0813D520 .4byte _0813D526 .4byte _0813D52C .4byte _0813D532 .4byte _0813D544 .4byte _0813D56C _0813D48C: bl ResetSpriteData bl FreeAllSpritePalettes movs r0, 0x3 bl HideBg movs r0, 0x2 bl HideBg movs r0, 0 bl HideBg b _0813D584 _0813D4A8: movs r0, 0x3 movs r1, 0x1 movs r2, 0x3 bl SetBgAttribute ldr r0, =gUnknown_085B4018 bl sub_81C4D70 ldr r0, =gUnknown_0203AB7C ldr r0, [r0] movs r1, 0xF7 lsls r1, 4 adds r0, r1 movs r1, 0 movs r2, 0x10 bl StringFill b _0813D584 .pool _0813D4D4: bl sub_81C4E90 cmp r0, 0x1 beq _0813D594 movs r0, 0x8 negs r0, r0 bl sub_81C4ED0 b _0813D584 _0813D4E6: bl sub_813CA54 b _0813D584 _0813D4EC: bl sub_813CA68 lsls r0, 24 cmp r0, 0 bne _0813D594 b _0813D584 _0813D4F8: ldr r0, =gUnknown_0203AB7C ldr r0, [r0] ldr r2, =0x000006ec adds r0, r2 bl sub_8122D88 movs r0, 0x1 movs r1, 0x1 bl CreateRegionMapPlayerIcon movs r1, 0x8 negs r1, r1 movs r0, 0 bl PokedexAreaScreen_UpdateRegionMapVariablesAndVideoRegs b _0813D584 .pool _0813D520: bl sub_813D6D0 b _0813D584 _0813D526: bl sub_813D8A8 b _0813D584 _0813D52C: bl sub_813D8E8 b _0813D584 _0813D532: movs r0, 0x15 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0x10 movs r3, 0 bl BeginNormalPaletteFade b _0813D584 _0813D544: ldr r1, =0x00003f41 movs r0, 0x50 bl SetGpuReg bl sub_813D1C8 movs r0, 0x2 bl ShowBg movs r0, 0x3 bl ShowBg movs r1, 0x80 lsls r1, 5 movs r0, 0 bl SetGpuRegBits b _0813D584 .pool _0813D56C: lsls r0, r4, 2 adds r0, r4 lsls r0, 3 adds r0, r2 ldr r1, =sub_813D5A0 str r1, [r0] movs r1, 0 strh r1, [r0, 0x8] b _0813D594 .pool _0813D584: ldr r0, =gTasks lsls r1, r4, 2 adds r1, r4 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] _0813D594: add sp, 0x4 pop {r4} pop {r0} bx r0 .pool thumb_func_end sub_813D42C thumb_func_start sub_813D5A0 sub_813D5A0: @ 813D5A0 push {r4-r7,lr} sub sp, 0x4 lsls r0, 24 lsrs r5, r0, 24 bl sub_813D25C ldr r1, =gTasks lsls r0, r5, 2 adds r0, r5 lsls r0, 3 adds r6, r0, r1 movs r0, 0x8 ldrsh r1, [r6, r0] cmp r1, 0x1 beq _0813D5F8 cmp r1, 0x1 bgt _0813D5CC cmp r1, 0 beq _0813D5E2 b _0813D5D4 .pool _0813D5CC: cmp r1, 0x2 beq _0813D640 cmp r1, 0x3 beq _0813D652 _0813D5D4: ldr r0, =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 movs r0, 0 strh r0, [r1, 0x8] _0813D5E2: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _0813D6A8 b _0813D698 .pool _0813D5F8: ldr r0, =gMain ldrh r2, [r0, 0x2E] movs r3, 0x2 adds r0, r3, 0 ands r0, r2 cmp r0, 0 beq _0813D614 strh r1, [r6, 0xA] movs r0, 0x3 bl PlaySE b _0813D698 .pool _0813D614: movs r0, 0x10 ands r0, r2 cmp r0, 0 bne _0813D630 movs r0, 0x80 lsls r0, 1 ands r0, r2 cmp r0, 0 beq _0813D6A8 ldr r0, =gSaveBlock2Ptr ldr r0, [r0] ldrb r0, [r0, 0x13] cmp r0, 0x1 bne _0813D6A8 _0813D630: strh r3, [r6, 0xA] movs r0, 0x6D bl PlaySE b _0813D698 .pool _0813D640: movs r0, 0x15 negs r0, r0 movs r1, 0 str r1, [sp] movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade b _0813D698 _0813D652: ldr r0, =gPaletteFade ldrb r1, [r0, 0x7] movs r0, 0x80 ands r0, r1 lsls r0, 24 lsrs r7, r0, 24 cmp r7, 0 bne _0813D6A8 bl sub_813D824 ldr r4, =gUnknown_0203AB7C ldr r0, [r4] movs r1, 0xDD lsls r1, 3 adds r0, r1 ldr r1, [r0] ldrh r0, [r6, 0xA] strb r0, [r1] bl sub_813D6B4 adds r0, r5, 0 bl DestroyTask bl sub_81C4EB4 ldr r0, [r4] bl Free str r7, [r4] b _0813D6A8 .pool _0813D698: ldr r0, =gTasks lsls r1, r5, 2 adds r1, r5 lsls r1, 3 adds r1, r0 ldrh r0, [r1, 0x8] adds r0, 0x1 strh r0, [r1, 0x8] _0813D6A8: add sp, 0x4 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_813D5A0 thumb_func_start sub_813D6B4 sub_813D6B4: @ 813D6B4 push {lr} movs r0, 0x3 movs r1, 0x1 movs r2, 0 bl SetBgAttribute movs r0, 0x3 movs r1, 0x4 movs r2, 0 bl SetBgAttribute pop {r0} bx r0 thumb_func_end sub_813D6B4 thumb_func_start sub_813D6D0 sub_813D6D0: @ 813D6D0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} ldr r0, =gUnknown_085B401C bl LoadSpriteSheet ldr r0, =gUnknown_085B4024 bl LoadSpritePalette ldr r0, =gUnknown_03001204 movs r1, 0 strh r1, [r0] ldr r2, =gUnknown_03001200 strh r1, [r2] ldr r1, =gUnknown_0203AB7C ldr r0, [r1] movs r3, 0x89 lsls r3, 1 adds r0, r3 ldrh r0, [r0] cmp r0, 0 beq _0813D7D8 ldr r5, =gUnknown_03001202 mov r10, r1 adds r7, r2, 0 ldr r0, =gUnknown_030011FC mov r9, r0 ldr r6, =gRegionMapEntries ldr r1, =gUnknown_030011FE mov r8, r1 _0813D710: mov r2, r10 ldr r1, [r2] movs r3, 0 ldrsh r0, [r7, r3] lsls r0, 1 movs r2, 0xC4 lsls r2, 3 adds r1, r2 adds r1, r0 ldrh r0, [r1] strh r0, [r5] movs r3, 0 ldrsh r0, [r5, r3] lsls r0, 3 adds r0, r6 ldrb r1, [r0] adds r1, 0x1 lsls r1, 3 adds r1, 0x4 mov r0, r9 strh r1, [r0] movs r2, 0 ldrsh r0, [r5, r2] lsls r0, 3 adds r0, r6 ldrb r2, [r0, 0x1] lsls r2, 3 adds r2, 0x1C mov r3, r8 strh r2, [r3] movs r3, 0 ldrsh r0, [r5, r3] lsls r0, 3 adds r0, r6 ldrb r0, [r0, 0x2] subs r0, 0x1 lsls r0, 2 adds r1, r0 mov r0, r9 strh r1, [r0] movs r1, 0 ldrsh r0, [r5, r1] lsls r0, 3 adds r0, r6 ldrb r0, [r0, 0x3] subs r0, 0x1 lsls r0, 2 adds r2, r0 mov r3, r8 strh r2, [r3] mov r0, r9 movs r2, 0 ldrsh r1, [r0, r2] movs r0, 0 ldrsh r2, [r3, r0] ldr r0, =gUnknown_085B4034 movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x40 beq _0813D7BE ldr r0, =gSprites lsls r2, r1, 4 adds r2, r1 lsls r2, 2 adds r2, r0 adds r3, r2, 0 adds r3, 0x3E ldrb r0, [r3] movs r1, 0x4 orrs r0, r1 strb r0, [r3] mov r1, r10 ldr r3, [r1] ldr r4, =gUnknown_03001204 ldrh r1, [r4] adds r0, r1, 0x1 strh r0, [r4] lsls r1, 16 asrs r1, 14 movs r0, 0xCC lsls r0, 3 adds r3, r0 adds r3, r1 str r2, [r3] _0813D7BE: ldrh r0, [r7] adds r0, 0x1 strh r0, [r7] movs r2, 0 ldrsh r1, [r7, r2] mov r3, r10 ldr r0, [r3] movs r2, 0x89 lsls r2, 1 adds r0, r2 ldrh r0, [r0] cmp r1, r0 blt _0813D710 _0813D7D8: ldr r0, =gUnknown_0203AB7C ldr r0, [r0] ldr r1, =gUnknown_03001204 ldrh r1, [r1] movs r3, 0xDC lsls r3, 3 adds r0, r3 strh r1, [r0] pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r0} bx r0 .pool thumb_func_end sub_813D6D0 thumb_func_start sub_813D824 sub_813D824: @ 813D824 push {r4,r5,lr} movs r0, 0x2 bl FreeSpriteTilesByTag movs r0, 0x2 bl FreeSpritePaletteByTag movs r4, 0 ldr r1, =gUnknown_0203AB7C ldr r0, [r1] movs r2, 0xDC lsls r2, 3 adds r0, r2 ldrh r0, [r0] cmp r4, r0 bcs _0813D86C adds r5, r1, 0 _0813D846: ldr r0, [r5] lsls r1, r4, 2 movs r2, 0xCC lsls r2, 3 adds r0, r2 adds r0, r1 ldr r0, [r0] bl DestroySprite adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 ldr r0, [r5] movs r1, 0xDC lsls r1, 3 adds r0, r1 ldrh r0, [r0] cmp r4, r0 bcc _0813D846 _0813D86C: movs r0, 0x3 bl FreeSpriteTilesByTag movs r0, 0x3 bl FreeSpritePaletteByTag movs r4, 0 _0813D87A: ldr r0, =gUnknown_0203AB7C ldr r0, [r0] lsls r1, r4, 2 movs r2, 0xFB lsls r2, 4 adds r0, r2 adds r0, r1 ldr r0, [r0] cmp r0, 0 beq _0813D892 bl DestroySprite _0813D892: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x2 bls _0813D87A pop {r4,r5} pop {r0} bx r0 .pool thumb_func_end sub_813D824 thumb_func_start sub_813D8A8 sub_813D8A8: @ 813D8A8 push {lr} sub sp, 0x8 ldr r0, =gUnknown_0203AB7C ldr r1, [r0] ldr r0, =0x00000fbc adds r1, r0 str r1, [sp] ldr r0, =0x00030600 str r0, [sp, 0x4] ldr r0, =gPokedexAreaScreenAreaUnknown_Gfx bl LZ77UnCompWram mov r0, sp bl LoadSpriteSheet ldr r0, =gUnknown_085B40EC bl LoadSpritePalette add sp, 0x8 pop {r0} bx r0 .pool thumb_func_end sub_813D8A8 thumb_func_start sub_813D8E8 sub_813D8E8: @ 813D8E8 push {r4-r6,lr} ldr r1, =gUnknown_0203AB7C ldr r0, [r1] movs r2, 0x88 lsls r2, 1 adds r0, r2 ldr r0, [r0] cmp r0, 0 beq _0813D920 movs r4, 0 adds r5, r1, 0 movs r3, 0xFB lsls r3, 4 movs r2, 0 _0813D904: ldr r0, [r5] lsls r1, r4, 2 adds r0, r3 adds r0, r1 str r2, [r0] adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x2 bls _0813D904 b _0813D9A4 .pool _0813D920: movs r4, 0 ldr r5, =gSprites _0813D924: lsls r1, r4, 21 movs r6, 0xA0 lsls r6, 16 adds r1, r6 asrs r1, 16 ldr r0, =gSpriteTemplate_85B40FC movs r2, 0x8C movs r3, 0 bl CreateSprite lsls r0, 24 lsrs r0, 24 cmp r0, 0x40 beq _0813D988 lsls r3, r0, 4 adds r3, r0 lsls r3, 2 adds r3, r5 ldrh r2, [r3, 0x4] lsls r0, r2, 22 lsrs r0, 22 lsls r1, r4, 4 adds r0, r1 ldr r6, =0x000003ff adds r1, r6, 0 ands r0, r1 ldr r6, =0xfffffc00 adds r1, r6, 0 ands r2, r1 orrs r2, r0 strh r2, [r3, 0x4] ldr r0, =gUnknown_0203AB7C ldr r0, [r0] lsls r1, r4, 2 movs r2, 0xFB lsls r2, 4 adds r0, r2 adds r0, r1 str r3, [r0] b _0813D99A .pool _0813D988: ldr r0, =gUnknown_0203AB7C ldr r1, [r0] lsls r0, r4, 2 movs r6, 0xFB lsls r6, 4 adds r1, r6 adds r1, r0 movs r0, 0 str r0, [r1] _0813D99A: adds r0, r4, 0x1 lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0x2 bls _0813D924 _0813D9A4: pop {r4-r6} pop {r0} bx r0 .pool thumb_func_end sub_813D8E8 .align 2, 0 @ Don't pad with nop.