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.

Difference between revisions of "40d:Memory hacking"

From Dwarf Fortress Wiki
Jump to navigation Jump to search
m
(rearrange, add some addresses)
Line 1: Line 1:
== Attention! ==
 
We need to be very clear about what version(s) these addresses apply to.  Please list version numbers along with addresses.
 
 
 
== New string format ==
 
== New string format ==
  
Line 17: Line 14:
  
 
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.
 
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 ==
 +
 +
{|  border="1" cellpadding="2" width="100%"
 +
| 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 ==
 +
 +
{| border="1" cellpadding="2" width="100%"
 +
! width="25%" | Name
 +
! width="50%" | Notes
 +
! width="25%" | Address
 +
 +
|-
 +
| colspan="3" | '''Useful Variables'''
 +
 +
|-
 +
| Current Year
 +
|
 +
| 00C34378
 +
 +
|-
 +
| Dwarf Race ID
 +
| As in the race identifier in the [[#Creature Structure]]
 +
| 01237AD0 (probably)
 +
 +
|-
 +
| Creature Vector
 +
|
 +
| 01416A48 (probably)
 +
 +
|}
 +
  
 
== Creature Structure ==
 
== Creature Structure ==
  
The creature vector is at 0x01415A00, so:
+
In version {fill this in please}
List start: 0x01415A04
 
List end:  0x01415A08
 
  
 
Structure Offsets:
 
Structure Offsets:

Revision as of 22:13, 2 November 2007

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
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

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.

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,