Seite 1 von 2

C64-Projekt für die FH

Verfasst: 11.02.2009 23:58
von ZeHa
Servus,

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 :)

www.drwuro.com/elektrosmog/elektrosmog.rar

Quellcode und Doku liegen bei. Aber auch ein lauffähiges .prg-File, das mit jedem C64-Emulator gestartet werden kann. Viel Spaß...

Verfasst: 12.02.2009 00:45
von hardfalcon
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... :)

Verfasst: 12.02.2009 09:49
von ZeHa
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. :)

Verfasst: 12.02.2009 20:57
von DarkDragon
Für mich wars unschaffbar die Kristalle in so kurzer Zeit einzusammeln :cry: . Erklär mal genauer was an deinem Spielchen nun sich-selbst-modifizierend ist.

Verfasst: 12.02.2009 21:00
von ZeHa
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

Verfasst: 12.02.2009 21:04
von DarkDragon
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.

Verfasst: 12.02.2009 21:28
von ZeHa
Jo kann schon sein, aber damals war das wenigstens auch gängige Praxis :mrgreen:

Verfasst: 12.02.2009 21:40
von edel
Warum gerade der C64?

Verfasst: 12.02.2009 22:32
von ZeHa
Weil das mein Lieblingscomputer ist (und ich zudem einen besitze; für andere Systeme hätte ich mir erst noch Hardware anschaffen müssen)

Verfasst: 12.02.2009 23:53
von Thorium
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. 8)
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.