v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

40d:Memory hacking

From Dwarf Fortress Wiki
Revision as of 04:08, 3 November 2007 by AzureLightning (talk | contribs) (Added Strength/Agility/Toughness and Skill array offsets)
Jump to navigation Jump to search

New string format

Offset Size Type Description
0x00 16 Character buffer Holds the string data if capacity < 16
0x00 4 Character pointer Points to the string data if capacity >= 16
0x10 4 Length Current length of the string
0x14 4 Capacity Current capacity of the string buffer (also indicates which mode the string is in)

Yes, the first two items overlap. This is correct. This is the MSVC Express string format - Toady appears to be using standard C++ structures pretty much everywhere.

Vector format

Offset Size Type Description
0x00 4 vtable (not useful)
0x04 4 Array start
0x08 4 Array end (End - Start)/4 = # of elements

Attention!

We need to be very clear about what version(s) these addresses apply to. Please list version numbers along with addresses.

Addresses for 27.169.33a

Name Notes Address
Useful Variables
Art defacement malus normally -1000 (18 FC FF FF) 0079DC2F
Current Year 00C34378
Dwarf Race ID As in the race identifier in the #Creature Structure 01237AD0 (probably)
Creature Vector 01416A48 (probably)


Creature Structure

In version {fill this in please}

Structure Offsets:

Offset Size Type Description
0x00 4 Vptr Virtual function table pointer
0x04 24 First name See above string format
0x32 4 Surname word 1 No part of speech, like in the old structure
0x36 4 Surname word 2
0x70 24 Custom profession name See above string format
0x88 2 Type ID #1 These two are wild guesses - I believe they are dwarf types. They appear to be duplicated (I'm told Toady stores the original dwarf type for legends) and I don't know which is the "old" and which is the "new". I've entered the values I've found in the Type ID table below. #2 is the current type.
0x8a 2 Type ID #2
0x8C 4 Creature Race A6 is the dwarf default (this may be different if the user has a mod installed)
0xe4 4 Flags (1 << 1) if creature is dead (redundant?)
0xe8 4 Flags (1 << 7) if creature is dead (redundant?)

(1 << 17) if creature is ready for slaughter

0x1F8 2 Strange mood 0xFFFF means no mood
0x41C 4 Strength 0 to 5
0x420 4 Agility 0 to 5
0x424 4 Toughness 0 to 5
0x42C 4 Skill Start Ptr Start of skill list
0x430 4 Skill End Ptr End of skill list
0x458 102 Labor preferences 102 1 byte values, corresponding to the profession list. Mostly bools, with notable exceptions of shieldtype,armortype, and weaponnum. I have No idea what the last one means.
0x504 4 Happiness level 0 = miserable, >149 = ecstatic

Type ID list

Hideously incomplete and may be completely wrong.

ID Meaning
0x00 Miner
0x04 Woodcutter
0x2f Planter
0x29 Cook
0x31 Brewer
0x37 Mechanic
0x3e Architect
0x6c Creature


Profession list

Obviously could do with some formatting.

PROFESSION_MINE,
PROFESSION_HAUL_STONE,
PROFESSION_HAUL_WOOD,
PROFESSION_HAUL_BODY,
PROFESSION_HAUL_FOOD,
PROFESSION_HAUL_REFUSE,
PROFESSION_HAUL_ITEM,
PROFESSION_HAUL_FURNITURE,
PROFESSION_HAUL_ANIMALS,
PROFESSION_CLEAN,
PROFESSION_CUTWOOD,
PROFESSION_CARPENTER,
PROFESSION_DETAIL,
PROFESSION_MASON,
PROFESSION_ARCHITECT,
PROFESSION_ANIMALTRAIN,
PROFESSION_ANIMALCARE,
PROFESSION_HEALTHCARE,
PROFESSION_BUTCHER,
PROFESSION_TRAPPER,
PROFESSION_DISSECT_VERMIN,
PROFESSION_LEATHER,
PROFESSION_TANNER,
PROFESSION_BREWER,
PROFESSION_ALCHEMIST,
PROFESSION_SOAP_MAKER,
PROFESSION_WEAVER,
PROFESSION_CLOTHESMAKER,
PROFESSION_MILLER,
PROFESSION_PROCESS_PLANT,
PROFESSION_MAKE_CHEESE,
PROFESSION_MILK,
PROFESSION_COOK,
PROFESSION_PLANT,
PROFESSION_HERBALIST,
PROFESSION_FISH,
PROFESSION_CLEAN_FISH,
PROFESSION_DISSECT_FISH,
PROFESSION_HUNT,
PROFESSION_SMELT,
PROFESSION_FORGE_WEAPON,
PROFESSION_FORGE_ARMOR,
PROFESSION_FORGE_FURNITURE,
PROFESSION_METAL_CRAFT,
PROFESSION_CUT_GEM,
PROFESSION_ENCRUST_GEM,
PROFESSION_WOOD_CRAFT,
PROFESSION_STONE_CRAFT,
PROFESSION_BONE_CARVE,
PROFESSION_GLASSMAKER,
PROFESSION_EXTRACT_STRAND,
PROFESSION_AXE,
PROFESSION_SWORD,
PROFESSION_MACE,
PROFESSION_HAMMER,
PROFESSION_SPEAR,
PROFESSION_DAGGER,
PROFESSION_CROSSBOW,
PROFESSION_BOW,
PROFESSION_BLOWGUN,
PROFESSION_PIKE,
PROFESSION_WHIP,
PROFESSION_SHIELDLEVEL,
PROFESSION_ARMORLEVEL,
PROFESSION_SIEGECRAFT,
PROFESSION_SIEGEOPERATE,
PROFESSION_BOWYER,
PROFESSION_MECHANIC,
PROFESSION_WEAPONNUMBER,
PROFESSION_POTASH_MAKING,
PROFESSION_LYE_MAKING,
PROFESSION_DYER,
PROFESSION_BURN_WOOD,
PROFESSION_OPERATE_PUMP,
PROFESSION_UNUSED_3,
PROFESSION_UNUSED_4,
PROFESSION_UNUSED_5,
PROFESSION_UNUSED_6,
PROFESSION_UNUSED_7,
PROFESSION_UNUSED_8,
PROFESSION_UNUSED_9,
PROFESSION_UNUSED_10,
PROFESSION_UNUSED_11,
PROFESSION_UNUSED_12,
PROFESSION_UNUSED_13,
PROFESSION_UNUSED_14,
PROFESSION_UNUSED_15,
PROFESSION_UNUSED_16,
PROFESSION_UNUSED_17,
PROFESSION_UNUSED_18,
PROFESSION_UNUSED_19,
PROFESSION_UNUSED_20,
PROFESSION_UNUSED_21,
PROFESSION_UNUSED_22,
PROFESSION_UNUSED_23,
PROFESSION_UNUSED_24,
PROFESSION_UNUSED_25,
PROFESSION_UNUSED_26,
PROFESSION_UNUSED_27,
PROFESSION_UNUSED_28,
PROFESSION_UNUSED_29,
PROFESSION_UNUSED_30,
PROFESSIONNUM,