Notes/World.md

3.4 KiB

World

Game World/State Pointer @ 0x7fe944

Object size: 0x225c bytes

Constructor Address: 0x479870

Points to World struct

Offset Type Description
0x0000 void** Virtual Method Table
0x0004 uint32_t Slots in Entity Hashtable
0x0008 void** Pointer to Entity Hashtable
0x00B0 ?? Pointer to Ground Object (?)
0x0288 pyEntity* UsrEntity_0
0x028C pyEntity* UsrEntity_1
0x0290 pyEntity* UsrEntity_2
0x0294 pyEntity* UsrEntity_3
0x0298 uint32_t Slots in Model Hashtable
0x029C void** Pointer to Model Hashtable
0x02B8 uint32_t Slots in Entity lists Hashtable
0x02BC void** Pointer to Entity list Hashtable
0x0330 float[3] Time (why 3 times?)
0x1C6C float Alarm level
0x1C68 float Alarm Grow Level
0x2158 float Used in World_Init
0x2170 ??? Used in World_Init
0x2180 float Used in World_Init
0x2188 void* Used in World_Init
0x218C void* Used in World_Init
0x2190 float Used in World_Init
0x2198 void* Used in World_Init
0x219C void* Used in World_Init
0x21A0 void** Used in World_Init (VTable pointer?)
0x21B4 void** Used in World_Init (VTable pointer?)
0x21C8 ??? Used in World_Init
0x2204 uint32_t or uint16_t Used in World_Init
0x2230 float Used in World_Init
0x2238 ??? Used in World_Init
0x2254 float Used in World_Init

cPyEntity structure

Offset Type Description
0x0000 void** Virtual Method Table
0x0004 char* Name
0x0008 void* ???

Entity Hash Table

Hash-function used: PJW (Same parameters as the example implementation)

Entry format:

struct HT_Entry {
  void* data;
  const char* key;
  HT_Entry* next;
}

Data format:

Offset Type Description
0x0 void** Virtual Method Table (?)
0x4 const char* name as string
0x14 void* pointer to self (why?)
0x28 float[3] Position in Game World

EntityList Hash Table

Attributes:

  • Near
  • First
  • Num
  • OnDeath
  • OnDamage
  • ...