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 >
Wrap
Assembly Source File
|
2023-02-26
|
6KB
|
8 lines
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'✓✓
♪♪♪♪'¢¢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)¢¢*-----------------------------------------------¢¢¢