Hallo Besucher, der Thread wurde 17k mal aufgerufen und enthält 85 Antworten

letzter Beitrag von Zirias/Excess am

Spiel in Arbeit: 8192

  • Habe das jetzt mal analysiert, was mit dem Action Replay passiert. Das Problem ist gar nicht das "saubere verlassen" :)


    Wenn man ganz klassisch mit LOAD"*",8 (ohne ,1) lädt funktionieren auch nach dem Beenden alle Features. Lädt man dagegen absolut (oder mit F1, F2, etc), ist danach alles durcheinander.


    Der Grund ist der verwendete Autostart-Trick: Beim absoluten Laden wird die Vektor-Tabelle ab $0300 überschrieben, und zwar mit den Werten des original Kernal bis zum STOP Vektor bei $0328, der wird verwendet um beim Laden in den eigenen Code zu springen. Dabei werden auch zwei Vektoren überschrieben, die das Action Replay selbst verwendet um die Befehlserweiterungen zu realisieren, nämlich der idle loop bei $0302 und die token evaluation bei $030a. Klar, danach geht dann nichts mehr.


    Könnte man jetzt eventuell fixen indem man das AR erkennt und die Vektoren entsprechend repariert, aber das wäre eine Speziallösung für ein Cartridge -- ich denke ich lasse es dann lieber so, wie es ist.

  • Hmm, die Version mit "quick save" hat offenbar noch einen Bug X(


    Ungefähr bei jedem 5. Abspeichern wird das File vermurkst... ich habe da Code, der einfach nur das vorhandene File überschreiben soll und im Moment keinen Ansatz, wie ich das debuggen könnte. Getestet habe ich es bisher nur in Vice, kann mir aber kaum vorstellen, dass die 1541 Emulation von Vice etwas damit zu tun hat. Falls mir jemand weiterhelfen kann (vielleicht entdeckt ja jemand was offensichtliches, bin nicht so fit mit der 1541):


    C64 Routine zum abspeichern
    Ausschnitt des 1541 Codes zum abspeichern


    Andere Idee wäre doppelt abspeichern mit Checksums, was vielleicht wirklich sinnvoll wäre, aber im Moment denke ich würde das nur Symptome verstecken :/


    ---


    Außerdem habe ich eine Möglichkeit hinzugefügt, direkt ein .sid File zu bauen, was auch zu funktionieren scheint -- habe dazu aber trotzdem noch zwei Fragen:

    • Meine Play-Routine nutzt jede Menge Zeropage, für sämtlichen internen Status und einen Satz Shadow-Register -- war im Spiel kein Problem, weil ich den Platz hatte. Sollte man das für das SID-File ändern? Gibt es da Standards oder Richtlinien zur ZP-Nutzung?
    • Die init-Routine hat eine SID Modellerkennung drin, inzwischen nach diesem Prinzip -- kann man das drin lassen oder könnte das zu Inkompatibilitäten mit manchen SID-Playern führen?
  • Heute morgen in der Bahn zur Arbeit mal wieder ein bisschen gezockt ... äh ... getestet :D :


    Konnte irgendjemand ebenfalls vermurkste Files bei der "quick save" Funktion beobachten? Ist bei mir jetzt nämlich schon sehr lange nicht mehr passiert -- vielleicht war es ja doch nicht mein Code?


    Werde jetzt doch lieber mal die fehlenden Features endlich umsetzen um eine erste "beta" veröffentlichen zu können :)