.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text thumb_func_start ResetSpriteData ResetSpriteData: @ 8006B10 push {r4,lr} movs r0, 0 movs r1, 0x80 bl ResetOamRange bl ResetAllSprites bl ClearSpriteCopyRequests bl ResetAffineAnimData bl FreeSpriteTileRanges ldr r1, _08006B4C @ =gUnknown_2021B44 movs r0, 0x40 strb r0, [r1] ldr r0, _08006B50 @ =gUnknown_2021B46 movs r4, 0 strh r4, [r0] movs r0, 0 bl AllocSpriteTiles ldr r0, _08006B54 @ =gUnknown_2021BC8 strh r4, [r0] ldr r0, _08006B58 @ =gUnknown_2021BCA strh r4, [r0] pop {r4} pop {r0} bx r0 .align 2, 0 _08006B4C: .4byte gUnknown_2021B44 _08006B50: .4byte gUnknown_2021B46 _08006B54: .4byte gUnknown_2021BC8 _08006B58: .4byte gUnknown_2021BCA thumb_func_end ResetSpriteData thumb_func_start AnimateSprites AnimateSprites: @ 8006B5C push {r4-r7,lr} movs r6, 0 movs r7, 0x1 _08006B62: lsls r0, r6, 4 adds r0, r6 lsls r0, 2 ldr r1, _08006BA4 @ =gUnknown_202063C adds r4, r0, r1 adds r5, r4, 0 adds r5, 0x3E ldrb r1, [r5] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _08006B92 ldr r1, [r4, 0x1C] adds r0, r4, 0 bl _call_via_r1 ldrb r1, [r5] adds r0, r7, 0 ands r0, r1 cmp r0, 0 beq _08006B92 adds r0, r4, 0 bl AnimateSprite _08006B92: adds r0, r6, 0x1 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x3F bls _08006B62 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08006BA4: .4byte gUnknown_202063C thumb_func_end AnimateSprites thumb_func_start BuildOamBuffer BuildOamBuffer: @ 8006BA8 push {r4,r5,lr} bl UpdateOamCoords bl BuildSpritePriorities bl SortSprites ldr r5, _08006BE8 @ =gMain ldr r0, _08006BEC @ =0x00000439 adds r5, r0 ldrb r0, [r5] lsls r4, r0, 31 lsrs r4, 31 movs r1, 0x1 orrs r0, r1 strb r0, [r5] bl AddSpritesToOamBuffer bl CopyMatricesToOamBuffer movs r2, 0x1 ldrb r1, [r5] movs r0, 0x2 negs r0, r0 ands r0, r1 orrs r4, r0 strb r4, [r5] ldr r0, _08006BF0 @ =gUnknown_2021840 strb r2, [r0] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08006BE8: .4byte gMain _08006BEC: .4byte 0x00000439 _08006BF0: .4byte gUnknown_2021840 thumb_func_end BuildOamBuffer thumb_func_start UpdateOamCoords UpdateOamCoords: @ 8006BF4 push {r4-r7,lr} movs r4, 0 ldr r7, _08006C60 @ =gUnknown_202063C ldr r0, _08006C64 @ =0x000001ff adds r5, r0, 0 ldr r6, _08006C68 @ =0xfffffe00 _08006C00: lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r3, r0, r7 adds r0, r3, 0 adds r0, 0x3E ldrb r1, [r0] movs r0, 0x5 ands r0, r1 cmp r0, 0x1 bne _08006CA6 movs r0, 0x2 ands r0, r1 cmp r0, 0 beq _08006C74 movs r2, 0x20 ldrsh r1, [r3, r2] movs r2, 0x24 ldrsh r0, [r3, r2] adds r1, r0 adds r0, r3, 0 adds r0, 0x28 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 adds r1, r0 ldr r0, _08006C6C @ =gUnknown_2021BC8 movs r2, 0 ldrsh r0, [r0, r2] adds r1, r0 ands r1, r5 ldrh r2, [r3, 0x2] adds r0, r6, 0 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x2] ldrh r1, [r3, 0x26] ldrh r0, [r3, 0x22] adds r1, r0 adds r0, r3, 0 adds r0, 0x29 ldrb r0, [r0] ldr r2, _08006C70 @ =gUnknown_2021BCA adds r0, r1 ldrb r2, [r2] adds r0, r2 b _08006CA4 .align 2, 0 _08006C60: .4byte gUnknown_202063C _08006C64: .4byte 0x000001ff _08006C68: .4byte 0xfffffe00 _08006C6C: .4byte gUnknown_2021BC8 _08006C70: .4byte gUnknown_2021BCA _08006C74: movs r2, 0x20 ldrsh r1, [r3, r2] movs r2, 0x24 ldrsh r0, [r3, r2] adds r1, r0 adds r0, r3, 0 adds r0, 0x28 ldrb r0, [r0] lsls r0, 24 asrs r0, 24 adds r1, r0 ands r1, r5 ldrh r2, [r3, 0x2] adds r0, r6, 0 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x2] ldrh r1, [r3, 0x26] ldrh r0, [r3, 0x22] adds r1, r0 adds r0, r3, 0 adds r0, 0x29 ldrb r0, [r0] adds r0, r1 _08006CA4: strb r0, [r3] _08006CA6: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3F bls _08006C00 pop {r4-r7} pop {r0} bx r0 thumb_func_end UpdateOamCoords thumb_func_start BuildSpritePriorities BuildSpritePriorities: @ 8006CB8 push {r4,lr} movs r2, 0 ldr r4, _08006CF0 @ =gUnknown_202063C ldr r3, _08006CF4 @ =gUnknown_2021780 _08006CC0: lsls r0, r2, 4 adds r0, r2 lsls r0, 2 adds r0, r4 adds r1, r0, 0 adds r1, 0x43 ldrb r1, [r1] ldrb r0, [r0, 0x5] lsls r0, 28 lsrs r0, 30 lsls r0, 8 orrs r1, r0 lsls r0, r2, 1 adds r0, r3 strh r1, [r0] adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, 0x3F bls _08006CC0 pop {r4} pop {r0} bx r0 .align 2, 0 _08006CF0: .4byte gUnknown_202063C _08006CF4: .4byte gUnknown_2021780 thumb_func_end BuildSpritePriorities thumb_func_start SortSprites SortSprites: @ 8006CF8 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 movs r0, 0x1 mov r12, r0 ldr r1, _08006DC0 @ =gUnknown_2021800 mov r10, r1 ldr r3, _08006DC4 @ =0xffffff00 mov r9, r3 ldr r6, _08006DC8 @ =0xc0000300 mov r8, r6 _08006D14: mov r5, r12 mov r0, r12 subs r0, 0x1 add r0, r10 ldrb r2, [r0] lsls r0, r2, 4 adds r0, r2 lsls r0, 2 ldr r7, _08006DCC @ =gUnknown_202063C adds r3, r0, r7 mov r0, r12 add r0, r10 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, r0, r7 lsls r2, 1 ldr r0, _08006DD0 @ =gUnknown_2021780 adds r2, r0 ldrh r2, [r2] str r2, [sp] lsls r1, 1 adds r1, r0 ldrh r6, [r1] ldrb r1, [r3] ldrb r2, [r4] adds r0, r1, 0 cmp r0, 0x9F ble _08006D56 add r0, r9 lsls r0, 16 lsrs r1, r0, 16 _08006D56: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x9F ble _08006D64 add r0, r9 lsls r0, 16 lsrs r2, r0, 16 _08006D64: ldr r0, [r3] mov r7, r8 ands r0, r7 cmp r0, r8 bne _08006D88 ldrb r0, [r3, 0x1] lsrs r0, 6 cmp r0, 0 beq _08006D7A cmp r0, 0x2 bne _08006D88 _08006D7A: lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x80 ble _08006D88 add r0, r9 lsls r0, 16 lsrs r1, r0, 16 _08006D88: ldr r0, [r4] mov r3, r8 ands r0, r3 cmp r0, r8 bne _08006DAC ldrb r0, [r4, 0x1] lsrs r0, 6 cmp r0, 0 beq _08006D9E cmp r0, 0x2 bne _08006DAC _08006D9E: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x80 ble _08006DAC add r0, r9 lsls r0, 16 lsrs r2, r0, 16 _08006DAC: movs r7, 0x1 add r12, r7 cmp r5, 0 beq _08006E92 ldr r0, [sp] cmp r0, r6 bhi _08006DD4 cmp r0, r6 bne _08006E92 b _08006E8A .align 2, 0 _08006DC0: .4byte gUnknown_2021800 _08006DC4: .4byte 0xffffff00 _08006DC8: .4byte 0xc0000300 _08006DCC: .4byte gUnknown_202063C _08006DD0: .4byte gUnknown_2021780 _08006DD4: mov r1, r10 adds r3, r5, r1 ldrb r4, [r3] subs r2, r5, 0x1 adds r1, r2, r1 ldrb r0, [r1] strb r0, [r3] strb r4, [r1] lsls r2, 24 lsrs r5, r2, 24 subs r0, r5, 0x1 add r0, r10 ldrb r2, [r0] lsls r0, r2, 4 adds r0, r2 lsls r0, 2 ldr r6, _08006EB0 @ =gUnknown_202063C adds r3, r0, r6 mov r7, r10 adds r0, r5, r7 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 adds r4, r0, r6 lsls r2, 1 ldr r0, _08006EB4 @ =gUnknown_2021780 adds r2, r0 ldrh r2, [r2] str r2, [sp] lsls r1, 1 adds r1, r0 ldrh r6, [r1] ldrb r1, [r3] ldrb r2, [r4] adds r0, r1, 0 cmp r0, 0x9F ble _08006E26 add r0, r9 lsls r0, 16 lsrs r1, r0, 16 _08006E26: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x9F ble _08006E34 add r0, r9 lsls r0, 16 lsrs r2, r0, 16 _08006E34: ldr r0, [r3] mov r7, r8 ands r0, r7 cmp r0, r8 bne _08006E58 ldrb r0, [r3, 0x1] lsrs r0, 6 cmp r0, 0 beq _08006E4A cmp r0, 0x2 bne _08006E58 _08006E4A: lsls r0, r1, 16 asrs r0, 16 cmp r0, 0x80 ble _08006E58 add r0, r9 lsls r0, 16 lsrs r1, r0, 16 _08006E58: ldr r0, [r4] mov r3, r8 ands r0, r3 cmp r0, r8 bne _08006E7C ldrb r0, [r4, 0x1] lsrs r0, 6 cmp r0, 0 beq _08006E6E cmp r0, 0x2 bne _08006E7C _08006E6E: lsls r0, r2, 16 asrs r0, 16 cmp r0, 0x80 ble _08006E7C add r0, r9 lsls r0, 16 lsrs r2, r0, 16 _08006E7C: cmp r5, 0 beq _08006E92 ldr r7, [sp] cmp r7, r6 bhi _08006DD4 cmp r7, r6 bne _08006E92 _08006E8A: lsls r1, 16 lsls r0, r2, 16 cmp r1, r0 blt _08006DD4 _08006E92: mov r1, r12 lsls r0, r1, 24 lsrs r0, 24 mov r12, r0 cmp r0, 0x3F bhi _08006EA0 b _08006D14 _08006EA0: 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 _08006EB0: .4byte gUnknown_202063C _08006EB4: .4byte gUnknown_2021780 thumb_func_end SortSprites thumb_func_start CopyMatricesToOamBuffer CopyMatricesToOamBuffer: @ 8006EB8 push {r4-r6,lr} movs r4, 0 ldr r5, _08006EFC @ =gMain ldr r6, _08006F00 @ =gUnknown_2021BCC _08006EC0: lsls r2, r4, 2 lsls r1, r4, 5 adds r1, r5 lsls r3, r4, 3 adds r3, r6 ldrh r0, [r3] strh r0, [r1, 0x3E] adds r0, r2, 0x1 lsls r0, 3 adds r0, r5 ldrh r1, [r3, 0x2] strh r1, [r0, 0x3E] adds r0, r2, 0x2 lsls r0, 3 adds r0, r5 ldrh r1, [r3, 0x4] strh r1, [r0, 0x3E] adds r2, 0x3 lsls r2, 3 adds r2, r5 ldrh r0, [r3, 0x6] strh r0, [r2, 0x3E] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x1F bls _08006EC0 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08006EFC: .4byte gMain _08006F00: .4byte gUnknown_2021BCC thumb_func_end CopyMatricesToOamBuffer thumb_func_start AddSpritesToOamBuffer AddSpritesToOamBuffer: @ 8006F04 push {r4-r6,lr} sub sp, 0x4 movs r4, 0 mov r0, sp strb r4, [r0] _08006F0E: ldr r0, _08006F78 @ =gUnknown_2021800 adds r0, r4, r0 ldrb r1, [r0] lsls r0, r1, 4 adds r0, r1 lsls r0, 2 ldr r1, _08006F7C @ =gUnknown_202063C adds r2, r0, r1 adds r0, r2, 0 adds r0, 0x3E ldrb r1, [r0] movs r0, 0x5 ands r0, r1 cmp r0, 0x1 bne _08006F3A adds r0, r2, 0 mov r1, sp bl AddSpriteToOamBuffer lsls r0, 24 cmp r0, 0 bne _08006F70 _08006F3A: adds r4, 0x1 cmp r4, 0x3F ble _08006F0E mov r0, sp ldr r4, _08006F80 @ =gUnknown_2021B44 ldrb r0, [r0] ldrb r1, [r4] cmp r0, r1 bcs _08006F70 mov r1, sp ldr r5, _08006F84 @ =gMain + 0x38 ldr r0, _08006F88 @ =gUnknown_8231CE4 ldr r2, [r0] ldr r3, [r0, 0x4] _08006F56: ldrb r0, [r1] lsls r0, 3 adds r0, r5 str r2, [r0] str r3, [r0, 0x4] ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] lsls r0, 24 lsrs r0, 24 ldrb r6, [r4] cmp r0, r6 bcc _08006F56 _08006F70: add sp, 0x4 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08006F78: .4byte gUnknown_2021800 _08006F7C: .4byte gUnknown_202063C _08006F80: .4byte gUnknown_2021B44 _08006F84: .4byte gMain + 0x38 _08006F88: .4byte gUnknown_8231CE4 thumb_func_end AddSpritesToOamBuffer thumb_func_start CreateSprite CreateSprite: @ 8006F8C push {r4-r7,lr} sub sp, 0x4 adds r7, r0, 0 lsls r3, 24 lsrs r4, r3, 24 movs r3, 0 ldr r0, _08006FC8 @ =gUnknown_202063C mov r12, r0 lsls r5, r1, 16 lsls r6, r2, 16 _08006FA0: lsls r0, r3, 4 adds r0, r3 lsls r0, 2 add r0, r12 adds r0, 0x3E ldrb r0, [r0] lsls r0, 31 cmp r0, 0 bne _08006FCC str r4, [sp] adds r0, r3, 0 adds r1, r7, 0 asrs r2, r5, 16 asrs r3, r6, 16 bl CreateSpriteAt lsls r0, 24 lsrs r0, 24 b _08006FD8 .align 2, 0 _08006FC8: .4byte gUnknown_202063C _08006FCC: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x3F bls _08006FA0 movs r0, 0x40 _08006FD8: add sp, 0x4 pop {r4-r7} pop {r1} bx r1 thumb_func_end CreateSprite thumb_func_start CreateSpriteAtEnd CreateSpriteAtEnd: @ 8006FE0 push {r4-r7,lr} mov r7, r8 push {r7} sub sp, 0x4 adds r7, r0, 0 lsls r3, 24 lsrs r6, r3, 24 movs r3, 0x3F ldr r0, _0800702C @ =gUnknown_202063C mov r8, r0 movs r0, 0x1 negs r0, r0 mov r12, r0 lsls r4, r1, 16 lsls r5, r2, 16 _08006FFE: lsls r0, r3, 16 asrs r1, r0, 16 lsls r0, r1, 4 adds r0, r1 lsls r0, 2 add r0, r8 adds r0, 0x3E ldrb r0, [r0] lsls r0, 31 cmp r0, 0 bne _08007030 lsls r0, r3, 24 lsrs r0, 24 str r6, [sp] adds r1, r7, 0 asrs r2, r4, 16 asrs r3, r5, 16 bl CreateSpriteAt lsls r0, 24 lsrs r0, 24 b _0800703E .align 2, 0 _0800702C: .4byte gUnknown_202063C _08007030: subs r0, r1, 0x1 lsls r0, 16 lsrs r3, r0, 16 asrs r0, 16 cmp r0, r12 bgt _08006FFE movs r0, 0x40 _0800703E: add sp, 0x4 pop {r3} mov r8, r3 pop {r4-r7} pop {r1} bx r1 thumb_func_end CreateSpriteAtEnd thumb_func_start CreateInvisibleSprite CreateInvisibleSprite: @ 800704C push {r4-r6,lr} adds r6, r0, 0 ldr r0, _08007084 @ =gUnknown_8231D00 movs r1, 0 movs r2, 0 movs r3, 0x1F bl CreateSprite lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0x40 beq _0800708C ldr r4, _08007088 @ =gUnknown_202063C lsls r1, r5, 4 adds r1, r5 lsls r1, 2 adds r2, r1, r4 adds r2, 0x3E ldrb r0, [r2] movs r3, 0x4 orrs r0, r3 strb r0, [r2] adds r4, 0x1C adds r1, r4 str r6, [r1] adds r0, r5, 0 b _0800708E .align 2, 0 _08007084: .4byte gUnknown_8231D00 _08007088: .4byte gUnknown_202063C _0800708C: movs r0, 0x40 _0800708E: pop {r4-r6} pop {r1} bx r1 thumb_func_end CreateInvisibleSprite thumb_func_start CreateSpriteAt CreateSpriteAt: @ 8007094 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} mov r8, r1 adds r5, r2, 0 adds r6, r3, 0 ldr r4, [sp, 0x20] lsls r0, 24 lsrs r0, 24 mov r10, r0 lsls r5, 16 lsrs r5, 16 lsls r6, 16 lsrs r6, 16 lsls r4, 24 lsrs r4, 24 lsls r0, 4 add r0, r10 lsls r0, 2 ldr r1, _08007158 @ =gUnknown_202063C adds r7, r0, r1 adds r0, r7, 0 bl ResetSprite adds r2, r7, 0 adds r2, 0x3E ldrb r0, [r2] movs r1, 0x1 orrs r0, r1 strb r0, [r2] movs r0, 0x3F adds r0, r7 mov r9, r0 ldrb r0, [r0] movs r1, 0x4 orrs r0, r1 movs r1, 0x8 orrs r0, r1 movs r1, 0x40 orrs r0, r1 mov r1, r9 strb r0, [r1] adds r0, r7, 0 adds r0, 0x43 strb r4, [r0] mov r1, r8 ldr r0, [r1, 0x4] ldr r1, [r0, 0x4] ldr r0, [r0] str r0, [r7] str r1, [r7, 0x4] mov r1, r8 ldr r0, [r1, 0x8] str r0, [r7, 0x8] ldr r0, [r1, 0x10] str r0, [r7, 0x10] str r1, [r7, 0x14] ldr r0, [r1, 0x14] str r0, [r7, 0x1C] strh r5, [r7, 0x20] strh r6, [r7, 0x22] ldrb r3, [r7, 0x1] lsrs r1, r3, 6 ldrb r2, [r7, 0x3] lsrs r2, 6 lsls r3, 30 lsrs r3, 30 adds r0, r7, 0 bl CalcCenterToCornerVec mov r0, r8 ldrh r1, [r0] ldr r4, _0800715C @ =0xffff0000 lsrs r0, r4, 16 cmp r1, r0 bne _08007190 mov r1, r8 ldr r0, [r1, 0xC] str r0, [r7, 0xC] ldrh r0, [r0, 0x4] lsrs r0, 5 lsls r0, 24 lsrs r0, 24 bl AllocSpriteTiles lsls r0, 16 lsrs r2, r0, 16 asrs r0, 16 asrs r1, r4, 16 cmp r0, r1 bne _08007160 adds r0, r7, 0 bl ResetSprite movs r0, 0x40 b _080071D8 .align 2, 0 _08007158: .4byte gUnknown_202063C _0800715C: .4byte 0xffff0000 _08007160: ldr r1, _08007188 @ =0x000003ff adds r0, r1, 0 ands r2, r0 ldrh r1, [r7, 0x4] ldr r0, _0800718C @ =0xfffffc00 ands r0, r1 orrs r0, r2 strh r0, [r7, 0x4] mov r0, r9 ldrb r1, [r0] movs r0, 0x41 negs r0, r0 ands r0, r1 mov r1, r9 strb r0, [r1] adds r1, r7, 0 adds r1, 0x40 movs r0, 0 strh r0, [r1] b _080071A4 .align 2, 0 _08007188: .4byte 0x000003ff _0800718C: .4byte 0xfffffc00 _08007190: mov r1, r8 ldrh r0, [r1] bl GetSpriteTileStartByTag adds r1, r7, 0 adds r1, 0x40 strh r0, [r1] adds r0, r7, 0 bl SetSpriteSheetFrameTileNum _080071A4: ldrb r0, [r7, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080071B8 adds r0, r7, 0 bl InitSpriteAffineAnim _080071B8: mov r0, r8 ldrh r1, [r0, 0x2] ldr r0, _080071E8 @ =0x0000ffff cmp r1, r0 beq _080071D6 mov r1, r8 ldrh r0, [r1, 0x2] bl IndexOfSpritePaletteTag lsls r0, 4 ldrb r2, [r7, 0x5] movs r1, 0xF ands r1, r2 orrs r1, r0 strb r1, [r7, 0x5] _080071D6: mov r0, r10 _080071D8: pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _080071E8: .4byte 0x0000ffff thumb_func_end CreateSpriteAt thumb_func_start CreateSpriteAndAnimate CreateSpriteAndAnimate: @ 80071EC push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x4 mov r10, r0 lsls r3, 24 lsrs r3, 24 mov r9, r3 movs r3, 0 ldr r5, _0800725C @ =gUnknown_202063C lsls r1, 16 mov r12, r1 lsls r2, 16 mov r8, r2 _0800720C: lsls r0, r3, 4 adds r0, r3 lsls r6, r0, 2 adds r4, r6, r5 adds r7, r4, 0 adds r7, 0x3E ldrb r0, [r7] lsls r0, 31 cmp r0, 0 bne _08007264 mov r0, r9 str r0, [sp] adds r0, r3, 0 mov r1, r10 mov r3, r12 asrs r2, r3, 16 mov r5, r8 asrs r3, r5, 16 bl CreateSpriteAt lsls r0, 24 lsrs r0, 24 adds r5, r0, 0 cmp r5, 0x40 beq _0800726E ldr r1, _08007260 @ =gUnknown_2020658 adds r0, r6, r1 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 ldrb r0, [r7] lsls r0, 31 cmp r0, 0 beq _08007258 adds r0, r4, 0 bl AnimateSprite _08007258: adds r0, r5, 0 b _08007270 .align 2, 0 _0800725C: .4byte gUnknown_202063C _08007260: .4byte gUnknown_2020658 _08007264: adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, 0x3F bls _0800720C _0800726E: movs r0, 0x40 _08007270: add sp, 0x4 pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 thumb_func_end CreateSpriteAndAnimate thumb_func_start DestroySprite DestroySprite: @ 8007280 push {r4-r7,lr} adds r5, r0, 0 adds r0, 0x3E ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 beq _080072DC adds r0, r5, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _080072D6 ldr r0, [r5, 0xC] ldrh r2, [r0, 0x4] lsrs r2, 5 ldrh r0, [r5, 0x4] lsls r0, 22 lsrs r1, r0, 22 adds r4, r1, r2 adds r3, r1, 0 cmp r3, r4 bcs _080072D6 ldr r0, _080072E4 @ =gUnknown_2021B48 mov r12, r0 movs r6, 0x7 movs r7, 0x1 _080072BA: lsrs r2, r3, 3 add r2, r12 adds r0, r3, 0 ands r0, r6 adds r1, r7, 0 lsls r1, r0 ldrb r0, [r2] bics r0, r1 strb r0, [r2] adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r4 bcc _080072BA _080072D6: adds r0, r5, 0 bl ResetSprite _080072DC: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080072E4: .4byte gUnknown_2021B48 thumb_func_end DestroySprite thumb_func_start ResetOamRange ResetOamRange: @ 80072E8 push {r4-r6,lr} lsls r0, 24 lsls r1, 24 lsrs r4, r1, 24 lsrs r3, r0, 24 cmp r3, r4 bcs _08007310 ldr r6, _08007318 @ =gMain + 0x38 ldr r5, _0800731C @ =gUnknown_8231CE4 _080072FA: lsls r0, r3, 3 adds r0, r6 ldr r1, [r5] ldr r2, [r5, 0x4] str r1, [r0] str r2, [r0, 0x4] adds r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 cmp r3, r4 bcc _080072FA _08007310: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08007318: .4byte gMain + 0x38 _0800731C: .4byte gUnknown_8231CE4 thumb_func_end ResetOamRange thumb_func_start LoadOam LoadOam: @ 8007320 push {lr} ldr r2, _08007344 @ =gMain ldr r1, _08007348 @ =0x00000439 adds r0, r2, r1 ldrb r1, [r0] movs r0, 0x1 ands r0, r1 cmp r0, 0 bne _08007340 adds r0, r2, 0 adds r0, 0x38 movs r1, 0xE0 lsls r1, 19 ldr r2, _0800734C @ =0x04000100 bl CpuSet _08007340: pop {r0} bx r0 .align 2, 0 _08007344: .4byte gMain _08007348: .4byte 0x00000439 _0800734C: .4byte 0x04000100 thumb_func_end LoadOam thumb_func_start ClearSpriteCopyRequests ClearSpriteCopyRequests: @ 8007350 push {r4,r5,lr} ldr r0, _08007384 @ =gUnknown_2021840 movs r1, 0 strb r1, [r0] ldr r0, _08007388 @ =gUnknown_2021841 strb r1, [r0] movs r2, 0 ldr r4, _0800738C @ =gUnknown_2021844 movs r3, 0 adds r5, r4, 0x4 _08007364: lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r1, r0, r4 str r3, [r1] adds r0, r5 str r3, [r0] strh r3, [r1, 0x8] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x3F bls _08007364 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08007384: .4byte gUnknown_2021840 _08007388: .4byte gUnknown_2021841 _0800738C: .4byte gUnknown_2021844 thumb_func_end ClearSpriteCopyRequests thumb_func_start ResetOamMatrices ResetOamMatrices: @ 8007390 push {r4,lr} movs r1, 0 ldr r4, _080073B8 @ =gUnknown_2021BCC movs r3, 0 movs r2, 0x80 lsls r2, 1 _0800739C: lsls r0, r1, 3 adds r0, r4 strh r2, [r0] strh r3, [r0, 0x2] strh r3, [r0, 0x4] strh r2, [r0, 0x6] adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x1F bls _0800739C pop {r4} pop {r0} bx r0 .align 2, 0 _080073B8: .4byte gUnknown_2021BCC thumb_func_end ResetOamMatrices thumb_func_start SetOamMatrix SetOamMatrix: @ 80073BC push {r4,r5,lr} ldr r5, [sp, 0xC] lsls r0, 24 ldr r4, _080073D8 @ =gUnknown_2021BCC lsrs r0, 21 adds r0, r4 strh r1, [r0] strh r2, [r0, 0x2] strh r3, [r0, 0x4] strh r5, [r0, 0x6] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080073D8: .4byte gUnknown_2021BCC thumb_func_end SetOamMatrix thumb_func_start ResetSprite ResetSprite: @ 80073DC push {lr} ldr r1, _080073EC @ =gUnknown_8231CA0 movs r2, 0x44 bl memcpy pop {r0} bx r0 .align 2, 0 _080073EC: .4byte gUnknown_8231CA0 thumb_func_end ResetSprite thumb_func_start CalcCenterToCornerVec CalcCenterToCornerVec: @ 80073F0 push {r4-r6,lr} adds r6, r0, 0 lsls r1, 24 lsls r2, 24 lsls r3, 24 lsrs r3, 24 ldr r4, _08007430 @ =gUnknown_8231C85 lsrs r2, 23 lsrs r1, 21 adds r2, r1 adds r0, r2, r4 ldrb r5, [r0] adds r4, 0x1 adds r2, r4 ldrb r1, [r2] movs r0, 0x2 ands r3, r0 cmp r3, 0 beq _0800741E lsls r0, r5, 25 lsrs r5, r0, 24 lsls r0, r1, 25 lsrs r1, r0, 24 _0800741E: adds r0, r6, 0 adds r0, 0x28 strb r5, [r0] adds r0, 0x1 strb r1, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08007430: .4byte gUnknown_8231C85 thumb_func_end CalcCenterToCornerVec thumb_func_start AllocSpriteTiles AllocSpriteTiles: @ 8007434 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} lsls r0, 16 lsrs r4, r0, 16 cmp r4, 0 bne _0800748A ldr r0, _08007478 @ =gUnknown_2021B46 ldrh r3, [r0] ldr r0, _0800747C @ =0x000003ff cmp r3, r0 bhi _08007472 ldr r7, _08007480 @ =gUnknown_2021B48 movs r6, 0x7 adds r4, r0, 0 movs r5, 0x1 _08007456: lsrs r2, r3, 3 adds r2, r7 adds r0, r3, 0 ands r0, r6 adds r1, r5, 0 lsls r1, r0 ldrb r0, [r2] bics r0, r1 strb r0, [r2] adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r4 bls _08007456 _08007472: movs r0, 0 b _0800753C .align 2, 0 _08007478: .4byte gUnknown_2021B46 _0800747C: .4byte 0x000003ff _08007480: .4byte gUnknown_2021B48 _08007484: movs r0, 0x1 negs r0, r0 b _0800753C _0800748A: ldr r0, _08007548 @ =gUnknown_2021B46 ldrh r3, [r0] ldr r0, _0800754C @ =gUnknown_2021B48 mov r9, r0 movs r7, 0x7 movs r6, 0x1 _08007496: lsrs r0, r3, 3 add r0, r9 ldrb r1, [r0] adds r0, r3, 0 ands r0, r7 asrs r1, r0 ands r1, r6 cmp r1, 0 beq _080074CA movs r5, 0x80 lsls r5, 3 ldr r2, _0800754C @ =gUnknown_2021B48 _080074AE: adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r5 beq _08007484 lsrs r0, 19 adds r0, r2 ldrb r1, [r0] adds r0, r3, 0 ands r0, r7 asrs r1, r0 ands r1, r6 cmp r1, 0 bne _080074AE _080074CA: mov r8, r3 movs r2, 0x1 cmp r2, r4 beq _08007504 movs r1, 0x80 lsls r1, 3 mov r12, r1 ldr r5, _0800754C @ =gUnknown_2021B48 _080074DA: adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r12 beq _08007484 lsrs r0, 19 adds r0, r5 ldrb r1, [r0] adds r0, r3, 0 ands r0, r7 asrs r1, r0 ands r1, r6 cmp r1, 0 bne _08007500 adds r0, r2, 0x1 lsls r0, 16 lsrs r2, r0, 16 cmp r2, r4 bne _080074DA _08007500: cmp r2, r4 bne _08007496 _08007504: mov r1, r8 lsls r0, r1, 16 lsrs r3, r0, 16 asrs r1, r0, 16 adds r1, r4, r1 adds r6, r0, 0 cmp r3, r1 bge _0800753A ldr r0, _0800754C @ =gUnknown_2021B48 mov r8, r0 movs r7, 0x7 adds r4, r1, 0 movs r5, 0x1 _0800751E: lsrs r2, r3, 3 add r2, r8 adds r1, r3, 0 ands r1, r7 adds r0, r5, 0 lsls r0, r1 ldrb r1, [r2] orrs r0, r1 strb r0, [r2] adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r4 blt _0800751E _0800753A: asrs r0, r6, 16 _0800753C: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08007548: .4byte gUnknown_2021B46 _0800754C: .4byte gUnknown_2021B48 thumb_func_end AllocSpriteTiles thumb_func_start SpriteTileAllocBitmapOp SpriteTileAllocBitmapOp: @ 8007550 push {r4-r6,lr} lsls r0, 16 lsrs r2, r0, 16 lsls r1, 24 lsrs r1, 24 lsrs r0, 19 lsls r0, 24 lsrs r3, r0, 24 adds r6, r3, 0 movs r0, 0x7 ands r2, r0 adds r4, r2, 0 movs r5, 0 cmp r1, 0 bne _08007588 movs r0, 0x1 lsls r0, r2 mvns r0, r0 lsls r0, 24 lsrs r2, r0, 24 ldr r0, _08007584 @ =gUnknown_2021B48 adds r0, r3, r0 ldrb r1, [r0] ands r2, r1 strb r2, [r0] b _080075B4 .align 2, 0 _08007584: .4byte gUnknown_2021B48 _08007588: cmp r1, 0x1 bne _080075A4 lsls r1, r2 lsls r0, r1, 24 lsrs r2, r0, 24 ldr r0, _080075A0 @ =gUnknown_2021B48 adds r0, r3, r0 ldrb r1, [r0] orrs r2, r1 strb r2, [r0] b _080075B4 .align 2, 0 _080075A0: .4byte gUnknown_2021B48 _080075A4: movs r0, 0x80 lsls r0, 17 lsls r0, r4 lsrs r5, r0, 24 ldr r0, _080075BC @ =gUnknown_2021B48 adds r0, r6, r0 ldrb r0, [r0] ands r5, r0 _080075B4: adds r0, r5, 0 pop {r4-r6} pop {r1} bx r1 .align 2, 0 _080075BC: .4byte gUnknown_2021B48 thumb_func_end SpriteTileAllocBitmapOp thumb_func_start sub_80075C0 sub_80075C0: @ 80075C0 push {r4-r7,lr} adds r3, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _08007602 ldr r0, [r3, 0xC] ldrh r2, [r0, 0x4] lsrs r2, 5 ldrh r0, [r3, 0x4] lsls r0, 22 lsrs r1, r0, 22 adds r4, r2, r1 adds r3, r1, 0 cmp r3, r4 bge _08007602 ldr r7, _08007608 @ =gUnknown_2021B48 movs r5, 0x7 movs r6, 0x1 _080075EA: asrs r2, r3, 3 adds r2, r7 adds r0, r3, 0 ands r0, r5 adds r1, r6, 0 lsls r1, r0 ldrb r0, [r2] bics r0, r1 strb r0, [r2] adds r3, 0x1 cmp r3, r4 blt _080075EA _08007602: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08007608: .4byte gUnknown_2021B48 thumb_func_end sub_80075C0 thumb_func_start nullsub_8 nullsub_8: @ 800760C bx lr thumb_func_end nullsub_8 thumb_func_start ProcessSpriteCopyRequests ProcessSpriteCopyRequests: @ 8007610 push {r4-r7,lr} ldr r0, _08007660 @ =gUnknown_2021840 ldrb r0, [r0] cmp r0, 0 beq _08007658 movs r4, 0 ldr r1, _08007664 @ =gUnknown_2021841 ldrb r0, [r1] cmp r0, 0 beq _08007652 ldr r6, _08007668 @ =gUnknown_2021844 adds r7, r6, 0x4 adds r5, r1, 0 _0800762A: lsls r1, r4, 1 adds r1, r4 lsls r1, 2 adds r2, r1, r6 ldr r0, [r2] adds r1, r7 ldr r1, [r1] ldrh r2, [r2, 0x8] lsrs r2, 1 bl CpuSet ldrb r1, [r5] subs r1, 0x1 strb r1, [r5] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 lsls r1, 24 cmp r1, 0 bne _0800762A _08007652: ldr r1, _08007660 @ =gUnknown_2021840 movs r0, 0 strb r0, [r1] _08007658: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08007660: .4byte gUnknown_2021840 _08007664: .4byte gUnknown_2021841 _08007668: .4byte gUnknown_2021844 thumb_func_end ProcessSpriteCopyRequests thumb_func_start RequestSpriteFrameImageCopy RequestSpriteFrameImageCopy: @ 800766C push {r4-r6,lr} adds r5, r2, 0 lsls r0, 16 lsrs r2, r0, 16 lsls r1, 16 lsrs r6, r1, 16 ldr r4, _080076C4 @ =gUnknown_2021841 ldrb r0, [r4] cmp r0, 0x3F bhi _080076BC ldr r3, _080076C8 @ =gUnknown_2021844 adds r1, r0, 0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 lsls r2, 3 adds r2, r5 ldr r1, [r2] str r1, [r0] ldrb r0, [r4] lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r0, r3, 0x4 adds r1, r0 lsls r0, r6, 5 ldr r5, _080076CC @ =0x06010000 adds r0, r5 str r0, [r1] ldrb r1, [r4] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r3 ldrh r1, [r2, 0x4] strh r1, [r0, 0x8] ldrb r0, [r4] adds r0, 0x1 strb r0, [r4] _080076BC: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080076C4: .4byte gUnknown_2021841 _080076C8: .4byte gUnknown_2021844 _080076CC: .4byte 0x06010000 thumb_func_end RequestSpriteFrameImageCopy thumb_func_start RequestSpriteCopy RequestSpriteCopy: @ 80076D0 push {r4-r6,lr} adds r4, r0, 0 adds r5, r1, 0 lsls r2, 16 lsrs r6, r2, 16 ldr r3, _08007718 @ =gUnknown_2021841 ldrb r0, [r3] cmp r0, 0x3F bhi _08007710 ldr r2, _0800771C @ =gUnknown_2021844 adds r1, r0, 0 lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 str r4, [r0] ldrb r1, [r3] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r1, r2, 0x4 adds r0, r1 str r5, [r0] ldrb r1, [r3] lsls r0, r1, 1 adds r0, r1 lsls r0, 2 adds r0, r2 strh r6, [r0, 0x8] ldrb r0, [r3] adds r0, 0x1 strb r0, [r3] _08007710: pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08007718: .4byte gUnknown_2021841 _0800771C: .4byte gUnknown_2021844 thumb_func_end RequestSpriteCopy thumb_func_start CopyFromSprites CopyFromSprites: @ 8007720 push {r4,lr} adds r1, r0, 0 ldr r3, _08007740 @ =gUnknown_202063C movs r2, 0 ldr r4, _08007744 @ =0x000010ff _0800772A: ldrb r0, [r3] strb r0, [r1] adds r1, 0x1 adds r3, 0x1 adds r2, 0x1 cmp r2, r4 bls _0800772A pop {r4} pop {r0} bx r0 .align 2, 0 _08007740: .4byte gUnknown_202063C _08007744: .4byte 0x000010ff thumb_func_end CopyFromSprites thumb_func_start CopyToSprites CopyToSprites: @ 8007748 push {r4,lr} adds r1, r0, 0 ldr r3, _08007768 @ =gUnknown_202063C movs r2, 0 ldr r4, _0800776C @ =0x000010ff _08007752: ldrb r0, [r1] strb r0, [r3] adds r1, 0x1 adds r3, 0x1 adds r2, 0x1 cmp r2, r4 bls _08007752 pop {r4} pop {r0} bx r0 .align 2, 0 _08007768: .4byte gUnknown_202063C _0800776C: .4byte 0x000010ff thumb_func_end CopyToSprites thumb_func_start ResetAllSprites ResetAllSprites: @ 8007770 push {r4,r5,lr} movs r4, 0 _08007774: lsls r0, r4, 4 adds r0, r4 lsls r0, 2 ldr r5, _080077A4 @ =gUnknown_202063C adds r0, r5 bl ResetSprite ldr r0, _080077A8 @ =gUnknown_2021800 adds r0, r4, r0 strb r4, [r0] adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x3F bls _08007774 lsls r0, r4, 4 adds r0, r4 lsls r0, 2 adds r0, r5 bl ResetSprite pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080077A4: .4byte gUnknown_202063C _080077A8: .4byte gUnknown_2021800 thumb_func_end ResetAllSprites thumb_func_start FreeSpriteTiles FreeSpriteTiles: @ 80077AC push {lr} ldr r2, [r0, 0x14] ldrh r1, [r2] ldr r0, _080077C4 @ =0x0000ffff cmp r1, r0 beq _080077BE adds r0, r1, 0 bl FreeSpriteTilesByTag _080077BE: pop {r0} bx r0 .align 2, 0 _080077C4: .4byte 0x0000ffff thumb_func_end FreeSpriteTiles thumb_func_start FreeSpritePalette FreeSpritePalette: @ 80077C8 push {lr} ldr r0, [r0, 0x14] ldrh r0, [r0, 0x2] bl FreeSpritePaletteByTag pop {r0} bx r0 thumb_func_end FreeSpritePalette thumb_func_start FreeSpriteOamMatrix FreeSpriteOamMatrix: @ 80077D8 push {r4,lr} adds r4, r0, 0 ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _080077FE ldrb r0, [r4, 0x3] lsls r0, 26 lsrs r0, 27 bl FreeOamMatrix ldrb r1, [r4, 0x1] movs r0, 0x4 negs r0, r0 ands r0, r1 strb r0, [r4, 0x1] _080077FE: pop {r4} pop {r0} bx r0 thumb_func_end FreeSpriteOamMatrix thumb_func_start DestroySpriteAndFreeResources DestroySpriteAndFreeResources: @ 8007804 push {r4,lr} adds r4, r0, 0 bl FreeSpriteTiles adds r0, r4, 0 bl FreeSpritePalette adds r0, r4, 0 bl FreeSpriteOamMatrix adds r0, r4, 0 bl DestroySprite pop {r4} pop {r0} bx r0 thumb_func_end DestroySpriteAndFreeResources thumb_func_start AnimateSprite AnimateSprite: @ 8007824 push {r4,r5,lr} adds r4, r0, 0 ldr r2, _08007860 @ =gUnknown_8231D18 adds r5, r4, 0 adds r5, 0x3F ldrb r1, [r5] movs r0, 0x4 ands r0, r1 adds r0, r2 ldr r1, [r0] adds r0, r4, 0 bl _call_via_r1 ldr r0, _08007864 @ =gUnknown_2021CCC ldrb r0, [r0] cmp r0, 0 bne _0800785A ldr r0, _08007868 @ =gUnknown_8231D20 ldrb r1, [r5] lsls r1, 28 lsrs r1, 31 lsls r1, 2 adds r1, r0 ldr r1, [r1] adds r0, r4, 0 bl _call_via_r1 _0800785A: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08007860: .4byte gUnknown_8231D18 _08007864: .4byte gUnknown_2021CCC _08007868: .4byte gUnknown_8231D20 thumb_func_end AnimateSprite thumb_func_start BeginAnim BeginAnim: @ 800786C push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r4, r0, 0 adds r3, r4, 0 adds r3, 0x2B movs r2, 0 strb r2, [r3] adds r5, r4, 0 adds r5, 0x3F ldrb r1, [r5] movs r0, 0x11 negs r0, r0 ands r0, r1 strb r0, [r5] adds r0, r4, 0 adds r0, 0x2D strb r2, [r0] adds r2, r4, 0 adds r2, 0x2A ldrb r1, [r2] ldr r0, [r4, 0x8] lsls r1, 2 adds r1, r0 ldrb r0, [r3] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldrh r0, [r0] mov r9, r0 lsls r0, 16 mov r8, r0 asrs r1, r0, 16 movs r0, 0x1 negs r0, r0 cmp r1, r0 beq _08007950 ldrb r1, [r5] subs r0, 0x4 ands r0, r1 strb r0, [r5] ldrb r1, [r2] ldr r0, [r4, 0x8] lsls r1, 2 adds r1, r0 ldrb r0, [r3] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldr r0, [r0] lsls r1, r0, 10 lsrs r3, r1, 26 lsls r1, r0, 9 lsrs r7, r1, 31 lsls r0, 8 lsrs r6, r0, 31 cmp r3, 0 beq _080078E8 subs r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 _080078E8: adds r2, r4, 0 adds r2, 0x2C movs r0, 0x3F ands r3, r0 ldrb r1, [r2] subs r0, 0x7F ands r0, r1 orrs r0, r3 strb r0, [r2] ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _08007912 adds r0, r4, 0 adds r1, r7, 0 adds r2, r6, 0 bl SetSpriteOamFlipBits _08007912: ldrb r1, [r5] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08007940 adds r0, r4, 0 adds r0, 0x40 ldrh r1, [r0] add r1, r9 ldr r2, _08007938 @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r4, 0x4] ldr r0, _0800793C @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] b _08007950 .align 2, 0 _08007938: .4byte 0x000003ff _0800793C: .4byte 0xfffffc00 _08007940: mov r1, r8 lsrs r0, r1, 16 ldrh r1, [r4, 0x4] lsls r1, 22 lsrs r1, 22 ldr r2, [r4, 0xC] bl RequestSpriteFrameImageCopy _08007950: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 thumb_func_end BeginAnim thumb_func_start ContinueAnim ContinueAnim: @ 800795C push {r4,lr} adds r4, r0, 0 adds r0, 0x2C ldrb r1, [r0] movs r0, 0x3F ands r0, r1 cmp r0, 0 beq _080079AC adds r0, r4, 0 bl DecrementAnimDelayCounter adds r0, r4, 0 adds r0, 0x2A ldrb r1, [r0] ldr r0, [r4, 0x8] lsls r1, 2 adds r1, r0 adds r0, r4, 0 adds r0, 0x2B ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldr r0, [r0] lsls r1, r0, 9 lsrs r3, r1, 31 lsls r0, 8 lsrs r2, r0, 31 ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _080079F2 adds r0, r4, 0 adds r1, r3, 0 bl SetSpriteOamFlipBits b _080079F2 _080079AC: movs r0, 0x40 ands r0, r1 cmp r0, 0 bne _080079F2 adds r2, r4, 0 adds r2, 0x2B ldrb r0, [r2] adds r0, 0x1 strb r0, [r2] adds r0, r4, 0 adds r0, 0x2A ldrb r0, [r0] ldr r1, [r4, 0x8] lsls r0, 2 adds r0, r1 ldrb r1, [r2] ldr r0, [r0] lsls r1, 2 adds r1, r0 movs r2, 0x3 movs r3, 0 ldrsh r0, [r1, r3] cmp r0, 0 bge _080079E2 adds r0, 0x3 lsls r0, 16 lsrs r2, r0, 16 _080079E2: ldr r0, _080079F8 @ =gUnknown_8231D28 lsls r1, r2, 16 asrs r1, 14 adds r1, r0 ldr r1, [r1] adds r0, r4, 0 bl _call_via_r1 _080079F2: pop {r4} pop {r0} bx r0 .align 2, 0 _080079F8: .4byte gUnknown_8231D28 thumb_func_end ContinueAnim thumb_func_start AnimCmd_frame AnimCmd_frame: @ 80079FC push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 adds r0, 0x2A ldrb r1, [r0] ldr r0, [r4, 0x8] lsls r1, 2 adds r1, r0 adds r0, r4, 0 adds r0, 0x2B ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldrh r7, [r0] mov r8, r7 ldr r0, [r0] lsls r1, r0, 10 lsrs r3, r1, 26 lsls r1, r0, 9 lsrs r6, r1, 31 lsls r0, 8 lsrs r5, r0, 31 cmp r3, 0 beq _08007A36 subs r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 _08007A36: adds r2, r4, 0 adds r2, 0x2C movs r0, 0x3F ands r3, r0 ldrb r1, [r2] subs r0, 0x7F ands r0, r1 orrs r0, r3 strb r0, [r2] ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _08007A60 adds r0, r4, 0 adds r1, r6, 0 adds r2, r5, 0 bl SetSpriteOamFlipBits _08007A60: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08007A90 adds r0, r4, 0 adds r0, 0x40 ldrh r1, [r0] adds r1, r7 ldr r2, _08007A88 @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r4, 0x4] ldr r0, _08007A8C @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] b _08007A9E .align 2, 0 _08007A88: .4byte 0x000003ff _08007A8C: .4byte 0xfffffc00 _08007A90: mov r0, r8 ldrh r1, [r4, 0x4] lsls r1, 22 lsrs r1, 22 ldr r2, [r4, 0xC] bl RequestSpriteFrameImageCopy _08007A9E: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end AnimCmd_frame thumb_func_start AnimCmd_end AnimCmd_end: @ 8007AA8 adds r2, r0, 0 adds r2, 0x2B ldrb r1, [r2] subs r1, 0x1 strb r1, [r2] adds r0, 0x3F ldrb r1, [r0] movs r2, 0x10 orrs r1, r2 strb r1, [r0] bx lr thumb_func_end AnimCmd_end thumb_func_start AnimCmd_jump AnimCmd_jump: @ 8007AC0 push {r4-r7,lr} mov r7, r8 push {r7} adds r4, r0, 0 adds r3, r4, 0 adds r3, 0x2A ldrb r1, [r3] ldr r0, [r4, 0x8] lsls r1, 2 adds r1, r0 adds r2, r4, 0 adds r2, 0x2B ldrb r0, [r2] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldr r0, [r0] lsls r0, 10 lsrs r0, 26 strb r0, [r2] ldrb r0, [r3] ldr r1, [r4, 0x8] lsls r0, 2 adds r0, r1 ldrb r1, [r2] ldr r0, [r0] lsls r1, 2 adds r1, r0 ldrh r7, [r1] mov r8, r7 ldr r0, [r1] lsls r1, r0, 10 lsrs r3, r1, 26 lsls r1, r0, 9 lsrs r6, r1, 31 lsls r0, 8 lsrs r5, r0, 31 cmp r3, 0 beq _08007B14 subs r0, r3, 0x1 lsls r0, 24 lsrs r3, r0, 24 _08007B14: adds r2, r4, 0 adds r2, 0x2C movs r0, 0x3F ands r3, r0 ldrb r1, [r2] subs r0, 0x7F ands r0, r1 orrs r0, r3 strb r0, [r2] ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 bne _08007B3E adds r0, r4, 0 adds r1, r6, 0 adds r2, r5, 0 bl SetSpriteOamFlipBits _08007B3E: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08007B70 adds r0, r4, 0 adds r0, 0x40 ldrh r1, [r0] adds r1, r7 ldr r2, _08007B68 @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r4, 0x4] ldr r0, _08007B6C @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r4, 0x4] b _08007B7E .align 2, 0 _08007B68: .4byte 0x000003ff _08007B6C: .4byte 0xfffffc00 _08007B70: mov r0, r8 ldrh r1, [r4, 0x4] lsls r1, 22 lsrs r1, 22 ldr r2, [r4, 0xC] bl RequestSpriteFrameImageCopy _08007B7E: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 thumb_func_end AnimCmd_jump thumb_func_start AnimCmd_loop AnimCmd_loop: @ 8007B88 push {lr} adds r1, r0, 0 adds r0, 0x2D ldrb r0, [r0] cmp r0, 0 beq _08007B9C adds r0, r1, 0 bl ContinueAnimLoop b _08007BA2 _08007B9C: adds r0, r1, 0 bl BeginAnimLoop _08007BA2: pop {r0} bx r0 thumb_func_end AnimCmd_loop thumb_func_start BeginAnimLoop BeginAnimLoop: @ 8007BA8 push {r4,lr} adds r4, r0, 0 adds r0, 0x2A ldrb r1, [r0] ldr r0, [r4, 0x8] lsls r1, 2 adds r1, r0 adds r0, r4, 0 adds r0, 0x2B ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldr r0, [r0] lsls r0, 10 lsrs r0, 26 adds r1, r4, 0 adds r1, 0x2D strb r0, [r1] adds r0, r4, 0 bl JumpToTopOfAnimLoop adds r0, r4, 0 bl ContinueAnim pop {r4} pop {r0} bx r0 thumb_func_end BeginAnimLoop thumb_func_start ContinueAnimLoop ContinueAnimLoop: @ 8007BE0 push {r4,lr} adds r4, r0, 0 adds r1, r4, 0 adds r1, 0x2D ldrb r0, [r1] subs r0, 0x1 strb r0, [r1] adds r0, r4, 0 bl JumpToTopOfAnimLoop adds r0, r4, 0 bl ContinueAnim pop {r4} pop {r0} bx r0 thumb_func_end ContinueAnimLoop thumb_func_start JumpToTopOfAnimLoop JumpToTopOfAnimLoop: @ 8007C00 push {r4-r7,lr} mov r12, r0 adds r0, 0x2D ldrb r0, [r0] cmp r0, 0 beq _08007C6C mov r3, r12 adds r3, 0x2B ldrb r0, [r3] subs r0, 0x1 strb r0, [r3] mov r5, r12 adds r5, 0x2A ldrb r1, [r5] mov r2, r12 ldr r0, [r2, 0x8] lsls r1, 2 adds r1, r0 ldrb r0, [r3] ldr r1, [r1] lsls r0, 2 adds r0, r1 subs r0, 0x4 movs r7, 0 ldrsh r0, [r0, r7] movs r1, 0x3 negs r1, r1 adds r4, r3, 0 cmp r0, r1 beq _08007C66 adds r6, r1, 0 adds r2, r4, 0 _08007C40: ldrb r0, [r2] cmp r0, 0 beq _08007C66 subs r0, 0x1 strb r0, [r3] ldrb r1, [r5] mov r7, r12 ldr r0, [r7, 0x8] lsls r1, 2 adds r1, r0 ldrb r0, [r2] ldr r1, [r1] lsls r0, 2 adds r0, r1 subs r0, 0x4 movs r1, 0 ldrsh r0, [r0, r1] cmp r0, r6 bne _08007C40 _08007C66: ldrb r0, [r4] subs r0, 0x1 strb r0, [r4] _08007C6C: pop {r4-r7} pop {r0} bx r0 thumb_func_end JumpToTopOfAnimLoop thumb_func_start BeginAffineAnim BeginAffineAnim: @ 8007C74 push {r4-r7,lr} sub sp, 0x8 adds r6, r0, 0 ldrb r0, [r6, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08007CF6 ldr r0, [r6, 0x10] ldr r0, [r0] movs r2, 0 ldrsh r1, [r0, r2] ldr r0, _08007D00 @ =0x00007fff cmp r1, r0 beq _08007CF6 adds r0, r6, 0 bl GetSpriteMatrixNum adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 adds r0, r4, 0 bl AffineAnimStateRestartAnim mov r5, sp adds r0, r4, 0 adds r1, r6, 0 mov r2, sp bl GetAffineAnimFrame adds r7, r6, 0 adds r7, 0x3F ldrb r1, [r7] movs r0, 0x9 negs r0, r0 ands r0, r1 movs r1, 0x21 negs r1, r1 ands r0, r1 strb r0, [r7] adds r0, r4, 0 mov r1, sp bl ApplyAffineAnimFrame ldr r1, _08007D04 @ =gUnknown_3000C68 lsls r0, r4, 1 adds r0, r4 lsls r0, 2 adds r0, r1 ldrb r1, [r5, 0x5] strb r1, [r0, 0x2] ldrb r1, [r7] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08007CF6 movs r0, 0x3A ldrsh r1, [r6, r0] movs r0, 0x3C ldrsh r2, [r6, r0] adds r0, r6, 0 bl obj_update_pos2 _08007CF6: add sp, 0x8 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08007D00: .4byte 0x00007fff _08007D04: .4byte gUnknown_3000C68 thumb_func_end BeginAffineAnim thumb_func_start ContinueAffineAnim ContinueAffineAnim: @ 8007D08 push {r4,r5,lr} adds r4, r0, 0 ldrb r0, [r4, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08007DAA adds r0, r4, 0 bl GetSpriteMatrixNum lsls r0, 24 lsrs r2, r0, 24 adds r5, r2, 0 ldr r1, _08007D40 @ =gUnknown_3000C68 lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r3, r0, r1 ldrb r0, [r3, 0x2] cmp r0, 0 beq _08007D44 adds r0, r2, 0 adds r1, r4, 0 bl AffineAnimDelay b _08007D8E .align 2, 0 _08007D40: .4byte gUnknown_3000C68 _08007D44: adds r0, r4, 0 adds r0, 0x2C ldrb r1, [r0] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08007DAA ldrb r0, [r3, 0x1] adds r0, 0x1 strb r0, [r3, 0x1] ldrb r0, [r3] ldr r1, [r4, 0x10] lsls r0, 2 adds r0, r1 ldrb r1, [r3, 0x1] ldr r0, [r0] lsls r1, 3 adds r1, r0 movs r2, 0x3 movs r0, 0 ldrsh r1, [r1, r0] ldr r0, _08007DB0 @ =0x00007ffc cmp r1, r0 ble _08007D7C ldr r2, _08007DB4 @ =0xffff8003 adds r0, r1, r2 lsls r0, 16 lsrs r2, r0, 16 _08007D7C: ldr r0, _08007DB8 @ =gUnknown_8231D38 lsls r1, r2, 16 asrs r1, 14 adds r1, r0 ldr r2, [r1] adds r0, r5, 0 adds r1, r4, 0 bl _call_via_r2 _08007D8E: adds r0, r4, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x80 ands r0, r1 cmp r0, 0 beq _08007DAA movs r0, 0x3A ldrsh r1, [r4, r0] movs r0, 0x3C ldrsh r2, [r4, r0] adds r0, r4, 0 bl obj_update_pos2 _08007DAA: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08007DB0: .4byte 0x00007ffc _08007DB4: .4byte 0xffff8003 _08007DB8: .4byte gUnknown_8231D38 thumb_func_end ContinueAffineAnim thumb_func_start AffineAnimDelay AffineAnimDelay: @ 8007DBC push {r4,r5,lr} sub sp, 0x8 adds r5, r1, 0 lsls r0, 24 lsrs r4, r0, 24 adds r0, r5, 0 adds r1, r4, 0 bl DecrementAffineAnimDelayCounter lsls r0, 24 cmp r0, 0 bne _08007DE6 adds r0, r4, 0 adds r1, r5, 0 mov r2, sp bl GetAffineAnimFrame adds r0, r4, 0 mov r1, sp bl ApplyAffineAnimFrameRelativeAndUpdateMatrix _08007DE6: add sp, 0x8 pop {r4,r5} pop {r0} bx r0 thumb_func_end AffineAnimDelay thumb_func_start AffineAnimCmd_loop AffineAnimCmd_loop: @ 8007DF0 push {lr} adds r3, r1, 0 lsls r0, 24 lsrs r2, r0, 24 ldr r1, _08007E14 @ =gUnknown_3000C68 lsls r0, r2, 1 adds r0, r2 lsls r0, 2 adds r0, r1 ldrb r0, [r0, 0x3] cmp r0, 0 beq _08007E18 adds r0, r2, 0 adds r1, r3, 0 bl ContinueAffineAnimLoop b _08007E20 .align 2, 0 _08007E14: .4byte gUnknown_3000C68 _08007E18: adds r0, r2, 0 adds r1, r3, 0 bl BeginAffineAnimLoop _08007E20: pop {r0} bx r0 thumb_func_end AffineAnimCmd_loop thumb_func_start BeginAffineAnimLoop BeginAffineAnimLoop: @ 8007E24 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r1, _08007E5C @ =gUnknown_3000C68 lsls r3, r0, 1 adds r3, r0 lsls r3, 2 adds r3, r1 ldrb r2, [r3] ldr r1, [r4, 0x10] lsls r2, 2 adds r2, r1 ldrb r1, [r3, 0x1] ldr r2, [r2] lsls r1, 3 adds r1, r2 ldrh r1, [r1, 0x2] strb r1, [r3, 0x3] adds r1, r4, 0 bl JumpToTopOfAffineAnimLoop adds r0, r4, 0 bl ContinueAffineAnim pop {r4} pop {r0} bx r0 .align 2, 0 _08007E5C: .4byte gUnknown_3000C68 thumb_func_end BeginAffineAnimLoop thumb_func_start ContinueAffineAnimLoop ContinueAffineAnimLoop: @ 8007E60 push {r4,lr} adds r4, r1, 0 lsls r0, 24 lsrs r0, 24 ldr r2, _08007E8C @ =gUnknown_3000C68 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r2, [r1, 0x3] subs r2, 0x1 strb r2, [r1, 0x3] adds r1, r4, 0 bl JumpToTopOfAffineAnimLoop adds r0, r4, 0 bl ContinueAffineAnim pop {r4} pop {r0} bx r0 .align 2, 0 _08007E8C: .4byte gUnknown_3000C68 thumb_func_end ContinueAffineAnimLoop thumb_func_start JumpToTopOfAffineAnimLoop JumpToTopOfAffineAnimLoop: @ 8007E90 push {r4-r7,lr} mov r12, r1 lsls r0, 24 lsrs r5, r0, 24 ldr r1, _08007EB4 @ =gUnknown_3000C68 lsls r3, r5, 1 adds r0, r3, r5 lsls r0, 2 adds r2, r0, r1 ldrb r0, [r2, 0x3] adds r6, r1, 0 cmp r0, 0 beq _08007EF0 ldrb r0, [r2, 0x1] subs r0, 0x1 strb r0, [r2, 0x1] adds r4, r3, 0 b _08007EC0 .align 2, 0 _08007EB4: .4byte gUnknown_3000C68 _08007EB8: cmp r2, 0 beq _08007EE4 subs r0, r2, 0x1 strb r0, [r3, 0x1] _08007EC0: adds r0, r4, r5 lsls r0, 2 adds r3, r0, r6 ldrb r0, [r3] mov r2, r12 ldr r1, [r2, 0x10] lsls r0, 2 adds r0, r1 ldrb r2, [r3, 0x1] ldr r1, [r0] lsls r0, r2, 3 adds r0, r1 subs r0, 0x8 movs r7, 0 ldrsh r1, [r0, r7] ldr r0, _08007EF8 @ =0x00007ffd cmp r1, r0 bne _08007EB8 _08007EE4: adds r1, r4, r5 lsls r1, 2 adds r1, r6 ldrb r0, [r1, 0x1] subs r0, 0x1 strb r0, [r1, 0x1] _08007EF0: pop {r4-r7} pop {r0} bx r0 .align 2, 0 _08007EF8: .4byte 0x00007ffd thumb_func_end JumpToTopOfAffineAnimLoop thumb_func_start AffineAnimCmd_jump AffineAnimCmd_jump: @ 8007EFC push {r4-r6,lr} sub sp, 0x8 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _08007F44 @ =gUnknown_3000C68 lsls r4, r5, 1 adds r4, r5 lsls r4, 2 adds r4, r0 ldrb r2, [r4] ldr r0, [r1, 0x10] lsls r2, 2 adds r2, r0 ldrb r0, [r4, 0x1] ldr r2, [r2] lsls r0, 3 adds r0, r2 ldrh r0, [r0, 0x2] strb r0, [r4, 0x1] mov r6, sp adds r0, r5, 0 mov r2, sp bl GetAffineAnimFrame adds r0, r5, 0 mov r1, sp bl ApplyAffineAnimFrame ldrb r0, [r6, 0x5] strb r0, [r4, 0x2] add sp, 0x8 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _08007F44: .4byte gUnknown_3000C68 thumb_func_end AffineAnimCmd_jump thumb_func_start AffineAnimCmd_end AffineAnimCmd_end: @ 8007F48 push {lr} sub sp, 0x8 lsls r0, 24 lsrs r0, 24 movs r2, 0 movs r3, 0 str r2, [sp] str r3, [sp, 0x4] adds r1, 0x3F ldrb r2, [r1] movs r3, 0x20 orrs r2, r3 strb r2, [r1] ldr r2, _08007F80 @ =gUnknown_3000C68 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r2, [r1, 0x1] subs r2, 0x1 strb r2, [r1, 0x1] mov r1, sp bl ApplyAffineAnimFrameRelativeAndUpdateMatrix add sp, 0x8 pop {r0} bx r0 .align 2, 0 _08007F80: .4byte gUnknown_3000C68 thumb_func_end AffineAnimCmd_end thumb_func_start AffineAnimCmd_frame AffineAnimCmd_frame: @ 8007F84 push {r4,r5,lr} sub sp, 0x8 adds r4, r0, 0 lsls r4, 24 lsrs r4, 24 mov r5, sp adds r0, r4, 0 mov r2, sp bl GetAffineAnimFrame adds r0, r4, 0 mov r1, sp bl ApplyAffineAnimFrame ldr r1, _08007FB8 @ =gUnknown_3000C68 lsls r0, r4, 1 adds r0, r4 lsls r0, 2 adds r0, r1 ldrb r1, [r5, 0x5] strb r1, [r0, 0x2] add sp, 0x8 pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08007FB8: .4byte gUnknown_3000C68 thumb_func_end AffineAnimCmd_frame thumb_func_start CopyOamMatrix CopyOamMatrix: @ 8007FBC lsls r0, 24 ldr r2, _08007FD8 @ =gUnknown_2021BCC lsrs r0, 21 adds r0, r2 ldrh r2, [r1] strh r2, [r0] ldrh r2, [r1, 0x2] strh r2, [r0, 0x2] ldrh r2, [r1, 0x4] strh r2, [r0, 0x4] ldrh r1, [r1, 0x6] strh r1, [r0, 0x6] bx lr .align 2, 0 _08007FD8: .4byte gUnknown_2021BCC thumb_func_end CopyOamMatrix thumb_func_start GetSpriteMatrixNum GetSpriteMatrixNum: @ 8007FDC push {lr} adds r2, r0, 0 movs r3, 0 ldrb r0, [r2, 0x1] lsls r0, 30 lsrs r0, 30 movs r1, 0x1 ands r0, r1 cmp r0, 0 beq _08007FF6 ldrb r0, [r2, 0x3] lsls r0, 26 lsrs r3, r0, 27 _08007FF6: adds r0, r3, 0 pop {r1} bx r1 thumb_func_end GetSpriteMatrixNum thumb_func_start sub_8007FFC sub_8007FFC: @ 8007FFC strh r1, [r0, 0x3A] strh r2, [r0, 0x3C] adds r0, 0x3F ldrb r1, [r0] movs r2, 0x80 orrs r1, r2 strb r1, [r0] bx lr thumb_func_end sub_8007FFC thumb_func_start sub_800800C sub_800800C: @ 800800C push {r4,r5,lr} adds r3, r0, 0 adds r5, r2, 0 subs r0, r1, r3 cmp r0, 0 bge _0800801E negs r0, r0 asrs r4, r0, 9 b _08008022 _0800801E: asrs r0, 9 negs r4, r0 _08008022: adds r0, r5, 0 muls r0, r1 adds r1, r3, 0 bl __udivsi3 adds r0, r4 subs r0, r5, r0 pop {r4,r5} pop {r1} bx r1 thumb_func_end sub_800800C thumb_func_start obj_update_pos2 obj_update_pos2: @ 8008038 push {r4-r7,lr} mov r7, r9 mov r6, r8 push {r6,r7} adds r5, r0, 0 adds r6, r1, 0 mov r8, r2 ldrb r1, [r5, 0x3] lsls r0, r1, 26 lsrs r7, r0, 27 movs r0, 0x80 lsls r0, 4 mov r9, r0 cmp r6, r9 beq _08008086 ldr r2, _080080CC @ =gUnknown_8231D48 lsrs r1, 6 lsls r1, 3 ldrb r0, [r5, 0x1] lsrs r0, 6 lsls r0, 5 adds r1, r0 adds r1, r2 ldr r0, [r1] lsls r4, r0, 8 lsls r0, 16 ldr r2, _080080D0 @ =gUnknown_2021BCC lsls r1, r7, 3 adds r1, r2 movs r2, 0 ldrsh r1, [r1, r2] bl __divsi3 adds r1, r0, 0 adds r0, r4, 0 adds r2, r6, 0 bl sub_800800C strh r0, [r5, 0x24] _08008086: cmp r8, r9 beq _080080BE ldr r2, _080080CC @ =gUnknown_8231D48 ldrb r1, [r5, 0x3] lsrs r1, 6 lsls r1, 3 ldrb r0, [r5, 0x1] lsrs r0, 6 lsls r0, 5 adds r1, r0 adds r2, 0x4 adds r1, r2 ldr r0, [r1] lsls r4, r0, 8 lsls r0, 16 ldr r2, _080080D0 @ =gUnknown_2021BCC lsls r1, r7, 3 adds r1, r2 movs r2, 0x6 ldrsh r1, [r1, r2] bl __divsi3 adds r1, r0, 0 adds r0, r4, 0 mov r2, r8 bl sub_800800C strh r0, [r5, 0x26] _080080BE: pop {r3,r4} mov r8, r3 mov r9, r4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080080CC: .4byte gUnknown_8231D48 _080080D0: .4byte gUnknown_2021BCC thumb_func_end obj_update_pos2 thumb_func_start SetSpriteOamFlipBits SetSpriteOamFlipBits: @ 80080D4 push {r4-r6,lr} mov r6, r8 push {r6} lsls r1, 24 lsrs r1, 24 lsls r2, 24 lsrs r2, 24 ldrb r6, [r0, 0x3] lsls r3, r6, 26 lsrs r3, 27 movs r4, 0x7 ands r3, r4 lsls r3, 1 subs r4, 0x46 mov r8, r4 mov r5, r8 ands r5, r6 orrs r5, r3 strb r5, [r0, 0x3] lsls r4, r5, 26 lsrs r4, 27 movs r6, 0x3F adds r6, r0 mov r12, r6 ldrb r3, [r6] lsls r3, 31 lsrs r3, 31 eors r1, r3 movs r6, 0x1 ands r1, r6 lsls r1, 3 orrs r4, r1 lsls r4, 1 mov r3, r8 ands r3, r5 orrs r3, r4 strb r3, [r0, 0x3] lsls r4, r3, 26 lsrs r4, 27 mov r5, r12 ldrb r1, [r5] lsls r1, 30 lsrs r1, 31 eors r2, r1 ands r2, r6 lsls r2, 4 orrs r4, r2 lsls r4, 1 mov r6, r8 ands r3, r6 orrs r3, r4 strb r3, [r0, 0x3] pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 thumb_func_end SetSpriteOamFlipBits thumb_func_start AffineAnimStateRestartAnim AffineAnimStateRestartAnim: @ 8008148 lsls r0, 24 lsrs r0, 24 ldr r2, _08008160 @ =gUnknown_3000C68 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0 strb r0, [r1, 0x1] strb r0, [r1, 0x2] strb r0, [r1, 0x3] bx lr .align 2, 0 _08008160: .4byte gUnknown_3000C68 thumb_func_end AffineAnimStateRestartAnim thumb_func_start AffineAnimStateStartAnim AffineAnimStateStartAnim: @ 8008164 lsls r0, 24 lsrs r0, 24 ldr r3, _08008188 @ =gUnknown_3000C68 lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r3 movs r3, 0 strb r1, [r2] strb r3, [r2, 0x1] strb r3, [r2, 0x2] strb r3, [r2, 0x3] movs r0, 0x80 lsls r0, 1 strh r0, [r2, 0x4] strh r0, [r2, 0x6] strh r3, [r2, 0x8] bx lr .align 2, 0 _08008188: .4byte gUnknown_3000C68 thumb_func_end AffineAnimStateStartAnim thumb_func_start AffineAnimStateReset AffineAnimStateReset: @ 800818C lsls r0, 24 lsrs r0, 24 ldr r2, _080081B0 @ =gUnknown_3000C68 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 movs r0, 0 strb r0, [r1] strb r0, [r1, 0x1] strb r0, [r1, 0x2] strb r0, [r1, 0x3] movs r2, 0x80 lsls r2, 1 strh r2, [r1, 0x4] strh r2, [r1, 0x6] strh r0, [r1, 0x8] bx lr .align 2, 0 _080081B0: .4byte gUnknown_3000C68 thumb_func_end AffineAnimStateReset thumb_func_start ApplyAffineAnimFrameAbsolute ApplyAffineAnimFrameAbsolute: @ 80081B4 lsls r0, 24 lsrs r0, 24 ldr r3, _080081D4 @ =gUnknown_3000C68 lsls r2, r0, 1 adds r2, r0 lsls r2, 2 adds r2, r3 ldrh r0, [r1] strh r0, [r2, 0x4] ldrh r0, [r1, 0x2] strh r0, [r2, 0x6] ldrb r0, [r1, 0x4] lsls r0, 8 strh r0, [r2, 0x8] bx lr .align 2, 0 _080081D4: .4byte gUnknown_3000C68 thumb_func_end ApplyAffineAnimFrameAbsolute thumb_func_start DecrementAnimDelayCounter DecrementAnimDelayCounter: @ 80081D8 push {lr} adds r3, r0, 0 adds r3, 0x2C ldrb r2, [r3] movs r0, 0x40 ands r0, r2 cmp r0, 0 bne _080081FC lsls r0, r2, 26 lsrs r0, 26 subs r0, 0x1 movs r1, 0x3F ands r0, r1 movs r1, 0x40 negs r1, r1 ands r1, r2 orrs r1, r0 strb r1, [r3] _080081FC: pop {r0} bx r0 thumb_func_end DecrementAnimDelayCounter thumb_func_start DecrementAffineAnimDelayCounter DecrementAffineAnimDelayCounter: @ 8008200 push {lr} lsls r1, 24 lsrs r2, r1, 24 adds r3, r0, 0 adds r3, 0x2C ldrb r1, [r3] movs r0, 0x80 ands r0, r1 cmp r0, 0 bne _08008224 ldr r0, _0800822C @ =gUnknown_3000C68 lsls r1, r2, 1 adds r1, r2 lsls r1, 2 adds r1, r0 ldrb r0, [r1, 0x2] subs r0, 0x1 strb r0, [r1, 0x2] _08008224: ldrb r0, [r3] lsrs r0, 7 pop {r1} bx r1 .align 2, 0 _0800822C: .4byte gUnknown_3000C68 thumb_func_end DecrementAffineAnimDelayCounter thumb_func_start ApplyAffineAnimFrameRelativeAndUpdateMatrix ApplyAffineAnimFrameRelativeAndUpdateMatrix: @ 8008230 push {r4-r6,lr} sub sp, 0x10 adds r5, r0, 0 lsls r5, 24 lsrs r5, 24 ldr r0, _080082B8 @ =gUnknown_3000C68 lsls r4, r5, 1 adds r4, r5 lsls r4, 2 adds r4, r0 ldrh r0, [r1] ldrh r2, [r4, 0x4] adds r0, r2 strh r0, [r4, 0x4] ldrh r0, [r1, 0x2] ldrh r2, [r4, 0x6] adds r0, r2 strh r0, [r4, 0x6] ldrb r0, [r1, 0x4] lsls r0, 8 ldrh r1, [r4, 0x8] adds r0, r1 ldr r2, _080082BC @ =0xffffff00 adds r1, r2, 0 ands r0, r1 strh r0, [r4, 0x8] movs r1, 0x4 ldrsh r0, [r4, r1] bl ConvertScaleParam lsls r0, 16 lsrs r0, 16 ldr r6, _080082C0 @ =0xffff0000 ldr r1, [sp] ands r1, r6 orrs r1, r0 str r1, [sp] movs r2, 0x6 ldrsh r0, [r4, r2] bl ConvertScaleParam lsls r0, 16 ldr r2, _080082C4 @ =0x0000ffff ldr r1, [sp] ands r1, r2 orrs r1, r0 str r1, [sp] ldrh r1, [r4, 0x8] ldr r0, [sp, 0x4] ands r0, r6 orrs r0, r1 str r0, [sp, 0x4] add r4, sp, 0x8 mov r0, sp adds r1, r4, 0 movs r2, 0x1 movs r3, 0x2 bl ObjAffineSet adds r0, r5, 0 adds r1, r4, 0 bl CopyOamMatrix add sp, 0x10 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080082B8: .4byte gUnknown_3000C68 _080082BC: .4byte 0xffffff00 _080082C0: .4byte 0xffff0000 _080082C4: .4byte 0x0000ffff thumb_func_end ApplyAffineAnimFrameRelativeAndUpdateMatrix thumb_func_start ConvertScaleParam ConvertScaleParam: @ 80082C8 push {lr} adds r1, r0, 0 movs r0, 0x80 lsls r0, 9 lsls r1, 16 asrs r1, 16 bl __divsi3 lsls r0, 16 asrs r0, 16 pop {r1} bx r1 thumb_func_end ConvertScaleParam thumb_func_start GetAffineAnimFrame GetAffineAnimFrame: @ 80082E0 push {r4,lr} lsls r0, 24 lsrs r0, 24 ldr r3, _08008348 @ =gUnknown_3000C68 lsls r4, r0, 1 adds r4, r0 lsls r4, 2 adds r4, r3 ldrb r3, [r4] ldr r0, [r1, 0x10] lsls r3, 2 adds r3, r0 ldrb r0, [r4, 0x1] ldr r3, [r3] lsls r0, 3 adds r0, r3 ldrh r0, [r0] strh r0, [r2] ldrb r3, [r4] ldr r0, [r1, 0x10] lsls r3, 2 adds r3, r0 ldrb r0, [r4, 0x1] ldr r3, [r3] lsls r0, 3 adds r0, r3 ldrh r0, [r0, 0x2] strh r0, [r2, 0x2] ldrb r3, [r4] ldr r0, [r1, 0x10] lsls r3, 2 adds r3, r0 ldrb r0, [r4, 0x1] ldr r3, [r3] lsls r0, 3 adds r0, r3 ldrb r0, [r0, 0x4] strb r0, [r2, 0x4] ldrb r3, [r4] ldr r0, [r1, 0x10] lsls r3, 2 adds r3, r0 ldrb r0, [r4, 0x1] ldr r1, [r3] lsls r0, 3 adds r0, r1 ldrb r0, [r0, 0x5] strb r0, [r2, 0x5] pop {r4} pop {r0} bx r0 .align 2, 0 _08008348: .4byte gUnknown_3000C68 thumb_func_end GetAffineAnimFrame thumb_func_start ApplyAffineAnimFrame ApplyAffineAnimFrame: @ 800834C push {r4,lr} sub sp, 0x8 adds r2, r1, 0 lsls r0, 24 lsrs r4, r0, 24 movs r0, 0 movs r1, 0 str r0, [sp] str r1, [sp, 0x4] ldrb r0, [r2, 0x5] cmp r0, 0 beq _08008372 subs r0, 0x1 strb r0, [r2, 0x5] adds r0, r4, 0 adds r1, r2, 0 bl ApplyAffineAnimFrameRelativeAndUpdateMatrix b _08008382 _08008372: adds r0, r4, 0 adds r1, r2, 0 bl ApplyAffineAnimFrameAbsolute adds r0, r4, 0 mov r1, sp bl ApplyAffineAnimFrameRelativeAndUpdateMatrix _08008382: add sp, 0x8 pop {r4} pop {r0} bx r0 thumb_func_end ApplyAffineAnimFrame thumb_func_start StartSpriteAnim StartSpriteAnim: @ 800838C adds r2, r0, 0 adds r2, 0x2A strb r1, [r2] adds r0, 0x3F ldrb r1, [r0] movs r2, 0x4 orrs r1, r2 movs r2, 0x11 negs r2, r2 ands r1, r2 strb r1, [r0] bx lr thumb_func_end StartSpriteAnim thumb_func_start StartSpriteAnimIfDifferent StartSpriteAnimIfDifferent: @ 80083A4 push {lr} adds r2, r0, 0 lsls r1, 24 lsrs r1, 24 adds r0, 0x2A ldrb r0, [r0] cmp r0, r1 beq _080083BA adds r0, r2, 0 bl StartSpriteAnim _080083BA: pop {r0} bx r0 thumb_func_end StartSpriteAnimIfDifferent thumb_func_start SeekSpriteAnim SeekSpriteAnim: @ 80083C0 push {r4-r7,lr} adds r3, r0, 0 lsls r1, 24 lsrs r1, 24 adds r4, r3, 0 adds r4, 0x2C ldrb r0, [r4] lsls r0, 25 lsrs r6, r0, 31 subs r1, 0x1 adds r0, r3, 0 adds r0, 0x2B strb r1, [r0] ldrb r1, [r4] movs r7, 0x40 negs r7, r7 adds r0, r7, 0 ands r0, r1 strb r0, [r4] adds r2, r3, 0 adds r2, 0x3F ldrb r1, [r2] movs r0, 0x5 negs r0, r0 ands r0, r1 movs r1, 0x11 negs r1, r1 ands r0, r1 strb r0, [r2] ldrb r1, [r4] movs r5, 0x41 negs r5, r5 adds r0, r5, 0 ands r0, r1 strb r0, [r4] adds r0, r3, 0 bl ContinueAnim ldrb r2, [r4] movs r0, 0x3F ands r0, r2 cmp r0, 0 beq _08008428 lsls r0, r2, 26 lsrs r0, 26 adds r0, 0x1 movs r1, 0x3F ands r0, r1 adds r1, r7, 0 ands r1, r2 orrs r1, r0 strb r1, [r4] _08008428: lsls r2, r6, 6 ldrb r1, [r4] adds r0, r5, 0 ands r0, r1 orrs r0, r2 strb r0, [r4] pop {r4-r7} pop {r0} bx r0 thumb_func_end SeekSpriteAnim thumb_func_start StartSpriteAffineAnim StartSpriteAffineAnim: @ 800843C push {r4,r5,lr} adds r5, r0, 0 lsls r4, r1, 24 lsrs r4, 24 bl GetSpriteMatrixNum lsls r0, 24 lsrs r0, 24 adds r1, r4, 0 bl AffineAnimStateStartAnim adds r5, 0x3F ldrb r0, [r5] movs r1, 0x8 orrs r0, r1 movs r1, 0x21 negs r1, r1 ands r0, r1 strb r0, [r5] pop {r4,r5} pop {r0} bx r0 thumb_func_end StartSpriteAffineAnim thumb_func_start StartSpriteAffineAnimIfDifferent StartSpriteAffineAnimIfDifferent: @ 8008468 push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 lsrs r4, r1, 24 bl GetSpriteMatrixNum lsls r0, 24 lsrs r0, 24 ldr r2, _08008498 @ =gUnknown_3000C68 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1] cmp r0, r4 beq _08008490 adds r0, r5, 0 adds r1, r4, 0 bl StartSpriteAffineAnim _08008490: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08008498: .4byte gUnknown_3000C68 thumb_func_end StartSpriteAffineAnimIfDifferent thumb_func_start ChangeSpriteAffineAnim ChangeSpriteAffineAnim: @ 800849C push {r4,r5,lr} adds r5, r0, 0 lsls r4, r1, 24 lsrs r4, 24 bl GetSpriteMatrixNum lsls r0, 24 lsrs r0, 24 ldr r2, _080084D0 @ =gUnknown_3000C68 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 strb r4, [r1] adds r5, 0x3F ldrb r0, [r5] movs r1, 0x8 orrs r0, r1 movs r1, 0x21 negs r1, r1 ands r0, r1 strb r0, [r5] pop {r4,r5} pop {r0} bx r0 .align 2, 0 _080084D0: .4byte gUnknown_3000C68 thumb_func_end ChangeSpriteAffineAnim thumb_func_start ChangeSpriteAffineAnimIfDifferent ChangeSpriteAffineAnimIfDifferent: @ 80084D4 push {r4,r5,lr} adds r5, r0, 0 lsls r1, 24 lsrs r4, r1, 24 bl GetSpriteMatrixNum lsls r0, 24 lsrs r0, 24 ldr r2, _08008504 @ =gUnknown_3000C68 lsls r1, r0, 1 adds r1, r0 lsls r1, 2 adds r1, r2 ldrb r0, [r1] cmp r0, r4 beq _080084FC adds r0, r5, 0 adds r1, r4, 0 bl ChangeSpriteAffineAnim _080084FC: pop {r4,r5} pop {r0} bx r0 .align 2, 0 _08008504: .4byte gUnknown_3000C68 thumb_func_end ChangeSpriteAffineAnimIfDifferent thumb_func_start SetSpriteSheetFrameTileNum SetSpriteSheetFrameTileNum: @ 8008508 push {lr} adds r3, r0, 0 adds r0, 0x3F ldrb r1, [r0] movs r0, 0x40 ands r0, r1 cmp r0, 0 beq _08008554 adds r0, r3, 0 adds r0, 0x2A ldrb r1, [r0] ldr r0, [r3, 0x8] lsls r1, 2 adds r1, r0 adds r0, r3, 0 adds r0, 0x2B ldrb r0, [r0] ldr r1, [r1] lsls r0, 2 adds r0, r1 ldrh r2, [r0] movs r1, 0 ldrsh r0, [r0, r1] cmp r0, 0 bge _0800853C movs r2, 0 _0800853C: adds r0, r3, 0 adds r0, 0x40 ldrh r1, [r0] adds r1, r2 ldr r2, _08008558 @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r3, 0x4] ldr r0, _0800855C @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] _08008554: pop {r0} bx r0 .align 2, 0 _08008558: .4byte 0x000003ff _0800855C: .4byte 0xfffffc00 thumb_func_end SetSpriteSheetFrameTileNum thumb_func_start ResetAffineAnimData ResetAffineAnimData: @ 8008560 push {r4,lr} ldr r1, _0800858C @ =gUnknown_2021CCC movs r0, 0 strb r0, [r1] ldr r1, _08008590 @ =gUnknown_3003E54 movs r0, 0 str r0, [r1] bl ResetOamMatrices movs r4, 0 _08008574: adds r0, r4, 0 bl AffineAnimStateReset adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0x1F bls _08008574 pop {r4} pop {r0} bx r0 .align 2, 0 _0800858C: .4byte gUnknown_2021CCC _08008590: .4byte gUnknown_3003E54 thumb_func_end ResetAffineAnimData thumb_func_start AllocOamMatrix AllocOamMatrix: @ 8008594 push {r4,lr} movs r2, 0 movs r1, 0x1 ldr r0, _080085B4 @ =gUnknown_3003E54 ldr r4, [r0] adds r3, r0, 0 _080085A0: adds r0, r4, 0 ands r0, r1 cmp r0, 0 bne _080085B8 ldr r0, [r3] orrs r0, r1 str r0, [r3] adds r0, r2, 0 b _080085C6 .align 2, 0 _080085B4: .4byte gUnknown_3003E54 _080085B8: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 lsls r1, 1 cmp r2, 0x1F bls _080085A0 movs r0, 0xFF _080085C6: pop {r4} pop {r1} bx r1 thumb_func_end AllocOamMatrix thumb_func_start FreeOamMatrix FreeOamMatrix: @ 80085CC push {lr} sub sp, 0x4 lsls r0, 24 lsrs r2, r0, 24 movs r0, 0 movs r1, 0x1 ldr r3, _08008608 @ =gUnknown_3003E54 cmp r0, r2 bcs _080085EA _080085DE: adds r0, 0x1 lsls r0, 24 lsrs r0, 24 lsls r1, 1 cmp r0, r2 bcc _080085DE _080085EA: ldr r0, [r3] bics r0, r1 str r0, [r3] movs r1, 0x80 lsls r1, 1 str r1, [sp] adds r0, r2, 0 movs r2, 0 movs r3, 0 bl SetOamMatrix add sp, 0x4 pop {r0} bx r0 .align 2, 0 _08008608: .4byte gUnknown_3003E54 thumb_func_end FreeOamMatrix thumb_func_start InitSpriteAffineAnim InitSpriteAffineAnim: @ 800860C push {r4,r5,lr} adds r4, r0, 0 bl AllocOamMatrix lsls r0, 24 lsrs r5, r0, 24 cmp r5, 0xFF beq _08008654 ldrb r3, [r4, 0x1] lsrs r1, r3, 6 ldrb r2, [r4, 0x3] lsrs r2, 6 lsls r3, 30 lsrs r3, 30 adds r0, r4, 0 bl CalcCenterToCornerVec movs r0, 0x1F adds r1, r5, 0 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 r2, r4, 0 adds r2, 0x3F ldrb r0, [r2] movs r1, 0x8 orrs r0, r1 strb r0, [r2] adds r0, r5, 0 bl AffineAnimStateReset _08008654: pop {r4,r5} pop {r0} bx r0 thumb_func_end InitSpriteAffineAnim thumb_func_start SetOamMatrixRotationScaling SetOamMatrixRotationScaling: @ 800865C push {r4-r6,lr} mov r6, r8 push {r6} sub sp, 0x10 adds r6, r0, 0 adds r0, r1, 0 adds r4, r2, 0 adds r5, r3, 0 lsls r6, 24 lsrs r6, 24 lsls r4, 16 lsrs r4, 16 lsls r5, 16 lsrs r5, 16 lsls r0, 16 asrs r0, 16 bl ConvertScaleParam lsls r0, 16 lsrs r0, 16 ldr r1, _080086D4 @ =0xffff0000 mov r8, r1 ldr r1, [sp] mov r2, r8 ands r1, r2 orrs r1, r0 str r1, [sp] lsls r4, 16 asrs r4, 16 adds r0, r4, 0 bl ConvertScaleParam lsls r0, 16 ldr r2, _080086D8 @ =0x0000ffff ldr r1, [sp] ands r1, r2 orrs r1, r0 str r1, [sp] ldr r0, [sp, 0x4] mov r1, r8 ands r0, r1 orrs r0, r5 str r0, [sp, 0x4] add r4, sp, 0x8 mov r0, sp adds r1, r4, 0 movs r2, 0x1 movs r3, 0x2 bl ObjAffineSet adds r0, r6, 0 adds r1, r4, 0 bl CopyOamMatrix add sp, 0x10 pop {r3} mov r8, r3 pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080086D4: .4byte 0xffff0000 _080086D8: .4byte 0x0000ffff thumb_func_end SetOamMatrixRotationScaling thumb_func_start LoadSpriteSheet LoadSpriteSheet: @ 80086DC push {r4-r6,lr} adds r5, r0, 0 ldrh r0, [r5, 0x4] lsrs r0, 5 bl AllocSpriteTiles lsls r4, r0, 16 asrs r6, r4, 16 cmp r6, 0 blt _08008718 ldrh r0, [r5, 0x6] lsrs r4, 16 ldrh r2, [r5, 0x4] lsrs r2, 5 adds r1, r4, 0 bl AllocSpriteTileRange ldr r0, [r5] lsls r1, r6, 5 ldr r2, _08008714 @ =0x06010000 adds r1, r2 ldrh r2, [r5, 0x4] lsrs r2, 1 bl CpuSet adds r0, r4, 0 b _0800871A .align 2, 0 _08008714: .4byte 0x06010000 _08008718: movs r0, 0 _0800871A: pop {r4-r6} pop {r1} bx r1 thumb_func_end LoadSpriteSheet thumb_func_start LoadSpriteSheets LoadSpriteSheets: @ 8008720 push {r4,r5,lr} adds r5, r0, 0 movs r4, 0 ldr r0, [r5] cmp r0, 0 beq _08008744 _0800872C: lsls r0, r4, 3 adds r0, r5, r0 bl LoadSpriteSheet adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 lsls r0, r4, 3 adds r0, r5 ldr r0, [r0] cmp r0, 0 bne _0800872C _08008744: pop {r4,r5} pop {r0} bx r0 thumb_func_end LoadSpriteSheets thumb_func_start FreeSpriteTilesByTag FreeSpriteTilesByTag: @ 800874C push {r4-r7,lr} mov r7, r8 push {r7} lsls r0, 16 lsrs r0, 16 bl IndexOfSpriteTileTag lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xFF beq _080087AA ldr r0, _080087B4 @ =gUnknown_3000B68 lsls r1, r4, 2 adds r2, r1, r0 adds r0, 0x2 adds r1, r0 ldrh r0, [r1] ldrh r3, [r2] adds r0, r3, r0 ldr r1, _080087B8 @ =gUnknown_3000AE8 mov r8, r1 lsls r5, r4, 1 cmp r3, r0 bge _080087A2 ldr r1, _080087BC @ =gUnknown_2021B48 mov r12, r1 movs r6, 0x7 movs r7, 0x1 adds r4, r0, 0 _08008786: lsrs r2, r3, 3 add r2, r12 adds r0, r3, 0 ands r0, r6 adds r1, r7, 0 lsls r1, r0 ldrb r0, [r2] bics r0, r1 strb r0, [r2] adds r0, r3, 0x1 lsls r0, 16 lsrs r3, r0, 16 cmp r3, r4 blt _08008786 _080087A2: mov r0, r8 adds r1, r5, r0 ldr r0, _080087C0 @ =0x0000ffff strh r0, [r1] _080087AA: pop {r3} mov r8, r3 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080087B4: .4byte gUnknown_3000B68 _080087B8: .4byte gUnknown_3000AE8 _080087BC: .4byte gUnknown_2021B48 _080087C0: .4byte 0x0000ffff thumb_func_end FreeSpriteTilesByTag thumb_func_start FreeSpriteTileRanges FreeSpriteTileRanges: @ 80087C4 push {r4-r7,lr} movs r2, 0 ldr r7, _080087F8 @ =gUnknown_3000AE8 ldr r0, _080087FC @ =0x0000ffff adds r6, r0, 0 ldr r4, _08008800 @ =gUnknown_3000B68 movs r3, 0 adds r5, r4, 0x2 _080087D4: lsls r1, r2, 1 adds r1, r7 ldrh r0, [r1] orrs r0, r6 strh r0, [r1] lsls r1, r2, 2 adds r0, r1, r4 strh r3, [r0] adds r1, r5 strh r3, [r1] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x3F bls _080087D4 pop {r4-r7} pop {r0} bx r0 .align 2, 0 _080087F8: .4byte gUnknown_3000AE8 _080087FC: .4byte 0x0000ffff _08008800: .4byte gUnknown_3000B68 thumb_func_end FreeSpriteTileRanges thumb_func_start GetSpriteTileStartByTag GetSpriteTileStartByTag: @ 8008804 push {lr} lsls r0, 16 lsrs r0, 16 bl IndexOfSpriteTileTag lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xFF beq _08008824 ldr r0, _08008820 @ =gUnknown_3000B68 lsls r1, 2 adds r1, r0 ldrh r0, [r1] b _08008826 .align 2, 0 _08008820: .4byte gUnknown_3000B68 _08008824: ldr r0, _0800882C @ =0x0000ffff _08008826: pop {r1} bx r1 .align 2, 0 _0800882C: .4byte 0x0000ffff thumb_func_end GetSpriteTileStartByTag thumb_func_start IndexOfSpriteTileTag IndexOfSpriteTileTag: @ 8008830 push {lr} lsls r0, 16 lsrs r2, r0, 16 movs r1, 0 ldr r3, _08008848 @ =gUnknown_3000AE8 _0800883A: lsls r0, r1, 1 adds r0, r3 ldrh r0, [r0] cmp r0, r2 bne _0800884C adds r0, r1, 0 b _08008858 .align 2, 0 _08008848: .4byte gUnknown_3000AE8 _0800884C: adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0x3F bls _0800883A movs r0, 0xFF _08008858: pop {r1} bx r1 thumb_func_end IndexOfSpriteTileTag thumb_func_start GetSpriteTileTagByTileStart GetSpriteTileTagByTileStart: @ 800885C push {r4-r6,lr} lsls r0, 16 lsrs r3, r0, 16 movs r2, 0 ldr r6, _08008884 @ =gUnknown_3000AE8 ldr r5, _08008888 @ =0x0000ffff ldr r4, _0800888C @ =gUnknown_3000B68 _0800886A: lsls r0, r2, 1 adds r1, r0, r6 ldrh r0, [r1] cmp r0, r5 beq _08008890 lsls r0, r2, 2 adds r0, r4 ldrh r0, [r0] cmp r0, r3 bne _08008890 ldrh r0, [r1] b _0800889C .align 2, 0 _08008884: .4byte gUnknown_3000AE8 _08008888: .4byte 0x0000ffff _0800888C: .4byte gUnknown_3000B68 _08008890: adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0x3F bls _0800886A ldr r0, _080088A4 @ =0x0000ffff _0800889C: pop {r4-r6} pop {r1} bx r1 .align 2, 0 _080088A4: .4byte 0x0000ffff thumb_func_end GetSpriteTileTagByTileStart thumb_func_start AllocSpriteTileRange AllocSpriteTileRange: @ 80088A8 push {r4-r6,lr} adds r4, r0, 0 adds r5, r1, 0 adds r6, r2, 0 lsls r4, 16 lsrs r4, 16 lsls r5, 16 lsrs r5, 16 lsls r6, 16 lsrs r6, 16 ldr r0, _080088E4 @ =0x0000ffff bl IndexOfSpriteTileTag lsls r0, 24 lsrs r0, 24 ldr r2, _080088E8 @ =gUnknown_3000AE8 lsls r1, r0, 1 adds r1, r2 strh r4, [r1] ldr r1, _080088EC @ =gUnknown_3000B68 lsls r0, 2 adds r2, r0, r1 strh r5, [r2] adds r1, 0x2 adds r0, r1 strh r6, [r0] pop {r4-r6} pop {r0} bx r0 .align 2, 0 _080088E4: .4byte 0x0000ffff _080088E8: .4byte gUnknown_3000AE8 _080088EC: .4byte gUnknown_3000B68 thumb_func_end AllocSpriteTileRange thumb_func_start FreeAllSpritePalettes FreeAllSpritePalettes: @ 80088F0 push {r4,lr} ldr r1, _0800891C @ =gUnknown_3003E58 movs r0, 0 strb r0, [r1] movs r2, 0 ldr r4, _08008920 @ =gUnknown_3000DE8 ldr r0, _08008924 @ =0x0000ffff adds r3, r0, 0 _08008900: lsls r0, r2, 1 adds r0, r4 ldrh r1, [r0] orrs r1, r3 strh r1, [r0] adds r0, r2, 0x1 lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xF bls _08008900 pop {r4} pop {r0} bx r0 .align 2, 0 _0800891C: .4byte gUnknown_3003E58 _08008920: .4byte gUnknown_3000DE8 _08008924: .4byte 0x0000ffff thumb_func_end FreeAllSpritePalettes thumb_func_start LoadSpritePalette LoadSpritePalette: @ 8008928 push {r4,r5,lr} adds r5, r0, 0 ldrh r0, [r5, 0x4] bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xFF beq _0800893E adds r0, r4, 0 b _0800896E _0800893E: ldr r0, _08008964 @ =0x0000ffff bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r4, r0, 24 cmp r4, 0xFF beq _0800896C ldr r1, _08008968 @ =gUnknown_3000DE8 lsls r0, r4, 1 adds r0, r1 ldrh r1, [r5, 0x4] strh r1, [r0] ldr r0, [r5] lsls r1, r4, 4 bl DoLoadSpritePalette adds r0, r4, 0 b _0800896E .align 2, 0 _08008964: .4byte 0x0000ffff _08008968: .4byte gUnknown_3000DE8 _0800896C: movs r0, 0xFF _0800896E: pop {r4,r5} pop {r1} bx r1 thumb_func_end LoadSpritePalette thumb_func_start LoadSpritePalettes LoadSpritePalettes: @ 8008974 push {r4,r5,lr} adds r5, r0, 0 movs r4, 0 b _08008982 _0800897C: adds r0, r4, 0x1 lsls r0, 24 lsrs r4, r0, 24 _08008982: lsls r0, r4, 3 adds r1, r0, r5 ldr r0, [r1] cmp r0, 0 beq _0800899A adds r0, r1, 0 bl LoadSpritePalette lsls r0, 24 lsrs r0, 24 cmp r0, 0xFF bne _0800897C _0800899A: pop {r4,r5} pop {r0} bx r0 thumb_func_end LoadSpritePalettes thumb_func_start DoLoadSpritePalette DoLoadSpritePalette: @ 80089A0 push {lr} lsls r1, 16 movs r2, 0x80 lsls r2, 17 adds r1, r2 lsrs r1, 16 movs r2, 0x20 bl LoadPalette pop {r0} bx r0 thumb_func_end DoLoadSpritePalette thumb_func_start AllocSpritePalette AllocSpritePalette: @ 80089B8 push {r4,lr} lsls r0, 16 lsrs r4, r0, 16 ldr r0, _080089D8 @ =0x0000ffff bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r2, r0, 24 cmp r2, 0xFF beq _080089E0 ldr r1, _080089DC @ =gUnknown_3000DE8 lsls r0, r2, 1 adds r0, r1 strh r4, [r0] adds r0, r2, 0 b _080089E2 .align 2, 0 _080089D8: .4byte 0x0000ffff _080089DC: .4byte gUnknown_3000DE8 _080089E0: movs r0, 0xFF _080089E2: pop {r4} pop {r1} bx r1 thumb_func_end AllocSpritePalette thumb_func_start IndexOfSpritePaletteTag IndexOfSpritePaletteTag: @ 80089E8 push {lr} lsls r0, 16 lsrs r2, r0, 16 ldr r0, _08008A08 @ =gUnknown_3003E58 ldrb r1, [r0] cmp r1, 0xF bhi _08008A1A ldr r3, _08008A0C @ =gUnknown_3000DE8 _080089F8: lsls r0, r1, 1 adds r0, r3 ldrh r0, [r0] cmp r0, r2 bne _08008A10 adds r0, r1, 0 b _08008A1C .align 2, 0 _08008A08: .4byte gUnknown_3003E58 _08008A0C: .4byte gUnknown_3000DE8 _08008A10: adds r0, r1, 0x1 lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xF bls _080089F8 _08008A1A: movs r0, 0xFF _08008A1C: pop {r1} bx r1 thumb_func_end IndexOfSpritePaletteTag thumb_func_start GetSpritePaletteTagByPaletteNum GetSpritePaletteTagByPaletteNum: @ 8008A20 lsls r0, 24 ldr r1, _08008A2C @ =gUnknown_3000DE8 lsrs r0, 23 adds r0, r1 ldrh r0, [r0] bx lr .align 2, 0 _08008A2C: .4byte gUnknown_3000DE8 thumb_func_end GetSpritePaletteTagByPaletteNum thumb_func_start FreeSpritePaletteByTag FreeSpritePaletteByTag: @ 8008A30 push {lr} lsls r0, 16 lsrs r0, 16 bl IndexOfSpritePaletteTag lsls r0, 24 lsrs r1, r0, 24 cmp r1, 0xFF beq _08008A4C ldr r0, _08008A50 @ =gUnknown_3000DE8 lsls r1, 1 adds r1, r0 ldr r0, _08008A54 @ =0x0000ffff strh r0, [r1] _08008A4C: pop {r0} bx r0 .align 2, 0 _08008A50: .4byte gUnknown_3000DE8 _08008A54: .4byte 0x0000ffff thumb_func_end FreeSpritePaletteByTag thumb_func_start SetSubspriteTables SetSubspriteTables: @ 8008A58 str r1, [r0, 0x18] adds r0, 0x42 movs r1, 0x40 strb r1, [r0] bx lr thumb_func_end SetSubspriteTables thumb_func_start AddSpriteToOamBuffer AddSpriteToOamBuffer: @ 8008A64 push {r4,lr} adds r4, r0, 0 adds r3, r1, 0 ldr r1, _08008A78 @ =gUnknown_2021B44 ldrb r0, [r3] ldrb r1, [r1] cmp r0, r1 bcc _08008A7C movs r0, 0x1 b _08008AC4 .align 2, 0 _08008A78: .4byte gUnknown_2021B44 _08008A7C: ldr r0, [r4, 0x18] cmp r0, 0 beq _08008A90 adds r0, r4, 0 adds r0, 0x42 ldrb r1, [r0] movs r0, 0xC0 ands r0, r1 cmp r0, 0 bne _08008AB0 _08008A90: ldr r0, _08008AAC @ =gMain ldrb r2, [r3] lsls r2, 3 adds r0, 0x38 adds r2, r0 ldr r0, [r4] ldr r1, [r4, 0x4] str r0, [r2] str r1, [r2, 0x4] ldrb r0, [r3] adds r0, 0x1 strb r0, [r3] movs r0, 0 b _08008AC4 .align 2, 0 _08008AAC: .4byte gMain _08008AB0: ldrb r1, [r3] lsls r1, 3 ldr r0, _08008ACC @ =gMain + 0x38 adds r1, r0 adds r0, r4, 0 adds r2, r3, 0 bl AddSubspritesToOamBuffer lsls r0, 24 lsrs r0, 24 _08008AC4: pop {r4} pop {r1} bx r1 .align 2, 0 _08008ACC: .4byte gMain + 0x38 thumb_func_end AddSpriteToOamBuffer thumb_func_start AddSubspritesToOamBuffer AddSubspritesToOamBuffer: @ 8008AD0 push {r4-r7,lr} mov r7, r10 mov r6, r9 mov r5, r8 push {r5-r7} sub sp, 0x1C adds r3, r0, 0 str r1, [sp] mov r8, r2 ldr r0, _08008AF0 @ =gUnknown_2021B44 ldrb r1, [r2] ldrb r0, [r0] cmp r1, r0 bcc _08008AF4 _08008AEC: movs r0, 0x1 b _08008CCA .align 2, 0 _08008AF0: .4byte gUnknown_2021B44 _08008AF4: adds r0, r3, 0 adds r0, 0x42 ldrb r1, [r0] lsls r1, 26 lsrs r1, 23 ldr r2, [r3, 0x18] adds r7, r2, r1 mov r12, r3 str r0, [sp, 0x18] cmp r7, 0 beq _08008B10 ldr r0, [r7, 0x4] cmp r0, 0 bne _08008B26 _08008B10: mov r2, r12 ldr r0, [r2] ldr r1, [r2, 0x4] ldr r2, [sp] str r0, [r2] str r1, [r2, 0x4] mov r1, r8 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] b _08008CC8 _08008B26: mov r2, r12 ldrh r0, [r2, 0x4] lsls r0, 22 lsrs r0, 22 str r0, [sp, 0x4] ldrb r0, [r7] str r0, [sp, 0xC] ldrb r0, [r2, 0x3] lsls r0, 26 lsrs r0, 27 asrs r1, r0, 3 str r1, [sp, 0x10] movs r1, 0x1 ldr r2, [sp, 0x10] ands r2, r1 str r2, [sp, 0x10] asrs r0, 4 mov r10, r0 ands r0, r1 mov r10, r0 mov r1, r12 ldrh r0, [r1, 0x2] lsls r0, 23 lsrs r0, 23 adds r1, 0x28 ldrb r1, [r1] lsls r1, 24 asrs r1, 24 subs r0, r1 lsls r0, 16 lsrs r2, r0, 16 mov r1, r12 ldrb r0, [r1] adds r1, 0x29 ldrb r1, [r1] lsls r1, 24 asrs r1, 24 subs r0, r1 lsls r0, 16 lsrs r0, 16 str r0, [sp, 0x8] movs r0, 0 mov r9, r0 ldr r1, [sp, 0xC] cmp r9, r1 bcc _08008B84 b _08008CC8 _08008B84: lsls r0, r2, 16 asrs r0, 16 str r0, [sp, 0x14] _08008B8A: mov r2, r8 ldrb r0, [r2] ldr r1, _08008CDC @ =gUnknown_2021B44 ldrb r1, [r1] cmp r0, r1 bcs _08008AEC ldr r0, [r7, 0x4] mov r2, r9 lsls r6, r2, 2 adds r2, r6, r0 movs r0, 0 ldrsb r0, [r2, r0] lsls r0, 16 lsrs r4, r0, 16 movs r0, 0x1 ldrsb r0, [r2, r0] lsls r0, 16 lsrs r5, r0, 16 ldr r0, [sp, 0x10] cmp r0, 0 beq _08008BE0 ldr r0, [r2] lsls r1, r0, 12 lsrs r1, 30 lsls r1, 2 lsls r0, 14 lsrs r0, 30 lsls r0, 4 adds r1, r0 ldr r0, _08008CE0 @ =gUnknown_8231DA8 adds r1, r0 ldrb r1, [r1] lsls r1, 24 asrs r1, 24 lsls r0, r4, 16 asrs r0, 16 adds r0, r1 lsls r0, 16 lsrs r4, r0, 16 mvns r0, r4 adds r0, 0x1 lsls r0, 16 lsrs r4, r0, 16 _08008BE0: mov r1, r10 cmp r1, 0 beq _08008C12 ldr r0, [r2] lsls r1, r0, 12 lsrs r1, 30 lsls r1, 2 lsls r0, 14 lsrs r0, 30 lsls r0, 4 adds r1, r0 ldr r2, _08008CE0 @ =gUnknown_8231DA8 adds r1, r2 ldrb r1, [r1, 0x1] lsls r1, 24 asrs r1, 24 lsls r0, r5, 16 asrs r0, 16 adds r0, r1 lsls r0, 16 lsrs r5, r0, 16 mvns r0, r5 adds r0, 0x1 lsls r0, 16 lsrs r5, r0, 16 _08008C12: mov r1, r9 lsls r0, r1, 3 ldr r2, [sp] adds r3, r0, r2 mov r2, r12 ldr r0, [r2] ldr r1, [r2, 0x4] str r0, [r3] str r1, [r3, 0x4] ldr r0, [r7, 0x4] adds r0, r6, r0 ldr r1, [r0] lsls r1, 14 lsrs r1, 30 lsls r1, 6 ldrb r2, [r3, 0x1] movs r0, 0x3F ands r0, r2 orrs r0, r1 strb r0, [r3, 0x1] ldr r0, [r7, 0x4] adds r0, r6, r0 ldr r1, [r0] lsls r1, 12 lsrs r1, 30 lsls r1, 6 ldrb r2, [r3, 0x3] movs r0, 0x3F ands r0, r2 orrs r0, r1 strb r0, [r3, 0x3] lsls r1, r4, 16 asrs r1, 16 ldr r0, [sp, 0x14] adds r1, r0, r1 ldr r2, _08008CE4 @ =0x000001ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r3, 0x2] ldr r0, _08008CE8 @ =0xfffffe00 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x2] ldr r1, [sp, 0x8] adds r0, r1, r5 strb r0, [r3] ldr r0, [r7, 0x4] adds r0, r6, r0 ldr r1, [r0] lsls r1, 2 lsrs r1, 22 ldr r2, [sp, 0x4] adds r1, r2, r1 ldr r2, _08008CEC @ =0x000003ff adds r0, r2, 0 ands r1, r0 ldrh r2, [r3, 0x4] ldr r0, _08008CF0 @ =0xfffffc00 ands r0, r2 orrs r0, r1 strh r0, [r3, 0x4] ldr r0, [sp, 0x18] ldrb r1, [r0] movs r0, 0xC0 ands r0, r1 cmp r0, 0x80 beq _08008CAE ldr r0, [r7, 0x4] adds r0, r6, r0 ldr r1, [r0] lsrs r1, 30 lsls r1, 2 ldrb r2, [r3, 0x5] movs r0, 0xD negs r0, r0 ands r0, r2 orrs r0, r1 strb r0, [r3, 0x5] _08008CAE: mov r0, r9 adds r0, 0x1 lsls r0, 24 lsrs r0, 24 mov r9, r0 mov r1, r8 ldrb r0, [r1] adds r0, 0x1 strb r0, [r1] ldr r2, [sp, 0xC] cmp r9, r2 bcs _08008CC8 b _08008B8A _08008CC8: movs r0, 0 _08008CCA: add sp, 0x1C pop {r3-r5} mov r8, r3 mov r9, r4 mov r10, r5 pop {r4-r7} pop {r1} bx r1 .align 2, 0 _08008CDC: .4byte gUnknown_2021B44 _08008CE0: .4byte gUnknown_8231DA8 _08008CE4: .4byte 0x000001ff _08008CE8: .4byte 0xfffffe00 _08008CEC: .4byte 0x000003ff _08008CF0: .4byte 0xfffffc00 thumb_func_end AddSubspritesToOamBuffer .align 2, 0 @ Don't pad with nop.