Magic Disk 64

home to index to html: MD8912-KURSE-GRAFIKKURS_TEIL_1-1_:_PICASSO_UND_ALL_DIE_ANDERN....html
          Grafikkurs : Teil 1           
    "Picasso und all die andern..."     
--------------------------------------- 
Hallo Leute, hier bin ich wieder, diesen
Monat jedoch mit einem NEUEN  Kurs.  Der
Basickurs für Einsteiger ist jetzt abge-
schlossen, nun geht es weiter mit  einem
Grafikkurs,  der  ebenfalls den Einstei-
gern gewidmet  sein  soll.  "Buuuh,  Be-
trug!"  werden  jetzt  die  Profis unter
Ihnen jetzt schreien, "wir  wollen  end-
lich  mal  was Richtiges !" - doch keine
Panik. Dieser Kurs wird nur 3 Teile lang
sein, und für  danach  halten  wir  dann
einen  Leckerbissen  für  Sie, den Profi
bereit.  Es  geht  anschließend  nämlich
ebenfalls  mit  Grafik weiter, doch dann
wollen wir uns in  die  tiefen  Abgründe
der  Raster-IRQ-Programmierung abseilen,
die für manche von  Ihnen  bestimmt  ein
kleines Hindernis darstellen.           
Doch nun wollen wir erst einmal mit  dem
Einsteigerkurs  loslegen, die Grafik kam
in dem Basickurs ja entschieden zu kurz;
was ich jetzt mit noch mehr  Information
über  dieses  Thema  ausgleichen möchte.
Wir werden uns in den  nächsten  Monaten
um  die  wichtigsten Grafikarten des C64
kümmern, als da wären die  Sprites,  die
HIRES-  und  MULTICOLOR-Grafiken und die
Zeichensatzveränderung und -bedienung.  
In  dieser  Reihenfolge  werden  wir die
einzelnen Themen  dann  auch  abhandeln,
und,  wie Sie sich jetzt bestimmt denken
können, werden  in  diesem  ersten  Teil
gleich  mit den Sprites beginnen. Zuerst
jedoch eine kleine Einleitung in  Sachen
Grafik...                               
Die  komplette Bidschirmdarstellung, das
heißt Zeichensätze, Grafik und  Sprites,
werden in unserem 64er von einem Grafik-
chip verwaltet, der  alle  Informationen
im  Speicher des 64ers in ein Signal für
einen Monitor umwandelt, damit  wir  die
Bits und Bytes aus unserem Computer auch
auf dem Bildschirm sehen können.  Dieser
Chip  hat  den Namen VIC, was für "Video
Interface Controller" steht. Der VIC hat
ebenso wie der Soundchip SID (den Sie ja
noch aus dem sechsten  Basickurs  kennen
sollten)   ein  paar  Steuerregister  im
Ein-/Ausgabe-Bereich,  den  ich  seiner-
seits schon im fünften Basickurs erwähn-
te. In jenem fünften Teil hatten wir ja 
auch  gelernt,  wie  das  Innere unseres
64ers aussieht, daß es dort  Speicherbe-
reiche  gibt,  die  man  mit sogenannten
Speicheradressen anspricht, daß ein Byte
aus acht Bit besteht, und wie man Binär-
zahlen  in Dezimalzahlen umrechnet. Alle
diese Kenntnisse sind in der Grafik  von
großer Bedeutung, weshalb ich Ihnen emp-
fehle, sollten Sie sich  an  die  Gedan-
kengänge  von  damals nicht mehr so ganz
erinnern, sich doch noch einmal die  Ma-
gic Disk 64 Ausgabe 5/89 anzuschauen.   
Wie  also  schon  gesagt, belegt der VIC
einen  Bereich  von  46  Bytes  im  Ein-
/Ausgabebereich   unseres   64ers   (von
Adresse 53248 bis 57344). Der SID  hatte
seine  erste  Stelle,  oder auch Basisa-
dresse genannt, bei 54272. VICs  Basisa-
dresse liegt bei 53248, der ersten Spei-
cherzelle des Ein-/Ausgabebereichs also.
Diese Adresse wird nun  also  immer  als
relativer  Bezug für die einzelnen Regi-
ster herangezogen. Die Adresse 53248 ist
also das  Register  mit  der  Nummer  0,
53249 (=53248+1) ist Register 1 des VICs
und so fort...                          
Die Register eines Chips in unserem 64er
steuern  also  gewisse Funktionen des zu
ihnen gehörendem Chips. Wie Sie ja  wis-
sen können Sie mit der Adresse 53280 die
Hintergrundfarbe  des Bildschirms verän-
dern. Schreiben wir hier einen Wert  hi-
nein,  so ändert sich die Farbe entspre-
chend. Diese Adresse ist  nun  ebenfalls
ein  Register des VICs, da ja etwas, das
mit  der  Bildschirmdarstellung  zu  tun
hat,  durch  sie verändert wird. Demnach
belegt diese Adresse ebenfalls ein Regi-
ster im VIC, nämlich das Zweiunddreißig-
ste. Ich gebe  Ihnen  am  Besten  einmal
eine  Übersicht  über  alle VIC-Register
(Sie finden diese, etwas weniger kommen-
tiert,  übrigens  auch im Anhang N Ihres
Commodore-64 Benutzerhandbuchs) :       
Adresse Register Funktion               
----------------------------------------
53248      0     X-Position von Sprite 0
53249      1     Y-Position von Sprite 0
53250      2     X-Position von Sprite 1
53251      3     Y-Position von Sprite 1
53252      4     X-Position von Sprite 2
53253      5     Y-Position von Sprite 2
53254      6     X-Position von Sprite 3
53255      7     Y-Position von Sprite 3
53256      8     X-Position von Sprite 4
53257      9     Y-Position von Sprite 4
53258     10     X-Position von Sprite 5
53259     11     Y-Position von Sprite 5
53260     12     X-Position von Sprite 6
53261     13     Y-Position von Sprite 6
53262     14     X-Position von Sprite 7
53263     15     Y-Position von Sprite 7
53264     16     High-Bits Sprite-X-Pos.
53265     17     Steuerregister 1       
53266     18     Rasterzeile für IRQ    
53267     19     X-Anteil eines Strobes 
53268     20     Y-Anteil eines Strobes 
53269     21     Sprite ein-/ausschalten
53270     22     Steuerregister 2       
53271     23     Spritevergrößerung in  
                 X-Richtung             
53272     24     Basisadresse Video-RAM 
                 und Zeichensatz        
53273     25     Interrupt-Request-Reg. 
53274     26     Interrupt-Mask-Reg.    
53275     27     Sprite im Vorder- oder 
                 Hintergrund            
53276     28     Multicolorsprite-Reg.  
53277     29     Spritevergrößerung in  
                 Y-Richtung             
53278     30     Sprite-Sprite-         
                 Kollision              
53279     31     Sprite-Hintergrund-    
                 Kollision              
53280     32     Rahmenfarbe            
53281     33     Hintergrundfarbe 0     
53282     34     Hintergrundfarbe 1     
53283     35     Hintergrundfarbe 2     
53284     36     Hintergrundfarbe 3     
53285     37     Multicolorfarbe 0      
                 eines Sprites          
53286     38     Multicolorfarbe 1      
                 eines Sprites          
53287     39     Farbe für Sprite 0     
53288     40     Farbe für Sprite 1     
53289     41     Farbe für Sprite 2     
53290     42     Farbe für Sprite 3     
53291     43     Farbe für Sprite 4     
53292     44     Farbe für Sprite 5     
53293     45     Farbe für Sprite 6     
53294     46     Farbe für Sprite 7     
Noch zwei kleine Bemerkungen zu der  Ta-
belle:                                  
----------------------------------------
Die  zwei Steuerregister (17 und 22) ha-
ben mehrere Funktionen gleichzeitig, auf
die wir  später  noch  genauer  eingehen
werden.                                 
Mit  den  Registern  18,19,20,26  und 27
werden wir hier nichts zu tun haben. Sie
haben etwas  mit  der  Raster-Interrupt-
Programmierung  zu tun, die ja, wie oben
schon erwähnt,  in  einem  eigenen  Kurs
behandelt werden soll.                  
Machen  wir  uns nun also an die Sprite-
programmierung - wie Sie aus obiger  Ta-
belle  ersehen können ein sehr komplexes
Thema, da wir da eine Menge Register zur
Beeinflussung von Sprites zur  Verfügung
haben.                                  
Zunächst einmal: Was ist ein Sprite?    
Nun, Sprites sind  ganz  einfach  kleine
Grafikobjekte,  die  man frei definieren
kann und die,  unabhängig  von  Grafiken
oder Zeichen, über den ganzen Bildschirm
verstreut sich befinden  können.  Ja  es
geht  sogar  so  weit,  daß man sie über
selbigen ruckelfrei bewegen kann.       
Sie haben mit 100%-iger Sicherheit schon
einmal  Bekanntschaft  mit  einem Sprite
gemacht, denn das kleine Raumschiff, daß
sie bei Ihrem  letzten  Ballerspiel  mit
dem  Joystick über den Bildschirm beweg-
ten, oder das Männchen, mit dem sie  die
schöne  Jungfrau  neulich von dem bösen,
bösen  Gorilla  gerettet  hatten,  waren
nichts anderes als bewegte Sprites ! Der
64er stellt uns insegsamt 8 (Sprite 0-7)
davon  zur Verfügung, die wir unabhängig
voneinander über den Bildschirm  bewegen
können.                                 
Doch nun zuerst einmal zum Aussehen  ei-
nes solchen Sprites. Ein Sprite muß näm-
lich, bevor wir es  auf  den  Bildschirm
bringen  können  erst einmal "definiert"
werden. Im Klartext heißt das,  daß  wir
zunächst  einmal  festlegen  müssen, wie
unsere kleine Grafik da denn  auszusehen
hat.  Täten  wir das nicht, so erhielten
wir nur ein paar wirre  Punkte,  die  da
irgendwo in der Gegend herumhingen...   
Ein Sprite setzt  sich  aus  24  mal  21
Punkten zusammen. Es kommt also zunächst
einmal darauf an, daß wir uns einen Plan
davon  machen,  welche  Punkte in diesem
Spritefeld erscheinen sollen, und welche
nicht. Hierzu malen wir  uns  auf  einem
Stück  Papier  ein  Gitter mit 24 mal 21
Kästchen auf.  Unser  kleines  Bildchen,
das  wir  darstellen  wollen, können wir
nun durch das Ausmalen der ensprechenden
Kästchen auf Papier bringen. Sie  können
hierzu  übrigens  auch  gerne  einen der
zahlreichen  Spriteeditoren  der  Magic-
Disk  verwenden,  damit lassen sich ein-
zelne Korrekturen einfacher durchführen.
Doch gibt es da dann meist Probleme, die
Spritedaten in ein  Programm  einzubauen
(meist  benötigt  man  hierzu etwas mehr
Verständnis der  Materie).  Sie  sollten
Ihr  erstes  Sprite  jedoch ruhig einmal
auf konventionelle Art und  Weise,  näm-
lich  auf  Papier,  konstruieren,  damit
Ihnen der Aufbau von Sprites etwas  mehr
einleuchtet.                            
Valid HTML 4.0 Transitional Valid CSS!