diff options
-rw-r--r-- | asm/battle_anim_813F0F4.s (renamed from asm/rom_813BA94.s) | 4966 | ||||
-rw-r--r-- | asm/field_region_map.s | 274 | ||||
-rw-r--r-- | asm/intro.s | 4710 | ||||
-rw-r--r-- | ld_script.txt | 4 |
4 files changed, 4987 insertions, 4967 deletions
diff --git a/asm/rom_813BA94.s b/asm/battle_anim_813F0F4.s index 86579db43..5c2c3e8f3 100644 --- a/asm/rom_813BA94.s +++ b/asm/battle_anim_813F0F4.s @@ -6,4972 +6,6 @@ .text - thumb_func_start sub_813CAF4 -sub_813CAF4: @ 813CAF4 - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, _0813CB2C @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r4, r0, r1 - ldrh r0, [r4, 0x26] - adds r0, 0x1 - movs r6, 0 - strh r0, [r4, 0x26] - movs r1, 0x8 - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bne _0813CB18 - b _0813CC28 -_0813CB18: - cmp r0, 0x4 - bgt _0813CB30 - cmp r0, 0x2 - beq _0813CB60 - cmp r0, 0x2 - bgt _0813CBC4 - cmp r0, 0 - beq _0813CB46 - b _0813CC8E - .align 2, 0 -_0813CB2C: .4byte gTasks -_0813CB30: - cmp r0, 0x1E - beq _0813CBEE - cmp r0, 0x1E - bgt _0813CB3E - cmp r0, 0x14 - beq _0813CB8A - b _0813CC8E -_0813CB3E: - cmp r0, 0x28 - bne _0813CB44 - b _0813CC56 -_0813CB44: - b _0813CC8E -_0813CB46: - movs r1, 0x80 - lsls r1, 19 - movs r2, 0xE5 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - ldr r0, _0813CB5C @ =REG_BG2CNT - strh r6, [r0] - movs r0, 0xFF - strh r0, [r4, 0x8] - b _0813CC8E - .align 2, 0 -_0813CB5C: .4byte REG_BG2CNT -_0813CB60: - ldr r0, _0813CBB0 @ =0x0000ffff - str r0, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _0813CBB4 @ =REG_BG2CNT - ldr r2, _0813CBB8 @ =0x00000e07 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xC - movs r2, 0xF5 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - strh r6, [r4, 0xA] - strh r6, [r4, 0xC] - movs r0, 0x14 - strh r0, [r4, 0x8] -_0813CB8A: - ldr r2, _0813CBBC @ =REG_BG2VOFS - ldr r0, _0813CBC0 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xA] - strh r0, [r2] - subs r2, 0x2 - ldrh r0, [r1, 0xC] - strh r0, [r2] - ldrh r0, [r1, 0xA] - adds r0, 0x6 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xC] - subs r0, 0x8 - strh r0, [r1, 0xC] - b _0813CC8E - .align 2, 0 -_0813CBB0: .4byte 0x0000ffff -_0813CBB4: .4byte REG_BG2CNT -_0813CBB8: .4byte 0x00000e07 -_0813CBBC: .4byte REG_BG2VOFS -_0813CBC0: .4byte gTasks -_0813CBC4: - ldr r0, _0813CC14 @ =0x0000ffff - str r0, [sp] - movs r0, 0x1 - movs r1, 0 - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - ldr r1, _0813CC18 @ =REG_BG2CNT - ldr r2, _0813CC1C @ =0x00000e07 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xC - movs r2, 0xF5 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - strh r6, [r4, 0xA] - strh r6, [r4, 0xC] - movs r0, 0x1E - strh r0, [r4, 0x8] -_0813CBEE: - ldr r2, _0813CC20 @ =REG_BG2VOFS - ldr r0, _0813CC24 @ =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r1, r0 - ldrh r0, [r1, 0xA] - strh r0, [r2] - subs r2, 0x2 - ldrh r0, [r1, 0xC] - strh r0, [r2] - ldrh r0, [r1, 0xA] - subs r0, 0x6 - strh r0, [r1, 0xA] - ldrh r0, [r1, 0xC] - adds r0, 0x8 - strh r0, [r1, 0xC] - b _0813CC8E - .align 2, 0 -_0813CC14: .4byte 0x0000ffff -_0813CC18: .4byte REG_BG2CNT -_0813CC1C: .4byte 0x00000e07 -_0813CC20: .4byte REG_BG2VOFS -_0813CC24: .4byte gTasks -_0813CC28: - ldr r0, _0813CC98 @ =0x000037f7 - str r0, [sp] - movs r0, 0x1 - movs r1, 0x5 - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0813CC9C @ =REG_BG2CNT - ldr r2, _0813CCA0 @ =0x00000e07 - adds r0, r2, 0 - strh r0, [r1] - subs r1, 0xC - movs r2, 0xF5 - lsls r2, 6 - adds r0, r2, 0 - strh r0, [r1] - strh r6, [r4, 0xA] - strh r6, [r4, 0xC] - movs r0, 0x8 - strh r0, [r4, 0xE] - movs r0, 0x28 - strh r0, [r4, 0x8] -_0813CC56: - ldr r2, _0813CCA4 @ =REG_BG2VOFS - ldr r1, _0813CCA8 @ =gTasks - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - adds r3, r0, r1 - ldrh r0, [r3, 0xA] - strh r0, [r2] - ldr r1, _0813CCAC @ =REG_BG2HOFS - ldrh r0, [r3, 0xC] - strh r0, [r1] - ldrh r0, [r3, 0xA] - ldrh r2, [r3, 0xE] - subs r0, r2 - strh r0, [r3, 0xA] - ldrh r1, [r3, 0xC] - adds r0, r2, r1 - strh r0, [r3, 0xC] - ldrh r1, [r3, 0x26] - movs r0, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0813CC8E - lsls r0, r2, 16 - cmp r0, 0 - beq _0813CC8E - subs r0, r2, 0x1 - strh r0, [r3, 0xE] -_0813CC8E: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_0813CC98: .4byte 0x000037f7 -_0813CC9C: .4byte REG_BG2CNT -_0813CCA0: .4byte 0x00000e07 -_0813CCA4: .4byte REG_BG2VOFS -_0813CCA8: .4byte gTasks -_0813CCAC: .4byte REG_BG2HOFS - thumb_func_end sub_813CAF4 - - thumb_func_start intro_reset_and_hide_bgs -intro_reset_and_hide_bgs: @ 813CCB0 - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, 0x1C - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - subs r0, 0x6 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x3E - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bx lr - thumb_func_end intro_reset_and_hide_bgs - - thumb_func_start sub_813CCE8 -sub_813CCE8: @ 813CCE8 - push {r4,lr} - lsls r0, 24 - lsrs r3, r0, 24 - ldr r1, _0813CD0C @ =gTasks - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r1 - movs r2, 0x8 - ldrsh r0, [r0, r2] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _0813CD28 - lsls r0, 2 - ldr r1, _0813CD10 @ =_0813CD14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813CD0C: .4byte gTasks -_0813CD10: .4byte _0813CD14 - .align 2, 0 -_0813CD14: - .4byte _0813CD28 - .4byte _0813CD5C - .4byte _0813CD8C - .4byte _0813CDA8 - .4byte _0813CDFC -_0813CD28: - ldr r1, _0813CD54 @ =REG_BLDCNT - ldr r4, _0813CD58 @ =0x00003f50 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0x2 - movs r4, 0x80 - lsls r4, 5 - adds r0, r4, 0 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0 - strh r0, [r1] - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r0, r2 - movs r1, 0x40 - strh r1, [r0, 0xA] - movs r1, 0x1 - strh r1, [r0, 0x8] - b _0813CE26 - .align 2, 0 -_0813CD54: .4byte REG_BLDCNT -_0813CD58: .4byte 0x00003f50 -_0813CD5C: - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r2 - ldrh r1, [r2, 0xA] - movs r3, 0xA - ldrsh r0, [r2, r3] - cmp r0, 0 - beq _0813CD78 - subs r0, r1, 0x1 - strh r0, [r2, 0xA] - movs r4, 0xA - ldrsh r0, [r2, r4] - b _0813CDC2 -_0813CD78: - ldr r1, _0813CD84 @ =REG_BLDALPHA - ldr r0, _0813CD88 @ =gUnknown_08393E64 - ldrh r0, [r0] - strh r0, [r1] - movs r0, 0x80 - b _0813CDEA - .align 2, 0 -_0813CD84: .4byte REG_BLDALPHA -_0813CD88: .4byte gUnknown_08393E64 -_0813CD8C: - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0xA] - movs r3, 0xA - ldrsh r2, [r1, r3] - cmp r2, 0 - bne _0813CE0E - strh r2, [r1, 0xA] - ldrh r0, [r1, 0x8] - adds r0, 0x1 - strh r0, [r1, 0x8] - b _0813CE26 -_0813CDA8: - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r2, r0, r2 - ldrh r1, [r2, 0xA] - movs r4, 0xA - ldrsh r0, [r2, r4] - cmp r0, 0x3D - bgt _0813CDE0 - adds r0, r1, 0x1 - strh r0, [r2, 0xA] - movs r1, 0xA - ldrsh r0, [r2, r1] -_0813CDC2: - lsrs r1, r0, 31 - adds r0, r1 - movs r2, 0xFF - lsls r2, 1 - ldr r3, _0813CDD8 @ =REG_BLDALPHA - ldr r1, _0813CDDC @ =gUnknown_08393E64 - ands r0, r2 - adds r0, r1 - ldrh r0, [r0] - strh r0, [r3] - b _0813CE26 - .align 2, 0 -_0813CDD8: .4byte REG_BLDALPHA -_0813CDDC: .4byte gUnknown_08393E64 -_0813CDE0: - ldr r1, _0813CDF4 @ =REG_BLDALPHA - ldr r0, _0813CDF8 @ =gUnknown_08393E64 - ldrh r0, [r0, 0x3E] - strh r0, [r1] - movs r0, 0x10 -_0813CDEA: - strh r0, [r2, 0xA] - ldrh r0, [r2, 0x8] - adds r0, 0x1 - strh r0, [r2, 0x8] - b _0813CE26 - .align 2, 0 -_0813CDF4: .4byte REG_BLDALPHA -_0813CDF8: .4byte gUnknown_08393E64 -_0813CDFC: - lsls r0, r3, 2 - adds r0, r3 - lsls r0, 3 - adds r1, r0, r2 - ldrh r0, [r1, 0xA] - movs r4, 0xA - ldrsh r2, [r1, r4] - cmp r2, 0 - beq _0813CE14 -_0813CE0E: - subs r0, 0x1 - strh r0, [r1, 0xA] - b _0813CE26 -_0813CE14: - ldr r0, _0813CE2C @ =REG_BLDCNT - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, r3, 0 - bl DestroyTask -_0813CE26: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813CE2C: .4byte REG_BLDCNT - thumb_func_end sub_813CCE8 - - thumb_func_start sub_813CE30 -sub_813CE30: @ 813CE30 - push {r4,lr} - sub sp, 0x24 - lsls r2, 16 - lsrs r2, 16 - movs r4, 0x80 - lsls r4, 8 - str r4, [sp] - str r4, [sp, 0x4] - mov r4, sp - strh r0, [r4, 0x8] - mov r0, sp - strh r1, [r0, 0xA] - strh r2, [r0, 0xC] - strh r2, [r0, 0xE] - strh r3, [r0, 0x10] - add r4, sp, 0x14 - adds r1, r4, 0 - movs r2, 0x1 - bl BgAffineSet - ldr r1, _0813CE84 @ =REG_BG2PA - ldrh r0, [r4] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r4, 0x2] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r4, 0x4] - strh r0, [r1] - adds r1, 0x2 - ldrh r0, [r4, 0x6] - strh r0, [r1] - adds r1, 0x2 - ldr r0, [r4, 0x8] - str r0, [r1] - adds r1, 0x4 - ldr r0, [r4, 0xC] - str r0, [r1] - add sp, 0x24 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813CE84: .4byte REG_BG2PA - thumb_func_end sub_813CE30 - - thumb_func_start sub_813CE88 -sub_813CE88: @ 813CE88 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - ldr r4, [sp, 0x30] - lsls r0, 16 - lsrs r7, r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - lsls r3, 16 - lsrs r3, 16 - mov r8, r3 - lsls r4, 24 - lsrs r6, r4, 24 - cmp r6, 0 - beq _0813CEF0 - lsls r0, r7, 3 - ldr r1, _0813CEE4 @ =gMonFrontPicTable - adds r0, r1 - ldr r1, _0813CEE8 @ =gMonFrontPicCoords - lsls r2, r7, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r5, _0813CEEC @ =gUnknown_0840B5A0 - mov r6, r8 - lsls r4, r6, 2 - adds r4, r5 - ldr r4, [r4] - str r4, [sp] - str r7, [sp, 0x4] - movs r4, 0 - str r4, [sp, 0x8] - movs r4, 0x1 - str r4, [sp, 0xC] - bl sub_800D378 - b _0813CF1C - .align 2, 0 -_0813CEE4: .4byte gMonFrontPicTable -_0813CEE8: .4byte gMonFrontPicCoords -_0813CEEC: .4byte gUnknown_0840B5A0 -_0813CEF0: - lsls r0, r7, 3 - ldr r1, _0813CF90 @ =gMonBackPicTable - adds r0, r1 - ldr r1, _0813CF94 @ =gMonBackPicCoords - lsls r2, r7, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r4, _0813CF98 @ =gUnknown_0840B5A0 - mov r12, r4 - mov r5, r8 - lsls r4, r5, 2 - add r4, r12 - ldr r4, [r4] - str r4, [sp] - str r7, [sp, 0x4] - str r6, [sp, 0x8] - str r6, [sp, 0xC] - bl sub_800D378 -_0813CF1C: - ldr r2, _0813CF9C @ =0x0000ffff - adds r0, r7, 0 - movs r1, 0 - bl species_and_otid_get_pal - mov r6, r8 - lsls r4, r6, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - lsls r1, 16 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - lsls r1, r6, 24 - lsrs r1, 24 - mov r0, r8 - bl sub_8143648 - ldr r0, _0813CFA0 @ =gUnknown_02024E8C - mov r3, r9 - lsls r1, r3, 16 - asrs r1, 16 - mov r5, r10 - lsls r2, r5, 16 - asrs r2, 16 - mov r3, r8 - adds r3, 0x1 - lsls r3, 26 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813CFA4 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r4 - movs r3, 0xD - negs r3, r3 - ands r1, r3 - movs r3, 0x4 - orrs r1, r3 - strb r1, [r2, 0x5] - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0813CF90: .4byte gMonBackPicTable -_0813CF94: .4byte gMonBackPicCoords -_0813CF98: .4byte gUnknown_0840B5A0 -_0813CF9C: .4byte 0x0000ffff -_0813CFA0: .4byte gUnknown_02024E8C -_0813CFA4: .4byte gSprites - thumb_func_end sub_813CE88 - - thumb_func_start sub_813CFA8 -sub_813CFA8: @ 813CFA8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - mov r9, r1 - mov r10, r2 - adds r6, r3, 0 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r2, 16 - lsrs r2, 16 - mov r10, r2 - lsls r6, 16 - lsrs r6, 16 - lsls r7, r0, 3 - ldr r1, _0813D068 @ =gTrainerBackPicTable - mov r8, r1 - add r8, r7 - ldr r1, _0813D06C @ =gTrainerBackPicCoords - lsls r2, r0, 2 - adds r2, r1 - ldrb r1, [r2] - ldrb r2, [r2, 0x1] - movs r3, 0x80 - lsls r3, 18 - ldr r5, _0813D070 @ =gUnknown_0840B5A0 - lsls r4, r6, 2 - adds r4, r5 - ldr r4, [r4] - str r4, [sp] - str r0, [sp, 0x4] - mov r0, r8 - bl DecompressPicFromTable_2 - ldr r0, _0813D074 @ =gTrainerBackPicPaletteTable - adds r0, r7, r0 - ldr r0, [r0] - lsls r4, r6, 4 - movs r2, 0x80 - lsls r2, 1 - adds r1, r4, r2 - lsls r1, 16 - lsrs r1, 16 - movs r2, 0x20 - bl LoadCompressedPalette - lsls r1, r6, 24 - lsrs r1, 24 - adds r0, r6, 0 - bl sub_8143680 - ldr r0, _0813D078 @ =gUnknown_02024E8C - ldr r1, _0813D07C @ =gUnknown_0840B064 - str r1, [r0, 0x8] - mov r1, r9 - lsls r1, 16 - asrs r1, 16 - mov r9, r1 - mov r2, r10 - lsls r2, 16 - asrs r2, 16 - mov r10, r2 - movs r3, 0x1 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - ldr r1, _0813D080 @ =gSprites - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r1 - ldrb r3, [r2, 0x5] - movs r1, 0xF - ands r1, r3 - orrs r1, r4 - movs r3, 0xD - negs r3, r3 - ands r1, r3 - movs r3, 0x4 - orrs r1, r3 - strb r1, [r2, 0x5] - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0813D068: .4byte gTrainerBackPicTable -_0813D06C: .4byte gTrainerBackPicCoords -_0813D070: .4byte gUnknown_0840B5A0 -_0813D074: .4byte gTrainerBackPicPaletteTable -_0813D078: .4byte gUnknown_02024E8C -_0813D07C: .4byte gUnknown_0840B064 -_0813D080: .4byte gSprites - thumb_func_end sub_813CFA8 - - thumb_func_start sub_813D084 -sub_813D084: @ 813D084 - push {lr} - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0813D0A0 - cmp r0, 0x1 - ble _0813D096 - cmp r0, 0x2 - beq _0813D0A8 -_0813D096: - ldr r2, _0813D09C @ =0x00003ff6 - b _0813D0AA - .align 2, 0 -_0813D09C: .4byte 0x00003ff6 -_0813D0A0: - ldr r2, _0813D0A4 @ =0x000031df - b _0813D0AA - .align 2, 0 -_0813D0A4: .4byte 0x000031df -_0813D0A8: - ldr r2, _0813D0C0 @ =0x0000518c -_0813D0AA: - ldr r0, _0813D0C4 @ =gPlttBufferUnfaded - movs r1, 0xF1 - lsls r1, 1 - adds r0, r1 - strh r2, [r0] - ldr r0, _0813D0C8 @ =gPlttBufferFaded - adds r0, r1 - strh r2, [r0] - pop {r0} - bx r0 - .align 2, 0 -_0813D0C0: .4byte 0x0000518c -_0813D0C4: .4byte gPlttBufferUnfaded -_0813D0C8: .4byte gPlttBufferFaded - thumb_func_end sub_813D084 - - thumb_func_start sub_813D0CC -sub_813D0CC: @ 813D0CC - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0xBF - ble _0813D148 - ldrh r1, [r4, 0x34] - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0813D0EA - subs r0, r1, 0x1 - strh r0, [r4, 0x34] - b _0813D14E -_0813D0EA: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x32] - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - movs r0, 0x32 - ldrsh r1, [r4, r0] - lsls r0, r1, 1 - adds r0, r1 - lsls r0, 5 - subs r0, r1 - movs r1, 0x64 - bl __divsi3 - strh r0, [r4, 0x32] - movs r2, 0x32 - ldrsh r1, [r4, r2] - adds r0, r1, 0 - subs r0, 0xC0 - cmp r0, 0 - bge _0813D12C - adds r0, 0x7F -_0813D12C: - asrs r0, 7 - adds r0, 0x9 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xF - bls _0813D13A - movs r0, 0xF -_0813D13A: - lsls r2, r0, 4 - ldrb r1, [r4, 0x5] - movs r0, 0xF - ands r0, r1 - orrs r0, r2 - strb r0, [r4, 0x5] - b _0813D14E -_0813D148: - adds r0, r4, 0 - bl DestroySprite -_0813D14E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813D0CC - - thumb_func_start sub_813D158 -sub_813D158: @ 813D158 - push {r4,lr} - adds r4, r0, 0 - ldr r2, _0813D1CC @ =gSprites - movs r1, 0x3C - ldrsh r0, [r4, r1] - lsls r1, r0, 4 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - movs r3, 0x3C - ldrsh r0, [r1, r3] - cmp r0, 0 - beq _0813D1D4 - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r0, r3 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAnim - movs r0, 0x80 - lsls r0, 3 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x30] - movs r0, 0x3 - ands r0, r1 - lsls r0, 3 - strh r0, [r4, 0x34] - ldr r0, _0813D1D0 @ =sub_813D0CC - str r0, [r4, 0x1C] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x2 - bl CalcCenterToCornerVec - b _0813D200 - .align 2, 0 -_0813D1CC: .4byte gSprites -_0813D1D0: .4byte sub_813D0CC -_0813D1D4: - ldrh r0, [r1, 0x24] - strh r0, [r4, 0x24] - movs r0, 0x3C - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x26] - strh r0, [r4, 0x26] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x20] - strh r0, [r4, 0x20] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - ldrh r0, [r0, 0x22] - strh r0, [r4, 0x22] -_0813D200: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813D158 - - thumb_func_start sub_813D208 -sub_813D208: @ 813D208 - push {lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0 - beq _0813D218 - ldr r0, _0813D21C @ =sub_813D220 - str r0, [r1, 0x1C] -_0813D218: - pop {r0} - bx r0 - .align 2, 0 -_0813D21C: .4byte sub_813D220 - thumb_func_end sub_813D208 - - thumb_func_start sub_813D220 -sub_813D220: @ 813D220 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r7, r0, 0 - ldrh r4, [r7, 0x20] - movs r1, 0x20 - ldrsh r0, [r7, r1] - cmp r0, 0x74 - bgt _0813D260 - ldrh r0, [r7, 0x26] - ldrh r1, [r7, 0x22] - adds r0, r1 - movs r1, 0 - strh r0, [r7, 0x22] - strh r1, [r7, 0x26] - adds r0, r4, 0x4 - strh r0, [r7, 0x20] - ldr r0, _0813D258 @ =0x0000fffc - strh r0, [r7, 0x24] - movs r0, 0x80 - strh r0, [r7, 0x36] - ldr r0, _0813D25C @ =sub_813D368 - str r0, [r7, 0x1C] - b _0813D352 - .align 2, 0 -_0813D258: .4byte 0x0000fffc -_0813D25C: .4byte sub_813D368 -_0813D260: - ldrh r1, [r7, 0x36] - ldr r5, _0813D364 @ =gSineTable - lsls r0, r1, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r2, [r0] - adds r0, r1, 0 - adds r0, 0x40 - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r3, [r0] - adds r1, 0x2 - strh r1, [r7, 0x36] - lsls r2, 16 - asrs r0, r2, 16 - cmp r0, 0 - bge _0813D286 - adds r0, 0x1F -_0813D286: - asrs r0, 5 - strh r0, [r7, 0x26] - subs r0, r4, 0x1 - strh r0, [r7, 0x20] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813D29C - ldrh r0, [r7, 0x22] - adds r0, 0x1 - strh r0, [r7, 0x22] -_0813D29C: - lsls r0, r3, 16 - asrs r0, 16 - negs r0, r0 - cmp r0, 0 - bge _0813D2A8 - adds r0, 0xF -_0813D2A8: - lsls r1, r0, 12 - lsrs r1, 16 - ldrh r4, [r7, 0x32] - ldrh r3, [r7, 0x34] - adds r0, r1, 0 - subs r0, 0x10 - lsls r0, 24 - lsrs r0, 23 - adds r0, r5 - ldrh r2, [r0] - adds r1, 0x30 - lsls r1, 24 - lsrs r1, 23 - adds r1, r5 - movs r0, 0 - ldrsh r1, [r1, r0] - adds r0, r1, 0 - muls r0, r4 - cmp r0, 0 - bge _0813D2D2 - adds r0, 0xFF -_0813D2D2: - lsls r0, 8 - lsrs r0, 16 - mov r8, r0 - lsls r0, r2, 16 - asrs r2, r0, 16 - negs r0, r2 - muls r0, r3 - cmp r0, 0 - bge _0813D2E6 - adds r0, 0xFF -_0813D2E6: - lsls r0, 8 - lsrs r0, 16 - mov r10, r0 - adds r0, r2, 0 - muls r0, r4 - cmp r0, 0 - bge _0813D2F6 - adds r0, 0xFF -_0813D2F6: - lsls r0, 8 - lsrs r5, r0, 16 - adds r0, r1, 0 - muls r0, r3 - cmp r0, 0 - bge _0813D304 - adds r0, 0xFF -_0813D304: - lsls r6, r0, 8 - lsrs r6, 16 - ldrh r0, [r7, 0x30] - lsls r0, 24 - lsrs r0, 24 - str r3, [sp] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldrh r0, [r7, 0x30] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - mov r9, r5 - mov r1, r10 - lsls r5, r1, 16 - lsrs r3, r5, 16 - lsls r4, r6, 16 - str r6, [sp] - mov r1, r8 - mov r2, r9 - bl SetOamMatrix - ldrh r0, [r7, 0x30] - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - lsls r5, 1 - lsrs r5, 16 - lsls r4, 1 - lsrs r4, 16 - str r4, [sp] - mov r1, r8 - mov r2, r9 - adds r3, r5, 0 - bl SetOamMatrix -_0813D352: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813D364: .4byte gSineTable - thumb_func_end sub_813D220 - - thumb_func_start sub_813D368 -sub_813D368: @ 813D368 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x3A] - adds r1, 0x40 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldrh r0, [r4, 0x30] - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x3A] - adds r1, 0x40 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldrh r0, [r4, 0x30] - adds r0, 0x2 - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x3A] - adds r1, 0x40 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldrh r1, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r0, 0x40 - beq _0813D400 - adds r0, r1, 0 - subs r0, 0x8 - strh r0, [r4, 0x36] - ldrh r0, [r4, 0x36] - adds r1, r0, 0 - ldr r2, _0813D3FC @ =gSineTable - adds r0, 0x40 - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r3, 0 - ldrsh r0, [r0, r3] - cmp r0, 0 - bge _0813D3E2 - adds r0, 0x3F -_0813D3E2: - asrs r0, 6 - strh r0, [r4, 0x24] - lsls r0, r1, 24 - lsrs r0, 23 - adds r0, r2 - movs r1, 0 - ldrsh r0, [r0, r1] - cmp r0, 0 - bge _0813D3F6 - adds r0, 0x3F -_0813D3F6: - asrs r0, 6 - strh r0, [r4, 0x26] - b _0813D408 - .align 2, 0 -_0813D3FC: .4byte gSineTable -_0813D400: - movs r0, 0 - strh r0, [r4, 0x36] - ldr r0, _0813D410 @ =sub_813D414 - str r0, [r4, 0x1C] -_0813D408: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D410: .4byte sub_813D414 - thumb_func_end sub_813D368 - - thumb_func_start sub_813D414 -sub_813D414: @ 813D414 - push {r4,lr} - adds r1, r0, 0 - movs r2, 0x2E - ldrsh r0, [r1, r2] - cmp r0, 0x2 - beq _0813D474 - ldrh r0, [r1, 0x36] - adds r0, 0x8 - strh r0, [r1, 0x36] - ldr r3, _0813D470 @ =gSineTable - lsls r0, 24 - lsrs r0, 23 - adds r0, r3 - movs r4, 0 - ldrsh r0, [r0, r4] - cmp r0, 0 - bge _0813D438 - adds r0, 0xF -_0813D438: - asrs r0, 4 - adds r0, 0x40 - lsls r0, 16 - lsrs r2, r0, 16 - adds r0, r2, 0 - adds r0, 0x40 - lsls r0, 24 - lsrs r0, 23 - adds r0, r3 - movs r4, 0 - ldrsh r0, [r0, r4] - cmp r0, 0 - bge _0813D454 - adds r0, 0x3F -_0813D454: - asrs r0, 6 - strh r0, [r1, 0x24] - lsls r0, r2, 24 - lsrs r0, 23 - adds r0, r3 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _0813D468 - adds r0, 0x3F -_0813D468: - asrs r0, 6 - strh r0, [r1, 0x26] - b _0813D478 - .align 2, 0 -_0813D470: .4byte gSineTable -_0813D474: - ldr r0, _0813D480 @ =sub_813D484 - str r0, [r1, 0x1C] -_0813D478: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D480: .4byte sub_813D484 - thumb_func_end sub_813D414 - - thumb_func_start sub_813D484 -sub_813D484: @ 813D484 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x22] - movs r0, 0x22 - ldrsh r1, [r4, r0] - movs r3, 0x38 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _0813D49C - adds r0, r2, 0x4 - strh r0, [r4, 0x22] - b _0813D4F8 -_0813D49C: - movs r0, 0x1 - strh r0, [r4, 0x3C] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r0, r3 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAnim - movs r0, 0x80 - lsls r0, 3 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x30] - movs r0, 0x3 - ands r0, r1 - lsls r0, 3 - strh r0, [r4, 0x34] - ldr r0, _0813D500 @ =sub_813D0CC - str r0, [r4, 0x1C] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x2 - bl CalcCenterToCornerVec -_0813D4F8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D500: .4byte sub_813D0CC - thumb_func_end sub_813D484 - - thumb_func_start sub_813D504 -sub_813D504: @ 813D504 - push {r4,lr} - adds r4, r0, 0 - ldrh r2, [r4, 0x22] - movs r0, 0x22 - ldrsh r1, [r4, r0] - movs r3, 0x38 - ldrsh r0, [r4, r3] - cmp r1, r0 - bge _0813D51C - adds r0, r2, 0x4 - strh r0, [r4, 0x22] - b _0813D578 -_0813D51C: - movs r0, 0x1 - strh r0, [r4, 0x3C] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r4, 0x24] - ldrh r1, [r4, 0x20] - adds r0, r1 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x26] - ldrh r3, [r4, 0x22] - adds r0, r3 - strh r0, [r4, 0x22] - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAnim - movs r0, 0x80 - lsls r0, 3 - strh r0, [r4, 0x32] - ldrh r1, [r4, 0x30] - movs r0, 0x3 - ands r0, r1 - lsls r0, 3 - strh r0, [r4, 0x34] - ldr r0, _0813D580 @ =sub_813D0CC - str r0, [r4, 0x1C] - ldrb r1, [r4, 0x1] - movs r0, 0x3F - ands r0, r1 - movs r1, 0x40 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r0, [r4, 0x3] - movs r1, 0xC0 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x2 - bl CalcCenterToCornerVec -_0813D578: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D580: .4byte sub_813D0CC - thumb_func_end sub_813D504 - - thumb_func_start sub_813D584 -sub_813D584: @ 813D584 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - adds r4, r0, 0 - adds r5, r1, 0 - ldr r6, [sp, 0x34] - ldr r0, [sp, 0x38] - mov r8, r0 - lsls r4, 16 - lsls r5, 16 - lsls r2, 16 - lsrs r2, 16 - str r2, [sp, 0x8] - lsls r3, 16 - lsrs r3, 16 - str r3, [sp, 0xC] - lsls r6, 16 - lsrs r6, 16 - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - ldr r0, _0813D640 @ =gSpriteTemplate_840AE20 - lsrs r2, r4, 16 - mov r10, r2 - asrs r4, 16 - lsrs r1, r5, 16 - str r1, [sp, 0x4] - asrs r5, 16 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r2, _0813D644 @ =gSprites - mov r9, r2 - lsls r0, r7, 4 - adds r0, r7 - lsls r5, r0, 2 - adds r4, r5, r2 - movs r0, 0 - strh r0, [r4, 0x2E] - strh r0, [r4, 0x3C] - mov r0, sp - ldrh r0, [r0, 0xC] - strh r0, [r4, 0x30] - mov r1, sp - ldrh r1, [r1, 0x8] - strh r1, [r4, 0x32] - mov r2, sp - ldrh r2, [r2, 0x8] - strh r2, [r4, 0x34] - strh r6, [r4, 0x38] - mov r0, sp - ldrh r0, [r0, 0x8] - strh r0, [r4, 0x3A] - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r0, 0x1F - ldr r1, [sp, 0xC] - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl CalcCenterToCornerVec - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnim - mov r1, r8 - cmp r1, 0 - bne _0813D64C - mov r0, r9 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _0813D648 @ =sub_813D208 - b _0813D654 - .align 2, 0 -_0813D640: .4byte gSpriteTemplate_840AE20 -_0813D644: .4byte gSprites -_0813D648: .4byte sub_813D208 -_0813D64C: - mov r0, r9 - adds r0, 0x1C - adds r0, r5, r0 - ldr r1, _0813D774 @ =sub_813D504 -_0813D654: - str r1, [r0] - str r7, [sp, 0x10] - mov r2, r10 - lsls r2, 16 - asrs r2, 16 - mov r10, r2 - ldr r0, [sp, 0x4] - lsls r0, 16 - asrs r0, 16 - mov r8, r0 - ldr r0, _0813D778 @ =gSpriteTemplate_840AE20 - mov r1, r10 - mov r2, r8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - ldr r5, _0813D77C @ =gSprites - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - adds r0, r4, r5 - mov r1, sp - ldrh r1, [r1, 0x10] - strh r1, [r0, 0x3C] - ldr r2, [sp, 0xC] - adds r2, 0x1 - mov r9, r2 - strh r2, [r0, 0x30] - ldrb r1, [r0, 0x1] - movs r2, 0x3 - orrs r1, r2 - strb r1, [r0, 0x1] - mov r2, r9 - movs r1, 0x1F - ands r2, r1 - lsls r2, 1 - ldrb r3, [r0, 0x3] - movs r6, 0x3F - negs r6, r6 - adds r1, r6, 0 - ands r1, r3 - orrs r1, r2 - strb r1, [r0, 0x3] - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl CalcCenterToCornerVec - ldr r2, _0813D780 @ =gSprites + 0x1C - adds r4, r2 - ldr r0, _0813D784 @ =sub_813D158 - str r0, [r4] - ldr r0, _0813D778 @ =gSpriteTemplate_840AE20 - mov r1, r10 - mov r2, r8 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r7, r0, 24 - lsls r4, r7, 4 - adds r4, r7 - lsls r4, 2 - adds r5, r4, r5 - mov r1, sp - ldrh r1, [r1, 0x10] - strh r1, [r5, 0x3C] - ldr r2, [sp, 0xC] - adds r2, 0x2 - mov r8, r2 - strh r2, [r5, 0x30] - adds r0, r5, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldrb r0, [r5, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r5, 0x1] - mov r0, r8 - movs r2, 0x1F - ands r0, r2 - lsls r0, 1 - ldrb r1, [r5, 0x3] - ands r6, r1 - orrs r6, r0 - strb r6, [r5, 0x3] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x2 - movs r3, 0x2 - bl CalcCenterToCornerVec - ldr r0, _0813D780 @ =gSprites + 0x1C - adds r4, r0 - ldr r1, _0813D784 @ =sub_813D158 - str r1, [r4] - ldr r2, [sp, 0xC] - lsls r0, r2, 24 - lsrs r0, 24 - ldr r5, [sp, 0x8] - adds r5, 0x20 - lsls r4, r5, 16 - lsrs r4, 16 - str r4, [sp] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - mov r0, r9 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - str r4, [sp] - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - mov r1, r8 - lsls r1, 24 - lsrs r1, 24 - mov r8, r1 - lsls r5, 17 - lsrs r5, 16 - str r5, [sp] - mov r0, r8 - adds r1, r4, 0 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - ldr r0, [sp, 0x10] - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0813D774: .4byte sub_813D504 -_0813D778: .4byte gSpriteTemplate_840AE20 -_0813D77C: .4byte gSprites -_0813D780: .4byte gSprites + 0x1C -_0813D784: .4byte sub_813D158 - thumb_func_end sub_813D584 - - thumb_func_start sub_813D788 -sub_813D788: @ 813D788 - push {r4,r5,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _0813D830 - lsls r0, 2 - ldr r1, _0813D7A0 @ =_0813D7A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813D7A0: .4byte _0813D7A4 - .align 2, 0 -_0813D7A4: - .4byte _0813D7B8 - .4byte _0813D7C6 - .4byte _0813D7E4 - .4byte _0813D80C - .4byte _0813D816 -_0813D7B8: - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnimIfDifferent - ldrh r0, [r4, 0x20] - subs r0, 0x1 - b _0813D82E -_0813D7C6: - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnimIfDifferent - ldr r0, _0813D7E0 @ =gIntroFrameCounter - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0813D87A - ldrh r0, [r4, 0x20] - adds r0, 0x1 - b _0813D82E - .align 2, 0 -_0813D7E0: .4byte gIntroFrameCounter -_0813D7E4: - adds r0, r4, 0 - movs r1, 0x2 - bl StartSpriteAnimIfDifferent - ldrh r2, [r4, 0x20] - movs r1, 0x20 - ldrsh r0, [r4, r1] - cmp r0, 0x78 - ble _0813D802 - ldr r0, _0813D808 @ =gIntroFrameCounter - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - beq _0813D83C -_0813D802: - adds r0, r2, 0x1 - b _0813D82E - .align 2, 0 -_0813D808: .4byte gIntroFrameCounter -_0813D80C: - adds r0, r4, 0 - movs r1, 0x3 - bl StartSpriteAnimIfDifferent - b _0813D830 -_0813D816: - adds r0, r4, 0 - movs r1, 0 - bl StartSpriteAnimIfDifferent - ldrh r2, [r4, 0x20] - movs r0, 0x20 - ldrsh r1, [r4, r0] - movs r0, 0x20 - negs r0, r0 - cmp r1, r0 - ble _0813D830 - subs r0, r2, 0x2 -_0813D82E: - strh r0, [r4, 0x20] -_0813D830: - ldr r0, _0813D84C @ =gIntroFrameCounter - ldr r0, [r0] - movs r1, 0x7 - ands r0, r1 - cmp r0, 0 - bne _0813D87A -_0813D83C: - movs r1, 0x26 - ldrsh r5, [r4, r1] - cmp r5, 0 - beq _0813D850 - movs r0, 0 - strh r0, [r4, 0x26] - b _0813D87A - .align 2, 0 -_0813D84C: .4byte gIntroFrameCounter -_0813D850: - bl Random - movs r1, 0x3 - ands r1, r0 - cmp r1, 0x1 - beq _0813D878 - cmp r1, 0x1 - bgt _0813D866 - cmp r1, 0 - beq _0813D86E - b _0813D87A -_0813D866: - cmp r1, 0x3 - bgt _0813D87A - strh r5, [r4, 0x26] - b _0813D87A -_0813D86E: - ldr r0, _0813D874 @ =0x0000ffff - strh r0, [r4, 0x26] - b _0813D87A - .align 2, 0 -_0813D874: .4byte 0x0000ffff -_0813D878: - strh r1, [r4, 0x26] -_0813D87A: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_813D788 - - thumb_func_start sub_813D880 -sub_813D880: @ 813D880 - push {r4,lr} - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0813D89A - cmp r0, 0x1 - ble _0813D8E2 - cmp r0, 0x2 - beq _0813D8BA - cmp r0, 0x3 - beq _0813D8D4 - b _0813D8E2 -_0813D89A: - movs r2, 0x24 - ldrsh r0, [r4, r2] - movs r2, 0x20 - ldrsh r1, [r4, r2] - adds r0, r1 - ldr r1, _0813D8B0 @ =0x0000012f - cmp r0, r1 - bgt _0813D8B4 - ldrh r0, [r4, 0x24] - adds r0, 0x8 - b _0813D8E0 - .align 2, 0 -_0813D8B0: .4byte 0x0000012f -_0813D8B4: - movs r0, 0x2 - strh r0, [r4, 0x2E] - b _0813D8E2 -_0813D8BA: - movs r1, 0x24 - ldrsh r0, [r4, r1] - movs r2, 0x20 - ldrsh r1, [r4, r2] - adds r0, r1 - cmp r0, 0x78 - ble _0813D8CE - ldrh r0, [r4, 0x24] - subs r0, 0x1 - b _0813D8E0 -_0813D8CE: - movs r0, 0x3 - strh r0, [r4, 0x2E] - b _0813D8E2 -_0813D8D4: - ldrh r1, [r4, 0x24] - movs r2, 0x24 - ldrsh r0, [r4, r2] - cmp r0, 0 - ble _0813D8E2 - subs r0, r1, 0x2 -_0813D8E0: - strh r0, [r4, 0x24] -_0813D8E2: - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x8 - bl Sin - ldr r1, _0813D904 @ =gUnknown_0203935A - ldrh r1, [r1] - subs r0, r1 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x30] - adds r0, 0x4 - strh r0, [r4, 0x30] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813D904: .4byte gUnknown_0203935A - thumb_func_end sub_813D880 - - thumb_func_start sub_813D908 -sub_813D908: @ 813D908 - push {lr} - adds r3, r0, 0 - ldr r2, _0813D930 @ =gTasks - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - adds r0, r2 - movs r1, 0x8 - ldrsh r0, [r0, r1] - cmp r0, 0 - bne _0813D934 - adds r0, r3, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - orrs r1, r2 - strb r1, [r0] - b _0813D94E - .align 2, 0 -_0813D930: .4byte gTasks -_0813D934: - cmp r0, 0x4 - beq _0813D948 - adds r2, r3, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - b _0813D94E -_0813D948: - adds r0, r3, 0 - bl DestroySprite -_0813D94E: - pop {r0} - bx r0 - thumb_func_end sub_813D908 - - thumb_func_start sub_813D954 -sub_813D954: @ 813D954 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r2, 24 - lsrs r2, 24 - mov r8, r2 - movs r5, 0 - ldr r7, _0813DA48 @ =gUnknown_0840AF50 - lsls r0, 16 - mov r9, r0 - lsls r0, r6, 16 - str r0, [sp, 0x4] - mov r1, r9 - asrs r1, 16 - str r1, [sp] -_0813D97C: - lsls r4, r5, 2 - adds r0, r7, 0x2 - adds r0, r4, r0 - ldrh r1, [r0] - ldr r2, [sp] - adds r1, r2, r1 - lsls r1, 16 - asrs r1, 16 - lsls r2, r6, 16 - asrs r3, r2, 16 - mov r10, r3 - ldr r0, _0813DA4C @ =0xfffc0000 - adds r2, r0 - ldr r0, _0813DA50 @ =gSpriteTemplate_840AF94 - asrs r2, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _0813DA54 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - mov r1, r8 - strh r1, [r0, 0x2E] - adds r4, r7 - ldrb r1, [r4] - bl StartSpriteAnim - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x8 - bls _0813D97C - movs r5, 0 - ldr r7, _0813DA58 @ =gUnknown_0840AF74 - mov r0, r10 - adds r0, 0xC - lsls r0, 16 - mov r10, r0 -_0813D9D0: - lsls r4, r5, 2 - adds r0, r7, 0x2 - adds r0, r4, r0 - mov r2, r9 - asrs r1, r2, 16 - ldrh r0, [r0] - adds r1, r0 - lsls r1, 16 - asrs r1, 16 - ldr r0, _0813DA5C @ =gSpriteTemplate_840AFAC - mov r3, r10 - asrs r2, r3, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - ldr r6, _0813DA54 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r6 - mov r1, r8 - strh r1, [r0, 0x2E] - adds r4, r7 - ldrb r1, [r4] - bl StartSpriteAnim - adds r0, r5, 0x1 - lsls r0, 16 - lsrs r5, r0, 16 - cmp r5, 0x7 - bls _0813D9D0 - ldr r0, _0813DA60 @ =gSpriteTemplate_840AFC4 - ldr r3, [sp, 0x4] - ldr r1, _0813DA4C @ =0xfffc0000 - adds r2, r3, r1 - asrs r2, 16 - movs r1, 0x78 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r6 - mov r3, r8 - strh r3, [r0, 0x2E] - adds r0, r2, 0 - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0813DA48: .4byte gUnknown_0840AF50 -_0813DA4C: .4byte 0xfffc0000 -_0813DA50: .4byte gSpriteTemplate_840AF94 -_0813DA54: .4byte gSprites -_0813DA58: .4byte gUnknown_0840AF74 -_0813DA5C: .4byte gSpriteTemplate_840AFAC -_0813DA60: .4byte gSpriteTemplate_840AFC4 - thumb_func_end sub_813D954 - - thumb_func_start sub_813DA64 -sub_813DA64: @ 813DA64 - push {r4-r6,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813DA7C - cmp r0, 0x1 - beq _0813DAC0 -_0813DA7C: - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0x1 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - movs r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x80 - strh r0, [r4, 0x30] - ldr r0, _0813DABC @ =0x0000ffe8 - strh r0, [r4, 0x32] - movs r0, 0 - b _0813DB92 - .align 2, 0 -_0813DABC: .4byte 0x0000ffe8 -_0813DAC0: - ldrh r1, [r4, 0x34] - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0x4F - bgt _0813DAF8 - lsls r0, r1, 24 - lsrs r0, 24 - movs r1, 0x78 - bl Sin - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x34] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x8C - bl Sin - negs r0, r0 - strh r0, [r4, 0x24] - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x40 - ble _0813DAF8 - ldrb r0, [r4, 0x5] - movs r1, 0xC - orrs r0, r1 - strb r0, [r4, 0x5] -_0813DAF8: - ldr r2, _0813DB60 @ =gSineTable - ldrh r1, [r4, 0x32] - lsls r0, r1, 24 - lsrs r0, 23 - adds r0, r2 - ldrh r3, [r0] - adds r1, 0x40 - lsls r1, 24 - lsrs r1, 23 - adds r1, r2 - movs r2, 0 - ldrsh r0, [r1, r2] - movs r1, 0x30 - ldrsh r2, [r4, r1] - adds r1, r0, 0 - muls r1, r2 - adds r0, r1, 0 - cmp r1, 0 - bge _0813DB20 - adds r0, 0xFF -_0813DB20: - lsls r0, 8 - lsrs r6, r0, 16 - lsls r0, r3, 16 - asrs r3, r0, 16 - negs r0, r3 - muls r0, r2 - cmp r0, 0 - bge _0813DB32 - adds r0, 0xFF -_0813DB32: - lsls r0, 8 - lsrs r5, r0, 16 - adds r0, r3, 0 - muls r0, r2 - cmp r0, 0 - bge _0813DB40 - adds r0, 0xFF -_0813DB40: - lsls r0, 8 - lsrs r2, r0, 16 - adds r1, r6, 0 - adds r3, r5, 0 - str r1, [sp] - movs r0, 0x1 - bl SetOamMatrix - ldrh r1, [r4, 0x30] - movs r2, 0x30 - ldrsh r0, [r4, r2] - cmp r0, 0xFF - bgt _0813DB64 - adds r0, r1, 0 - adds r0, 0x8 - b _0813DB68 - .align 2, 0 -_0813DB60: .4byte gSineTable -_0813DB64: - adds r0, r1, 0 - adds r0, 0x20 -_0813DB68: - strh r0, [r4, 0x30] - ldrh r1, [r4, 0x32] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0x17 - bgt _0813DB78 - adds r0, r1, 0x1 - strh r0, [r4, 0x32] -_0813DB78: - ldrh r2, [r4, 0x34] - movs r1, 0x34 - ldrsh r0, [r4, r1] - cmp r0, 0x3F - bgt _0813DB86 - adds r0, r2, 0x2 - b _0813DB92 -_0813DB86: - ldrh r1, [r4, 0x3C] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0813DB94 - adds r0, r2, 0x1 -_0813DB92: - strh r0, [r4, 0x34] -_0813DB94: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_813DA64 - - thumb_func_start sub_813DB9C -sub_813DB9C: @ 813DB9C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x4 - bhi _0813DBCC - lsls r0, 2 - ldr r1, _0813DBB4 @ =_0813DBB8 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813DBB4: .4byte _0813DBB8 - .align 2, 0 -_0813DBB8: - .4byte _0813DBCC - .4byte _0813DBF2 - .4byte _0813DC24 - .4byte _0813DC3E - .4byte _0813DCAA -_0813DBCC: - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0813DBE0 - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x1 - orrs r0, r1 - b _0813DBEC -_0813DBE0: - adds r2, r4, 0 - adds r2, 0x3F - ldrb r1, [r2] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 -_0813DBEC: - strb r0, [r2] - movs r0, 0x1 - strh r0, [r4, 0x2E] -_0813DBF2: - ldrh r1, [r4, 0x22] - movs r3, 0x22 - ldrsh r0, [r4, r3] - cmp r0, 0x60 - ble _0813DC18 - subs r0, r1, 0x4 - strh r0, [r4, 0x22] - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813DC10 - ldrh r0, [r4, 0x20] - adds r0, 0x2 - strh r0, [r4, 0x20] - b _0813DD4E -_0813DC10: - ldrh r0, [r4, 0x20] - subs r0, 0x2 - strh r0, [r4, 0x20] - b _0813DD4E -_0813DC18: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - movs r0, 0x8 - strh r0, [r4, 0x34] - b _0813DD4E -_0813DC24: - ldrh r0, [r4, 0x34] - movs r2, 0x34 - ldrsh r1, [r4, r2] - cmp r1, 0 - beq _0813DC34 - subs r0, 0x1 - strh r0, [r4, 0x34] - b _0813DD4E -_0813DC34: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x34] - b _0813DD4E -_0813DC3E: - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r3, 0x30 - ldrsh r1, [r4, r3] - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813DC8A - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xFF - lsls r1, 8 - movs r2, 0x80 - lsls r2, 1 - str r2, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - b _0813DC9E -_0813DC8A: - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x80 - lsls r1, 1 - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix -_0813DC9E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - movs r1, 0 - strh r0, [r4, 0x2E] - strh r1, [r4, 0x36] - b _0813DD4E -_0813DCAA: - ldrh r0, [r4, 0x36] - adds r2, r0, 0x1 - strh r2, [r4, 0x36] - movs r3, 0x22 - ldrsh r0, [r4, r3] - movs r3, 0x26 - ldrsh r1, [r4, r3] - adds r0, r1 - movs r1, 0x20 - negs r1, r1 - cmp r0, r1 - ble _0813DD48 - movs r1, 0x20 - ldrsh r0, [r4, r1] - movs r3, 0x24 - ldrsh r1, [r4, r3] - adds r0, r1 - movs r1, 0x40 - negs r1, r1 - cmp r0, r1 - ble _0813DD48 - movs r1, 0x36 - ldrsh r0, [r4, r1] - adds r3, r0, 0 - muls r3, r0 - adds r0, r3, 0 - negs r0, r0 - cmp r0, 0 - bge _0813DCE6 - adds r0, 0x7 -_0813DCE6: - asrs r0, 3 - strh r0, [r4, 0x26] - movs r1, 0x32 - ldrsh r0, [r4, r1] - ldrh r3, [r4, 0x32] - cmp r0, 0 - beq _0813DCFA - ldrh r0, [r4, 0x24] - adds r0, r2 - b _0813DCFE -_0813DCFA: - ldrh r0, [r4, 0x24] - subs r0, r2 -_0813DCFE: - strh r0, [r4, 0x24] - ldrh r1, [r4, 0x34] - movs r2, 0x34 - ldrsh r0, [r4, r2] - cmp r0, 0x7F - bgt _0813DD10 - adds r0, r1, 0 - adds r0, 0x8 - strh r0, [r4, 0x34] -_0813DD10: - ldrh r0, [r4, 0x34] - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - subs r1, r0 - lsls r1, 16 - lsrs r2, r1, 16 - lsls r0, r3, 16 - cmp r0, 0 - beq _0813DD34 - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - negs r1, r2 - lsls r1, 16 - lsrs r1, 16 - str r2, [sp] - b _0813DD3E -_0813DD34: - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - str r2, [sp] - adds r1, r2, 0 -_0813DD3E: - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - b _0813DD4E -_0813DD48: - adds r0, r4, 0 - bl DestroySprite -_0813DD4E: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813DB9C - - thumb_func_start sub_813DD58 -sub_813DD58: @ 813DD58 - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x1 - beq _0813DDAE - cmp r0, 0x1 - ble _0813DD72 - cmp r0, 0x2 - beq _0813DE66 - cmp r0, 0x3 - beq _0813DE26 -_0813DD72: - adds r2, r4, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r2] - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - movs r2, 0x30 - ldrsh r1, [r4, r2] - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0x80 - lsls r0, 4 - strh r0, [r4, 0x34] - movs r0, 0x1 - strh r0, [r4, 0x2E] -_0813DDAE: - ldrh r1, [r4, 0x34] - movs r2, 0x34 - ldrsh r0, [r4, r2] - movs r2, 0x80 - lsls r2, 1 - cmp r0, r2 - ble _0813DDEE - subs r1, 0x80 - strh r1, [r4, 0x34] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0813DDDA - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - negs r1, r1 - lsls r1, 16 - lsrs r1, 16 - ldrh r2, [r4, 0x34] - str r2, [sp] - b _0813DDE4 -_0813DDDA: - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - ldrh r1, [r4, 0x34] - str r1, [sp] -_0813DDE4: - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - b _0813DE66 -_0813DDEE: - movs r1, 0x32 - ldrsh r0, [r4, r1] - cmp r0, 0 - beq _0813DE0C - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0xFF - lsls r1, 8 - str r2, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - b _0813DE1E -_0813DE0C: - ldrh r0, [r4, 0x30] - lsls r0, 24 - lsrs r0, 24 - str r2, [sp] - adds r1, r2, 0 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix -_0813DE1E: - ldrh r0, [r4, 0x2E] - adds r0, 0x1 - strh r0, [r4, 0x2E] - b _0813DE66 -_0813DE26: - ldrh r0, [r4, 0x36] - adds r0, 0x1 - strh r0, [r4, 0x36] - movs r2, 0x36 - ldrsh r0, [r4, r2] - adds r1, r0, 0 - muls r1, r0 - adds r0, r1, 0 - cmp r0, 0 - bge _0813DE3C - adds r0, 0x1F -_0813DE3C: - asrs r0, 5 - strh r0, [r4, 0x26] - movs r2, 0x32 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _0813DE56 - movs r1, 0x36 - ldrsh r0, [r4, r1] - cmp r0, 0 - bge _0813DE52 - adds r0, 0x3 -_0813DE52: - asrs r0, 2 - b _0813DE64 -_0813DE56: - movs r2, 0x36 - ldrsh r0, [r4, r2] - cmp r0, 0 - bge _0813DE60 - adds r0, 0x3 -_0813DE60: - asrs r0, 2 - negs r0, r0 -_0813DE64: - strh r0, [r4, 0x24] -_0813DE66: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813DD58 - - thumb_func_start sub_813DE70 -sub_813DE70: @ 813DE70 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r7, r0, 0 - movs r1, 0x2E - ldrsh r0, [r7, r1] - cmp r0, 0x6 - bhi _0813DEB0 - lsls r0, 2 - ldr r1, _0813DE90 @ =_0813DE94 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813DE90: .4byte _0813DE94 - .align 2, 0 -_0813DE94: - .4byte _0813DEB0 - .4byte _0813E0F8 - .4byte _0813DEF4 - .4byte _0813DF2C - .4byte _0813DF54 - .4byte _0813E0A8 - .4byte _0813E0D0 -_0813DEB0: - ldrh r1, [r7, 0x20] - movs r2, 0x20 - ldrsh r0, [r7, r2] - cmp r0, 0x28 - ble _0813DEC0 - subs r0, r1, 0x4 - strh r0, [r7, 0x20] - b _0813E0F8 -_0813DEC0: - adds r0, r7, 0 - movs r1, 0x1 - bl StartSpriteAnim - ldr r4, _0813DEF0 @ =gSpriteTemplate_840B084 - adds r0, r4, 0 - movs r1, 0x10 - movs r2, 0x68 - movs r3, 0x64 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x3A] - adds r0, r4, 0 - movs r1, 0xC - movs r2, 0x6A - movs r3, 0x65 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - strh r0, [r7, 0x3C] - b _0813DF42 - .align 2, 0 -_0813DEF0: .4byte gSpriteTemplate_840B084 -_0813DEF4: - adds r0, r7, 0 - movs r1, 0x2 - bl StartSpriteAnim - ldr r2, _0813DF28 @ =gSprites - movs r3, 0x3A - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x1 - strh r1, [r0, 0x2E] - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - movs r1, 0x2 - strh r1, [r0, 0x2E] - ldrh r0, [r7, 0x2E] - adds r0, 0x1 - strh r0, [r7, 0x2E] - b _0813E0F8 - .align 2, 0 -_0813DF28: .4byte gSprites -_0813DF2C: - ldrh r1, [r7, 0x22] - movs r2, 0x22 - ldrsh r0, [r7, r2] - cmp r0, 0xA0 - ble _0813DF48 - adds r2, r7, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] -_0813DF42: - movs r0, 0x1 - strh r0, [r7, 0x2E] - b _0813E0F8 -_0813DF48: - adds r0, r1, 0x2 - strh r0, [r7, 0x22] - ldrh r0, [r7, 0x20] - subs r0, 0x1 - strh r0, [r7, 0x20] - b _0813E0F8 -_0813DF54: - ldr r6, _0813E094 @ =gSprites - movs r3, 0x3A - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r5, [r0, 0x24] - ldrh r1, [r0, 0x20] - adds r5, r1 - lsls r5, 16 - lsrs r5, 16 - ldrh r4, [r0, 0x26] - ldrh r2, [r0, 0x22] - adds r4, r2 - lsls r4, 16 - lsrs r4, 16 - bl DestroySprite - movs r0, 0x8C - lsls r0, 1 - lsls r5, 16 - asrs r1, r5, 16 - lsls r4, 16 - asrs r2, r4, 16 - movs r3, 0x1 - mov r8, r3 - str r3, [sp] - movs r3, 0x2 - bl sub_813CE88 - strh r0, [r7, 0x3A] - movs r0, 0x3A - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0813E098 @ =gSprites + 0x1C - adds r0, r1 - ldr r2, _0813E09C @ =sub_813DD58 - mov r10, r2 - str r2, [r0] - movs r3, 0x3A - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - movs r2, 0x4 - mov r9, r2 - mov r3, r9 - orrs r1, r3 - strb r1, [r0] - movs r0, 0x3A - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r1, r8 - strh r1, [r0, 0x30] - movs r2, 0x3A - ldrsh r1, [r7, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - mov r3, r8 - strh r3, [r0, 0x32] - lsrs r5, 16 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_813E580 - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r5, [r0, 0x24] - ldrh r1, [r0, 0x20] - adds r5, r1 - lsls r5, 16 - lsrs r5, 16 - ldrh r4, [r0, 0x26] - ldrh r2, [r0, 0x22] - adds r4, r2 - lsls r4, 16 - lsrs r4, 16 - bl DestroySprite - ldr r0, _0813E0A0 @ =0x0000011b - lsls r5, 16 - asrs r1, r5, 16 - lsls r4, 16 - asrs r2, r4, 16 - mov r3, r8 - str r3, [sp] - movs r3, 0x3 - bl sub_813CE88 - strh r0, [r7, 0x3C] - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0813E098 @ =gSprites + 0x1C - adds r0, r1 - mov r2, r10 - str r2, [r0] - movs r3, 0x3C - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r1, [r0] - mov r2, r9 - orrs r1, r2 - strb r1, [r0] - movs r3, 0x3C - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0x2 - strh r1, [r0, 0x30] - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - movs r1, 0 - strh r1, [r0, 0x32] - lsrs r5, 16 - lsrs r4, 16 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_813E580 - movs r0, 0xFF - lsls r0, 16 - ldr r1, _0813E0A4 @ =0x00007eff - str r1, [sp] - movs r1, 0 - movs r2, 0x10 - movs r3, 0x10 - bl BeginNormalPaletteFade - mov r2, r8 - strh r2, [r7, 0x2E] - b _0813E0F8 - .align 2, 0 -_0813E094: .4byte gSprites -_0813E098: .4byte gSprites + 0x1C -_0813E09C: .4byte sub_813DD58 -_0813E0A0: .4byte 0x0000011b -_0813E0A4: .4byte 0x00007eff -_0813E0A8: - ldr r3, _0813E0CC @ =gSprites - movs r0, 0x3A - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - movs r2, 0x3 - strh r2, [r0, 0x2E] - movs r0, 0x3C - ldrsh r1, [r7, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r3 - strh r2, [r0, 0x2E] - b _0813E0F8 - .align 2, 0 -_0813E0CC: .4byte gSprites -_0813E0D0: - movs r2, 0x3A - ldrsh r1, [r7, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r4, _0813E108 @ =gSprites - adds r0, r4 - bl DestroySprite - movs r3, 0x3C - ldrsh r1, [r7, r3] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r4 - bl DestroySprite - adds r0, r7, 0 - bl DestroySprite -_0813E0F8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813E108: .4byte gSprites - thumb_func_end sub_813DE70 - - thumb_func_start sub_813E10C -sub_813E10C: @ 813E10C - push {r4,lr} - adds r3, r0, 0 - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0x4 - bhi _0813E13C - lsls r0, 2 - ldr r1, _0813E124 @ =_0813E128 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813E124: .4byte _0813E128 - .align 2, 0 -_0813E128: - .4byte _0813E13C - .4byte _0813E178 - .4byte _0813E1A6 - .4byte _0813E1C2 - .4byte _0813E1D6 -_0813E13C: - ldrh r4, [r3, 0x24] - movs r2, 0x24 - ldrsh r1, [r3, r2] - movs r0, 0x38 - negs r0, r0 - cmp r1, r0 - ble _0813E158 - adds r0, r4, 0 - subs r0, 0x8 - strh r0, [r3, 0x24] - ldrh r0, [r3, 0x26] - adds r0, 0x6 - strh r0, [r3, 0x26] - b _0813E208 -_0813E158: - ldrh r0, [r3, 0x20] - movs r2, 0 - strh r0, [r3, 0x3A] - ldrh r1, [r3, 0x22] - strh r1, [r3, 0x3C] - adds r0, r4 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x26] - adds r1, r0 - strh r1, [r3, 0x22] - strh r2, [r3, 0x24] - strh r2, [r3, 0x26] - movs r0, 0x1 - strh r0, [r3, 0x2E] - strh r2, [r3, 0x30] - b _0813E208 -_0813E178: - ldrh r1, [r3, 0x30] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0813E1A0 - movs r0, 0x2 - ands r0, r1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - beq _0813E19C - ldr r0, _0813E198 @ =0x0000ffff - strh r0, [r3, 0x24] - strh r2, [r3, 0x26] - b _0813E1A0 - .align 2, 0 -_0813E198: .4byte 0x0000ffff -_0813E19C: - strh r0, [r3, 0x24] - strh r0, [r3, 0x26] -_0813E1A0: - adds r0, r1, 0x1 - strh r0, [r3, 0x30] - b _0813E208 -_0813E1A6: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r3, 0x3A] - movs r1, 0 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x3C] - strh r0, [r3, 0x22] - strh r1, [r3, 0x24] - strh r1, [r3, 0x26] - b _0813E208 -_0813E1C2: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] -_0813E1D6: - ldrh r2, [r3, 0x24] - movs r0, 0x24 - ldrsh r1, [r3, r0] - movs r0, 0x38 - negs r0, r0 - cmp r1, r0 - ble _0813E1F0 - subs r0, r2, 0x4 - strh r0, [r3, 0x24] - ldrh r0, [r3, 0x26] - adds r0, 0x3 - strh r0, [r3, 0x26] - b _0813E208 -_0813E1F0: - ldrh r1, [r3, 0x20] - adds r0, r2, r1 - movs r1, 0 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x26] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r3, 0x22] - strh r1, [r3, 0x24] - strh r1, [r3, 0x26] - movs r0, 0x1 - strh r0, [r3, 0x2E] -_0813E208: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813E10C - - thumb_func_start sub_813E210 -sub_813E210: @ 813E210 - push {r4,lr} - adds r3, r0, 0 - movs r1, 0x2E - ldrsh r0, [r3, r1] - cmp r0, 0x4 - bhi _0813E240 - lsls r0, 2 - ldr r1, _0813E228 @ =_0813E22C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813E228: .4byte _0813E22C - .align 2, 0 -_0813E22C: - .4byte _0813E240 - .4byte _0813E278 - .4byte _0813E2A6 - .4byte _0813E2C2 - .4byte _0813E2D6 -_0813E240: - ldrh r4, [r3, 0x24] - movs r2, 0x24 - ldrsh r0, [r3, r2] - cmp r0, 0x37 - bgt _0813E258 - adds r0, r4, 0 - adds r0, 0x8 - strh r0, [r3, 0x24] - ldrh r0, [r3, 0x26] - subs r0, 0x6 - strh r0, [r3, 0x26] - b _0813E304 -_0813E258: - ldrh r0, [r3, 0x20] - movs r2, 0 - strh r0, [r3, 0x3A] - ldrh r1, [r3, 0x22] - strh r1, [r3, 0x3C] - adds r0, r4 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x26] - adds r1, r0 - strh r1, [r3, 0x22] - strh r2, [r3, 0x24] - strh r2, [r3, 0x26] - movs r0, 0x1 - strh r0, [r3, 0x2E] - strh r2, [r3, 0x30] - b _0813E304 -_0813E278: - ldrh r1, [r3, 0x30] - movs r2, 0x1 - adds r0, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _0813E2A0 - movs r0, 0x2 - ands r0, r1 - lsls r0, 16 - asrs r0, 16 - cmp r0, 0 - beq _0813E29C - strh r2, [r3, 0x24] - ldr r0, _0813E298 @ =0x0000ffff - b _0813E29E - .align 2, 0 -_0813E298: .4byte 0x0000ffff -_0813E29C: - strh r0, [r3, 0x24] -_0813E29E: - strh r0, [r3, 0x26] -_0813E2A0: - adds r0, r1, 0x1 - strh r0, [r3, 0x30] - b _0813E304 -_0813E2A6: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldrh r0, [r3, 0x3A] - movs r1, 0 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x3C] - strh r0, [r3, 0x22] - strh r1, [r3, 0x24] - strh r1, [r3, 0x26] - b _0813E304 -_0813E2C2: - adds r2, r3, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r2] - ldrh r0, [r3, 0x30] - adds r0, 0x1 - strh r0, [r3, 0x30] -_0813E2D6: - ldrh r1, [r3, 0x24] - movs r2, 0x24 - ldrsh r0, [r3, r2] - cmp r0, 0x37 - bgt _0813E2EC - adds r0, r1, 0x4 - strh r0, [r3, 0x24] - ldrh r0, [r3, 0x26] - subs r0, 0x3 - strh r0, [r3, 0x26] - b _0813E304 -_0813E2EC: - ldrh r2, [r3, 0x20] - adds r0, r1, r2 - movs r1, 0 - strh r0, [r3, 0x20] - ldrh r0, [r3, 0x26] - ldrh r2, [r3, 0x22] - adds r0, r2 - strh r0, [r3, 0x22] - strh r1, [r3, 0x24] - strh r1, [r3, 0x26] - movs r0, 0x1 - strh r0, [r3, 0x2E] -_0813E304: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_813E210 - - thumb_func_start sub_813E30C -sub_813E30C: @ 813E30C - push {r4,lr} - sub sp, 0x4 - adds r4, r0, 0 - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - movs r1, 0x2E - ldrsh r0, [r4, r1] - cmp r0, 0x14 - bls _0813E322 - b _0813E4AC -_0813E322: - lsls r0, 2 - ldr r1, _0813E32C @ =_0813E330 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813E32C: .4byte _0813E330 - .align 2, 0 -_0813E330: - .4byte _0813E4AC - .4byte _0813E384 - .4byte _0813E41C - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E3A8 - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E4AC - .4byte _0813E440 -_0813E384: - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x2 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0xA - strh r0, [r4, 0x2E] - movs r0, 0x24 - strh r0, [r4, 0x36] -_0813E3A8: - ldrh r1, [r4, 0x20] - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x90 - bgt _0813E3D2 - adds r0, r1, 0x4 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x18 - bl Sin - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x4 - strh r0, [r4, 0x32] -_0813E3D2: - ldrh r0, [r4, 0x34] - ldrh r2, [r4, 0x36] - subs r0, r2 - strh r0, [r4, 0x34] - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E3EE - lsls r0, r2, 16 - cmp r0, 0 - beq _0813E3EE - subs r0, r2, 0x1 - strh r0, [r4, 0x36] -_0813E3EE: - ldr r2, _0813E418 @ =gSineTable - ldrh r1, [r4, 0x34] - lsls r0, r1, 24 - lsrs r0, 23 - adds r0, r2 - ldrh r4, [r0] - adds r1, 0x40 - lsls r1, 24 - lsrs r1, 23 - adds r1, r2 - ldrh r1, [r1] - negs r3, r4 - lsls r3, 16 - lsrs r3, 16 - str r1, [sp] - movs r0, 0x1 - adds r2, r4, 0 - bl SetOamMatrix - b _0813E4AC - .align 2, 0 -_0813E418: .4byte gSineTable -_0813E41C: - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4, 0x3] - movs r0, 0x14 - strh r0, [r4, 0x2E] - movs r0, 0x24 - strh r0, [r4, 0x36] -_0813E440: - ldrh r1, [r4, 0x20] - movs r2, 0x20 - ldrsh r0, [r4, r2] - cmp r0, 0x60 - bgt _0813E46A - adds r0, r1, 0x3 - strh r0, [r4, 0x20] - ldrh r0, [r4, 0x22] - subs r0, 0x1 - strh r0, [r4, 0x22] - ldrh r0, [r4, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x18 - bl Sin - negs r0, r0 - strh r0, [r4, 0x26] - ldrh r0, [r4, 0x32] - adds r0, 0x4 - strh r0, [r4, 0x32] -_0813E46A: - ldrh r0, [r4, 0x34] - ldrh r2, [r4, 0x36] - subs r0, r2 - strh r0, [r4, 0x34] - ldrh r1, [r4, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E486 - lsls r0, r2, 16 - cmp r0, 0 - beq _0813E486 - subs r0, r2, 0x1 - strh r0, [r4, 0x36] -_0813E486: - ldr r2, _0813E4B4 @ =gSineTable - ldrh r1, [r4, 0x34] - lsls r0, r1, 24 - lsrs r0, 23 - adds r0, r2 - ldrh r4, [r0] - adds r1, 0x40 - lsls r1, 24 - lsrs r1, 23 - adds r1, r2 - ldrh r1, [r1] - negs r3, r4 - lsls r3, 16 - lsrs r3, 16 - str r1, [sp] - movs r0, 0x2 - adds r2, r4, 0 - bl SetOamMatrix -_0813E4AC: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E4B4: .4byte gSineTable - thumb_func_end sub_813E30C - - thumb_func_start sub_813E4B8 -sub_813E4B8: @ 813E4B8 - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E4DA - adds r2, r5, 0 - adds r2, 0x3E - ldrb r1, [r2] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - b _0813E4E4 -_0813E4DA: - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 -_0813E4E4: - strb r0, [r2] - ldrh r1, [r5, 0x32] - movs r2, 0x32 - ldrsh r0, [r5, r2] - cmp r0, 0x3F - ble _0813E4F8 - adds r0, r5, 0 - bl DestroySprite - b _0813E574 -_0813E4F8: - adds r0, r1, 0x2 - strh r0, [r5, 0x32] - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x28 - bl Sin - adds r4, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - lsls r0, 29 - lsrs r0, 24 - lsls r4, 16 - asrs r4, 16 - adds r1, r4, 0 - bl Cos - strh r0, [r5, 0x24] - movs r2, 0x2E - ldrsh r0, [r5, r2] - lsls r0, 29 - lsrs r0, 24 - adds r1, r4, 0 - bl Sin - strh r0, [r5, 0x26] - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - bne _0813E574 - ldrh r0, [r5, 0x34] - ldrh r2, [r5, 0x30] - subs r0, r2 - strh r0, [r5, 0x34] - ldrh r1, [r5, 0x3C] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813E550 - lsls r0, r2, 16 - cmp r0, 0 - beq _0813E550 - subs r0, r2, 0x1 - strh r0, [r5, 0x30] -_0813E550: - ldr r3, _0813E57C @ =gSineTable - ldrh r1, [r5, 0x34] - lsls r0, r1, 24 - lsrs r0, 23 - adds r0, r3 - ldrh r2, [r0] - adds r1, 0x40 - lsls r1, 24 - lsrs r1, 23 - adds r1, r3 - ldrh r1, [r1] - negs r3, r2 - lsls r3, 16 - lsrs r3, 16 - str r1, [sp] - movs r0, 0x10 - bl SetOamMatrix -_0813E574: - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813E57C: .4byte gSineTable - thumb_func_end sub_813E4B8 - - thumb_func_start sub_813E580 -sub_813E580: @ 813E580 - push {r4-r7,lr} - movs r4, 0 - ldr r7, _0813E5D8 @ =gSprites - lsls r6, r0, 16 - lsls r5, r1, 16 -_0813E58A: - ldr r0, _0813E5DC @ =gSpriteTemplate_840B0B0 - asrs r1, r6, 16 - asrs r2, r5, 16 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - lsls r2, r0, 4 - adds r2, r0 - lsls r2, 2 - adds r2, r7 - ldrb r1, [r2, 0x1] - movs r3, 0x4 - negs r3, r3 - adds r0, r3, 0 - ands r1, r0 - movs r0, 0x1 - orrs r1, r0 - strb r1, [r2, 0x1] - ldrb r1, [r2, 0x3] - subs r3, 0x3B - adds r0, r3, 0 - ands r1, r0 - movs r0, 0x20 - orrs r1, r0 - strb r1, [r2, 0x3] - strh r4, [r2, 0x2E] - movs r0, 0x20 - strh r0, [r2, 0x30] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _0813E58A - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813E5D8: .4byte gSprites -_0813E5DC: .4byte gSpriteTemplate_840B0B0 - thumb_func_end sub_813E580 - - thumb_func_start sub_813E5E0 -sub_813E5E0: @ 813E5E0 - push {r4,lr} - adds r3, r0, 0 - ldr r0, _0813E5F4 @ =gUnknown_0203931A - ldrh r0, [r0] - cmp r0, 0 - beq _0813E5F8 - adds r0, r3, 0 - bl DestroySprite - b _0813E6B2 - .align 2, 0 -_0813E5F4: .4byte gUnknown_0203931A -_0813E5F8: - ldr r2, _0813E6B8 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r1, 0x4 - ands r1, r0 - mov r4, r12 - ldrb r2, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4] - ldrh r1, [r3, 0x3C] - movs r2, 0x3C - ldrsh r0, [r3, r2] - cmp r0, 0xB - bgt _0813E630 - adds r0, r1, 0x1 - strh r0, [r3, 0x3C] -_0813E630: - ldrh r0, [r3, 0x3A] - adds r0, 0x4 - strh r0, [r3, 0x3A] - ldr r4, _0813E6BC @ =gSineTable - ldrh r0, [r3, 0x34] - adds r0, 0x40 - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x3A - ldrsh r0, [r3, r2] - muls r0, r1 - cmp r0, 0 - bge _0813E652 - adds r0, 0xFF -_0813E652: - asrs r0, 8 - ldrh r1, [r3, 0x36] - adds r0, r1 - strh r0, [r3, 0x20] - movs r2, 0x34 - ldrsh r0, [r3, r2] - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r2, 0x3A - ldrsh r0, [r3, r2] - muls r0, r1 - cmp r0, 0 - bge _0813E674 - adds r0, 0xFF -_0813E674: - asrs r0, 8 - ldrh r1, [r3, 0x38] - adds r2, r0, r1 - strh r2, [r3, 0x22] - movs r1, 0x30 - ldrsh r0, [r3, r1] - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - movs r4, 0 - ldrsh r1, [r0, r4] - movs r4, 0x3C - ldrsh r0, [r3, r4] - muls r0, r1 - cmp r0, 0 - bge _0813E696 - adds r0, 0xFF -_0813E696: - asrs r0, 8 - strh r0, [r3, 0x26] - ldrh r0, [r3, 0x30] - adds r0, 0x10 - strh r0, [r3, 0x30] - lsls r0, r2, 16 - asrs r0, 16 - movs r2, 0x32 - ldrsh r1, [r3, r2] - cmp r0, r1 - ble _0813E6B2 - adds r0, r3, 0 - bl DestroySprite -_0813E6B2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E6B8: .4byte gSprites -_0813E6BC: .4byte gSineTable - thumb_func_end sub_813E5E0 - - thumb_func_start sub_813E6C0 -sub_813E6C0: @ 813E6C0 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - ldr r0, _0813E6E0 @ =gUnknown_0203931A - ldrh r0, [r0] - cmp r0, 0 - beq _0813E6E4 - adds r0, r4, 0 - bl DestroySprite - b _0813E7A8 - .align 2, 0 -_0813E6E0: .4byte gUnknown_0203931A -_0813E6E4: - ldrh r0, [r4, 0x3C] - adds r0, 0x1 - strh r0, [r4, 0x3C] - adds r2, r4, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r3, _0813E7B8 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r2, r0, r3 - movs r1, 0x2E - ldrsh r0, [r2, r1] - cmp r0, 0x1 - bne _0813E7A8 - ldrh r1, [r4, 0x3C] - movs r0, 0x3 - ands r0, r1 - cmp r0, 0 - bne _0813E7A8 - ldrh r0, [r2, 0x20] - ldrh r7, [r4, 0x30] - adds r0, r7 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp] - ldrh r0, [r2, 0x22] - ldrh r1, [r4, 0x32] - adds r0, r1 - lsls r0, 16 - lsrs r6, r0, 16 - movs r5, 0 - mov r8, r3 - ldr r2, [sp] - lsls r2, 16 - mov r10, r2 - lsls r7, r6, 16 - mov r9, r7 -_0813E73A: - movs r0, 0x2E - ldrsh r1, [r4, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - add r0, r8 - adds r0, 0x43 - ldrb r3, [r0] - subs r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - ldr r0, _0813E7BC @ =gSpriteTemplate_840B0DC - mov r2, r10 - asrs r1, r2, 16 - mov r7, r9 - asrs r2, r7, 16 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0813E79E - lsls r3, r0, 4 - adds r3, r0 - lsls r3, 2 - add r3, r8 - ldrh r0, [r4, 0x2E] - strh r0, [r3, 0x2E] - ldrh r1, [r4, 0x3C] - lsls r1, 16 - asrs r1, 18 - movs r0, 0x7 - ands r1, r0 - lsls r1, 5 - lsls r0, r5, 2 - adds r0, r5 - lsls r2, r0, 4 - adds r0, r2 - adds r1, r0 - strh r1, [r3, 0x30] - ldrh r0, [r4, 0x34] - strh r0, [r3, 0x32] - movs r0, 0x68 - strh r0, [r3, 0x34] - mov r0, sp - ldrh r0, [r0] - strh r0, [r3, 0x36] - strh r6, [r3, 0x38] - movs r1, 0 - strh r1, [r3, 0x3A] -_0813E79E: - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x2 - bls _0813E73A -_0813E7A8: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813E7B8: .4byte gSprites -_0813E7BC: .4byte gSpriteTemplate_840B0DC - thumb_func_end sub_813E6C0 - - thumb_func_start sub_813E7C0 -sub_813E7C0: @ 813E7C0 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813E7F8 @ =gSpriteTemplate_840B0F4 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _0813E7F2 - ldr r1, _0813E7FC @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r2, 0 - strh r4, [r0, 0x2E] - ldr r1, _0813E800 @ =0x0000fff4 - strh r1, [r0, 0x30] - strh r2, [r0, 0x32] - movs r1, 0x88 - strh r1, [r0, 0x34] -_0813E7F2: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813E7F8: .4byte gSpriteTemplate_840B0F4 -_0813E7FC: .4byte gSprites -_0813E800: .4byte 0x0000fff4 - thumb_func_end sub_813E7C0 - - thumb_func_start sub_813E804 -sub_813E804: @ 813E804 - push {r4-r7,lr} - adds r3, r0, 0 - ldr r0, _0813E818 @ =gUnknown_0203931A - ldrh r0, [r0] - cmp r0, 0 - beq _0813E81C - adds r0, r3, 0 - bl DestroySprite - b _0813E928 - .align 2, 0 -_0813E818: .4byte gUnknown_0203931A -_0813E81C: - ldr r6, _0813E904 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x3E - ldrb r0, [r0] - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r1, 0x4 - ands r1, r0 - mov r7, r12 - ldrb r2, [r7] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r7] - ldrh r0, [r3, 0x3C] - adds r0, 0x1 - strh r0, [r3, 0x3C] - ldrh r1, [r3, 0x34] - movs r2, 0x34 - ldrsh r0, [r3, r2] - cmp r0, 0x27 - bgt _0813E85A - adds r0, r1, 0x2 - strh r0, [r3, 0x34] -_0813E85A: - movs r7, 0x2E - ldrsh r1, [r3, r7] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r0, 0x24] - ldrh r0, [r0, 0x20] - adds r2, r1, r0 - ldr r4, _0813E908 @ =gSineTable - ldrh r5, [r3, 0x30] - adds r0, r5, 0 - adds r0, 0x40 - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - movs r7, 0 - ldrsh r1, [r0, r7] - movs r7, 0x34 - ldrsh r0, [r3, r7] - muls r0, r1 - cmp r0, 0 - bge _0813E88A - adds r0, 0xFF -_0813E88A: - asrs r0, 8 - adds r0, r2, r0 - strh r0, [r3, 0x20] - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - ldrh r1, [r0, 0x26] - ldrh r0, [r0, 0x22] - adds r2, r1, r0 - movs r1, 0x30 - ldrsh r0, [r3, r1] - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - movs r7, 0 - ldrsh r1, [r0, r7] - movs r7, 0x34 - ldrsh r0, [r3, r7] - muls r0, r1 - cmp r0, 0 - bge _0813E8BE - ldr r1, _0813E90C @ =0x000001ff - adds r0, r1 -_0813E8BE: - asrs r0, 9 - adds r0, r2, r0 - strh r0, [r3, 0x22] - adds r1, r5, 0x2 - strh r1, [r3, 0x30] - movs r2, 0x32 - ldrsh r0, [r3, r2] - lsls r0, 24 - lsrs r0, 23 - adds r0, r4 - movs r7, 0 - ldrsh r0, [r0, r7] - cmp r0, 0 - bge _0813E8DC - adds r0, 0x1F -_0813E8DC: - asrs r0, 5 - strh r0, [r3, 0x26] - ldrh r0, [r3, 0x32] - adds r0, 0x8 - strh r0, [r3, 0x32] - movs r0, 0xFF - ands r1, r0 - cmp r1, 0x7F - bgt _0813E910 - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x43 - ldrb r0, [r0] - subs r0, 0x1 - b _0813E922 - .align 2, 0 -_0813E904: .4byte gSprites -_0813E908: .4byte gSineTable -_0813E90C: .4byte 0x000001ff -_0813E910: - movs r2, 0x2E - ldrsh r1, [r3, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r6 - adds r0, 0x43 - ldrb r0, [r0] - adds r0, 0x1 -_0813E922: - adds r1, r3, 0 - adds r1, 0x43 - strb r0, [r1] -_0813E928: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_813E804 - - thumb_func_start sub_813E930 -sub_813E930: @ 813E930 - push {r4-r7,lr} - lsls r0, 24 - lsrs r6, r0, 24 - movs r4, 0 - ldr r7, _0813E978 @ =gSprites - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - adds r5, r0, r7 -_0813E942: - movs r0, 0x20 - ldrsh r1, [r5, r0] - movs r0, 0x22 - ldrsh r2, [r5, r0] - ldr r0, _0813E97C @ =gSpriteTemplate_840B124 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x40 - beq _0813E968 - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r7 - strh r6, [r0, 0x2E] - lsls r1, r4, 5 - strh r1, [r0, 0x30] -_0813E968: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x7 - bls _0813E942 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813E978: .4byte gSprites -_0813E97C: .4byte gSpriteTemplate_840B124 - thumb_func_end sub_813E930 - - thumb_func_start GetCurrentTrainerHillMapId -GetCurrentTrainerHillMapId: @ 813E980 - push {r4,r5,lr} - adds r3, r0, 0 - ldr r0, _0813E994 @ =gUnknown_0203931A - ldrh r0, [r0] - cmp r0, 0 - beq _0813E998 - adds r0, r3, 0 - bl DestroySprite - b _0813EA50 - .align 2, 0 -_0813E994: .4byte gUnknown_0203931A -_0813E998: - ldr r2, _0813EA58 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r1, 0x4 - ands r1, r0 - mov r5, r12 - ldrb r2, [r5] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5] - ldrh r0, [r3, 0x3C] - adds r0, 0x1 - strh r0, [r3, 0x3C] - ldrh r0, [r3, 0x3A] - adds r4, r0, 0 - adds r4, 0x8 - strh r4, [r3, 0x3A] - ldr r2, _0813EA5C @ =gSineTable - ldrh r0, [r3, 0x34] - adds r0, 0x40 - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r5, 0 - ldrsh r1, [r0, r5] - movs r5, 0x3A - ldrsh r0, [r3, r5] - muls r0, r1 - cmp r0, 0 - bge _0813E9EC - adds r0, 0xFF -_0813E9EC: - asrs r0, 8 - ldrh r1, [r3, 0x36] - adds r0, r1 - strh r0, [r3, 0x20] - movs r5, 0x34 - ldrsh r0, [r3, r5] - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r5, 0x3A - ldrsh r0, [r3, r5] - muls r0, r1 - cmp r0, 0 - bge _0813EA0E - adds r0, 0xFF -_0813EA0E: - asrs r0, 8 - ldrh r1, [r3, 0x38] - adds r0, r1 - strh r0, [r3, 0x22] - movs r2, 0x3A - ldrsh r0, [r3, r2] - cmp r0, 0 - bge _0813EA20 - adds r0, 0xF -_0813EA20: - asrs r0, 4 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x9 - bls _0813EA2C - movs r0, 0x9 -_0813EA2C: - adds r1, r0, 0 - adds r1, 0x12 - movs r0, 0x1F - ands r1, r0 - lsls r1, 1 - ldrb r2, [r3, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r3, 0x3] - lsls r0, r4, 16 - asrs r0, 16 - cmp r0, 0xA0 - ble _0813EA50 - adds r0, r3, 0 - bl DestroySprite -_0813EA50: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813EA58: .4byte gSprites -_0813EA5C: .4byte gSineTable - thumb_func_end GetCurrentTrainerHillMapId - - thumb_func_start sub_813EA60 -sub_813EA60: @ 813EA60 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - adds r5, r0, 0 - ldr r0, _0813EA7C @ =gUnknown_0203931A - ldrh r0, [r0] - cmp r0, 0 - beq _0813EA80 - adds r0, r5, 0 - bl DestroySprite - b _0813EB32 - .align 2, 0 -_0813EA7C: .4byte gUnknown_0203931A -_0813EA80: - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0813EB40 @ =gSprites - mov r9, r0 - movs r4, 0x2E - ldrsh r1, [r5, r4] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r1, r9 - adds r3, r0, r1 - movs r4, 0x2E - ldrsh r1, [r3, r4] - cmp r1, 0x1 - bne _0813EB32 - ldrh r0, [r5, 0x3C] - ands r1, r0 - lsls r0, r1, 16 - asrs r6, r0, 16 - cmp r6, 0 - bne _0813EB32 - ldrh r1, [r3, 0x20] - ldrh r0, [r5, 0x30] - adds r1, r0 - lsls r1, 16 - ldrh r2, [r3, 0x22] - ldrh r4, [r5, 0x32] - adds r2, r4 - lsls r2, 16 - ldr r0, _0813EB44 @ =gSpriteTemplate_840B150 - lsrs r4, r1, 16 - mov r8, r4 - asrs r1, 16 - lsrs r7, r2, 16 - asrs r2, 16 - adds r3, 0x43 - ldrb r3, [r3] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0813EB32 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - add r4, r9 - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x24 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldrh r0, [r5, 0x2E] - strh r0, [r4, 0x2E] - ldr r2, _0813EB48 @ =gUnknown_0840B168 - ldrh r0, [r5, 0x3C] - lsls r0, 16 - asrs r0, 17 - movs r1, 0x7 - ands r0, r1 - adds r0, r2 - ldrb r0, [r0] - strh r0, [r4, 0x34] - mov r0, r8 - strh r0, [r4, 0x36] - strh r7, [r4, 0x38] - strh r6, [r4, 0x3A] -_0813EB32: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813EB40: .4byte gSprites -_0813EB44: .4byte gSpriteTemplate_840B150 -_0813EB48: .4byte gUnknown_0840B168 - thumb_func_end sub_813EA60 - - thumb_func_start sub_813EB4C -sub_813EB4C: @ 813EB4C - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813EBB0 @ =gSpriteTemplate_840B170 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _0813EB80 - ldr r1, _0813EBB4 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r4, [r0, 0x2E] - strh r1, [r0, 0x30] - movs r1, 0x8 - strh r1, [r0, 0x32] - movs r1, 0x18 - strh r1, [r0, 0x34] -_0813EB80: - movs r4, 0 - ldr r5, _0813EBB8 @ =gUnknown_0840B188 -_0813EB84: - adds r0, r4, 0 - adds r0, 0x12 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r4, 1 - adds r1, r5 - ldrh r1, [r1] - str r1, [sp] - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x9 - bls _0813EB84 - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813EBB0: .4byte gSpriteTemplate_840B170 -_0813EBB4: .4byte gSprites -_0813EBB8: .4byte gUnknown_0840B188 - thumb_func_end sub_813EB4C - - thumb_func_start sub_813EBBC -sub_813EBBC: @ 813EBBC - push {r4,lr} - adds r3, r0, 0 - ldr r0, _0813EBD0 @ =gUnknown_0203931A - ldrh r0, [r0] - cmp r0, 0 - beq _0813EBD4 - adds r0, r3, 0 - bl DestroySprite - b _0813EC80 - .align 2, 0 -_0813EBD0: .4byte gUnknown_0203931A -_0813EBD4: - ldr r2, _0813EC88 @ =gSprites - movs r0, 0x2E - ldrsh r1, [r3, r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - adds r0, r2 - adds r0, 0x3E - ldrb r0, [r0] - movs r1, 0x3E - adds r1, r3 - mov r12, r1 - movs r1, 0x4 - ands r1, r0 - mov r4, r12 - ldrb r2, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4] - ldrh r0, [r3, 0x3C] - adds r0, 0x1 - strh r0, [r3, 0x3C] - ldrh r0, [r3, 0x3A] - adds r0, 0x8 - strh r0, [r3, 0x3A] - ldr r2, _0813EC8C @ =gSineTable - ldrh r0, [r3, 0x34] - adds r0, 0x40 - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r4, 0 - ldrsh r1, [r0, r4] - movs r4, 0x3A - ldrsh r0, [r3, r4] - muls r0, r1 - cmp r0, 0 - bge _0813EC26 - adds r0, 0xFF -_0813EC26: - asrs r0, 8 - ldrh r1, [r3, 0x36] - adds r0, r1 - strh r0, [r3, 0x20] - movs r4, 0x34 - ldrsh r0, [r3, r4] - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r4, 0 - ldrsh r1, [r0, r4] - movs r4, 0x3A - ldrsh r0, [r3, r4] - muls r0, r1 - cmp r0, 0 - bge _0813EC48 - adds r0, 0xFF -_0813EC48: - asrs r0, 8 - ldrh r4, [r3, 0x38] - adds r1, r0, r4 - strh r1, [r3, 0x22] - movs r4, 0x30 - ldrsh r0, [r3, r4] - lsls r0, 24 - lsrs r0, 23 - adds r0, r2 - movs r2, 0 - ldrsh r0, [r0, r2] - cmp r0, 0 - bge _0813EC64 - adds r0, 0x3F -_0813EC64: - asrs r0, 6 - strh r0, [r3, 0x26] - ldrh r0, [r3, 0x30] - adds r0, 0x10 - strh r0, [r3, 0x30] - lsls r0, r1, 16 - asrs r0, 16 - movs r4, 0x32 - ldrsh r1, [r3, r4] - cmp r0, r1 - bge _0813EC80 - adds r0, r3, 0 - bl DestroySprite -_0813EC80: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EC88: .4byte gSprites -_0813EC8C: .4byte gSineTable - thumb_func_end sub_813EBBC - - thumb_func_start sub_813EC90 -sub_813EC90: @ 813EC90 - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r5, r0, 0 - ldr r0, _0813ECAC @ =gUnknown_0203931A - ldrh r0, [r0] - cmp r0, 0 - beq _0813ECB0 - adds r0, r5, 0 - bl DestroySprite - b _0813EDA0 - .align 2, 0 -_0813ECAC: .4byte gUnknown_0203931A -_0813ECB0: - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] - adds r2, r5, 0 - adds r2, 0x3E - ldrb r0, [r2] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r2] - ldr r0, _0813EDB0 @ =gSprites - mov r9, r0 - movs r2, 0x2E - ldrsh r1, [r5, r2] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - mov r4, r9 - adds r3, r0, r4 - movs r0, 0x2E - ldrsh r1, [r3, r0] - cmp r1, 0x1 - bne _0813ED74 - ldrh r0, [r5, 0x3C] - ands r1, r0 - lsls r0, r1, 16 - asrs r6, r0, 16 - cmp r6, 0 - bne _0813ED66 - ldrh r1, [r3, 0x20] - ldrh r2, [r5, 0x30] - adds r1, r2 - lsls r1, 16 - ldrh r2, [r3, 0x22] - ldrh r4, [r5, 0x32] - adds r2, r4 - lsls r2, 16 - ldr r0, _0813EDB4 @ =gSpriteTemplate_840B1B0 - lsrs r4, r1, 16 - mov r8, r4 - asrs r1, 16 - lsrs r7, r2, 16 - asrs r2, 16 - adds r3, 0x43 - ldrb r3, [r3] - adds r3, 0x1 - lsls r3, 24 - lsrs r3, 24 - bl CreateSprite - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x40 - beq _0813ED66 - lsls r4, r0, 4 - adds r4, r0 - lsls r4, 2 - add r4, r9 - ldrb r0, [r4, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r4, 0x1] - ldrb r1, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x22 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r0, r4, 0 - movs r1, 0 - movs r2, 0x1 - movs r3, 0x3 - bl CalcCenterToCornerVec - ldrh r0, [r5, 0x2E] - strh r0, [r4, 0x2E] - ldrh r0, [r5, 0x3C] - lsls r0, 16 - asrs r0, 18 - movs r1, 0x7 - ands r0, r1 - lsls r0, 5 - strh r0, [r4, 0x30] - ldrh r0, [r5, 0x34] - strh r0, [r4, 0x32] - movs r0, 0xE8 - strh r0, [r4, 0x34] - mov r0, r8 - strh r0, [r4, 0x36] - strh r7, [r4, 0x38] - strh r6, [r4, 0x3A] -_0813ED66: - ldrh r1, [r5, 0x3A] - movs r2, 0x3A - ldrsh r0, [r5, r2] - cmp r0, 0x6F - bgt _0813ED74 - adds r0, r1, 0x4 - strh r0, [r5, 0x3A] -_0813ED74: - ldr r1, _0813EDB8 @ =gSineTable - ldrh r0, [r5, 0x3A] - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - movs r4, 0 - ldrsh r0, [r0, r4] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x11 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix -_0813EDA0: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0813EDB0: .4byte gSprites -_0813EDB4: .4byte gSpriteTemplate_840B1B0 -_0813EDB8: .4byte gSineTable - thumb_func_end sub_813EC90 - - thumb_func_start sub_813EDBC -sub_813EDBC: @ 813EDBC - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, _0813EDF4 @ =gSpriteTemplate_840B1C8 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl CreateSprite - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x40 - beq _0813EDEE - ldr r1, _0813EDF8 @ =gSprites - lsls r0, r2, 4 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - movs r1, 0 - strh r4, [r0, 0x2E] - strh r1, [r0, 0x30] - movs r1, 0xC - strh r1, [r0, 0x32] - movs r1, 0x18 - strh r1, [r0, 0x34] -_0813EDEE: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EDF4: .4byte gSpriteTemplate_840B1C8 -_0813EDF8: .4byte gSprites - thumb_func_end sub_813EDBC - - thumb_func_start sub_813EDFC -sub_813EDFC: @ 813EDFC - push {r4,r5,lr} - sub sp, 0x4 - adds r5, r0, 0 - movs r1, 0x2E - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0813EE12 - adds r4, r5, 0 - adds r4, 0x3E - cmp r0, 0x1 - beq _0813EE4A -_0813EE12: - adds r4, r5, 0 - adds r4, 0x3E - ldrb r1, [r4] - movs r0, 0x5 - negs r0, r0 - ands r0, r1 - strb r0, [r4] - ldrb r0, [r5, 0x1] - movs r1, 0x3 - orrs r0, r1 - strb r0, [r5, 0x1] - ldrb r1, [r5, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r1 - movs r1, 0x24 - orrs r0, r1 - strb r0, [r5, 0x3] - adds r0, r5, 0 - movs r1, 0 - movs r2, 0x3 - movs r3, 0x3 - bl CalcCenterToCornerVec - movs r0, 0 - strh r0, [r5, 0x30] - movs r0, 0x1 - strh r0, [r5, 0x2E] -_0813EE4A: - ldrh r0, [r5, 0x3C] - adds r0, 0x1 - strh r0, [r5, 0x3C] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0813EE62 - ldrb r0, [r4] - movs r1, 0x4 - orrs r0, r1 - strb r0, [r4] - b _0813EE7A -_0813EE62: - ldrb r0, [r4] - movs r1, 0x5 - negs r1, r1 - ands r1, r0 - strb r1, [r4] - ldrh r1, [r5, 0x30] - movs r2, 0x30 - ldrsh r0, [r5, r2] - cmp r0, 0x3F - bgt _0813EE7A - adds r0, r1, 0x1 - strh r0, [r5, 0x30] -_0813EE7A: - ldr r1, _0813EEB0 @ =gSineTable - ldrh r0, [r5, 0x30] - lsls r0, 24 - lsrs r0, 23 - adds r0, r1 - movs r1, 0 - ldrsh r0, [r0, r1] - lsrs r1, r0, 31 - adds r0, r1 - asrs r0, 1 - movs r2, 0x80 - lsls r2, 1 - adds r1, r2, 0 - subs r1, r0 - lsls r1, 16 - lsrs r1, 16 - str r1, [sp] - movs r0, 0x12 - movs r2, 0 - movs r3, 0 - bl SetOamMatrix - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0813EEB0: .4byte gSineTable - thumb_func_end sub_813EDFC - - thumb_func_start FieldInitRegionMap -FieldInitRegionMap: @ 813EEB4 - push {r4,lr} - adds r4, r0, 0 - movs r0, 0 - bl SetVBlankCallback - ldr r2, _0813EED8 @ =0x02000000 - ldr r0, _0813EEDC @ =0x00000888 - adds r1, r2, r0 - movs r0, 0 - strh r0, [r1] - str r4, [r2] - ldr r0, _0813EEE0 @ =CB2_FieldInitRegionMap - bl SetMainCallback2 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EED8: .4byte 0x02000000 -_0813EEDC: .4byte 0x00000888 -_0813EEE0: .4byte CB2_FieldInitRegionMap - thumb_func_end FieldInitRegionMap - - thumb_func_start CB2_FieldInitRegionMap -CB2_FieldInitRegionMap: @ 813EEE4 - push {r4,lr} - sub sp, 0x4 - movs r0, 0x80 - lsls r0, 19 - movs r1, 0 - strh r1, [r0] - adds r0, 0x10 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _0813EF98 @ =0x02000008 - movs r1, 0 - bl sub_80FA8EC - movs r0, 0 - movs r1, 0 - bl sub_80FBCF0 - movs r0, 0x1 - movs r1, 0x1 - bl sub_80FBB3C - ldr r4, _0813EF9C @ =gWindowConfig_81E709C - adds r0, r4, 0 - bl SetUpWindowConfig - adds r0, r4, 0 - bl InitMenuWindow - bl MenuZeroFillScreen - ldr r1, _0813EFA0 @ =REG_BG0CNT - movs r2, 0xF8 - lsls r2, 5 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0x15 - movs r1, 0 - movs r2, 0x1D - movs r3, 0x3 - bl MenuDrawTextWindow - ldr r0, _0813EFA4 @ =gOtherText_Hoenn - movs r1, 0x16 - movs r2, 0x1 - movs r3, 0x38 - bl sub_8072BD8 - movs r0, 0x10 - movs r1, 0x10 - movs r2, 0x1D - movs r3, 0x13 - bl MenuDrawTextWindow - bl sub_813F0C8 - ldr r0, _0813EFA8 @ =CB2_FieldRegionMap - bl SetMainCallback2 - ldr r0, _0813EFAC @ =VBlankCB_FieldRegionMap - bl SetVBlankCallback - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0813EF98: .4byte 0x02000008 -_0813EF9C: .4byte gWindowConfig_81E709C -_0813EFA0: .4byte REG_BG0CNT -_0813EFA4: .4byte gOtherText_Hoenn -_0813EFA8: .4byte CB2_FieldRegionMap -_0813EFAC: .4byte VBlankCB_FieldRegionMap - thumb_func_end CB2_FieldInitRegionMap - - thumb_func_start VBlankCB_FieldRegionMap -VBlankCB_FieldRegionMap: @ 813EFB0 - push {lr} - bl LoadOam - bl ProcessSpriteCopyRequests - bl TransferPlttBuffer - pop {r0} - bx r0 - thumb_func_end VBlankCB_FieldRegionMap - - thumb_func_start CB2_FieldRegionMap -CB2_FieldRegionMap: @ 813EFC4 - push {lr} - bl sub_813EFDC - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end CB2_FieldRegionMap - - thumb_func_start sub_813EFDC -sub_813EFDC: @ 813EFDC - push {lr} - sub sp, 0x4 - ldr r1, _0813EFF8 @ =0x02000000 - ldr r2, _0813EFFC @ =0x00000888 - adds r0, r1, r2 - ldrh r0, [r0] - adds r2, r1, 0 - cmp r0, 0x4 - bhi _0813F0B8 - lsls r0, 2 - ldr r1, _0813F000 @ =_0813F004 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_0813EFF8: .4byte 0x02000000 -_0813EFFC: .4byte 0x00000888 -_0813F000: .4byte _0813F004 - .align 2, 0 -_0813F004: - .4byte _0813F018 - .4byte _0813F030 - .4byte _0813F04C - .4byte _0813F078 - .4byte _0813F0A0 -_0813F018: - movs r1, 0x80 - lsls r1, 19 - ldr r3, _0813F028 @ =0x00001541 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _0813F02C @ =0x00000888 - adds r1, r2, r0 - b _0813F08E - .align 2, 0 -_0813F028: .4byte 0x00001541 -_0813F02C: .4byte 0x00000888 -_0813F030: - ldr r0, _0813F044 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813F0B8 - ldr r3, _0813F048 @ =0x00000888 - adds r1, r2, r3 - b _0813F08E - .align 2, 0 -_0813F044: .4byte gPaletteFade -_0813F048: .4byte 0x00000888 -_0813F04C: - bl sub_80FAB60 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x3 - bne _0813F05E - bl sub_813F0C8 - b _0813F0B8 -_0813F05E: - cmp r0, 0x3 - blt _0813F0B8 - cmp r0, 0x5 - bgt _0813F0B8 - ldr r1, _0813F070 @ =0x02000000 - ldr r0, _0813F074 @ =0x00000888 - adds r1, r0 - b _0813F08E - .align 2, 0 -_0813F070: .4byte 0x02000000 -_0813F074: .4byte 0x00000888 -_0813F078: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0 - movs r3, 0x10 - bl BeginNormalPaletteFade - ldr r1, _0813F098 @ =0x02000000 - ldr r2, _0813F09C @ =0x00000888 - adds r1, r2 -_0813F08E: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _0813F0B8 - .align 2, 0 -_0813F098: .4byte 0x02000000 -_0813F09C: .4byte 0x00000888 -_0813F0A0: - ldr r0, _0813F0C0 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0813F0B8 - bl sub_80FAB10 - ldr r0, _0813F0C4 @ =0x02000000 - ldr r0, [r0] - bl SetMainCallback2 -_0813F0B8: - add sp, 0x4 - pop {r0} - bx r0 - .align 2, 0 -_0813F0C0: .4byte gPaletteFade -_0813F0C4: .4byte 0x02000000 - thumb_func_end sub_813EFDC - - thumb_func_start sub_813F0C8 -sub_813F0C8: @ 813F0C8 - push {lr} - movs r0, 0x11 - movs r1, 0x11 - movs r2, 0x1C - movs r3, 0x12 - bl MenuFillWindowRectWithBlankTile - ldr r1, _0813F0F0 @ =0x02000000 - ldrb r0, [r1, 0x1E] - cmp r0, 0 - beq _0813F0EA - adds r0, r1, 0 - adds r0, 0x8 - movs r1, 0x11 - movs r2, 0x11 - bl MenuPrint -_0813F0EA: - pop {r0} - bx r0 - .align 2, 0 -_0813F0F0: .4byte 0x02000000 - thumb_func_end sub_813F0C8 - thumb_func_start unref_sub_813F0F4 unref_sub_813F0F4: @ 813F0F4 push {r4-r7,lr} diff --git a/asm/field_region_map.s b/asm/field_region_map.s new file mode 100644 index 000000000..37c97c3ec --- /dev/null +++ b/asm/field_region_map.s @@ -0,0 +1,274 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start FieldInitRegionMap +FieldInitRegionMap: @ 813EEB4 + push {r4,lr} + adds r4, r0, 0 + movs r0, 0 + bl SetVBlankCallback + ldr r2, _0813EED8 @ =0x02000000 + ldr r0, _0813EEDC @ =0x00000888 + adds r1, r2, r0 + movs r0, 0 + strh r0, [r1] + str r4, [r2] + ldr r0, _0813EEE0 @ =CB2_FieldInitRegionMap + bl SetMainCallback2 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EED8: .4byte 0x02000000 +_0813EEDC: .4byte 0x00000888 +_0813EEE0: .4byte CB2_FieldInitRegionMap + thumb_func_end FieldInitRegionMap + + thumb_func_start CB2_FieldInitRegionMap +CB2_FieldInitRegionMap: @ 813EEE4 + push {r4,lr} + sub sp, 0x4 + movs r0, 0x80 + lsls r0, 19 + movs r1, 0 + strh r1, [r0] + adds r0, 0x10 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + bl ResetSpriteData + bl FreeAllSpritePalettes + ldr r0, _0813EF98 @ =0x02000008 + movs r1, 0 + bl sub_80FA8EC + movs r0, 0 + movs r1, 0 + bl sub_80FBCF0 + movs r0, 0x1 + movs r1, 0x1 + bl sub_80FBB3C + ldr r4, _0813EF9C @ =gWindowConfig_81E709C + adds r0, r4, 0 + bl SetUpWindowConfig + adds r0, r4, 0 + bl InitMenuWindow + bl MenuZeroFillScreen + ldr r1, _0813EFA0 @ =REG_BG0CNT + movs r2, 0xF8 + lsls r2, 5 + adds r0, r2, 0 + strh r0, [r1] + movs r0, 0x15 + movs r1, 0 + movs r2, 0x1D + movs r3, 0x3 + bl MenuDrawTextWindow + ldr r0, _0813EFA4 @ =gOtherText_Hoenn + movs r1, 0x16 + movs r2, 0x1 + movs r3, 0x38 + bl sub_8072BD8 + movs r0, 0x10 + movs r1, 0x10 + movs r2, 0x1D + movs r3, 0x13 + bl MenuDrawTextWindow + bl sub_813F0C8 + ldr r0, _0813EFA8 @ =CB2_FieldRegionMap + bl SetMainCallback2 + ldr r0, _0813EFAC @ =VBlankCB_FieldRegionMap + bl SetVBlankCallback + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EF98: .4byte 0x02000008 +_0813EF9C: .4byte gWindowConfig_81E709C +_0813EFA0: .4byte REG_BG0CNT +_0813EFA4: .4byte gOtherText_Hoenn +_0813EFA8: .4byte CB2_FieldRegionMap +_0813EFAC: .4byte VBlankCB_FieldRegionMap + thumb_func_end CB2_FieldInitRegionMap + + thumb_func_start VBlankCB_FieldRegionMap +VBlankCB_FieldRegionMap: @ 813EFB0 + push {lr} + bl LoadOam + bl ProcessSpriteCopyRequests + bl TransferPlttBuffer + pop {r0} + bx r0 + thumb_func_end VBlankCB_FieldRegionMap + + thumb_func_start CB2_FieldRegionMap +CB2_FieldRegionMap: @ 813EFC4 + push {lr} + bl sub_813EFDC + bl AnimateSprites + bl BuildOamBuffer + bl UpdatePaletteFade + pop {r0} + bx r0 + thumb_func_end CB2_FieldRegionMap + + thumb_func_start sub_813EFDC +sub_813EFDC: @ 813EFDC + push {lr} + sub sp, 0x4 + ldr r1, _0813EFF8 @ =0x02000000 + ldr r2, _0813EFFC @ =0x00000888 + adds r0, r1, r2 + ldrh r0, [r0] + adds r2, r1, 0 + cmp r0, 0x4 + bhi _0813F0B8 + lsls r0, 2 + ldr r1, _0813F000 @ =_0813F004 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813EFF8: .4byte 0x02000000 +_0813EFFC: .4byte 0x00000888 +_0813F000: .4byte _0813F004 + .align 2, 0 +_0813F004: + .4byte _0813F018 + .4byte _0813F030 + .4byte _0813F04C + .4byte _0813F078 + .4byte _0813F0A0 +_0813F018: + movs r1, 0x80 + lsls r1, 19 + ldr r3, _0813F028 @ =0x00001541 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, _0813F02C @ =0x00000888 + adds r1, r2, r0 + b _0813F08E + .align 2, 0 +_0813F028: .4byte 0x00001541 +_0813F02C: .4byte 0x00000888 +_0813F030: + ldr r0, _0813F044 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0813F0B8 + ldr r3, _0813F048 @ =0x00000888 + adds r1, r2, r3 + b _0813F08E + .align 2, 0 +_0813F044: .4byte gPaletteFade +_0813F048: .4byte 0x00000888 +_0813F04C: + bl sub_80FAB60 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x3 + bne _0813F05E + bl sub_813F0C8 + b _0813F0B8 +_0813F05E: + cmp r0, 0x3 + blt _0813F0B8 + cmp r0, 0x5 + bgt _0813F0B8 + ldr r1, _0813F070 @ =0x02000000 + ldr r0, _0813F074 @ =0x00000888 + adds r1, r0 + b _0813F08E + .align 2, 0 +_0813F070: .4byte 0x02000000 +_0813F074: .4byte 0x00000888 +_0813F078: + movs r0, 0x1 + negs r0, r0 + movs r1, 0 + str r1, [sp] + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r1, _0813F098 @ =0x02000000 + ldr r2, _0813F09C @ =0x00000888 + adds r1, r2 +_0813F08E: + ldrh r0, [r1] + adds r0, 0x1 + strh r0, [r1] + b _0813F0B8 + .align 2, 0 +_0813F098: .4byte 0x02000000 +_0813F09C: .4byte 0x00000888 +_0813F0A0: + ldr r0, _0813F0C0 @ =gPaletteFade + ldrb r1, [r0, 0x7] + movs r0, 0x80 + ands r0, r1 + cmp r0, 0 + bne _0813F0B8 + bl sub_80FAB10 + ldr r0, _0813F0C4 @ =0x02000000 + ldr r0, [r0] + bl SetMainCallback2 +_0813F0B8: + add sp, 0x4 + pop {r0} + bx r0 + .align 2, 0 +_0813F0C0: .4byte gPaletteFade +_0813F0C4: .4byte 0x02000000 + thumb_func_end sub_813EFDC + + thumb_func_start sub_813F0C8 +sub_813F0C8: @ 813F0C8 + push {lr} + movs r0, 0x11 + movs r1, 0x11 + movs r2, 0x1C + movs r3, 0x12 + bl MenuFillWindowRectWithBlankTile + ldr r1, _0813F0F0 @ =0x02000000 + ldrb r0, [r1, 0x1E] + cmp r0, 0 + beq _0813F0EA + adds r0, r1, 0 + adds r0, 0x8 + movs r1, 0x11 + movs r2, 0x11 + bl MenuPrint +_0813F0EA: + pop {r0} + bx r0 + .align 2, 0 +_0813F0F0: .4byte 0x02000000 + thumb_func_end sub_813F0C8 + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/intro.s b/asm/intro.s new file mode 100644 index 000000000..21f3a236f --- /dev/null +++ b/asm/intro.s @@ -0,0 +1,4710 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_813CAF4 +sub_813CAF4: @ 813CAF4 + push {r4-r6,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r5, r0, 24 + ldr r1, _0813CB2C @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r4, r0, r1 + ldrh r0, [r4, 0x26] + adds r0, 0x1 + movs r6, 0 + strh r0, [r4, 0x26] + movs r1, 0x8 + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bne _0813CB18 + b _0813CC28 +_0813CB18: + cmp r0, 0x4 + bgt _0813CB30 + cmp r0, 0x2 + beq _0813CB60 + cmp r0, 0x2 + bgt _0813CBC4 + cmp r0, 0 + beq _0813CB46 + b _0813CC8E + .align 2, 0 +_0813CB2C: .4byte gTasks +_0813CB30: + cmp r0, 0x1E + beq _0813CBEE + cmp r0, 0x1E + bgt _0813CB3E + cmp r0, 0x14 + beq _0813CB8A + b _0813CC8E +_0813CB3E: + cmp r0, 0x28 + bne _0813CB44 + b _0813CC56 +_0813CB44: + b _0813CC8E +_0813CB46: + movs r1, 0x80 + lsls r1, 19 + movs r2, 0xE5 + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + ldr r0, _0813CB5C @ =REG_BG2CNT + strh r6, [r0] + movs r0, 0xFF + strh r0, [r4, 0x8] + b _0813CC8E + .align 2, 0 +_0813CB5C: .4byte REG_BG2CNT +_0813CB60: + ldr r0, _0813CBB0 @ =0x0000ffff + str r0, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + ldr r1, _0813CBB4 @ =REG_BG2CNT + ldr r2, _0813CBB8 @ =0x00000e07 + adds r0, r2, 0 + strh r0, [r1] + subs r1, 0xC + movs r2, 0xF5 + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + strh r6, [r4, 0xA] + strh r6, [r4, 0xC] + movs r0, 0x14 + strh r0, [r4, 0x8] +_0813CB8A: + ldr r2, _0813CBBC @ =REG_BG2VOFS + ldr r0, _0813CBC0 @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xA] + strh r0, [r2] + subs r2, 0x2 + ldrh r0, [r1, 0xC] + strh r0, [r2] + ldrh r0, [r1, 0xA] + adds r0, 0x6 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xC] + subs r0, 0x8 + strh r0, [r1, 0xC] + b _0813CC8E + .align 2, 0 +_0813CBB0: .4byte 0x0000ffff +_0813CBB4: .4byte REG_BG2CNT +_0813CBB8: .4byte 0x00000e07 +_0813CBBC: .4byte REG_BG2VOFS +_0813CBC0: .4byte gTasks +_0813CBC4: + ldr r0, _0813CC14 @ =0x0000ffff + str r0, [sp] + movs r0, 0x1 + movs r1, 0 + movs r2, 0x10 + movs r3, 0 + bl BeginNormalPaletteFade + ldr r1, _0813CC18 @ =REG_BG2CNT + ldr r2, _0813CC1C @ =0x00000e07 + adds r0, r2, 0 + strh r0, [r1] + subs r1, 0xC + movs r2, 0xF5 + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + strh r6, [r4, 0xA] + strh r6, [r4, 0xC] + movs r0, 0x1E + strh r0, [r4, 0x8] +_0813CBEE: + ldr r2, _0813CC20 @ =REG_BG2VOFS + ldr r0, _0813CC24 @ =gTasks + lsls r1, r5, 2 + adds r1, r5 + lsls r1, 3 + adds r1, r0 + ldrh r0, [r1, 0xA] + strh r0, [r2] + subs r2, 0x2 + ldrh r0, [r1, 0xC] + strh r0, [r2] + ldrh r0, [r1, 0xA] + subs r0, 0x6 + strh r0, [r1, 0xA] + ldrh r0, [r1, 0xC] + adds r0, 0x8 + strh r0, [r1, 0xC] + b _0813CC8E + .align 2, 0 +_0813CC14: .4byte 0x0000ffff +_0813CC18: .4byte REG_BG2CNT +_0813CC1C: .4byte 0x00000e07 +_0813CC20: .4byte REG_BG2VOFS +_0813CC24: .4byte gTasks +_0813CC28: + ldr r0, _0813CC98 @ =0x000037f7 + str r0, [sp] + movs r0, 0x1 + movs r1, 0x5 + movs r2, 0 + movs r3, 0x10 + bl BeginNormalPaletteFade + ldr r1, _0813CC9C @ =REG_BG2CNT + ldr r2, _0813CCA0 @ =0x00000e07 + adds r0, r2, 0 + strh r0, [r1] + subs r1, 0xC + movs r2, 0xF5 + lsls r2, 6 + adds r0, r2, 0 + strh r0, [r1] + strh r6, [r4, 0xA] + strh r6, [r4, 0xC] + movs r0, 0x8 + strh r0, [r4, 0xE] + movs r0, 0x28 + strh r0, [r4, 0x8] +_0813CC56: + ldr r2, _0813CCA4 @ =REG_BG2VOFS + ldr r1, _0813CCA8 @ =gTasks + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + adds r3, r0, r1 + ldrh r0, [r3, 0xA] + strh r0, [r2] + ldr r1, _0813CCAC @ =REG_BG2HOFS + ldrh r0, [r3, 0xC] + strh r0, [r1] + ldrh r0, [r3, 0xA] + ldrh r2, [r3, 0xE] + subs r0, r2 + strh r0, [r3, 0xA] + ldrh r1, [r3, 0xC] + adds r0, r2, r1 + strh r0, [r3, 0xC] + ldrh r1, [r3, 0x26] + movs r0, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0813CC8E + lsls r0, r2, 16 + cmp r0, 0 + beq _0813CC8E + subs r0, r2, 0x1 + strh r0, [r3, 0xE] +_0813CC8E: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_0813CC98: .4byte 0x000037f7 +_0813CC9C: .4byte REG_BG2CNT +_0813CCA0: .4byte 0x00000e07 +_0813CCA4: .4byte REG_BG2VOFS +_0813CCA8: .4byte gTasks +_0813CCAC: .4byte REG_BG2HOFS + thumb_func_end sub_813CAF4 + + thumb_func_start intro_reset_and_hide_bgs +intro_reset_and_hide_bgs: @ 813CCB0 + movs r0, 0x80 + lsls r0, 19 + movs r1, 0 + strh r1, [r0] + adds r0, 0x1C + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + subs r0, 0x6 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + subs r0, 0x6 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + subs r0, 0x6 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x3E + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + adds r0, 0x2 + strh r1, [r0] + bx lr + thumb_func_end intro_reset_and_hide_bgs + + thumb_func_start sub_813CCE8 +sub_813CCE8: @ 813CCE8 + push {r4,lr} + lsls r0, 24 + lsrs r3, r0, 24 + ldr r1, _0813CD0C @ =gTasks + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r0, r1 + movs r2, 0x8 + ldrsh r0, [r0, r2] + adds r2, r1, 0 + cmp r0, 0x4 + bhi _0813CD28 + lsls r0, 2 + ldr r1, _0813CD10 @ =_0813CD14 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813CD0C: .4byte gTasks +_0813CD10: .4byte _0813CD14 + .align 2, 0 +_0813CD14: + .4byte _0813CD28 + .4byte _0813CD5C + .4byte _0813CD8C + .4byte _0813CDA8 + .4byte _0813CDFC +_0813CD28: + ldr r1, _0813CD54 @ =REG_BLDCNT + ldr r4, _0813CD58 @ =0x00003f50 + adds r0, r4, 0 + strh r0, [r1] + adds r1, 0x2 + movs r4, 0x80 + lsls r4, 5 + adds r0, r4, 0 + strh r0, [r1] + adds r1, 0x2 + movs r0, 0 + strh r0, [r1] + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r0, r2 + movs r1, 0x40 + strh r1, [r0, 0xA] + movs r1, 0x1 + strh r1, [r0, 0x8] + b _0813CE26 + .align 2, 0 +_0813CD54: .4byte REG_BLDCNT +_0813CD58: .4byte 0x00003f50 +_0813CD5C: + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r2, r0, r2 + ldrh r1, [r2, 0xA] + movs r3, 0xA + ldrsh r0, [r2, r3] + cmp r0, 0 + beq _0813CD78 + subs r0, r1, 0x1 + strh r0, [r2, 0xA] + movs r4, 0xA + ldrsh r0, [r2, r4] + b _0813CDC2 +_0813CD78: + ldr r1, _0813CD84 @ =REG_BLDALPHA + ldr r0, _0813CD88 @ =gUnknown_08393E64 + ldrh r0, [r0] + strh r0, [r1] + movs r0, 0x80 + b _0813CDEA + .align 2, 0 +_0813CD84: .4byte REG_BLDALPHA +_0813CD88: .4byte gUnknown_08393E64 +_0813CD8C: + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0xA] + movs r3, 0xA + ldrsh r2, [r1, r3] + cmp r2, 0 + bne _0813CE0E + strh r2, [r1, 0xA] + ldrh r0, [r1, 0x8] + adds r0, 0x1 + strh r0, [r1, 0x8] + b _0813CE26 +_0813CDA8: + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r2, r0, r2 + ldrh r1, [r2, 0xA] + movs r4, 0xA + ldrsh r0, [r2, r4] + cmp r0, 0x3D + bgt _0813CDE0 + adds r0, r1, 0x1 + strh r0, [r2, 0xA] + movs r1, 0xA + ldrsh r0, [r2, r1] +_0813CDC2: + lsrs r1, r0, 31 + adds r0, r1 + movs r2, 0xFF + lsls r2, 1 + ldr r3, _0813CDD8 @ =REG_BLDALPHA + ldr r1, _0813CDDC @ =gUnknown_08393E64 + ands r0, r2 + adds r0, r1 + ldrh r0, [r0] + strh r0, [r3] + b _0813CE26 + .align 2, 0 +_0813CDD8: .4byte REG_BLDALPHA +_0813CDDC: .4byte gUnknown_08393E64 +_0813CDE0: + ldr r1, _0813CDF4 @ =REG_BLDALPHA + ldr r0, _0813CDF8 @ =gUnknown_08393E64 + ldrh r0, [r0, 0x3E] + strh r0, [r1] + movs r0, 0x10 +_0813CDEA: + strh r0, [r2, 0xA] + ldrh r0, [r2, 0x8] + adds r0, 0x1 + strh r0, [r2, 0x8] + b _0813CE26 + .align 2, 0 +_0813CDF4: .4byte REG_BLDALPHA +_0813CDF8: .4byte gUnknown_08393E64 +_0813CDFC: + lsls r0, r3, 2 + adds r0, r3 + lsls r0, 3 + adds r1, r0, r2 + ldrh r0, [r1, 0xA] + movs r4, 0xA + ldrsh r2, [r1, r4] + cmp r2, 0 + beq _0813CE14 +_0813CE0E: + subs r0, 0x1 + strh r0, [r1, 0xA] + b _0813CE26 +_0813CE14: + ldr r0, _0813CE2C @ =REG_BLDCNT + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, 0x2 + strh r2, [r0] + adds r0, r3, 0 + bl DestroyTask +_0813CE26: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813CE2C: .4byte REG_BLDCNT + thumb_func_end sub_813CCE8 + + thumb_func_start sub_813CE30 +sub_813CE30: @ 813CE30 + push {r4,lr} + sub sp, 0x24 + lsls r2, 16 + lsrs r2, 16 + movs r4, 0x80 + lsls r4, 8 + str r4, [sp] + str r4, [sp, 0x4] + mov r4, sp + strh r0, [r4, 0x8] + mov r0, sp + strh r1, [r0, 0xA] + strh r2, [r0, 0xC] + strh r2, [r0, 0xE] + strh r3, [r0, 0x10] + add r4, sp, 0x14 + adds r1, r4, 0 + movs r2, 0x1 + bl BgAffineSet + ldr r1, _0813CE84 @ =REG_BG2PA + ldrh r0, [r4] + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r4, 0x2] + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r4, 0x4] + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r4, 0x6] + strh r0, [r1] + adds r1, 0x2 + ldr r0, [r4, 0x8] + str r0, [r1] + adds r1, 0x4 + ldr r0, [r4, 0xC] + str r0, [r1] + add sp, 0x24 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813CE84: .4byte REG_BG2PA + thumb_func_end sub_813CE30 + + thumb_func_start sub_813CE88 +sub_813CE88: @ 813CE88 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + ldr r4, [sp, 0x30] + lsls r0, 16 + lsrs r7, r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r2, 16 + lsrs r2, 16 + mov r10, r2 + lsls r3, 16 + lsrs r3, 16 + mov r8, r3 + lsls r4, 24 + lsrs r6, r4, 24 + cmp r6, 0 + beq _0813CEF0 + lsls r0, r7, 3 + ldr r1, _0813CEE4 @ =gMonFrontPicTable + adds r0, r1 + ldr r1, _0813CEE8 @ =gMonFrontPicCoords + lsls r2, r7, 2 + adds r2, r1 + ldrb r1, [r2] + ldrb r2, [r2, 0x1] + movs r3, 0x80 + lsls r3, 18 + ldr r5, _0813CEEC @ =gUnknown_0840B5A0 + mov r6, r8 + lsls r4, r6, 2 + adds r4, r5 + ldr r4, [r4] + str r4, [sp] + str r7, [sp, 0x4] + movs r4, 0 + str r4, [sp, 0x8] + movs r4, 0x1 + str r4, [sp, 0xC] + bl sub_800D378 + b _0813CF1C + .align 2, 0 +_0813CEE4: .4byte gMonFrontPicTable +_0813CEE8: .4byte gMonFrontPicCoords +_0813CEEC: .4byte gUnknown_0840B5A0 +_0813CEF0: + lsls r0, r7, 3 + ldr r1, _0813CF90 @ =gMonBackPicTable + adds r0, r1 + ldr r1, _0813CF94 @ =gMonBackPicCoords + lsls r2, r7, 2 + adds r2, r1 + ldrb r1, [r2] + ldrb r2, [r2, 0x1] + movs r3, 0x80 + lsls r3, 18 + ldr r4, _0813CF98 @ =gUnknown_0840B5A0 + mov r12, r4 + mov r5, r8 + lsls r4, r5, 2 + add r4, r12 + ldr r4, [r4] + str r4, [sp] + str r7, [sp, 0x4] + str r6, [sp, 0x8] + str r6, [sp, 0xC] + bl sub_800D378 +_0813CF1C: + ldr r2, _0813CF9C @ =0x0000ffff + adds r0, r7, 0 + movs r1, 0 + bl species_and_otid_get_pal + mov r6, r8 + lsls r4, r6, 4 + movs r2, 0x80 + lsls r2, 1 + adds r1, r4, r2 + lsls r1, 16 + lsrs r1, 16 + movs r2, 0x20 + bl LoadCompressedPalette + lsls r1, r6, 24 + lsrs r1, 24 + mov r0, r8 + bl sub_8143648 + ldr r0, _0813CFA0 @ =gUnknown_02024E8C + mov r3, r9 + lsls r1, r3, 16 + asrs r1, 16 + mov r5, r10 + lsls r2, r5, 16 + asrs r2, 16 + mov r3, r8 + adds r3, 0x1 + lsls r3, 26 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813CFA4 @ =gSprites + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r4 + movs r3, 0xD + negs r3, r3 + ands r1, r3 + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2, 0x5] + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0813CF90: .4byte gMonBackPicTable +_0813CF94: .4byte gMonBackPicCoords +_0813CF98: .4byte gUnknown_0840B5A0 +_0813CF9C: .4byte 0x0000ffff +_0813CFA0: .4byte gUnknown_02024E8C +_0813CFA4: .4byte gSprites + thumb_func_end sub_813CE88 + + thumb_func_start sub_813CFA8 +sub_813CFA8: @ 813CFA8 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + mov r9, r1 + mov r10, r2 + adds r6, r3, 0 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r2, 16 + lsrs r2, 16 + mov r10, r2 + lsls r6, 16 + lsrs r6, 16 + lsls r7, r0, 3 + ldr r1, _0813D068 @ =gTrainerBackPicTable + mov r8, r1 + add r8, r7 + ldr r1, _0813D06C @ =gTrainerBackPicCoords + lsls r2, r0, 2 + adds r2, r1 + ldrb r1, [r2] + ldrb r2, [r2, 0x1] + movs r3, 0x80 + lsls r3, 18 + ldr r5, _0813D070 @ =gUnknown_0840B5A0 + lsls r4, r6, 2 + adds r4, r5 + ldr r4, [r4] + str r4, [sp] + str r0, [sp, 0x4] + mov r0, r8 + bl DecompressPicFromTable_2 + ldr r0, _0813D074 @ =gTrainerBackPicPaletteTable + adds r0, r7, r0 + ldr r0, [r0] + lsls r4, r6, 4 + movs r2, 0x80 + lsls r2, 1 + adds r1, r4, r2 + lsls r1, 16 + lsrs r1, 16 + movs r2, 0x20 + bl LoadCompressedPalette + lsls r1, r6, 24 + lsrs r1, 24 + adds r0, r6, 0 + bl sub_8143680 + ldr r0, _0813D078 @ =gUnknown_02024E8C + ldr r1, _0813D07C @ =gUnknown_0840B064 + str r1, [r0, 0x8] + mov r1, r9 + lsls r1, 16 + asrs r1, 16 + mov r9, r1 + mov r2, r10 + lsls r2, 16 + asrs r2, 16 + mov r10, r2 + movs r3, 0x1 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + ldr r1, _0813D080 @ =gSprites + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r1 + ldrb r3, [r2, 0x5] + movs r1, 0xF + ands r1, r3 + orrs r1, r4 + movs r3, 0xD + negs r3, r3 + ands r1, r3 + movs r3, 0x4 + orrs r1, r3 + strb r1, [r2, 0x5] + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0813D068: .4byte gTrainerBackPicTable +_0813D06C: .4byte gTrainerBackPicCoords +_0813D070: .4byte gUnknown_0840B5A0 +_0813D074: .4byte gTrainerBackPicPaletteTable +_0813D078: .4byte gUnknown_02024E8C +_0813D07C: .4byte gUnknown_0840B064 +_0813D080: .4byte gSprites + thumb_func_end sub_813CFA8 + + thumb_func_start sub_813D084 +sub_813D084: @ 813D084 + push {lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + beq _0813D0A0 + cmp r0, 0x1 + ble _0813D096 + cmp r0, 0x2 + beq _0813D0A8 +_0813D096: + ldr r2, _0813D09C @ =0x00003ff6 + b _0813D0AA + .align 2, 0 +_0813D09C: .4byte 0x00003ff6 +_0813D0A0: + ldr r2, _0813D0A4 @ =0x000031df + b _0813D0AA + .align 2, 0 +_0813D0A4: .4byte 0x000031df +_0813D0A8: + ldr r2, _0813D0C0 @ =0x0000518c +_0813D0AA: + ldr r0, _0813D0C4 @ =gPlttBufferUnfaded + movs r1, 0xF1 + lsls r1, 1 + adds r0, r1 + strh r2, [r0] + ldr r0, _0813D0C8 @ =gPlttBufferFaded + adds r0, r1 + strh r2, [r0] + pop {r0} + bx r0 + .align 2, 0 +_0813D0C0: .4byte 0x0000518c +_0813D0C4: .4byte gPlttBufferUnfaded +_0813D0C8: .4byte gPlttBufferFaded + thumb_func_end sub_813D084 + + thumb_func_start sub_813D0CC +sub_813D0CC: @ 813D0CC + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0xBF + ble _0813D148 + ldrh r1, [r4, 0x34] + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0813D0EA + subs r0, r1, 0x1 + strh r0, [r4, 0x34] + b _0813D14E +_0813D0EA: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x32] + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + movs r0, 0x32 + ldrsh r1, [r4, r0] + lsls r0, r1, 1 + adds r0, r1 + lsls r0, 5 + subs r0, r1 + movs r1, 0x64 + bl __divsi3 + strh r0, [r4, 0x32] + movs r2, 0x32 + ldrsh r1, [r4, r2] + adds r0, r1, 0 + subs r0, 0xC0 + cmp r0, 0 + bge _0813D12C + adds r0, 0x7F +_0813D12C: + asrs r0, 7 + adds r0, 0x9 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0xF + bls _0813D13A + movs r0, 0xF +_0813D13A: + lsls r2, r0, 4 + ldrb r1, [r4, 0x5] + movs r0, 0xF + ands r0, r1 + orrs r0, r2 + strb r0, [r4, 0x5] + b _0813D14E +_0813D148: + adds r0, r4, 0 + bl DestroySprite +_0813D14E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813D0CC + + thumb_func_start sub_813D158 +sub_813D158: @ 813D158 + push {r4,lr} + adds r4, r0, 0 + ldr r2, _0813D1CC @ =gSprites + movs r1, 0x3C + ldrsh r0, [r4, r1] + lsls r1, r0, 4 + adds r1, r0 + lsls r1, 2 + adds r1, r2 + movs r3, 0x3C + ldrsh r0, [r1, r3] + cmp r0, 0 + beq _0813D1D4 + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x3 + bl StartSpriteAnim + movs r0, 0x80 + lsls r0, 3 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x30] + movs r0, 0x3 + ands r0, r1 + lsls r0, 3 + strh r0, [r4, 0x34] + ldr r0, _0813D1D0 @ =sub_813D0CC + str r0, [r4, 0x1C] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x2 + bl CalcCenterToCornerVec + b _0813D200 + .align 2, 0 +_0813D1CC: .4byte gSprites +_0813D1D0: .4byte sub_813D0CC +_0813D1D4: + ldrh r0, [r1, 0x24] + strh r0, [r4, 0x24] + movs r0, 0x3C + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x26] + strh r0, [r4, 0x26] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x20] + strh r0, [r4, 0x20] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + ldrh r0, [r0, 0x22] + strh r0, [r4, 0x22] +_0813D200: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813D158 + + thumb_func_start sub_813D208 +sub_813D208: @ 813D208 + push {lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0 + beq _0813D218 + ldr r0, _0813D21C @ =sub_813D220 + str r0, [r1, 0x1C] +_0813D218: + pop {r0} + bx r0 + .align 2, 0 +_0813D21C: .4byte sub_813D220 + thumb_func_end sub_813D208 + + thumb_func_start sub_813D220 +sub_813D220: @ 813D220 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r7, r0, 0 + ldrh r4, [r7, 0x20] + movs r1, 0x20 + ldrsh r0, [r7, r1] + cmp r0, 0x74 + bgt _0813D260 + ldrh r0, [r7, 0x26] + ldrh r1, [r7, 0x22] + adds r0, r1 + movs r1, 0 + strh r0, [r7, 0x22] + strh r1, [r7, 0x26] + adds r0, r4, 0x4 + strh r0, [r7, 0x20] + ldr r0, _0813D258 @ =0x0000fffc + strh r0, [r7, 0x24] + movs r0, 0x80 + strh r0, [r7, 0x36] + ldr r0, _0813D25C @ =sub_813D368 + str r0, [r7, 0x1C] + b _0813D352 + .align 2, 0 +_0813D258: .4byte 0x0000fffc +_0813D25C: .4byte sub_813D368 +_0813D260: + ldrh r1, [r7, 0x36] + ldr r5, _0813D364 @ =gSineTable + lsls r0, r1, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r2, [r0] + adds r0, r1, 0 + adds r0, 0x40 + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r3, [r0] + adds r1, 0x2 + strh r1, [r7, 0x36] + lsls r2, 16 + asrs r0, r2, 16 + cmp r0, 0 + bge _0813D286 + adds r0, 0x1F +_0813D286: + asrs r0, 5 + strh r0, [r7, 0x26] + subs r0, r4, 0x1 + strh r0, [r7, 0x20] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813D29C + ldrh r0, [r7, 0x22] + adds r0, 0x1 + strh r0, [r7, 0x22] +_0813D29C: + lsls r0, r3, 16 + asrs r0, 16 + negs r0, r0 + cmp r0, 0 + bge _0813D2A8 + adds r0, 0xF +_0813D2A8: + lsls r1, r0, 12 + lsrs r1, 16 + ldrh r4, [r7, 0x32] + ldrh r3, [r7, 0x34] + adds r0, r1, 0 + subs r0, 0x10 + lsls r0, 24 + lsrs r0, 23 + adds r0, r5 + ldrh r2, [r0] + adds r1, 0x30 + lsls r1, 24 + lsrs r1, 23 + adds r1, r5 + movs r0, 0 + ldrsh r1, [r1, r0] + adds r0, r1, 0 + muls r0, r4 + cmp r0, 0 + bge _0813D2D2 + adds r0, 0xFF +_0813D2D2: + lsls r0, 8 + lsrs r0, 16 + mov r8, r0 + lsls r0, r2, 16 + asrs r2, r0, 16 + negs r0, r2 + muls r0, r3 + cmp r0, 0 + bge _0813D2E6 + adds r0, 0xFF +_0813D2E6: + lsls r0, 8 + lsrs r0, 16 + mov r10, r0 + adds r0, r2, 0 + muls r0, r4 + cmp r0, 0 + bge _0813D2F6 + adds r0, 0xFF +_0813D2F6: + lsls r0, 8 + lsrs r5, r0, 16 + adds r0, r1, 0 + muls r0, r3 + cmp r0, 0 + bge _0813D304 + adds r0, 0xFF +_0813D304: + lsls r6, r0, 8 + lsrs r6, 16 + ldrh r0, [r7, 0x30] + lsls r0, 24 + lsrs r0, 24 + str r3, [sp] + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + ldrh r0, [r7, 0x30] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + mov r9, r5 + mov r1, r10 + lsls r5, r1, 16 + lsrs r3, r5, 16 + lsls r4, r6, 16 + str r6, [sp] + mov r1, r8 + mov r2, r9 + bl SetOamMatrix + ldrh r0, [r7, 0x30] + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + lsls r5, 1 + lsrs r5, 16 + lsls r4, 1 + lsrs r4, 16 + str r4, [sp] + mov r1, r8 + mov r2, r9 + adds r3, r5, 0 + bl SetOamMatrix +_0813D352: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813D364: .4byte gSineTable + thumb_func_end sub_813D220 + + thumb_func_start sub_813D368 +sub_813D368: @ 813D368 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x3A] + adds r1, 0x40 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + ldrh r0, [r4, 0x30] + adds r0, 0x1 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x3A] + adds r1, 0x40 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + ldrh r0, [r4, 0x30] + adds r0, 0x2 + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x3A] + adds r1, 0x40 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + ldrh r1, [r4, 0x36] + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r0, 0x40 + beq _0813D400 + adds r0, r1, 0 + subs r0, 0x8 + strh r0, [r4, 0x36] + ldrh r0, [r4, 0x36] + adds r1, r0, 0 + ldr r2, _0813D3FC @ =gSineTable + adds r0, 0x40 + lsls r0, 24 + lsrs r0, 23 + adds r0, r2 + movs r3, 0 + ldrsh r0, [r0, r3] + cmp r0, 0 + bge _0813D3E2 + adds r0, 0x3F +_0813D3E2: + asrs r0, 6 + strh r0, [r4, 0x24] + lsls r0, r1, 24 + lsrs r0, 23 + adds r0, r2 + movs r1, 0 + ldrsh r0, [r0, r1] + cmp r0, 0 + bge _0813D3F6 + adds r0, 0x3F +_0813D3F6: + asrs r0, 6 + strh r0, [r4, 0x26] + b _0813D408 + .align 2, 0 +_0813D3FC: .4byte gSineTable +_0813D400: + movs r0, 0 + strh r0, [r4, 0x36] + ldr r0, _0813D410 @ =sub_813D414 + str r0, [r4, 0x1C] +_0813D408: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D410: .4byte sub_813D414 + thumb_func_end sub_813D368 + + thumb_func_start sub_813D414 +sub_813D414: @ 813D414 + push {r4,lr} + adds r1, r0, 0 + movs r2, 0x2E + ldrsh r0, [r1, r2] + cmp r0, 0x2 + beq _0813D474 + ldrh r0, [r1, 0x36] + adds r0, 0x8 + strh r0, [r1, 0x36] + ldr r3, _0813D470 @ =gSineTable + lsls r0, 24 + lsrs r0, 23 + adds r0, r3 + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r0, 0 + bge _0813D438 + adds r0, 0xF +_0813D438: + asrs r0, 4 + adds r0, 0x40 + lsls r0, 16 + lsrs r2, r0, 16 + adds r0, r2, 0 + adds r0, 0x40 + lsls r0, 24 + lsrs r0, 23 + adds r0, r3 + movs r4, 0 + ldrsh r0, [r0, r4] + cmp r0, 0 + bge _0813D454 + adds r0, 0x3F +_0813D454: + asrs r0, 6 + strh r0, [r1, 0x24] + lsls r0, r2, 24 + lsrs r0, 23 + adds r0, r3 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bge _0813D468 + adds r0, 0x3F +_0813D468: + asrs r0, 6 + strh r0, [r1, 0x26] + b _0813D478 + .align 2, 0 +_0813D470: .4byte gSineTable +_0813D474: + ldr r0, _0813D480 @ =sub_813D484 + str r0, [r1, 0x1C] +_0813D478: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D480: .4byte sub_813D484 + thumb_func_end sub_813D414 + + thumb_func_start sub_813D484 +sub_813D484: @ 813D484 + push {r4,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x22] + movs r0, 0x22 + ldrsh r1, [r4, r0] + movs r3, 0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _0813D49C + adds r0, r2, 0x4 + strh r0, [r4, 0x22] + b _0813D4F8 +_0813D49C: + movs r0, 0x1 + strh r0, [r4, 0x3C] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x3 + bl StartSpriteAnim + movs r0, 0x80 + lsls r0, 3 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x30] + movs r0, 0x3 + ands r0, r1 + lsls r0, 3 + strh r0, [r4, 0x34] + ldr r0, _0813D500 @ =sub_813D0CC + str r0, [r4, 0x1C] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x2 + bl CalcCenterToCornerVec +_0813D4F8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D500: .4byte sub_813D0CC + thumb_func_end sub_813D484 + + thumb_func_start sub_813D504 +sub_813D504: @ 813D504 + push {r4,lr} + adds r4, r0, 0 + ldrh r2, [r4, 0x22] + movs r0, 0x22 + ldrsh r1, [r4, r0] + movs r3, 0x38 + ldrsh r0, [r4, r3] + cmp r1, r0 + bge _0813D51C + adds r0, r2, 0x4 + strh r0, [r4, 0x22] + b _0813D578 +_0813D51C: + movs r0, 0x1 + strh r0, [r4, 0x3C] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r4, 0x24] + ldrh r1, [r4, 0x20] + adds r0, r1 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x26] + ldrh r3, [r4, 0x22] + adds r0, r3 + strh r0, [r4, 0x22] + adds r0, r4, 0 + movs r1, 0x3 + bl StartSpriteAnim + movs r0, 0x80 + lsls r0, 3 + strh r0, [r4, 0x32] + ldrh r1, [r4, 0x30] + movs r0, 0x3 + ands r0, r1 + lsls r0, 3 + strh r0, [r4, 0x34] + ldr r0, _0813D580 @ =sub_813D0CC + str r0, [r4, 0x1C] + ldrb r1, [r4, 0x1] + movs r0, 0x3F + ands r0, r1 + movs r1, 0x40 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r0, [r4, 0x3] + movs r1, 0xC0 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x2 + bl CalcCenterToCornerVec +_0813D578: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D580: .4byte sub_813D0CC + thumb_func_end sub_813D504 + + thumb_func_start sub_813D584 +sub_813D584: @ 813D584 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + adds r4, r0, 0 + adds r5, r1, 0 + ldr r6, [sp, 0x34] + ldr r0, [sp, 0x38] + mov r8, r0 + lsls r4, 16 + lsls r5, 16 + lsls r2, 16 + lsrs r2, 16 + str r2, [sp, 0x8] + lsls r3, 16 + lsrs r3, 16 + str r3, [sp, 0xC] + lsls r6, 16 + lsrs r6, 16 + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + ldr r0, _0813D640 @ =gSpriteTemplate_840AE20 + lsrs r2, r4, 16 + mov r10, r2 + asrs r4, 16 + lsrs r1, r5, 16 + str r1, [sp, 0x4] + asrs r5, 16 + adds r1, r4, 0 + adds r2, r5, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r7, r0, 24 + ldr r2, _0813D644 @ =gSprites + mov r9, r2 + lsls r0, r7, 4 + adds r0, r7 + lsls r5, r0, 2 + adds r4, r5, r2 + movs r0, 0 + strh r0, [r4, 0x2E] + strh r0, [r4, 0x3C] + mov r0, sp + ldrh r0, [r0, 0xC] + strh r0, [r4, 0x30] + mov r1, sp + ldrh r1, [r1, 0x8] + strh r1, [r4, 0x32] + mov r2, sp + ldrh r2, [r2, 0x8] + strh r2, [r4, 0x34] + strh r6, [r4, 0x38] + mov r0, sp + ldrh r0, [r0, 0x8] + strh r0, [r4, 0x3A] + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r0, 0x1F + ldr r1, [sp, 0xC] + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x2 + movs r3, 0x2 + bl CalcCenterToCornerVec + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAnim + mov r1, r8 + cmp r1, 0 + bne _0813D64C + mov r0, r9 + adds r0, 0x1C + adds r0, r5, r0 + ldr r1, _0813D648 @ =sub_813D208 + b _0813D654 + .align 2, 0 +_0813D640: .4byte gSpriteTemplate_840AE20 +_0813D644: .4byte gSprites +_0813D648: .4byte sub_813D208 +_0813D64C: + mov r0, r9 + adds r0, 0x1C + adds r0, r5, r0 + ldr r1, _0813D774 @ =sub_813D504 +_0813D654: + str r1, [r0] + str r7, [sp, 0x10] + mov r2, r10 + lsls r2, 16 + asrs r2, 16 + mov r10, r2 + ldr r0, [sp, 0x4] + lsls r0, 16 + asrs r0, 16 + mov r8, r0 + ldr r0, _0813D778 @ =gSpriteTemplate_840AE20 + mov r1, r10 + mov r2, r8 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r7, r0, 24 + ldr r5, _0813D77C @ =gSprites + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r0, r4, r5 + mov r1, sp + ldrh r1, [r1, 0x10] + strh r1, [r0, 0x3C] + ldr r2, [sp, 0xC] + adds r2, 0x1 + mov r9, r2 + strh r2, [r0, 0x30] + ldrb r1, [r0, 0x1] + movs r2, 0x3 + orrs r1, r2 + strb r1, [r0, 0x1] + mov r2, r9 + movs r1, 0x1F + ands r2, r1 + lsls r2, 1 + ldrb r3, [r0, 0x3] + movs r6, 0x3F + negs r6, r6 + adds r1, r6, 0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, 0x3] + movs r1, 0 + movs r2, 0x2 + movs r3, 0x2 + bl CalcCenterToCornerVec + ldr r2, _0813D780 @ =gSprites + 0x1C + adds r4, r2 + ldr r0, _0813D784 @ =sub_813D158 + str r0, [r4] + ldr r0, _0813D778 @ =gSpriteTemplate_840AE20 + mov r1, r10 + mov r2, r8 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r7, r0, 24 + lsls r4, r7, 4 + adds r4, r7 + lsls r4, 2 + adds r5, r4, r5 + mov r1, sp + ldrh r1, [r1, 0x10] + strh r1, [r5, 0x3C] + ldr r2, [sp, 0xC] + adds r2, 0x2 + mov r8, r2 + strh r2, [r5, 0x30] + adds r0, r5, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldrb r0, [r5, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r5, 0x1] + mov r0, r8 + movs r2, 0x1F + ands r0, r2 + lsls r0, 1 + ldrb r1, [r5, 0x3] + ands r6, r1 + orrs r6, r0 + strb r6, [r5, 0x3] + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x2 + movs r3, 0x2 + bl CalcCenterToCornerVec + ldr r0, _0813D780 @ =gSprites + 0x1C + adds r4, r0 + ldr r1, _0813D784 @ =sub_813D158 + str r1, [r4] + ldr r2, [sp, 0xC] + lsls r0, r2, 24 + lsrs r0, 24 + ldr r5, [sp, 0x8] + adds r5, 0x20 + lsls r4, r5, 16 + lsrs r4, 16 + str r4, [sp] + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + mov r0, r9 + lsls r0, 24 + lsrs r0, 24 + mov r9, r0 + str r4, [sp] + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + mov r1, r8 + lsls r1, 24 + lsrs r1, 24 + mov r8, r1 + lsls r5, 17 + lsrs r5, 16 + str r5, [sp] + mov r0, r8 + adds r1, r4, 0 + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + ldr r0, [sp, 0x10] + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0813D774: .4byte sub_813D504 +_0813D778: .4byte gSpriteTemplate_840AE20 +_0813D77C: .4byte gSprites +_0813D780: .4byte gSprites + 0x1C +_0813D784: .4byte sub_813D158 + thumb_func_end sub_813D584 + + thumb_func_start sub_813D788 +sub_813D788: @ 813D788 + push {r4,r5,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _0813D830 + lsls r0, 2 + ldr r1, _0813D7A0 @ =_0813D7A4 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813D7A0: .4byte _0813D7A4 + .align 2, 0 +_0813D7A4: + .4byte _0813D7B8 + .4byte _0813D7C6 + .4byte _0813D7E4 + .4byte _0813D80C + .4byte _0813D816 +_0813D7B8: + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnimIfDifferent + ldrh r0, [r4, 0x20] + subs r0, 0x1 + b _0813D82E +_0813D7C6: + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnimIfDifferent + ldr r0, _0813D7E0 @ =gIntroFrameCounter + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0813D87A + ldrh r0, [r4, 0x20] + adds r0, 0x1 + b _0813D82E + .align 2, 0 +_0813D7E0: .4byte gIntroFrameCounter +_0813D7E4: + adds r0, r4, 0 + movs r1, 0x2 + bl StartSpriteAnimIfDifferent + ldrh r2, [r4, 0x20] + movs r1, 0x20 + ldrsh r0, [r4, r1] + cmp r0, 0x78 + ble _0813D802 + ldr r0, _0813D808 @ =gIntroFrameCounter + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + beq _0813D83C +_0813D802: + adds r0, r2, 0x1 + b _0813D82E + .align 2, 0 +_0813D808: .4byte gIntroFrameCounter +_0813D80C: + adds r0, r4, 0 + movs r1, 0x3 + bl StartSpriteAnimIfDifferent + b _0813D830 +_0813D816: + adds r0, r4, 0 + movs r1, 0 + bl StartSpriteAnimIfDifferent + ldrh r2, [r4, 0x20] + movs r0, 0x20 + ldrsh r1, [r4, r0] + movs r0, 0x20 + negs r0, r0 + cmp r1, r0 + ble _0813D830 + subs r0, r2, 0x2 +_0813D82E: + strh r0, [r4, 0x20] +_0813D830: + ldr r0, _0813D84C @ =gIntroFrameCounter + ldr r0, [r0] + movs r1, 0x7 + ands r0, r1 + cmp r0, 0 + bne _0813D87A +_0813D83C: + movs r1, 0x26 + ldrsh r5, [r4, r1] + cmp r5, 0 + beq _0813D850 + movs r0, 0 + strh r0, [r4, 0x26] + b _0813D87A + .align 2, 0 +_0813D84C: .4byte gIntroFrameCounter +_0813D850: + bl Random + movs r1, 0x3 + ands r1, r0 + cmp r1, 0x1 + beq _0813D878 + cmp r1, 0x1 + bgt _0813D866 + cmp r1, 0 + beq _0813D86E + b _0813D87A +_0813D866: + cmp r1, 0x3 + bgt _0813D87A + strh r5, [r4, 0x26] + b _0813D87A +_0813D86E: + ldr r0, _0813D874 @ =0x0000ffff + strh r0, [r4, 0x26] + b _0813D87A + .align 2, 0 +_0813D874: .4byte 0x0000ffff +_0813D878: + strh r1, [r4, 0x26] +_0813D87A: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_813D788 + + thumb_func_start sub_813D880 +sub_813D880: @ 813D880 + push {r4,lr} + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0813D89A + cmp r0, 0x1 + ble _0813D8E2 + cmp r0, 0x2 + beq _0813D8BA + cmp r0, 0x3 + beq _0813D8D4 + b _0813D8E2 +_0813D89A: + movs r2, 0x24 + ldrsh r0, [r4, r2] + movs r2, 0x20 + ldrsh r1, [r4, r2] + adds r0, r1 + ldr r1, _0813D8B0 @ =0x0000012f + cmp r0, r1 + bgt _0813D8B4 + ldrh r0, [r4, 0x24] + adds r0, 0x8 + b _0813D8E0 + .align 2, 0 +_0813D8B0: .4byte 0x0000012f +_0813D8B4: + movs r0, 0x2 + strh r0, [r4, 0x2E] + b _0813D8E2 +_0813D8BA: + movs r1, 0x24 + ldrsh r0, [r4, r1] + movs r2, 0x20 + ldrsh r1, [r4, r2] + adds r0, r1 + cmp r0, 0x78 + ble _0813D8CE + ldrh r0, [r4, 0x24] + subs r0, 0x1 + b _0813D8E0 +_0813D8CE: + movs r0, 0x3 + strh r0, [r4, 0x2E] + b _0813D8E2 +_0813D8D4: + ldrh r1, [r4, 0x24] + movs r2, 0x24 + ldrsh r0, [r4, r2] + cmp r0, 0 + ble _0813D8E2 + subs r0, r1, 0x2 +_0813D8E0: + strh r0, [r4, 0x24] +_0813D8E2: + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x8 + bl Sin + ldr r1, _0813D904 @ =gUnknown_0203935A + ldrh r1, [r1] + subs r0, r1 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x30] + adds r0, 0x4 + strh r0, [r4, 0x30] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813D904: .4byte gUnknown_0203935A + thumb_func_end sub_813D880 + + thumb_func_start sub_813D908 +sub_813D908: @ 813D908 + push {lr} + adds r3, r0, 0 + ldr r2, _0813D930 @ =gTasks + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 2 + adds r0, r1 + lsls r0, 3 + adds r0, r2 + movs r1, 0x8 + ldrsh r0, [r0, r1] + cmp r0, 0 + bne _0813D934 + adds r0, r3, 0 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + orrs r1, r2 + strb r1, [r0] + b _0813D94E + .align 2, 0 +_0813D930: .4byte gTasks +_0813D934: + cmp r0, 0x4 + beq _0813D948 + adds r2, r3, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + b _0813D94E +_0813D948: + adds r0, r3, 0 + bl DestroySprite +_0813D94E: + pop {r0} + bx r0 + thumb_func_end sub_813D908 + + thumb_func_start sub_813D954 +sub_813D954: @ 813D954 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r2, 24 + lsrs r2, 24 + mov r8, r2 + movs r5, 0 + ldr r7, _0813DA48 @ =gUnknown_0840AF50 + lsls r0, 16 + mov r9, r0 + lsls r0, r6, 16 + str r0, [sp, 0x4] + mov r1, r9 + asrs r1, 16 + str r1, [sp] +_0813D97C: + lsls r4, r5, 2 + adds r0, r7, 0x2 + adds r0, r4, r0 + ldrh r1, [r0] + ldr r2, [sp] + adds r1, r2, r1 + lsls r1, 16 + asrs r1, 16 + lsls r2, r6, 16 + asrs r3, r2, 16 + mov r10, r3 + ldr r0, _0813DA4C @ =0xfffc0000 + adds r2, r0 + ldr r0, _0813DA50 @ =gSpriteTemplate_840AF94 + asrs r2, 16 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + ldr r1, _0813DA54 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + mov r1, r8 + strh r1, [r0, 0x2E] + adds r4, r7 + ldrb r1, [r4] + bl StartSpriteAnim + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x8 + bls _0813D97C + movs r5, 0 + ldr r7, _0813DA58 @ =gUnknown_0840AF74 + mov r0, r10 + adds r0, 0xC + lsls r0, 16 + mov r10, r0 +_0813D9D0: + lsls r4, r5, 2 + adds r0, r7, 0x2 + adds r0, r4, r0 + mov r2, r9 + asrs r1, r2, 16 + ldrh r0, [r0] + adds r1, r0 + lsls r1, 16 + asrs r1, 16 + ldr r0, _0813DA5C @ =gSpriteTemplate_840AFAC + mov r3, r10 + asrs r2, r3, 16 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + ldr r6, _0813DA54 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r6 + mov r1, r8 + strh r1, [r0, 0x2E] + adds r4, r7 + ldrb r1, [r4] + bl StartSpriteAnim + adds r0, r5, 0x1 + lsls r0, 16 + lsrs r5, r0, 16 + cmp r5, 0x7 + bls _0813D9D0 + ldr r0, _0813DA60 @ =gSpriteTemplate_840AFC4 + ldr r3, [sp, 0x4] + ldr r1, _0813DA4C @ =0xfffc0000 + adds r2, r3, r1 + asrs r2, 16 + movs r1, 0x78 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r6 + mov r3, r8 + strh r3, [r0, 0x2E] + adds r0, r2, 0 + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_0813DA48: .4byte gUnknown_0840AF50 +_0813DA4C: .4byte 0xfffc0000 +_0813DA50: .4byte gSpriteTemplate_840AF94 +_0813DA54: .4byte gSprites +_0813DA58: .4byte gUnknown_0840AF74 +_0813DA5C: .4byte gSpriteTemplate_840AFAC +_0813DA60: .4byte gSpriteTemplate_840AFC4 + thumb_func_end sub_813D954 + + thumb_func_start sub_813DA64 +sub_813DA64: @ 813DA64 + push {r4-r6,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0813DA7C + cmp r0, 0x1 + beq _0813DAC0 +_0813DA7C: + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0x1 + movs r2, 0x3 + movs r3, 0x3 + bl CalcCenterToCornerVec + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + movs r0, 0x1 + strh r0, [r4, 0x2E] + movs r0, 0x80 + strh r0, [r4, 0x30] + ldr r0, _0813DABC @ =0x0000ffe8 + strh r0, [r4, 0x32] + movs r0, 0 + b _0813DB92 + .align 2, 0 +_0813DABC: .4byte 0x0000ffe8 +_0813DAC0: + ldrh r1, [r4, 0x34] + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0x4F + bgt _0813DAF8 + lsls r0, r1, 24 + lsrs r0, 24 + movs r1, 0x78 + bl Sin + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x34] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x8C + bl Sin + negs r0, r0 + strh r0, [r4, 0x24] + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x40 + ble _0813DAF8 + ldrb r0, [r4, 0x5] + movs r1, 0xC + orrs r0, r1 + strb r0, [r4, 0x5] +_0813DAF8: + ldr r2, _0813DB60 @ =gSineTable + ldrh r1, [r4, 0x32] + lsls r0, r1, 24 + lsrs r0, 23 + adds r0, r2 + ldrh r3, [r0] + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 23 + adds r1, r2 + movs r2, 0 + ldrsh r0, [r1, r2] + movs r1, 0x30 + ldrsh r2, [r4, r1] + adds r1, r0, 0 + muls r1, r2 + adds r0, r1, 0 + cmp r1, 0 + bge _0813DB20 + adds r0, 0xFF +_0813DB20: + lsls r0, 8 + lsrs r6, r0, 16 + lsls r0, r3, 16 + asrs r3, r0, 16 + negs r0, r3 + muls r0, r2 + cmp r0, 0 + bge _0813DB32 + adds r0, 0xFF +_0813DB32: + lsls r0, 8 + lsrs r5, r0, 16 + adds r0, r3, 0 + muls r0, r2 + cmp r0, 0 + bge _0813DB40 + adds r0, 0xFF +_0813DB40: + lsls r0, 8 + lsrs r2, r0, 16 + adds r1, r6, 0 + adds r3, r5, 0 + str r1, [sp] + movs r0, 0x1 + bl SetOamMatrix + ldrh r1, [r4, 0x30] + movs r2, 0x30 + ldrsh r0, [r4, r2] + cmp r0, 0xFF + bgt _0813DB64 + adds r0, r1, 0 + adds r0, 0x8 + b _0813DB68 + .align 2, 0 +_0813DB60: .4byte gSineTable +_0813DB64: + adds r0, r1, 0 + adds r0, 0x20 +_0813DB68: + strh r0, [r4, 0x30] + ldrh r1, [r4, 0x32] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0x17 + bgt _0813DB78 + adds r0, r1, 0x1 + strh r0, [r4, 0x32] +_0813DB78: + ldrh r2, [r4, 0x34] + movs r1, 0x34 + ldrsh r0, [r4, r1] + cmp r0, 0x3F + bgt _0813DB86 + adds r0, r2, 0x2 + b _0813DB92 +_0813DB86: + ldrh r1, [r4, 0x3C] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0813DB94 + adds r0, r2, 0x1 +_0813DB92: + strh r0, [r4, 0x34] +_0813DB94: + add sp, 0x4 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_813DA64 + + thumb_func_start sub_813DB9C +sub_813DB9C: @ 813DB9C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x4 + bhi _0813DBCC + lsls r0, 2 + ldr r1, _0813DBB4 @ =_0813DBB8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813DBB4: .4byte _0813DBB8 + .align 2, 0 +_0813DBB8: + .4byte _0813DBCC + .4byte _0813DBF2 + .4byte _0813DC24 + .4byte _0813DC3E + .4byte _0813DCAA +_0813DBCC: + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0813DBE0 + adds r2, r4, 0 + adds r2, 0x3F + ldrb r0, [r2] + movs r1, 0x1 + orrs r0, r1 + b _0813DBEC +_0813DBE0: + adds r2, r4, 0 + adds r2, 0x3F + ldrb r1, [r2] + movs r0, 0x2 + negs r0, r0 + ands r0, r1 +_0813DBEC: + strb r0, [r2] + movs r0, 0x1 + strh r0, [r4, 0x2E] +_0813DBF2: + ldrh r1, [r4, 0x22] + movs r3, 0x22 + ldrsh r0, [r4, r3] + cmp r0, 0x60 + ble _0813DC18 + subs r0, r1, 0x4 + strh r0, [r4, 0x22] + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0813DC10 + ldrh r0, [r4, 0x20] + adds r0, 0x2 + strh r0, [r4, 0x20] + b _0813DD4E +_0813DC10: + ldrh r0, [r4, 0x20] + subs r0, 0x2 + strh r0, [r4, 0x20] + b _0813DD4E +_0813DC18: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + movs r0, 0x8 + strh r0, [r4, 0x34] + b _0813DD4E +_0813DC24: + ldrh r0, [r4, 0x34] + movs r2, 0x34 + ldrsh r1, [r4, r2] + cmp r1, 0 + beq _0813DC34 + subs r0, 0x1 + strh r0, [r4, 0x34] + b _0813DD4E +_0813DC34: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x34] + b _0813DD4E +_0813DC3E: + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r3, 0x30 + ldrsh r1, [r4, r3] + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x3 + movs r3, 0x3 + bl CalcCenterToCornerVec + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0813DC8A + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xFF + lsls r1, 8 + movs r2, 0x80 + lsls r2, 1 + str r2, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + b _0813DC9E +_0813DC8A: + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x80 + lsls r1, 1 + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix +_0813DC9E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + movs r1, 0 + strh r0, [r4, 0x2E] + strh r1, [r4, 0x36] + b _0813DD4E +_0813DCAA: + ldrh r0, [r4, 0x36] + adds r2, r0, 0x1 + strh r2, [r4, 0x36] + movs r3, 0x22 + ldrsh r0, [r4, r3] + movs r3, 0x26 + ldrsh r1, [r4, r3] + adds r0, r1 + movs r1, 0x20 + negs r1, r1 + cmp r0, r1 + ble _0813DD48 + movs r1, 0x20 + ldrsh r0, [r4, r1] + movs r3, 0x24 + ldrsh r1, [r4, r3] + adds r0, r1 + movs r1, 0x40 + negs r1, r1 + cmp r0, r1 + ble _0813DD48 + movs r1, 0x36 + ldrsh r0, [r4, r1] + adds r3, r0, 0 + muls r3, r0 + adds r0, r3, 0 + negs r0, r0 + cmp r0, 0 + bge _0813DCE6 + adds r0, 0x7 +_0813DCE6: + asrs r0, 3 + strh r0, [r4, 0x26] + movs r1, 0x32 + ldrsh r0, [r4, r1] + ldrh r3, [r4, 0x32] + cmp r0, 0 + beq _0813DCFA + ldrh r0, [r4, 0x24] + adds r0, r2 + b _0813DCFE +_0813DCFA: + ldrh r0, [r4, 0x24] + subs r0, r2 +_0813DCFE: + strh r0, [r4, 0x24] + ldrh r1, [r4, 0x34] + movs r2, 0x34 + ldrsh r0, [r4, r2] + cmp r0, 0x7F + bgt _0813DD10 + adds r0, r1, 0 + adds r0, 0x8 + strh r0, [r4, 0x34] +_0813DD10: + ldrh r0, [r4, 0x34] + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + subs r1, r0 + lsls r1, 16 + lsrs r2, r1, 16 + lsls r0, r3, 16 + cmp r0, 0 + beq _0813DD34 + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + negs r1, r2 + lsls r1, 16 + lsrs r1, 16 + str r2, [sp] + b _0813DD3E +_0813DD34: + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + str r2, [sp] + adds r1, r2, 0 +_0813DD3E: + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + b _0813DD4E +_0813DD48: + adds r0, r4, 0 + bl DestroySprite +_0813DD4E: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813DB9C + + thumb_func_start sub_813DD58 +sub_813DD58: @ 813DD58 + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _0813DDAE + cmp r0, 0x1 + ble _0813DD72 + cmp r0, 0x2 + beq _0813DE66 + cmp r0, 0x3 + beq _0813DE26 +_0813DD72: + adds r2, r4, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x1] + movs r2, 0x30 + ldrsh r1, [r4, r2] + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r2, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, 0x3] + movs r0, 0x80 + lsls r0, 4 + strh r0, [r4, 0x34] + movs r0, 0x1 + strh r0, [r4, 0x2E] +_0813DDAE: + ldrh r1, [r4, 0x34] + movs r2, 0x34 + ldrsh r0, [r4, r2] + movs r2, 0x80 + lsls r2, 1 + cmp r0, r2 + ble _0813DDEE + subs r1, 0x80 + strh r1, [r4, 0x34] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0813DDDA + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + negs r1, r1 + lsls r1, 16 + lsrs r1, 16 + ldrh r2, [r4, 0x34] + str r2, [sp] + b _0813DDE4 +_0813DDDA: + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + ldrh r1, [r4, 0x34] + str r1, [sp] +_0813DDE4: + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + b _0813DE66 +_0813DDEE: + movs r1, 0x32 + ldrsh r0, [r4, r1] + cmp r0, 0 + beq _0813DE0C + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0xFF + lsls r1, 8 + str r2, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + b _0813DE1E +_0813DE0C: + ldrh r0, [r4, 0x30] + lsls r0, 24 + lsrs r0, 24 + str r2, [sp] + adds r1, r2, 0 + movs r2, 0 + movs r3, 0 + bl SetOamMatrix +_0813DE1E: + ldrh r0, [r4, 0x2E] + adds r0, 0x1 + strh r0, [r4, 0x2E] + b _0813DE66 +_0813DE26: + ldrh r0, [r4, 0x36] + adds r0, 0x1 + strh r0, [r4, 0x36] + movs r2, 0x36 + ldrsh r0, [r4, r2] + adds r1, r0, 0 + muls r1, r0 + adds r0, r1, 0 + cmp r0, 0 + bge _0813DE3C + adds r0, 0x1F +_0813DE3C: + asrs r0, 5 + strh r0, [r4, 0x26] + movs r2, 0x32 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _0813DE56 + movs r1, 0x36 + ldrsh r0, [r4, r1] + cmp r0, 0 + bge _0813DE52 + adds r0, 0x3 +_0813DE52: + asrs r0, 2 + b _0813DE64 +_0813DE56: + movs r2, 0x36 + ldrsh r0, [r4, r2] + cmp r0, 0 + bge _0813DE60 + adds r0, 0x3 +_0813DE60: + asrs r0, 2 + negs r0, r0 +_0813DE64: + strh r0, [r4, 0x24] +_0813DE66: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813DD58 + + thumb_func_start sub_813DE70 +sub_813DE70: @ 813DE70 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r7, r0, 0 + movs r1, 0x2E + ldrsh r0, [r7, r1] + cmp r0, 0x6 + bhi _0813DEB0 + lsls r0, 2 + ldr r1, _0813DE90 @ =_0813DE94 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813DE90: .4byte _0813DE94 + .align 2, 0 +_0813DE94: + .4byte _0813DEB0 + .4byte _0813E0F8 + .4byte _0813DEF4 + .4byte _0813DF2C + .4byte _0813DF54 + .4byte _0813E0A8 + .4byte _0813E0D0 +_0813DEB0: + ldrh r1, [r7, 0x20] + movs r2, 0x20 + ldrsh r0, [r7, r2] + cmp r0, 0x28 + ble _0813DEC0 + subs r0, r1, 0x4 + strh r0, [r7, 0x20] + b _0813E0F8 +_0813DEC0: + adds r0, r7, 0 + movs r1, 0x1 + bl StartSpriteAnim + ldr r4, _0813DEF0 @ =gSpriteTemplate_840B084 + adds r0, r4, 0 + movs r1, 0x10 + movs r2, 0x68 + movs r3, 0x64 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x3A] + adds r0, r4, 0 + movs r1, 0xC + movs r2, 0x6A + movs r3, 0x65 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + strh r0, [r7, 0x3C] + b _0813DF42 + .align 2, 0 +_0813DEF0: .4byte gSpriteTemplate_840B084 +_0813DEF4: + adds r0, r7, 0 + movs r1, 0x2 + bl StartSpriteAnim + ldr r2, _0813DF28 @ =gSprites + movs r3, 0x3A + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x1 + strh r1, [r0, 0x2E] + movs r0, 0x3C + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + movs r1, 0x2 + strh r1, [r0, 0x2E] + ldrh r0, [r7, 0x2E] + adds r0, 0x1 + strh r0, [r7, 0x2E] + b _0813E0F8 + .align 2, 0 +_0813DF28: .4byte gSprites +_0813DF2C: + ldrh r1, [r7, 0x22] + movs r2, 0x22 + ldrsh r0, [r7, r2] + cmp r0, 0xA0 + ble _0813DF48 + adds r2, r7, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] +_0813DF42: + movs r0, 0x1 + strh r0, [r7, 0x2E] + b _0813E0F8 +_0813DF48: + adds r0, r1, 0x2 + strh r0, [r7, 0x22] + ldrh r0, [r7, 0x20] + subs r0, 0x1 + strh r0, [r7, 0x20] + b _0813E0F8 +_0813DF54: + ldr r6, _0813E094 @ =gSprites + movs r3, 0x3A + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r5, [r0, 0x24] + ldrh r1, [r0, 0x20] + adds r5, r1 + lsls r5, 16 + lsrs r5, 16 + ldrh r4, [r0, 0x26] + ldrh r2, [r0, 0x22] + adds r4, r2 + lsls r4, 16 + lsrs r4, 16 + bl DestroySprite + movs r0, 0x8C + lsls r0, 1 + lsls r5, 16 + asrs r1, r5, 16 + lsls r4, 16 + asrs r2, r4, 16 + movs r3, 0x1 + mov r8, r3 + str r3, [sp] + movs r3, 0x2 + bl sub_813CE88 + strh r0, [r7, 0x3A] + movs r0, 0x3A + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0813E098 @ =gSprites + 0x1C + adds r0, r1 + ldr r2, _0813E09C @ =sub_813DD58 + mov r10, r2 + str r2, [r0] + movs r3, 0x3A + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + movs r2, 0x4 + mov r9, r2 + mov r3, r9 + orrs r1, r3 + strb r1, [r0] + movs r0, 0x3A + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r1, r8 + strh r1, [r0, 0x30] + movs r2, 0x3A + ldrsh r1, [r7, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + mov r3, r8 + strh r3, [r0, 0x32] + lsrs r5, 16 + lsrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_813E580 + movs r0, 0x3C + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r5, [r0, 0x24] + ldrh r1, [r0, 0x20] + adds r5, r1 + lsls r5, 16 + lsrs r5, 16 + ldrh r4, [r0, 0x26] + ldrh r2, [r0, 0x22] + adds r4, r2 + lsls r4, 16 + lsrs r4, 16 + bl DestroySprite + ldr r0, _0813E0A0 @ =0x0000011b + lsls r5, 16 + asrs r1, r5, 16 + lsls r4, 16 + asrs r2, r4, 16 + mov r3, r8 + str r3, [sp] + movs r3, 0x3 + bl sub_813CE88 + strh r0, [r7, 0x3C] + movs r0, 0x3C + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r1, _0813E098 @ =gSprites + 0x1C + adds r0, r1 + mov r2, r10 + str r2, [r0] + movs r3, 0x3C + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r1, [r0] + mov r2, r9 + orrs r1, r2 + strb r1, [r0] + movs r3, 0x3C + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0x2 + strh r1, [r0, 0x30] + movs r0, 0x3C + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + movs r1, 0 + strh r1, [r0, 0x32] + lsrs r5, 16 + lsrs r4, 16 + adds r0, r5, 0 + adds r1, r4, 0 + bl sub_813E580 + movs r0, 0xFF + lsls r0, 16 + ldr r1, _0813E0A4 @ =0x00007eff + str r1, [sp] + movs r1, 0 + movs r2, 0x10 + movs r3, 0x10 + bl BeginNormalPaletteFade + mov r2, r8 + strh r2, [r7, 0x2E] + b _0813E0F8 + .align 2, 0 +_0813E094: .4byte gSprites +_0813E098: .4byte gSprites + 0x1C +_0813E09C: .4byte sub_813DD58 +_0813E0A0: .4byte 0x0000011b +_0813E0A4: .4byte 0x00007eff +_0813E0A8: + ldr r3, _0813E0CC @ =gSprites + movs r0, 0x3A + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + movs r2, 0x3 + strh r2, [r0, 0x2E] + movs r0, 0x3C + ldrsh r1, [r7, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r3 + strh r2, [r0, 0x2E] + b _0813E0F8 + .align 2, 0 +_0813E0CC: .4byte gSprites +_0813E0D0: + movs r2, 0x3A + ldrsh r1, [r7, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + ldr r4, _0813E108 @ =gSprites + adds r0, r4 + bl DestroySprite + movs r3, 0x3C + ldrsh r1, [r7, r3] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r4 + bl DestroySprite + adds r0, r7, 0 + bl DestroySprite +_0813E0F8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E108: .4byte gSprites + thumb_func_end sub_813DE70 + + thumb_func_start sub_813E10C +sub_813E10C: @ 813E10C + push {r4,lr} + adds r3, r0, 0 + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0x4 + bhi _0813E13C + lsls r0, 2 + ldr r1, _0813E124 @ =_0813E128 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813E124: .4byte _0813E128 + .align 2, 0 +_0813E128: + .4byte _0813E13C + .4byte _0813E178 + .4byte _0813E1A6 + .4byte _0813E1C2 + .4byte _0813E1D6 +_0813E13C: + ldrh r4, [r3, 0x24] + movs r2, 0x24 + ldrsh r1, [r3, r2] + movs r0, 0x38 + negs r0, r0 + cmp r1, r0 + ble _0813E158 + adds r0, r4, 0 + subs r0, 0x8 + strh r0, [r3, 0x24] + ldrh r0, [r3, 0x26] + adds r0, 0x6 + strh r0, [r3, 0x26] + b _0813E208 +_0813E158: + ldrh r0, [r3, 0x20] + movs r2, 0 + strh r0, [r3, 0x3A] + ldrh r1, [r3, 0x22] + strh r1, [r3, 0x3C] + adds r0, r4 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x26] + adds r1, r0 + strh r1, [r3, 0x22] + strh r2, [r3, 0x24] + strh r2, [r3, 0x26] + movs r0, 0x1 + strh r0, [r3, 0x2E] + strh r2, [r3, 0x30] + b _0813E208 +_0813E178: + ldrh r1, [r3, 0x30] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _0813E1A0 + movs r0, 0x2 + ands r0, r1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + beq _0813E19C + ldr r0, _0813E198 @ =0x0000ffff + strh r0, [r3, 0x24] + strh r2, [r3, 0x26] + b _0813E1A0 + .align 2, 0 +_0813E198: .4byte 0x0000ffff +_0813E19C: + strh r0, [r3, 0x24] + strh r0, [r3, 0x26] +_0813E1A0: + adds r0, r1, 0x1 + strh r0, [r3, 0x30] + b _0813E208 +_0813E1A6: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, 0x3A] + movs r1, 0 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x3C] + strh r0, [r3, 0x22] + strh r1, [r3, 0x24] + strh r1, [r3, 0x26] + b _0813E208 +_0813E1C2: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r2] + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] +_0813E1D6: + ldrh r2, [r3, 0x24] + movs r0, 0x24 + ldrsh r1, [r3, r0] + movs r0, 0x38 + negs r0, r0 + cmp r1, r0 + ble _0813E1F0 + subs r0, r2, 0x4 + strh r0, [r3, 0x24] + ldrh r0, [r3, 0x26] + adds r0, 0x3 + strh r0, [r3, 0x26] + b _0813E208 +_0813E1F0: + ldrh r1, [r3, 0x20] + adds r0, r2, r1 + movs r1, 0 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x26] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r3, 0x22] + strh r1, [r3, 0x24] + strh r1, [r3, 0x26] + movs r0, 0x1 + strh r0, [r3, 0x2E] +_0813E208: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813E10C + + thumb_func_start sub_813E210 +sub_813E210: @ 813E210 + push {r4,lr} + adds r3, r0, 0 + movs r1, 0x2E + ldrsh r0, [r3, r1] + cmp r0, 0x4 + bhi _0813E240 + lsls r0, 2 + ldr r1, _0813E228 @ =_0813E22C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813E228: .4byte _0813E22C + .align 2, 0 +_0813E22C: + .4byte _0813E240 + .4byte _0813E278 + .4byte _0813E2A6 + .4byte _0813E2C2 + .4byte _0813E2D6 +_0813E240: + ldrh r4, [r3, 0x24] + movs r2, 0x24 + ldrsh r0, [r3, r2] + cmp r0, 0x37 + bgt _0813E258 + adds r0, r4, 0 + adds r0, 0x8 + strh r0, [r3, 0x24] + ldrh r0, [r3, 0x26] + subs r0, 0x6 + strh r0, [r3, 0x26] + b _0813E304 +_0813E258: + ldrh r0, [r3, 0x20] + movs r2, 0 + strh r0, [r3, 0x3A] + ldrh r1, [r3, 0x22] + strh r1, [r3, 0x3C] + adds r0, r4 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x26] + adds r1, r0 + strh r1, [r3, 0x22] + strh r2, [r3, 0x24] + strh r2, [r3, 0x26] + movs r0, 0x1 + strh r0, [r3, 0x2E] + strh r2, [r3, 0x30] + b _0813E304 +_0813E278: + ldrh r1, [r3, 0x30] + movs r2, 0x1 + adds r0, r2, 0 + ands r0, r1 + cmp r0, 0 + bne _0813E2A0 + movs r0, 0x2 + ands r0, r1 + lsls r0, 16 + asrs r0, 16 + cmp r0, 0 + beq _0813E29C + strh r2, [r3, 0x24] + ldr r0, _0813E298 @ =0x0000ffff + b _0813E29E + .align 2, 0 +_0813E298: .4byte 0x0000ffff +_0813E29C: + strh r0, [r3, 0x24] +_0813E29E: + strh r0, [r3, 0x26] +_0813E2A0: + adds r0, r1, 0x1 + strh r0, [r3, 0x30] + b _0813E304 +_0813E2A6: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, 0x3A] + movs r1, 0 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x3C] + strh r0, [r3, 0x22] + strh r1, [r3, 0x24] + strh r1, [r3, 0x26] + b _0813E304 +_0813E2C2: + adds r2, r3, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r2] + ldrh r0, [r3, 0x30] + adds r0, 0x1 + strh r0, [r3, 0x30] +_0813E2D6: + ldrh r1, [r3, 0x24] + movs r2, 0x24 + ldrsh r0, [r3, r2] + cmp r0, 0x37 + bgt _0813E2EC + adds r0, r1, 0x4 + strh r0, [r3, 0x24] + ldrh r0, [r3, 0x26] + subs r0, 0x3 + strh r0, [r3, 0x26] + b _0813E304 +_0813E2EC: + ldrh r2, [r3, 0x20] + adds r0, r1, r2 + movs r1, 0 + strh r0, [r3, 0x20] + ldrh r0, [r3, 0x26] + ldrh r2, [r3, 0x22] + adds r0, r2 + strh r0, [r3, 0x22] + strh r1, [r3, 0x24] + strh r1, [r3, 0x26] + movs r0, 0x1 + strh r0, [r3, 0x2E] +_0813E304: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_813E210 + + thumb_func_start sub_813E30C +sub_813E30C: @ 813E30C + push {r4,lr} + sub sp, 0x4 + adds r4, r0, 0 + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + movs r1, 0x2E + ldrsh r0, [r4, r1] + cmp r0, 0x14 + bls _0813E322 + b _0813E4AC +_0813E322: + lsls r0, 2 + ldr r1, _0813E32C @ =_0813E330 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0813E32C: .4byte _0813E330 + .align 2, 0 +_0813E330: + .4byte _0813E4AC + .4byte _0813E384 + .4byte _0813E41C + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E3A8 + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E4AC + .4byte _0813E440 +_0813E384: + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x2 + orrs r0, r1 + strb r0, [r4, 0x3] + movs r0, 0xA + strh r0, [r4, 0x2E] + movs r0, 0x24 + strh r0, [r4, 0x36] +_0813E3A8: + ldrh r1, [r4, 0x20] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x90 + bgt _0813E3D2 + adds r0, r1, 0x4 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x22] + subs r0, 0x1 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x18 + bl Sin + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x4 + strh r0, [r4, 0x32] +_0813E3D2: + ldrh r0, [r4, 0x34] + ldrh r2, [r4, 0x36] + subs r0, r2 + strh r0, [r4, 0x34] + ldrh r1, [r4, 0x3C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813E3EE + lsls r0, r2, 16 + cmp r0, 0 + beq _0813E3EE + subs r0, r2, 0x1 + strh r0, [r4, 0x36] +_0813E3EE: + ldr r2, _0813E418 @ =gSineTable + ldrh r1, [r4, 0x34] + lsls r0, r1, 24 + lsrs r0, 23 + adds r0, r2 + ldrh r4, [r0] + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 23 + adds r1, r2 + ldrh r1, [r1] + negs r3, r4 + lsls r3, 16 + lsrs r3, 16 + str r1, [sp] + movs r0, 0x1 + adds r2, r4, 0 + bl SetOamMatrix + b _0813E4AC + .align 2, 0 +_0813E418: .4byte gSineTable +_0813E41C: + ldrb r1, [r4, 0x1] + movs r0, 0x4 + negs r0, r0 + ands r0, r1 + movs r1, 0x1 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4, 0x3] + movs r0, 0x14 + strh r0, [r4, 0x2E] + movs r0, 0x24 + strh r0, [r4, 0x36] +_0813E440: + ldrh r1, [r4, 0x20] + movs r2, 0x20 + ldrsh r0, [r4, r2] + cmp r0, 0x60 + bgt _0813E46A + adds r0, r1, 0x3 + strh r0, [r4, 0x20] + ldrh r0, [r4, 0x22] + subs r0, 0x1 + strh r0, [r4, 0x22] + ldrh r0, [r4, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x18 + bl Sin + negs r0, r0 + strh r0, [r4, 0x26] + ldrh r0, [r4, 0x32] + adds r0, 0x4 + strh r0, [r4, 0x32] +_0813E46A: + ldrh r0, [r4, 0x34] + ldrh r2, [r4, 0x36] + subs r0, r2 + strh r0, [r4, 0x34] + ldrh r1, [r4, 0x3C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813E486 + lsls r0, r2, 16 + cmp r0, 0 + beq _0813E486 + subs r0, r2, 0x1 + strh r0, [r4, 0x36] +_0813E486: + ldr r2, _0813E4B4 @ =gSineTable + ldrh r1, [r4, 0x34] + lsls r0, r1, 24 + lsrs r0, 23 + adds r0, r2 + ldrh r4, [r0] + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 23 + adds r1, r2 + ldrh r1, [r1] + negs r3, r4 + lsls r3, 16 + lsrs r3, 16 + str r1, [sp] + movs r0, 0x2 + adds r2, r4, 0 + bl SetOamMatrix +_0813E4AC: + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E4B4: .4byte gSineTable + thumb_func_end sub_813E30C + + thumb_func_start sub_813E4B8 +sub_813E4B8: @ 813E4B8 + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813E4DA + adds r2, r5, 0 + adds r2, 0x3E + ldrb r1, [r2] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + b _0813E4E4 +_0813E4DA: + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 +_0813E4E4: + strb r0, [r2] + ldrh r1, [r5, 0x32] + movs r2, 0x32 + ldrsh r0, [r5, r2] + cmp r0, 0x3F + ble _0813E4F8 + adds r0, r5, 0 + bl DestroySprite + b _0813E574 +_0813E4F8: + adds r0, r1, 0x2 + strh r0, [r5, 0x32] + lsls r0, 24 + lsrs r0, 24 + movs r1, 0x28 + bl Sin + adds r4, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + lsls r0, 29 + lsrs r0, 24 + lsls r4, 16 + asrs r4, 16 + adds r1, r4, 0 + bl Cos + strh r0, [r5, 0x24] + movs r2, 0x2E + ldrsh r0, [r5, r2] + lsls r0, 29 + lsrs r0, 24 + adds r1, r4, 0 + bl Sin + strh r0, [r5, 0x26] + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + bne _0813E574 + ldrh r0, [r5, 0x34] + ldrh r2, [r5, 0x30] + subs r0, r2 + strh r0, [r5, 0x34] + ldrh r1, [r5, 0x3C] + movs r0, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813E550 + lsls r0, r2, 16 + cmp r0, 0 + beq _0813E550 + subs r0, r2, 0x1 + strh r0, [r5, 0x30] +_0813E550: + ldr r3, _0813E57C @ =gSineTable + ldrh r1, [r5, 0x34] + lsls r0, r1, 24 + lsrs r0, 23 + adds r0, r3 + ldrh r2, [r0] + adds r1, 0x40 + lsls r1, 24 + lsrs r1, 23 + adds r1, r3 + ldrh r1, [r1] + negs r3, r2 + lsls r3, 16 + lsrs r3, 16 + str r1, [sp] + movs r0, 0x10 + bl SetOamMatrix +_0813E574: + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813E57C: .4byte gSineTable + thumb_func_end sub_813E4B8 + + thumb_func_start sub_813E580 +sub_813E580: @ 813E580 + push {r4-r7,lr} + movs r4, 0 + ldr r7, _0813E5D8 @ =gSprites + lsls r6, r0, 16 + lsls r5, r1, 16 +_0813E58A: + ldr r0, _0813E5DC @ =gSpriteTemplate_840B0B0 + asrs r1, r6, 16 + asrs r2, r5, 16 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + lsls r2, r0, 4 + adds r2, r0 + lsls r2, 2 + adds r2, r7 + ldrb r1, [r2, 0x1] + movs r3, 0x4 + negs r3, r3 + adds r0, r3, 0 + ands r1, r0 + movs r0, 0x1 + orrs r1, r0 + strb r1, [r2, 0x1] + ldrb r1, [r2, 0x3] + subs r3, 0x3B + adds r0, r3, 0 + ands r1, r0 + movs r0, 0x20 + orrs r1, r0 + strb r1, [r2, 0x3] + strh r4, [r2, 0x2E] + movs r0, 0x20 + strh r0, [r2, 0x30] + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _0813E58A + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E5D8: .4byte gSprites +_0813E5DC: .4byte gSpriteTemplate_840B0B0 + thumb_func_end sub_813E580 + + thumb_func_start sub_813E5E0 +sub_813E5E0: @ 813E5E0 + push {r4,lr} + adds r3, r0, 0 + ldr r0, _0813E5F4 @ =gUnknown_0203931A + ldrh r0, [r0] + cmp r0, 0 + beq _0813E5F8 + adds r0, r3, 0 + bl DestroySprite + b _0813E6B2 + .align 2, 0 +_0813E5F4: .4byte gUnknown_0203931A +_0813E5F8: + ldr r2, _0813E6B8 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + movs r1, 0x4 + ands r1, r0 + mov r4, r12 + ldrb r2, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrh r1, [r3, 0x3C] + movs r2, 0x3C + ldrsh r0, [r3, r2] + cmp r0, 0xB + bgt _0813E630 + adds r0, r1, 0x1 + strh r0, [r3, 0x3C] +_0813E630: + ldrh r0, [r3, 0x3A] + adds r0, 0x4 + strh r0, [r3, 0x3A] + ldr r4, _0813E6BC @ =gSineTable + ldrh r0, [r3, 0x34] + adds r0, 0x40 + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x3A + ldrsh r0, [r3, r2] + muls r0, r1 + cmp r0, 0 + bge _0813E652 + adds r0, 0xFF +_0813E652: + asrs r0, 8 + ldrh r1, [r3, 0x36] + adds r0, r1 + strh r0, [r3, 0x20] + movs r2, 0x34 + ldrsh r0, [r3, r2] + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r2, 0x3A + ldrsh r0, [r3, r2] + muls r0, r1 + cmp r0, 0 + bge _0813E674 + adds r0, 0xFF +_0813E674: + asrs r0, 8 + ldrh r1, [r3, 0x38] + adds r2, r0, r1 + strh r2, [r3, 0x22] + movs r1, 0x30 + ldrsh r0, [r3, r1] + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r4, 0 + ldrsh r1, [r0, r4] + movs r4, 0x3C + ldrsh r0, [r3, r4] + muls r0, r1 + cmp r0, 0 + bge _0813E696 + adds r0, 0xFF +_0813E696: + asrs r0, 8 + strh r0, [r3, 0x26] + ldrh r0, [r3, 0x30] + adds r0, 0x10 + strh r0, [r3, 0x30] + lsls r0, r2, 16 + asrs r0, 16 + movs r2, 0x32 + ldrsh r1, [r3, r2] + cmp r0, r1 + ble _0813E6B2 + adds r0, r3, 0 + bl DestroySprite +_0813E6B2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E6B8: .4byte gSprites +_0813E6BC: .4byte gSineTable + thumb_func_end sub_813E5E0 + + thumb_func_start sub_813E6C0 +sub_813E6C0: @ 813E6C0 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r0, 0 + ldr r0, _0813E6E0 @ =gUnknown_0203931A + ldrh r0, [r0] + cmp r0, 0 + beq _0813E6E4 + adds r0, r4, 0 + bl DestroySprite + b _0813E7A8 + .align 2, 0 +_0813E6E0: .4byte gUnknown_0203931A +_0813E6E4: + ldrh r0, [r4, 0x3C] + adds r0, 0x1 + strh r0, [r4, 0x3C] + adds r2, r4, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r3, _0813E7B8 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r2, r0, r3 + movs r1, 0x2E + ldrsh r0, [r2, r1] + cmp r0, 0x1 + bne _0813E7A8 + ldrh r1, [r4, 0x3C] + movs r0, 0x3 + ands r0, r1 + cmp r0, 0 + bne _0813E7A8 + ldrh r0, [r2, 0x20] + ldrh r7, [r4, 0x30] + adds r0, r7 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp] + ldrh r0, [r2, 0x22] + ldrh r1, [r4, 0x32] + adds r0, r1 + lsls r0, 16 + lsrs r6, r0, 16 + movs r5, 0 + mov r8, r3 + ldr r2, [sp] + lsls r2, 16 + mov r10, r2 + lsls r7, r6, 16 + mov r9, r7 +_0813E73A: + movs r0, 0x2E + ldrsh r1, [r4, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + add r0, r8 + adds r0, 0x43 + ldrb r3, [r0] + subs r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + ldr r0, _0813E7BC @ =gSpriteTemplate_840B0DC + mov r2, r10 + asrs r1, r2, 16 + mov r7, r9 + asrs r2, r7, 16 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0813E79E + lsls r3, r0, 4 + adds r3, r0 + lsls r3, 2 + add r3, r8 + ldrh r0, [r4, 0x2E] + strh r0, [r3, 0x2E] + ldrh r1, [r4, 0x3C] + lsls r1, 16 + asrs r1, 18 + movs r0, 0x7 + ands r1, r0 + lsls r1, 5 + lsls r0, r5, 2 + adds r0, r5 + lsls r2, r0, 4 + adds r0, r2 + adds r1, r0 + strh r1, [r3, 0x30] + ldrh r0, [r4, 0x34] + strh r0, [r3, 0x32] + movs r0, 0x68 + strh r0, [r3, 0x34] + mov r0, sp + ldrh r0, [r0] + strh r0, [r3, 0x36] + strh r6, [r3, 0x38] + movs r1, 0 + strh r1, [r3, 0x3A] +_0813E79E: + adds r0, r5, 0x1 + lsls r0, 24 + lsrs r5, r0, 24 + cmp r5, 0x2 + bls _0813E73A +_0813E7A8: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E7B8: .4byte gSprites +_0813E7BC: .4byte gSpriteTemplate_840B0DC + thumb_func_end sub_813E6C0 + + thumb_func_start sub_813E7C0 +sub_813E7C0: @ 813E7C0 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813E7F8 @ =gSpriteTemplate_840B0F4 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _0813E7F2 + ldr r1, _0813E7FC @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r2, 0 + strh r4, [r0, 0x2E] + ldr r1, _0813E800 @ =0x0000fff4 + strh r1, [r0, 0x30] + strh r2, [r0, 0x32] + movs r1, 0x88 + strh r1, [r0, 0x34] +_0813E7F2: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813E7F8: .4byte gSpriteTemplate_840B0F4 +_0813E7FC: .4byte gSprites +_0813E800: .4byte 0x0000fff4 + thumb_func_end sub_813E7C0 + + thumb_func_start sub_813E804 +sub_813E804: @ 813E804 + push {r4-r7,lr} + adds r3, r0, 0 + ldr r0, _0813E818 @ =gUnknown_0203931A + ldrh r0, [r0] + cmp r0, 0 + beq _0813E81C + adds r0, r3, 0 + bl DestroySprite + b _0813E928 + .align 2, 0 +_0813E818: .4byte gUnknown_0203931A +_0813E81C: + ldr r6, _0813E904 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x3E + ldrb r0, [r0] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + movs r1, 0x4 + ands r1, r0 + mov r7, r12 + ldrb r2, [r7] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r7] + ldrh r0, [r3, 0x3C] + adds r0, 0x1 + strh r0, [r3, 0x3C] + ldrh r1, [r3, 0x34] + movs r2, 0x34 + ldrsh r0, [r3, r2] + cmp r0, 0x27 + bgt _0813E85A + adds r0, r1, 0x2 + strh r0, [r3, 0x34] +_0813E85A: + movs r7, 0x2E + ldrsh r1, [r3, r7] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r0, 0x24] + ldrh r0, [r0, 0x20] + adds r2, r1, r0 + ldr r4, _0813E908 @ =gSineTable + ldrh r5, [r3, 0x30] + adds r0, r5, 0 + adds r0, 0x40 + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r7, 0 + ldrsh r1, [r0, r7] + movs r7, 0x34 + ldrsh r0, [r3, r7] + muls r0, r1 + cmp r0, 0 + bge _0813E88A + adds r0, 0xFF +_0813E88A: + asrs r0, 8 + adds r0, r2, r0 + strh r0, [r3, 0x20] + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + ldrh r1, [r0, 0x26] + ldrh r0, [r0, 0x22] + adds r2, r1, r0 + movs r1, 0x30 + ldrsh r0, [r3, r1] + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r7, 0 + ldrsh r1, [r0, r7] + movs r7, 0x34 + ldrsh r0, [r3, r7] + muls r0, r1 + cmp r0, 0 + bge _0813E8BE + ldr r1, _0813E90C @ =0x000001ff + adds r0, r1 +_0813E8BE: + asrs r0, 9 + adds r0, r2, r0 + strh r0, [r3, 0x22] + adds r1, r5, 0x2 + strh r1, [r3, 0x30] + movs r2, 0x32 + ldrsh r0, [r3, r2] + lsls r0, 24 + lsrs r0, 23 + adds r0, r4 + movs r7, 0 + ldrsh r0, [r0, r7] + cmp r0, 0 + bge _0813E8DC + adds r0, 0x1F +_0813E8DC: + asrs r0, 5 + strh r0, [r3, 0x26] + ldrh r0, [r3, 0x32] + adds r0, 0x8 + strh r0, [r3, 0x32] + movs r0, 0xFF + ands r1, r0 + cmp r1, 0x7F + bgt _0813E910 + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x43 + ldrb r0, [r0] + subs r0, 0x1 + b _0813E922 + .align 2, 0 +_0813E904: .4byte gSprites +_0813E908: .4byte gSineTable +_0813E90C: .4byte 0x000001ff +_0813E910: + movs r2, 0x2E + ldrsh r1, [r3, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r6 + adds r0, 0x43 + ldrb r0, [r0] + adds r0, 0x1 +_0813E922: + adds r1, r3, 0 + adds r1, 0x43 + strb r0, [r1] +_0813E928: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_813E804 + + thumb_func_start sub_813E930 +sub_813E930: @ 813E930 + push {r4-r7,lr} + lsls r0, 24 + lsrs r6, r0, 24 + movs r4, 0 + ldr r7, _0813E978 @ =gSprites + lsls r0, r6, 4 + adds r0, r6 + lsls r0, 2 + adds r5, r0, r7 +_0813E942: + movs r0, 0x20 + ldrsh r1, [r5, r0] + movs r0, 0x22 + ldrsh r2, [r5, r0] + ldr r0, _0813E97C @ =gSpriteTemplate_840B124 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r1, r0, 24 + cmp r1, 0x40 + beq _0813E968 + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r7 + strh r6, [r0, 0x2E] + lsls r1, r4, 5 + strh r1, [r0, 0x30] +_0813E968: + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x7 + bls _0813E942 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813E978: .4byte gSprites +_0813E97C: .4byte gSpriteTemplate_840B124 + thumb_func_end sub_813E930 + + thumb_func_start GetCurrentTrainerHillMapId +GetCurrentTrainerHillMapId: @ 813E980 + push {r4,r5,lr} + adds r3, r0, 0 + ldr r0, _0813E994 @ =gUnknown_0203931A + ldrh r0, [r0] + cmp r0, 0 + beq _0813E998 + adds r0, r3, 0 + bl DestroySprite + b _0813EA50 + .align 2, 0 +_0813E994: .4byte gUnknown_0203931A +_0813E998: + ldr r2, _0813EA58 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + movs r1, 0x4 + ands r1, r0 + mov r5, r12 + ldrb r2, [r5] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + ldrh r0, [r3, 0x3C] + adds r0, 0x1 + strh r0, [r3, 0x3C] + ldrh r0, [r3, 0x3A] + adds r4, r0, 0 + adds r4, 0x8 + strh r4, [r3, 0x3A] + ldr r2, _0813EA5C @ =gSineTable + ldrh r0, [r3, 0x34] + adds r0, 0x40 + lsls r0, 24 + lsrs r0, 23 + adds r0, r2 + movs r5, 0 + ldrsh r1, [r0, r5] + movs r5, 0x3A + ldrsh r0, [r3, r5] + muls r0, r1 + cmp r0, 0 + bge _0813E9EC + adds r0, 0xFF +_0813E9EC: + asrs r0, 8 + ldrh r1, [r3, 0x36] + adds r0, r1 + strh r0, [r3, 0x20] + movs r5, 0x34 + ldrsh r0, [r3, r5] + lsls r0, 24 + lsrs r0, 23 + adds r0, r2 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r5, 0x3A + ldrsh r0, [r3, r5] + muls r0, r1 + cmp r0, 0 + bge _0813EA0E + adds r0, 0xFF +_0813EA0E: + asrs r0, 8 + ldrh r1, [r3, 0x38] + adds r0, r1 + strh r0, [r3, 0x22] + movs r2, 0x3A + ldrsh r0, [r3, r2] + cmp r0, 0 + bge _0813EA20 + adds r0, 0xF +_0813EA20: + asrs r0, 4 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x9 + bls _0813EA2C + movs r0, 0x9 +_0813EA2C: + adds r1, r0, 0 + adds r1, 0x12 + movs r0, 0x1F + ands r1, r0 + lsls r1, 1 + ldrb r2, [r3, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, 0x3] + lsls r0, r4, 16 + asrs r0, 16 + cmp r0, 0xA0 + ble _0813EA50 + adds r0, r3, 0 + bl DestroySprite +_0813EA50: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813EA58: .4byte gSprites +_0813EA5C: .4byte gSineTable + thumb_func_end GetCurrentTrainerHillMapId + + thumb_func_start sub_813EA60 +sub_813EA60: @ 813EA60 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + adds r5, r0, 0 + ldr r0, _0813EA7C @ =gUnknown_0203931A + ldrh r0, [r0] + cmp r0, 0 + beq _0813EA80 + adds r0, r5, 0 + bl DestroySprite + b _0813EB32 + .align 2, 0 +_0813EA7C: .4byte gUnknown_0203931A +_0813EA80: + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0813EB40 @ =gSprites + mov r9, r0 + movs r4, 0x2E + ldrsh r1, [r5, r4] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + mov r1, r9 + adds r3, r0, r1 + movs r4, 0x2E + ldrsh r1, [r3, r4] + cmp r1, 0x1 + bne _0813EB32 + ldrh r0, [r5, 0x3C] + ands r1, r0 + lsls r0, r1, 16 + asrs r6, r0, 16 + cmp r6, 0 + bne _0813EB32 + ldrh r1, [r3, 0x20] + ldrh r0, [r5, 0x30] + adds r1, r0 + lsls r1, 16 + ldrh r2, [r3, 0x22] + ldrh r4, [r5, 0x32] + adds r2, r4 + lsls r2, 16 + ldr r0, _0813EB44 @ =gSpriteTemplate_840B150 + lsrs r4, r1, 16 + mov r8, r4 + asrs r1, 16 + lsrs r7, r2, 16 + asrs r2, 16 + adds r3, 0x43 + ldrb r3, [r3] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0813EB32 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r9 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x24 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1 + movs r3, 0x3 + bl CalcCenterToCornerVec + ldrh r0, [r5, 0x2E] + strh r0, [r4, 0x2E] + ldr r2, _0813EB48 @ =gUnknown_0840B168 + ldrh r0, [r5, 0x3C] + lsls r0, 16 + asrs r0, 17 + movs r1, 0x7 + ands r0, r1 + adds r0, r2 + ldrb r0, [r0] + strh r0, [r4, 0x34] + mov r0, r8 + strh r0, [r4, 0x36] + strh r7, [r4, 0x38] + strh r6, [r4, 0x3A] +_0813EB32: + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813EB40: .4byte gSprites +_0813EB44: .4byte gSpriteTemplate_840B150 +_0813EB48: .4byte gUnknown_0840B168 + thumb_func_end sub_813EA60 + + thumb_func_start sub_813EB4C +sub_813EB4C: @ 813EB4C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813EBB0 @ =gSpriteTemplate_840B170 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _0813EB80 + ldr r1, _0813EBB4 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + strh r4, [r0, 0x2E] + strh r1, [r0, 0x30] + movs r1, 0x8 + strh r1, [r0, 0x32] + movs r1, 0x18 + strh r1, [r0, 0x34] +_0813EB80: + movs r4, 0 + ldr r5, _0813EBB8 @ =gUnknown_0840B188 +_0813EB84: + adds r0, r4, 0 + adds r0, 0x12 + lsls r0, 24 + lsrs r0, 24 + lsls r1, r4, 1 + adds r1, r5 + ldrh r1, [r1] + str r1, [sp] + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + adds r0, r4, 0x1 + lsls r0, 24 + lsrs r4, r0, 24 + cmp r4, 0x9 + bls _0813EB84 + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813EBB0: .4byte gSpriteTemplate_840B170 +_0813EBB4: .4byte gSprites +_0813EBB8: .4byte gUnknown_0840B188 + thumb_func_end sub_813EB4C + + thumb_func_start sub_813EBBC +sub_813EBBC: @ 813EBBC + push {r4,lr} + adds r3, r0, 0 + ldr r0, _0813EBD0 @ =gUnknown_0203931A + ldrh r0, [r0] + cmp r0, 0 + beq _0813EBD4 + adds r0, r3, 0 + bl DestroySprite + b _0813EC80 + .align 2, 0 +_0813EBD0: .4byte gUnknown_0203931A +_0813EBD4: + ldr r2, _0813EC88 @ =gSprites + movs r0, 0x2E + ldrsh r1, [r3, r0] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + adds r0, r2 + adds r0, 0x3E + ldrb r0, [r0] + movs r1, 0x3E + adds r1, r3 + mov r12, r1 + movs r1, 0x4 + ands r1, r0 + mov r4, r12 + ldrb r2, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrh r0, [r3, 0x3C] + adds r0, 0x1 + strh r0, [r3, 0x3C] + ldrh r0, [r3, 0x3A] + adds r0, 0x8 + strh r0, [r3, 0x3A] + ldr r2, _0813EC8C @ =gSineTable + ldrh r0, [r3, 0x34] + adds r0, 0x40 + lsls r0, 24 + lsrs r0, 23 + adds r0, r2 + movs r4, 0 + ldrsh r1, [r0, r4] + movs r4, 0x3A + ldrsh r0, [r3, r4] + muls r0, r1 + cmp r0, 0 + bge _0813EC26 + adds r0, 0xFF +_0813EC26: + asrs r0, 8 + ldrh r1, [r3, 0x36] + adds r0, r1 + strh r0, [r3, 0x20] + movs r4, 0x34 + ldrsh r0, [r3, r4] + lsls r0, 24 + lsrs r0, 23 + adds r0, r2 + movs r4, 0 + ldrsh r1, [r0, r4] + movs r4, 0x3A + ldrsh r0, [r3, r4] + muls r0, r1 + cmp r0, 0 + bge _0813EC48 + adds r0, 0xFF +_0813EC48: + asrs r0, 8 + ldrh r4, [r3, 0x38] + adds r1, r0, r4 + strh r1, [r3, 0x22] + movs r4, 0x30 + ldrsh r0, [r3, r4] + lsls r0, 24 + lsrs r0, 23 + adds r0, r2 + movs r2, 0 + ldrsh r0, [r0, r2] + cmp r0, 0 + bge _0813EC64 + adds r0, 0x3F +_0813EC64: + asrs r0, 6 + strh r0, [r3, 0x26] + ldrh r0, [r3, 0x30] + adds r0, 0x10 + strh r0, [r3, 0x30] + lsls r0, r1, 16 + asrs r0, 16 + movs r4, 0x32 + ldrsh r1, [r3, r4] + cmp r0, r1 + bge _0813EC80 + adds r0, r3, 0 + bl DestroySprite +_0813EC80: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EC88: .4byte gSprites +_0813EC8C: .4byte gSineTable + thumb_func_end sub_813EBBC + + thumb_func_start sub_813EC90 +sub_813EC90: @ 813EC90 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r5, r0, 0 + ldr r0, _0813ECAC @ =gUnknown_0203931A + ldrh r0, [r0] + cmp r0, 0 + beq _0813ECB0 + adds r0, r5, 0 + bl DestroySprite + b _0813EDA0 + .align 2, 0 +_0813ECAC: .4byte gUnknown_0203931A +_0813ECB0: + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] + adds r2, r5, 0 + adds r2, 0x3E + ldrb r0, [r2] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0813EDB0 @ =gSprites + mov r9, r0 + movs r2, 0x2E + ldrsh r1, [r5, r2] + lsls r0, r1, 4 + adds r0, r1 + lsls r0, 2 + mov r4, r9 + adds r3, r0, r4 + movs r0, 0x2E + ldrsh r1, [r3, r0] + cmp r1, 0x1 + bne _0813ED74 + ldrh r0, [r5, 0x3C] + ands r1, r0 + lsls r0, r1, 16 + asrs r6, r0, 16 + cmp r6, 0 + bne _0813ED66 + ldrh r1, [r3, 0x20] + ldrh r2, [r5, 0x30] + adds r1, r2 + lsls r1, 16 + ldrh r2, [r3, 0x22] + ldrh r4, [r5, 0x32] + adds r2, r4 + lsls r2, 16 + ldr r0, _0813EDB4 @ =gSpriteTemplate_840B1B0 + lsrs r4, r1, 16 + mov r8, r4 + asrs r1, 16 + lsrs r7, r2, 16 + asrs r2, 16 + adds r3, 0x43 + ldrb r3, [r3] + adds r3, 0x1 + lsls r3, 24 + lsrs r3, 24 + bl CreateSprite + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x40 + beq _0813ED66 + lsls r4, r0, 4 + adds r4, r0 + lsls r4, 2 + add r4, r9 + ldrb r0, [r4, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r4, 0x1] + ldrb r1, [r4, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x22 + orrs r0, r1 + strb r0, [r4, 0x3] + adds r0, r4, 0 + movs r1, 0 + movs r2, 0x1 + movs r3, 0x3 + bl CalcCenterToCornerVec + ldrh r0, [r5, 0x2E] + strh r0, [r4, 0x2E] + ldrh r0, [r5, 0x3C] + lsls r0, 16 + asrs r0, 18 + movs r1, 0x7 + ands r0, r1 + lsls r0, 5 + strh r0, [r4, 0x30] + ldrh r0, [r5, 0x34] + strh r0, [r4, 0x32] + movs r0, 0xE8 + strh r0, [r4, 0x34] + mov r0, r8 + strh r0, [r4, 0x36] + strh r7, [r4, 0x38] + strh r6, [r4, 0x3A] +_0813ED66: + ldrh r1, [r5, 0x3A] + movs r2, 0x3A + ldrsh r0, [r5, r2] + cmp r0, 0x6F + bgt _0813ED74 + adds r0, r1, 0x4 + strh r0, [r5, 0x3A] +_0813ED74: + ldr r1, _0813EDB8 @ =gSineTable + ldrh r0, [r5, 0x3A] + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + movs r4, 0 + ldrsh r0, [r0, r4] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r0, 0x11 + movs r2, 0 + movs r3, 0 + bl SetOamMatrix +_0813EDA0: + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0813EDB0: .4byte gSprites +_0813EDB4: .4byte gSpriteTemplate_840B1B0 +_0813EDB8: .4byte gSineTable + thumb_func_end sub_813EC90 + + thumb_func_start sub_813EDBC +sub_813EDBC: @ 813EDBC + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0813EDF4 @ =gSpriteTemplate_840B1C8 + movs r1, 0 + movs r2, 0 + movs r3, 0 + bl CreateSprite + lsls r0, 24 + lsrs r2, r0, 24 + cmp r2, 0x40 + beq _0813EDEE + ldr r1, _0813EDF8 @ =gSprites + lsls r0, r2, 4 + adds r0, r2 + lsls r0, 2 + adds r0, r1 + movs r1, 0 + strh r4, [r0, 0x2E] + strh r1, [r0, 0x30] + movs r1, 0xC + strh r1, [r0, 0x32] + movs r1, 0x18 + strh r1, [r0, 0x34] +_0813EDEE: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0813EDF4: .4byte gSpriteTemplate_840B1C8 +_0813EDF8: .4byte gSprites + thumb_func_end sub_813EDBC + + thumb_func_start sub_813EDFC +sub_813EDFC: @ 813EDFC + push {r4,r5,lr} + sub sp, 0x4 + adds r5, r0, 0 + movs r1, 0x2E + ldrsh r0, [r5, r1] + cmp r0, 0 + beq _0813EE12 + adds r4, r5, 0 + adds r4, 0x3E + cmp r0, 0x1 + beq _0813EE4A +_0813EE12: + adds r4, r5, 0 + adds r4, 0x3E + ldrb r1, [r4] + movs r0, 0x5 + negs r0, r0 + ands r0, r1 + strb r0, [r4] + ldrb r0, [r5, 0x1] + movs r1, 0x3 + orrs r0, r1 + strb r0, [r5, 0x1] + ldrb r1, [r5, 0x3] + movs r0, 0x3F + negs r0, r0 + ands r0, r1 + movs r1, 0x24 + orrs r0, r1 + strb r0, [r5, 0x3] + adds r0, r5, 0 + movs r1, 0 + movs r2, 0x3 + movs r3, 0x3 + bl CalcCenterToCornerVec + movs r0, 0 + strh r0, [r5, 0x30] + movs r0, 0x1 + strh r0, [r5, 0x2E] +_0813EE4A: + ldrh r0, [r5, 0x3C] + adds r0, 0x1 + strh r0, [r5, 0x3C] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + beq _0813EE62 + ldrb r0, [r4] + movs r1, 0x4 + orrs r0, r1 + strb r0, [r4] + b _0813EE7A +_0813EE62: + ldrb r0, [r4] + movs r1, 0x5 + negs r1, r1 + ands r1, r0 + strb r1, [r4] + ldrh r1, [r5, 0x30] + movs r2, 0x30 + ldrsh r0, [r5, r2] + cmp r0, 0x3F + bgt _0813EE7A + adds r0, r1, 0x1 + strh r0, [r5, 0x30] +_0813EE7A: + ldr r1, _0813EEB0 @ =gSineTable + ldrh r0, [r5, 0x30] + lsls r0, 24 + lsrs r0, 23 + adds r0, r1 + movs r1, 0 + ldrsh r0, [r0, r1] + lsrs r1, r0, 31 + adds r0, r1 + asrs r0, 1 + movs r2, 0x80 + lsls r2, 1 + adds r1, r2, 0 + subs r1, r0 + lsls r1, 16 + lsrs r1, 16 + str r1, [sp] + movs r0, 0x12 + movs r2, 0 + movs r3, 0 + bl SetOamMatrix + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_0813EEB0: .4byte gSineTable + thumb_func_end sub_813EDFC + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index e56af2903..9cf1da63d 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -194,7 +194,9 @@ SECTIONS { src/player_pc.o(.text); asm/player_pc.o(.text); src/intro.o(.text); - asm/rom_813BA94.o(.text); + asm/intro.o(.text); + asm/field_region_map.o(.text); + asm/battle_anim_813F0F4.o(.text); asm/hall_of_fame.o(.text); asm/credits.o(.text); src/lottery_corner.o(.text); |