C64 Grafik
Zurück   Index    FAQ        6 User online       


Eine kleine Einführung in Grafik : Hires Grafik mit dem C64

Beim Erstellen von Anwendungen und einfachen Spielen ist eine Oberfläche mit ansprechender Grafik heutzutage zum Standard geworden. Beim C64 hat man die Möglichkeit den Hires-Modus für diese Zwecke zu verwenden. Dieser Modus bietet zwar nur eine geringe Farbauswahl, aber die Auflösung von 320 x 200 Pixeln macht diesen für Oberflächen und hochauflösende Lineart-Grafik oder konvertierte Bilder interessant.


Hires Modus
 
Der C64 bietet im Hiresmodus eine Auflösung von 320 x 200 Pixeln. Leider ist die Farbauswahl auf eine 8x8 Kachel beschränkt. Im Prinzip kann man 1000 Kacheln mit den üblichen 16 Farben versehen. Diese werden nicht wie üblich aus den Farbspeicher geholt, sondern beim Hires Bitmap-Modus aus dem Bildschirmspeicher (#1024-2024).
So kann man nur schwierig mehrere Farben in einem Screen verwenden. Besonders gut ist dieser Modus für Lineart oder andere Monochrom-Grafik geeignet.
Die Auflösung von 320*200 Pixel ergeben 64000 Pixel, für die  8 Kilobyte Speicher benötigt werden. In dieser kleinen Anleitung wird nur  das Einschalten der Grafik erklärt. Grafikprogramme und erweiterte Programmierung folgen später.

Praxis:

Zum Einschalten des Bit-Mapping-Betriebs muß Bit 5 des VIC-II-Kontrollregisters in Adresse #53265 ($d011 in HEX)  gesetzt werden. Hier wird folgende Anweisung verwendet :

POKE 53265,PEEK(53265) OR 32

Zum Abschalten dieser Betriebsart wird Bit 5 des VIC-II-Kontrollregisters auf 0 gesetzt :

POKE 53265,PEEK(53265) OR 223

Die Plazierung der Bitmap im Speicher muß dem Computer ebenfalls mitgeteilt werden. Mit dem folgenden Beispiel wird eine Hires-Bitplane ab #8192 ($2000 HEX) eingeschaltet :

POKE 53272,PEEK(53272) OR 8    : REM Hires ab $2000
POKE 53265,PEEK(53265) OR 32  : REM Bitmap Mode

Das selbe Beispiel in Assembler :

HiresOn :  LDA$d018  
                 ORA #$08    ; Bit 3
                 STA$d018    ; in #53272 setzen
                 LDA $d011  
                 ORA #$20    ; Bit 5
                 STA $d011   ; in #53265 setzen
                 RTS

Wenn sich keine Grafik im Speicher befindet, muß man die diesen Bereich zuerst löschen. Das Beispiel in Basic möchte ich hier erst garnicht aufführen, nur soviel : Man sieht wie jedes Byte überfahren wird. ;-) Es ist wirklich unbrauchbar.
Hier ein kleines Beispiel in annehmbarer Geschwindigkeit für den Makro Assembler :
                            ldx #$00   
                            ldy #$00           ; Zähler
                 loop:   sta $2000,x       ; Bitmap-Speicher
                            dex              
                            bne loop          ; innere Schleife
                            iny                    ; äußere Schleife 
                            inc *-5              ; Hi-byte im Bitmap-Speicher erhöhen 
                            cpy #$20          ; 32*256 Byte = 8 Kbyte
                            bne loop           ; äußere Schleife
                            rts


© 1999-2018 Retro-CMS by M. Sachse http://www.cbmhardware.de