Website             Forum


  Main
    News
    Forum
    Newsletter
    Kontakt
    Disclaimer


  Rh-Allgemein
    F.A.Q.
    Einsteigerkurs
    Manuals


  Hacks
    Pokémon-G/S
    Op. Seeschaum
    Pokemon Eissturm


  Tutorials
    Pokémon GBC
    Pokémon GBA
    G/S Scriptingdoku
    Andere


  Downloads
    Allgemeine Tools
    Pokémon GBC
    Pokémon GBA
    Ressourcen
    Needed Files
    Emulatoren
    Emu-Trans










[Tutorial] Angel-Pokémon
(C) 2002 by F-Zero(devzerox@gmx.de) & Tauwasser


THX @Tauwasser:
- für Das Offset, ohne das ich die Daten nie gefunden hätte.
- Er hat herausgefunden, wo den Maps die Segmente zugeteilt werden!!

Dieses Tut wäre ohne Tau niemals möglich gewesen!!!

Wichtig:
Dieses ist nun wirklich zu einfach, als dass man dazu ein Tool bräuchte.
Wer ein Tool will, soll erstmal richtig hacken lernen!
Ich verbiete es, hierfür ein Tool zu schreiben.



Nun zur Sache:

Diesmal fange ich mal mit dem, was Tauwasser herausgefunden hat, an:
Jeder(!) Map kann ein Angelpokemon-Segment zugeordnet werden, und zwar im Mapheader.
Genauer gesagt: Im letzten Byte des Mapheaders (Der, der auch die Musik etc. enthält)
(Zur Errinnerung: Der Mapheader ist 9 Bytes lang und beginnt meistens mit 25h)

Bei Maps, die kein Wasser haben, ist dieser Index meistens 01.

Nun zu den Segmenten selbst:
Die Table mit den Segmenten beginnt bei: 92404 (Hex)
Das erste Segment dieser Table hat den Index 01.
Standardmäßig geht die Zählung bis 0D
00 als Index bedeutet, dass keine Angelpokemon vorhanden sind.

Die Table enthält beliebig viele Segmente nach folgendem Muster:
[80][Angel][Profiangel][Superangel]
(Bis auf 80 sind alles 2-Byte Pointer auf die jeweiligen Fangdaten!)

Die Fangdaten:
Die Fangdaten enthalten mehrere Segmente, wovon jedes
jeweils ein Pokemon festlegt:

[Warscheinlichkeit][Pokemon (2-Byte!)]

Die Pokemon sind dabei nach ihrer Warscheinlichkeit aufsteigend sortiert.

Das mit der Warscheinlichkeit funktioniert so:
Das Rom generiert einen Zufallswert zwischen 00 und FF
Das erste Segemnt, dessen Warscheinlichkeit größer/gleich
dem Zufallswert ist, wird genommen.

Das letzte Segment muss daher die Warscheinlichkeit FF haben.

Also z.B.:
[B3][Pokemon][D9][Pokemon][FF][Pokemon]

Nun die Pokemon-Definitionen:
Davon gibt es zwei Typen:

Den einen, der ein Pokemon für alle Tageszeiten und dessen Level bestimmt:
[Pokemon-Nummer][Level]

Und den anderen, der zwischen Morgens+Tagsüber und Nachts unterscheidet:
[00][Verweis-Index]

Die Verweise:
Jeder Verweis stellt einen Index in der Tabelle bei 925EB dar.
Die Nummer des ersten Table-Eintrags ist diesmal 00 (Standard bis 15h)

Jeder Verweis ist nach folgendem Muster aufgebaut:
[Pokemon-Nummer Morgens/Tagsüber][Level Morgens/Tagsüber]
[Pokemon-Nummer Nachts][Level Nachts]

(je 1 Byte)

So, das sollte alles sein.

Wenn ihr Fragen habt, wisst ihr ja, welche Möglichkeiten ihr habt^^

hit counter