Hello, Guest the thread was called1.7k times and contains 24 replays

last post from EgonOlsen71 at the

Tomb Chaser 2020 - ein C64 Spiel in Basic V2

  • Ich war so frei, eine compilierte Version zu erstellen (im Anhang als PRG, muss man auf das d64-Image ziehen und statt der BASIC-Version laden, sonst fehlen natürlich die neuen Zeichen). Dazu musste ich den Compiler leicht erweitern, so dass SYS mit Parametern auch ohne Trenner funktioniert (wegen sys 57812"2020",8,0) und das PRINT@ habe ich aufgeteilt in @ gefolgt von PRINT, weil ich sonst irgendwie hätte erkennen müssen, dass der letzte Parameter wie bei PRINT zu behandeln ist und nicht normal und woher soll man das zur Compilezeit wissen? Wäre vermutlich auch sehr langsam geworden, weil ich bei SYS mit Parameter auf den Interpreter zurückfalle.

    So, bin endlich mal dazu gekommen, mir das ins D64 zu schubsen und auf dem U64 anzuschauen. Flott ist es, aber da fangen auch die Probleme an. :) Man müsste da mit Blick aufs Compilieren hin programmieren, sonst klappt da timing-technisch hinterher nix mehr. Lässt sich in MOSpeed auch individuell die Geschwindigkeit für bestimmte Programmabschnitte festlegen? Das Titelbild baut sich in normaler Geschwindigkeit auf, also wenn das 2020 reinfliegt, aber die Joystickabfrage im Menü ist dann schnell, leider auch zu schnell, dass man den Joystick nur extrem kurz Antippen darf, damit es nicht gleich 2 oder mehr durchrauscht. Auch im Spiel ist die Bewegung der Figur dann zu schnell, dass man die Kurven nicht erwischt und die Gruft stürzt viel zu schnell ein. Da müsste man quasi vorab wissen, wie viel schneller das Compilat läuft und entsprechende Pausen einbauen, damit das Timing passt. So schön schnell es compiliert auch läuft, so knifflig wäre es zu planen, zumindest bei Spielen.

    Dein MOSpeed ist schon sehr umfangreich, top!, muss mal gucken, ob ich was geeignetes dafür von mir finde. Dann noch die 48 MHz vom U64 zuschalten, dann wird's auch was mit einer Flugsimulation in BASIC. :D

  • "Spolier Warnung! Zu Weihnachten gibt's auf meiner Seite Santa's Snowball Challenge in einer überarbeiteten 2020 Version, ist mit ZeHa abgesprochen und genehmigt, da im Heft eine frühere Version gelandet ist."

    Wieder entfernt? Ich bekomme (mit Handy) nur ein Bild mit einem Schneemann angezeigt.

  • So, bin endlich mal dazu gekommen, mir das ins D64 zu schubsen und auf dem U64 anzuschauen. Flott ist es, aber da fangen auch die Probleme an. :) Man müsste da mit Blick aufs Compilieren hin programmieren, sonst klappt da timing-technisch hinterher nix mehr.

    Ja, das stimmt. Auf den alten Kisten programmiert man im Prinzip oft so, als gäbe es nur eine Geschwindigkeit (was ja auch meistens stimmt...). Auf heutigen Maschinen oder auf schon auf den PCs der 90er hat das niemand mehr gemacht. Da hängt die Logik dann eben nicht mehr von der Bildrate und/oder der CPU-Geschwindigkeit ab, sondern läuft in der ein oder anderen Form zeitbasiert, und damit unabhängig von der Systemgeschwindigkeit, ab. Das kann man in BASIC auch machen, aber es verbraucht zusätzliche CPU-Zeit für eben dieses Timing. Hätte aber den Vorteil, dass ein Compiler oder auch ein Turbomodus nicht alles durcheinander bringen würde. Ich habe das mal für Soundausgaben in BASIC probiert, das hat eigentlich ganz gut geklappt.

    Aber ja, entweder muss man das Timing entkoppeln oder zumindest auf die zu erwartende, höhere Geschwindigkeit ausrichten.


    Quote


    Lässt sich in MOSpeed auch individuell die Geschwindigkeit für bestimmte Programmabschnitte festlegen? Das Titelbild baut sich in normaler Geschwindigkeit auf, also wenn das 2020 reinfliegt, aber die Joystickabfrage im Menü ist dann schnell, leider auch zu schnell, dass man den Joystick nur extrem kurz Antippen darf, damit es nicht gleich 2 oder mehr durchrauscht. Auch im Spiel ist die Bewegung der Figur dann zu schnell, dass man die Kurven nicht erwischt und die Gruft stürzt viel zu schnell ein.

    Nein, man kann keine Bereiche gesondert behandeln. Das Titelbild nutzt auch im Compilat noch die SYS XXX,YY,BB...-Methodik für das Print@. Und die kann man nicht kompilieren, weil das im Prinzip Hacks mit dem Interpreter sind und keine valide Syntax. Deswegen fällt MOSpeed bei diesen Konstrukten quasi in den Interpreter zurück und erzeugt sogar noch zusätzlichen Overhead, weil zur Laufzeit BASIC-Quelltext generiert wird. Dadurch ist das nicht wirklich schneller, manchmal sogar langsamer.


    Quote

    Da müsste man quasi vorab wissen, wie viel schneller das Compilat läuft und entsprechende Pausen einbauen, damit das Timing passt. So schön schnell es compiliert auch läuft, so knifflig wäre es zu planen, zumindest bei Spielen.

    Ja, Pausen sind auch so ein Ding...;) Ich musste den Loop-Optimizer des Compilers ausschalten, ansonsten entfernt der diese FOR I=0 TO 500:NEXT-Warteloops einfach und dann läuft das an vielen Stellen noch schneller...zu schnell. Ich selber bin daher komplett dazu übergegangen, Pausen auf Basis von TI (oder manchmal auch auf Basis der Rasterzeile) zu realisieren und nicht mit Schleifen. Die laufen schon in BASIC nicht immer in konstanter Zeit, wenn sich irgendwas an der Variablenreihenfolge im Speicher ändert und so.