Skip to content
Dwarf Fortress data structure descriptions
Perl Common Lisp XSLT Shell
Find file
Pull request Compare This branch is 136 commits ahead of angavrilov:master.
Latest commit dd3e9e7 @quietust quietust Add win32 0.42.05 symbols
Failed to load latest commit information.
linux Run initial scripts for 0.42.05
osx Run initial scripts for 0.42.05
windows Update csv
.gitignore Call the new keydisplay search script.
Bitfield.pm Generate numeric shift and mask constants for bitfield elements.
Common.pm GCC: Use system_header pragma to disable struct size warnings
Enum.pm Make is_valid() take a base_type instead of an enum_type
README.md move update instructions, add basic readme
SYNTAX.rst Fix code generator to handle the new tag.
StructFields.pm Revert and properly fix this problem with sometimes uninitialized fie…
StructType.pm Investigate the advmode reaction viewscreen.
codegen.pl Use the three-argument form of open()
defs.xml-empty Add a perl script that automates resetting for a new version.
df-code.lisp Update world_site and many abstract buildings and history events.
df.advmode.xml Patch by _Q
df.announcements.xml Add new announcements for 0.42
df.art.xml identify some activity components
df.building-raws.xml Cleanup - use pointer-type and type-name in vectors wherever possible
df.building-vectors.xml More various structures checked.
df.buildings.xml Add building vmethods, instrument/booksheld, and update civzone types
df.creature-raws.xml Add additional body_part_layer_raw field
df.d_init.xml Patch by _Q
df.descriptors.xml Check historical_entity, world constructions, language raws, manager.
df.entities.xml Add historical_entity_type::PerformanceTroupe
df.entity-raws.xml Align entity raw and more various structures.
df.globals.xml Add ui_lever_target_type global and locate it on OS X
df.graphics.xml Add custom methods to enabler
df.history.xml Add history_event_collection_purgest and fix world_history
df.init.xml Cleanup - use pointer-type and type-name in vectors wherever possible
df.interaction.xml Check and align a bunch of structures in history and raws.
df.item-raws.xml PURE -> PURE_
df.item-vectors.xml Update items_other_id (2 new entries added in v0.42)
df.itemimprovements.xml Align entity raw and more various structures.
df.items.xml Fix typos
df.job-types.xml Removing the MakeInstrument job type.
df.jobs.xml Add some research into job postings
df.keybindings.xml Run release scripts for v0.42.01 to officially start the update process.
df.knowledge.xml Add all 312 knowledge flags
df.language.xml Check and align a bunch of structures in history and raws.
df.legends.xml More data about ui_advmode and random fixes for various structs.
df.machines.xml corrected windmill orientation info
df.map.xml New flags for mark/autodig, and add enum entry for priority BSE
df.materials.xml Check and align a bunch of structures in history and raws.
df.meeting.xml [Re]name a couple activity_event_performancest fields
df.military.xml Align entity raw and more various structures.
df.pathfinding.xml Add new unit_path_goal enum values
df.plant-raws.xml Check and align a bunch of structures in history and raws.
df.plants.xml Refactor spatters to represent the common part as its own type.
df.projectile.xml More various structures checked.
df.raws.xml Add new reaction stuff, including categories
df.reaction-raws.xml Figured out new reaction_product::produce() parm - it's a vector of p…
df.refs.xml Add histfig_hf_link_type::FORMER_APPRENTICE
df.resource.xml Update save/load viewscreens, add file_compressor (and add refs to it)
df.skills.xml Add unit_labor category attribute - used in v-p-l menu
df.stockpile.xml Add stockpile_category::Sheets (fixes copystock, etc.)
df.syndrome.xml Fix final objects in the old test file to auto-mark things aligned.
df.tile-types.xml Fix name of viewscreen_topicmeeting_fill_land_holder_positionsst
df.ui-menus.xml Identify some fields in ui_sidebar_menus.command_line
df.ui.xml Add new professions, labors, and skills; update historical_entity and ui
df.unit-thoughts.xml Add needs
df.units.xml Add needs
df.vermin.xml Add temporary ID values, used between save/load for specific refs
df.viewscreen.xml Merge remote-tracking branch 'ragundo/ragundo'
df.world-data.xml Make flip_latitude an enum
df.world-site.xml Added missing value in T_Areas::T_type enum
df.world.xml Add history_event_collection_purgest and fix world_history
disasm.lisp Don't list linux globals that couldn't be decoded.
how-to-update.rst Format how-to-update as rst
list.pl Add missing list.pl
lower-1.xslt Fix code generator to handle the new tag.
lower-2.xslt Allow associating certain attributes with type-name and pointer-type.
make-csv.sh Update scripts to extract and check vmethod argument counts in window…
make-dt.pl Use the three-argument form of open()
make-keybindings.pl Fix the keybinding enum parse script to replace *_START with real ones.
make-scans.sh Update scripts to extract and check vmethod argument counts in window…
match-ctors.pl Use the three-argument form of open()
match-vtables.pl Misc uncommitted changes for v0.40 from my checkout.
new-release.pl Use Digest::MD5 instead of shelling out
start-utils.lisp Add more wrappers for finder functions in cl-linux-debug.
start.lisp Fix final objects in the old test file to auto-mark things aligned.
start.sh Allow specifying the process id as an argument to start.sh.
start.sh-core Determine the sbcl heap size based on the architecture.
symbols.xml Add win32 0.42.05 symbols
v0.42.01.lst Some tweaks to align globals better.
v0.42.02.lst Fix final objects in the old test file to auto-mark things aligned.
v0.42.03.lst Run the update script after correcting the osx globals base.
v0.42.04.lst Run initial scripts for v0.42.04 (some changes unaccounted for)
v0.42.05.lst Run initial scripts for 0.42.05
version.lisp Run initial scripts for 0.42.05

README.md

DF-structures

DF-structures is the core information on which DFHack depends.

For information on how to understand this format, see ./SYNTAX.rst. For how to update for a new version of DF, see ./how-to-update.rst

Originally dfhack used a file called Memory.xml to describe data structures of the game. It explicitly listed addresses of known global variables, and offsets within structures to fields, not unlike the ini files used by Dwarf Therapist.

However, as the number of known fields and objects grow, maintaining the explicit offset lists quickly becomes difficult, error prone, and inefficient.

This format instead represents data structure layout purely via listing all fields in the correct order, exactly like a structure definition does in the C++ language itself. There is still a file with numeric data, but it only contains absolute addresses of global objects.

Something went wrong with that request. Please try again.