02 Wherigo-Cartridges – der Aufbau einer Wherigo-Cartdridge

WFoundation/WF.Compiler: Compiler for Wherigo cartridges (github.com)
driquet/gwcd (github.com)

Eine GWC-Datei besteht aus fünf Abschnitten

  • Signatur
  • Information zu den vorhandenen Dateien
  • Header mit allgemeinen Information zur Cartridge
    • Startkoordinate und Beschreibung des Startes
    • Erstelldatum
    • Art der Cartridge
    • Name und ID des Spielers
    • Name der Cartridge
    • Beschreibung der Cartridge
    • Version
    • Autor und Firma
    • Completion-Code
  • LUA-Bytecode
  • Dateien der Bilder, Töne, Texte

Der Byte-weise Aufbau ist wie in der folgenden Tabelle dargestellt. Hierbei gilt:

  • Zahlen werden im Format “Little endian” abgespeichert
  • Zeichenketten enden mit 0x00.
  • Double-Zahlen werden im Format “double-precision floating point” abgespeichert

Hinweis: Earwigo hat im Header weitere Datenfelder eingebracht!

AdresseLängeInhaltBemerkung
@0000Beginn Signatur
2 ByteVersion0x02 gefolgt von 0x0a oder 0x0b
4 ByteCART
1 Byte0x00
@0007Anzahl der Objekte
2 Byte
@0009ID und Adresse pro Objektjeweils 6 Byte pro Objekt
2 ByteObjekt-ID
4 ByteAdresse des Objektes
@xxxxBeginn des Header@0009 + Anzahl Objekte * 6 Byte
4 ByteLänge des Headers
8 ByteLatitude
8 ByteLongitude
8 ByteAltitude
4 ByteDatum der ErstellungSekunden seit dem 10.02.2004 01:00
2 ByteObjekt-ID des Splashscreen-1 wenn kein Splashscreen
2 ByteObjekt-ID des Icons-1 wenn kein Icon
? ByteTyp der CartridgeTour guide, Puzzle, etc.
? ByteName des Spieles
4 ByteSpieler-IDID aus der Groundspeak-Datenbank
? ByteName der Cartridge
? Byte GUID der Cartridge
? Byte Beschreibung der Cartridge
? Byte Beschreibung des Startpunktes
? Byte Version
? Byte Autor
? ByteFirma
? ByteEmpfohlenes GerätGarmin Colorad, Windows PPC, etc.
4 ByteLänge des Completion Codes
? ByteCompletion Code
? ByteZusätzliche Datenfelder von Earwigo; bspw.
– Land
– Region
– Durchgespielt
– Datum letztes Spiel
– Datum Publish
– Datum Update
– Builder Version
@yyyyBeginn der Dateien@0009 + Anzahl Objekte * 6 Byte + Länge Header
LUA-BytecodeObjekt-ID = 0
4 ByteGröße des LUA-Bytecode
? ByteLUA-Bytecode
@zzzzMediendateienObjekt-ID = 1, 2, 3, …
1 Bytegültiges Objektwenn 0, dann ist Objekt gelöscht
4 ByteObjekt-Typ1 = BMP
2 = PNG
3 = JPG
4 = GIF
17 = WAV
18 = MP3
19 = FDL
20 = SND
21 = OGG
33 = SWF
49 = TXT
4 ByteGröße des Objektes
? ByteObjektinhalt