summaryrefslogtreecommitdiff
path: root/asm/gpu_obj.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2016-11-01 10:08:48 -0700
committerYamaArashi <shadow962@live.com>2016-11-01 10:16:34 -0700
commit6f0e42a91aeeedd64725ce57e3dad6a38421d8e9 (patch)
treedcea69ec49430f004c17ff71b77587cafd78c69a /asm/gpu_obj.s
parentfef81187dce23adc635d7f4b7fd82298eab09ec2 (diff)
split asm files
Diffstat (limited to 'asm/gpu_obj.s')
-rw-r--r--asm/gpu_obj.s4561
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.