Hello, Guest the thread was viewed40k times and contains 853 replies

last post from Snoopy at the

Alles über COMAL 80 V2.01 – Der ultimative Mega-Thread

  • Also das COMAL-SPIEL {C64 und C128 kompatibel! ZUM TESTEN!!!}

    Ja, was haben wir denn da? Das sieht ja schon sehr gut aus. Ich kann zwar die Spielfigur nicht bewegen (weder mit einem Joystick in Port 1 noch in Port 2). Aber die Bälle bewegen sich von rechts nach links und der Hund ist auch animiert.) - Abgesehen von diesen kleinen Unstimmigkeiten könnte es durchaus das COMAL-Spiel des Jahres 2025 werden. :)


    Anmerkung: Wenn ich am Anfang bei "Greenhorns may warum up first?" Y auswähle, dann steht da <LDA> und nichts passiert mehr.

    oooppsss... Hab' ich ganz vergessen... WASD Tastaturtasten sind zu verwenden...

    Joystick-Steuerung habe ich geplant, aber leider nie dazu gekommen.


    Y {LDA} - N {NOP} ... {LDA/NOP sind aus der Assemblerwelt. Steht hier anstelle von YES / NO}

    Y startet ab Level 1

    N überspringt die Anfangsphase {nur 1 Gegner, und es wird kein Bonus verteilt}

    Nach der Auswahl, auf ENTER/RETURN hauen!

    Mit Q kann man das Spiel verlassen {oder auch nicht, als Option!}

  • Hab' ich ganz vergessen... WASD Tastaturtasten sind zu verwenden...

    Finde ich nicht schlimm. Köntest du im Titelbild aber vielleicht irgendwo erwähnen.

    Y {LDA} - N {NOP} ... {LDA/NOP sind aus der Assemblerwelt. Steht hier anstelle von YES / NO}

    Wie soll man das wissen? Das würde ich unbedingt anders machen.

  • Hab' ich ganz vergessen... WASD Tastaturtasten sind zu verwenden...

    Finde ich nicht schlimm. Köntest du im Titelbild aber vielleicht irgendwo erwähnen.

    Y {LDA} - N {NOP} ... {LDA/NOP sind aus der Assemblerwelt. Steht hier anstelle von YES / NO}

    Wie soll man das wissen? Das würde ich unbedingt anders machen.

    Es war drauf, aber Texte verschlucken viel Speicher und habe es drum gelöscht...

    Und dann auch noch vergessen zu erwähnen...

    Kommt wieder drauf sobald ich den Quelltext bereinige, etwas Platz gewinne.

    Ich will unbedingt im Bereich von 25-26KB bleiben damit ich noch etwas Platz habe für mögliche Aktualisierungen {C64}

    ...

    Ja, stimme zu LDA und NOP sind nicht gerade die gescheiteste Idee gewesen, werde anpassen.

  • Ja, stimme zu LDA und NOP sind nicht gerade die gescheiteste Idee gewesen, werde anpassen.

    Assembler eignet sich hervorragend als Gedächtnisstütze und Ähnlichem.


    INC$D020 war zum Beispiel mal einige Zeit lang mein Passwort für den Bürorechner. :D

    Das stimmt wiederum.

    Wäre das Spiel nur für mich, dann würde wahrscheinlich BNE/BEQ drin steht, aber irgendwo muss ich nachgeben... Jetzt steht YES/NO! drin :D

    Assembler-Sprache die alle verstehen.

  • Dabei kamen wir zu dem Ergebnis, dass eine Manipulation des Package zur Einführung eines neuen Befehls TEMPO unvorhersehbare Nebenwirkungen haben könnte.

    Naja, so würde ich es nicht ausdrücken wollen.


    Man kann natürlich nicht das aktuelle Package durch irgendwelche Pokes anpassen.

    Aber man kann ein neues Package auf dessen Basis aufbauen.

    Und da dieses Package unabhängig ist, kann man es auch mit einem gewissen Aufwand sehr wohl erweitern, ohne dass es Nebenwirkungen gibt.


    Was nicht möglich ist, ist ein Mischbetrieb der alten Funktionen mit gleichzeitiger Nutzung der neuen Funktionen, da der Interrupt-Vektor dann auf die neuen Funktionen zeigt, und somit die alten Funktionen nicht mehr funktionieren.

    Dazu sollten die neuen Funktionen auch einen anderen Namen bekommen. Z.B. PLAYSCORE2 anstelle von PLAYSCORE


    Möglich wäre z.B. die Funktion PLAYSCORE2 um weitere Parameter zu erweitern.

    Z.B. könnte man die Werte für A, D, S, R getrennt übergeben, auch ein Parameter für TEMPO , oder auch BPM wäre möglich.
    Im Moment werden in der Interrupt-Routine lediglich 2 Zeitparameter bearbeitet, das könnte man aber auch auf 4 Parameter umstellen.
    Für die Berechnung des Tempos, müsste eine neue Funktion integriert werden, welche die eingegebenen ADSR-Parameter anpasst.
    Mit diesen Änderungen könnte man den Sound-Befehl von Comal80 erheblich verbessern.


    Aber wie oben erwähnt, ein gewisser Aufwand wäre dazu natürlich erforderlich.

    LG

    Claus

  • ClausS: Ich habe die letzten Tage sehr viel mit dem von GoDot vorgeschlagenen "Workaround" experimentiert. Das heißt: Ich habe alle Werte für Dauern mit einem bestimmten Wert multipliziert/dividiert, um die Geschwindigkeit anzupassen.


    Ergebnis: DAS GEHT GAR NICHT! Auf diese Weise hat man keine Chance, das Tempo sinnvoll anzupassen. Ich habe die Tetris-Melodie in COMAL umgesetzt und die läuft entweder mit ca. 90 BPM (viel zu langsam) oder mit ca. 180 BPM (viel zu schnell). Irgendwas dazwischen ist nicht machbar! (Das Tetris Thema sollte mit ca. 140 BPM laufen.)


    ClausS: Ich würde es sehr begrüßen, wenn du so ein Sound-Package entwickeln könntest, wie du es vorgeschlagen hast! Siehst du da vielleicht doch noch eine Chance? BITTE! BITTE! BITTE! (Ich krieche auf Knien umher und winsele. Und gucke dabei ganz lieb.)

  • FloatingRiver: Jetzt, da ich weiß, dass man das Spiel mit WASD steuert, habe ich es nochmal probiert. Es ist echt super! Es erinnert mich an die guten alten Spiele vom Atari 2600. Aber besser. Folgende Dinge sind mir aufgefallen:


    - Die Sprites werden teilweise in Multicolor dargestellt.

    - Unter den numerischen Werten (oben) sind Farbklötze, die da nicht hingehören.

    - Manchmal kommt die Spielfigur unten links mehrmals ins Bild, das sollte wohl nicht so sein.

    - Das Löschen des Bildschirms am Ende einer Spielrunde dauert relativ lange.

    - Wenn ich eine bestimmte Position oben links erreiche, kriege ich Punkte. Wieso?

    - Die Steuerung mit WASD ist schwierig.

    - Ich finde den Titel des Spiels "GAMEONC128" nicht so gut. Das hat irgendwie keinen Schmiss. Kannst du dir nicht einen anderen Titel einfallen lassen? Z.B. "MEGA-DOGtm" oder so?


    Hier noch ein paar Screenshots:

       


       


       

  • Hier noch ein paar Screenshots:


    Ich erhöhe bei Score und LV:



    Nachtrag:

    - Die Sprites werden teilweise in Multicolor dargestellt.


    Wenn man das Warm up macht.


    Quote

    - Das Löschen des Bildschirms am Ende einer Spielrunde dauert relativ lange.


    Das soll entspannen, wie wenn man 5 Stunden einen Picasso betrachtet oder Ghost Valley und Pupu spielt. :D


    Quote

    - Wenn ich eine bestimmte Position oben links erreiche, kriege ich Punkte. Wieso?


    Fliegt man oben am Rand entlang, weil man sich vor dem Ballautobahn drücken will, bekommt man Punktabzug. Oder meinst du was anderes?

    Hat mich ein paar Punkte gekostet, weil ich wissen wollte, was da piept und warum der Hund sich gefährlich rot färbt.


    Quote

    - Die Steuerung mit WASD ist schwierig.

    Ich find's gut, aber Ghost Valley spielt sich mit Tasten schwierig. :emojiSmiley-16:


  • - Die Sprites werden teilweise in Multicolor dargestellt.

    {Ich hatte das Problem gerade 1x beim C64 und nie beim C128 und dachte es sei behoben, aber dem ist wohl nicht so, Werde mich auf die Suche machen. COMAL hat im Byte 64 die 0 oder 1 als Kennung für hochauflösende- oder multicolor-Grafik}


    - Unter den numerischen Werten (oben) sind Farbklötze, die da nicht hingehören.

    {Das gleiche wie mit dem Sprites. Anscheinend steht da noch was im weg. Beim C128 hatte ich das Problem noch nie. Auch hier nur 1x und später nicht mehr... Bedarf wohl auch weitere Abklärung}


    - Manchmal kommt die Spielfigur unten links mehrmals ins Bild, das sollte wohl nicht so sein.

    {Das ist halt wegen der Kollisionsabfrage. Kollisionszustand wird nicht gelöscht und somit wird SLIDEIN Prozedur mehrmals abgerufen. Normalerweise reicht es den Zustand abzulesen damit es auf Null gesetzt wird , aber bei COMAL (C64) sind in diesem Adress-Bereich Sprite-Daten drin... Ich Suche in den alten Zeitungen. Das Problem ist nicht neu und somit hat jemand früher sicher eine Lösung gefunden. Denke ich werde fündig!}


    - Das Löschen des Bildschirms am Ende einer Spielrunde dauert relativ lange.

    {Ja, das ging auch mir auf den Keks :D... Werde dafür was im Assembler schreiben damit es rasanter gemacht wird. Die Anzeige selber bleibt lange stehen, aber das ist beabsichtigt so. Es lässt sich mit 'press on any-key' jederzeit unterbrechen, bzw. die Löschung vorzeitig aktivieren}


    - Wenn ich eine bestimmte Position oben links erreiche, kriege ich Punkte. Wieso?

    {Also ganz oben {links/rechts}, bekommt man Punkteabzug, weil man dort die 'über die Straße' gehen kann ohne die Gefahr einer Kollision mit dem Gegner. Ja, das kostet halt was :whistling:


    - Die Steuerung mit WASD ist schwierig.

    {werde auch eine Joystick-Steuerung implementieren. Allerdings nur OBEN, UNTEN, LINKS und RECHTS... keine Diagonalen!}


    - Ich finde den Titel des Spiels "GAMEONC128" nicht so gut. Das hat irgendwie keinen Schmiss. Kannst du dir nicht einen anderen Titel einfallen lassen? Z.B. "MEGA-DOGtm" oder so?

    {GAMEONC128 ist halt noch drin weil das Spiel eben nur für C128 gedacht war. Bin auch der Meinung, dass es jetzt anders heißen muss. Nur ist mir nichts eingefallen. Darum werde ich jetzt den MEGA-DOG Vorschlag dankend akzeptieren und umsetzen. Also danke sehr {und hoffentlich kommt mich keiner verklagen :D:D}}

  • - Die Sprites werden teilweise in Multicolor dargestellt.

    {Ich hatte das Problem gerade 1x beim C64 und nie beim C128 und dachte es sei behoben, aber dem ist wohl nicht so, Werde mich auf die Suche machen. COMAL hat im Byte 64 die 0 oder 1 als Kennung für hochauflösende- oder multicolor-Grafik}

    Ich hatte diesen Fehler bisher jedes Mal. Manchmal war der Hund in Hires und die anderen Sprites in Multicolor. Manchmal wechselt der Hund zwischen Hires und Multicolor. Aber ganz in Ordnung ist es nie. (Egal ob ich im Trainingsmodus oder mit einem normalen Spiel beginne.)

    - Wenn ich eine bestimmte Position oben links erreiche, kriege ich Punkte. Wieso?

    {Also ganz oben {links/rechts}, bekommt man Punkteabzug, weil man dort die 'über die Straße' gehen kann ohne die Gefahr einer Kollision mit dem Gegner. Ja, das kostet halt was :whistling:

    Ach so. Und ich habe immer gedacht, ich würde Punkte kriegen. Aber okay. Wenn man es weiß, dann ist es nachvollziehbar und gut. Vielleicht schreibst du ja irgendwann noch eine Anleitung im PDF-Format dazu. Da kannst du dann alles reinschreiben, was du im Spiel aus Speicherplatzgründen nicht erwähnen konntest.


    Wie dem auch sei. Ich finde dein Spiel jetzt schon sehr gut. Wenn du es noch ein bisschen verfeinerst, dann ist es definitiv ein Superhit mit Suchtpotenzial. ⭐⭐⭐⭐⭐


    Lynx: Du hast meinen Hi-Score geknackt. Potztausend! Da werde ich wohl noch ein bisschen üben müssen.

    ClausS: Wo bleibt mein Sound-Package mit Tempo-Angabe? Ich will es sofort haben. :D (Nur Spaß.)

  • Nachtrag:

    - Die Sprites werden teilweise in Multicolor dargestellt.


    Wenn man das Warm up macht.



    Omega , Lynx


    Danke für den Hinweis...

    Habe jetzt eine paar Kleinigkeiten angepasst {nur C64 Teil}, also beim C128 wird wohl immer noch Multi-Color kommen bei LDA {heißt jetzt YES}... Aber anscheinend nur 1x... Ich habe LDA gar nicht verwendet und darum ist mir das nicht bewusst gewesen...


    Also falls noch was gefunden wird, immer her damit. DANKE!


    GOC64-C128-001A-08062025.d64

  • Darum werde ich jetzt den MEGA-DOG Vorschlag dankend akzeptieren und umsetzen.

    Achtung! Der Begriff "Mega" ist inzwischen anders konnotiert! ;-) Du weckst womöglich falsche Erwartungen!


    Arndt

  • Darum werde ich jetzt den MEGA-DOG Vorschlag dankend akzeptieren und umsetzen.

    Achtung! Der Begriff "Mega" ist inzwischen anders konnotiert! ;-) Du weckst womöglich falsche Erwartungen!


    Arndt


    Haha... OK, aber ich verwende CLOSED bei der Prozedur! Also ein C= MEGAlodon kann uns nichts anhaben! ;)

    Natürlich, ein HAPPY-DOG oder ANGRY-DOG würde auch passen {müsste für den 2. Vorschlag sein lässiges grinsen entfernen, aber liegt noch im machbaren Bereich :D > X(


    Ich frage mich trotzdem immer wieder wie ich auf den Hund gekommen bin!

    Auf dem Besitz befinden sich über 50 Katzen :thumbsup: und nur 2 Hunde :thumbup:

  • Werte Freunde der gepflegten 8-Bit-Melodien und COMAL-Zauberer!


    Erlaubt mir, ein kleines Meisterwerk mit euch zu teilen - eine musikalische Komposition, geboren in langen Nächten bei flackerndem Kerzenschein, mit nur einem treuen Gefährten an meiner Seite: Mein ehrwürdiger Commodore 64 und das noble COMAL80-Modul.


    Ich präsentiere euch: Das Tetris-Thema ("Korobeiniki") als epische Sounddemo in COMAL!

    Ein Werk von solch klanglicher Tiefe, dass selbst der junge Beethoven vermutlich neidisch aus dem Himmel blicken würde - hätte er jemals einen SID-Chip besessen.


    Über das Werk

    Die Aufführung dauert exakt 2:00 Minuten, was - ich gebe es offen zu - nicht der ursprünglich intendierten musikalischen Vision entspricht. In Wahrheit sollte dieses Werk in furiosen 140 BPM daherkommen und nur 1:36 Minuten lang sein.

    Doch ach! COMAL80 kennt keine Gnade - die Befehle SETSCORE und PLAYSCORE lassen keine Tempoänderung zu.

    Ein schwerer Schlag für mein künstlerisches Ego.


    Ein Aufruf an die COMAL-Gemeinde!

    Hiermit rufe ich alle Gelehrten, Meister und Magier der COMAL-Kunst auf:

    Wer ist würdig, ein COMAL-Package zu erschaffen, das das Tempo von Scores anpassen kann?

    Stellt euch vor: Ein SETTEMPO-Befehl! Eine Variable BPM!

    Ein Legato in Maschinenzeit!


    Derjenige, der dies vollbringt, wird nicht nur ein Held der Szene, sondern zweifellos seinen Platz in den Annalen der 8-Bit-Geschichte einnehmen. Er wird in den Lehrbüchern direkt neben Namen wie Børge Christensen und Benedict Løfstedt erscheinen. Und die Menschen werden staunend auf ihn blicken und sagen:

    "Er hat getan, was selbst den Vätern von COMAL unmöglich erschien: Er hat das Tempo kontrolliert."


    Anbei die Diskette mit meinem Sounddemo.


    In Noten und Nacht versunken,

    Euer ergebenster,

    Omega

  • Bravo! Sehr gut gemacht! Es klingt fantastisch!

    Dachte noch vor wenigen Tage, dass NOTE(1,"C3"); GATE(1,1) bereits einen glücklich macht in Sachen Musik...

    Es hat mich natürlich gejuckt wenn ich 1:36 gelesen habe.

    Zum Glück hat VICE die CPU Geschwindigeit-Einstellungsmöglichkeit {was für ein Wort :S}

    CPU auf 125% eingestellt und man kommt in, +- ein paar Millisekunden, den 1:36 Bereich


    Jetzt fühle ich mich motiviert ein paar Noten auch für das Spiel zum Leben zu erwecken!

    {vergessen wir mal schnell, dass ich in diesem Bereich eine totale Niete bin :D}



  • ClausS: Ich würde es sehr begrüßen, wenn du so ein Sound-Package entwickeln könntest, wie du es vorgeschlagen hast! Siehst du da vielleicht doch noch eine Chance? BITTE! BITTE! BITTE! (Ich krieche auf Knien umher und winsele. Und gucke dabei ganz lieb.)

    Ich schaue mir das noch mal an.
    Aber ich muss auch anmerken, dass Comal80 da eine eigenwillige Art hat, wie die Samples im Interrupt gespielt werden.
    Die Längen der Töne variieren auch geringfügig in Abhängigkeit, wieviel Stimmen gespielt werden. Wird z.B. nur eine Stimme gespielt, dann ist die entsprechende Routine geringfügig kürzer, als wenn alle drei Stimmen gespielt werden.

    (ca. 0.2 - 0.6 ms pro Durchlauf) Das sollte allerdings nicht in's Gewicht fallen.
    Allerdings muss die Anzahl der zu spielenden Stimmen beim Tempo der zu spielenden Noten berücksichtigt werden. Klingt komisch, ist aber so!^^


    Btw. ich konnte die Länge deines Musikstücks "prg.tertris-all" auf 90 Sekunden bringen, ohne irgendwas aus dem Takt zu bringen. Was wenn ich mich nicht verrechnet habe ca. 149 BPM entspricht.
    Also fehlt hier für das Fine-Tuning halt noch der letzte Schliff.
    Das wird aber der schwierigen Teil.


    Mal sehen, was ich da machen kann. (Das wird wohl ein bisschen dauern.)


    Claus

  • {Comal C128}


    Klein-/Grossbuchstaben Problem { *** gelöst *** }


    Ich programmiere auf dem VDC Screen, also 80 Zeichen, Kleinschrift.

    Im Programm steht auf Großbuchstaben schalten {40-Zeichen} = PRINT CHR$(142)

    Nur, beim ersten Mal starten passiert nix. Siehe Screenshot!


    {in dieser Reihenfolge geht es, umgekehrt nicht, bzw. erst wenn zum 2. Mal das Programm ausgeführt wird}

    Lösung: 10 TEXTMODE(0)

    20 PRINT CHR$(142)




    Das 'COMAL 128 Kollege macht was er will' Problem!


    Kann es sei das COMAL Module, bzw. in diesem Fall COMAL 128 noch so einige Macken hat?

    {aber auch C64 COMAL hat anscheinend auch solche Probleme, erster Start}


    Hier wird mit Multi-Color-Sorgen gekämpft (vorläufig im C128 Modus).

    Das Zeug ist ziemlich zufallsartig... Am Anfang erscheinen alle Sprites als Multi-Color!

    {Byte 64 ist auf Null gesetzt, also kein Multi-Color Sprite}


    Nach abbrechen und nochmals starten ist alles wieder okay.

    Nun habe ich aber plötzlich den ersten Sprite in der Multi-Color Version, obwohl dieser Zustand nie verlangt worden ist.


    Wenn ich abbreche und nochmals starte, also RUN, dann ist wieder alles okay!?


    Dachte als Lösung in die Hauptlupe schnell : IF PEEK(53276)<>0 then POKE 53276,0

    Aber dann blinkt der Sprite wie verrückt weil es offensichtlich immer wieder auf 1 schaltet, also Multi-Color.

    Abbrechen und RUN, alles wieder normal als wäre nie was gewesen!


    Siehe Screenshot für mehr Details.