Hallo Besucher, der Thread wurde 14k mal aufgerufen und enthält 51 Antworten

letzter Beitrag von skoe am

C-Kurs, Abend 3 - Verbesserungsvorschläge

  • Ha...ha..., bei dem Beispiel geht es um die Char-Klötzchengrafik , kein Thema. Da wird der Charset mit Punkten vollgemüllt.


    So etwas einfaches wollte ich nicht.


    Ich werde mich jetzt nicht hinsetzen und alles für den Plus4 umsetzen, da gehe ich lieber in die Sonne und trinke erst mal einem Capu als Pensionär ...he...he..


    Es geht beim c64 um die Grundsatzbefehle, wie ich oben erwähnt habe und damit ist der c64 mit dem cc65 vollgefüttert.


    Da soll der von und zu des cc65 mal ran wenn er seine Güter mit dem Pferd umritten hat.
    Schliesslich bekommt er Fördergelder vom Bauernverband... :winke:



    Der Fröhn der föhn er föhnt und föhnt:winke:


    mfg

  • C64-spezifische Sachen



    Also für den c64 hat der cc65 alles drin und alles drum,Grafik, Musik usw. Da brauchste nur die Demos in dem Sample-Ordner compilieren, geht los von der Nachtmusik bis zur Grafikkdarstellung.


    Das Beispiel stammt aus dem Sample-Ordner, und die anderen Beispiele sind auch nicht anders.


    Zitat

    Zu verfolgen in den Headerdateien.


    Bloss für den Plus4 geht es da nicht weiter... :schreck!:


    Was sollte in den Header-Dateien denn stehen? Das einzig Systemspezifische, was dort verwendet wird, sind die Header-Dateien für VIC und SID. Aber es gibt auch eine Header Datei für TED, welche ich in dem plasma.c Beispiel verwendet habe.


    Ha...ha..., bei dem Beispiel geht es um die Char-Klötzchengrafik , kein Thema. Da wird der Charset mit Punkten vollgemüllt.


    Das hängt vom Zeichensatz ab. Fast jedes Spiel benutzt zur Darstellung den Zeichensatzmodus. Und für den Bitmap-Modus muss man nur 1 Bit eines VIC- bzw TED-Registers ändern.


    Zitat

    Es geht beim c64 um die Grundsatzbefehle, wie ich oben erwähnt habe und damit ist der c64 mit dem cc65 vollgefüttert.


    Ich habe keinen einzigen "Grundsatzbefehl" bzgl Grafik- oder Soundprogrammierung gefunden. Das sind alles direkte Hardwareregister- und Speicherzugriffe.

  • Für den c64 und cc65 brauche ich mich nicht mehr um die Register 55667 oder 48779 usw kümmern.
    Dort wird alles fein säuberlich mit Namen ala cc65/c64 vergeben, ob es Grafik ist oder Musik. Also fein säuberlich und verständlich.


    Für den Plus4 gibt es nur diese Handvoll:
    /* Define a structure with the ted register offsets */
    struct __ted {
    unsigned char t1_lo; /* Timer #1 low */
    unsigned char t1_hi; /* Timer #1 high */
    unsigned char t2_lo; /* Timer #2 low */
    unsigned char t2_hi; /* Timer #2 high */
    unsigned char t3_lo; /* Timer #3 low */
    unsigned char t3_hi; /* Timer #3 high */
    unsigned char vscroll; /* Vertical scroll control */
    unsigned char hscroll; /* Horizontal scroll control */
    unsigned char kbdlatch; /* Keyboard latch */
    unsigned char irr; /* Interrupt request register */
    unsigned char imr; /* Interrupt mask register */
    unsigned char irq_rasterline; /* Interrupt rasterline */
    unsigned char cursor_hi; /* Cursor position high */
    unsigned char cursor_lo; /* Cursor position low */
    unsigned char snd1_freq_lo; /* Channel #1 frequency */
    unsigned char snd2_freq_lo; /* Channel #2 frequency low */
    unsigned char snd2_freq_hi; /* Channel #2 frequency high */
    unsigned char snd_ctrl; /* Sound control */
    unsigned char misc; /* Channel #1 frequency high and more */
    unsigned char char_addr; /* Character data base address */
    unsigned char video_addr; /* Video memory base address */
    unsigned char bgcolor; /* Background color */
    unsigned char color1; /* Color register #1 */
    unsigned char color2; /* Color register #2 */
    unsigned char color3; /* Color register #3 */
    unsigned char bordercolor; /* Border color */
    unsigned char bmap_reload_hi; /* Bitmap reload bits 8+9 */
    unsigned char bmap_reload_lo; /* Bitmap reload bits 0-7 */
    unsigned char rasterline_hi; /* Current rasterline bit 8 */
    unsigned char rasterline_lo; /* Current rasterline bits 0-7 */
    unsigned char rastercolumn; /* Current rastercolumn */
    unsigned char cursor_blink; /* Cursor blink attribute */
    unsigned char unused[30]; /* Unused */
    unsigned char enable_rom; /* Write enables ROM */
    unsigned char enable_ram; /* Write enables RAM */
    };




    Ps: Aber nicht des Trotz hast du die Sache mit dem Plasma gut gemacht. Ich habe die in der cc65 "Sample so nicht gefunden". :winke:

  • Man vergleiche:


    C64:
    include/_vic2.h <-> VIC-II register
    include/_sid.h <-> SID register


    C16/C116/Plus4:
    include/_ted.h <-> TED register


    So ist das nun einmal: C64 hat VIC2 für Grafik und SID für Sound, Plus4 hat TED für Grafik+Sound


    Die VIC2-Register $D011 und $D016 sind übrigens fast identisch zu den TED-Registern $FF06 und $FF07. Damit lässt sich schon vieles, was keine Sprites verwendet, problemlos übersetzen.