home *** CD-ROM | disk | FTP | other *** search
/ Kocie Flaki / Kocie_Flaki_1_19xx_NG_pl_Disk_3_of_3_Side_A.atr / bobdraw.asm < prev    next >
Assembly Source File  |  2023-02-26  |  6KB  |  8 lines

  1.      opt 21¢     org $9000¢¢* BobDraw routine by Solo/NG¢* Procka nie wykorzystuje liczb ze znakiem¢* w celu "zrozumienia dla wszystkich".¢* Ale mozna to bardzo latwo przerobic.¢* W KF#2 bedzie algorytm na "zwykla linie" (opis)¢* z liczbusiami typu <-128,+128>.¢¢* Predkosc rysowania NIE ZALEZY od dlugosci linii.¢* procka do dowolnego wykorzystania. Totalny freeware.¢* Bob wielkosci 2*6 bajtow.¢¢size equ 32 ; szerokosc ekranu¢¢dx equ $80 w¢dy equ $82 w¢x1 equ $84 w ; slowa, bo liczby + ulamki¢y1 equ $86 w¢x2 equ $88 w¢y2 equ $8a w¢¢ek equ $8d w¢yy equ $8f¢poy equ $90¢bobs equ $91¢¢xx equ $92¢ile equ 7 ; ilosc bobow na linie, jak chcesz zmienic¢*         ; - zrob nowa tablice "int" i "rest"¢¢screen equ $b000¢¢tabys equ $480 ; tablica 127 adresuff poz.Y¢tabym equ $500 ; bez tego tez mozna (ale tak jest faster)¢¢*- áינגá««« - male dentro :)¢¢     lda <dl¢     sta $230¢     lda >dl¢     sta $231¢     lda #$40¢     sta 623¢     lda #33¢     sta 559¢     jsr init ; tabela/Y¢¢rys  lda #0¢     sta x1¢ng   lda #1¢     sta y1¢     lda 20¢     and #31¢     sta x2¢     sta y2¢     jsr line¢¢     inc ng+1 ; zmienia poz.Y1¢     lda ng+1¢     and #63¢     sta ng+1¢     beq cz¢¢     jsr cz¢     jsr cz¢     jsr cls ; systemowe, WOOLLNE!¢     jmp rys¢¢cz lda 20¢ cmp 20¢ beq *-2¢ rts¢¢cls lda #$b0¢ sta 89¢ lda #0¢ sta 88¢ jsr $f420¢ rts¢¢*- a tu juz (shit) bobdraw.¢*- maxymalna poz.Y = 79 (koniec tablicy:)¢¢line ldy #1     ; na poczatku ustawiamy domyslnie DODAWANIE¢     sty xx     ; x1=x1+dx¢     sty yy     ; y1=y1+dy¢     dey        ; to kombonowanie jest tutaj potrzebne¢     sty x1+1   ; gdyz nie uzywamy liczb ze zmiennym znakiem¢     sty x2+1¢     sty y1+1¢     sty y2+1¢¢     sec¢     lda x2¢     sbc x1¢     bpl dal1¢¢     sec¢     lda x1  ; x1>x2¢     sbc x2¢     tax¢     dec xx  ; wiec xx=0 - ODEJMUJEMY (x1=x1-dx)¢¢dal1 tax¢     sec¢     lda y2¢     sbc y1¢     bpl dal2¢¢     sec¢     lda y1  ; y1>y2 ; wiec odejmujemy (y1=y1-dy)¢     sbc y2¢     tay¢     dec yy¢¢dal2 tay        ; wczytaj z tablicy nasz wetkor¢     lda int,x  ; pt.: DX (calkowita + reszta)¢     sta dx¢     lda rest,x¢     sta dx+1¢     lda int,y¢     sta dy     ; oraz wektor DY¢     lda rest,y¢     sta dy+1   ; bo x1=x1+-DX ; y1=y1+-DY¢¢     lda #ile   ; ilosc bobsow (tutaj: SIEDEM)¢     sta bobs¢¢main ldy y1     ; adres ekranu dla poz. Y¢     lda tabys,y¢     sta ek+1¢     lda tabym,y¢     sta ek¢¢     jsr putb   ; postaw bobsa¢¢     lda xx     ; if xx=0 -> x1=x1-dx¢     beq min2¢¢     clc        ; inaczej x1=x1+dx¢     lda x1¢     adc dx     ; dx+1 oraz x1+1 -> ulamek¢     sta x1     ; jezeli do "x1+1" dodamy "dx+1"¢     lda x1+1   ; i bajt sie przepelni - nalezy zwiekszyc¢     adc dx+1   ; x1. Zapewne wiesz czemu ?¢     sta x1+1¢     bcc *+4    ; z odejmowaniem i y1 postepujemy analogicznie¢     inc x1¢     jmp yyy¢¢min2 sec¢     lda x1¢     sbc dx¢     sta x1¢¢     lda x1+1¢     sbc dx+1¢     sta x1+1¢     bcs *+4¢     dec x1¢¢yyy  lda yy    ; to tamo z Y¢     beq minus¢¢     clc       ; y1=y1+dx¢     lda y1¢     adc dy¢     sta y1¢¢     lda y1+1¢     adc dy+1¢     sta y1+1¢     bcc *+4¢     inc y1¢¢     dec bobs¢     bne main¢     rts¢¢minus sec¢     lda y1¢     sbc dy¢     sta y1¢¢     lda y1+1¢     sbc dy+1¢     sta y1+1¢     bcs *+4¢     dec y1¢¢     dec bobs¢     bne main¢     rts¢¢putb ldx #0¢     lda x1¢     lsr @¢     sta poy¢     bcs bob2¢¢bob1 ldy poy¢¢b01  lda bb1,x¢     ora (ek),y¢     sta (ek),y¢     iny¢     inx¢bz0  lda bb1,x¢     ora (ek),y¢     sta (ek),y¢     inx¢     dey¢     cpx #12¢     bcs ee2¢     lda ek¢     adc #size¢     sta ek¢     bcc *+4¢     inc ek+1¢     jmp b01¢¢bob2 clc¢     ldy poy¢¢b02  lda bb2,x¢     ora (ek),y¢     sta (ek),y¢     iny¢     inx¢bz2  lda bb2,x¢     ora (ek),y¢     sta (ek),y¢     iny¢     inx¢bz3  lda bb2,x¢     ora (ek),y¢     sta (ek),y¢     inx¢     cpx #16¢     bcs ee2¢     lda ek¢     adc #size¢     sta ek¢     bcc *+4¢     inc ek+1¢     jmp bob2+1¢¢ee2 rts¢¢*---takie tam...---------------------¢¢dl dta d'ppp',b($4f),a(screen)¢   dta c'/ / / / / / / / / / / / / / / / / / / / / / / / '¢   dta c'/ / / / / / / / / / / / / / / / / / / / / / / / '¢   dta c'/ / / / / / / / / / / / / / / / / / / / / / / / '¢   dta b($41),a(dl)¢¢¢* Ponizna tabela wziela sie z:¢* liczby 0...79 (poz X)¢* dzielimy kolejno przez 7 (ilosc bobow).¢* Potem wynik:¢* calkowita liczbe do INT¢* reszta: mnozymy przez 256 i do rest.¢¢* Jesli chcemy np. 5 bobow na linie¢* to liczby od 0 do 79 dzielimy przez 5.¢¢int equ *  ; tabela 1,2.3.../ilosc bobow ; liczby calkowite¢¢ dta c'⇧⇧⇧⇧⇧⇧⇧⇩⇩⇩⇩⇩⇩⇩'¢ dta c'⇨⇨⇨⇨⇨⇨⇨⇦⇦⇦⇦⇦⇦⇦❎❎❎❎❎❎'¢ dta c'❎╱╱╱╱╱╱╱◆◆◆◆◆◆◆✓✓✓✓✓'¢ dta c'✓✓                            
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8. ♪♪♪♪'¢¢rest equ * ; - || - ; reszta ("po przecinq")¢¢ dta c'%InÆÃף%InÆÃף%InÆÃף'¢ dta c'%InÆÃף%InÆÃף%InÆÃ'¢ dta c'ף%InÆÃף%InÆÃף%InÆ'¢ dta c'Ãף%InÆÃף%InÆÃף%In'¢¢init lda >screen ; tabela adresof poz. Y - dopal :)¢ sta pom¢ sta tabys¢ clc¢ lda #$0¢ sta tabym¢ ldy #1¢¢_y clc¢ adc #size¢ sta tabym,y¢ tax¢ bcc _y22¢ inc pom¢ lda pom¢ sta tabys,y¢ clc¢_y22 lda pom¢ sta tabys,y¢ txa¢ iny¢ bpl _y¢ rts¢pom dta b(0)¢¢*------------------------------------¢* REM wyglad bobsuff - normal¢¢bb1 dta b(%00001111),b(%11110000)¢   dta d'¯¯'¢   dta d'¯¯'¢   dta d'¯¯'¢   dta d'¯¯'¢   dta b(%00001111),b(%11110000)¢¢* + przesuniecie o 4 bity (GR.9 - PUNKTY)¢¢bb2 dta b(%00000000),b(%11111111),b(%00000000)¢   dta b(%00001111),d'¯',b(%11110000)¢   dta b(%00001111),d'¯',b(%11110000)¢   dta b(%00001111),d'¯',b(%11110000)¢   dta b(%00001111),d'¯',b(%11110000)¢   dta b(%00000000),b(%11111111),b(0)¢¢*-----------------------------------------------¢¢¢