Hello, Guest the thread was called2.7k times and contains 9 replays

last post from Kongo-Otto at the

Spiele-Kompatibilität, Kickstart 1.3 zu 3.1

  • Hallo,


    wenn ich auf meinem Amiga 2000 (Kistart 1.3 oder 2.04) Spiele von ADF auf Diskette ziehe oder direkt lade (Gotek), dann klappen viele.


    Wenn ich die Spiele aber auf meinem Amiga 1200 laden möchte, funktionieren nur wenige.


    Klar, die Disketten sind zumeist mittlerweile defekt, aber auch mit dem Gotek-Laufwerk gibts Spiele die nicht laden (ok, nicht alle Spiele unterstützen es, von DF1 geladen zu werden).
    Ist die Kompatibilität von Kickstart 3.1 zu 2.04 (oder 1.3) so schlecht?

  • Kann auch am Chipssatz liegen. Viele Spiele verlassen sich ohnehin nicht auf das Betriebssystem, sodaß die Kickstart-Version im Prinzip egal ist. Andererseits sind bei den frühen Titeln oft auch die Crackerintros schuld, die sich nicht immer an die Programmierrichtlinien von Commodore halten.
    Hast Du schon im Early-Startup OCS ausgewählt und/oder den CPU-Cache abgeschaltet? Bei einigen Spielen hilft das.
    Ins Early-Startup-Menü kommt man, indem man beim Reset beide Maustasten gedrückt hält.

  • ich dachte die spieleprogrammierer selbst hatten sich kaum an die commodore richtlinien gehalten und deswegen die inkompatibilitäten ?
    jedenfalls interessantes aber auch leidvolles kickstart - thema. ich lass bei mir 1.3 auf meinem a500 weil damit alles läuft o zumindest hatte ich noch nie probs. neueres KS würde bei mir als zocker keinen sinn machen. warum auch. . wörkbensch brauch ich nur wenn ich meine RAM grösse kurz betrachten möchte. das war dann auch schon

  • So ähnlich handhabe ich es auch. Mein A500 ist, nachdem er mal auf ECS hochgerüstet war, wieder komplett auf OCS runtergerüstet worden... laufen einfach mehr Spiele fehlerfrei. Und damit noch mehr Spiele laufen, kann ich zwischen Kickstart 1.2 und 1.3 wählen. Als Bonus, falls ich selbst etwas programmiere und für meine "Arbeitsumgebung", kann ich auch Kickstart 3.1 booten.
    Speichererweiterung ist abschaltbar und ab und an hängt eine ACA 500 dran. Als Floppyersatz ist ein HxC intern verbaut... sterben einfach viel zu viele DD-Disketten.


    Die Inkompatibilitäten kommen neben der fehlerhaften Nutzung der Hardware ( OCS, ECS, AGA ), auch die fehlerhafte Nutzung von Betriebssystemroutinen. Sie werden falsch angesprungen, oder Rückgabewerte fehlerhaft genutzt, usw.

  • KS 1.2 taucht ab und an in der Bucht auf. Man könnte es sich auch brennen. Meins stammte aber tatsächlich von meinem ersten gekauften Amiga 500 anno 1987. Der Amiga selbst existiert zumindest bei mir seit 1990 nicht mehr, aber das alte Kickstart hatte ich noch, weil der Amiga damals mal auf KS 1.3 umgerüstet wurde. Eines der wenigen Sachen, die ich von damals noch habe.

  • Dafür, daß Spiele auf dem A1200 nicht laufen, gibt es mehrere Gründe:


    Selbstmodifikation und Prozessorcache:
    Bei Originalspielen liegt es häufig am Kopierschutz, der auf einer Selbstmodifikation beruht (z. B. Paradroid 90 oder Mercenary III). Hierfür ist es also zwingend notwendig, den Cpu-Cache abzuschalten. Gelegentlich wird eine Selbstmodifikation aber auch im Spiel verwendet, z. B. die Polygonroutine in No Second Prize. Hier wurde sogar (beim Original) nachträglich der geladene Code gepatcht, um ihn auf dem A1200 lauffähig zu machen. Leider verwenden auch viele Crackerintros Selbstmodifikation (z. B. in einer Version von Lotus Turbo Challenge II) und hängen sich dann oft auf.


    Warteschleifen bei der Tastaturabfrage:
    Wenn die Tastatur eine Taste schickt, muß der Amiga (zumeist in der Interruptbehandlung) nach dem Auslesen der Taste den Empfang mit Hilfe eines Pegels auf der Signalleitung bestätigen. Die Zeit dafür ist vorgeschrieben. Wird diese Zeit mittels einer Zählschleife des Prozessors gezählt, gibt es das Problem mit dem schnelleren Prozessor des A1200, daß die Tastatur die Bestätigung nicht erkennt und die Taste nochmals schickt oder die Datenübertragung mit der Tastatur außer Takt gerät. (No Second Prize patcht diese Prozessorwarteschleife, indem es die Schleife durch eine Warteschleife ersetzt, die sich an dem Rasterstrahl orientiert.)


    Warteschleife bei der Ansteuerung des Diskettenlaufwerks:
    Ein ähnliches Phänomen tritt auf, wenn ein Programmierer meint, die Warteschleife für den Stepmotor des Laufwerks mit einer Prozessorschleife durchführen zu müssen. Auf dem A1200 ist diese Schleife dann zu schnell. Als Folge davon wird der Lesekopf nicht richtig bewegt und die Diskette kann nicht mehr gelesen werden. (Tritt z. B. auf in einer gecrackten Version von Elite.)


    Falsche Speicherbelegung:
    Häufig bei gecrackten Spielen ist zu beobachten, daß die Cracker gnadenlos davon ausgegangen sind, daß ihr Intro in einen Speicherbereich geladen bzw. entpackt wird, der garantiert frei ist, ohne diesen vorher per allocmem anzufordern. Blöderweise belegt das neue OS mehr Speicher als Kickstart 1.2/3. Als Ergebnis werden wichtige Systembereiche überschrieben. ==> Absturz


    Tricksereien mit der DMA-Übertragung des Laufwerks;
    Der (Original)Lader von Paradroid 90 dekodiert die Diskettendaten während das Laufwerk noch weitere Daten überträgt, also praktisch dem DMA-Strom hinterher. Das geschieht dadurch, daß ständig per MOVE-Befehl ein Speicherwort aus dem Speicher gelesen wird und geguckt wird, ob es per DMA überschrieben wurde. Falls ja, wird der Datensatz bis zu diesem Speicherwort dekodiert. Je nach dem, wie der Prozessor-Datencache mit dem DMA zusammenarbeitet, kann dies entweder gelingen, oder der Prozessor wartet sich zu Tode, weil er immer die gleichen Daten aus dem Prozessorcache (und nicht aus dem Speicher) liest.


    Geänderter Stackframe:
    Der Stackframe (d. h. die Daten, die der Prozessor bei einem IRQ oder einer anderen Exception auf den Stapel legt) hat sich von Prozessor zu Prozessor geändert. Manipuliert ein Programm diesen Stackframe ohne Berücksichtigung des Prozessortyps, kann es auf dem falschen (neueren) Prozessor zum Absturz führen.


    Weitere Unterschiede zwischen den Prozessoren bezüglich des Supervisormodus:
    Viele Spiele laufen nicht im Usermodus, sondern im Supervisormodus und benutzen teilweise auch direkt entsprechende Register, z. B. als temporäres Register (USP). Das setzt einen sauberen Wechsel in den Supervisormodus voraus. Gerade bei Turbokarten kann es aber sein, daß die Sprungliste für die Exceptions aus Geschwindigkeitsgründen vom Chipram ins Fastram verlegt wurde. Überschreibt jetzt ein Programm den Vektor für z. B. Trap #0 im Chipram und ruft daraufhin diesen Befehl auf, um so in den Supervisormodus zu wechseln, wird dies nicht gelingen, da der echte Vektor längst woanders liegt.


    Oftmals sind Spiele recht sauber programmiert worden und laufen (theoretisch) auch unter dem Betriebssystem, alleine schon deswegen, weil sie genau so entwickelt worden sind. Erst der Kopierschutz und Lader machten daraus ein Programm, welches von Disk geladen werden muß(te). Es sind viel häufiger die Cracker, die entweder mit ihrem Intro oder einem fehlerhaften Lader dafür sorgen, daß das Spiel auf einem A1200 nicht funktioniert. Dagegen hilft dann auch nur in wenigen Fällen ein anderes Rom. Jedenfalls hatte ich mit meinem A1200 damals[tm] selten echte Probleme, ein Spiel nicht zum Laufen zu kriegen. Dumm war halt nur, daß aufgrund des Kopierschutzes oft der Cache ausgeschaltet werden mußte, was gerade bei Spielen wie Mercenary störend war. In seltenen Fällen war der Originallader so schlampig programmiert, daß er auf dem A1200 nicht laufen wollte (No Second Prize). In solchen Fällen blieb mir dann nichts anderes übrig, als von meinem Recht Gebrauch zu machen, eine Software so zu modifizieren, daß sie auf meiner Hardwareausstattung ausgeführt werden konnte. :anonym

  • Um ehrlich zu sein, wusste ich gar nicht, dass man im Early-Startup beim Amiga 1200 OCS auswählen kann. Das werde ich gleich nachher mal testen.


    Ich habe halt von vielen gehört, dass KS 3.1 praktisch 100% kompatibel wäre. Habe aber den Amiga 1200 bisher eher nur rumstehen gehabt und den Amiga 2000 genutzt, da hatte ich aber kaum Probleme.
    Wie macht man das denn dann mit dem WHDload, wenn die nicht laufen?
    Den Amiga 1200 gibt es ja "leider" nur ab KS 3.0

  • WHDLOAD kann Kistart Images, bspw. Version 1.3, laden. Außerdem patchen die WHDLOAD Slaves die Spiele oft, damit sie laufen. WHDLOAD Spiele laufen unter 3.1 i.d.R. also völlig problemlos.


    Was man auch machen kann, wenn man Diskettenspiele nutzt: Softkicker. Die bringen bei vielen Spielen wirklich was.