diff options
author | YamaArashi <shadow962@live.com> | 2016-11-01 10:08:48 -0700 |
---|---|---|
committer | YamaArashi <shadow962@live.com> | 2016-11-01 10:16:34 -0700 |
commit | 6f0e42a91aeeedd64725ce57e3dad6a38421d8e9 (patch) | |
tree | dcea69ec49430f004c17ff71b77587cafd78c69a /asm/gpu_obj.s | |
parent | fef81187dce23adc635d7f4b7fd82298eab09ec2 (diff) |
split asm files
Diffstat (limited to 'asm/gpu_obj.s')
-rw-r--r-- | asm/gpu_obj.s | 4561 |
1 files changed, 0 insertions, 4561 deletions
diff --git a/asm/gpu_obj.s b/asm/gpu_obj.s deleted file mode 100644 index dad412f9f..000000000 --- a/asm/gpu_obj.s +++ /dev/null @@ -1,4561 +0,0 @@ - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start ResetAllObjectData -@ void ResetAllObjectData() -ResetAllObjectData: @ 8006974 - push {r4,lr} - movs r0, 0 - movs r1, 0x80 - bl ResetSpriteRange - bl RemoveAllObjects - bl ClearObjectCopyRequests - bl rotscale_reset_all - bl FreeAllObjectTiles - ldr r1, =0x02021b38 - movs r0, 0x40 - strb r0, [r1] - ldr r0, =0x02021b3a - movs r4, 0 - strh r4, [r0] - movs r0, 0 - bl AllocObjectTiles - ldr r0, =0x02021bbc - strh r4, [r0] - ldr r0, =0x02021bbe - strh r4, [r0] - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ResetAllObjectData - - thumb_func_start CallObjectCallbacks -@ void CallObjectCallbacks() -CallObjectCallbacks: @ 80069C0 - push {r4-r7,lr} - movs r6, 0 - movs r7, 0x1 -_080069C6: - lsls r0, r6, 4 - adds r0, r6 - lsls r0, 2 - ldr r1, =0x02020630 - 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 _080069F6 - 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 _080069F6 - adds r0, r4, 0 - bl AnimateObject -_080069F6: - adds r0, r6, 0x1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0x3F - bls _080069C6 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end CallObjectCallbacks - - thumb_func_start PrepareSpritesForOamLoad -@ void PrepareSpritesForOamLoad() -PrepareSpritesForOamLoad: @ 8006A0C - push {r4,r5,lr} - bl UpdateObjectOamCoords - bl BuildObjectPriorityList - bl SortObjectsByPriority - ldr r5, =0x030022c0 - ldr r0, =0x00000439 - adds r5, r0 - ldrb r0, [r5] - lsls r4, r0, 31 - lsrs r4, 31 - movs r1, 0x1 - orrs r0, r1 - strb r0, [r5] - bl PopulateSprites - bl CopyTransformationMatricesToSprites - movs r2, 0x1 - ldrb r1, [r5] - movs r0, 0x2 - negs r0, r0 - ands r0, r1 - orrs r4, r0 - strb r4, [r5] - ldr r0, =0x02021834 - strb r2, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end PrepareSpritesForOamLoad - - thumb_func_start UpdateObjectOamCoords -@ void UpdateObjectOamCoords() -UpdateObjectOamCoords: @ 8006A58 - push {r4-r7,lr} - movs r4, 0 - ldr r7, =0x02020630 - ldr r0, =0x000001ff - adds r5, r0, 0 - ldr r6, =0xfffffe00 -_08006A64: - 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 _08006B0A - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - beq _08006AD8 - 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, =0x02021bbc - 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, =0x02021bbe - adds r0, r1 - ldrb r2, [r2] - adds r0, r2 - b _08006B08 - .pool -_08006AD8: - 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 -_08006B08: - strb r0, [r3] -_08006B0A: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3F - bls _08006A64 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end UpdateObjectOamCoords - - thumb_func_start BuildObjectPriorityList -@ void BuildObjectPriorityList() -BuildObjectPriorityList: @ 8006B1C - push {r4,lr} - movs r2, 0 - ldr r4, =0x02020630 - ldr r3, =0x02021774 -_08006B24: - 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 _08006B24 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end BuildObjectPriorityList - - thumb_func_start SortObjectsByPriority -@ void SortObjectsByPriority() -SortObjectsByPriority: @ 8006B5C - 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, =0x020217f4 - mov r10, r1 - ldr r3, =0xffffff00 - mov r9, r3 - ldr r6, =0xc0000300 - mov r8, r6 -_08006B78: - 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, =0x02020630 - 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, =0x02021774 - 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 _08006BBA - add r0, r9 - lsls r0, 16 - lsrs r1, r0, 16 -_08006BBA: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _08006BC8 - add r0, r9 - lsls r0, 16 - lsrs r2, r0, 16 -_08006BC8: - ldr r0, [r3] - mov r7, r8 - ands r0, r7 - cmp r0, r8 - bne _08006BEC - ldrb r0, [r3, 0x1] - lsrs r0, 6 - cmp r0, 0 - beq _08006BDE - cmp r0, 0x2 - bne _08006BEC -_08006BDE: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x80 - ble _08006BEC - add r0, r9 - lsls r0, 16 - lsrs r1, r0, 16 -_08006BEC: - ldr r0, [r4] - mov r3, r8 - ands r0, r3 - cmp r0, r8 - bne _08006C10 - ldrb r0, [r4, 0x1] - lsrs r0, 6 - cmp r0, 0 - beq _08006C02 - cmp r0, 0x2 - bne _08006C10 -_08006C02: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x80 - ble _08006C10 - add r0, r9 - lsls r0, 16 - lsrs r2, r0, 16 -_08006C10: - movs r7, 0x1 - add r12, r7 - cmp r5, 0 - beq _08006CF6 - ldr r0, [sp] - cmp r0, r6 - bhi _08006C38 - cmp r0, r6 - bne _08006CF6 - b _08006CEE - .pool -_08006C38: - 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, =0x02020630 - 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, =0x02021774 - 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 _08006C8A - add r0, r9 - lsls r0, 16 - lsrs r1, r0, 16 -_08006C8A: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x9F - ble _08006C98 - add r0, r9 - lsls r0, 16 - lsrs r2, r0, 16 -_08006C98: - ldr r0, [r3] - mov r7, r8 - ands r0, r7 - cmp r0, r8 - bne _08006CBC - ldrb r0, [r3, 0x1] - lsrs r0, 6 - cmp r0, 0 - beq _08006CAE - cmp r0, 0x2 - bne _08006CBC -_08006CAE: - lsls r0, r1, 16 - asrs r0, 16 - cmp r0, 0x80 - ble _08006CBC - add r0, r9 - lsls r0, 16 - lsrs r1, r0, 16 -_08006CBC: - ldr r0, [r4] - mov r3, r8 - ands r0, r3 - cmp r0, r8 - bne _08006CE0 - ldrb r0, [r4, 0x1] - lsrs r0, 6 - cmp r0, 0 - beq _08006CD2 - cmp r0, 0x2 - bne _08006CE0 -_08006CD2: - lsls r0, r2, 16 - asrs r0, 16 - cmp r0, 0x80 - ble _08006CE0 - add r0, r9 - lsls r0, 16 - lsrs r2, r0, 16 -_08006CE0: - cmp r5, 0 - beq _08006CF6 - ldr r7, [sp] - cmp r7, r6 - bhi _08006C38 - cmp r7, r6 - bne _08006CF6 -_08006CEE: - lsls r1, 16 - lsls r0, r2, 16 - cmp r1, r0 - blt _08006C38 -_08006CF6: - mov r1, r12 - lsls r0, r1, 24 - lsrs r0, 24 - mov r12, r0 - cmp r0, 0x3F - bhi _08006D04 - b _08006B78 -_08006D04: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end SortObjectsByPriority - - thumb_func_start CopyTransformationMatricesToSprites -@ void CopyTransformationMatricesToSprites() -CopyTransformationMatricesToSprites: @ 8006D1C - push {r4-r6,lr} - movs r4, 0 - ldr r5, =0x030022c0 - ldr r6, =0x02021bc0 -_08006D24: - 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 _08006D24 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end CopyTransformationMatricesToSprites - - thumb_func_start PopulateSprites -@ void PopulateSprites() -PopulateSprites: @ 8006D68 - push {r4-r6,lr} - sub sp, 0x4 - movs r4, 0 - mov r0, sp - strb r4, [r0] -_08006D72: - ldr r0, =0x020217f4 - adds r0, r4, r0 - ldrb r1, [r0] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, =0x02020630 - adds r2, r0, r1 - adds r0, r2, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x5 - ands r0, r1 - cmp r0, 0x1 - bne _08006D9E - adds r0, r2, 0 - mov r1, sp - bl AddSprite - lsls r0, 24 - cmp r0, 0 - bne _08006DD8 -_08006D9E: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3F - bls _08006D72 - mov r0, sp - ldr r4, =0x02021b38 - ldrb r0, [r0] - ldrb r1, [r4] - cmp r0, r1 - bcs _08006DD8 - mov r1, sp - ldr r5, =0x030022f8 - ldr r0, =gDefaultOamAttributes - ldr r2, [r0] - ldr r3, [r0, 0x4] -_08006DBE: - 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 _08006DBE -_08006DD8: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end PopulateSprites - - thumb_func_start AddObjectToFront -@ u8 AddObjectToFront(struct objtemplate *template, u16 x, u16 y, u8 subpriority) -AddObjectToFront: @ 8006DF4 - push {r4-r7,lr} - sub sp, 0x4 - adds r7, r0, 0 - lsls r3, 24 - lsrs r4, r3, 24 - movs r3, 0 - ldr r0, =0x02020630 - mov r12, r0 - lsls r5, r1, 16 - lsls r6, r2, 16 -_08006E08: - 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 _08006E34 - str r4, [sp] - adds r0, r3, 0 - adds r1, r7, 0 - asrs r2, r5, 16 - asrs r3, r6, 16 - bl AddObject - lsls r0, 24 - lsrs r0, 24 - b _08006E40 - .pool -_08006E34: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3F - bls _08006E08 - movs r0, 0x40 -_08006E40: - add sp, 0x4 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end AddObjectToFront - - thumb_func_start AddObjectToBack -@ u8 AddObjectToBack(struct objtemplate *template, u16 x, u16 y, u8 subpriority) -AddObjectToBack: @ 8006E48 - 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, =0x02020630 - mov r8, r0 - movs r0, 0x1 - negs r0, r0 - mov r12, r0 - lsls r4, r1, 16 - lsls r5, r2, 16 -_08006E66: - 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 _08006E98 - lsls r0, r3, 24 - lsrs r0, 24 - str r6, [sp] - adds r1, r7, 0 - asrs r2, r4, 16 - asrs r3, r5, 16 - bl AddObject - lsls r0, 24 - lsrs r0, 24 - b _08006EA6 - .pool -_08006E98: - subs r0, r1, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - asrs r0, 16 - cmp r0, r12 - bgt _08006E66 - movs r0, 0x40 -_08006EA6: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end AddObjectToBack - - thumb_func_start obj_add_empty_with_callback -@ int obj_add_empty_with_callback(void ( *func)()) -obj_add_empty_with_callback: @ 8006EB4 - push {r4-r6,lr} - adds r6, r0, 0 - ldr r0, =gUnknown_082EC6AC - movs r1, 0 - movs r2, 0 - movs r3, 0x1F - bl AddObjectToFront - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x40 - beq _08006EF4 - ldr r4, =0x02020630 - 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 _08006EF6 - .pool -_08006EF4: - movs r0, 0x40 -_08006EF6: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end obj_add_empty_with_callback - - thumb_func_start AddObject -@ u8 AddObject(u8 index, struct objtemplate *template, u16 x, u16 y, u8 subpriority) -AddObject: @ 8006EFC - 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, =0x02020630 - adds r7, r0, r1 - adds r0, r7, 0 - bl RemoveObject - 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 CalcVecFromObjectCenterToObjectUpperLeft - mov r0, r8 - ldrh r1, [r0] - ldr r4, =0xffff0000 - lsrs r0, r4, 16 - cmp r1, r0 - bne _08006FF8 - 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 AllocObjectTiles - lsls r0, 16 - lsrs r2, r0, 16 - asrs r0, 16 - asrs r1, r4, 16 - cmp r0, r1 - bne _08006FC8 - adds r0, r7, 0 - bl RemoveObject - movs r0, 0x40 - b _08007040 - .pool -_08006FC8: - ldr r1, =0x000003ff - adds r0, r1, 0 - ands r2, r0 - ldrh r1, [r7, 0x4] - ldr r0, =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 _0800700C - .pool -_08006FF8: - mov r1, r8 - ldrh r0, [r1] - bl GetObjectTileRangeStartByTag - adds r1, r7, 0 - adds r1, 0x40 - strh r0, [r1] - adds r0, r7, 0 - bl sub_8008324 -_0800700C: - ldrb r0, [r7, 0x1] - lsls r0, 30 - lsrs r0, 30 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08007020 - adds r0, r7, 0 - bl obj_alloc_rotscale_entry -_08007020: - mov r0, r8 - ldrh r1, [r0, 0x2] - ldr r0, =0x0000ffff - cmp r1, r0 - beq _0800703E - mov r1, r8 - ldrh r0, [r1, 0x2] - bl IndexOfObjectPaletteTag - lsls r0, 4 - ldrb r2, [r7, 0x5] - movs r1, 0xF - ands r1, r2 - orrs r1, r0 - strb r1, [r7, 0x5] -_0800703E: - mov r0, r10 -_08007040: - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end AddObject - - thumb_func_start AddObjectAndAnimateForOneFrame -@ u8 AddObjectAndAnimateForOneFrame(struct objtemplate *template, u16 x, u16 y, u8 subpriority) -AddObjectAndAnimateForOneFrame: @ 8007054 - 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, =0x02020630 - lsls r1, 16 - mov r12, r1 - lsls r2, 16 - mov r8, r2 -_08007074: - 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 _080070CC - 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 AddObject - lsls r0, 24 - lsrs r0, 24 - adds r5, r0, 0 - cmp r5, 0x40 - beq _080070D6 - ldr r1, =0x0202064c - 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 _080070C0 - adds r0, r4, 0 - bl AnimateObject -_080070C0: - adds r0, r5, 0 - b _080070D8 - .pool -_080070CC: - adds r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 - cmp r3, 0x3F - bls _08007074 -_080070D6: - movs r0, 0x40 -_080070D8: - 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 AddObjectAndAnimateForOneFrame - - thumb_func_start RemoveObjectAndFreeTiles -@ void RemoveObjectAndFreeTiles(struct obj *object) -RemoveObjectAndFreeTiles: @ 80070E8 - push {r4-r7,lr} - adds r5, r0, 0 - adds r0, 0x3E - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _08007144 - adds r0, r5, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0800713E - 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 _0800713E - ldr r0, =0x02021b3c - mov r12, r0 - movs r6, 0x7 - movs r7, 0x1 -_08007122: - 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 _08007122 -_0800713E: - adds r0, r5, 0 - bl RemoveObject -_08007144: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end RemoveObjectAndFreeTiles - - thumb_func_start ResetSpriteRange -@ void ResetSpriteRange(u8 startIndex, u8 endIndex) -ResetSpriteRange: @ 8007150 - push {r4-r6,lr} - lsls r0, 24 - lsls r1, 24 - lsrs r4, r1, 24 - lsrs r3, r0, 24 - cmp r3, r4 - bcs _08007178 - ldr r6, =0x030022f8 - ldr r5, =gDefaultOamAttributes -_08007162: - 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 _08007162 -_08007178: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ResetSpriteRange - - thumb_func_start LoadOamFromSprites -@ void LoadOamFromSprites() -LoadOamFromSprites: @ 8007188 - push {lr} - ldr r2, =0x030022c0 - ldr r1, =0x00000439 - adds r0, r2, r1 - ldrb r1, [r0] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _080071A8 - adds r0, r2, 0 - adds r0, 0x38 - movs r1, 0xE0 - lsls r1, 19 - ldr r2, =0x04000100 - bl CpuSet -_080071A8: - pop {r0} - bx r0 - .pool - thumb_func_end LoadOamFromSprites - - thumb_func_start ClearObjectCopyRequests -@ void ClearObjectCopyRequests() -ClearObjectCopyRequests: @ 80071B8 - push {r4,r5,lr} - ldr r0, =0x02021834 - movs r1, 0 - strb r1, [r0] - ldr r0, =0x02021835 - strb r1, [r0] - movs r2, 0 - ldr r4, =0x02021838 - movs r3, 0 - adds r5, r4, 0x4 -_080071CC: - 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 _080071CC - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ClearObjectCopyRequests - - thumb_func_start ResetSpriteTransformationMatrices -@ void ResetSpriteTransformationMatrices() -ResetSpriteTransformationMatrices: @ 80071F8 - push {r4,lr} - movs r1, 0 - ldr r4, =0x02021bc0 - movs r3, 0 - movs r2, 0x80 - lsls r2, 1 -_08007204: - 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 _08007204 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ResetSpriteTransformationMatrices - - thumb_func_start SetSpriteTransformationMatrix -@ void SetSpriteTransformationMatrix(u8 index, u16 a, u16 b, u16 c, u16 d) -SetSpriteTransformationMatrix: @ 8007224 - push {r4,r5,lr} - ldr r5, [sp, 0xC] - lsls r0, 24 - ldr r4, =0x02021bc0 - 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 - .pool - thumb_func_end SetSpriteTransformationMatrix - - thumb_func_start RemoveObject -@ void RemoveObject(struct obj *object) -RemoveObject: @ 8007244 - push {lr} - ldr r1, =gUnknown_082EC64C - movs r2, 0x44 - bl memcpy - pop {r0} - bx r0 - .pool - thumb_func_end RemoveObject - - thumb_func_start CalcVecFromObjectCenterToObjectUpperLeft -@ void CalcVecFromObjectCenterToObjectUpperLeft(struct obj *object, u8 shape, u8 size, u8 affineMode) -CalcVecFromObjectCenterToObjectUpperLeft: @ 8007258 - push {r4-r6,lr} - adds r6, r0, 0 - lsls r1, 24 - lsls r2, 24 - lsls r3, 24 - lsrs r3, 24 - ldr r4, =gUnknown_082EC634 - 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 _08007286 - lsls r0, r5, 25 - lsrs r5, r0, 24 - lsls r0, r1, 25 - lsrs r1, r0, 24 -_08007286: - adds r0, r6, 0 - adds r0, 0x28 - strb r5, [r0] - adds r0, 0x1 - strb r1, [r0] - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end CalcVecFromObjectCenterToObjectUpperLeft - - thumb_func_start AllocObjectTiles -@ s16 AllocObjectTiles(u16 numTiles) -AllocObjectTiles: @ 800729C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - lsls r0, 16 - lsrs r4, r0, 16 - cmp r4, 0 - bne _080072F2 - ldr r0, =0x02021b3a - ldrh r3, [r0] - ldr r0, =0x000003ff - cmp r3, r0 - bhi _080072DA - ldr r7, =0x02021b3c - movs r6, 0x7 - adds r4, r0, 0 - movs r5, 0x1 -_080072BE: - 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 _080072BE -_080072DA: - movs r0, 0 - b _080073A4 - .pool -_080072EC: - movs r0, 0x1 - negs r0, r0 - b _080073A4 -_080072F2: - ldr r0, =0x02021b3a - ldrh r3, [r0] - ldr r0, =0x02021b3c - mov r9, r0 - movs r7, 0x7 - movs r6, 0x1 -_080072FE: - 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 _08007332 - movs r5, 0x80 - lsls r5, 3 - ldr r2, =0x02021b3c -_08007316: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r5 - beq _080072EC - 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 _08007316 -_08007332: - mov r8, r3 - movs r2, 0x1 - cmp r2, r4 - beq _0800736C - movs r1, 0x80 - lsls r1, 3 - mov r12, r1 - ldr r5, =0x02021b3c -_08007342: - adds r0, r3, 0x1 - lsls r0, 16 - lsrs r3, r0, 16 - cmp r3, r12 - beq _080072EC - 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 _08007368 - adds r0, r2, 0x1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, r4 - bne _08007342 -_08007368: - cmp r2, r4 - bne _080072FE -_0800736C: - 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 _080073A2 - ldr r0, =0x02021b3c - mov r8, r0 - movs r7, 0x7 - adds r4, r1, 0 - movs r5, 0x1 -_08007386: - 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 _08007386 -_080073A2: - asrs r0, r6, 16 -_080073A4: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end AllocObjectTiles - - thumb_func_start Unused_ObjectTileAllocationBitArrayOp -@ unsigned int Unused_ObjectTileAllocationBitArrayOp(u16 tileNum, u8 op) -Unused_ObjectTileAllocationBitArrayOp: @ 80073B8 - 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 _080073F0 - movs r0, 0x1 - lsls r0, r2 - mvns r0, r0 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r0, =0x02021b3c - adds r0, r3, r0 - ldrb r1, [r0] - ands r2, r1 - strb r2, [r0] - b _0800741C - .pool -_080073F0: - cmp r1, 0x1 - bne _0800740C - lsls r1, r2 - lsls r0, r1, 24 - lsrs r2, r0, 24 - ldr r0, =0x02021b3c - adds r0, r3, r0 - ldrb r1, [r0] - orrs r2, r1 - strb r2, [r0] - b _0800741C - .pool -_0800740C: - movs r0, 0x80 - lsls r0, 17 - lsls r0, r4 - lsrs r5, r0, 24 - ldr r0, =0x02021b3c - adds r0, r6, r0 - ldrb r0, [r0] - ands r5, r0 -_0800741C: - adds r0, r5, 0 - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end Unused_ObjectTileAllocationBitArrayOp - - thumb_func_start DummyObjectCallback -@ void DummyObjectCallback(struct obj *object) -DummyObjectCallback: @ 8007428 - bx lr - thumb_func_end DummyObjectCallback - - thumb_func_start ProcessObjectCopyRequests -@ void ProcessObjectCopyRequests() -ProcessObjectCopyRequests: @ 800742C - push {r4-r7,lr} - ldr r0, =0x02021834 - ldrb r0, [r0] - cmp r0, 0 - beq _08007474 - movs r4, 0 - ldr r1, =0x02021835 - ldrb r0, [r1] - cmp r0, 0 - beq _0800746E - ldr r6, =0x02021838 - adds r7, r6, 0x4 - adds r5, r1, 0 -_08007446: - 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 _08007446 -_0800746E: - ldr r1, =0x02021834 - movs r0, 0 - strb r0, [r1] -_08007474: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end ProcessObjectCopyRequests - - thumb_func_start AddPicToObjectCopyRequests -@ void AddPicToObjectCopyRequests(u16 picIndex, u16 targetTileNum, struct obj_tiles *pics) -AddPicToObjectCopyRequests: @ 8007488 - push {r4-r6,lr} - adds r5, r2, 0 - lsls r0, 16 - lsrs r2, r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - ldr r4, =0x02021835 - ldrb r0, [r4] - cmp r0, 0x3F - bhi _080074D8 - ldr r3, =0x02021838 - 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, =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] -_080074D8: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end AddPicToObjectCopyRequests - - thumb_func_start AddTilesToObjectCopyRequests -@ void AddTilesToObjectCopyRequests(void *src, void *dest, u16 size) -AddTilesToObjectCopyRequests: @ 80074EC - push {r4-r6,lr} - adds r4, r0, 0 - adds r5, r1, 0 - lsls r2, 16 - lsrs r6, r2, 16 - ldr r3, =0x02021835 - ldrb r0, [r3] - cmp r0, 0x3F - bhi _0800752C - ldr r2, =0x02021838 - 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] -_0800752C: - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end AddTilesToObjectCopyRequests - - thumb_func_start Unused_CopyFromObjects -@ void Unused_CopyFromObjects(void *dest) -Unused_CopyFromObjects: @ 800753C - push {r4,lr} - adds r1, r0, 0 - ldr r3, =0x02020630 - movs r2, 0 - ldr r4, =0x000010ff -_08007546: - ldrb r0, [r3] - strb r0, [r1] - adds r1, 0x1 - adds r3, 0x1 - adds r2, 0x1 - cmp r2, r4 - bls _08007546 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end Unused_CopyFromObjects - - thumb_func_start Unused_CopyToObjects -@ void Unused_CopyToObjects(void *src) -Unused_CopyToObjects: @ 8007564 - push {r4,lr} - adds r1, r0, 0 - ldr r3, =0x02020630 - movs r2, 0 - ldr r4, =0x000010ff -_0800756E: - ldrb r0, [r1] - strb r0, [r3] - adds r1, 0x1 - adds r3, 0x1 - adds r2, 0x1 - cmp r2, r4 - bls _0800756E - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end Unused_CopyToObjects - - thumb_func_start RemoveAllObjects -@ void RemoveAllObjects() -RemoveAllObjects: @ 800758C - push {r4,r5,lr} - movs r4, 0 -_08007590: - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - ldr r5, =0x02020630 - adds r0, r5 - bl RemoveObject - ldr r0, =0x020217f4 - adds r0, r4, r0 - strb r4, [r0] - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x3F - bls _08007590 - lsls r0, r4, 4 - adds r0, r4 - lsls r0, 2 - adds r0, r5 - bl RemoveObject - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end RemoveAllObjects - - thumb_func_start FreeObjectTiles -@ void FreeObjectTiles(struct obj *object) -FreeObjectTiles: @ 80075C8 - push {lr} - ldr r2, [r0, 0x14] - ldrh r1, [r2] - ldr r0, =0x0000ffff - cmp r1, r0 - beq _080075DA - adds r0, r1, 0 - bl FreeObjectTilesByTag -_080075DA: - pop {r0} - bx r0 - .pool - thumb_func_end FreeObjectTiles - - thumb_func_start FreeObjectPalette -@ void FreeObjectPalette(struct obj *object) -FreeObjectPalette: @ 80075E4 - push {lr} - ldr r0, [r0, 0x14] - ldrh r0, [r0, 0x2] - bl FreeObjectPaletteByTag - pop {r0} - bx r0 - thumb_func_end FreeObjectPalette - - thumb_func_start obj_free_rotscale_entry -@ void obj_free_rotscale_entry(struct obj *obj) -obj_free_rotscale_entry: @ 80075F4 - 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 _0800761A - ldrb r0, [r4, 0x3] - lsls r0, 26 - lsrs r0, 27 - bl rotscale_free_entry - ldrb r1, [r4, 0x1] - movs r0, 0x4 - negs r0, r0 - ands r0, r1 - strb r0, [r4, 0x1] -_0800761A: - pop {r4} - pop {r0} - bx r0 - thumb_func_end obj_free_rotscale_entry - - thumb_func_start RemoveObjectAndFreeResources -@ void RemoveObjectAndFreeResources(struct obj *object) -RemoveObjectAndFreeResources: @ 8007620 - push {r4,lr} - adds r4, r0, 0 - bl FreeObjectTiles - adds r0, r4, 0 - bl FreeObjectPalette - adds r0, r4, 0 - bl obj_free_rotscale_entry - adds r0, r4, 0 - bl RemoveObjectAndFreeTiles - pop {r4} - pop {r0} - bx r0 - thumb_func_end RemoveObjectAndFreeResources - - thumb_func_start AnimateObject -@ void AnimateObject(struct obj *object) -AnimateObject: @ 8007640 - push {r4,r5,lr} - adds r4, r0, 0 - ldr r2, =gUnknown_082EC6C4 - 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, =0x02021cc0 - ldrb r0, [r0] - cmp r0, 0 - bne _08007676 - ldr r0, =gUnknown_082EC6CC - 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 -_08007676: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end AnimateObject - - thumb_func_start BeginObjectImageAnim -@ void BeginObjectImageAnim(struct obj *object) -BeginObjectImageAnim: @ 8007688 - 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 _0800776C - 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 _08007704 - subs r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_08007704: - 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 _0800772E - adds r0, r4, 0 - adds r1, r7, 0 - adds r2, r6, 0 - bl obj_set_horizonal_and_vertical_flip -_0800772E: - ldrb r1, [r5] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800775C - adds r0, r4, 0 - adds r0, 0x40 - ldrh r1, [r0] - add r1, r9 - ldr r2, =0x000003ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r4, 0x4] - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - b _0800776C - .pool -_0800775C: - mov r1, r8 - lsrs r0, r1, 16 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 22 - ldr r2, [r4, 0xC] - bl AddPicToObjectCopyRequests -_0800776C: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end BeginObjectImageAnim - - thumb_func_start ContinueObjectImageAnim -@ void ContinueObjectImageAnim(struct obj *object) -ContinueObjectImageAnim: @ 8007778 - push {r4,lr} - adds r4, r0, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r0, 0x3F - ands r0, r1 - cmp r0, 0 - beq _080077C8 - adds r0, r4, 0 - bl obj_anim_image_delay_progress - 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 _0800780E - adds r0, r4, 0 - adds r1, r3, 0 - bl obj_set_horizonal_and_vertical_flip - b _0800780E -_080077C8: - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - bne _0800780E - 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 _080077FE - adds r0, 0x3 - lsls r0, 16 - lsrs r2, r0, 16 -_080077FE: - ldr r0, =gUnknown_082EC6D4 - lsls r1, r2, 16 - asrs r1, 14 - adds r1, r0 - ldr r1, [r1] - adds r0, r4, 0 - bl _call_via_r1 -_0800780E: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContinueObjectImageAnim - - thumb_func_start ImageAnimCmd_frame -@ void ImageAnimCmd_frame(struct obj *object) -ImageAnimCmd_frame: @ 8007818 - 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 _08007852 - subs r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_08007852: - 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 _0800787C - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl obj_set_horizonal_and_vertical_flip -_0800787C: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _080078AC - adds r0, r4, 0 - adds r0, 0x40 - ldrh r1, [r0] - adds r1, r7 - ldr r2, =0x000003ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r4, 0x4] - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - b _080078BA - .pool -_080078AC: - mov r0, r8 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 22 - ldr r2, [r4, 0xC] - bl AddPicToObjectCopyRequests -_080078BA: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ImageAnimCmd_frame - - thumb_func_start ImageAnimCmd_end -@ void ImageAnimCmd_end(struct obj *object) -ImageAnimCmd_end: @ 80078C4 - 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 ImageAnimCmd_end - - thumb_func_start ImageAnimCmd_jump -@ void ImageAnimCmd_jump(struct obj *object) -ImageAnimCmd_jump: @ 80078DC - 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 _08007930 - subs r0, r3, 0x1 - lsls r0, 24 - lsrs r3, r0, 24 -_08007930: - 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 _0800795A - adds r0, r4, 0 - adds r1, r6, 0 - adds r2, r5, 0 - bl obj_set_horizonal_and_vertical_flip -_0800795A: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _0800798C - adds r0, r4, 0 - adds r0, 0x40 - ldrh r1, [r0] - adds r1, r7 - ldr r2, =0x000003ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r4, 0x4] - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r4, 0x4] - b _0800799A - .pool -_0800798C: - mov r0, r8 - ldrh r1, [r4, 0x4] - lsls r1, 22 - lsrs r1, 22 - ldr r2, [r4, 0xC] - bl AddPicToObjectCopyRequests -_0800799A: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end ImageAnimCmd_jump - - thumb_func_start ImageAnimCmd_loop -@ void ImageAnimCmd_loop(struct obj *object) -ImageAnimCmd_loop: @ 80079A4 - push {lr} - adds r1, r0, 0 - adds r0, 0x2D - ldrb r0, [r0] - cmp r0, 0 - beq _080079B8 - adds r0, r1, 0 - bl ContinueImageAnimLoop - b _080079BE -_080079B8: - adds r0, r1, 0 - bl BeginImageAnimLoop -_080079BE: - pop {r0} - bx r0 - thumb_func_end ImageAnimCmd_loop - - thumb_func_start BeginImageAnimLoop -@ void BeginImageAnimLoop(struct obj *object) -BeginImageAnimLoop: @ 80079C4 - 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 JumpToTopOfImageAnimLoop - adds r0, r4, 0 - bl ContinueObjectImageAnim - pop {r4} - pop {r0} - bx r0 - thumb_func_end BeginImageAnimLoop - - thumb_func_start ContinueImageAnimLoop -@ void ContinueImageAnimLoop(struct obj *object) -ContinueImageAnimLoop: @ 80079FC - 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 JumpToTopOfImageAnimLoop - adds r0, r4, 0 - bl ContinueObjectImageAnim - pop {r4} - pop {r0} - bx r0 - thumb_func_end ContinueImageAnimLoop - - thumb_func_start JumpToTopOfImageAnimLoop -@ void JumpToTopOfImageAnimLoop(struct obj *object) -JumpToTopOfImageAnimLoop: @ 8007A1C - push {r4-r7,lr} - mov r12, r0 - adds r0, 0x2D - ldrb r0, [r0] - cmp r0, 0 - beq _08007A88 - 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 _08007A82 - adds r6, r1, 0 - adds r2, r4, 0 -_08007A5C: - ldrb r0, [r2] - cmp r0, 0 - beq _08007A82 - 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 _08007A5C -_08007A82: - ldrb r0, [r4] - subs r0, 0x1 - strb r0, [r4] -_08007A88: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end JumpToTopOfImageAnimLoop - - thumb_func_start BeginObjectRotScalAnim -@ void BeginObjectRotScalAnim(struct obj *object) -BeginObjectRotScalAnim: @ 8007A90 - 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 _08007B12 - ldr r0, [r6, 0x10] - ldr r0, [r0] - movs r2, 0 - ldrsh r1, [r0, r2] - ldr r0, =0x00007fff - cmp r1, r0 - beq _08007B12 - adds r0, r6, 0 - bl obj_get_rotscale_entry_index - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl rotscale_reset_half - mov r5, sp - adds r0, r4, 0 - adds r1, r6, 0 - mov r2, sp - bl rotscale_load_frame - 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 sub_8008168 - ldr r1, =0x03000b70 - 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 _08007B12 - movs r0, 0x3A - ldrsh r1, [r6, r0] - movs r0, 0x3C - ldrsh r2, [r6, r0] - adds r0, r6, 0 - bl obj_update_pos2 -_08007B12: - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end BeginObjectRotScalAnim - - thumb_func_start ContinueObjectRotScalAnim -@ void ContinueObjectRotScalAnim(struct obj *object) -ContinueObjectRotScalAnim: @ 8007B24 - 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 _08007BC6 - adds r0, r4, 0 - bl obj_get_rotscale_entry_index - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - ldr r1, =0x03000b70 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r3, r0, r1 - ldrb r0, [r3, 0x2] - cmp r0, 0 - beq _08007B60 - adds r0, r2, 0 - adds r1, r4, 0 - bl sub_8007BD8 - b _08007BAA - .pool -_08007B60: - adds r0, r4, 0 - adds r0, 0x2C - ldrb r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08007BC6 - 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, =0x00007ffc - cmp r1, r0 - ble _08007B98 - ldr r2, =0xffff8003 - adds r0, r1, r2 - lsls r0, 16 - lsrs r2, r0, 16 -_08007B98: - ldr r0, =gUnknown_082EC6E4 - 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 -_08007BAA: - adds r0, r4, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - beq _08007BC6 - movs r0, 0x3A - ldrsh r1, [r4, r0] - movs r0, 0x3C - ldrsh r2, [r4, r0] - adds r0, r4, 0 - bl obj_update_pos2 -_08007BC6: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end ContinueObjectRotScalAnim - - thumb_func_start sub_8007BD8 -@ void sub_8007BD8(u8 index, struct obj *object) -sub_8007BD8: @ 8007BD8 - 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 obj_anim_rotscale_delay_progress - lsls r0, 24 - cmp r0, 0 - bne _08007C02 - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl rotscale_load_frame - adds r0, r4, 0 - mov r1, sp - bl rotscale_frame_apply_relative_and_sync -_08007C02: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8007BD8 - - thumb_func_start RotScalAnimCmd_loop -@ void RotScalAnimCmd_loop(u8 index, struct obj *object) -RotScalAnimCmd_loop: @ 8007C0C - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =0x03000b70 - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 2 - adds r0, r1 - ldrb r0, [r0, 0x3] - cmp r0, 0 - beq _08007C34 - adds r0, r2, 0 - adds r1, r3, 0 - bl ContinueRotScalAnimLoop - b _08007C3C - .pool -_08007C34: - adds r0, r2, 0 - adds r1, r3, 0 - bl BeginRotScalAnimLoop -_08007C3C: - pop {r0} - bx r0 - thumb_func_end RotScalAnimCmd_loop - - thumb_func_start BeginRotScalAnimLoop -@ void BeginRotScalAnimLoop(u8 index, struct obj *object) -BeginRotScalAnimLoop: @ 8007C40 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =0x03000b70 - 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 JumpToTopOfRotScalAnimLoop - adds r0, r4, 0 - bl ContinueObjectRotScalAnim - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end BeginRotScalAnimLoop - - thumb_func_start ContinueRotScalAnimLoop -@ void ContinueRotScalAnimLoop(u8 index, struct obj *object) -ContinueRotScalAnimLoop: @ 8007C7C - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x03000b70 - 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 JumpToTopOfRotScalAnimLoop - adds r0, r4, 0 - bl ContinueObjectRotScalAnim - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContinueRotScalAnimLoop - - thumb_func_start JumpToTopOfRotScalAnimLoop -@ void JumpToTopOfRotScalAnimLoop(u8 index, struct obj *object) -JumpToTopOfRotScalAnimLoop: @ 8007CAC - push {r4-r7,lr} - mov r12, r1 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r1, =0x03000b70 - 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 _08007D0C - ldrb r0, [r2, 0x1] - subs r0, 0x1 - strb r0, [r2, 0x1] - adds r4, r3, 0 - b _08007CDC - .pool -_08007CD4: - cmp r2, 0 - beq _08007D00 - subs r0, r2, 0x1 - strb r0, [r3, 0x1] -_08007CDC: - 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, =0x00007ffd - cmp r1, r0 - bne _08007CD4 -_08007D00: - adds r1, r4, r5 - lsls r1, 2 - adds r1, r6 - ldrb r0, [r1, 0x1] - subs r0, 0x1 - strb r0, [r1, 0x1] -_08007D0C: - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end JumpToTopOfRotScalAnimLoop - - thumb_func_start RotScalAnimCmd_jump -@ void RotScalAnimCmd_jump(u8 index, struct obj *object) -RotScalAnimCmd_jump: @ 8007D18 - push {r4-r6,lr} - sub sp, 0x8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =0x03000b70 - 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 rotscale_load_frame - adds r0, r5, 0 - mov r1, sp - bl sub_8008168 - ldrb r0, [r6, 0x5] - strb r0, [r4, 0x2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end RotScalAnimCmd_jump - - thumb_func_start RotScalAnimCmd_end -@ void RotScalAnimCmd_end(u8 index, struct obj *object) -RotScalAnimCmd_end: @ 8007D64 - 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, =0x03000b70 - 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 rotscale_frame_apply_relative_and_sync - add sp, 0x8 - pop {r0} - bx r0 - .pool - thumb_func_end RotScalAnimCmd_end - - thumb_func_start RotScalAnimCmd_frame -@ void RotScalAnimCmd_frame(u8 index, struct obj *object) -RotScalAnimCmd_frame: @ 8007DA0 - 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 rotscale_load_frame - adds r0, r4, 0 - mov r1, sp - bl sub_8008168 - ldr r1, =0x03000b70 - 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 - .pool - thumb_func_end RotScalAnimCmd_frame - - thumb_func_start rotscale_set_indirect -@ void rotscale_set_indirect(u8 rotscale_entry_index, s16 rotscale_data[]) -rotscale_set_indirect: @ 8007DD8 - lsls r0, 24 - ldr r2, =0x02021bc0 - 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 - .pool - thumb_func_end rotscale_set_indirect - - thumb_func_start obj_get_rotscale_entry_index -@ int obj_get_rotscale_entry_index(struct obj *obj) -obj_get_rotscale_entry_index: @ 8007DF8 - 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 _08007E12 - ldrb r0, [r2, 0x3] - lsls r0, 26 - lsrs r3, r0, 27 -_08007E12: - adds r0, r3, 0 - pop {r1} - bx r1 - thumb_func_end obj_get_rotscale_entry_index - - thumb_func_start sub_8007E18 -@ void sub_8007E18(struct obj *obj, s16 a2, s16 a3) -sub_8007E18: @ 8007E18 - 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_8007E18 - - thumb_func_start sub_8007E28 -@ int sub_8007E28(int a1, int a2, int a3) -sub_8007E28: @ 8007E28 - push {r4,r5,lr} - adds r3, r0, 0 - adds r5, r2, 0 - subs r0, r1, r3 - cmp r0, 0 - bge _08007E3A - negs r0, r0 - asrs r4, r0, 9 - b _08007E3E -_08007E3A: - asrs r0, 9 - negs r4, r0 -_08007E3E: - 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_8007E28 - - thumb_func_start obj_update_pos2 -@ void obj_update_pos2(struct obj *obj, int a2, int a3) -obj_update_pos2: @ 8007E54 - 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 _08007EA2 - ldr r2, =gUnknown_082EC6F4 - 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, =0x02021bc0 - 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_8007E28 - strh r0, [r5, 0x24] -_08007EA2: - cmp r8, r9 - beq _08007EDA - ldr r2, =gUnknown_082EC6F4 - 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, =0x02021bc0 - 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_8007E28 - strh r0, [r5, 0x26] -_08007EDA: - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end obj_update_pos2 - - thumb_func_start obj_set_horizonal_and_vertical_flip -@ void obj_set_horizonal_and_vertical_flip(struct obj *obj, u8 a2, char a3) -obj_set_horizonal_and_vertical_flip: @ 8007EF0 - 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 obj_set_horizonal_and_vertical_flip - - thumb_func_start rotscale_reset_half -@ void rotscale_reset_half(u8 index) -rotscale_reset_half: @ 8007F64 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x03000b70 - 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 - .pool - thumb_func_end rotscale_reset_half - - thumb_func_start rotscale_reset_full_1 -@ void rotscale_reset_full_1(u8 index, u8 a2) -rotscale_reset_full_1: @ 8007F80 - lsls r0, 24 - lsrs r0, 24 - ldr r3, =0x03000b70 - 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 - .pool - thumb_func_end rotscale_reset_full_1 - - thumb_func_start rotscale_reset_full_2 -@ void rotscale_reset_full_2(u8 index) -rotscale_reset_full_2: @ 8007FA8 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x03000b70 - 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 - .pool - thumb_func_end rotscale_reset_full_2 - - thumb_func_start rotscale_frame_apply_absolute -@ void rotscale_frame_apply_absolute(u8 index, int a2) -rotscale_frame_apply_absolute: @ 8007FD0 - lsls r0, 24 - lsrs r0, 24 - ldr r3, =0x03000b70 - 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 - .pool - thumb_func_end rotscale_frame_apply_absolute - - thumb_func_start obj_anim_image_delay_progress -obj_anim_image_delay_progress: @ 8007FF4 - push {lr} - adds r3, r0, 0 - adds r3, 0x2C - ldrb r2, [r3] - movs r0, 0x40 - ands r0, r2 - cmp r0, 0 - bne _08008018 - 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] -_08008018: - pop {r0} - bx r0 - thumb_func_end obj_anim_image_delay_progress - - thumb_func_start obj_anim_rotscale_delay_progress -@ u8 obj_anim_rotscale_delay_progress(struct obj *object, u8 index) -obj_anim_rotscale_delay_progress: @ 800801C - 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 _08008040 - ldr r0, =0x03000b70 - lsls r1, r2, 1 - adds r1, r2 - lsls r1, 2 - adds r1, r0 - ldrb r0, [r1, 0x2] - subs r0, 0x1 - strb r0, [r1, 0x2] -_08008040: - ldrb r0, [r3] - lsrs r0, 7 - pop {r1} - bx r1 - .pool - thumb_func_end obj_anim_rotscale_delay_progress - - thumb_func_start rotscale_frame_apply_relative_and_sync -@ void rotscale_frame_apply_relative_and_sync(u8 index, int a2) -rotscale_frame_apply_relative_and_sync: @ 800804C - push {r4-r6,lr} - sub sp, 0x10 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =0x03000b70 - 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, =0xffffff00 - adds r1, r2, 0 - ands r0, r1 - strh r0, [r4, 0x8] - movs r1, 0x4 - ldrsh r0, [r4, r1] - bl divide_0x10000_by - lsls r0, 16 - lsrs r0, 16 - ldr r6, =0xffff0000 - ldr r1, [sp] - ands r1, r6 - orrs r1, r0 - str r1, [sp] - movs r2, 0x6 - ldrsh r0, [r4, r2] - bl divide_0x10000_by - lsls r0, 16 - ldr r2, =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 rotscale_set_indirect - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end rotscale_frame_apply_relative_and_sync - - thumb_func_start divide_0x10000_by -@ int divide_0x10000_by(int n) -divide_0x10000_by: @ 80080E4 - 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 divide_0x10000_by - - thumb_func_start rotscale_load_frame -@ void rotscale_load_frame(u8 index, struct obj *obj, rotscale_frame *a3) -rotscale_load_frame: @ 80080FC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, =0x03000b70 - 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 - .pool - thumb_func_end rotscale_load_frame - - thumb_func_start sub_8008168 -sub_8008168: @ 8008168 - 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 _0800818E - subs r0, 0x1 - strb r0, [r2, 0x5] - adds r0, r4, 0 - adds r1, r2, 0 - bl rotscale_frame_apply_relative_and_sync - b _0800819E -_0800818E: - adds r0, r4, 0 - adds r1, r2, 0 - bl rotscale_frame_apply_absolute - adds r0, r4, 0 - mov r1, sp - bl rotscale_frame_apply_relative_and_sync -_0800819E: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_8008168 - - thumb_func_start StartObjectImageAnim -@ void StartObjectImageAnim(struct obj *object, u8 whichAnim) -StartObjectImageAnim: @ 80081A8 - 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 StartObjectImageAnim - - thumb_func_start StartObjectImageAnimIfDifferent -@ void StartObjectImageAnimIfDifferent(struct obj *object, u8 whichAnim) -StartObjectImageAnimIfDifferent: @ 80081C0 - push {lr} - adds r2, r0, 0 - lsls r1, 24 - lsrs r1, 24 - adds r0, 0x2A - ldrb r0, [r0] - cmp r0, r1 - beq _080081D6 - adds r0, r2, 0 - bl StartObjectImageAnim -_080081D6: - pop {r0} - bx r0 - thumb_func_end StartObjectImageAnimIfDifferent - - thumb_func_start SeekObjectImageAnim -@ void SeekObjectImageAnim(struct obj *object, u8 cmdIndex) -SeekObjectImageAnim: @ 80081DC - 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 ContinueObjectImageAnim - ldrb r2, [r4] - movs r0, 0x3F - ands r0, r2 - cmp r0, 0 - beq _08008244 - 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] -_08008244: - 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 SeekObjectImageAnim - - thumb_func_start StartObjectRotScalAnim -@ void StartObjectRotScalAnim(struct obj *object, u8 whichAnim) -StartObjectRotScalAnim: @ 8008258 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - bl obj_get_rotscale_entry_index - lsls r0, 24 - lsrs r0, 24 - adds r1, r4, 0 - bl rotscale_reset_full_1 - 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 StartObjectRotScalAnim - - thumb_func_start StartObjectRotScalAnimIfDifferent -@ void StartObjectRotScalAnimIfDifferent(struct obj *object, u8 whichAnim) -StartObjectRotScalAnimIfDifferent: @ 8008284 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - bl obj_get_rotscale_entry_index - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x03000b70 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1] - cmp r0, r4 - beq _080082AC - adds r0, r5, 0 - adds r1, r4, 0 - bl StartObjectRotScalAnim -_080082AC: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end StartObjectRotScalAnimIfDifferent - - thumb_func_start sub_80082B8 -sub_80082B8: @ 80082B8 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r4, r1, 24 - lsrs r4, 24 - bl obj_get_rotscale_entry_index - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x03000b70 - 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 - .pool - thumb_func_end sub_80082B8 - - thumb_func_start sub_80082F0 -sub_80082F0: @ 80082F0 - push {r4,r5,lr} - adds r5, r0, 0 - lsls r1, 24 - lsrs r4, r1, 24 - bl obj_get_rotscale_entry_index - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x03000b70 - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r0, [r1] - cmp r0, r4 - beq _08008318 - adds r0, r5, 0 - adds r1, r4, 0 - bl sub_80082B8 -_08008318: - pop {r4,r5} - pop {r0} - bx r0 - .pool - thumb_func_end sub_80082F0 - - thumb_func_start sub_8008324 -sub_8008324: @ 8008324 - push {lr} - adds r3, r0, 0 - adds r0, 0x3F - ldrb r1, [r0] - movs r0, 0x40 - ands r0, r1 - cmp r0, 0 - beq _08008370 - 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 _08008358 - movs r2, 0 -_08008358: - adds r0, r3, 0 - adds r0, 0x40 - ldrh r1, [r0] - adds r1, r2 - ldr r2, =0x000003ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r3, 0x4] - ldr r0, =0xfffffc00 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] -_08008370: - pop {r0} - bx r0 - .pool - thumb_func_end sub_8008324 - - thumb_func_start rotscale_reset_all -@ void rotscale_reset_all() -rotscale_reset_all: @ 800837C - push {r4,lr} - ldr r1, =0x02021cc0 - movs r0, 0 - strb r0, [r1] - ldr r1, =0x03003018 - movs r0, 0 - str r0, [r1] - bl ResetSpriteTransformationMatrices - movs r4, 0 -_08008390: - adds r0, r4, 0 - bl rotscale_reset_full_2 - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0x1F - bls _08008390 - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end rotscale_reset_all - - thumb_func_start rotscale_alloc_entry -@ u8 rotscale_alloc_entry() -rotscale_alloc_entry: @ 80083B0 - push {r4,lr} - movs r2, 0 - movs r1, 0x1 - ldr r0, =0x03003018 - ldr r4, [r0] - adds r3, r0, 0 -_080083BC: - adds r0, r4, 0 - ands r0, r1 - cmp r0, 0 - bne _080083D4 - ldr r0, [r3] - orrs r0, r1 - str r0, [r3] - adds r0, r2, 0 - b _080083E2 - .pool -_080083D4: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - lsls r1, 1 - cmp r2, 0x1F - bls _080083BC - movs r0, 0xFF -_080083E2: - pop {r4} - pop {r1} - bx r1 - thumb_func_end rotscale_alloc_entry - - thumb_func_start rotscale_free_entry -@ void rotscale_free_entry(u8 rotscale_index) -rotscale_free_entry: @ 80083E8 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - movs r0, 0 - movs r1, 0x1 - ldr r3, =0x03003018 - cmp r0, r2 - bcs _08008406 -_080083FA: - adds r0, 0x1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, 1 - cmp r0, r2 - bcc _080083FA -_08008406: - 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 SetSpriteTransformationMatrix - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end rotscale_free_entry - - thumb_func_start obj_alloc_rotscale_entry -@ void obj_alloc_rotscale_entry(struct obj *obj) -obj_alloc_rotscale_entry: @ 8008428 - push {r4,r5,lr} - adds r4, r0, 0 - bl rotscale_alloc_entry - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0xFF - beq _08008470 - 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 CalcVecFromObjectCenterToObjectUpperLeft - 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 rotscale_reset_full_2 -_08008470: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end obj_alloc_rotscale_entry - - thumb_func_start sub_8008478 -sub_8008478: @ 8008478 - 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 divide_0x10000_by - lsls r0, 16 - lsrs r0, 16 - ldr r1, =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 divide_0x10000_by - lsls r0, 16 - ldr r2, =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 rotscale_set_indirect - add sp, 0x10 - pop {r3} - mov r8, r3 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end sub_8008478 - - thumb_func_start LoadObjectPic -@ u16 LoadObjectPic(struct obj_tiles *pic) -LoadObjectPic: @ 80084F8 - push {r4-r6,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x4] - lsrs r0, 5 - bl AllocObjectTiles - lsls r4, r0, 16 - asrs r6, r4, 16 - cmp r6, 0 - blt _08008534 - ldrh r0, [r5, 0x6] - lsrs r4, 16 - ldrh r2, [r5, 0x4] - lsrs r2, 5 - adds r1, r4, 0 - bl AddObjectTileRange - ldr r0, [r5] - lsls r1, r6, 5 - ldr r2, =0x06010000 - adds r1, r2 - ldrh r2, [r5, 0x4] - lsrs r2, 1 - bl CpuSet - adds r0, r4, 0 - b _08008536 - .pool -_08008534: - movs r0, 0 -_08008536: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end LoadObjectPic - - thumb_func_start LoadObjectPics -@ void LoadObjectPics(struct obj_tiles *pics) -LoadObjectPics: @ 800853C - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 - ldr r0, [r5] - cmp r0, 0 - beq _08008560 -_08008548: - lsls r0, r4, 3 - adds r0, r5, r0 - bl LoadObjectPic - 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 _08008548 -_08008560: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end LoadObjectPics - - thumb_func_start FreeObjectTilesByTag -@ void FreeObjectTilesByTag(u16 tag) -FreeObjectTilesByTag: @ 8008568 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 16 - lsrs r0, 16 - bl IndexOfObjectTilesTag - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - beq _080085C6 - ldr r0, =0x03000a70 - 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, =0x030009f0 - mov r8, r1 - lsls r5, r4, 1 - cmp r3, r0 - bge _080085BE - ldr r1, =0x02021b3c - mov r12, r1 - movs r6, 0x7 - movs r7, 0x1 - adds r4, r0, 0 -_080085A2: - 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 _080085A2 -_080085BE: - mov r0, r8 - adds r1, r5, r0 - ldr r0, =0x0000ffff - strh r0, [r1] -_080085C6: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end FreeObjectTilesByTag - - thumb_func_start FreeAllObjectTiles -@ void FreeAllObjectTiles() -FreeAllObjectTiles: @ 80085E0 - push {r4-r7,lr} - movs r2, 0 - ldr r7, =0x030009f0 - ldr r0, =0x0000ffff - adds r6, r0, 0 - ldr r4, =0x03000a70 - movs r3, 0 - adds r5, r4, 0x2 -_080085F0: - 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 _080085F0 - pop {r4-r7} - pop {r0} - bx r0 - .pool - thumb_func_end FreeAllObjectTiles - - thumb_func_start GetObjectTileRangeStartByTag -@ u16 GetObjectTileRangeStartByTag(u16 tag) -GetObjectTileRangeStartByTag: @ 8008620 - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl IndexOfObjectTilesTag - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _08008640 - ldr r0, =0x03000a70 - lsls r1, 2 - adds r1, r0 - ldrh r0, [r1] - b _08008642 - .pool -_08008640: - ldr r0, =0x0000ffff -_08008642: - pop {r1} - bx r1 - .pool - thumb_func_end GetObjectTileRangeStartByTag - - thumb_func_start IndexOfObjectTilesTag -@ u8 IndexOfObjectTilesTag(u16 tag) -IndexOfObjectTilesTag: @ 800864C - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - movs r1, 0 - ldr r3, =0x030009f0 -_08008656: - lsls r0, r1, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r2 - bne _08008668 - adds r0, r1, 0 - b _08008674 - .pool -_08008668: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0x3F - bls _08008656 - movs r0, 0xFF -_08008674: - pop {r1} - bx r1 - thumb_func_end IndexOfObjectTilesTag - - thumb_func_start GetTagByObjectTileRangeStart -@ u16 GetTagByObjectTileRangeStart(u16 rangeStart) -GetTagByObjectTileRangeStart: @ 8008678 - push {r4-r6,lr} - lsls r0, 16 - lsrs r3, r0, 16 - movs r2, 0 - ldr r6, =0x030009f0 - ldr r5, =0x0000ffff - ldr r4, =0x03000a70 -_08008686: - lsls r0, r2, 1 - adds r1, r0, r6 - ldrh r0, [r1] - cmp r0, r5 - beq _080086AC - lsls r0, r2, 2 - adds r0, r4 - ldrh r0, [r0] - cmp r0, r3 - bne _080086AC - ldrh r0, [r1] - b _080086B8 - .pool -_080086AC: - adds r0, r2, 0x1 - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0x3F - bls _08008686 - ldr r0, =0x0000ffff -_080086B8: - pop {r4-r6} - pop {r1} - bx r1 - .pool - thumb_func_end GetTagByObjectTileRangeStart - - thumb_func_start AddObjectTileRange -@ void AddObjectTileRange(u16 tag, u16 start, u16 count) -AddObjectTileRange: @ 80086C4 - 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, =0x0000ffff - bl IndexOfObjectTilesTag - lsls r0, 24 - lsrs r0, 24 - ldr r2, =0x030009f0 - lsls r1, r0, 1 - adds r1, r2 - strh r4, [r1] - ldr r1, =0x03000a70 - 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 - .pool - thumb_func_end AddObjectTileRange - - thumb_func_start ResetObjectPaletteAllocator -@ void ResetObjectPaletteAllocator() -ResetObjectPaletteAllocator: @ 800870C - push {r4,lr} - ldr r1, =0x0300301c - movs r0, 0 - strb r0, [r1] - movs r2, 0 - ldr r4, =0x03000cf0 - ldr r0, =0x0000ffff - adds r3, r0, 0 -_0800871C: - 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 _0800871C - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ResetObjectPaletteAllocator - - thumb_func_start LoadTaggedObjectPalette -@ u8 LoadTaggedObjectPalette(struct TaggedObjectPalette *palette) -LoadTaggedObjectPalette: @ 8008744 - push {r4,r5,lr} - adds r5, r0, 0 - ldrh r0, [r5, 0x4] - bl IndexOfObjectPaletteTag - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - beq _0800875A - adds r0, r4, 0 - b _0800878A -_0800875A: - ldr r0, =0x0000ffff - bl IndexOfObjectPaletteTag - lsls r0, 24 - lsrs r4, r0, 24 - cmp r4, 0xFF - beq _08008788 - ldr r1, =0x03000cf0 - lsls r0, r4, 1 - adds r0, r1 - ldrh r1, [r5, 0x4] - strh r1, [r0] - ldr r0, [r5] - lsls r1, r4, 4 - bl LoadObjectPalette - adds r0, r4, 0 - b _0800878A - .pool -_08008788: - movs r0, 0xFF -_0800878A: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end LoadTaggedObjectPalette - - thumb_func_start LoadTaggedObjectPalettes -@ void LoadTaggedObjectPalettes(struct TaggedObjectPalette *palettes) -LoadTaggedObjectPalettes: @ 8008790 - push {r4,r5,lr} - adds r5, r0, 0 - movs r4, 0 - b _0800879E -_08008798: - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 -_0800879E: - lsls r0, r4, 3 - adds r1, r0, r5 - ldr r0, [r1] - cmp r0, 0 - beq _080087B6 - adds r0, r1, 0 - bl LoadTaggedObjectPalette - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0xFF - bne _08008798 -_080087B6: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end LoadTaggedObjectPalettes - - thumb_func_start LoadObjectPalette -@ void LoadObjectPalette(void *src, u16 destOffset) -LoadObjectPalette: @ 80087BC - push {lr} - lsls r1, 16 - movs r2, 0x80 - lsls r2, 17 - adds r1, r2 - lsrs r1, 16 - movs r2, 0x20 - bl gpu_pal_apply - pop {r0} - bx r0 - thumb_func_end LoadObjectPalette - - thumb_func_start AllocObjectPalette -@ u8 AllocObjectPalette(u16 tag) -AllocObjectPalette: @ 80087D4 - push {r4,lr} - lsls r0, 16 - lsrs r4, r0, 16 - ldr r0, =0x0000ffff - bl IndexOfObjectPaletteTag - lsls r0, 24 - lsrs r2, r0, 24 - cmp r2, 0xFF - beq _080087FC - ldr r1, =0x03000cf0 - lsls r0, r2, 1 - adds r0, r1 - strh r4, [r0] - adds r0, r2, 0 - b _080087FE - .pool -_080087FC: - movs r0, 0xFF -_080087FE: - pop {r4} - pop {r1} - bx r1 - thumb_func_end AllocObjectPalette - - thumb_func_start IndexOfObjectPaletteTag -@ u8 IndexOfObjectPaletteTag(u16 tag) -IndexOfObjectPaletteTag: @ 8008804 - push {lr} - lsls r0, 16 - lsrs r2, r0, 16 - ldr r0, =0x0300301c - ldrb r1, [r0] - cmp r1, 0xF - bhi _08008836 - ldr r3, =0x03000cf0 -_08008814: - lsls r0, r1, 1 - adds r0, r3 - ldrh r0, [r0] - cmp r0, r2 - bne _0800882C - adds r0, r1, 0 - b _08008838 - .pool -_0800882C: - adds r0, r1, 0x1 - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xF - bls _08008814 -_08008836: - movs r0, 0xFF -_08008838: - pop {r1} - bx r1 - thumb_func_end IndexOfObjectPaletteTag - - thumb_func_start GetObjectPaletteTagBySlot -@ u16 GetObjectPaletteTagBySlot(u8 paletteSlot) -GetObjectPaletteTagBySlot: @ 800883C - lsls r0, 24 - ldr r1, =0x03000cf0 - lsrs r0, 23 - adds r0, r1 - ldrh r0, [r0] - bx lr - .pool - thumb_func_end GetObjectPaletteTagBySlot - - thumb_func_start FreeObjectPaletteByTag -@ void FreeObjectPaletteByTag(int tag) -FreeObjectPaletteByTag: @ 800884C - push {lr} - lsls r0, 16 - lsrs r0, 16 - bl IndexOfObjectPaletteTag - lsls r0, 24 - lsrs r1, r0, 24 - cmp r1, 0xFF - beq _08008868 - ldr r0, =0x03000cf0 - lsls r1, 1 - adds r1, r0 - ldr r0, =0x0000ffff - strh r0, [r1] -_08008868: - pop {r0} - bx r0 - .pool - thumb_func_end FreeObjectPaletteByTag - - thumb_func_start SetSpriteOamTables_NoPriorityFromTable -@ void SetSpriteOamTables_NoPriorityFromTable(struct obj *object, u32 spriteOamTables) -SetSpriteOamTables_NoPriorityFromTable: @ 8008874 - str r1, [r0, 0x18] - adds r0, 0x42 - movs r1, 0x40 - strb r1, [r0] - bx lr - thumb_func_end SetSpriteOamTables_NoPriorityFromTable - - thumb_func_start AddSprite -@ u8 AddSprite(struct obj *obj, u8 *spriteIndex) -AddSprite: @ 8008880 - push {r4,lr} - adds r4, r0, 0 - adds r3, r1, 0 - ldr r1, =0x02021b38 - ldrb r0, [r3] - ldrb r1, [r1] - cmp r0, r1 - bcc _08008898 - movs r0, 0x1 - b _080088E0 - .pool -_08008898: - ldr r0, [r4, 0x18] - cmp r0, 0 - beq _080088AC - adds r0, r4, 0 - adds r0, 0x42 - ldrb r1, [r0] - movs r0, 0xC0 - ands r0, r1 - cmp r0, 0 - bne _080088CC -_080088AC: - ldr r0, =0x030022c0 - 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 _080088E0 - .pool -_080088CC: - ldrb r1, [r3] - lsls r1, 3 - ldr r0, =0x030022f8 - adds r1, r0 - adds r0, r4, 0 - adds r2, r3, 0 - bl AddSpritesFromSpriteOamTable - lsls r0, 24 - lsrs r0, 24 -_080088E0: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end AddSprite - - thumb_func_start AddSpritesFromSpriteOamTable -@ u8 AddSpritesFromSpriteOamTable(struct obj *object, struct sprite *sprite, u8 *spriteIndex) -AddSpritesFromSpriteOamTable: @ 80088EC - 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, =0x02021b38 - ldrb r1, [r2] - ldrb r0, [r0] - cmp r1, r0 - bcc _08008910 -_08008908: - movs r0, 0x1 - b _08008AE6 - .pool -_08008910: - 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 _0800892C - ldr r0, [r7, 0x4] - cmp r0, 0 - bne _08008942 -_0800892C: - 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 _08008AE4 -_08008942: - 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 _080089A0 - b _08008AE4 -_080089A0: - lsls r0, r2, 16 - asrs r0, 16 - str r0, [sp, 0x14] -_080089A6: - mov r2, r8 - ldrb r0, [r2] - ldr r1, =0x02021b38 - ldrb r1, [r1] - cmp r0, r1 - bcs _08008908 - 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 _080089FC - 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, =gUnknown_082EC754 - 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 -_080089FC: - mov r1, r10 - cmp r1, 0 - beq _08008A2E - 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, =gUnknown_082EC754 - 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 -_08008A2E: - 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, =0x000001ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r3, 0x2] - ldr r0, =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, =0x000003ff - adds r0, r2, 0 - ands r1, r0 - ldrh r2, [r3, 0x4] - ldr r0, =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 _08008ACA - 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] -_08008ACA: - 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 _08008AE4 - b _080089A6 -_08008AE4: - movs r0, 0 -_08008AE6: - add sp, 0x1C - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .pool - thumb_func_end AddSpritesFromSpriteOamTable - - .align 2, 0 @ Don't pad with nop. |