.include "cydheader.a64" *= game2 jmp player jmp bomb jmp gspace brk brk brk jmp stopshot jmp sshot jmp sbox jmp cshot jmp scroll jmp in18 jmp getplr ; jmp setscrn brk brk brk jmp initplr jmp gppos chsex = blok+$0900 setpos = game1+3 nexzeil = game1+6 irbut = game1+36 inbut = game1+96 pword = game1+99 adscore = game1+102 ssubstat = game3+3 subjinit = game3+12 ;-- modified -- added levmem = >map zs = $a3 rs = $f0 rs1 = rs+1 ss = zs+$2c m1 = $95 space = $a2 pill = $d4 shoot = $f8 levj = $f6 frage = $00 suppe = $d1 toedl = $cb bcr = $a2 dx = 2 dy = 8 obj = $ef soust = sound+3 fx = sound+6 loscr .byte <$c000-sb,<$c028-sb .byte <$c050-sb loss .byte <$c078-sb .byte <$c0a0-sb,<$c0c8-sb .byte <$c0f0-sb,<$c118-sb .byte <$c140-sb,<$c168-sb .byte <$c190-sb,<$c1b8-sb .byte <$c1e0-sb,<$c208-sb .byte <$c230-sb,<$c258-sb .byte <$c280-sb,<$c2a8-sb .byte <$c2d0-sb,<$c2f8-sb .byte <$c320-sb,<$c348-sb .byte <$c370-sb,<$c398-sb .byte <$c3c0-sb,<$c3e8-sb .byte <$c410-sb,<$c438-sb hiscr .byte >$c000-sb,>$c028-sb .byte >$c050-sb hiss .byte >$c078-sb .byte >$c0a0-sb,>$c0c8-sb .byte >$c0f0-sb,>$c118-sb .byte >$c140-sb,>$c168-sb .byte >$c190-sb,>$c1b8-sb .byte >$c1e0-sb,>$c208-sb .byte >$c230-sb,>$c258-sb .byte >$c280-sb,>$c2a8-sb .byte >$c2d0-sb,>$c2f8-sb .byte >$c320-sb,>$c348-sb .byte >$c370-sb,>$c398-sb .byte >$c3c0-sb,>$c3e8-sb .byte >$c410-sb,>$c438-sb flowp .byte 0,$ff,$0100-40,$0100-41 flowp2 .byte 1,1,0,0 ;oldz .byte 0,0,0,0,0,0,0,0 ;oldf .byte 0,0,0,0,0,0,0,0 ;sebne .byte $30,$30,$30,$32,$32 ; .byte $34,$34,$34 ;sebne2 .byte $43,$43,$43,$45,$45 ; .byte $47,$47,$47 ;sxpos .byte 0,1,2,0,2,0,1,2 seq .byte 0,4,5,6,7,8,0,0 .byte 0,0,0,0,0,0,0,0 blim .byte >blok,>blok+$0100 .byte >blok+$0200 blim2 .byte $c9,$c0,$c0 byc .byte $65,$75,$85,$95,$a5,$b5 .byte $c5,$d5,$e5 ;guns .byte 4,3,1,6,2,0,7,5,0 ; .byte 3,4,1,6,0,2,5,7 jumpg .byte $fc,$fc .byte $fd .byte $fe,$fe .byte $ff,$ff,$ff .byte 0,0,0 .byte 1,1,1 .byte 2,2 .byte 3 .byte 4,4,4,4,4,4,4,4,4 .byte 4,4,4,4,4 ;.byte 0,$fd,$fe,$fe ;.byte $fe,$ff,$ff,$ff,$ff .byte 0,$fe,$fe,$ff,$ff,$ff,$ff .byte 0,0 .byte 0 jumpp .byte 0,2,0,0,0,2,0,0 .byte 0,0,0 .byte 0,0,5,0,0,0,5,5,5,5 .byte 5,5,5,5,5,5,5,5,5,0 .byte 0,0,2,0,0,0,0,2,0 .byte 0 pcmem .byte sp2+1,sp2+2 .byte sp2+41,sp2+42 btmem .byte 0,0,0,0,0,0,0,0 .byte 0,0,0,0,0,0,0,0 .byte 0,0,0,0,0,0 boxp .byte 80,80 gegn .byte 4,5,6 shtt .byte $f8,$fb,$f9,$fa,$fa .byte $f9,$fb,$f8 sht1 .byte 7,2,4,1,1,1,1 sht2 .byte 0,5,3,6,6,6,6 scp1 .byte $c8,$88,$c8,$c8 .byte $88,$c8,$c8,$88 scp2 .byte $e8,$ca,$e8,$e8 .byte $ca,$e8,$e8,$ca scp3 .byte 79,39,79,79,39,39,39,$ff scp4 .byte 40,78,0,0,38,40,40,78 scp5 .byte 41,77,40,41,77,0,1,37 scp6 .byte $88+$00,$88+$00 .byte $8e+$00,$8e+$00 .byte $8e+$00,$8e+$00 .byte $8e+$00,$8e+$00 scp7 .byte $01,$ff,$00,$01 .byte $ff,$00,$01,$ff scp8 .byte $00,$00,$01,$01 .byte $01,$ff,$ff,$ff scp10 .byte 0,0,$d800+sp+(18*40) .byte >$d800+sp+(18*40) .byte >$d800+sp+(18*40) .byte >sp+$d800,>sp+$d800 .byte >sp+$d800 scp13 .byte 38,0,$ff,38,0,$ff,38,0 scp14 .byte 0,0,0,1,1,0,0,0 scp15 .byte 0,0,0,0,0,0,1,1 scp16 .byte 0,0,0,1,0,0,1,0 scp17 .byte 0,0,0,0,1,0,0,1 scp18 .byte $ff,1,$d8,$d7,$d9,$28 .byte $27,$29 scp19 .byte $ff,0,$ff,$ff,$ff .byte $00,$00,$00 mom1 .byte 0 col #rcol2 "01" sec sbc $07 lsr a lsr a lsr a sta $2c txa sec sbc #6*8 ;sbc #sczeil8-8 lsr a lsr a lsr a sta $2d tax clc lda loscr,x adc $2c sta $1d sta $0c lda hiscr,x ora $2f adc #0 sta $1e and #$03 ora #$d8 sta $0d #rcol2 "04" rts cup sta $57 ldy #sp2+1 ;+0! lda ($1d),y tax lda chsex,x beq k1 iny lda ($1d),y tax lda chsex,x beq k1 lda $57 sec rts cup2 lda ($1d),y tax lda chsex,x beq k1 lda $57 sec rts k1b sec lda #7 sbc $07 sta dbit lda #7 sta $07 clc rts k1 lda $57 ora #$07 clc rts cleft sta $57 ldy #sp2-0 clft2 lda ($1d),y tax lda chsex,x beq k1b ldy #sp2+40-0 lda ($1d),y tax lda chsex,x beq k1b ldy #sp2+80-0 lda ($1d),y tax lda chsex,x beq k1b lda $57 sec rts cleft2 sta $57 ldy #sp2+120 jmp clft2 cdown sta $57 ; cmp #$aa+sczeil8 ; bcs cd2 ldy #sp2+121 ;+120 lda ($1d),y tax lda chsex,x beq k2 iny lda ($1d),y tax lda chsex,x beq k2 cd2 lda $57 sec rts cdown2 lda ($1d),y tax lda chsex,x beq k2 lda $57 sec rts k2b sec lda #3 sbc $07 sta dbit lda #3 sta $07 clc rts k2 lda $57 and #$f8 clc rts cright sta $57 ldy #sp2+3 crgt2 lda ($1d),y tax lda chsex,x beq k2b ldy #sp2+43 lda ($1d),y tax lda chsex,x beq k2b ldy #sp2+83 lda ($1d),y tax lda chsex,x beq k2b lda $57 sec rts cright2 sta $57 ldy #sp2+123 jmp crgt2 gppos sta $ac clc lda $ab adc #5 sta $ab lda $aa adc #6 sta $aa lda #$00 sta $ad d2 jsr gxp jsr gblkl jsr gyp jsr gblkl2 jsr gxm jsr gblkl jsr gym jsr gblkl2 lda $ad bpl d2 rts gxm lda #$fe bne d8 gxp lda #2 d8 ldx #0 d5 sta $a8 stx $a9 rts gym ldx #$ff lda #0 beq d5 gyp ldx #1 lda #0 beq d5 gblkl inc $ad gblkl2 ldx $ad d9 jsr gblk clc lda $aa adc $a8 sta $aa clc lda $ab adc $a9 sta $ab dex bne d9 rts gblk lda $ab cmp #>map bcc d7 cmp #>map+$2000 bcs d7 ldy #1 d4 lda ($aa),y cmp $ac beq d6 dey bpl d4 d7 rts d6 tya clc adc $aa sec sbc #6 sta $aa sec lda $ab sbc #5 sta $ab pla pla pla pla rts plrdata .byte 0,0,0,0,0,0,0,0 .byte 0,0,0,0,0,0,0,0 .byte 0,0,0,0,0,0,0,0 .byte 0,0,0,0,0,0,0,0 initplr ;PLAYER-INIT .block asl a asl a asl a asl a sta $14 tax ldy #15 ;loeschen lda #0 n1 sta plrdata,x inx dey bpl n1 ldx $14 ;lives lda #3 sta plrdata+5,x ;shots ;--- modified --- lda #0 ;(added) sta plrdata,x lda #start_world-1 ;world sta plrdata+7,x sta plrdata+8,x rts .bend getplr ;GET-PLRDAT asl a asl a asl a asl a tax lda plrdata+7,x ;world sta $10 lda plrdata+8,x sta $22 lda plrdata+9,x ;score sta $e0 lda plrdata+10,x sta $e1 lda plrdata+11,x sta $e2 lda plrdata+12,x ;credits sta $5e lda plrdata+13,x sta $5f p81 lda plrdata,x ;extras sta $60,x inx txa and #$0f cmp #7 bcc p81 p80 rts savplr ;SAVE-PLRDAT asl a asl a asl a asl a tax lda $10 ;world sta plrdata+7,x lda $22 sta plrdata+8,x lda $e0 ;score sta plrdata+9,x lda $e1 sta plrdata+10,x lda $e2 sta plrdata+11,x lda $5e ;credits sta plrdata+12,x lda $5f sta plrdata+13,x rts player #rcol2 "04" lda $40 bne p80 ; lda $14 ; sta yscs+2 ; lda $a7 ; bne p80 ; ldx #$92 ; jsr saco p26 lda #0 sta allr10+1 sta dbit ldx $14 lda $13 jsr col lda $1d clc adc #$28 sta $b2 lda $1e adc #0 sta $b3 lda $19 sta analy+1 lda $dc00 and #$0f eor #$0f beq p9 ldx $95 bne p26b lsr a bne p26b p9 lda #$05 sta $15 bne p11 p26b inc $18 lda $18 and #$01 sta $18 bne p11 inc $15 lda $15 and #$03 sta $15 p11 lda $19 lsr a ldx #12 bcc p12 lda #$04 sta $15 lda $17 beq p12 inx inx p12 stx $4c lda $14 sec sbc $17 jsr cup lda #0 rol a sta $97 lda $dc00 ; ora $b1 lsr a lda #4 sta $6a bcc p1c lda #0 sta $9a lda $16 bne p4z jsr pldow p4z lda #$ff sta $95 lda $19 lsr a bcs p28 lda #1 sta $6c lda #1 sta $6b jmp p25 p1c lda #0 ;flybreak ; asl a ; asl a ; asl a sta $9a lda $17 bne p25b lda #2 sta $6a p25b lsr $19 bcs p28 lda $95 bmi p25d ldy #27 lda $ad ;#38 bmi p8y ldy #1 p8y sty $6b jmp p25 p25d inc $95 lda #1 sta $96 sta $6c ;jsr fx ;--- modified --- weg p28 lda $14 sec sbc $17 sta $14 p28b jsr cup bcs p25 lda $17 ;plr don't pull bmi p25 ;up lda $6c beq p25 dec $6c lda $6b cmp #17 beq p8u lda #17 sec sbc $6b bpl p8h p8u lda #2 p8h sta mom1 lda #40 ;#39 sta $6b dec $96 p25 lda $14 cmp #$ac+sczeil8 + 16 ; --- modified --- + 16 (spieler fällt unten aus dem rand? dann leben weg) bcc p4b inc $40 p4b sec ldx $96 bne p4c ldy yscs bne op1 ldy $17 ;cdown zulassen? bpl op1 cpy #$fe bcs p6 op1 jsr cdown p4c sta $14 bcs p6 lda #30 sta $6b lda $12 sta allr10+1 lda #0 sta $12 p6 rol $19 ; lda #9 ; ora $9a ; tay ldy $6b bpl p6h ldy #1 sty $6b p6h cpy #10 bcs p6g ldx #0 stx $96 p6g cpy #31 bne p6k ldy #0 sty $6b p6k lda jumpg,y sta $17 dec $6b cpy #40 ;#39 bne n8y lda mom1 sta $6b n8y lda $14 sec sbc #$68+sczeil8 xi22 sta $ad lda $2d ;plr-hoehe fuer pha ;schuss retten lda $14 pha ; lda $7c ;x-coord coll? ; rol a ; rol a ; and #1 ; sta $d020 ; beq op3 lda yscs beq op5b lda $14 and #$fc sta $14 op5b lda $12 cmp #5 beq op5 lda $97 bne op4 lda $96 and #1 beq op5 op4 ; jsr ygway ; beq op5 ; cmp #3 ; beq op3 ; bne op5 ;op3 ldx #$68 ;op3b lda $13 ; jsr col ; jmp op5 ;op3c clc lda $14 adc #7 tax lda $13 jsr col op5 pla sta $14 pla sta $2d ;XY-player lda $dc00 lsr a lsr a lsr a sta $0b lda #$ff ;init scroll- sta $7c ;konflikt-byte lda $13 bcs p3 cmp #$22 bcs p18z ldx $26 beq p3 sec p18z sbc $6d bcs p18 ldy #0 sty $26 p18 ldx $97 bne p18b jsr cleft2 jmp p18c p18b jsr cleft p18c bcc xi1 sta $13 xi1 ror $7c lda #6 sta $1a p3 lsr $0b bcs p4 cmp #$38 bcc p3b ldx $26 bne p4 clc p3b adc $6d bcc p19 ldy #7 sty $26 p19 ldx $97 bne p19b jsr cright2 jmp p19c p19b jsr cright p19c bcc xi2 sta $13 xi2 ror $7c lda #$00 sta $1a p4 ldx $b1 lda $19 lsr a bcc p4v ldx #0 p4v lda $13 sec sbc #$a8 ;and $21 sta $06 bne p4u tax p4u stx $b1 lda #$0c sta $29 lda #0 ldx $6b cpx #39 bcs p4t cpx #11 bcc p4s clc bcc p4t p4s sec p4t rol $16 p10e lda #0 sta $e9 ldx #3 stx $27 p100 ldx $27 ldy pcmem,x lda ($1d),y cmp #3 bcc box tax lda chsex,x asl a tax lda chsj,x sta p101+1 lda chsj+1,x sta p101+2 p101 jmp $f000 p102 dec $27 bpl p100 jsr inbut jmp p24 chsj .word p102,p102,ahh .word telep .word takep,takep,takep,takep .word depst,p102,priori priori lda #$07 sta $e9 jmp p102 telep .block jsr irbut bne n1 lda #3 sta $40 lda #0 ;uh jsr tbpos sta $e8 n1 jmp p24 .bend box cpx #2 bcc p176 jmp p10e ;p40v p176 sta $8d tya sec sbc $8d sbc boxp,x clc adc $1d ldx $8c sta $86,x lda $1e adc #$00 sta $87,x lda #14 sta $88,x jsr fnscp txa ; ldx #1 eor #$03 sta $8c ; bne p40u ; dex ;p40u stx $7f ldy $9b dey bpl p71 ldy #2 p71 sty $9b ldx gegn,y ldy #$20 ; jsr ssb ;hell lda #0 ;uh jsr tbpos adc #1 sta ($48),y lda #credits_per_box ;--- modified --- addiere credits für box jsr adcred lda #$10 jsr adscore jmp p24 depst jsr irbut bne p175 lda #2 sta $40 p175 jmp p24 ahh inc $40 jmp p24 nlevl ; inc $42 rts gnscp ldx osc clc lda $1d adc scp18,x sta $46 lda $1e eor #$04 adc scp19,x sta $47 nix11 rts takep .block txa lsr a tax clc tya adc flowp-4,x sta allr ldy flowp2-4,x jsr gnscp tya jsr tbpos tax ;;clc ;-- modified--- adc #1 sta ($48),y ldy blok,x inx lda chsex,y ldy allr clc and #$04 bne n0 lda blok+$0100,x sta ($1d),y sta ($46),y lda blok+$0700,x sta ($0c),y sta allr iny lda blok+$0200,x sta ($1d),y sta ($46),y lda blok+$0800,x sta ($0c),y pha tya adc #39 tay lda blok+$0400,x sta ($1d),y sta ($46),y lda allr lsr a lsr a lsr a lsr a sta ($0c),y iny lda blok+$0500,x sta ($1d),y sta ($46),y pla lsr a lsr a lsr a lsr a sta ($0c),y jmp acr1 n0 lda blok+$00,x sta ($1d),y sta ($46),y lda blok+$0600,x sta ($0c),y sta allr iny lda blok+$0100,x sta ($1d),y sta ($46),y lda blok+$0700,x sta ($0c),y pha tya adc #39 tay lda blok+$0300,x sta ($1d),y sta ($46),y lda allr lsr a lsr a lsr a lsr a sta ($0c),y iny lda blok+$0400,x sta ($1d),y sta ($46),y pla lsr a lsr a lsr a lsr a sta ($0c),y acr1 ;lda #2 ;jsr fx ;--- modified --- weg lda #credits_per_diamond ;--- modified --- addiere credits für diamond jsr adcred p22b ; inc $50 lda #3 jsr adscore ;jmp p24 rts allr .byte 0 .bend p24 ; lda $2c ; sta $98 ; lda $2d ; sta $99 rts setfz2 tya adc #38 tay setfz lda #$08 sta ($0c),y iny sta ($0c),y iny sta ($0c),y rts ;sbox #rcol "05" lda #0 sta $7f #rcol "00" rts ;lbox sta $71 lsr a lsr a lsr a tax ldy #0 sec lda $89,x sbc $7f sta $89,x sta $1d lda $8c,x sbc #0 and #$fb ora $2f sta $1e sta $8c,x ; jsr scadd lda $86,x bmi p41 dec $86,x tax and #$03 bne p41 txa lsr a lsr a tax beq p44 dex beq p43 dex beq p42 p43 lda #$57 jsr setz3 lda #$5a jsr setz3 lda #$5d jmp setz3 p42 lda #$60 jsr setz3 lda #$5a jsr setz3 lda #$63 jmp setz3 p44 lda #2 ldx $71 sta $71 p44b lda btmem,x sta ($0e),y sta ($1d),y lda btmem+3,x sta ($0c),y iny inx dec $71 bpl p44b ldy #40 lda #$51 jsr setz3 lda #$54 setz3 ldx #2 clc nsz1 sta ($0e),y sta ($1d),y pha lda #8 sta ($0c),y pla iny adc #1 dex bpl nsz1 tya adc #37 tay p41 rts ;setz2 lda #space sta ($1d),y ; sta ($0e),y iny ; sta ($0e),y sta ($1d),y bxz5 rts ;saco ; stx saco1+1 ; stx saco2+1 ; stx saco3+1 ; stx saco4+1 ; inx ; stx saco5+1 ; stx saco6+1 ; stx saco7+1 ; stx saco8+1 ; rts sbox ldx #$86 jsr lbox ; lda $7f ; eor #$01 ; sta $7f ; beq lbox ldx #$89 lbox ldy $02,x dey bmi bxz5 sty $02,x ;jsr gnscp clc lda $00,x adc $c4 sta $c0 lda $01,x adc $c5 sta $c1 sec lda $c0 sbc osct1-$86,x sta $c0 lda $c1 sbc osct2-$86,x and #$fb ora $2f sta $c1 and #$03 cmp #$03 bne p202 p201 lda #0 sta $02,x lda $c1 eor #$7c sta $c1 clc jmp boxp3b p202 tya lsr a tay clc beq boxp3 dey beq boxp2 dey beq boxp4 dey beq boxp1 dey beq boxp4 dey beq boxp2 dey beq boxp3a ; lda $7f ; eor #1 ; sta $7f ; dey ; jmp boxp3a boxp1 lda #$51 jsr boxz lda #$54 ldy #40 jsr boxz ldy #80 jmp bosp boxp2 lda #$57 jsr boxz lda #$57+3 ldy #40 jsr boxz lda #$57+6 ldy #80 jmp boxz boxp4 lda #$57+9 jsr boxz lda #$57+3 ldy #40 jsr boxz lda #$57+12 ldy #80 jmp boxz boxp3a lda $c1 pha and #$03 ora #$d8 sta $c1 lda #8 jsr bosp2 ldy #40 jsr bosp2 ldy #80 jsr bosp2 ldy #0 pla sta $c1 boxp3 jsr bosp boxp3b ldy #40 lda #$51 jsr boxz ldy #80 lda #$54 boxz sta ($c0),y ; sta ($c2),y iny adc #1 sta ($c0),y ; sta ($c2),y iny adc #1 sta ($c0),y ; sta ($c2),y rts bosp lda #space sta ($c0),y ; sta ($c2),y iny sta ($c0),y ; sta ($c2),y iny sta ($c0),y ; sta ($c2),y rts bosp2 sta ($c0),y iny sta ($c0),y iny sta ($c0),y rts pldow lda $6c beq p25z pldow2 lda yscs bne p30w lda yscs beq op13 lda $14 and #4 bne p25z beq p30w op13 lda $12 cmp #4 bne p25z p30w lda #12 sta $6b dec $6c p25z rts adcred sed clc adc $5e sta $5e bcc ng25 inc $5f ng25 cld rts bomb sta $ae jsr gspace bcc xi12 ldx $66 beq xi12 dex stx $66 lda #13 sta $ae lda $a0 ora #$80 sta $a0 jsr subjinit ;-- modified -- neu: lösche alle gegener lda $ae rts ldx #9 xi11 lda #3 ; jsr snsu ;hell dex bpl xi11 xi12 lda $ae rts gspace ldx $8f lda $dc01 sta $8f cmp #239 bne xi15 cpx #239 beq xi15 sec rts xi15 clc rts ;scadd lda $1e ; and #$03 ora #$d8 sta $0d lda $1d sta $0c p10c rts osc .byte 0 osct1 .byte 0,0,0,0 osct2 .byte 0,0,0,0 osct3 .byte 0,0,0,0 osct4 .byte 0,0,0,0 scroll lda $6b sta yscs+1 jsr stop jsr spritc2 lda #0 sta allr10 jsr analy clc lda allr10 adc allr10+1 sta allr10 jsr spritc lda yscs+1 sta $6b rts allr10 .byte 0,0 yscs .byte 0,0,0 stop ldx #0 lda $ad bmi xi21 lda $ab cmp #levmem+$20-9 bcc xi21 lda $12 beq op6 ; sec ; lda $14 ; sbc #$60 ; eor #$ff ; clc ; adc #1 ; clc ; adc $12 sec lda $12 sbc $ad bpl op7 lda #0 op7 sta $12 op6 stx $ad inx xi21 stx yscs rts spritc2 lda $13 sec sbc $06 sta $13 lda yscs bne xi23 sec lda $14 sbc $ad sta $14 #rcol "00" xi23 rts dbit .byte 0 spritc #rcol3 "13" ldy #$ff sec lda $06 sbc dbit bpl n4b iny n4b eor #$ff clc adc #1 sta n3b+1 tya adc #0 sta n3c+1 lda allr10 eor #$ff tax inx stx n3d+1 ldx #zz-1 - 3 ;--- modified --- n3 ;(brauche nicht spieler sprites clc ;auch verschieben) lda sy,x beq n4 n3d adc #0 sta sy,x clc lda slox,x n3b adc #0 sta slox,x lda shix,x n3c adc #0 sta shix,x n4 dex bpl n3 originalsubjmov = 1 ; 1 = original-version .ifeq originalsubjmov lda #1 sta $df .endif .if originalsubjmov inc $df ;wohl counter für subject-main .endif #rcol3 "11" rts xgway ldy #1 sec lda $07 sbc $06 bmi n50b cmp #8 bcs n50 dey n50b dey n50 tya rts ygway ldx #6 sec lda $12 sbc $ad bmi n51b cmp #$08 bcs n51 ldx #0 txa rts n51b ldx #3 n51 txa rts moway sec lda $07 sbc $06 and #$07 sta $07 sec lda $12 sbc $ad and #$07 sta $12 lda $ad sta allr10 rts vgway ldx #$ff lda $06 beq nq1 bpl nq1b inx nq1b inx nq1 lda $ad beq nq2 bmi nq2b inx inx inx nq2 txa rts nq2b txa clc adc #6 tax rts vmoway ldy #$fe ; sec lda $06 ;wieder weg! beq nq5b ; lda $07 sbc $06 cmp #$08 bcs nq5 sta $07 nq5b iny sec nq5 lda $ad beq nq6b lda $12 sbc $ad cmp #$08 bcs nq6 sta $12 lda $ad sta allr10 nq6b iny nq6 tya and #$04 ; lsr a ; lsr a ; .ifeq w3 ; sta $d020 ; .endif beq nnqq3 lda #0 sta $06 ; lda #$01 ; sta au ;nnq5 lda au ; beq nnq5 nnqq3 rts analy lda #0 ;plr am boden? lsr a bcs no13 lda #0 sta $7b jsr xgway ;$06 'ueberlauf' bmi no13 lda #$00 ;sprung ignorieren sta $ad lda yscs beq op9 lda $14 and #4 beq op9 clc lda $14 adc #4 sta $14 op9 lda #29 sta yscs+1 sta $6b jmp nq13 no13 ldx $ac ;neue scroll- bmi nq13 ;richtung moeglich? cpx #2 ;nur x-coord. ? bcc nq13 lda $7c ;x-coord. coll? bmi op10 lda scp7,x ;y-scroll mit beq op10 ;x-scroll? lda $7b bne op10 inc $7b ldx #$ff stx $ac jmp nq13 op10 lda scp7,x ;x-richtung asl a ;isolieren, asl a ;scalieren sta $06 ;& setzen jmp n1m nq13 ldx #0 lda yscs bne op8 ldy $6b ;scroll-y-tab iny ;holen ldx jumpp,y op8 ;X lda $06 ;x-scrolling? bne nq14 txa bne nq15 lda $07 lsr a lsr a tax jmp chascte nq14 txa bne nq16 jsr xgway bmi nq17 tya tax jmp chasc nq16 inx nq17 ldy $06 bpl nq15 inx nq15 jmp chascte n1m jsr moway cpx #8 beq xi32 stx $ac jsr fasc ldx $ac lda #3 sta $b1 jsr lnpos2 ; ldx $ac ; cpx #8 ; bcs xi33 jsr line1 jsr linecop xi32 lda #$ff sta $ac rts chasc cpx $ac beq n1m chascte lda #$00 sta $b1 jsr vmoway lda yscs beq xi26 cpx #2 bcc xi26 xi27 inx inx inx cpx #8 bcc xi27 sbc #9 bpl xi26 lda #8 xi26 stx $ac jsr scp20 jsr chasc2 ldx $ac jsr lnpos jmp line2 chasc2 stx osc ldy scp4,x lda scp5,x tax lda $0a bne te20 jmp te21 n17 lda $c400+sq,x sta $c000+sq,y lda $c400+sq+(1*40),x sta $c000+sq+(1*40),y lda $c400+sq+(2*40),x sta $c000+sq+(2*40),y lda $c400+sq+(3*40),x sta $c000+sq+(3*40),y lda $c400+sq+(4*40),x sta $c000+sq+(4*40),y lda $c400+sq+(5*40),x sta $c000+sq+(5*40),y lda $c400+sq+(6*40),x sta $c000+sq+(6*40),y lda $c400+sq+(7*40),x sta $c000+sq+(7*40),y lda $c400+sq+(8*40),x sta $c000+sq+(8*40),y lda $c400+sq+(9*40),x sta $c000+sq+(9*40),y lda $c400+sq+(10*40),x sta $c000+sq+(10*40),y lda $c400+sq+(11*40),x sta $c000+sq+(11*40),y lda $c400+sq+(12*40),x sta $c000+sq+(12*40),y lda $c400+sq+(13*40),x sta $c000+sq+(13*40),y lda $c400+sq+(14*40),x sta $c000+sq+(14*40),y lda $c400+sq+(15*40),x sta $c000+sq+(15*40),y lda $c400+sq+(16*40),x sta $c000+sq+(16*40),y lda $c400+sq+(17*40),x sta $c000+sq+(17*40),y lda $c400+sq+(18*40),x sta $c000+sq+(18*40),y n4y iny inx te20 cpx #39 bne n17 rts cha2 lda $c000+sq,x sta $c400+sq,y lda $c000+sq+(1*40),x sta $c400+sq+(1*40),y lda $c000+sq+(2*40),x sta $c400+sq+(2*40),y lda $c000+sq+(3*40),x sta $c400+sq+(3*40),y lda $c000+sq+(4*40),x sta $c400+sq+(4*40),y lda $c000+sq+(5*40),x sta $c400+sq+(5*40),y lda $c000+sq+(6*40),x sta $c400+sq+(6*40),y lda $c000+sq+(7*40),x sta $c400+sq+(7*40),y lda $c000+sq+(8*40),x sta $c400+sq+(8*40),y lda $c000+sq+(9*40),x sta $c400+sq+(9*40),y lda $c000+sq+(10*40),x sta $c400+sq+(10*40),y lda $c000+sq+(11*40),x sta $c400+sq+(11*40),y lda $c000+sq+(12*40),x sta $c400+sq+(12*40),y lda $c000+sq+(13*40),x sta $c400+sq+(13*40),y lda $c000+sq+(14*40),x sta $c400+sq+(14*40),y lda $c000+sq+(15*40),x sta $c400+sq+(15*40),y lda $c000+sq+(16*40),x sta $c400+sq+(16*40),y lda $c000+sq+(17*40),x sta $c400+sq+(17*40),y lda $c000+sq+(18*40),x sta $c400+sq+(18*40),y n4x iny inx te21 cpx #40 bne cha2 rts fasc jsr in18 ldx $ac ldy scp4,x lda scp5,x cpx #8 bcs te22b cpx #5 bcc te22b jmp fasc4 te22b tax jmp te22 fasc2 lda $d800+sq,x sta $d800+sq,y lda $d800+sq+(1*40),x sta $d800+sq+(1*40),y lda $d800+sq+(2*40),x sta $d800+sq+(2*40),y lda $d800+sq+(3*40),x sta $d800+sq+(3*40),y lda $d800+sq+(4*40),x sta $d800+sq+(4*40),y lda $d800+sq+(5*40),x sta $d800+sq+(5*40),y lda $d800+sq+(6*40),x sta $d800+sq+(6*40),y lda $d800+sq+(7*40),x sta $d800+sq+(7*40),y lda $d800+sq+(8*40),x sta $d800+sq+(8*40),y lda $d800+sq+(9*40),x sta $d800+sq+(9*40),y lda $d800+sq+(10*40),x sta $d800+sq+(10*40),y lda $d800+sq+(11*40),x sta $d800+sq+(11*40),y lda $d800+sq+(12*40),x sta $d800+sq+(12*40),y lda $d800+sq+(13*40),x sta $d800+sq+(13*40),y lda $d800+sq+(14*40),x sta $d800+sq+(14*40),y lda $d800+sq+(15*40),x sta $d800+sq+(15*40),y lda $d800+sq+(16*40),x sta $d800+sq+(16*40),y lda $d800+sq+(17*40),x sta $d800+sq+(17*40),y lda $d800+sq+(18*40),x sta $d800+sq+(18*40),y n4z iny inx te22 cpx #39 bne fasc2 rts fasc4 tax fasc3 lda $d800+sq+(18*40),x sta $d800+sq+(18*40),y lda $d800+sq+(17*40),x sta $d800+sq+(17*40),y lda $d800+sq+(16*40),x sta $d800+sq+(16*40),y lda $d800+sq+(15*40),x sta $d800+sq+(15*40),y lda $d800+sq+(14*40),x sta $d800+sq+(14*40),y lda $d800+sq+(13*40),x sta $d800+sq+(13*40),y lda $d800+sq+(12*40),x sta $d800+sq+(12*40),y lda $d800+sq+(11*40),x sta $d800+sq+(11*40),y lda $d800+sq+(10*40),x sta $d800+sq+(10*40),y lda $d800+sq+(9*40),x sta $d800+sq+(9*40),y lda $d800+sq+(8*40),x sta $d800+sq+(8*40),y lda $d800+sq+(7*40),x sta $d800+sq+(7*40),y lda $d800+sq+(6*40),x sta $d800+sq+(6*40),y lda $d800+sq+(5*40),x sta $d800+sq+(5*40),y lda $d800+sq+(4*40),x sta $d800+sq+(4*40),y lda $d800+sq+(3*40),x sta $d800+sq+(3*40),y lda $d800+sq+(2*40),x sta $d800+sq+(2*40),y lda $d800+sq+(1*40),x sta $d800+sq+(1*40),y n4w iny inx cpx #39 bne fasc3 rts scp20 #rcol "14" lda scp1,x sta n4w sta n4x sta n4y sta n4z lda scp2,x sta n4w+1 sta n4x+1 sta n4y+1 sta n4z+1 lda scp3,x sta n4w+3 sta n4x+3 sta n4y+3 sta n4z+3 lda scp6,x sta n4x+5 sta n4y+5 sta n4z+5 rts lnpos ;MODIFY MAP-COORD lda $aa sta mapcoord+2 lda $ab sta mapcoord+3 clc lda $a8 adc scp7,x cmp #3 bcc n315 clc tay bpl n316 dec mapcoord+2 lda #2 bne n315 n316 inc mapcoord+2 lda #0 n315 sta mapcoord lda $a9 adc scp8,x cmp #2 bcc n310 tay bpl n311 dec mapcoord+3 jmp n312 n311 inc mapcoord+3 n312 and #1 n310 sta mapcoord+1 n1n rts lnpos2 ;GET NEW MAP-COORD .block ldx #3 n1 lda mapcoord,x sta $a8,x dex bpl n1 rts .bend line1 #rcol "10" ldy $ac ;hole postion (oben/unten, verschiebung) wo neu aufegbaut werden muss lda scp11,y beq n1n sta sc2+2 sta sc4+2 sta sc6+2 and #$c3 ora $2f sta sc1+2 sta sc3+2 sta sc5+2 lda scp10,y sta sc1+1 sta sc2+1 sta sc3+1 sta sc4+1 sta sc5+1 sta sc6+1 normalversion = 0 ;--- modified --- (1= ja, normalversion, 0 = splay102 version) .ifeq normalversion cpy #5 ;line oben? bcs n329u ;line unten lda #8 ; --- modified -- statt #8+1 in splay102 ldy $a9 beq n330u lda #9 ;helln ; --- modified -- statt #9+1 in splay102 bne n330u n329u ;line oben ldx $a9 dex txa .endif .if normalversion ldx #0 txa cpy #5 bcs n330u ;springe wenn oben am bildschirm aufgebaut wird inx lda #8 stx $08 ldy $a9 beq n330u lda #9 ;helln .endif n330u ldy #$ae ldx #$ff clc adc $ab cmp #>map ;--- modified --- added bpl n350 ;map ganz oben? ldy #$ec inx n350 sty n270 sta n270+2 sta n273+2 lda $aa clc ;-- modified--- (gesehen in splay102) adc #13 sta n270+1 sta n273+1 txa ;map oben? beq n351 n273 ldx map n351 lda $a9 ;--- modified -- (gesehen in splay102) .ifeq normalversion beq sc21 .endif .if normalversion eor $08 bne sc21 .endif ldy #>blok+$0800 lda #>blok+$0200 bne sc20 sc21 lda #>blok+$0500 ldy #>blok2+$0200 sc20 sec sta sc11+2 sbc #1 sta sc13+2 sbc #1 sta sc15+2 sty sc12+2 dey sty sc14+2 dey sty sc16+2 ldy #38 lda $a8 beq n275 cmp #1 beq sc15 bne sc13 n275 dec n270+1 n270 ldx map sc11 lda blok,x sc1 sta $2800,y sc12 lda blok+$0800,x sc2 sta $4300,y n277 dey bmi n272 sc13 lda blok+$0100,x sc3 sta $2800,y sc14 lda blok+$0700,x sc4 sta $4300,y n276 dey bmi n272 sc15 lda blok,x sc5 sta $2800,y sc16 lda blok+$0600,x sc6 sta $4800,y dey bpl n275 n272 rts line2 ;NEW SPALTE #rcol "13" ldx mapcoord ldy $ac lda scp13,y bmi n272 beq n290 clc lda mapcoord+2 adc #13 tay dex bpl n291 ldx #2 dey jmp n291 n290 ldy mapcoord+2 n291 sty nn10+1 sty nn14+1 txa clc adc #>blok sta nn1+2 adc #3 sta nn2+2 adc #3 sta nn3+2 adc #>$ffff+blok2-blok-$0600+1 sta nn4+2 ldy #18 ;char-anz lda mapcoord+3 ;carry htb set adc #8 ;helln sta nn10+2 sta nn14+2 cmp #>map ;--- modified --- map oben? bpl nn14 ldx #0 beq n356 nn14 ldx map n356 lda mapcoord+1 bne nn5 nn11 dec nn10+2 lda nn10+2 ;--- modified --- map oben? cmp #>map bpl nn10 ldx #0 beq nn2 nn10 ldx map nn2 lda blok,x sta linech,y nn4 lda blok2,x sta linefa,y dey bmi nn13 nn5 nn1 lda blok,x sta linech,y nn3 lda blok,x sta linefa,y dey bpl nn11 nn13 rts linech ;line char-puffer .text " " linefa ;line farb-puffer .text " " mapcoord .text " " ;new map-coordin. linecop ;COPY NEW SPALTE .block ldy $ac ldx scp13,y bmi nn13 lda $0a bne scrn1 lda linech+0 sta $c000,x lda linech+1 sta $c028,x lda linech+2 sta $c050,x lda linech+3 sta $c078,x lda linech+4 sta $c0a0,x lda linech+5 sta $c0c8,x lda linech+6 sta $c0f0,x lda linech+7 sta $c118,x lda linech+8 sta $c140,x lda linech+9 sta $c168,x lda linech+10 sta $c190,x lda linech+11 sta $c1b8,x lda linech+12 sta $c1e0,x lda linech+13 sta $c208,x lda linech+14 sta $c230,x lda linech+15 sta $c258,x lda linech+16 sta $c280,x lda linech+17 sta $c2a8,x lda linech+18 sta $c2d0,x jmp colram scrn1 lda linech+0 sta $c400,x lda linech+1 sta $c428,x lda linech+2 sta $c450,x lda linech+3 sta $c478,x lda linech+4 sta $c4a0,x lda linech+5 sta $c4c8,x lda linech+6 sta $c4f0,x lda linech+7 sta $c518,x lda linech+8 sta $c540,x lda linech+9 sta $c568,x lda linech+10 sta $c590,x lda linech+11 sta $c5b8,x lda linech+12 sta $c5e0,x lda linech+13 sta $c608,x lda linech+14 sta $c630,x lda linech+15 sta $c658,x lda linech+16 sta $c680,x lda linech+17 sta $c6a8,x lda linech+18 sta $c6d0,x colram lda linefa+0 sta $d800,x lda linefa+1 sta $d828,x lda linefa+2 sta $d850,x lda linefa+3 sta $d878,x lda linefa+4 sta $d8a0,x lda linefa+5 sta $d8c8,x lda linefa+6 sta $d8f0,x lda linefa+7 sta $d918,x lda linefa+8 sta $d940,x lda linefa+9 sta $d968,x lda linefa+10 sta $d990,x lda linefa+11 sta $d9b8,x lda linefa+12 sta $d9e0,x lda linefa+13 sta $da08,x lda linefa+14 sta $da30,x lda linefa+15 sta $da58,x lda linefa+16 sta $da80,x lda linefa+17 sta $daa8,x lda linefa+18 sta $dad0,x rts .bend in18 lda $0a eor #$10 sta $0a lsr a lsr a sta $2f ldx $ac jsr ssubstat clc lda $c4 adc scp18,x sta $c4 lda $c5 adc scp19,x sta $c5 clc lda oldzei2 adc scp7,x sta oldzei2 sec lda shoty sbc scp8,x sta shoty ; cmp #26 ; bcc n92 ; inc stopsz n92 rts fnscp lda $c4 sta osct1,x lda $c5 sta osct2,x rts tbpos .block sta n1+1 lda $27 and #1 clc adc $a8 cmp #3 lda #6 adc $aa sta $48 lda $27 and #2 lsr a n1 adc #6 adc $2d adc $a9 adc #$ff ;--- modified --- gesehen in splay102 lsr a clc adc $ab sta $49 ldy #0 lda ($48),y rts .bend stopshot lda #$80 sta speed+1 rts sshot jsr nshot ldx $36 bpl n41 rts n41 clc lda losht adc $c4 sta $32 lda hisht adc $c5 sta $33 sec lda $32 sbc osct1+1 sta $32 sta $34 lda $33 sbc osct2+1 and #$fb ora $2f sta $33 and #$03 cmp #3 ora #$d8 bcc n94 ldx $2f lda tab2f,x sta $33 lda #$d7 n94 sta $35 ldy oldzei2 lda ($32),y sta n100a+1 iny lda ($32),y sta n100b+1 lda #0 sta ($32),y dey sta ($32),y ldy shotx ldx #$ff stx $36 n0 inx lda ($32),y sta oldzei,x tax lda chsex,x beq n1 and #4 bne n1 inc $36 ldx $36 lda ($34),y sta oldfac,x lda #$09 sta ($34),y lda #$ff sta ($32),y n30 iny cpx $37 bcc n0 n1 .block ldx $60 lda $07 lsr a sta n2+1 sec lda shotx sbc #38 asl a asl a n2 adc #0 bit n30 bvs n3 sta $dd sec sbc #2 sbc dxtab-1,x sta $dc jmp n4 n3 adc #4 sta $dc adc dxtab-1,x sta $dd n4 lda shoty asl a asl a asl a adc #$2f+21 adc $12 sta $de .bend ldy oldzei2 n100a lda #0 sta ($32),y iny n100b lda #0 sta ($32),y rts cshot ldx $36 bmi n10 lda shotx ldy oldzei2+1 bne n171 clc adc $36 jmp n18 n171 sec sbc $36 n18 tay inx cpx speed+1 bcs n13 lda #$ff sta $36 n13 dex n12 lda oldzei,x sta ($32),y lda oldfac,x sta ($34),y n31 dey n15 dex bpl n12 n16 lda shotx clc adc speed sta shotx n10 rts nshot lda $36 bpl n201 lda $dc00 and #$10 bne n201 lda $1a lsr a and #$01 sta oldzei2+1 tax lda #256+23-120 sec sbc oldzei2+1 ldy $2d clc adc loscr,y sta losht lda hiscr,y adc #0 sta hisht dey sty shoty lda $c4 sta osct1+1 lda $c5 sta osct2+1 lda #20+40 sta shotx lda limit,x sta oldzei2 lda way1,x sta n30 eor #$40 sta n31 ldy $60 lda tab1,y sta speed+1 dex bmi n211 eor #$ff clc adc #1 n211 sta speed lda tab2,y sta $37 sta $36 n201 rts oldzei .byte 0,0,0,0,0,0,0,0,0,0,0 oldfac .byte 0,0,0,0,0,0,0,0,0,0,0 oldzei2 .byte 0,0 losht .byte 0 hisht .byte 0 shotx .byte 0 shoty .byte 0 ;stopsz .byte 0 limit .byte 80,40 way1 .byte $c8,$88 speed .byte 0,0 tab1 .byte 0,1,1,1,1,2,2,2,3,3,4 tab2 .byte $ff,0,1,2,3,1,2,3,2,3,3 oldpow .byte 0 tab2f .byte $bf,0,0,0,$c3 dxtab .byte 4,8,12,16,8,12,16,12 .byte 16,16