geschrieben am 04.08.2013 21:19:48
Zitat von kooooopa: Wieso hast du das letzte dann nicht gleich ganz weggelassen
Damit man merkt, dass das Auskommentieren Absicht war.
Zitat von kooooopa: oder die kompletten letzten 3 und $42???
Nur das letzte JMP kann man getrost weglassen (natürlich immer vorausgesetzt, das Label, zu dem man springen will, steht gleich danach).
Weiß du noch, das alte Blocktool? Bei dem man Offsets als Zahlen angeben musste? Wenn man beispielsweise bei "Below" die Zahl 0 eingegeben hat, hieß das "Wenn man den Block von unten berührt, führe den Code aus." Gab man zum Beispiel "3" ein, hieß das "Wenn man den Block von unten berührt, überspringe die ersten drei Bytes des Codes und führe den Code von dort aus".
Das ist in BTSD praktisch genau so - nur siesht du die Zahlen dort nicht, die sind fest. Eigentlich sind die Offsets folgendermaßen: Below 0, Above 3, Sides 6, SpriteVert 9, SpriteHorz C, Cape F, Fireball 12, Corner 15, HeadInside 18, BodyInside 1B. Das sind genau die Stellen, an denen die JMPs stehen - und die springen dann weiter zu dem eigentlichen Code.
Und dann ist es auch egal, ob an Stelle 1B ein Sprung zum Label M steht oder gleich das Label selbst. Der Code, der ausgeführt wird, ist derselbe. Mehr als das letzte kann man aber nicht weglassen: wenn du die letzten beiden JMPs weglässt, dann führt zwar das HeadInside-Offset an die richtige Stelle (nämlich 18), aber die Stelle 1B ist dann mitten im Code, und wenn du dort hinspringst, crasht das Spiel.