geschrieben am 23.11.2010 20:48:43
Zitat von mzünni: kann mir wer den link senden?
SMW Thank You Message Importer
Zitat von Zyforth: Ahh ich versteh das nicht
:O
Okay, pass auf.
Patches tun nicht anderes, als den Code der ROM zu verändern. Manche ändern nur ganz kleine Sachen, andere fügen ganz neue Features hinzu. Dazu wird natürlich eine Menge Code gebraucht. Und da man den nicht einfach da einfügen kann, wo schon alter Code steht, muss man dafür einen Platz auswählen, an dem kein Code und auch nichts anderes von Belang steht. wenn du die ROM expandierst, was LM sowieso tut, wird eine Menge neuer,
freier Platz (Free Space) freigegeben, den du für Patches verwenden kannst.
Nur
groß genug muss er sein, damit der Code auch dort hineinpasst. Wenn du etwas erfahrener bist, kannst du abschätzen oder auch nachzählen, wie viele Bytes der Code in Anspruch nimmt, aber wenn nicht, dann nimm einfach den größtmöglichen Haufen, nämlich den mit x8000 freien Bytes. Das muss immer reichen.
So, wie findet man den nun? Wie du's schon gemacht hast, den Free Space Logger benutzen. Der sagt dir dann so was:
CodePC offset LoROM offset Size
0x08036D 0x10816D 0x002D
0x087A92 0x10F892 0x0001
0x0880D3 0x10FED3 0x0080
0x08819B 0x10FF9B 0x005D
0x0980E7 0x12FEE7 0x0111
0x098FBA 0x138DBA 0x0AC4
0x099E34 0x139C34 0x0280
0x09AA14 0x13A814 0x055B
0x09B67C 0x13B47C 0x0FE4
0x09C6A2 0x13C4A2 0x0214
0x09CDA2 0x13CBA2 0x004A
0x09D794 0x13D594 0x107C
0x09E8B9 0x13E6B9 0x017B
0x0A012D 0x13FF2D 0x00CB
0x0A1E5C 0x149C5C 0x026C
0x0A2DF8 0x14ABF8 0x0068
0x0A3103 0x14AF03 0x0058
0x0A3173 0x14AF73 0x005B
0x0A6456 0x14E256 0x1BD8
0x0A8175 0x14FF75 0x0083
0x0AE1C8 0x15DFC8 0x2030
0x0B68C8 0x16E6C8 0x1938
0x0B8200 0x178000 0x286B
0x0BD2E9 0x17D0E9 0x2F17
0x0C0200 0x188000 0x8000
0x0C8200 0x198000 0x8000
0x0D0200 0x1A8000 0x8000
0x0D8200 0x1B8000 0x8000
0x0E0200 0x1C8000 0x8000
0x0E8FFA 0x1D8DFA 0x71FE
0x0F493A 0x1EC73A 0x38C6
0x0FB808 0x1FB608 0x49F0
0x107BA8 0x20F9A8 0x0658
0x108200 0x218000 0x8000
0x110200 0x228000 0x8000
0x118200 0x238000 0x8000
0x120200 0x248000 0x8000
0x128200 0x258000 0x8000
0x130200 0x268000 0x8000
0x138200 0x278000 0x8000
0x140200 0x288000 0x8000
0x148200 0x298000 0x8000
0x150200 0x2A8000 0x8000
0x158200 0x2B8000 0x8000
0x160200 0x2C8000 0x8000
0x168200 0x2D8000 0x8000
0x170200 0x2E8000 0x8000
0x178200 0x2F8000 0x8000
Wichtig ist hier erstmal die "
Size"-Spalte. Wie du siehst, ist der Free Space an Adresse $10816D nur x2D Bytes groß, und der danach nur eins! Das reicht für keinen Patch. Wie gesagt, du solltest lieber Free Space nehmen, bei dem als Größe x8000 steht. Das ist zum beispiel bei
x188000 der Fall. Und deshalb trägst du im Patch als Free Space
$188000 ein.
Oh, und natürlich solltest du nicht mit der fehlgepatchten ROM weiterarbeiten. Nimm ein Backup, das funktioniert.
Zitat von Zyforth: Sehe ich das richtig? Der Patch ist 1,7 MB groß ?
Das nimmt doch enorm viel Platz weg...
Wo steht denn das? Ist die ASM-Datei so groß?
Wie auch immer, das macht nichts. Der sieht nur deswegen so groß aus, weil jeder Buchstabe, jedes Zeichen, jede Zahl und jede Leerzeile ein Byte verbraucht. Später, als ASM-Code, braucht nur noch jeder Befehl und jede Zahl jeweils ein Byte. Mach dir keine Sorgen, Patches können gar nicht größer als x8000 Bytes sein.