Now a little polish for Sams dark powers, they were a tad too dark to see
Realistic colors are one thing, but if it hampers the gameplay they have to go. So dark powers are now white.
And animated.
Core routine is this, it redraws every char of the beam with one of four random characters:
;redraw force beam (randomly)
!zone RedrawForceBeam
RedrawForceBeam
ldy SAM_FORCE_START_Y
lda SCREEN_LINE_OFFSET_TABLE_LO,y
sta ZEROPAGE_POINTER_1
lda SCREEN_LINE_OFFSET_TABLE_HI,y
sta ZEROPAGE_POINTER_1 + 1
lda SAM_FORCE_LENGTH
sta PARAM1
ldy SAM_FORCE_START_X
-
jsr GenerateRandomNumber
and #$03clcadc #252
sta (ZEROPAGE_POINTER_1),y
iny
dec PARAM1
bne -
rts
Most of the other changes include a call to the routine above, some are fixes for crashes that were introduces.
For one, when removing the beam item images could be clipped, a simple call to
jsr RedrawItems
fixes that.
And a little change to gameplay, if Sam moves (falls/jumps) while holding an enemy and moves too far, he loses grip on the enemy.
This is done via a little comparison between the beam start Y pos and the players pos. Too far, and the enemy is released.
;release beam when moving
lda SAM_FORCE_START_Y
clc
adc #1
cmp SPRITE_CHAR_POS_Y,x
bne .SamNotFirePushed
;Sam needs to keep pressed
jsr RedrawForceBeam
Have fun!
step71.zip
Previous Step Next Step