How about using tables for you enemy object movement logic,I'm using the stack but you can use temp variables to save the values(NmeXVelocity,NmeYVelocity,NmeMovementPatternTimer) also the tables are integer values(you can add fixed point values like Oziphantom showed you) if you can't understand or have trouble implementing my example private message me and we can modify code that suits your game needs.Best of luck which ever way you decide."Off topic" sdm you have unconventional ways of solving problems and you manage to solve them each time,it's neat to see.
Code:
;-------------------------------------------------------
Do_BuildNmeLogicPointer:
ldy #NmeObjLogicOffset
lda (_NMEArray),Y
sta _NmeLogicPointer+0
iny
lda (_NMEArray),Y
sta _NmeLogicPointer+1
rts
;-------------------------------------------------------
Do_NMEMovementTimers:
sec
sbc #1
sta (_NMEArray),y
rts
;-------------------------------------------------------
Do_BuildNMEMovementPattern:
ldy #NmeMovementPatternTimerOffset
lda (_NMEArray),Y
bne Do_NMEMovementTimers
jsr Do_BuildNmeLogicPointer
ldy #MovementPatternTableOffset
lda (_NMEArray),Y
tay
lda (_NmeLogicPointer),Y
iny
pha ;Push NmeXVelocity to stack
lda (_NmeLogicPointer),Y
pha ;Push NmeYVelocity to stack
iny
lda (_NmeLogicPointer),Y
bpl +
and #%01111111
ldy #$FF
+:
iny
pha ;Push NmeMovementPatternTimer to stack
tya
ldy #NMEMovementPatternTableOffset
sta (_NMEArray),Y
pla ;Pull NmeMovementPatternTimer from stack
ldy #NmeMovementPatternTimerOffset
sta (_NMEArray),Y ;Save NmeMovementPatternTimer in EnemyArray
pla ;Pull NmeYVelocity from stack
ldy #NmeYVelocityOffset
sta (_NMEArray),Y ;Save NmeYVelocity in EnemyArray
pla ;Pull NmeXVelocity from stack
ldy #NmeXVelocityOffset
sta (_NMEArray),Y ;Save NmeXVelocity in EnemyArray
rts
;==================================================
;Data Format
;Byte 0 = NmeXVelocity
;Byte 1 = NmeYVelocity
;Byte 2 = NmeMovementPatternTimer
;==================================================
Enemy1PatternLogicTable:
.db $FE,$02,$05
.db $FE,$02,$05
.db $FE,$FE,$05
.db $FE,$FE,$85
;-------------------------------------------------------
NME2PatternLogicTable:
.db $FE,$00,$0A
.db $FE,$03,$0A
.db $FE,$05,$0A
.db $FE,$09,$0A
.db $FE,$05,$0A
.db $FE,$03,$0A
.db $FE,$00,$0A
.db $FE,$FD,$0A
.db $FE,$FB,$0A
.db $FE,$F7,$0A
.db $FE,$FB,$0A
.db $FE,$FD,$8A