Skip to content

DAT

Savegames stored in DAT files consist of various sections. The main parts of it are the GameState and the Inventory. Also the GlobalVars are saved here.

Data format

Size Type Section Description
ZZVersion Header This version has to be compatible with the internal savegame ZZVersion structure
zstring Header The players name
4B uint Location The structure size of the location block (always 8)
4B uint Location Scene ID
4B uint Location Entrance Trigger ID
4B uint GameState Count of scenes for which are GameState Modifier saved
GameStateScene[] GameState The scene data
4B uint Inventory The count of cards in the players inventory
InventoryCard[] Inventory The inventory card data
4B uint PixieCount The current amount of pixies hold on by the player
4B uint PixieCount The total amount of pixies catched by the player
4B uint GlobalVars The count of global variables (always 49)
GlobalVar[] GlobalVars The global variables
4B uint SwitchGameMinTries The minimal count of tries for the switch game

GameStateScene

Size Type Description
zstring The scene name
4B uint The GameState modifier count for this scene
GameStateMod[] The GameState modifiers

GameStateMod

Size Type Description
4B enum The type of the GameStateMod (see GameStateModType)
GameStateModType specific data

GameStateModType

Value Description
0 DisableAttackTrigger
1 RemoveItem
2 ChangeNpcState
3 DisableTrigger
4 RemoveSimpleModel
5 SetTrigger
6 SetNpcModifier

GSModDisableAttackTrigger

Size Type Description
4B uint triggerId

GSModRemoveItem

Size Type Description
4B uint modelId

GSModChangeNpcState

Size Type Description
4B uint triggerId
4B uint databaseId - The fb0x05 UID of the NPC to change into

GSModDisableTrigger

Size Type Description
4B uint triggerId

GSModRemoveSimpleModel

Size Type Description
4B uint modelId

GSModSetTrigger

Size Type Description
4B uint triggerId
4B uint ii1 - The trigger parameters
4B uint ii2 - If one of these are -1
4B uint ii3 - this said parameter is not set
4B uint ii4

GSModSetNpcModifier

Size Type Description
4B uint triggerId
4B uint value - Actually just sets the triggers ii2 param

InventoryCard

Size Type Description
4B CardId The CardId, thus also encodes the type
4B uint atIdx - The index at which Zanzarah puts this card in the internal inventory list
4B uint dbUID - The database ID (so either fb0x01, fb0x03 or fb0x04) of the card
4B uint amount
1B bool isUsed
InventoryCard-specific data

InventoryItem

Items do not have any extra information

InventorySlot

Size Type Description
4B uint usageCount - How many times this spell was used
4B uint curMana

InventoryFairy

Size Type Description
4B uint changeCountLevel - How many times this fairy leveled up
4B uint level
4B uint unknown
4B uint unknown
4B uint changeCountXP - How many times this fairy got XP
4B uint curXP
12B SpellReq[4] The current spell requirements
16B uint[4] The spell indices (in the inventory of the player)
4B uint The slot index in the players deck
4B uint statusEffect
20B uint[5] unknown
4B uint Current health points
zstring name

SpellReq

Size Type Description
1B enum class1 - (see Classes)
1B enum class2 - (see Classes)
1B enum class3 - (see Classes)