Bildschirminhalt in RAM sichern (CBM4032/8032/etc)

  • Na, wie man das baut ist ja letztlich immer jedem selbst überlassen. Und wenn es brauchbar ist, ist doch alles OK.

    Ich hätte da noch einen kleinen Vorschlag zu den IF Zeilen. Da Du da ja immer solche Bereiche abfragst, bist Du eigentlich immer, wenn eine Zeile für ein einzelnes Zeichen positiv geowrden ist mit der gesamten IF Abfrage Runde durch. Das heißt aber auch, daß wenn z.B. ein Zeichen im Bereich >=0 und <32 liegt es gar nicht mehr nötig ist für dieses Zeichen alle anderen IF's auch noch zu durchlaufen. Man kann da also auch ein GOTO Next, d.h. hier ein GOTO 1300 an das Ende jeder IF Zeile setzen, was dann eigentlich alle folgenden IF Abfragen wegläßt, die ja aber unnötig sind, weil bereits ausgewertet. Das sollte das Ganze ein bißchen beschleunigen, ohne das komplett umzukrempeln.

    Außerdem kann man sich noch anschauen, welche Zeichen man besonders oft zum Levelmalen benutzt. Diesen Bereich sollte man dann als erste IF Zeile verwenden. Die Buchstaben wird man vermutlich relativ selten zum Leveldesign verwenden, sie werden aber hier immer für jedes Zeichen per IF als erstes abgeprüft. Die Anordnung der Bereiche sollte also in der Häufigkeit des Auftretens der Bereiche sein.


    Habe Dir mal noch die Switcher Geschichte in eine weiteren Ausgabe angehängt. Diesmal liegt der Pufferbereich bei $5800 bis knapp unter $5fff. Das sollte evtl. dann doch für ein paar mehr Variablen obendrüber reichen. Die Routine startet dann dafür jetzt bei $57b0, weshalb natürlich das SYS sich ändert. Probiers halt aus.

    Je weiter man das runtersetzt im Speicher ( Richtung Basic Anfang (bei $0400) ) desto höher ist natürlich die Wahrscheinlichkeit, daß man beim POKEn das hintere Ende vom Basiccode überschreibt. Normalerweise gibt es dafür auch eine Variable, womit man das Abfragen kann; heißt meist HI oder HIMEM manchmal auch FREE oder ähnlich. Siehe Basic Handbuch.



    Im Übrigen: Für jemanden, der angeblich mit Logik und Strukturen auf Kriegsfuß steht, sieht das Programm sehr ordentlich und straight aus.

  • Guten Morgen!


    Danke auch zum Tipp mit den IF-Zeilen- dies bau ich gleich mal ein! Umwandlung macht man zwar nur beim Sichern, dennoch schadet da Geschwindigkeit auch nichts! :)


    Uuuund: Der Fehler beim Umwandeln ist gefunden! Nachdem auch deine letzte Version nicht laufen wollte, habe ich mal abgefragt, was die PEEK-Ergebnisse beim Umwandeln denn so ausspucken... siehe da, lauter Datenmüll. KEIN WUNDER- die Variable "I" verwende ich zum Sprung von Zeile zu Zeile (I=I+40)!

    Doof nur, wenn man "I" auch zum Einlesen der Datazeilen verwendet und im Anschluss nicht wieder auf 0 setzt. ;)


    Nach Nullen von "I" klappt die Umwandlung zwar, aber:
    Mit deiner "120 auf 102 in den Datazeilen"-Version friert der Rechner nach dem Umwandeln ein, und mit deiner neuesten Variante ersetzt er Programmzeilen im Basic mit wirren Zahlen (also liegt diese Version wohl schon im Programmspeicher).

    Ich experimentiere jetzt noch ein bisserl rum- evtl. finde ich eine funktionsfähige Variante... mein Programm belegt ca. 6kB Speicher, geht man nach der Variable FRE(0). Dies inkludiert die Variablen beim geladenen Level (Strings gefüllt).


    Zur Programmstruktur: Dankeschön :) Bis auf die Zeilennummerierung gefällts mir auch ganz gut, diese ändere ich am Schluss mit dem SM-KIT (neue Nummerierung vergeben).


    Viele Grüsse,

    Matthias