                          - SEPTIC'S DEMOSKOLA -

                                 Lektion 3
                                 
                        Skriven av Vicious / Septic

                                 22 Maj 93



                                 Inledning
                                 
Vi kr vidare med Lektion 4. Tyvrr har jag inte haft s mycket tid till
att gra den hr delen av demoskolan, fr jag hller p och kmpar med vrt
demo till demotvlingen i Gteborg i pingst! Dessvrre verkar det inte som
jag hinner bli frdig, men i alla fall, jag har tagit en liten paus, och
som hastigast fixat ihop den hr lektionen. Den visar inte mycket nytt,
utan ni fr hlla er till tls till nsta gng, d jag ska kra vidare med
sprites! Mycket nje!


                                   Teori
                                   
Bilder kan vara mycket snygga p Amigan, och de blir oftast mycket snyggare
i hgre upplsningar. Drfr ska jag idag visa hur man ska visa en
hgupplsningsbild i 16 frger, nmligen Splash II av Scuba/X-Trade. En
mycket snygg bild, tycker jag.
  Att visa hires, dvs 640 pixlar i X-led istllet fr 320 r ganska ltt.
Man stter bara HIRES-biten i BPLCON ($DFF100) s r det fixat, plus att
man fr stlla in lite nya DDFSTRT och DDFSTOP.
  Att visa mer pixlar i Y-led r dremot svrare. D fr man anvnda sig av
INTERLACE, som ger 512 pixlar istllet fr 256 p hjden. Interlace
fungerar s att man frst visar alla udda rader, och sedan, vid nsta
vertical blanking, visar de jmna raderna. Detta krver att man ndrar
bitplanspekarna vid varje vertical blanking, och Commodore sger att man
ska anvnda ett interrupt till detta. Jag har dock en bttre metod,
nmligen att lta coppern sjlv skta det p egen hand.
  Det funkar s att coppern stller in de frsta bitplanspekarna och
drefter sjlv ndrar sin egen startaddress, s att de andra pekarna stts
nsta gng som coppern krs. Detta kan ni se att jag har gjort i
programexemplet.


                                 Register
                                 
HIRES+INTERLACE krver att man stter de respektive bitarna i BPLCON0
($DFF100). Svrare r det inte, s det behvs inga nya register. Men titta
grna tillbaka p registren i Lektion 3 om du inte kommer ihg dem.


                              Programexemplet
                              
Programmet den hr gngen r en liten modifiering av det frra i lektion 3.
Jag har gjort om det fr Hires+Interlace-bilder, och dessutom lagt till en
Fade-rutin.
  Fade-rutinen fungerar s att den i tur och ordning jmfr det nuvarande
frgvrdets rda, grna och bl vrde med destination-frgvrdets rda,
grna och bl vrde och hjer eller snker det beroende p skillnaden
mellan dem. Rutinen klarar allts att fejda en palette till en annan, och
behver allts inte ndvndigtvis g frn svart till destination och
tvrtom.
  Hoppas ni frstr hur den fungerar, jag r lite tidspressas just nu, s
jag har inte riktigt tid att frklara.


                                 Utmaning
                                 
Utmaningen blev ju inte direkt ngon stormsucce, men jag fick tv bidrag
som gjorde mig mycket glad! Tack, tack, fr ert intresse, Nicolas och
Matrix!
  Nicolas, din rutin var kanske inte riktigt korrekt, men nd ganska
frck! Ett litet tips bara! Vnta aldrig med ett loop kommando:

loop:   move.l   #$ffff,d2
        dbf      d2,loop

eftersom detta gr s vldigt olika fort p Amigor med olika snabb
processor. Anvnd istllet vertical blank-sync, allts en rutin som vntar
p rasterstrlen, fr detta gr lika fort p alla datorer.

  Matrix, din fade-rutin var mycket bra! Och s vitt jag kan se, helt
korrekt! Bra gjort! Tyvrr har vi inga prispengar i den hr utmaningen :-)
men du fr nja dig med ett hedersomnmnande. Din rutin var kortare n den
jag har tagit med hr, men min klarar  andra sidan olika antal frger,
valfri hastighet, fade t vilket hll som helst, s det kompenserar vl det
hela. Frresten, Matrix, du behvde en sinusmaker! Downloada Sine Creator
v1.11 frn 22 AA! Den hoppas jag duger, ven om den skulle behva
uppdateras snart (Hallo, Leviticus :-)))
  Ingen ny utmaning den hr gngen, s hll ut till nsta gng!


                                  Frgor
                                  
Jag har ftt ngra intressanta frgor som jag tnkte svara p hr...Ge mig
grna mer snt hr!

  "Det skulle Det skulle vara intressant om du i ngot framtida nummer eller
bara fr mig frklarar hur blittern fungerar och frmst d vad Minterm,
Mask och Modul innehller."
 -> Sjlvklart ska jag detta! Blittern r det mest kraftfulla i hela
Amigan, s varfr ska jag hoppa ver den! Den r mycket viktig i
demoprogrammering, men jag kommer inte ta upp den frrn i lektion 8!

  "Varfr skriver du vrdet 5200 och inte 5000 till BitplaneControl0 ?
Vad har 2:an fr funktion ??"
 -> Svaret r att jag inte riktigt vet! Det har ngonting med grafikkort,
kanske 24 bitars kort, att gra. Jag slr alltid p den fr att nstan alla
andra gr det! Det r ingen ndvndighet, men skert bra att gra det!

  "Kan man BARA utfra SWAP kommandot p dataregistren? r adressregistren
och dataregistren likvrdiga frutom de specifika adressgrejerna man kan
gra med adressregistren?"
 -> Man kan bara anvnda SWAP p dataregister! Annars r registren ganska
lika, bara en del grejor skiljer sig, som tex SWAP, och DIV och MUL som
bara gr att gra p dataregister, och LEA som bara gr med
addressregister.

  "Vad str DBF fr? Jag frstr funktionen..."
 -> Deadly Boring Function! Hehe, nej, jag hittar ingen betydelse i min
lilla 68000-bok, s jag vet inte riktigt vad det str fr.

 "   dc.w   $008e,$2c81   ; DIWSTRT ;*** Vad sysslar du *** \/
     dc.w   $0090,$2cc1   ; DIWSTOP ;*** med hr d???? *** !!"
 -> Detta r ett utdrag ur en copperlista. Copperns instruktioner gick jag
igenom i lektion 1! Detta r tv MOVE-kommandon, som allts motsvarar
processorns:
   MOVE.W   #$2c81,$dff08e
   MOVE.W   #$2cc1,$dff090
  Registren och vad de har fr betydelse gick jag igenom i lektion 3, s
titta dr om det r dem du inte frstr!
