Hilfen und Übersetzungen

  • Drei Lerzeichen im char " " am Anfang , dann fehlen keine Zeichen und am Ende sind keine Tilde-A's mehr weil byte 0 da ist .

    Scheint zu funktionieren. Habe es übersetzt bekommen, inkl. neuer Geode und kanns spielen ohne, das Fehler passieren.
    Habe in den Benutzernotizen mal einen Hinweis auf die Leerzeichen eingefügt. Habe keine Ahnung, wie das an anderer Stelle gelöst wird, wenn da direkt in ResEdit Hinweise stehen. Das habe ich nämlich schonmal gesehen, das derartige Hinweise vorhanden sind.
    Sieht jedenfalls schon mal gut aus.
    Danke und

    Grüße Klaus / Locke

    Grüße Klaus / Locke

  • Thema: Hearts

    Hearts habe ich folgendes getestet :

    chunk ItsYourTurnText = data {
    char " Hey! It's your turn";
    byte 0
    }
    Drei Lerzeichen im char " " am Anfang , dann fehlen keine Zeichen und am Ende sind keine Tilde-A's mehr weil byte 0 da ist .

    Nein, nein, nein, so geht das NICHT. Das Word davor hat eine Bedeutung, du MUSST davon ausgehen, dass der Code es auswertet. Du hast den Wert jetzt auf 0x2020 gesetzt. Um zu verstehen, was da passiert - und was man also ändern kann und was nicht - muss man den Assemblercode dazu kapiert haben. Wenn du gaaaaaaaanz viel Glück hast, ignoriert der Code den Wert wirklich - dazu muss man in de Code schauen, der die Daten benutzt. Dann kannst/musst du dir aber auch das data { } klemmen.

    Bitte nicht auf Gut Glück irgendetwas im Code oder den Datenstrukturen ändern!!

    Thema Dirlist:

    Es sieht leider schlecht aus für Verzeichnisliste habe mir die Headerdateien und Dokumentation durchgelesen , komme aber an den verschiedenen Werte beziehungsweise Konvertierungen nicht weiter , leider kenne ich mich da doch nicht aus. dword >char > dateTime.

    Nur sinnlose Zeichen und Abstürze mit Dirlist.

    Ja, das übliche Los, wenn man sich mit einem neuen Thema beschäftigt. Kenn ich zu Genüge. 8o Schreib mir ne PM und beschreibe mit genau, in kleinen Schritten, was du gemacht hast, was du erwartet hast und was passiert ist. Dann packen wir Dirlist!

    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Immerhin klappt es :)!


    PS: Mal Überlegungen zur deutschen Übersetzung:

    – Bei dem Satz mit der gleichen Farbe stolpere ich beim Lesen. Ich würde ja den Schluß als Nebensatz auffassen und mit Komma abtrennen und das Verb ans Ende stellen. Ja, das wird immer unbeliebter, aber sonst kommen so verdreht wirkende Konstruktionen raus. Andererseits sind viele nicht mehr gewohnt, auf das Verb zu warten.

    Du musst eine Karte der gleichen Farbe wie die Karte, mit der eröffnet worden ist, spielen.

    Oder halt umgangssprachlicher: Du musst eine Karte der gleichen Farbe spielen, wie die Karte, mit der eröffnet worden ist.

    – Hier fehlt ein "n": Herzen wurden gebrochen

  • Immerhin klappt es :)!

    Stimmt - was darauf hindeutet, dass das word vor dem Text im Code geskippt wird. Aber ein vernünftiger Weg ist das nicht. Was ist, wenn es bei den anderen Texten, die ihr nicht angezeigt bekommen habt, anders ist? Abgesehen von den doofen Leerzeichen. Der Kommentar sagt, das word davor ist wichtig. OK, vielleicht ist die Info veraltet, aber einfach so ignorieren ist sicher kein guter Weg.

    Wenn man die Datenstruktur muss man auch den zugehörigen Code ändern - oder zumindest sicher sein (=verstanden haben) , das er nicht geändert werden muss. Basta. Sonst machen wir es wie die Chinesen: Was wir nicht verstehen lassen wir weg, selbst wenn es die Sicherung gegen einen überhitzten Akku ist.

    Ihr habt mich überredet, ich schau mal, was da codetechnisch los ist. Vielleicht recht mein Assembler ja aus.

    Rainer

    Nachtrag: Das swat keinen Fehler ausgibt ist schön, aber kein OK-Kriterium. Wenn der Wert 200 wirklich nur eine Position ist und auch benutzt wird, dann erscheint der Text halt an der falschen Stelle.

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • So, es könnte vollbracht sein. Ich habe mich mal durchgewühlt und es gab einige günstige Umstände. Bevor ich einen PR mache, bitte ich euch, das Programm mal auszuprobieren. Geode und vm Datei zum Übersetzten hängt dran.

    Für alle, die es interessiert, hier mal den Dokumentation, wie ich vorgegangen bin und auf welche möglichen Fallen man achten muss.

    1. Suchen, wo die betreffenden Chunks verwendet werden
    -> Zum Glück wird jeder chunk nur einmal verwendet, das ist schon mal schön.

    2. Verwendung der Chunks verstehen. Auch hier ergab sich der Glücksfall, dass alle in genau der gleichen Sequenz verwendet wurden. Einmal war es etwas umfangreicher, aber im Prinzip läuft es auf das gleiche hinaus.

    Code
        mov    di,offset YourCardsText
        call    HeartsDeckDrawPlayerInstructions

    Damit konzentrieren sich alle Änderungen in einer einzigen Routine. Auch das ist ein erheblicher Glücksfall, es hätte auch anders kommen können.

    3. Wird HeartsDeckDrawPlayerInstructions noch für etwas anderes verwendet?
    Zum Glück: Nein (Juhu!)

    4. HeartsDeckDrawPlayerInstructions verstehen
    Das Problem in Assembler ist: es gibt faktisch keine benannten Variablen, vieles steht nur in Registern statt
    "breite = igendwas" schreibt man eben "mov bx, irgendwas" - und muss sich MERKEN, dass bx jetzt den Wert für "breite" enthält.
    Man muss sich jederzeit über die Belegung der Register im klaren sein und ob sie noch gebraucht werden. Wieder zum Glück ist die betreffende Routine diesbezüglich eher einfach gestrickt.

    Die spannende Sequenz ist folgende:

    Code
        pop    si                ;string offst
        mov    si,ds:[si]
        lodsw                    ;x pos
        clr    cx                ;null terminated string
        mov    ax, INSTRUCTION_TEXT_X       ; jfh added
        mov    bx, INSTRUCTION_TEXT_Y
        call    GrDrawText

    Jetzt gehts ans Debuggen. Da ich mir nicht ganz sicher bin, was der zweite Befehl bewirkt - bzw. warum er nötig ist, steppe ich das in swat durch.
    Ergebnis: Die ersten drei Befehle laden den fraglichen word-Wert ins Register ax. Der "Zeiger" ds:si Zeigt danach auf den eigentlichen Text.
    So wie es im Kommentar steht (hier und auch dort, wo die Chunks deklariert sind) sollte ax jetzt die x-Position enthalten, auf die der Text zu zeichnen ist. Das ist gut, denn GrDrawText erwartet die x-Position im ax-Register (steht so in der Dokumentation).
    Und jetzt kommts: Zwei Zeilen tiefer wird ax brutal überschrieben - der gelesene Wert wird also platt gemacht und ignoriert.
    Aber er wird in dem Sinne benutzt, dass er gelesen und "übergangen" wird: lodsw liest ein word von der Stelle ds:si ins AX-Regsiter und verschiebt den zeiger ds:si hinter dieses word, auf den Anfang des richtigen Texts.

    Fazit: Man kann die Chunks in simple Text-Chunks umschreiben (wie Nico das oben getan hat) aber man muss gleichzeitig im Code das "lodsw" entfernen, damit der String am Anfang nicht zwei Sinnlos-Zeichen enthalten muss.

  • Schön. :)
    Ich dachte erste, die heilige Kuh lässt sich auch nicht übersetzen, aber glücklicher Weise geht das.
    Den PR dazu mache ich morgen oder Mittwoch, vielleicht findet ja doch noch jemand ein Problem.
    Wenn der durch ist, musst du deine Übersetzungsdatei auf jeden Fall updaten.

    Bis dann
    Rainer

    Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

  • Ich schreibe mal hier weiter, weil das Mit Laser Letters nicht wirklich zu tun hat.:)

    Ich habe nun den PR wieder geschlossen. Dann kannst du Klaus / Locke das übernehmen.

    Gruss von Nico

    Im Prinzip ist mir das Egal, wessen Version letztlich rein kommt. Ich finde es an der Stelle nur schade, dass sich zwei Leute gleichzeitig Mühe machen, weil irgendwo keiner so genau weiss, wer was macht. Hat Rainer glaube ich auch schon mal erwähnt.
    Manchmal auch, wenn man ganz konkret geschrieben hat. DAS habe ich gerade in Arbeit...
    Kommt dennoch eine Datei zeitgleich von anderer Seite. Wie gesagt Schade für die Zeit, die jeweils mindestens einer umsonst investiert hat.

    Lass uns das Ganze doch ein wenig besser abstimmen.

    Ich mache jetzt erstmal mit den Hilfedateien für FreeCell und BlackJack weiter, danach Hearts.

    Grüße Klaus / Locke

    Grüße Klaus / Locke

    Einmal editiert, zuletzt von Lockesoft (16. März 2024 um 10:12) aus folgendem Grund: Fipptehler