puh, hättest Du Dir nicht eine einfachere grf nehmen können?
nehmen wir vlt. mal was einfaches zum Anfang.
Pizzabote, grf ist hier:
http://www.tt-ms.de/forum/attachment.php?aid=385
die nfo:
// Automatically generated by GRFCODEC. Do not modify!
// (Info version 6)
// Format: spritenum pcxfile xpos ypos compression ysize xsize xrel yrel
0 * 4 11 00 00 00
1 * 16 08 05 "BS31Pizzabote" 00
2 * 5 06 00 01 04 FF
3 * 31 00 01 0B 01 05 00 4A 47 03 14 04 14 06 07 08 E0 09 50 0E FF 0F 01 10 00 11 00 12 17 14 01 00
4 * 4 01 01 01 08
5 c:\temp\sprites/pizzaboteVar_ID.pcx 98 8 01 22 9 -3 -10
6 c:\temp\sprites/pizzaboteVar_ID.pcx 114 8 09 16 20 -10 -7
7 c:\temp\sprites/pizzaboteVar_ID.pcx 146 8 01 12 28 -14 -6
8 c:\temp\sprites/pizzaboteVar_ID.pcx 194 8 09 17 20 -6 -8
9 c:\temp\sprites/pizzaboteVar_ID.pcx 226 8 01 22 9 -6 -10
10 c:\temp\sprites/pizzaboteVar_ID.pcx 242 8 09 17 20 -10 -8
11 c:\temp\sprites/pizzaboteVar_ID.pcx 274 8 01 12 28 -14 -6
12 c:\temp\sprites/pizzaboteVar_ID.pcx 322 8 09 16 20 -6 -7
13 * 9 02 01 00 01 01 00 00 00 00
14 * 5 06 00 01 03 FF
15 * 7 03 01 01 05 00 00 00
16 * 5 06 00 01 04 FF
17 * 15 04 01 1F 01 05 "Pizzabote" 00
die ersten 3 Zeilen ignorier einfach mal.
Die Nummerierung der Sprites hast Du ja erkannt

Sprite 1 fängt also mit 00 an (erstes Sprite) * 4 (Länge des Sprites)
11 ist die Anzahl der Sprites in HEX, da es ein DWORD eintrag ist wird mit 00 00 00 aufgefüllt (ach ja, und Little Endian)
Sprite 2 hat 16 Byte. Definiert eine Action 8, 05 kennzeichnet die Patch -Version die mind. vorhanden sein muss, in den "" ist z. Einen die Sprite-ID aus den Initialen des Erstellers, dazu eine 2-stellige Zahl, danach der Name, zum Abschluss eine 00. GRFCODEC zeigt (wenn man die richtigen Parameter zum decodieren nimmt) die Texte der Action 8 + der Action 4, s. letzte Zeile, im Klartext an.
Sprite 3 ist 5 Byte lang, definiert eine Action 6. Die wird hier benutzt um die ID des Fahrzeuges (in der folgenden Action 0 zu definieren) per Parameter beim Aufrufen der grf zu ändern. Die Details lassen wir erst mal, ok?
Dann kommt mit Sprite 4 die Action 0. Hier werden alle wesentlichen parameter für die grf festgelegt. Im Einzelnen:
00 Action 0
01 welches Feature soll behandelt werden? 0=train, 1= roadvehicle usw
0B Anzahl der Änderungen
01 Anzahl der 'Fahrzeuge' die geändert werden
05 ID des Fahrzeuges (hex)
00 4A 47 Baujahr in Tagen ab 1920 in hex + Little Endian
03 14 Lebensdauer
04 14 Wie lange kaufbar
06 07 in welchen Klimata
08 E0 Speed (hex)
09 50 laufende Kosten-Faktor (gibt es eine Tabelle)
0E FF Sprite ID (bei neunen Grafiken immer FF)
0F 01 Beladungskapazität
10 00 Cargo-type (00=Passagiere)
11 00 Cost Factor
12 17 Sound
14 01 Gewicht in ¼ Tonnen
00 Schlussbyte
4 * 4 01 01 01 08 Action 1, Anzahl der Sprites und Anzahl der Ansichten je Sprite
Nun kommen die Sprites und ihre Position:
5 c:\temp\sprites/pizzaboteVar_ID.pcx 98 8 01 22 9 -3 -10
6 c:\temp\sprites/pizzaboteVar_ID.pcx 114 8 09 16 20 -10 -7
7 c:\temp\sprites/pizzaboteVar_ID.pcx 146 8 01 12 28 -14 -6
8 c:\temp\sprites/pizzaboteVar_ID.pcx 194 8 09 17 20 -6 -8
9 c:\temp\sprites/pizzaboteVar_ID.pcx 226 8 01 22 9 -6 -10
10 c:\temp\sprites/pizzaboteVar_ID.pcx 242 8 09 17 20 -10 -8
11 c:\temp\sprites/pizzaboteVar_ID.pcx 274 8 01 12 28 -14 -6
12 c:\temp\sprites/pizzaboteVar_ID.pcx 322 8 09 16 20 -6 -7
Dafür braucht man die 3. Zeile.
// Format: spritenum pcxfile xpos ypos compression ysize xsize xrel yrel
xpos + ypos sind die Koordinaten der linken oberen Ecke des Sprites in Deinem pcx-file. hier beim ersten Sprite also die Werte 98 + 8
compression kannst Du erst mal vernachlässigen
ysize + xsize sind die Abmessungen des Sprites
xrel + yrel sind die Position IM SPIEL -> da könntest Du dran drehen.
Nun kommt die Action 2 + Action 3
13 * 9 02 01 00 01 01 00 00 00 00
15 * 7 03 01 01 05 00 00 00
definieren wann welche Sprites genommen wird, bei einem nicht so aufregend
14 * 5 06 00 01 03 FF Action 6, s. o.
16 * 5 06 00 01 04 FF Action 6, s. o.
Und zum Schluß ein Name für das Kaufmenü .
17 * 15 04 01 1F 01 05 "Pizzabote" 00