diff options
Diffstat (limited to 'asm/sprite.s')
-rw-r--r-- | asm/sprite.s | 1338 |
1 files changed, 4 insertions, 1334 deletions
diff --git a/asm/sprite.s b/asm/sprite.s index 6e7585960..9e7d5880e 100644 --- a/asm/sprite.s +++ b/asm/sprite.s @@ -6,1336 +6,6 @@ .text - thumb_func_start AffineAnimDelay -@ void AffineAnimDelay(u8 index, struct obj *object) -AffineAnimDelay: @ 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 DecrementAffineAnimDelayCounter - lsls r0, 24 - cmp r0, 0 - bne _08007C02 - adds r0, r4, 0 - adds r1, r5, 0 - mov r2, sp - bl GetAffineAnimFrame - adds r0, r4, 0 - mov r1, sp - bl ApplyAffineAnimFrameRelativeAndUpdateMatrix -_08007C02: - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end AffineAnimDelay - - thumb_func_start AffineAnimCmd_loop -@ void AffineAnimCmd_loop(u8 index, struct obj *object) -AffineAnimCmd_loop: @ 8007C0C - push {lr} - adds r3, r1, 0 - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, =sAffineAnimStates - 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 ContinueAffineAnimLoop - b _08007C3C - .pool -_08007C34: - adds r0, r2, 0 - adds r1, r3, 0 - bl BeginAffineAnimLoop -_08007C3C: - pop {r0} - bx r0 - thumb_func_end AffineAnimCmd_loop - - thumb_func_start BeginAffineAnimLoop -@ void BeginAffineAnimLoop(u8 index, struct obj *object) -BeginAffineAnimLoop: @ 8007C40 - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r1, =sAffineAnimStates - 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 ContinueAffineAnim - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end BeginAffineAnimLoop - - thumb_func_start ContinueAffineAnimLoop -@ void ContinueAffineAnimLoop(u8 index, struct obj *object) -ContinueAffineAnimLoop: @ 8007C7C - push {r4,lr} - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =sAffineAnimStates - 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 ContinueAffineAnim - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end ContinueAffineAnimLoop - - 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, =sAffineAnimStates - 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 AffineAnimCmd_jump -@ void AffineAnimCmd_jump(u8 index, struct obj *object) -AffineAnimCmd_jump: @ 8007D18 - push {r4-r6,lr} - sub sp, 0x8 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =sAffineAnimStates - lsls r4, r5, 1 - adds r4, r5 - lsls r4, 2 - adds r4, r0 - ldrb r2, [r4] - ldr r0, [r1, 0x10] - lsls r2, 2 - adds r2, r0 - ldrb r0, [r4, 0x1] - ldr r2, [r2] - lsls r0, 3 - adds r0, r2 - ldrh r0, [r0, 0x2] - strb r0, [r4, 0x1] - mov r6, sp - adds r0, r5, 0 - mov r2, sp - bl GetAffineAnimFrame - adds r0, r5, 0 - mov r1, sp - bl ApplyAffineAnimFrame - ldrb r0, [r6, 0x5] - strb r0, [r4, 0x2] - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end AffineAnimCmd_jump - - thumb_func_start AffineAnimCmd_end -@ void AffineAnimCmd_end(u8 index, struct obj *object) -AffineAnimCmd_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, =sAffineAnimStates - lsls r1, r0, 1 - adds r1, r0 - lsls r1, 2 - adds r1, r2 - ldrb r2, [r1, 0x1] - subs r2, 0x1 - strb r2, [r1, 0x1] - mov r1, sp - bl ApplyAffineAnimFrameRelativeAndUpdateMatrix - add sp, 0x8 - pop {r0} - bx r0 - .pool - thumb_func_end AffineAnimCmd_end - - thumb_func_start AffineAnimCmd_frame -@ void AffineAnimCmd_frame(u8 index, struct obj *object) -AffineAnimCmd_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 GetAffineAnimFrame - adds r0, r4, 0 - mov r1, sp - bl ApplyAffineAnimFrame - ldr r1, =sAffineAnimStates - 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 AffineAnimCmd_frame - - thumb_func_start CopyOamMatrix -@ void CopyOamMatrix(u8 rotscale_entry_index, s16 rotscale_data[]) -CopyOamMatrix: @ 8007DD8 - lsls r0, 24 - ldr r2, =gOamMatrices - 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 CopyOamMatrix - - thumb_func_start GetSpriteMatrixNum -@ int GetSpriteMatrixNum(struct obj *obj) -GetSpriteMatrixNum: @ 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 GetSpriteMatrixNum - - 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, =gOamMatrices - 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, =gOamMatrices - 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 SetSpriteOamFlipBits -@ void SetSpriteOamFlipBits(struct obj *obj, u8 a2, char a3) -SetSpriteOamFlipBits: @ 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 SetSpriteOamFlipBits - - thumb_func_start AffineAnimStateRestartAnim -@ void AffineAnimStateRestartAnim(u8 index) -AffineAnimStateRestartAnim: @ 8007F64 - lsls r0, 24 - lsrs r0, 24 - ldr r2, =sAffineAnimStates - 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 AffineAnimStateRestartAnim - - 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, =sAffineAnimStates - 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, =sAffineAnimStates - 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, =sAffineAnimStates - 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 DecrementAnimDelayCounter -DecrementAnimDelayCounter: @ 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 DecrementAnimDelayCounter - - thumb_func_start DecrementAffineAnimDelayCounter -@ u8 DecrementAffineAnimDelayCounter(struct obj *object, u8 index) -DecrementAffineAnimDelayCounter: @ 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, =sAffineAnimStates - 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 DecrementAffineAnimDelayCounter - - thumb_func_start ApplyAffineAnimFrameRelativeAndUpdateMatrix -@ void ApplyAffineAnimFrameRelativeAndUpdateMatrix(u8 index, int a2) -ApplyAffineAnimFrameRelativeAndUpdateMatrix: @ 800804C - push {r4-r6,lr} - sub sp, 0x10 - adds r5, r0, 0 - lsls r5, 24 - lsrs r5, 24 - ldr r0, =sAffineAnimStates - 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 CopyOamMatrix - add sp, 0x10 - pop {r4-r6} - pop {r0} - bx r0 - .pool - thumb_func_end ApplyAffineAnimFrameRelativeAndUpdateMatrix - - 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 GetAffineAnimFrame -@ void GetAffineAnimFrame(u8 index, struct obj *obj, rotscale_frame *a3) -GetAffineAnimFrame: @ 80080FC - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r3, =sAffineAnimStates - 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 GetAffineAnimFrame - - thumb_func_start ApplyAffineAnimFrame -ApplyAffineAnimFrame: @ 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 ApplyAffineAnimFrameRelativeAndUpdateMatrix - b _0800819E -_0800818E: - adds r0, r4, 0 - adds r1, r2, 0 - bl rotscale_frame_apply_absolute - adds r0, r4, 0 - mov r1, sp - bl ApplyAffineAnimFrameRelativeAndUpdateMatrix -_0800819E: - add sp, 0x8 - pop {r4} - pop {r0} - bx r0 - thumb_func_end ApplyAffineAnimFrame - - 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 ContinueAnim - 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 GetSpriteMatrixNum - 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 GetSpriteMatrixNum - lsls r0, 24 - lsrs r0, 24 - ldr r2, =sAffineAnimStates - 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 GetSpriteMatrixNum - lsls r0, 24 - lsrs r0, 24 - ldr r2, =sAffineAnimStates - 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 GetSpriteMatrixNum - lsls r0, 24 - lsrs r0, 24 - ldr r2, =sAffineAnimStates - 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 SetSpriteSheetFrameTileNum -SetSpriteSheetFrameTileNum: @ 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 SetSpriteSheetFrameTileNum - - thumb_func_start ResetAffineAnimData -@ void ResetAffineAnimData() -ResetAffineAnimData: @ 800837C - push {r4,lr} - ldr r1, =gAffineAnimsDisabled - movs r0, 0 - strb r0, [r1] - ldr r1, =gUnknown_03003018 - movs r0, 0 - str r0, [r1] - bl ResetOamMatrices - 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 ResetAffineAnimData - - 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, =gUnknown_03003018 - 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 FreeOamMatrix -@ void FreeOamMatrix(u8 rotscale_index) -FreeOamMatrix: @ 80083E8 - push {lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r2, r0, 24 - movs r0, 0 - movs r1, 0x1 - ldr r3, =gUnknown_03003018 - 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 SetOamMatrix - add sp, 0x4 - pop {r0} - bx r0 - .pool - thumb_func_end FreeOamMatrix - - thumb_func_start InitSpriteAffineAnim -@ void InitSpriteAffineAnim(struct obj *obj) -InitSpriteAffineAnim: @ 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 CalcCenterToCornerVec - movs r0, 0x1F - adds r1, r5, 0 - ands r1, r0 - lsls r1, 1 - ldrb r2, [r4, 0x3] - movs r0, 0x3F - negs r0, r0 - ands r0, r2 - orrs r0, r1 - strb r0, [r4, 0x3] - adds r2, r4, 0 - adds r2, 0x3F - ldrb r0, [r2] - movs r1, 0x8 - orrs r0, r1 - strb r0, [r2] - adds r0, r5, 0 - bl rotscale_reset_full_2 -_08008470: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end InitSpriteAffineAnim - - 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 CopyOamMatrix - 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 AllocSpriteTiles - 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 CreateSpriteAtTileRange - 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 FreeSpriteTilesByTag @ void FreeSpriteTilesByTag(u16 tag) FreeSpriteTilesByTag: @ 8008568 @@ -1521,9 +191,9 @@ _080086B8: .pool thumb_func_end GetTagByObjectTileRangeStart - thumb_func_start CreateSpriteAtTileRange -@ void CreateSpriteAtTileRange(u16 tag, u16 start, u16 count) -CreateSpriteAtTileRange: @ 80086C4 + thumb_func_start AllocSpriteTileRange +@ void AllocSpriteTileRange(u16 tag, u16 start, u16 count) +AllocSpriteTileRange: @ 80086C4 push {r4-r6,lr} adds r4, r0, 0 adds r5, r1, 0 @@ -1553,7 +223,7 @@ CreateSpriteAtTileRange: @ 80086C4 pop {r0} bx r0 .pool - thumb_func_end CreateSpriteAtTileRange + thumb_func_end AllocSpriteTileRange thumb_func_start ResetObjectPaletteAllocator @ void ResetObjectPaletteAllocator() |