Zeichensatz als BIN-File speichern?

  • Kann man einen veränderten Zeichensatz, der mit SYMBOL verändert wurde, als Binärfile abspeichern und komplett laden (Aufruf mit CALL) ?
    Ich würde so gern den Zeichensatz von KAISER auf mein Spiel anwenden.
    Oder gibt es eine Möglichkeit, den Zeichensatz anderswie zu speichern?

  • Speichern:


    1.) Symbol After XXX
    2.) Zeichensatzadr=himem+1
    3.) ...erst jetzt darf der Himem geändert werden
    4.) Save"charset",b,Zeichensatzadr,(256-XXX)*8


    Laden:


    1.) Symbol After XXX
    2.) Zeichensatzadr=himem+1
    3.) Load"charset",Zeichensatzadr

  • Kannst Du Dir mal bitte das KAISER.DSK ansehen?
    (CPC464 only)
    Du kannst es mit ESC abbrechen sobald man gefragt wird ob man einen Spielstand laden möchte.
    Würde mich interessieren, mit welcher Addy ich da den Zeichensatz speichern kann.
    Speichern kann ich es mit WinCPC und gleichzeitig Aufnahme mit CPCTapeXP. Aber ich weiss die Startaddy und die Länge nicht.


    (Oder hat jemand einen netten Zeichensatz für mich?)

  • Wenn Du Dir das DSK anschaust siehst Du, dass Kaiser zwar in BASIC ist aber der Zeichensatz schon vorher irgendwie geladen wurde.
    Aber ich tüftel noch daran... Bin dabei mir die Zeichen auszuwerten mit PRINT und TEST anweisungen... So dass eine ASCII-Datei geschrieben wird, diese kann ich mir dann auf CDT kopieren.
    Anschliessend wieder auf Disk zurück kopieren.

  • Wenns ein BASIC-Programm ist, kannst du dich an HIMEM orientieren. Vorher aber alle Streams schließen (CLOSEIN/CLOSEOUT) - wenn das ohne Bin-files auskommt, dann liegt der Zeichensatz direkt bei HIMEM+1.


    Mir fällt nur grad nicht die Adresse ein, wo der Anfang des Zeichensatzes auslesbar ist...

  • Das Problem an Kaiser ist, dass es aus einem MFII Snapshot erstellt wurde, da ist also schon alles im Programm enthalten, Grafik (Binär), Symbole...
    Aber ich komm schon darauf es zu rippen...
    Werde jedes Symbol 1x auf den Bildschirm schreiben, es auslesen mit x-y Koordinaten und mit TEST den Wert auslesen, dann werd ich es als Binärcode (10010110 Z.B.) ablegen in eine mit DIM bestimmte Bank. Diese schreibe ich dann auf tape und lese sie anschliessend wieder ein.

  • himem sagt irgendwas von 31100 oder so... Schaus dir halt an... Das DSK liegt zum Download weiter oben.
    Sobald das Spiel geladen ist, und er nach dem Spielstand fragt kannst es abbrechen.
    (CPC 464 Roms verwenden)

  • naja, dann nimm die Speicherstelle von oben, das is einfacher ;)


    ADR=PEEK(&B736)+256*PEEK(&B737)
    Adressen halt ggf. an 464 anpassen (siehe Link)


    Dann kannst du den Zeichensatz einfach mit SAVE "xxx",B,ADR,len abspeichern, wobei du len - je nach zeichensatz - berechen musst (alle zeichen ab CHR 0 mit LEN=256*8).

  • Ich habe den Zeichensatz nun so wie ich ihn haben wollte aber dabei ergibt sich ein kleines Problem:
    Sobald ich das Spiel lade und die Binärteile geladen werden, wird der Zeichensatz zerstört.
    Wer sich das mal anschauen mag schaut sich dieses DSK an:
    Download DSK


    Wobei CHARS.BAS das CHARSET.BIN lädt und SYMBOLS.BAS sie erzeugt.
    Sobald ich aber dann wie gesagt das GAME.BAS lade, wird der Zeichensatz zerstört, nachdem der Binärteil geladen wurde.

  • warum entwickelst du keinen neuen zeichensatz.


    <!-- m --><a class="postlink" href="http://www.geocities.com/andrear1979/msx/msxsprites/ver2/MsxSprites8x8.html">http://www.geocities.com/andrear1979/ms ... es8x8.html</a><!-- m -->


    da ist ein 8-bit spriteprogramm eigentlich für den msx, kann man gut für die char benutzen, die daten kann man als datazeile einbinden in basic. benutze ich auch. schönes einfaches ding. kann auch als programm auf festplatte geladen werden.


    <!-- m --><a class="postlink" href="http://msx.jannone.org/tinysprite/tinysprite.html">http://msx.jannone.org/tinysprite/tinysprite.html</a><!-- m -->


    noch ein tolles ding, kann ma nauch als programm runterladen.


    mfg

  • Weil ich in BASIC programmiere und von Assembler & co keine Ahnung habe.
    Die Sprite-Routinen die ich verwende, werden für mich programmiert.
    Da sitzen Demoniak und Eliot dran.
    Wenn Du also einen Zeichensatz für mich proggen magst würde ich mich sehr drüber freuen.
    Aber ich möchte keine einzelnen Buchstaben durch umständliche Sprite-Routinen ersetzen müssen.


    Momentan bin ich übrigens schon dabei, die Screens zu komprimieren und liege dabei schon ganz gut. Von 8K auf 3-5K runter trotz der komplexen Pixel.
    Einziges Manko: ich muss alle Screens mit PC-CPC von Demoniak konvertieren, weil der einen Packer besitzt, den sonst kein Emu hat.

  • das sind hilfswerkzeuge, wo man das byte als datazeile usw abspeichern kann.
    das sollst du nicht als spriteroutine nutzen. am besten ist es immer wenn man selber proggt und sich nur tipps holt , sonst lernt man es nicht.


    ich habe hier auch gute tipps bekommen bei assemblerroutinen, die ich jetzt auch umsetze. aber manchmal hakt es noch in assembler, ohne tipps kommt man nicht aus.


    mfg

  • Naja, kein Wunder das dein Charset kaputt ist.
    Wenn ich CHARS laufen lasse, liegt dein Zeichensatz hinter himem, also bei 40956. Das Spiel lädt aber sprite.cod nach 40960 und überschreibt damit den Zeichensatz.

  • Ja leider :(
    Gibt es da eine Möglichkeit, was zu machen?


    Ich darf Euch garnicht verraten, wie ich den Zeichensatz von Kaiser gehackt hab... *grins*
    Habe mit einem Basic Programm gearbeitet, welches jeden Buchstaben auf den Monitor gepinselt hat, dieses habe ich mit FOR-NEXT schleifen und TEST (X,Y) ausgelesen und dadurch mit Variablen BASIC-Code erzeugt, dann hab ich ein Basic Programm erzeugt und auf CDT gespeichert, welches ich dann wieder auf DISK zurückkopiert hab... Drum auch die Zeilennummern angefangen bei 33...34...35 ;)

  • mhh.. kannst du auf basic-ram verzichten? dann würde ich den zeichensatz unter &3FFF oder so parken. Ich weiss halt nicht, wieviel das dann ausmacht - OPENIN zieht Dir ja auch gleich jedesmal 4K ab.

  • Mein Himem liegt bei &2FFF wegen dem Digisound zum Anfang. Leider kann ich den Player nicht auf &4000 legen, weil das MDL schon auf 4000 geladen wird... Da experimentiere ich aber noch dran rum.
    Also könnte der Zeichensatz bestimmt bei &2FFF abgelegt werden.

  • Nachtrag - du kannst den Zeichensatz ja überlappen lassen - die Zeichen 127/128 aufwärts sind ja noch die alten - die wirst du im Spiel sowieso nicht brauchen, oder? Dann könntest Du die doch von ruhig überschreiben (lassen) .


    Also so in der Art z. B.


    Pufferr + Zeichen ab 127 &3000
    Zeichensatz &3000-760 (Zeichen 32-126)

  • Und wie geht das in BASIC? Davon hab ich wirklich keine Ahnung :(

  • Na du setzt den himem auf &2FFF-760 z. B. und lädst den Zeichensatz nach HIMEM+1 - der Rest im Puffer wird ja sowieso "plattgemacht". Hauptsache die Zeichen 32-126 bleiben unberührt. Es sei denn, ich hab jetzt n denkfehler?


    EDIT: Das geht ja garnicht - der CPC kann die Zeichen ja nicht parallel zum Lower-ROM legen, stimmts? Also MUSST Du den Zeichensatz > &4000 legen.

  • Mhh... entweder du verzichtest auf (wertvollen) Puffer-Speicher, oder du legst die Zeichensatz-Daten in die 2. 64K - und kopierst - nach bedarf - diese in den Bereich des Zeichensatzes. Dann gehen aber auch Gfx-Daten verloren, welche sich im Puffer-Bereich befinden.

  • Ich denke ich lasse den Zeichensatz so, wie er ist...
    Dann hab ich auch weniger Kopfweh ;)

  • Das is aber auch mist mit dem Himem :( Oder wir patchen das CPC-ROM auf deinen Zeichensatz um :lol:

  • Achja Brueggi,
    teste mal dieses DSK... Hat ein anderes MOD, 15k kleiner... Ob sich das immernoch mit deiner HD beisst...
    Download DSK

  • Was weiss ich, in welche Bänke der das schiebt...
    Das alte ist 56K gross, dieses hier ist 44k gross

  • Der Sample Teil eines Digitrakker-MDLs wird immer in die 2. Ram Bank geschrieben, weil der auch nur da abgespielt werden kann. 44K müßte so klein sein, daß es das BDOS nicht überschreibt. Andererseits, Brüggie, ähm, ich denk das geht nicht meinem Fake-"CHAR IN"-Loader? :shock:


    CU,
    Prodatron

  • Zitat von &quot;Kangaroo MusiQue&quot;

    Willste das wirklich mit nem MDL machen? ich meine.. warum nimmste ned "normalen" Sound? oder ist das digitale so viel besser?


    Als ST-Sound gibt es das Tune von Elvira leider nicht, und ich weiss nicht, wie ich es konvertieren kann.
    Vielleicht könntest Du das ja machen ;)
    Dann bräuchte ich allerdings nen Player, der es abspielt und wenn man eine Taste drückt, dass er dann aufhört zu spielen.
    Ich möchte halt den Flair des Original-Spiels behalten.