Hallo Leute,
Ich habe mir mal grade mein erstes ASM-Script geschrieben und wollte euch fragen, ob das so funktioniert.
Code
Lg
Hallo Leute,
Ich habe mir mal grade mein erstes ASM-Script geschrieben und wollte euch fragen, ob das so funktioniert.
Lg
Die Spezies befindet sich in den verschlüsselten Unterstrukturdaten, daher musst du die Routinen von GF verwenden.
Hier findet sich alles, was du dafür brauchst.
Die Grundaufbau ist einfach, in r0 steht die RAM-Adresse des Pokémon, in r1 der auszulesene Parameter und dann rufst du einfach die Drecrypt-Routine auf. Der Wert wird r0 zurückgegeben.
Ja, ich weiss wo ich die finde (in dem Thread habe ich dich schon mal ausgefragt wegen der Spezies , trotzdem danke) wollte aber wissen, ob das Script so vom logischem funktionieren würde ^^. Ich bin grad am Handy deswegen habe ich noch nicht die Platzhalter ersetzt
Bis jetzt würdest du den ersten Byte der PID des Pokémon auslesen.
Wenn du nach dem Schnipsel von oben dein cmp r0 setzt, würde es funktionieren.
Wäre ja zu schön wenn das geklappt hätte ._.
Wieso denn den ersten Byte der PID?
[size=8]Btw hätte ich vielleicht erwähnen sollen, das ich das mit der Decryptroutine verbinden wollte :3 ^^"
Du liest den ersten Byte der Pokémon-Daten aus. Das ist demnach die PID (word), du liest aber ein Byte aus.
Wolltest du das so schreiben?
Wobei du get_attribute auch über r2 callen kannst, da dieses nu benutzt wird, wenn die angeforderte Information nicht in Form eines Registers übertragen werden kann.
Zudem ist eine Subroutine immer als eigenständige Routine zu betrachten und muss deswegen mit bl aufgerufen werden.
Also:
Zitat.equ pokemon, offsetzurspeziesdeserstenteampokis
Die Spezies ist doch ein Byte, oder irre ich mich da?
Die Spezies nimmt ein hword ein.
Wie bereist gesagt, gibt es kein statisches Offset zur Spezies, da die in einem verschlüsselten Block der Pokémon-Daten liegt.
Benutze Wodkas oder mein Gerüst.
Etwas anderes wäre es gewesen, wenn du das Level auslesen wolltest. Das kann man einfach an Offset #85 auslesen.
Könnte ich dieses Gerüst mit in die Routine von Kairyon einfach mit einbauen?
Was hast du damit genau vor?
Mein Code ist für die Interaktion in Scripts gedacht, da schreibst du besser etwas eigene für deine Zwecke.
Team auf ein Pokemon überprüfen -> Wenn vorhanden, Kairyons Routine ausführen, wenn nicht, abbrechen
Also, in einem Script möchest du das gesamte Team auf eine Pokémon-Spezies untersuchen?
Korrekt.
Dann lässt du die Überprüfung der Spezies in einer Schleife laufen, abhängig vom Wert, den dir countpokemon ausgibt. Der Wert steht dann in Lastresult.
Pokémon-Adresse erhöht sich dann nach dem ersten Durchlauf immer um jeweils #100.
Entschuldigt wenn ich soviel Frage, aber ich bin halt neu auf dem Gebiet ^^"
Woher bekomme ich countpokemon, wie funktioniert denn eine Schleife in asm?
Mit countpokemon meine ich den Scriptbefehl. Der würde vor deinem callasm aufgerufen. Jetzt steht die Anzahl der Pokémon in der Variable Lastresult (RAM-Adresse).
Der Hauptgedanke ist, dass ein Register den Zähler darstellt, solange wie dieser nicht einen gewissen Wert erreicht hat, lassen wir immer denselben Abschnitt durchlaufen, bis es soweit ist, dabei wird der Zähler pro Durchlauf um 1 erhöht.
* Keine Garantie, es ist schon spät
In dem Script müsste ich jetzt noch .Lastresult, .team, .decryptasm und .spezies definieren, richtig? Bei .done könnte ich dann zB mit strh die Spezies setzen und danach .encryptasm aufrufen?
Genau, Adressen definieren.
.done ist der Teil, wenn es fehlschlägt.
.Bisasam ist der Teil, wenn die Spezies gefunden wurde.
Was soll denn genau passieren, wenn es jene Spezies im Team gibt. Ich schätze, mit dem Pokémon, dass die Spezies besitzt, soll etwas passieren?
Die letzten Fragen für heute schätze ich: Was ist die RAM Adresse von LASTRESULT und was meinst du mit fehlschlägt, müsste da nicht eigentlich nicht das hin, was hinter .beq done steht?
Wenn der Spieler bspw ein Bisasam im Team hat, soll dieses zu Glumanda gemacht werden.