Hallo Besucher, der Thread wurde 9,8k mal aufgerufen und enthält 48 Antworten

letzter Beitrag von Vernunftmensch am

Hintergründe

  • Sprites wären extrem aufwändig. Von Haus aus kann der C64 nur 8 Sprites darstellen. Zwar kann man die Anzahl mit entsprechenden Tricks ganz ordentlich erhöhen, aber für einen Hintergrund ist das eher ungeeignet. Sprites eignen sich eher für bewegliche Objekte, dafür sind die auch gedacht.
    Hintergründe sind entweder Bitmap Bilder (Hires oder Multicolor), oder deutlich häufiger umgeänderter Zeichensatz. Man kann beim C64 die Buchstaben und Sonderzeichen der Tastatur praktisch beliebig ändern. Da baut man sich die passenden Zeichen und macht damit den Hintergrund.

  • @C64 Junior:


    Selbstverständlich können Hintergründe auch aus Sprites bestehen.


    Oder aus Zeichensatzzeichen, Bitmap-, Hires- oder Multicolor-Grafiken.


    Schönen Gruß.


    Sprites haben den Vorteil, daß man sie mit den Positionsregistern ab 53248 auf dem Bildschirm verschieben kann.
    Da es aber am C64 nur 8 Sprites gibt kann man damit nur mit Tricks den ganzen Bildschirm füllen.
    Standard-Hintergründe sind daher aus Zeichsatz-Zeichen oder Grafiken aufgebaut.


    Schönen Gruß.


    Mit diesem Code kannst du am C64 den 16 kB Grafikbereich ab 49152 öffnen.
    Damit hat der Basic-Coder dann 16 kB freien Speicher für alle Grafiksachen.
    Wie z.B. Bitmap, Sprite, Zeichsätze oder mehrere Bildschirme.


    Das Listing zeigt, wie man den Bildschirm nach 52224 verlegt.
    Zeile 152 zeigt wie man dann den Zeichensatz ändern kann.


    Quellcode:
    150 :rem--rom/ram,bild:52224,satz:53248
    151 poke56334,0:poke1,51:fori=88to91:pokei,0:next:poke781,97:poke782,.:sys41971
    152 :poke53248+32*8+6,16
    153 poke1,53:poke56334,1:poke648,204:sys58692:poke53272,52:poke56576,196:return


    Wenn man statt :poke1,53: :poke1,55: in Zeile 153 macht, hat man den vollen 16 kB-Bereich zur Verfügung.
    Bei poke1,53 hat man 1kB für den Bildschirm, 3 kB ab 49152 zur freien Verfügung und 4kB für Zeichensatzgrafik.


    Damit hat man als Basic-Coder dann tatsächlich nahezu alle Möglichkeiten, wie ein Maschinensprache-Programmierer.


    Schönen Gruß.

  • Rot im Kalender anstreich.


    Bif verwendet weniger Doppelpunkte. 8o


    Jan, am besten schaust Du mal in die F64 Wolke. F64 Wolke
    Da kannst Du Dir unzählige Bücher als PDF runterladen oder auch komplett eingescannte Zeitschriften wie die 64er.


    Und nicht auf Ace hören, wegen der Qualität. Zum durcharbeiten eines Themas reicht das alle mal. ;)

  • BIF:
    Bitte bedenke, daß c64 junior noch Anfänger ist. Daher wäre es m. E. ratsam die genaue Funktionsweise Deines Programms zu erklären. Vor allem was in den einzelnen Zeilen warum und zu welchem Zweck geschieht.

  • Im übrigen bin ich natürlich der Meinung, daß man nie gleich alles verstehen kann.

    Da gebe ich Dir sogar Recht.....ABER:
    Der Unterschied ist aber, wenn man es aber wenigstens *versucht* eine sinnvolle, aufbauende Erklärung für das Zielpublikum (hier: absoluter Anfänger) zu liefern, dann kann ein Anfänger nachfragen, wo es noch nicht klar ist oder wo er noch mehr Infos braucht.


    Du hingegen lieferst schon mal gar keine Erklärung und erwartest, dass man Dir auf die Schulter dafür klopfst, was für eine tolle Lösung Du geliefert hast.
    Fragt man danach, dann kommen irgendwelche "erklär's doch selbst" und "es ist eh alles klar" Standard-Antworten von Dir. Das hilft niemanden.


    Als Anfänger ist man dann frustriert, wenn man etwas macht und es nicht funktioniert und/oder man es nicht versteht.
    Im Schlimmsten Fall gibt man das Programmieren auf und geht ins Kloster.


    @c64 junior : Eine Beschreibung der Grundlagen, wie man eigene Zeichensätze (Charsets) z.B. mit CharPad erstellen kannst, findest Du auf Deutsch hier. Rudimentäre Grundlagen hat das C64 Wiki auch beschrieben.
    Die Beispiele im ersten Link sind zwar in Assembler geschrieben, aber die Erklärung der Grundlagen sollte dort trotzdem verständlich sein. Es gibt auch andere Tutorials in Englisch, wenn du danach googlest.

  • @syshack:
    Alles kann man nie erklären.
    Wenn man ein funkionierendes Listing hat, ist man grundsätzlich schon auf der besseren Seite.
    Ob man deshalb ins Kloster gehen muß wär natürlich die Frage.
    Wenn man mehr verstehen will muß man natürlich versuchen sich in das Thema einzulesen oder ein bisschen mit dem Listing rumexperimentieren.
    Meine Erklärungen sind zwar nicht ausschweifend, aber wie ich meine ausreichend gewesen.


    Ansonsten sage ich noch, daß bei der ROM-RAM Kopie das Betriebssystem und der Zeichensatz ins RAM kopiert werden, wo der Nutzer dann beides oder den Zeichensatz, wie im Demo gezeigt, verändern kann.
    Das heißt, mit dem Programm ist eine Zeichensatz-Änderung und Betriebssystem-Änderung möglich.
    Außerdem gewinnt der C64-Programmierer bis zu 16kB Speicher für Grafik-Sachen. Oder in der Standar-Konfig 3 kB, die für Sprites, Zeichen oder alternative Bildschirme genutzt werden können.


    Schönen Gruß.


    Das ROM/RAM-Unterprogramm hat ja die Zeichensatzprogrammierung am C64 enorm vereinfacht.


    Als ich angefangen habe wurde noch Adresse 2048-4095 als optimaler Zeichensatz-Bereich empfohlen.
    Da hat man erst mal einen Zeichensatz editiert.
    Dann brauchte man ein Vorprogramm, das die Basicstart-Adresse nach 4096 verlegt hat.
    Und damit hat man dann das Hauptprogramm geladen.
    Und mit dem Hauptprogramm hat man dann den Zeichensatz nach 2048 geladen.
    Dabei hat man dann natürlich 2 kB vom Basic-RAM verloren.


    Mit ROM-RAM hat man nun keine Einschränkungen mehr.
    Man braucht keine Verlegung der Basic-Startadresse.
    Man braucht keinen Nachlader mehr für´s Hauptprogramm.
    Der Zeichsatzbereich liegt nun im oberen RAM ab 53248.
    Und man kann nun sogar einzelne Zeichen ändern.
    Dazu kann man noch beide Zeichensätze also 1 und 2 benutzen.
    Einen Zeichsatz oder Sprites kann man bequem nach 49152 laden oder kopieren.
    Dazu hat man dann noch jede Menge Speicher für Sprites, Grafik oder weitere Bildschirme.
    Und mit Tricks kann man sogar noch 1kB -Basic-RAM-Speicher zusätzlich freischalten.
    Darüberhinaus öffnet man mit ROM/RAM den C64 praktisch für alle Tricks, da man nun
    sowohl das Betriebsystem als auch den Zeichsatz ändern kann.


    Schönen Gruß.

  • Das ROM/RAM-Unterprogramm hat ja die Zeichensatzprogrammierung am C64 enorm vereinfacht.

    :lol33:


    EDIT:

    Wenn man ein funkionierendes Listing hat, ist man grundsätzlich schon auf der besseren Seite.

    Zeile 152 macht einen Schreibzugriff auf $d106, das ist eine Schattenkopie eines Sprite-Registers...


    EDIT2: Ich muss mich korrigieren, da der POKE bei abgeschalteten I/O-Chips ausgeführt wird, geht er in den Zeichensatz und ist Absicht. Mein Fehler, tut mir leid.

  • Das ROM/RAM-Unterprogramm hat ja die Zeichensatzprogrammierung am C64 enorm vereinfacht.

    Man soll sogar den Speicher beliebig ändern und sogar ganz neue, selber ausgedachte Zahlen da reinschreiben können. Und der merkt sich das dann! Das geht sogar direkt unter BASIC, mit dem sogenannten PEEK/POKE-Trick™! Ich weiß, klingt kompliziert, ich habe es auch noch nicht so ganz begriffen. :gruebel

  • So, ich habe BIF's Programm mal eben im Vice getestet und es tut auch das was es soll. Was die seltsam anmutende Adresse in Zeile 152 betrifft, an der Stelle befindet sich nach der Ausführung des Programms das Leerzeichen. Also, völlig korrekt das ganze.


    Aaaber, wie ich schon eingangs erwähnt hatte, wäre eine Erklärung des Programms seitens BIFs viel hilfreicher gewesen, als seine Vorträge und Belehrungen. Das hätte hier viel Spott und Spam erspart.

  • @Metalmorphosis:
    Herzlichen Glückwunsche.


    Wenn du denkt du wüstest wie ein Programm funktioniert, ohne es zu testen, dann bist du leider schief gewickelt.
    Ohne Ausprobieren läuft am Computer gar nichts.
    Sonst kommt eben dabei heraus, daß einige denken das wär ein Programmfehler, sogar MC-Profis, wie MC-Bacon.


    Schönen Gruß.

  • MC-Bacon

    Yo, MC Bacon fka. MC Hammer :dance Can't touch this...


    Wenn du denkt du wüstest wie ein Programm funktioniert, ohne es zu testen, dann bist du leider schief gewickelt.
    Ohne Ausprobieren läuft am Computer gar nichts.

    Naja... es gibt Sachen, die würde ich blind eintippen und wüsste sicher, was passiert. OB ein Programm so funktioniert, wie gedacht: Da stimme ich dir ja mal zu. Das Programm macht halt das, was man ihm sagt. Das Ausprobieren ändert daran ja nichts. Mag aber vielleicht auch Leute geben, die so perfekt sein mögen (ich beileibe auch nicht), ohne Testen sich derem sicher zu sein. Abe wohl eher ein seltenes Völkchen.