Realistic colors are one thing, but if it hampers the gameplay they have to go. So dark powers are now white.
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 #$03 clc adc #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
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
Previous Step Next Step