Beiträge von manakoDE

    Ah ok, mein Problem war das ich nicht ein bisschen Text bei "Dragon View (SNES)" gefunden habe, das unsortierte Alphabet kann ich aber nun ausschließen, gehe mal davon aus das alles komprimiert ist :/

    Hallo, ich hab da mal eine Frage: Im Forum hier fiel ein paarmal "unsortiertes Alphabet", für mich heißt das: Wenn A=41 ist, dann ist B NICHT 42, sondern vielleicht 46 (So oder so ähnlich , könnt ihr konkrete Beispiele nennen die diese Art benutzen?
    Ich kenne nur eins und fange deshalb mal an: Secret of Evermore


    Ich glaube das gehört eher in "On-the-Fly Anfragen"

    Also ich bin ziemlich versiert was PSX angeht, ich dachte allerdings das ich das erstmal für mich behalte, weil dies ja ein "snes-projects" forum ist.
    Ich bin übrigens keiner von denen die ihr Wissen für sich behalten wollen, ich gebe es sogar gerne weiter (*hint* *hint*), ich tu mich nur manchmal etwas schwer mit dem Erklären.


    Ich wollte mich auch bei dir bedanken, bin zwar erst seit ein paar Tagen hier, aber "Sponsoren" sind immer gerne gesehen, als Bestätigung wirst du hoffentlich bald ein paar sehr schöne fertige Projekte sehen.

    RedScorpion: Also die Sache mit Zelda muss ich mir mal morgen anschauen, wäre gut zu wissen was du genau machen möchtest.


    x5t: Das "Rückwärts-Lese-Prinzip" ist richtig, das nennt man "Little Endian", dann gibt es noch "Big Endian" wo alles von links nach rechts gelesen wird,
    benutz am besten Lunar Adress 0x100000 in der ROM im Hexeditor/SnesEdit ergibt als Bank Adresse $20:8000


    20 80 00 ist umgedreht 00 80 20


    Mit den Pointern hat das übrigens nichts zu tun, die werden von einer anderen Funktion geladen, wenn es garnichts anzeigt hast du irgendetwas übersehen, vielleicht von der falschen Adresse kopiert?


    Unser neue Rombank bei 0x100000 sollte mit dem Text "Can' carry!" anfangen
    Der Satz "Creq: Captain Cecil....." sollte bei 0x100290 stehen
    Also von 0x80400 nach 0x100000 kopieren

    "Das Problem ist wenn man angefangen hat etwas zu übersetzen mit Hader dann brauch man ihn leider auch fürs Patchen ... :("
    Tool schreiben was alle Patch-Offsets - 512 Byte kalkuliert ;P



    "Sprich wenn ich Start drücke und sich das Menü bei Zelda öffnet, muss ich das doch auch rausbekommen wo er ansetzt, oder?"
    Puh, das ist nicht einfach, ich hoffe ich hab's verstanden: Für solche Sachen die du nicht IN der ROM findest, musst du schauen was in den RAM geschrieben wird, zumindest da sollte der derzeitige Screen teilweise/ganz gespeichert sein, der VRAM beginnt glaube ich im ZSNES Savestate bei 0x20C13 (32768 Bytes lang), ich bin mir aber nicht sicher, frag mich jetzt nicht wie du das im VRAM abfangen kannst, $7E:xxxx und $7F:xxxx ist für den RAM, normal sollte man das da abfangen können...


    Was Hufman angeht, Infos sind sehr willkommen, das ist eine Art Kompression die ich garnicht in meinen Kopf bekomme (Noch nicht)

    Sorry Red, hab deine email garnicht registriert...
    Wie willst du den Report haben? Am einfachsten wäre wenn ich was sehe und einfach einen Snapshot mache.

    Ich verstehe die Frage leider nicht ganz :/
    Wie willst du denn etwas Tracen wenn du nichtmal weißt wo du anfangen sollst?


    Ich weiß nicht ob das hilft: Manchmal Trace ich zwischen 2 Buchtsaben, das heißt ich setzte einen Breakpoint auf den ersten Buchstaben, wen der auslöst setze ich den Breakpoint einen Offset höher und logge das Ganze, was du dann hast ist leider nicht nur die Textsache, sondern auch alles was die CPU noch nebenbei macht, wobei wir wieder bei deinem Problem wären ^^

    Also, erstmal: Blöde Fragen gibt es nicht, nur dumme Antworten (So wie die ^^)


    Nein, nein, dieser kleine Hack funktioniert mit der ganzen Bank, allerdings müsste man das für jeden Textblock der in einer anderen Bank liegt neu suchen, in FF2 wären das dann glaub ich 3 Textblöcke, also auch 3 Hacks.


    Mit "Textblock" meine ich übrigens nicht nur einen Satz, sondern den gesamten Text us der Bank.

    Da das Thema Final Fantasy 2 im Forum aufkam dachte ich mir ich schreibe ein kleines Tutorial wie man Daten in eine andere Rombank schieben und von dort laden kann, besser gesagt einige Sachen manipuliert, was hilfreich ist wenn zum Beispiel nach Text gleich andere Daten kommen, weil wir mit unserer Sprache meist mehr Platz brauchen wie die Japaner/Amerikaner.


    Unser Testobjekt:
    Final Fantasy II (USA) <- "NoIntro" Dump, ohne Header


    Schwierigkeit:
    Sehr einfach


    Was wir verschieben:
    Die Rombank in der der erste Text ist (Zur Erinnerung: "Crew: Captain Cecil, we are about to arrive!.......")


    Was wir brauchen:
    Die ROM "Final Fantasy II (USA)", wo man sie bekommt: Selbst rausfinden ;)
    "Geiger's Snes9x Debugger" http://www.romhacking.net sollte das haben.
    "Lunar Adress und Lunar Expand", gibt's hier
    "SnesEdit", fragt mich nicht woher, ich benutze eine uralte Version die SinaP mir geschrieben hat.
    Etwas Zeit.


    Was ich möchte:
    Das es jeder versteht, das heißt kein Fachchinesisch, sondern in eigenen Worten erklärt.



    Also, hier ist unser Text, ich gehe mal davon aus das jeder weiß wie man ihn findet und eine TBL erstellt!


    Unser Text beginnt an Offset: 0x80690, damit kann der Debugger aber nichts anfangen, wir wandeln diese Adresse in eine "verwertbare" Rombank Adresse um, dazu benutzen wir "Lunar Adress", einfach die ROM laden und das Programm sollte den korrekten ROM Typ von alleine erkennen, unsere Adresse in die linke Textbox eingeben und in der rechten sollte unsere neue Adresse erscheinen -> $10:8690


    Jetzt starten wir den Snes9x Debugger, laden die ROM, die "Debug Console" sollte jetzt erscheinen: Was wir nun machen ist einen "Breakpoint" setzen, das heißt wir füttern den Debugger mit einer Adresse, sobald diese Adresse von IRGENDWO "angesprochen" wird macht der Emulator einen "Break", das heißt er friert das Spiel ein, pausiert es sozusagen.
    Also: Auf "Breakpoints" klicken, in die erste Textbox unsere Adresse eingeben ($10:8690), Häkchen bei "Exec" und "Read" machen, das heißt wenn von unserer Adresse gelesen oder etwas ausgeführt wird, wird das Programm angehalten.
    "Write" benötigen wir wenn wir etwas suchen was in den RAM geschrieben wird, dazu aber etwas in einem anderen Tutorial.


    Jezt auf "Run" klicken und spielen, normalerweise sollte das Spiel NACH der Flugsequenz und BEVOR sich die Texbox öffnet, anhalten:


    Und siehe da: "$00/B2D0 BF 00 84 10 LDA $108400,x[$10:8690] A:0001 X:0290 Y:0000" ist das was für uns interessant ist.


    Zerlegen wir den ganzen Kram mal (Nur Sachen die wir brauchen):
    $00/B2D0<- Unsere Adresse in der ROM von der der Aufruf kam, wenn wir diese Adresse in eine PC-Adresse umwandeln erhalten wir: 0x32D0
    BF 00 84 10 <- Wie diese Funktion als Zahlen in der ROM aussieht


    LDA $108400,x[$10:8690] <- Was diese Funktion bewirkt
    X:0290 <- Uhm *kopf-kratz*


    Auf Deutsch umschrieben heißt das: LaDe $108400 UND X in den Akkumulator, macht $10:8690 als ROM Adresse,
    wandeln wir die ROM Adresse $10:8690" um, erhalten wir die PC Adresse 0x80690
    0x80400 + X = 0x80690


    Damit haben wir unsere Routine die den Text in dieser Rombank lädt gefunden, in der ROM an Adresse: 0x32D0



    Lasst uns jetzt die ROM von 8Mbit auf 12Mbit mit "Lunar Expand" erweitern, wir brauchen ja schließlich Platz :)


    Unsere 4 neuen Rombanks beginnen bei der Adresse 0x100000, die ROM Adresse ist "$20:8000"


    Ihr solltet als erstes eure Daten die ihr wollt dorthin verschieben, das heißt den Textblock von 0x80400 - 0x87FFF (31744 Bytes insgesamt), nach 0x100000


    Jetzt müssen wir dem Spiel sagen von wo es den neuen Text laden soll, erinnert ihr euch? Adresse 0x32D0 in der ROM


    Ändern wir doch mal "BF 00 84 10" zu "BF 00 80 20" ($20:8000 = 0x100000), editieren den Satz "Crew: Captain Cecil, we....... blah, blah" zu irgendetwas anderem.


    Nun schauen uns das Spiel erneut im Emulator an.



    Scheint als wäre dieser kleine Hack erfolgreich gewesen, das Spiel lädt jetzt den Text von unserer neuen Rombank, als kleine Aufgabe könntet ihr ja versuchen die Pointer von diesem Textblock auch zu verschieben.



    Falls es Fragen gibt, etwas nicht verstanden wurde, oder etwas ausführlicher erklärt werden soll editiere ich den Beitrag natürlich gerne: Viel Spa beim ausprobieren