;--------------------------------------- ;SEUCK SCHOOL ; ;Timed shield protection and fairer ;game play. (1 Player only). ;SEUCK games tend to start where the ;player gets stuck in the background ;while respawning. This tip fixes this ;trick for deadly background or ;stoppable background. ;There's also a shield collectible ;in ROCKET 'N ROLL, which is object 22 ;(Actual Enemy #1) ;Installation code ;--------------------------------------- *= $7000 ;SYS28672 to run! lda #$20 ;JSR ldx #killcheck sta $55c3 ;Override old stx $55c4 ;kill score sty $55c5 ;code lda #$4c ;JMP ;New game code ldx #gameinit ;game. sta $41a4 stx $41a5 sty $41a6 lda #$20 ;JSR ;New respawn ldx #respawn ;init shield. sta $4b6c ;for player 1 stx $4b6d sty $4b6e ;Plug enhancements loop to ;original sfx player call ;subroutine. lda #$20 ldx #enhancecode sta $4503 stx $4504 sty $4505 jmp $4245 ;Run SEUCK title ;--------------------------------------- ;Initialise game gameinit jsr initshield jmp $4260 ;Run game respawn sta $5db7 jsr initshield rts ;Shield reset for player 1 every time ;a collectible is picked up, player ;respawned after a life is lost or ;every new game start initshield lda #255 ;Shield time :) sta shieldtimer lda #255 ;Collision char sta $40ac;P1 Sprite/Char lda #0 sta p1flashdelay sta p1flashpointer ;Make player 1 invincible ;to enemies lda #$ea sta $4b03 sta $4b04 sta $4b05 rts ;Object killed detection for activating ;the shield (if hit). killcheck sta $5dbb lda $bc00,y ;SEUCK object sta objectkilled lda objectkilled cmp #22 ;Actual enemy #1 / ;object 22 bne notshield jsr initshield notshield lda $bd06,y ;Scoring code rts ;Main shield code testshieldp1 lda shieldtimer cmp #0 bne shieldnotout ;Shield is out ;Restore all collision ;with sprites and set ;background colour lda #146 ;Collision with char sta $40ac lda #$0a ;Colour sta $2c93;Player 1 lda #$ad sta $4b03 lda #$bd sta $4b04 lda #$5d sta $4b05 rts ;Player shield isn't out, so decrement ;a single value from the shield timer ;and perform a delay on the flashing ;subroutine. shieldnotout dec shieldtimer lda p1flashdelay cmp #2 beq p1timedflash inc p1flashdelay rts ;Reset flashdelay and perform flashing ;shield on player sprite p1timedflash lda #$00 sta p1flashdelay ldx p1flashpointer lda p1shieldcolour,x sta $2c93 ;P1 colour inx cpx #8 beq resetflashp1 inc p1flashpointer rts ;Reset flash pointer resetflashp1 ldx #$00 stx p1flashpointer rts ;Seuck enhancement loop code enhancecode jsr testshieldp1 jsr $5c94 ;SFX SEUCK rts shieldtimer .byte 0 p1flashdelay .byte 0 p1flashpointer .byte 0 objectkilled .byte 0 ;Important, you may need to adjust ;the frame type + colour to the ;player, to get correct animation. ; ;.byte $XY - Where: ; ;X=ANIM TYPE, Y = ANIM COLOUR p1shieldcolour .byte $02,$0a,$07,$01 .byte $07,$0a,$02,$09