;;; Arachnus_TurningAround ;;;
0802464C (T) push r14
0802464E (T) ldr r1,=EnemyOrientation ;\
08024650 (T) mov r0,r1 ;|
08024652 (T) add r0,2Fh ;} r3 = EnemyAttachedEnemySlot
08024654 (T) ldrb r3,[r0] ;/
08024656 (T) ldrb r0,[r1,1Ch] ;\
08024658 (T) cmp r0,4h ;|
0802465A (T) bne 80246A2h ;|
0802465C (T) ldrh r0,[r1,16h] ;} If EnemyAnimationCounter==4 && EnemyAnimation==2:
0802465E (T) cmp r0,2h ;|
08024660 (T) bne 80246A2h ;/
08024662 (T) ldrh r0,[r1] ;\
08024664 (T) mov r2,40h ;|
08024666 (T) eor r0,r2 ;} EnemyOrientation ^= 40h (facing right)
08024668 (T) strh r0,[r1] ;/
0802466A (T) ldr r1,=EnemySlot0 ;\
0802466C (T) lsl r0,r3,3h ;|
0802466E (T) sub r0,r0,r3 ;|
08024670 (T) lsl r0,r0,3h ;|
08024672 (T) add r3,r0,r1 ;} Enemy[EnemyAttachedEnemySlot]Orientation ^= 40h
08024674 (T) ldrh r0,[r3] ;|
08024676 (T) eor r0,r2 ;|
08024678 (T) strh r0,[r3] ;/
0802467A (T) mov r1,40h ;\
0802467C (T) and r0,r1 ;|
0802467E (T) lsl r0,r0,10h ;|
08024680 (T) lsr r0,r0,10h ;} If Enemy[EnemyAttachedEnemySlot]Orientation has 40h:
08024682 (T) cmp r0,0h ;|
08024684 (T) beq 802469Ch ;/
08024686 (T) ldr r0,=0FFB0h ;\
08024688 (T) strh r0,[r3,0Eh] ;} Enemy[EnemyAttachedEnemySlot]LeftBoundry = -50h
0802468A (T) mov r0,0h ;\
0802468C (T) b 80246A0h ;} Enemy[EnemyAttachedEnemySlot]RightRoundry = 00h
0802468E dw 00000h
08024690 dd 0030006BCh,003000140h,00000FFB0h
0802469C (T) strh r0,[r3,0Eh] ; Else (Enemy[EnemyAttachedEnemySlot]Orientation hasn't 40h): Enemy[EnemyAttachedEnemySlot]LeftBoundryOffset = 00h
0802469E (T) mov r0,50h ;\
;} Enemy[EnemyAttachedEnemySlot]RightBoundryOffset = 50h
080246A0 (T) strh r0,[r3,10h] ;/
080246A2 (T) bl 801196Ch ; Execute subroutine Enemy_CheckAnimationLoopNextFrame
080246A6 (T) cmp r0,0h ;\
080246A8 (T) beq 80246B2h ;} If not returned 0 (no more animation):
080246AA (T) ldr r0,=EnemyOrientation ;\
080246AC (T) add r0,24h ;|
080246AE (T) mov r1,1h ;} EnemyPose = 1 (thinking)
080246B0 (T) strb r1,[r0] ;/
080246B2 (T) pop r0
080246B4 (T) bx r0
080246B6 dw 00000h
080246B8 dd 0030006BCh