; 256 bajtowa gra zręcznościowa "Synch"; 15-16 kwiecień 2010 Wyszków ; ; napisana na Grzybsoniadę ; ; autor: Kamil "Gorgh" Trzaska org $9000 finish ; wyjście z programu jsr swing lda #$e0 ;przywrócenie systemowych fontów sta $2f4 jmp ($a) start ldy #1 sty $9f sty $fc sty $fd sty $ff lda #$70 ;przygotowanie displaylisty ldx #0 aa sta $a000,x inx cpx #18 bne aa ala lda #0 ;czyszczenie pamięci ekranu i przygotowanie fontu sta $3fec,x lda #$ff sta $4ff6,x inx bne ala lda #0 ;DL c.d. sta $a00d lda #$40 sta $a00e lda #$47 sta $a00c bb lda $d20a ;procka losująca częstość pojawiania się kolejnych kwadratów, ilość w rej.y ( $9f) sta $a0,y sta $d0,y cmp #$ff bne *+4 dec $fc dey bne bb mainloop ldx $9f cpx #10 ;10 poziom=koniec gry beq finish lda $fc bne ab ;gdy wszystkie kwadraty zbite- nowe losowanie; ilość kwadratów++ inc $9f ldy $9f sty $fc jsr swing jmp bb ab lda $d0,x ;liczniki kwadratów cmp #$ff beq pomin dec $d0,x ;są co ramkę zminiejszane bne pomin lda $a0,x sta $d0,x ;odświeżenie wartości licznika txa ;kolor kwadratu zależny od częstości pojawiania się asl @ asl @ asl @ asl @ asl @ adc #12 sta 708 lda #2 sta $4008 ;zapalenie kwadratu lda #9 sta $fe lda $fd cmp #1 beq pomin dec $fc ;gdy kwadrat gracza zapalony podczas zapalania kwadratu lewego- strącenie sta $d201 lda #$ff sta $d0,x pomin dex bne ab lda $ff beq tut dec $ff ; licznik trwania strzału tut dec $fe ;licznik czasu wyświetlania kwadratu na ekranie bne put lda #0 sta $4008 ; zgaszenie kwadratu inc $fe sta $d201 ; w przypadku trafienia- wyciszenie dźwięku put lda $d010 bne pomin2 pushed lda $ff ;fire naciśnięty bne pomin2 lda #31 sta $ff ;pauza między kolejnymi strzałami lda #6 sta $fd lda #2 sta $400b ; zapalenie kwadratu gracza pomin2 lda 20 cmp 20 beq *-2 dec $fd bne dalej inc $fd lda #0 sta $400b dalej sta $d200 jmp mainloop swing lda 20 ;efekt po pokonaniu poziomu sta 712 bne swing rts org $a013 dta b($41),a($a000) ; DL c.d. org $230 dta a($a000) ;dlisplay list pointer org $2f4 dta b($50) ;nowe fonty run start