//------------------------------- // Snakes of Atari Island // // Author: Jakub "JKR" Krzak // Katowice, April 2012 //------------------------------- ;------------------------------------------------------------------------- IncrementBgrndColorPtr .proc lda _bgrndColorPtr cmp #5 jne l1 mvza _bgrndColorPtr jmp l2 l1: inc _bgrndColorPtr l2: ldy _bgrndColorPtr lda ColorSchemes_lo,y sta _arr lda ColorSchemes_hi,y sta _arr+1 ldy #0 lda (_arr),y sta _bgrndClr rts .endp ;------------------------------------------------------------------------- CheckKeys .proc lda CH cmp #62 ;S jne l1 ; mute/unmute lda _mute jne l2 mva #1 _mute mva #'d' _scr mva #'e' _scr+1 jsr CMC_Stop mvza CH rts l2: mvza _mute mva #" " _scr mva #" " _scr+1 ldx #0 jsr CMC_PlaySong mvza CH rts l1: cmp #18 ;C jne l3 jsr IncrementBgrndColorPtr #if .word SDLSTL = #DList2 ldy #3 lda (_arr),y ora #$03 sta PM_COLS0 sta PM_COLS1 #else ldy #3 lda (_arr),y sta PM_COLS0 sta PM_COLS1 sta PM_COLS2 #end mvza CH l3: cmp #47 ;Q jne l4 mva #cUp _tmpState mvza CH rts l4: cmp #63 ;A jne l5 mva #cDown _tmpState mvza CH rts l5: cmp #8 ;O jne l6 mva #cLeft _tmpState mvza CH rts l6: cmp #10 ;P jne l7 mva #cRight _tmpState mvza CH rts l7: rts .endp ;------------------------------------------------------------------------- CheckTrigger .proc #if .byte STRIG0 = #btn_pressed .or .byte STRIG1 = #btn_pressed jmp Released #end lda CH cmp #33 ;Space jeq Released clc rts Released #if .byte STRIG0 = #btn_pressed .or .byte STRIG1 = #btn_pressed jmp Released #end lda SKSTAT and #4 jeq Released sec rts .endp ;------------------------------------------------------------------------- ChangeMsg .proc mwa #_msg _arr #if .byte _msgNum = #0 jsr _std_print_adr dta 40, c' aaa SNAKES OF ATARI ISLAND aaa ', 0 #else #if .byte _msgNum = #1 jsr _std_print_adr dta 40, c' AUTHOR: JAKUB "JKR" KRZAK ', 0 #else #if .byte _msgNum = #2 jsr _std_print_adr dta 40, c' MUSIC BY: PIOTR "PAPTAK" NOWICKI ', 0 #else #if .byte _msgNum = #3 jsr _std_print_adr dta 40, c' GREETINGS TO 8-BIT ATARI ENTHUSIASTS ', 0 #else #if .byte _msgNum = #4 jsr _std_print_adr dta 40, c' AT GRZYBSONIADA 2012 PARTY ', 0 #else #if .byte _msgNum = #5 jsr _std_print_adr dta 40, c' AND ALL OVER THE WORLD ', 0 #else #if .byte _msgNum = #6 jsr _std_print_adr dta 40, c' aaa PRESS TRIGGER TO START aaa ', 0 #else #if .byte _msgNum = #7 jsr _std_print_adr dta 40, c' aaa PRESS S FOR SOUND ON/OFF aaa ', 0 #else #if .byte _msgNum = #8 jsr _std_print_adr dta 40, c' aaa PRESS C TO CHANGE COLORS aaa ', 0 mva #(0 -1) _msgNum ; loop msgs #else #if .byte _msgNum = #10 jsr _std_print_adr dta 40, c' aaa SELECT GAME MODE WITH i j aaa ', 0 #else #if .byte _msgNum = #11 jsr _std_print_adr dta 40, c' aaa SELECT WALLS WITH k l aaa ', 0 #else #if .byte _msgNum = #12 jsr _std_print_adr dta 40, c' aaa PRESS S FOR SOUND ON/OFF aaa ', 0 #else #if .byte _msgNum = #13 jsr _std_print_adr dta 40, c' aaa PRESS C TO CHANGE COLORS aaa ', 0 #else #if .byte _msgNum = #14 jsr _std_print_adr dta 40, c' aaa PRESS TRIGGER TO START aaa ', 0 mva #(10 -1) _msgNum ; loop msgs #end #end #end #end #end #end #end #end #end #end #end #end #end #end inc _msgNum setFlag _msgFlags cMsgDown_Change #if .word HiScore <> #$FFFF #if .byte _msgNum2 = #0 mwa #_msg2 _arr jsr _std_print_adr dta 40, c' aaa HIGH SCORE: aaa ', 0 mwa #_msg2+23 _arr jsr _std_print_adr dta 130, a(HiScore), 0 setFlag _msgFlags cMsgUp_Change inc _msgNum2 #else #if .byte _msgNum2 = #1 lda #<_msg2 sta _arr lda #>_msg2 sta _arr+1 jsr _std_print_adr dta 40, c' aaa SNAKES OF ATARI ISLAND aaa ', 0 setFlag _msgFlags cMsgUp_Change mvza _msgNum2 #end #end #end lda #0 sta tmrDisplMsgs sta tmrDisplMsgs +1 rts .endp ;------------------------------------------------------------------------- ClearMsg .proc mvza _msgFlags ldx #2 l1 mva #0 _scr,x inx cpx #40 bne l1 ldx #0 l2 mva #0 _scrL24,x inx cpx #40 bne l2 mva #2 DLScrllLine mva #2 DLScrllLine2 mva #cMaxMsgBrtnss _msgBrLower mva #cMaxMsgBrtnss _msgBrUpper rts .endp ;------------------------------------------------------------------------- Rainbow .proc ; do the Atari rainbow (COL_BK = VCOUNT * 2 + RTCLOCK) lda VCOUNT asl clc adc RTCLOCK sta COL_BK lda _mute seq rts lda CMCplayer_songLine cmp #23 sne jsr CMC_StopFadeOut ; stop CMC rts .endp