Ist es möglich, im Farb-RAM $D800-$DBFF Programmcode laufen zu lassen?
Hallo Besucher, der Thread wurde 3,7k mal aufgerufen und enthält 30 Antworten
letzter Beitrag von Stephan Scheuer am
Farbram
- Stephan Scheuer
- Erledigt
-
-
4 Bit breit? Das wird aber lustig.
-
4 Bit breit? Das wird aber lustig.
Ich dachte das wäre ein normales RAM bei dem aber nur 4 Bit verwendet werden.
-
Ich suche für das Game Ultima5, die EasyFlash Anpassung verzweifelt Platz im RAM. Da kommt man manchmal auf seltsame Ideen.
-
Im Farbram selber nicht, aber im RAM darunter. Das Farb-RAM wird ja darüber eingeblendet. Wenn ich mich recht erinnere, musst du allerdings I/O ausblenden, sonst versucht die CPU da drin Code auszuführen.
Edit: Frage jetzt richtig verstanden, wird wohl nix, da die oberen 4 Bits immer mehr oder weniger Zufallswerte sind und du nie von 0 ausgehen kannst.
Edit2: Wenn Zeichensatzmodus verwendet wird, gibt es vielleicht unbenutzte Zeichen, die man als Code missbrauchen könnte?
-
Willst du das als zusätzlichen Speicher zu den 64KB nutzen?
-
Willst du das als zusätzlichen Speicher zu den 64KB nutzen?
Ja, so ist es. Aber nur kurzzeitig. $D011,0B -> Code ins Farbram laden und ausführen.
-
4 Bit breit? Das wird aber lustig.
Ich dachte das wäre ein normales RAM bei dem aber nur 4 Bit verwendet werden.
Ja, das ist ein 8-Bit breites Ram... aber eben nur 4-Bits werden genutzt. Die andren 4Bit sind zwar da aber nicht ansprechbar (weder lesen noch schreiben)
-
Danke. Damit ist diese Seifenblase wohl geplatzt.
-
Allenfalls das Ram darunter (ist ja da) aber das kannst du (IMHO) auch nicht nutzen
-
Nein, das RAM unter dem I/O wird auch vom Spiel genutzt. Vom Stack, ab $0100 kann ich vielleicht einiges nutzen.
Zudem haben die Savegames keine feste Größe, was alles nochmal erschwert. Eine Supercpu-Version habe ich schon fast fertig.
Einzig das Laden der Savegames fehlt noch.
-
Das geht tatsächlich, weil der Wert des vorherigen VIC-Zugriffs noch auf dem Bus liegt... es ist aber weder einfach zu starten, noch läuft es sehr stabil.
-
Ich dachte das wäre ein normales RAM bei dem aber nur 4 Bit verwendet werden.
Nein, es ist ein 2114 und das ist ein SRAM mit der Origanisation 1k x 4. Die anderen 4 Bit sind nicht vorhanden. Du bräuchtest ein weiteres 2114 und einen weiteren 4066 wenn du 8 Bit willst.
Im C128 ist es ein 6116, das ist 2k x 8, aber die oberen 4 Bit sind nicht mit dem System verbunden.
-
Für Deine Zwecke geht es nicht.
Aber ich glaube, irgendwer hat sowas mal als proof of concept gemacht und durch passende VIC-Daten die oberen Bits gefüllt und ein Programm laufen lassen.
-
Ich mache das immer so, dass ich Teile des vorhandenen Programms atomisiere, um neuen Platz zu schaffen. Denn in der Regel kann man davon ausgehen, dass nicht das komplette Programm/Spiel durchweg auf Speicherplatzersparnis optimiert ist. Wichtig ist dabei nur, dass man etwaige Einsprungpunkte berücksichtigt bzw. die Referenzen anpasst. Auf diese Weise hab ich z.B. zuletzt neue Funktionen in die Action Cartridge eingebaut, obwohl dafür fast kein Platz mehr war.
-
Im Farb-RAM kann mein keinen Code laufenlassen. Aber ich hab bei meiner Last Ninja 3 Version damals das Farb-RAM als Puffer benutzt. Ich schaufle damit 2 Blocks frei für einen Loader-Decruncher, den ich mit Kernelroutinen von Disk lade. 2 Blocks deshalb, weil iim Farb-RAM ja jedes Byte zwei Adressen belegt. Z.B. $ae, die $0a kommt nach $D800, dann $0e nach $D801. usw. Also als kleiner Zwischenpuffer taugt es, man muss nur die Bytes in Nibbles zerlegen und später wieder zusammenfügen.
-
Ich werde erstmal das mit den Nibbles testen. Ein Code der das in Nibbles zerlegt, kann ich meinem Digi-Player Code entnehmen.
Nur für das Zusammenfügen muss ich nochwas coden. Wenn das nicht reichen sollte, wird es schwieriger bzw aufwändiger.
Achja, Danke!
-
Vielleicht kannst du Teile der engine nue für den Less/Schreibzugriff überschreiben und dann danach aus einer Easyflash bank wieder nachladen . Selbst Spiele die 64K belegen, verwenden das idr ja nicht immer gleichzeitig. Ich hab das schon hin und wieder so gemacht.
-
Daran hatte ich auch schon gedacht, denn gleiches hatte ich bei "Space Rogue" gemacht.
Hierbei muss ich nur feststellen, dass es sich nicht um selbstmodifizierenden Code handelt.
Es gibt also mehrere Wege, die nach Rom führen. Danke!
1.) Schade, dass die EasyFlash kein RAM (Bank) besitzt.
2.) Die Supercpu Version war wesentlich leichter zu erstellen.
3.) Die GeoRam Version wird auch einfacher werden.
Stephan
-
Hallo,
Mir persönlich ist nur die Nutzung des Bildschirm-RAM´s für Code geläufig.
Schönen Gruß.