Hallo Besucher, der Thread wurde 56k mal aufgerufen und enthält 92 Antworten

letzter Beitrag von kazmat am

Disk-to-EasyFlash

  • Hallo,


    hier ist ein experimentelles Programm, mit dem man ein D64 oder M2I in ein cartridge umwandeln kann, um es auf das EasyFlash zu packen.


    Und hier schon der groesste Daempfer: nur wenige spiele kann man damit benutzten - genaueres dazu weiter unten.


    Anbei findet ihr das kleine Programm (fuer win und mac) mit dem ihr euer Lieblingsspiel in ein cartridge umwandeln koennt.


    Spielstaende koennen nicht im Flash gespeichert werden, darum wird bei versuchen eine Datei zu laden die nicht im Flash ist (wie z.B. ein Spielstand) die Datei von Diskette geladen. Da speichern gar nicht untersteutzt wird, wird immer auf Diskette gespeichert.


    Umwandlung:
    Ausgeben kann das Programm entweder ein EasyFlash Cartridge, welches man direkt in vice (aktuelle entwicklungs- oder die kommende 2.2er version) testen oder auf das EasyFlash brennen kann. Oder als EasyFlash xbank cartridge, das kann man zwar nicht in vice testen, aber dafuer mit dem aktuellen EasyCrtMaker zusammen mit anderen Programmen auf ein Modul packen kann. (Die naechste version vom EasyProg kann die auch direkt flashen).


    Parameter:

    • Mit ./disk2easyflash --help wird eine auflistung aller Parameter angezeigt, hier nur das wichtigste in Kuerze.
    • Das Tool hat zwei modi, ein listet nur den Inhalt der D64/M2I auf, der andere erzeugt ein cartridge.
    • Auflistung: ./disk2easyflash -l <D64/M2I>
    • Generierung: ./disk2easyflash -c <Optionen> <D64/M2I> <Ausgabe>
    • Anstelle eines D64 bzw. einer M2I Datei kann auch ein Verzeichnis, welches ein M2I enthaelt angegeben werden.
    • Wenn -x anstelle von -c genutzt wird, wird ein xbank cartridge erstellt.
    • Mit der Option -r <Nummer> wird angegeben dass eine Datei nicht im Flash gespeichert werden soll. Die Nummer kann man aus dem listing entnehmen. Spielstaende muessen so ausgeschlossen werden, da man sonst immer den selben laedt. Die Option kann mehrfach angegeben werden.


    Warum nur wenige Spiele laufen:
    Es wird kein vollwertiges Laufwerk emuliert, sondern nur der "LOAD" Befehl im Kernal. Voraussetzungen:

    • Zum laden von Dateien darf nur "LOAD" genutzt werden. Also weder "OPEN" noch ein direkter Disk-zugriff.
    • Der LOAD-Vektor ($0330/$0331) darf nicht veraendert werden.
    • Das EasyFlash RAM ($de00-$dfff) darf nicht veraendert werden.
    • Fuer den zugriff auf Spielstaende darf natuerlich auch OPEN genutzt werden, da die nicht im Flash sondern auf der Diskette abgelegt werden.


    Bitte fragt mich nicht bei allen moeglichen Spielen, warum die nicht laufen - ich freue mich aber wenn ihr hier spiele postet die auch gehen.


    Getestete Spiele:

    • Corporation
    • Knight'n'Grail
    • Leaderboard Golf
    • Neverending Story
    • Sleepwalker
    • Spelunker
    • Yuppie's Revenge


    Ciao, ALeX.

  • Hallo,


    also die ist eine erste version. mal gucken ob's noch irgendwo probleme gibt.


    Bitte veröffentliche auch den Quelltext.


    mal gucken. aber nicht so lange ich da noch dran entwickle - ich habe z.b. noch vor auch "OPEN" zu emulieren (hatte schon angefangen, gab aber probleme)


    sollte allerdings jemand vorhaben mich bei der entwicklung zu untersteutzten dann mich einfach antexten.


    Genial! Danke Alex


    Danke Diddl!


    Ciao, ALeX.

  • mal gucken. aber nicht so lange ich da noch dran entwickle - ich habe z.b. noch vor auch "OPEN" zu emulieren (hatte schon angefangen, gab aber probleme)


    Aufgrund des Umstandes, dass EasyFlash ja genügend Platz für Firmware bietet, könnte man im Extremfall das ganze DOS implementieren.


    Das ist vom Aufwand her natürlich nicht vertretbar. Aber OPEN wäre schon schön. Und Block Read (B-R, U1) wäre der Hammer, weil dann so Spiele wie Loderunner gehen würden.



    Leider kann man das mit dem Schreiben nicht richtig lösen. Aber vielleicht gibts ja mal eine EF Lösung die auch noch 1MB RAM bietet.


    -------


    Mich beschäftigt ja noch immer die DOS Emulation durch einen Atmega. Für mich ist das noch nicht ganz vom Tisch.

  • Aufgrund des Umstandes, dass EasyFlash ja genügend Platz für Firmware bietet, könnte man im Extremfall das ganze DOS implementieren.


    Das Problem ist nur, dass das ganze DOS statt des KERNAL-ROMs eingeblendet werden müsste, das geht im C64 nur im Ultimax-Modus, der widerrum fast den gesamten RAM ausblendet. Deswegen ist es beim C64 auch so schwierig, ohne Eingriff in den Rechner einen externen Kernal zu betreiben. Bedenke auch, dass umfangreichere Spiele so gut wie jede Ecke des C64-RAMs benutzen.

  • Hi,


    noch ein wichtiger nachtrag:
    das disk2easyflash untersteutzt nur PRG und DEL dateien im D64/M2I.
    Ich habe mich absichtlich gegen SEQ und REL entschieden, da auf die (so weit ich weiss) nicht per LOAD sondern per OPEN zugegriffen wird.


    Aufgrund des Umstandes, dass EasyFlash ja genügend Platz für Firmware bietet, könnte man im Extremfall das ganze DOS implementieren.

    Ja, mach doch :-)


    Aber OPEN wäre schon schön.

    Ja, ich hatte schon angefangen, aber auf div. probleme gestossen - aber ich denke ich versuche es noch mal.


    Und Block Read (B-R, U1) wäre der Hammer, weil dann so Spiele wie Loderunner gehen würden.

    Aber wie viele spiele nutzen OPEN um darueber kommandos an die disk abzugeben? ich meine wenn die direkt auf den bus zugreifen (wie alle fastloader) kann ich da so wie so nix machen.


    Leider kann man das mit dem Schreiben nicht richtig lösen. Aber vielleicht gibts ja mal eine EF Lösung die auch noch 1MB RAM bietet.

    aber auch nur wenn das statisch ist...


    Mich beschäftigt ja noch immer die DOS Emulation durch einen Atmega. Für mich ist das noch nicht ganz vom Tisch.

    Hae, was genau willst du machen?


    Zitat von skoe

    Das Problem ist nur, dass das ganze DOS statt des KERNAL-ROMs eingeblendet werden müsste, das geht im C64 nur im Ultimax-Modus, der widerrum fast den gesamten RAM ausblendet. Deswegen ist es beim C64 auch so schwierig, ohne Eingriff in den Rechner einen externen Kernal zu betreiben. Bedenke auch, dass umfangreichere Spiele so gut wie jede Ecke des C64-RAMs benutzen.

    Da braeuchte man schon einen wirklichen neuen kernal _im_ C64.


    Ciao, ALeX.

  • Wir haben gerade Mayhem im Monsterland in allen Versionen probiert, leider ohne Erfolg.
    Aber die verwendeten Loader benutzen wohl auch ein bisschen mehr als Load.
    Nur so als Anmerkung, damit es niemand nochmals probieren muss. ;)
    Ansonsten wieder gute Arbeit, ich werde die Tage ein bisschen mit disk2easyflash rumspielen.
    Gruß
    /ft

  • Wir haben gerade Mayhem im Monsterland in allen Versionen probiert, leider ohne Erfolg.


    Oh, echt? Mh, das ist ja schade. Das Spiel war echt wirklich der Hauptgrund, warum ich mir das EasyFlash bestellt habe.
    Das ist naklar sehr schade, aber vielleicht hat ja doch noch jemand einen Lösung....

  • Dazu lasst mich einmal anmerken: Bitte geht nicht davon aus, das etwas anderes laufen wird als CRT-Images mit dem richtigen Typ und Dank Alex auch selbstgebaute Compilations aus One-Filern und mehreren CRTs.


    Alles andere ist momentan mehr oder weniger Glückssache (und ich hätte es bis vor ein paar Wochen nicht mal als möglich eingestuft). Es ist auch nicht gesagt, dass Alex Erfolg mit den anderen Datei-Operationen haben wird - obwohl wir das natürlich alle hoffen :)

  • Hi,


    also dies ist ja eher ein proof-of-concept projekt. und wie ihr an der kurzen liste der funktionierenden und langen liste der nicht laufenden spiele seht (die ich ja schon angefaertigt habe) ist es eher ein glueckstreffer, wenn was geht. aber Knight'n'Grail ist echt super!!


    Ich muss gestehen, dass ich mich noch nicht wieder an den OPEN-teil gewagt habe, da der 1. versuch ein totaler reinfall war.


    Ciao, ALeX.

  • Ich muss gestehen, dass ich mich noch nicht wieder an den OPEN-teil gewagt habe, da der 1. versuch ein totaler reinfall war.


    OPEN ist total uninteressant.


    Du solltest dich auf folgende Vektoren stürzen, dann erschlägst du OPEN, CLOSE und LOAD automatisch.


    Code
    1. | $031E-$031F/798-799 Vector: Kernal CHKIN Routine
    2. | $0320-$0321/800-801 Vector: Kernal CHKOUT Routine
    3. | $0322-$0323/802-803 Vector: Kernal CLRCHN Routine
    4. | $0324-$0325/804-805 Vector: Kernal CHRIN Routine
    5. | $0326-$0327/806-807 Vector: Kernal CHROUT Routine