Beiträge von Ice Man

    Also die Checksum Fix mit ROMs falscher Größe klappt nicht. Eben getestet und es geht nicht, xD.

    Beispiel Final Fantasy IV Ultima. ROM ist 2MB + SMC Header nach dem Patchen. Header sagt ROM ist 1MB.

    Nach dem ich den SMC Header entfernt habe und denn Checksum repariert habe, bleibt es auf 1MB und Checksum bleibt falsch. :P

    Mir ist noch was aufgefallen.


    Wenn ich ein ROM mit einem falschen Checksum repariere, aber die Romgröße nicht zum Header passt, bleibt die Checksum dennoch fehlerhaft.


    Beispiel: Final Fantasy Ultima (FF II Hack).

    Die ROM ist 2MB ($0B) aber im Header ($7FD7) steht nur 1MB ($0A).

    Gibt auch andere ROMs, bei denen das so ist.


    Wäre also sinnvoll, die Größe des ROMs mit der Angabe im Header bei $xFD7 zu vergleichen. ;)

    $07 = 128KB

    $08 = 256KB

    $09 = 512KB

    $0A = 1MB

    $0B = 2MB

    $0C = 4MB

    $0D = 8MB

    $0E = 16MB

    $0F = 32MB


    Wobei die letzten beiden offiziell gar nicht existieren. :P


    Ist eine ROM also z.B. 1.5MB muss der nächstgrößte Wert genommen werden, also $0B für 2MB.

    Bei 512KB dann $0A für 1MB usw.


    Hoffe es ist alles verständlich.

    Also ich würde es bei GSU lassen, denn so heißt der Chip ja eigentlich.


    Bzgl. dem Beispiel von Star Ocean. Das Spiel ist an sich ein LoROM, aber die Grafik wurde durch den S-DD1 stark komprimiert, weswegen es eben 6MB hat. Würde da bei LoROM bleiben also auf den Header zugreifen. :)

    Achso, alles verstanden. :) Daran hatte ich gar nich gedacht.


    Hoffentlich ist Momotarou Densetsu das einzigste Spiel mit einem "falschem" Header, xD.


    Nachtrag: Wirs dem Programm auch noch ein vernünftiges Icon geben? :)

    Momotarou Dentetsu Happy hat #$3A bei $FFD5. Weiß nicht, woher ich die #$35 hatte. Sorry dafür.


    Woher du die #$37 nimmst ist mir dennoch ein Rätsel.. .


    Dennoch ist #$3A == 0011 1010, d.h. FastROM ist an und ExLoROM auch, obwohl das ROM nur 3MB hat und HiROM ist. Schon Komisch

    Wozu die 1 nach A ist, keine Ahnung.


    Kann gut sein, dass wir uns beide gegenseitig durcheinander bringen, xD.


    Mach das, kannst gerne berichten, wenn du was neues hast. :)

    Hatte die ROMs selber geprüft, aber wohl Pilotwings vergessen. :saint:

    Eventuell einfach nur DSP in der Ausgabe reinschreiben, genauso wie bei GSU auch.

    Stunt Race ist nämlch kein GSU2, sondern GSU1.


    Der Fehler liegt nach wie vor bei dir, xD.


    $35 = 0011 0101


    Zitat

    The bitmask to use is 001A 0BCD, the basic value is $20:

    - A == 0 means SlowROM (+ $0), A == 1 means FastROM (+ $10).

    - B == 1 means ExHiROM (+ $4)

    - C == 1 means ExLoROM (+ $2)

    - D == 0 means LoROM (+ $0), D == 1 means HiROM (+ $1), is used with B and C in case of extended ROMs.



    0011 entspricht 001A, demnach ist A == 1

    -Bedeutet FastROM = $30


    0101 entspricht 0BCD, demnach sind B und D == 1

    Bedeutet HiROM bzw. ExHiROM, da wohl über 4MB/Spezialchip. $05


    Beides zusammen = $35 8o


    Ich hab keine Ahnung wie auf die $37 kommst.

    Das was im Header steht bleibt und ist aussschlaggebend, xD.

    HiROM ist schon richig. ;)


    Für $xFD5:

    xxAAxxxB; AA==11 means FastROM ($30). If B is set, it's HiROM, otherwise it's LoROM.


    $35 == 0011 0101 in Binär

    Demnach AA = 11 (FastROM)

    B = 1 (HiROM)

    warum nun auch xxx = 010 ist, keine Ahnung.

    Vermutlich, weil der Header noch alt ist, also $7FBD nicht benutzt wird. Bei Star Fox 2 wird er benutzt und hat #$06 bei $7FBD.

    Also eine Ausnahme hinzufügen für das Spiel jeglicher Region (Europe, Japan und USA) sowie Competition Cart vermute ich mal.

    Ich habe bewusst FF genommen, weil leere EPROMs mit FF gelesen werden und typischer einige Programmer auch FF überspringen. ;)

    Aber ist nicht weiter problematisch. Gibt ja nicht all zu viele ROMs die größer als 4MB sind. Habe ich bisher immer manuell mit HxD Hex Editor expandiert und gesplittet. ;)

    Ich würde es weiterhin RAM nennen und den Wert dahin schreiben, jop. :)

    Glaube kaum, dass beides gleichzeitig hinterlegt ist. Zumindest ist nichts bekannt.


    EDIT: Bin mal eben alle PCBs durch. Also folgende ROMs benutzen $7FBD:

    Dirt Racer

    Doom

    Vortex


    Wobei StarWing/Star Fox teilweise auch PCBs ohne Batterie haben:

    https://snescentral.com/pcbboards.php?chip=SNSP-1C0N5S-01


    o_O


    ----


    Wenn ein ROM wie z.B. Tales Of Phantasia 6MB ExHiROM ist, wäre ja 27C322 (4MB) + 27C160 (2MB) am sinnvollsten.

    Man kann natürlich auch auf 8MB expandieren, also die letzten 2MB mit FF gefüllt am Ende der ROM dran hängen und somit 2x4MB für 27C322 ausgeben.


    Finde das Tool auf jeden Fall schon mal sehr gut und wird auch ucon64 und den anderen SNES Checksum Fixer bei mir ersetzen, gerade weil es auch ExHiROM unterstützt und ich das nicht immer manuell machen muss. :D

    Also ich würde überprüfen ob $7FD8/$FFD8 == #$00 und wenn ja, dann zusätzlich prüfen, ob $7FBD/$FFBD != #$00 oder sowas in der Art.


    Wüsste jeztt aber auch keine weiteren Spiele aus dem Kopf, die das so haben wie Doom.


    Du hast aber recht, dass es kein SRAM, also Save RAM sein kann, sondern nur ein RAM, der die Daten solange behält, bis das Spiel aus ist.

    Demnach ROM+RAM,+SuperFX wie im Emulator auch. ;)


    Übrigens. Bei der SplitROM Option solltest du noch 4MB (27C322) mit einbauen. Gibt ja schließlich auch größere ROMs. ;)

    Und ein Symbol für das Programm wäre auch nice. :P