Ergebnis 1 bis 8 von 8

Thema: Intressensfrage zur c64 Programmierung

  1. #1

    Katii Gast

    Intressensfrage zur c64 Programmierung

    Ich frag mich das nun schon die ganze Zeit habe es aber nicht über youtube gefunden. Wie hat man damals eigentlich die Sprites im C64 erstellt? Hat man dafür ein Malprogramm am c64 verwendet oder hat man die Farben selbst auch einprogrammiert?

    Habe nicht vor das selbst zu machen, bin nur neugierig

  2. #2
    Der Aufbau der Sprites wurde direkt im Programmcode Pixel für Pixel angegeben. Hier findest du nähere Informationen. Allerdings hat es wohl schon Programme gegeben, mit denen sich die Sprites komfortabler erstellen lassen. Oder es gibt sie erst jetzt. So genau sagt der Text das nicht.

    Geändert von Kelven (20.04.2014 um 22:29 Uhr)

  3. #3
    Die Programmierung mit dem C64 war ein wenig Tricky.
    Sprites wurden programmiert. Entweder direkt mit Assember, oder wenn man BASIC verwendet hat, über den POKE-Befehl.
    POKE und PEEK waren die einzigen Möglichkeiten mittels BASIC direkt mit der Hardware zu kommunizieren. POKE schreibt in den Speicher und PEEK liest den Speicher.
    Standardgemäß kann der C64 allerdings nur 8 Sprites gleichzeitig darstellen. Mittels Assembler war aber noch deutlich mehr möglich.
    Ein einfarbiger Sprite hat eine Größe von 24x21 Pixeln. Mehrfarbige Sprites 12x21, da sie mehr Informationen beinhalten.

    Die Sprites wurden dann in Blöcken aufgeteilt, und in den Speicher geschrieben.
    Die Startadresse des VIC (Video-Interface-Chip) ist $D000 (53248).
    Unter $D000 (53248) liegt auch die X-Position des ersten Sprites. Unter $D001 (53249) die Y-Position.
    Wenn wir nun POKE 53248,10 : POKE 53249,20 eingeben, dann wird das erste Sprite in Position (10 | 20) gezeichnet.
    Dann müssen wir den VIC sagen, welche der 8 Sprites aktiv ist. Dies geschieht unter der Adresse $D015 (53269). Wenn wir nun POKE 53269,1 (1 = 0000 0001) schreiben, dann ist das erste Sprite aktiv. Bei POKE 53269,3 wären die ersten beiden aktiv (3 = 0000 0011), etc.

    Jetzt müssen wir den VIC noch sagen, wo unsere Sprite-Daten zu finden sind. Unter der Adresse $07F8 (2040) geben wir den Zeiger für das erste Sprite an.
    Wir müssen uns also einen Bereich im Speicher suchen, den wir benutzen können. Die Daten müssen aber in den 16 KBytes des Speichers stehen. Ein Sprite braucht also 63 Bytes. Der VIC unterteilt den Speicher alllerdings in 64 Byte Blöcken.
    Der 13te, 14te und 15te Block wird vom System nicht verwendet und gilt daher als sicher, daher können wir Block 13 verwenden. Also geben wir POKE 2040, 13 an.

    Und nun kommen die eigentlichen Daten. Die Startadresse von Block 13 ist $AC1A (832). Wir können jetzt also nun POKE 832, 15 angeben, und er würde dann eine Linie aus 8 Pixeln zeichnen (15 = 1111 1111).

    Dieses Beispiel gilt jetzt allerdings nur für BASIC. Mittels Assembler hat man da nun weit aus mehr Möglichkeiten, da wir dort den Videospeicher auch direkt ansprechen können. So können wir auch jeden Pixel einzeln ansprechen und ihn mit Werten füllen. Auch wäre es denkbar zwei Sprites zu addieren, etc. Auch gab es schon damals diverse Hilfsmittel, um Sprites zu zeichnen. Z.B. Zeichenprogramme, die gleich den Assembler- oder BASIC-Code generierten.

  4. #4

    Katii Gast
    aha, das klingt ja sehr aufwendig... da hab ich umso mehr Respekt vor den Leuten, die damals für c64 programmiert haben.

    Ich hab in letzter Zeit darübe nachgedacht ein Textadventure zu machen und habe einen Zeit lang überlegt ob ich probieren soll das auf den C64 zu machen... vielleicht probiere ich da mal ein bisschen rum, da braucht man ja nicht unbedingt Sprites...

  5. #5
    Ich glaube selbst das wäre mit dem C64 und Basic aber aufwändiger als wenn du eine aktuellere Programmiersprache benutzen würdest.

  6. #6
    Für soetwas wie ein Textadventure kann man zum Beispiel auch die neueren RPG-Maker verwenden. Mit Ruby kann man dann auch solch Spielereien wie Schriftfarben und dergleichen einbauen.
    Java bietet sich ebenfalls gut an, vor allem, da es einfach zu lernen ist damit ein Text-Adventure zu programmieren.

  7. #7
    Naja, die Frage ist ja, was man mit der Programmierung bewirken möchte.
    Möchte man einfach nur lernen, wie man früher mit dem C64 entwickelt hat, bringt es ja nichts, eine aktuelle Sprache zu nehmen.

    Sicherlich ist die Entwicklung mit dem C64 sehr viel aufwändiger, als mit aktuellen Sprachen. Schon mal der C64 von Haus aus nur ein extrem rudimentäre Entwicklungsumgebung bietet, die sehr viele Probleme bereiten kann. Vorallem bei größeren Programmen kann es sehr frustrierend werden. Angefangen dass man für jede Zeile eine Sprungmarke braucht, hin über zu schwer editierbaren Code und endet bei keinerlei Debugging-Möglichkeiten. Ohne Erweiterungen wie z.B. Final Cartridge III würde ich da eigentlich nichts großartiges entwickeln wollen. Größere Programme wurden hauptsächlich direkt mit Assembler entwickelt. Es gibt aber auch Entwicklungsumgebungen für C oder Pascal.

  8. #8

    Katii Gast
    also für Textadventures habe ich jetzt ein RPG-Maker like Programm namens Adrift gefunden Ich werde aber trotzdem mit c64 programmierung mal rumspielen, nach ein paar tutorials arbeiten einfach aus Lust an der Freude und weil ich den C64 so mag

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •