ich hab bei uns an der FH als Projektarbeit ein C64-Spiel in Assembler programmiert und heute abgegeben. War mein erstes Projekt in die Richtung, vielleicht hat ja jemand Lust, sich das anzuschauen
Hab mir mal eben schnell VICE installiert, und mir Elektrosmog angeschaut. Es lädt problemlos, aber ich bin ehrlich gesagt zu müde, mir jetzt noch die Dokumentation anzuschauen, um rauszufinden, wie ich das Männchen da steuern kann.
Meinen Respekt hast du auf jeden Fall, so ohne weiteres würde ich nichtmal ein Hello-World-Programm in ASM schaffen (weder auf nem modernen Rechner noch auf nem C64).
Da wünsch ich dir mal nen Prof mit Nostalgie-Ader...
Das Männchen steuert man mit dem Joystick in Port II, d.h. Du mußt einfach in VICE den virtuellen Joystick für Port II konfigurieren, beispielsweise mit Pfeiltasten oder was auch immer Du nutzen willst. Steht aber eh nicht in der Doku, hätte ich vielleicht reinschreiben sollen
Der Prof bei dem ich das gemacht hab hält auch die Assembler-Vorlesung und findet solche Sachen cool, vor allem auch so Dinge wie self-modifying Code usw.
ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Für mich wars unschaffbar die Kristalle in so kurzer Zeit einzusammeln . Erklär mal genauer was an deinem Spielchen nun sich-selbst-modifizierend ist.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Also es ist definitiv möglich, aber ich selbst schaff es immer nur so, daß noch 4 Zeit-Kästchen übrig sind
Das "Selbstmodifizieren" bedeutet, daß z.B. für bestimmte Schleifenzähler die Werte nicht in irgendeinem Register stehen und heruntergezählt werden und auch nicht in einem normalen Speicherbereich (also als Variable), sondern es wird direkt die Anweisung manipuliert. Das heißt also, der tatsächliche Maschinencode ändert sich zur Laufzeit. Das ist deshalb möglich, weil das Programm selbst ja auch einfach nur im Speicher liegt und es keinen "virtuellen Speicher" oder sowas gibt. Ich kann also direkt in meinem eigenen Programm rumfroschen das ist je nach Anwendungszweck die "sauberere" Lösung
ZeHa hat bisher kein Danke erhalten.
Klicke hier, wenn Du wissen möchtest, woran ihm das vorbeigeht.
Leuchtet ein, aber auch mit Virtuellem Speicher dürfte es noch möglich sein, sofern das Betriebssystem den Zugriff abfängt. Nur da hats Probleme mit der Berechtigung.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Cooles Projekt, werd ich mir morgen mal auf ne SD-Karte ziehen und dann am C64 zocken. Hab nen SD-Card-Reader für den Brotkasten.
DarkDragon hat geschrieben:Leuchtet ein, aber auch mit Virtuellem Speicher dürfte es noch möglich sein, sofern das Betriebssystem den Zugriff abfängt. Nur da hats Probleme mit der Berechtigung.
Unter Windows kein Problem. Man kann auf den eigenen virtuellen Speicher voll zugreifen ohne Schwierigkeiten wegen Berechtigungen zu bekommen. Selbstmodifizierende Programme sind heute aber nicht mehr üblich. Ganz einfach weil nurnoch vergleichsweise wenig in Assembler gemacht wird und es zweitens saumäßig unübersichtlich ist, wenn sich der Code wärend der Laufzeit selbst ändert. In Kopierschutzsystemen wird das aber heute noch stark eingesetzt zum verschleiern des eigentlichen Codes.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!