Magic Disk 64

home to index to text: MD8912-KURSE-GRAFIKKURS_TEIL_1-1_:_PICASSO_UND_ALL_DIE_ANDERN....txt
          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 abgeschlossen, nun geht es weiter mit einem Grafikkurs, der ebenfalls den Einsteigern gewidmet sein soll." Buuuh, Betrug!" werden jetzt die Profis unter Ihnen jetzt schreien," wir wollen endlich 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 HIRESund 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 64 er von einem Grafikchip verwaltet, der alle Informationen im Speicher des 64 ers 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 seinerseits schon im fünften Basickurs erwähnte. In jenem fünften Teil hatten wir ja auch gelernt, wie das Innere unseres 64 ers aussieht, daß es dort Speicherbereiche gibt, die man mit sogenannten Speicheradressen anspricht, daß ein Byte aus acht Bit besteht, und wie man Binärzahlen in Dezimalzahlen umrechnet. Alle diese Kenntnisse sind in der Grafik von großer Bedeutung, weshalb ich Ihnen empfehle, sollten Sie sich an die Gedankengänge von damals nicht mehr so ganz erinnern, sich doch noch einmal die Magic Disk 64 Ausgabe 5/89 anzuschauen.
Wie also schon gesagt, belegt der VIC einen Bereich von 46 Bytes im Ein-/ Ausgabebereich unseres 64 ers ( von Adresse 53248 bis 57344) . Der SID hatte seine erste Stelle, oder auch Basisadresse genannt, bei 54272 . VICs Basisadresse liegt bei 53248, der ersten Speicherzelle des Ein-/ Ausgabebereichs also.
Diese Adresse wird nun also immer als relativer Bezug für die einzelnen Register 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 64 er steuern also gewisse Funktionen des zu ihnen gehörendem Chips. Wie Sie ja wissen können Sie mit der Adresse 53280 die Hintergrundfarbe des Bildschirms verändern. Schreiben wir hier einen Wert hinein, so ändert sich die Farbe entsprechend. 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 Register 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 kommentiert, ü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) haben 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 Spriteprogrammierung - wie Sie aus obiger Tabelle 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 bewegten, 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 64 er 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 eines solchen Sprites. Ein Sprite muß nämlich, 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 einzelne 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ämlich auf Papier, konstruieren, damit Ihnen der Aufbau von Sprites etwas mehr einleuchtet.

Valid HTML 4.0 Transitional Valid CSS!