diff --git a/README.md b/README.md
index 5d15c5c06..82f7d4c7c 100644
--- a/README.md
+++ b/README.md
@@ -82,12 +82,9 @@ See [the changelog](docs/tr1/CHANGELOG.md).
Please refer to the [detailed documentation](docs/tr1/).
## TR2X - Tomb Raider 2
-
-### Overview
-TR2X serves as a sequel to TR1X, currently focusing on the decompilation of Tomb Raider 2.
-
### Decompilation Progress
-
+Decompilation is currently complete, and we're shifting our focus towards
+enriching the game with new features.
### Download
Download the latest release:
diff --git a/docs/tr2/README.md b/docs/tr2/README.md
index 2d7c92a9e..656deff4a 100644
--- a/docs/tr2/README.md
+++ b/docs/tr2/README.md
@@ -3,8 +3,9 @@
-TR2X is currently in the early stages of development, focusing on the
-decompilation process. We recognize that there is much work to be done.
+TR2X is finished with the decompilation and is now able to run without the
+original game .exe. The focus is now to clean up the code base and enrich the
+game with new enhancements and features.
## Windows
diff --git a/docs/tr2/progress.svg b/docs/tr2/progress.svg
deleted file mode 100644
index 004f77e1f..000000000
--- a/docs/tr2/progress.svg
+++ /dev/null
@@ -1,2578 +0,0 @@
-
-
-
-
-
-
-
-
-Legend:
-
-Function fully decompiled
-
-
-
-Function not yet decompiled, but with a known signature
-
-
-
-Function not yet decompiled, with an unknown signature
-
-
-
-Function not used by the game
-
-
-
-
-Tomb2.exe progress according to the physical function order:
-97.59% (1214) · 0% (0) · 0% (0) · 2.41% (30)
-
-
-
-
-
-void __cdecl Matrix_GenerateW2V(PHD_3DPOS *viewpos);
-void __cdecl Matrix_LookAt(int32_t xsrc, int32_t ysrc, int32_t zsrc, int32_t xtar, int32_t ytar, int32_t ztar, int16_t roll);
-void __cdecl Math_GetVectorAngles(int32_t x, int32_t y, int32_t z, int16_t *dest);
-void __cdecl Matrix_RotX(int16_t rx);
-void __cdecl Matrix_RotY(int16_t ry);
-void __cdecl Matrix_RotZ(int16_t rz);
-void __cdecl Matrix_RotYXZ(int16_t ry, int16_t rx, int16_t rz);
-void __cdecl Matrix_RotYXZpack(uint32_t rpack);
-bool __cdecl Matrix_TranslateRel(int32_t x, int32_t y, int32_t z);
-void __cdecl Matrix_TranslateAbs(int32_t x, int32_t y, int32_t z);
-void __cdecl Output_InsertPolygons(const int16_t *obj_ptr, int32_t clip);
-void __cdecl Output_InsertRoom(const int16_t *obj_ptr, int32_t is_outside);
-const int16_t *__cdecl Output_CalcSkyboxLight(const int16_t *obj_ptr);
-void __cdecl Output_InsertSkybox(const int16_t *obj_ptr);
-void __cdecl Output_InsertInventoryBackground(const int16_t *obj_ptr);
-const int16_t *__cdecl Output_CalcObjectVertices(const int16_t *obj_ptr);
-const int16_t *__cdecl Output_CalcVerticeLight(const int16_t *obj_ptr);
-const int16_t *__cdecl Output_CalcRoomVertices(const int16_t *obj_ptr, int32_t far_clip);
-void __cdecl Output_RotateLight(int16_t pitch, int16_t yaw);
-void __cdecl Output_InitPolyList(void);
-void __cdecl Output_SortPolyList(void);
-void __cdecl Output_QuickSort(int32_t left, int32_t right);
-void __cdecl Output_PrintPolyList(uint8_t *surface_ptr);
-void __cdecl Output_AlterFOV(int16_t fov);
-void __cdecl Output_SetNearZ(int32_t near_z);
-void __cdecl Output_SetFarZ(int32_t far_z);
-void __cdecl Output_Init(int16_t x, int16_t y, int32_t width, int32_t height, int32_t near_z, int32_t far_z, int16_t view_angle, int32_t screen_width, int32_t screen_height);
-void __cdecl Output_DrawPolyLine(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyFlat(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyTrans(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyGouraud(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyGTMap(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyWGTMap(const int16_t *obj_ptr);
-int32_t __cdecl Output_XGenX(const int16_t *obj_ptr);
-int32_t __cdecl Output_XGenXG(const int16_t *obj_ptr);
-int32_t __cdecl Output_XGenXGUV(const int16_t *obj_ptr);
-int32_t __cdecl Output_XGenXGUVPerspFP(const int16_t *obj_ptr);
-void __cdecl Output_GTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
-void __cdecl Output_WGTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
-void __cdecl Output_DrawPolyGTMapPersp(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyWGTMapPersp(const int16_t *obj_ptr);
-int32_t __cdecl Output_VisibleZClip(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2);
-int32_t __cdecl Output_ZedClipper(int32_t vtx_count, POINT_INFO *pts, VERTEX_INFO *vtx);
-int32_t __cdecl Output_XYGUVClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-const int16_t *__cdecl Output_InsertObjectGT4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-const int16_t *__cdecl Output_InsertObjectGT3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-int32_t __cdecl Output_XYGClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-const int16_t *__cdecl Output_InsertObjectG4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-const int16_t *__cdecl Output_InsertObjectG3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-int32_t __cdecl Output_XYClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-void __cdecl Output_InsertTrans8(const PHD_VBUF *vbuf, int16_t shade);
-void __cdecl Output_InsertTransQuad(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
-void __cdecl Output_InsertFlatRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Output_InsertLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Output_InsertGT3_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2);
-void __cdecl Output_DrawClippedPoly_Textured(int32_t vtx_count);
-void __cdecl Output_InsertGT4_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture);
-const int16_t *__cdecl Output_InsertObjectGT4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-const int16_t *__cdecl Output_InsertObjectGT3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-const int16_t *__cdecl Output_InsertObjectG4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Output_DrawPoly_Gouraud(int32_t vtx_count, int32_t red, int32_t green, int32_t blue);
-const int16_t *__cdecl Output_InsertObjectG3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Output_InsertFlatRect_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Output_InsertLine_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Output_InsertGT3_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2, SORT_TYPE sort_type);
-void __cdecl Output_InsertClippedPoly_Textured(int32_t vtx_count, float z, int16_t poly_type, int16_t tex_page);
-void __cdecl Output_InsertGT4_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture, SORT_TYPE sort_type);
-const int16_t *__cdecl Output_InsertObjectGT4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-const int16_t *__cdecl Output_InsertObjectGT3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-const int16_t *__cdecl Output_InsertObjectG4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Output_InsertPoly_Gouraud(int32_t vtx_count, float z, int32_t red, int32_t green, int32_t blue, int16_t poly_type);
-const int16_t *__cdecl Output_InsertObjectG3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Output_InsertSprite_Sorted(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
-void __cdecl Output_InsertFlatRect_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Output_InsertLine_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Output_InsertTrans8_Sorted(const PHD_VBUF *vbuf, int16_t shade);
-void __cdecl Output_InsertTransQuad_Sorted(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
-void __cdecl Output_InsertSprite(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
-void __cdecl Output_DrawSprite(uint32_t flags, int32_t x, int32_t y, int32_t z, int16_t sprite_idx, int16_t shade, int16_t scale);
-void __cdecl Output_DrawPickup(int32_t sx, int32_t sy, int32_t scale, int16_t sprite_idx, int16_t shade);
-const int16_t *__cdecl Output_InsertRoomSprite(const int16_t *obj_ptr, int32_t vtx_count);
-void __cdecl Output_DrawScreenSprite2D(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
-void __cdecl Output_DrawScreenSprite(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
-void __cdecl Output_DrawScaledSpriteC(const int16_t *obj_ptr);
-void __cdecl Bird_Initialise(int16_t item_num);
-void __cdecl Bird_Control(int16_t item_num);
-void __cdecl Boat_Initialise(int16_t item_num);
-int32_t __cdecl Boat_CheckGetOn(int16_t item_num, COLL_INFO *coll);
-void __cdecl Boat_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl Boat_TestWaterHeight(ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
-void __cdecl Boat_DoShift(int32_t boat_num);
-void __cdecl Boat_DoWakeEffect(ITEM *boat);
-int32_t __cdecl Boat_DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
-int32_t __cdecl Boat_Dynamics(int16_t boat_num);
-int32_t __cdecl Boat_UserControl(ITEM *boat);
-void __cdecl Boat_Animation(ITEM *boat, int32_t collide);
-void __cdecl Boat_Control(int16_t item_num);
-void __cdecl Gondola_Control(int16_t item_num);
-void __cdecl Creature_Initialise(int16_t item_num);
-int32_t __cdecl Creature_Activate(int16_t item_num);
-void __cdecl Creature_AIInfo(ITEM *item, AI_INFO *info);
-int32_t __cdecl Box_SearchLOT(LOT_INFO *lot, int32_t expansion);
-int32_t __cdecl Box_UpdateLOT(LOT_INFO *lot, int32_t expansion);
-void __cdecl Box_TargetBox(LOT_INFO *lot, int16_t box_num);
-int32_t __cdecl Box_StalkBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
-int32_t __cdecl Box_EscapeBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
-int32_t __cdecl Box_ValidBox(const ITEM *item, int16_t zone_num, int16_t box_num);
-void __cdecl Creature_Mood(ITEM *item, AI_INFO *info, int32_t violent);
-TARGET_TYPE __cdecl Box_CalculateTarget(XYZ_32 *target, ITEM *item, LOT_INFO *lot);
-int32_t __cdecl Creature_CheckBaddieOverlap(int16_t item_num);
-int32_t __cdecl Box_BadFloor(int32_t x, int32_t y, int32_t z, int32_t box_height, int32_t next_height, int16_t room_num, LOT_INFO *lot);
-void __cdecl Creature_Die(int16_t item_num, int32_t explode);
-int32_t __cdecl Creature_Animate(int16_t item_num, int16_t angle, int16_t tilt);
-int16_t __cdecl Creature_Turn(ITEM *item, int16_t maximum_turn);
-void __cdecl Creature_Tilt(ITEM *item, int16_t angle);
-void __cdecl Creature_Head(ITEM *item, int16_t required);
-void __cdecl Creature_Neck(ITEM *item, int16_t required);
-void __cdecl Creature_Float(int16_t item_num);
-void __cdecl Creature_Underwater(ITEM *item, int32_t depth);
-int16_t __cdecl Creature_Effect(ITEM *item, BITE *bite, int16_t (*__cdecl spawn)(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num));
-int32_t __cdecl Creature_Vault(int16_t item_num, int16_t angle, int32_t vault, int32_t shift);
-void __cdecl Creature_Kill(ITEM *item, int32_t kill_anim, int32_t kill_state, int32_t lara_kill_state);
-void __cdecl Creature_GetBaddieTarget(int16_t item_num, int32_t goody);
-void __cdecl Camera_Initialise(void);
-void __cdecl Camera_Move(const GAME_VECTOR *target, int32_t speed);
-void __cdecl Camera_Clip(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
-void __cdecl Camera_Shift(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
-const SECTOR *__cdecl Camera_GoodPosition(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Camera_SmartShift(GAME_VECTOR *target, void (*__cdecl shift)(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom));
-void __cdecl Camera_Chase(const ITEM *item);
-int32_t __cdecl Camera_ShiftClamp(GAME_VECTOR *pos, int32_t clamp);
-void __cdecl Camera_Combat(const ITEM *item);
-void __cdecl Camera_Look(const ITEM *item);
-void __cdecl Camera_Fixed(void);
-void __cdecl Camera_Update(void);
-void __cdecl Game_SetCutsceneTrack(int32_t track);
-int32_t __cdecl Game_Cutscene_Start(int32_t level_num);
-void __cdecl Room_InitCinematic(void);
-int32_t __cdecl Game_Cutscene_Control(int32_t nframes);
-void __cdecl Camera_UpdateCutscene(void);
-int32_t __cdecl Room_FindByPos(int32_t x, int32_t y, int32_t z);
-void __cdecl CutscenePlayer_Control(int16_t item_num);
-void __cdecl Lara_Control_Cutscene(int16_t item_num);
-void __cdecl CutscenePlayer1_Initialise(int16_t item_num);
-void __cdecl CutscenePlayerGen_Initialise(int16_t item_num);
-void __cdecl Camera_LoadCutsceneFrame(void);
-void __cdecl Collide_GetCollisionInfo(COLL_INFO *coll, int32_t xpos, int32_t ypos, int32_t zpos, int16_t room_num, int32_t obj_height);
-int32_t __cdecl Room_FindGridShift(int32_t src, int32_t dst);
-int32_t __cdecl Collide_CollideStaticObjects(COLL_INFO *coll, int32_t x, int32_t y, int32_t z, int16_t room_num, int32_t height);
-void __cdecl Room_GetNearbyRooms(int32_t x, int32_t y, int32_t z, int32_t r, int32_t h, int16_t room_num);
-void __cdecl Room_GetNewRoom(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Item_ShiftCol(ITEM *item, COLL_INFO *coll);
-void __cdecl Item_UpdateRoom(ITEM *item, int32_t height);
-int16_t __cdecl Room_GetTiltType(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-void __cdecl Lara_BaddieCollision(ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lara_TakeHit(ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Creature_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Object_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Door_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Object_Collision_Trap(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lara_Push(ITEM *item, ITEM *lara_item, COLL_INFO *coll, int32_t spaz_on, int32_t big_push);
-int32_t __cdecl Item_TestBoundsCollide(const ITEM *src_item, const ITEM *dst_item, int32_t radius);
-int32_t __cdecl Item_TestPosition(int16_t *bounds, ITEM *src_item, ITEM *dst_item);
-void __cdecl Item_AlignPosition(XYZ_32 *vec, ITEM *src_item, ITEM *dst_item);
-int32_t __cdecl Lara_MovePosition(XYZ_32 *vec, ITEM *item, ITEM *lara_item);
-int32_t __cdecl Misc_Move3DPosTo3DPos(PHD_3DPOS *src_pos, const PHD_3DPOS *dest_pos, int32_t velocity, int16_t ang_add);
-int32_t __cdecl Game_Control(int32_t nframes, int32_t demo_mode);
-void __cdecl Item_Animate(ITEM *item);
-int32_t __cdecl Item_GetAnimChange(ITEM *item, const ANIM *anim);
-void __cdecl Item_Translate(ITEM *item, int32_t x, int32_t y, int32_t z);
-SECTOR *__cdecl Room_GetSector(int32_t x, int32_t y, int32_t z, int16_t *room_num);
-int32_t __cdecl Room_GetWaterHeight(int32_t x, int32_t y, int32_t z, int16_t room_num);
-int32_t __cdecl Room_GetHeight(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-void __cdecl Camera_Legacy_RefreshFromTrigger(int16_t type, const int16_t *data);
-void __cdecl Room_Legacy_TestTriggers(int16_t *data, int32_t heavy);
-int32_t __cdecl Item_IsTriggerActive(ITEM *item);
-int32_t __cdecl Room_GetCeiling(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-int16_t __cdecl Room_Legacy_GetDoor(const SECTOR *sector);
-int32_t __cdecl LOS_Check(const GAME_VECTOR *start, GAME_VECTOR *target);
-int32_t __cdecl LOS_CheckZ(const GAME_VECTOR *start, GAME_VECTOR *target);
-int32_t __cdecl LOS_CheckX(const GAME_VECTOR *start, GAME_VECTOR *target);
-int32_t __cdecl LOS_ClipTarget(const GAME_VECTOR *start, GAME_VECTOR *target, const SECTOR *sector);
-int32_t __cdecl LOS_CheckSmashable(const GAME_VECTOR *start, GAME_VECTOR *target);
-void __cdecl Room_FlipMap(void);
-void __cdecl Room_RemoveFlipItems(ROOM *r);
-void __cdecl Room_AddFlipItems(ROOM *r);
-void __cdecl Room_Legacy_TriggerMusicTrack(int16_t value, int16_t flags, int16_t type);
-void __cdecl Room_TriggerMusicTrackImpl(int16_t value, int16_t flags, int16_t type);
-int32_t __cdecl Demo_Control(int32_t level_num);
-int32_t __cdecl Demo_Start(int32_t level_num);
-void __cdecl Demo_LoadLaraPos(void);
-void __cdecl Demo_GetInput(void);
-int16_t __cdecl Diver_Harpoon(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-int32_t __cdecl Diver_GetWaterSurface(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Diver_Control(int16_t item_num);
-void __cdecl Dog_Control(int16_t item_num);
-void __cdecl Tiger_Control(int16_t item_num);
-void __cdecl Twinkle_Control(int16_t fx_num);
-void __cdecl Effect_CreateBartoliLight(int16_t item_num);
-int16_t __cdecl Effect_MissileFlame(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-void __cdecl Dragon_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Dragon_Bones(int16_t item_num);
-void __cdecl Dragon_Control(int16_t back_num);
-void __cdecl Bartoli_Initialise(int16_t item_num);
-void __cdecl Bartoli_Control(int16_t item_num);
-void __cdecl TRex_Control(int16_t item_num);
-int32_t __cdecl Game_DrawCinematic(void);
-int32_t __cdecl Game_Draw(void);
-void __cdecl Room_DrawAllRooms(int16_t current_room);
-void __cdecl Room_GetBounds(void);
-void __cdecl Room_SetBounds(const int16_t *objptr, int32_t room_num, ROOM *parent);
-void __cdecl Room_Clip(ROOM *r);
-void __cdecl Room_DrawSingleRoomGeometry(int16_t room_num);
-void __cdecl Room_DrawSingleRoomObjects(int16_t room_num);
-void __cdecl Effect_Draw(int16_t fx_num);
-void __cdecl Object_DrawSpriteItem(const ITEM *item);
-void __cdecl Object_DrawAnimatingItem(const ITEM *item);
-void __cdecl Lara_Draw(const ITEM *item);
-void __cdecl Lara_Draw_I(const ITEM *item, const FRAME_INFO *frame1, const FRAME_INFO *frame2, int32_t frac, int32_t rate);
-void __cdecl Matrix_InitInterpolate(int32_t frac, int32_t rate);
-void __cdecl Matrix_Pop_I(void);
-void __cdecl Matrix_Push_I(void);
-void __cdecl Matrix_RotY_I(int16_t ang);
-void __cdecl Matrix_RotX_I(int16_t ang);
-void __cdecl Matrix_RotZ_I(int16_t ang);
-void __cdecl Matrix_TranslateRel_I(int32_t x, int32_t y, int32_t z);
-void __cdecl Matrix_TranslateRel_ID(int32_t x, int32_t y, int32_t z, int32_t x2, int32_t y2, int32_t z2);
-void __cdecl Matrix_RotYXZ_I(int16_t y, int16_t x, int16_t z);
-void __cdecl Matrix_RotYXZsuperpack_I(const int16_t **pprot1, const int16_t **pprot2, int32_t skip);
-void __cdecl Matrix_RotYXZsuperpack(const int16_t **pprot, int32_t skip);
-void __cdecl Output_InsertPolygons_I(int16_t *ptr, int32_t clip);
-void __cdecl Matrix_Interpolate(void);
-void __cdecl Matrix_InterpolateArm(void);
-void __cdecl Gun_DrawFlash(LARA_GUN_TYPE weapon_type, int32_t clip);
-void __cdecl Output_CalculateObjectLighting(const ITEM *item, const BOUNDS_16 *bounds);
-int32_t __cdecl Item_GetFrames(const ITEM *item, FRAME_INFO *frmptr[], int32_t *rate);
-BOUNDS_16 *__cdecl Item_GetBoundsAccurate(const ITEM *item);
-FRAME_INFO *__cdecl Item_GetBestFrame(const ITEM *item);
-void __cdecl Output_AddDynamicLight(int32_t x, int32_t y, int32_t z, int32_t intensity, int32_t falloff);
-void __cdecl BigEel_Control(int16_t item_num);
-void __cdecl Eel_Control(int16_t item_num);
-int32_t __cdecl Lara_IsNearItem(PHD_3DPOS *pos, int32_t distance);
-void __cdecl Sound_UpdateEffects(void);
-int16_t __cdecl DoBloodSplat(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num);
-void __cdecl DoLotsOfBlood(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num, int32_t num);
-void __cdecl Blood_Control(int16_t fx_num);
-void __cdecl Explosion_Control(int16_t fx_num);
-void __cdecl Ricochet(GAME_VECTOR *pos);
-void __cdecl Ricochet_Control(int16_t fx_num);
-void __cdecl CreateBubble(XYZ_32 *pos, int16_t room_num);
-void __cdecl FX_Bubbles(ITEM *item);
-void __cdecl Bubble_Control(int16_t fx_num);
-void __cdecl Splash(ITEM *item);
-void __cdecl Splash_Control(int16_t fx_num);
-void __cdecl WaterSprite_Control(int16_t fx_num);
-void __cdecl SnowSprite_Control(int16_t fx_num);
-void __cdecl HotLiquid_Control(int16_t fx_num);
-void __cdecl Waterfall_Control(int16_t item_num);
-void __cdecl FX_FinishLevel(ITEM *item);
-void __cdecl FX_Turn180(ITEM *item);
-void __cdecl FX_FloorShake(ITEM *item);
-void __cdecl FX_LaraNormal(ITEM *item);
-void __cdecl FX_Boiler(ITEM *item);
-void __cdecl FX_Flood(ITEM *item);
-void __cdecl FX_Rubble(ITEM *item);
-void __cdecl FX_Chandelier(ITEM *item);
-void __cdecl FX_Explosion(ITEM *item);
-void __cdecl FX_Piston(ITEM *item);
-void __cdecl FX_Curtain(ITEM *item);
-void __cdecl FX_Statue(ITEM *item);
-void __cdecl FX_SetChange(ITEM *item);
-void __cdecl DingDong_Control(int16_t item_num);
-void __cdecl LaraAlarm_Control(int16_t item_num);
-void __cdecl AlarmSound_Control(int16_t item_num);
-void __cdecl BirdTweeter_Control(int16_t item_num);
-void __cdecl DoChimeSound(const ITEM *item);
-void __cdecl ClockChimes_Control(int16_t item_num);
-void __cdecl SphereOfDoom_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl SphereOfDoom_Control(int16_t item_num);
-void __cdecl SphereOfDoom_Draw(const ITEM *item);
-void __cdecl FX_LaraHandsFree(ITEM *item);
-void __cdecl FX_FlipMap(ITEM *item);
-void __cdecl FX_LaraDrawRightGun(ITEM *item);
-void __cdecl FX_LaraDrawLeftGun(ITEM *item);
-void __cdecl FX_SwapMeshesWithMeshSwap1(ITEM *item);
-void __cdecl FX_SwapMeshesWithMeshSwap2(ITEM *item);
-void __cdecl FX_SwapMeshesWithMeshSwap3(ITEM *item);
-void __cdecl FX_InvisibilityOn(ITEM *item);
-void __cdecl FX_InvisibilityOff(ITEM *item);
-void __cdecl FX_DynamicLightOn(ITEM *item);
-void __cdecl FX_DynamicLightOff(ITEM *item);
-void __cdecl FX_ResetHair(ITEM *item);
-void __cdecl FX_AssaultStart(ITEM *item);
-void __cdecl FX_AssaultStop(ITEM *item);
-void __cdecl FX_AssaultReset(ITEM *item);
-void __cdecl FX_AssaultFinished(ITEM *item);
-int16_t __cdecl Knife(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-void __cdecl Cultist2_Control(int16_t item_num);
-void __cdecl Monk_Control(int16_t item_num);
-void __cdecl Worker3_Control(int16_t item_num);
-void __cdecl XianWarrior_Draw(const ITEM *item);
-void __cdecl XianSpearman_DoDamage(ITEM *item, CREATURE *xian, int32_t damage);
-void __cdecl XianWarrior_Initialise(int16_t item_num);
-void __cdecl XianSpearman_Control(int16_t item_num);
-void __cdecl XianKnight_SparkleTrail(ITEM *item);
-void __cdecl XianKnight_Control(int16_t item_num);
-int32_t __cdecl GF_LoadScriptFile(const char *fname);
-int32_t __cdecl GF_DoFrontendSequence(void);
-int32_t __cdecl GF_DoLevelSequence(int32_t level, GAMEFLOW_LEVEL_TYPE type);
-int32_t __cdecl GF_InterpretSequence(int16_t *ptr, GAMEFLOW_LEVEL_TYPE type, int32_t seq_type);
-void __cdecl GF_ModifyInventory(int32_t level, int32_t type);
-void __cdecl Lara_Hair_Initialise(void);
-void __cdecl Lara_Hair_Control(bool in_cutscene);
-void __cdecl Lara_Hair_Draw(void);
-BOOL __cdecl Overlay_FlashCounter(void);
-void __cdecl Overlay_DrawAssaultTimer(void);
-void __cdecl Overlay_DrawGameInfo(bool pickup_state);
-void __cdecl Overlay_DrawHealthBar(bool flash_state);
-void __cdecl Overlay_DrawAirBar(bool flash_state);
-void __cdecl Overlay_MakeAmmoString(char *string);
-void __cdecl Overlay_DrawAmmoInfo(void);
-void __cdecl Overlay_InitialisePickUpDisplay(void);
-void __cdecl Overlay_DrawPickups(bool pickup_state);
-void __cdecl Overlay_AddDisplayPickup(GAME_OBJECT_ID object_id);
-void __cdecl Overlay_DisplayModeInfo(char* string);
-void __cdecl Overlay_DrawModeInfo(void);
-int32_t __cdecl Inv_Display(int32_t inventory_mode);
-void __cdecl Inv_Construct(void);
-void __cdecl Inv_SelectMeshes(INVENTORY_ITEM *inv_item);
-int32_t __cdecl Inv_AnimateInventoryItem(INVENTORY_ITEM *inv_item);
-void __cdecl Inv_DrawInventoryItem(INVENTORY_ITEM *inv_item);
-int32_t __cdecl Input_GetDebounced(int32_t input);
-void __cdecl Inv_DoInventoryPicture(void);
-void __cdecl Inv_DoInventoryBackground(void);
-void __cdecl Inv_InitColors(void);
-void __cdecl Inv_RingIsOpen(RING_INFO *ring);
-void __cdecl Inv_RingIsNotOpen(RING_INFO *ring);
-void __cdecl Inv_RingNotActive(INVENTORY_ITEM *inv_item);
-void __cdecl Inv_RingActive(void);
-int32_t __cdecl Inv_AddItem(GAME_OBJECT_ID object_id);
-void __cdecl Inv_InsertItem(INVENTORY_ITEM *inv_item);
-int32_t __cdecl Inv_RequestItem(GAME_OBJECT_ID object_id);
-void __cdecl Inv_RemoveAllItems(void);
-int32_t __cdecl Inv_RemoveItem(GAME_OBJECT_ID object_id);
-int32_t __cdecl Inv_GetItemOption(GAME_OBJECT_ID object_id);
-void __cdecl Inv_RemoveInventoryText(void);
-void __cdecl Inv_Ring_Init(RING_INFO *ring, int16_t type, INVENTORY_ITEM **list, int16_t qty, int16_t current, IMOTION_INFO *imo);
-void __cdecl Inv_Ring_GetView(RING_INFO *ring, PHD_3DPOS *viewer);
-void __cdecl Inv_Ring_Light(RING_INFO *ring);
-void __cdecl Inv_Ring_CalcAdders(RING_INFO *ring, int16_t rotation_duration);
-void __cdecl Inv_Ring_DoMotions(RING_INFO *ring);
-void __cdecl Inv_Ring_RotateLeft(RING_INFO *ring);
-void __cdecl Inv_Ring_RotateRight(RING_INFO *ring);
-void __cdecl Inv_Ring_MotionInit(RING_INFO *ring, int16_t frames, int16_t status, int16_t status_target);
-void __cdecl Inv_Ring_MotionSetup(RING_INFO *ring, int16_t status, int16_t status_target, int16_t frames);
-void __cdecl Inv_Ring_MotionRadius(RING_INFO *ring, int16_t target);
-void __cdecl Inv_Ring_MotionRotation(RING_INFO *ring, int16_t rotation, int16_t target);
-void __cdecl Inv_Ring_MotionCameraPos(RING_INFO *ring, int16_t target);
-void __cdecl Inv_Ring_MotionCameraPitch(RING_INFO *ring, int16_t target);
-void __cdecl Inv_Ring_MotionItemSelect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
-void __cdecl Inv_Ring_MotionItemDeselect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
-void __cdecl Requester_Init(REQUEST_INFO *req);
-void __cdecl Requester_Shutdown(REQUEST_INFO *req);
-void __cdecl Requester_Item_CenterAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-void __cdecl Requester_Item_LeftAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-void __cdecl Requester_Item_RightAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-int32_t __cdecl Requester_Display(REQUEST_INFO *req, int32_t des, int32_t backgrounds);
-void __cdecl Requester_SetHeading(REQUEST_INFO *req, char *text1, uint32_t flags1, char *text2, uint32_t flags2);
-void __cdecl Requester_RemoveAllItems(REQUEST_INFO *req);
-void __cdecl Requester_ChangeItem(REQUEST_INFO *req, int32_t item, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
-void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
-void __cdecl Requester_SetSize(REQUEST_INFO *req, int32_t maxlines, int32_t ypos);
-int32_t __cdecl AddAssaultTime(uint32_t time);
-void __cdecl ShowGymStatsText(char *time_str, int32_t type);
-void __cdecl ShowStatsText(char *time_str, int32_t type);
-void __cdecl ShowEndStatsText(void);
-void __cdecl Item_InitialiseArray(int32_t num_items);
-void __cdecl Item_Kill(int16_t item_num);
-int16_t __cdecl Item_Create(void);
-void __cdecl Item_Initialise(int16_t item_num);
-void __cdecl Item_RemoveActive(int16_t item_num);
-void __cdecl Item_RemoveDrawn(int16_t item_num);
-void __cdecl Item_AddActive(int16_t item_num);
-void __cdecl Item_NewRoom(int16_t item_num, int16_t room_num);
-int32_t __cdecl Item_GlobalReplace(GAME_OBJECT_ID src_object_id, GAME_OBJECT_ID dst_object_id);
-void __cdecl Effect_InitialiseArray(void);
-int16_t __cdecl Effect_Create(int16_t room_num);
-void __cdecl Effect_Kill(int16_t fx_num);
-void __cdecl Effect_NewRoom(int16_t fx_num, int16_t room_num);
-void __cdecl Item_ClearKilled(void);
-void __cdecl Lara_HandleAboveWater(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_LookUpDown(void);
-void __cdecl Lara_LookLeftRight(void);
-void __cdecl Lara_ResetLook(void);
-void __cdecl Lara_State_Walk(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Run(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Stop(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ForwardJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_FastBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_TurnRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_TurnLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Death(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_FastFall(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Hang(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Reach(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Splat(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Compress(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Back(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Null(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_FastTurn(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_StepRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_StepLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Slide(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_BackJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_RightJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_LeftJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_UpJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Fallback(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_HangLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_HangRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SlideBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_PushBlock(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_PPReady(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Pickup(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_PickupFlare(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SwitchOn(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_UseKey(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Special(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SwanDive(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_FastDive(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_WaterOut(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Wade(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Zipline(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_Breath(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_YetiKill(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_SharkKill(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_Airlock(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_GongBong(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_DinoKill(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_PullDagger(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_StartAnim(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_StartHouse(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_FinalAnim(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_Fallen(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_CollideStop(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Walk(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Run(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Stop(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_ForwardJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_FastBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_TurnRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_TurnLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Death(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_FastFall(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Hang(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Reach(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Splat(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Land(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Compress( ITEM *item, COLL_INFO *coll );
-void __cdecl Lara_Col_Back(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_StepRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_StepLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Slide(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_BackJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_RightJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_LeftJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_UpJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Fallback(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_HangLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_HangRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SlideBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Null(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Roll(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Roll2(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SwanDive(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_FastDive(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Wade(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Default(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Jumper(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_GetCollisionInfo(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_SlideSlope(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_HitCeiling(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_DeflectEdge(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_DeflectEdgeJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_SlideEdgeJump(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestWall(ITEM *item, int32_t front, int32_t right, int32_t down);
-int32_t __cdecl Lara_TestHangOnClimbWall(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestClimbStance(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_HangTest(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestEdgeCatch(ITEM *item, COLL_INFO *coll, int32_t *edge);
-int32_t __cdecl Lara_TestHangJumpUp(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestHangJump(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestHangSwingIn(ITEM *item, int16_t angle);
-int32_t __cdecl Lara_TestVault(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestSlide(ITEM *item, COLL_INFO *coll);
-int16_t __cdecl Lara_FloorFront(ITEM *item, int16_t ang, int32_t dist);
-int32_t __cdecl Lara_LandedBad(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_GetJointAbsPosition(XYZ_32 *vec, int32_t joint);
-void __cdecl Lara_GetJointAbsPosition_I(ITEM *item, XYZ_32 *vec, int16_t *frame1, int16_t *frame2, int32_t frac, int32_t rate);
-void __cdecl Gun_Rifle_DrawMeshes(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Rifle_UndrawMeshes(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Rifle_Ready(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Rifle_Control(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Rifle_FireShotgun(void);
-void __cdecl Gun_Rifle_FireM16(bool running);
-void __cdecl Gun_Rifle_FireHarpoon(void);
-void __cdecl HarpoonBolt_Control(int16_t item_num);
-void __cdecl Gun_Rifle_FireGrenade(void);
-void __cdecl Grenade_Control(int16_t item_num);
-void __cdecl Gun_Rifle_Draw(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Rifle_Undraw(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Rifle_Animate(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_SetArmInfo(LARA_ARM *arm, int32_t frame);
-void __cdecl Gun_Pistols_Draw(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_Undraw(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_Ready(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_DrawMeshes(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_UndrawMeshLeft(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_UndrawMeshRight(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_Control(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_Animate(LARA_GUN_TYPE weapon_type);
-void __cdecl Lara_State_ClimbLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbStance(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Climbing(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbEnd(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbDown(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_ClimbLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_ClimbRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_ClimbStance(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Climbing(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_ClimbDown(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_CheckForLetGo(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestClimb(int32_t x, int32_t y, int32_t z, int32_t xfront, int32_t zfront, int32_t item_height, int16_t item_room, int32_t *shift);
-int32_t __cdecl Lara_TestClimbPos(ITEM *item, int32_t front, int32_t right, int32_t origin, int32_t height, int32_t *shift);
-void __cdecl Lara_DoClimbLeftRight(ITEM *item, COLL_INFO *coll, int32_t result, int32_t shift);
-int32_t __cdecl Lara_TestClimbUpPos(ITEM *item, int32_t front, int32_t right, int32_t *shift, int32_t *ledge);
-void __cdecl Gun_Control(void);
-int32_t __cdecl Gun_CheckForHoldingState(int32_t state);
-void __cdecl Gun_InitialiseNewWeapon(void);
-void __cdecl Gun_TargetInfo(const WEAPON_INFO *winfo);
-void __cdecl Gun_GetNewTarget(WEAPON_INFO *winfo);
-void __cdecl Gun_FindTargetPoint(const ITEM *item, GAME_VECTOR *target);
-void __cdecl Gun_AimWeapon(WEAPON_INFO *winfo, LARA_ARM *arm);
-int32_t __cdecl Gun_FireWeapon(LARA_GUN_TYPE weapon_type, ITEM *target, const ITEM *src, const int16_t *angles);
-void __cdecl Gun_HitTarget(ITEM *item, GAME_VECTOR *hitpos, int32_t damage);
-void __cdecl Gun_SmashItem(int16_t item_num, LARA_GUN_TYPE weapon_type);
-GAME_OBJECT_ID Gun_GetWeaponAnim(const LARA_GUN_TYPE gun_type);
-int32_t __cdecl Flare_DoLight(XYZ_32 *pos, int32_t flare_age);
-void __cdecl Flare_DoInHand(int32_t flare_age);
-void __cdecl Flare_DrawInAir(const ITEM *item);
-void __cdecl Flare_Create(int32_t thrown);
-void __cdecl Flare_SetArm(int32_t frame);
-void __cdecl Flare_Draw(void);
-void __cdecl Flare_Undraw(void);
-void __cdecl Flare_DrawMeshes(void);
-void __cdecl Flare_UndrawMeshes(void);
-void __cdecl Flare_Ready(void);
-void __cdecl Flare_Control(int16_t item_num);
-void __cdecl Lara_Control(int16_t item_num);
-void __cdecl Lara_Animate(ITEM *item);
-void __cdecl Lara_UseItem(GAME_OBJECT_ID object_id);
-void __cdecl Lara_CheatGetStuff(void);
-void __cdecl Lara_ControlExtra(int16_t item_num);
-void __cdecl Lara_InitialiseLoad(int16_t item_num);
-void __cdecl Lara_Initialise(int32_t type);
-void __cdecl Lara_InitialiseInventory(int32_t level_num);
-void __cdecl Lara_InitialiseMeshes(int32_t level_num);
-void __cdecl Lara_HandleSurface(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SurfSwim(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SurfBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SurfLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SurfRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SurfTread(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfSwim(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfTread(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_SurfaceCollision(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestWaterStepOut(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestWaterClimbOut(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_HandleUnderwater(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_SwimTurn(ITEM *item);
-void __cdecl Lara_State_Swim(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Glide(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Tread(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Dive(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_UWDeath(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_UWTwist(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Swim(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_UWDeath(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_GetWaterDepth(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Lara_TestWaterDepth(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_SwimCollision(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_WaterCurrent(COLL_INFO *coll);
-void __cdecl LOT_InitialiseArray(void);
-void __cdecl LOT_DisableBaddieAI(int16_t item_num);
-bool __cdecl LOT_EnableBaddieAI(int16_t item_num, bool always);
-void __cdecl LOT_InitialiseSlot(int16_t item_num, int32_t slot);
-void __cdecl LOT_CreateZone(ITEM *item);
-void __cdecl LOT_ClearLOT(LOT_INFO *lot);
-void __cdecl Missile_Control(int16_t fx_num);
-void __cdecl Missile_ShootAtLara(FX *fx);
-int32_t __cdecl Effect_ExplodingDeath(int16_t item_num, int32_t mesh_bits, int16_t damage);
-void __cdecl BodyPart_Control(int16_t fx_num);
-void __cdecl MovableBlock_Initialise(int16_t item_num);
-void __cdecl MovableBlock_Control(int16_t item_num);
-void __cdecl MovableBlock_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl MovableBlock_TestDestination(ITEM *item, int32_t block_height);
-int32_t __cdecl MovableBlock_TestPush(ITEM *item, int32_t block_height, uint16_t quadrant);
-int32_t __cdecl MovableBlock_TestPull(ITEM *item, int32_t block_height, uint16_t quadrant);
-void __cdecl Room_AlterFloorHeight(ITEM *item, int32_t height);
-void __cdecl MovableBlock_Draw(const ITEM *item);
-void __cdecl Object_DrawUnclippedItem(const ITEM *item);
-void __cdecl Earthquake_Control(int16_t item_num);
-void __cdecl FinalCutscene_Control(int16_t item_num);
-void __cdecl InitialiseFinalLevel(void);
-void __cdecl FinalLevelCounter_Control(int16_t item_num);
-void __cdecl MiniCopter_Control(int16_t item_num);
-void __cdecl DyingMonk_Initialise(int16_t item_num);
-void __cdecl DyingMonk_Control(int16_t item_num);
-void __cdecl GongBonger_Control(int16_t item_num);
-void __cdecl Zipline_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Zipline_Control(int16_t item_num);
-void __cdecl BigBowl_Control(int16_t item_num);
-void __cdecl Bell_Control(int16_t item_num);
-void __cdecl Window_Initialise(int16_t item_num);
-void __cdecl Window_Smash(int16_t item_num);
-void __cdecl Window_1_Control(int16_t item_num);
-void __cdecl Window_2_Control(int16_t item_num);
-void __cdecl Door_Shut(DOORPOS_DATA *d);
-void __cdecl Door_Open(DOORPOS_DATA *d);
-void __cdecl Door_Initialise(int16_t item_num);
-void __cdecl Door_Control(int16_t item_num);
-int32_t __cdecl Drawbridge_IsItemOnTop(const ITEM *item, int32_t x, int32_t y);
-void __cdecl Drawbridge_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Drawbridge_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Drawbridge_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lift_Initialise(int16_t item_num);
-void __cdecl Lift_Control(int16_t item_num);
-void __cdecl Lift_FloorCeiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *floor, int32_t *ceiling);
-void __cdecl Lift_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Lift_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl BridgeFlat_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl BridgeFlat_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-int32_t __cdecl Bridge_GetOffset(const ITEM *item, int32_t x, int32_t z);
-void __cdecl BridgeTilt1_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl BridgeTilt1_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl BridgeTilt2_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl BridgeTilt2_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Copter_Control(int16_t item_num);
-void __cdecl General_Control(int16_t item_num);
-void __cdecl Detonator_Control(int16_t item_num);
-bool __cdecl Creature_CanTargetEnemy(const ITEM *item, const AI_INFO *info);
-void __cdecl Glow_Control(int16_t fx_num);
-void __cdecl GunFlash_Control(int16_t fx_num);
-int16_t __cdecl Effect_GunShot(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-int16_t __cdecl Effect_GunHit(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-int16_t __cdecl Effect_GunMiss(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-int32_t __cdecl Creature_ShootAtLara(ITEM *item, AI_INFO *info, BITE *gun, int16_t extra_rotation, int32_t damage);
-void __cdecl Cultist1_Initialise(int16_t item_num);
-void __cdecl Cultist1_Control(int16_t item_num);
-void __cdecl Cultist3_Initialise(int16_t item_num);
-void __cdecl Cultist3_Control(int16_t item_num);
-void __cdecl Worker1_Control(int16_t item_num);
-void __cdecl Worker2_Control(int16_t item_num);
-void __cdecl Bandit1_Control(int16_t item_num);
-void __cdecl Bandit2_Control(int16_t item_num);
-void __cdecl Winston_Control(int16_t item_num);
-void __cdecl Pickup_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Switch_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Switch_CollisionUW(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Detonator_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Keyhole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl PuzzleHole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Switch_Control(int16_t item_num);
-int32_t __cdecl Switch_Trigger(int16_t item_num, int16_t timer);
-int32_t __cdecl Keyhole_Trigger(int16_t item_num);
-int32_t __cdecl Pickup_Trigger(int16_t item_num);
-void __cdecl Secret2_Control(int16_t item_num);
-void __cdecl Mouse_Control(int16_t item_num);
-void __cdecl InitialiseStartInfo(void);
-void __cdecl ModifyStartInfo(int32_t level_num);
-void __cdecl CreateStartInfo(int32_t level_num);
-void __cdecl CreateSaveGameInfo(void);
-void __cdecl ExtractSaveGameInfo(void);
-void __cdecl ResetSG(void);
-void __cdecl WriteSG(const void *pointer, int32_t size);
-void __cdecl ReadSG(void *pointer, int32_t size);
-int32_t __cdecl Level_Initialise(int32_t level_num, int32_t level_type);
-void __cdecl InitialiseGameFlags(void);
-void __cdecl InitialiseLevelFlags(void);
-void __cdecl Object_SetupBaddyObjects(void);
-void __cdecl Object_SetupTrapObjects(void);
-void __cdecl Object_SetupGeneralObjects(void);
-void __cdecl Object_SetupAllObjects(void);
-void __cdecl GetCarriedItems(void);
-void __cdecl Jelly_Control(int16_t item_num);
-void __cdecl Barracuda_Control(int16_t item_num);
-void __cdecl Shark_Control(int16_t item_num);
-void __cdecl Skidoo_Initialise(int16_t item_num);
-int32_t __cdecl Skidoo_CheckGetOn(int16_t item_num, COLL_INFO *coll);
-void __cdecl Skidoo_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-void __cdecl Skidoo_BaddieCollision(const ITEM *skidoo);
-int32_t __cdecl Skidoo_TestHeight(const ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
-int32_t __cdecl DoShift(ITEM *skidoo, XYZ_32 *pos, XYZ_32 *old);
-int32_t __cdecl DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
-int32_t __cdecl GetCollisionAnim(ITEM *skidoo, XYZ_32 *moved);
-void __cdecl Skidoo_DoSnowEffect(ITEM *skidoo);
-int32_t __cdecl Skidoo_Dynamics(ITEM *skidoo);
-int32_t __cdecl Skidoo_UserControl(ITEM *skidoo, int32_t height, int32_t *pitch);
-int32_t __cdecl Skidoo_CheckGetOffOK(int32_t direction);
-void __cdecl Skidoo_Animation(ITEM *skidoo, int32_t collide, int32_t dead);
-void __cdecl Skidoo_Explode(const ITEM *skidoo);
-int32_t __cdecl Skidoo_CheckGetOff(void);
-void __cdecl Skidoo_Guns(void);
-int32_t __cdecl Skidoo_Control(void);
-void __cdecl Skidoo_Draw(const ITEM *item);
-void __cdecl SkidooDriver_Initialise(int16_t item_num);
-void __cdecl SkidooDriver_Control(int16_t rider_num);
-void __cdecl SkidooArmed_Push(const ITEM *item, ITEM *lara_item, int32_t radius);
-void __cdecl SkidooArmed_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl Music_GetRealTrack(int32_t track);
-void __cdecl Sound_Effect(int32_t sample_id, const XYZ_32 *pos, uint32_t flags);
-void __cdecl Sound_StopEffect(int32_t sample_id);
-void __cdecl Sound_EndScene(void);
-void __cdecl Sound_Shutdown(void);
-void __cdecl Sound_Init(void);
-int32_t __cdecl Collide_TestCollision(ITEM *item, const ITEM *lara_item);
-int32_t __cdecl Collide_GetSpheres(const ITEM *item, SPHERE *spheres, bool world_space);
-void __cdecl Collide_GetJointAbsPosition(const ITEM *item, XYZ_32 *out_vec, int32_t joint);
-void __cdecl TeethTrap_Bite(ITEM *item, const BITE *bite);
-void __cdecl Spider_Leap(int16_t item_num, int16_t angle);
-void __cdecl Spider_Control(int16_t item_num);
-void __cdecl BigSpider_Control(int16_t item_num);
-void __cdecl Text_Init(void);
-TEXTSTRING *__cdecl Text_Create(int32_t x, int32_t y, int32_t z, const char *text);
-void __cdecl Text_ChangeText(TEXTSTRING *string, const char *text);
-void __cdecl Text_SetScale(TEXTSTRING *string, int32_t scale_h, int32_t scale_v);
-void __cdecl Text_Flash(TEXTSTRING *string, int16_t enable, int16_t rate);
-void __cdecl Text_AddBackground(TEXTSTRING *string, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t color, uint16_t *gour_ptr, uint16_t flags);
-void __cdecl Text_RemoveBackground(TEXTSTRING *string);
-void __cdecl Text_AddOutline(TEXTSTRING *string, int16_t enable, int16_t color, uint16_t *gour_ptr, uint16_t flags);
-void __cdecl Text_RemoveOutline(TEXTSTRING *string);
-void __cdecl Text_CentreH(TEXTSTRING *string, int16_t enable);
-void __cdecl Text_CentreV(TEXTSTRING *string, int16_t enable);
-void __cdecl Text_AlignRight(TEXTSTRING *string, int16_t enable);
-void __cdecl Text_AlignBottom(TEXTSTRING *string, int16_t enable);
-int32_t __cdecl Text_GetWidth(TEXTSTRING *string);
-int32_t __cdecl Text_Remove(TEXTSTRING *string);
-int16_t __cdecl Text_GetTextLength(const char *text);
-void __cdecl Text_Draw(void);
-void __cdecl Text_DrawBorder(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height);
-void __cdecl Text_DrawText(const TEXTSTRING *string);
-uint32_t __cdecl Text_GetScaleH(uint32_t value);
-uint32_t __cdecl Text_GetScaleV(uint32_t value);
-void __cdecl Mine_Control(int16_t mine_num);
-void __cdecl SpikeWall_Control(int16_t item_num);
-void __cdecl SpikeCeiling_Control(int16_t item_num);
-void __cdecl Hook_Control(int16_t item_num);
-void __cdecl Propeller_Control(int16_t item_num);
-void __cdecl SpinningBlade_Control(int16_t item_num);
-void __cdecl Icicle_Control(int16_t item_num);
-void __cdecl Blade_Initialise(int16_t item_num);
-void __cdecl Blade_Control(int16_t item_num);
-void __cdecl KillerStatue_Initialise(int16_t item_num);
-void __cdecl KillerStatue_Control(int16_t item_num);
-void __cdecl Springboard_Control(int16_t item_num);
-void __cdecl RollingBall_Initialise(int16_t item_num);
-void __cdecl RollingBall_Control(int16_t item_num);
-void __cdecl RollingBall_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-void __cdecl Spikes_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-void __cdecl Trapdoor_Control(int16_t item_num);
-void __cdecl Trapdoor_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Trapdoor_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-int32_t __cdecl Trapdoor_IsItemOnTop(const ITEM *item, int32_t x, int32_t z);
-void __cdecl Pendulum_Control(int16_t item_num);
-void __cdecl FallingBlock_Control(int16_t item_num);
-void __cdecl FallingBlock_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl FallingBlock_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl TeethTrap_Control(int16_t item_num);
-void __cdecl FallingCeiling_Control(int16_t item_num);
-void __cdecl DartEmitter_Control(int16_t item_num);
-void __cdecl Dart_Control(int16_t item_num);
-void __cdecl DartEffect_Control(int16_t fx_num);
-void __cdecl FlameEmitter_Control(int16_t item_num);
-void __cdecl Flame_Control(int16_t fx_num);
-void __cdecl Lara_CatchFire(void);
-void __cdecl Lara_TouchLava(ITEM *item);
-void __cdecl EmberEmitter_Control(int16_t item_num);
-void __cdecl Ember_Control(int16_t fx_num);
-void __cdecl BirdGuardian_Control(int16_t item_num);
-void __cdecl Yeti_Control(int16_t item_num);
-void __cdecl BGND_Make640x480(uint8_t *bitmap, RGB_888 *palette);
-int32_t __cdecl BGND_AddTexture(int32_t tile_idx, BYTE *bitmap, int32_t pal_index, RGB_888 *bmp_pal);
-void __cdecl BGND_GetPageHandles(void);
-void __cdecl BGND_DrawInGameBlack(void);
-void __cdecl BGND_DrawQuad(float sx, float sy, float width, float height, D3DCOLOR color);
-void __cdecl BGND_DrawInGameBackground(void);
-void __cdecl BGND_DrawTextureTile(int32_t sx, int32_t sy, int32_t width, int32_t height, HWR_TEXTURE_HANDLE tex_source, int32_t tu, int32_t tv, int32_t t_width, int32_t t_height, D3DCOLOR color0, D3DCOLOR color1, D3DCOLOR color2, D3DCOLOR color3);
-D3DCOLOR __cdecl BGND_CenterLighting(int32_t x, int32_t y, int32_t width, int32_t height);
-void __cdecl BGND_Free(void);
-bool __cdecl BGND_Init(void);
-void __cdecl Enumerate3DDevices(DISPLAY_ADAPTER *adapter);
-bool __cdecl D3DCreate(void);
-HRESULT __stdcall Enum3DDevicesCallback(GUID *lpGuid, LPTSTR lpDeviceDescription, LPTSTR lpDeviceName, LPD3DDEVICEDESC lpD3DHWDeviceDesc, LPD3DDEVICEDESC lpD3DHELDeviceDesc, LPVOID lpContext);
-bool __cdecl D3DIsSupported(LPD3DDEVICEDESC desc);
-bool __cdecl D3DSetViewport(void);
-void __cdecl D3DDeviceCreate(LPDDS lpBackBuffer);
-void __cdecl Direct3DRelease(void);
-bool __cdecl Direct3DInit(void);
-sub_444990
-sub_4449A0
-sub_4449D0
-sub_444AA0
-sub_444AB0
-sub_444B20
-sub_444BB0
-sub_444BC0
-bool __cdecl DDrawCreate(LPGUID lpGUID);
-void __cdecl DDrawRelease(void);
-void __cdecl GameWindowCalculateSizeFromClient(int32_t *width, int32_t *height);
-void __cdecl GameWindowCalculateSizeFromClientByZero(int32_t *width, int32_t *height);
-void __cdecl WinVidSetMinWindowSize(int32_t width, int32_t height);
-void __cdecl WinVidClearMinWindowSize(void);
-void __cdecl WinVidSetMaxWindowSize(int32_t width, int32_t height);
-void __cdecl WinVidClearMaxWindowSize(void);
-int32_t __cdecl CalculateWindowWidth(int32_t width, int32_t height);
-int32_t __cdecl CalculateWindowHeight(int32_t width, int32_t height);
-bool __cdecl WinVidGetMinMaxInfo(LPMINMAXINFO info);
-HWND __cdecl WinVidFindGameWindow(void);
-bool __cdecl WinVidSpinMessageLoop(bool needWait);
-void __cdecl WinVidShowGameWindow(int32_t nCmdShow);
-void __cdecl WinVidHideGameWindow(void);
-void __cdecl WinVidSetGameWindowSize(int32_t width, int32_t height);
-bool __cdecl ShowDDrawGameWindow(bool active);
-bool __cdecl HideDDrawGameWindow(void);
-HRESULT __cdecl DDrawSurfaceCreate(LPDDSDESC dsp, LPDDS *surface);
-HRESULT __cdecl DDrawSurfaceRestoreLost(LPDDS surface1, LPDDS surface2, bool blank);
-bool __cdecl WinVidClearBuffer(LPDDS surface, LPRECT rect, DWORD fill_color);
-HRESULT __cdecl WinVidBufferLock(LPDDS surface, LPDDSDESC desc, DWORD flags);
-HRESULT __cdecl WinVidBufferUnlock(LPDDS surface, LPDDSDESC desc);
-bool __cdecl WinVidCopyBitmapToBuffer(LPDDS surface, const BYTE *bitmap);
-DWORD __cdecl GetRenderBitDepth(DWORD dwRGBBitCount);
-void __thiscall WinVidGetColorBitMasks(COLOR_BIT_MASKS *bm, LPDDPIXELFORMAT pixel_format);
-void __cdecl BitMaskGetNumberOfBits(uint32_t bit_mask, uint32_t *bit_depth, uint32_t *bit_offset);
-DWORD __cdecl CalculateCompatibleColor(COLOR_BIT_MASKS *mask, int32_t red, int32_t green, int32_t blue, int32_t alpha);
-bool __cdecl WinVidGetDisplayMode(DISPLAY_MODE *disp_mode);
-bool __cdecl WinVidGoFullScreen(DISPLAY_MODE *disp_mode);
-bool __cdecl WinVidGoWindowed(int32_t width, int32_t height, DISPLAY_MODE *dispMode);
-void __cdecl WinVidSetDisplayAdapter(DISPLAY_ADAPTER *disp_adapter);
-bool __thiscall CompareVideoModes(const DISPLAY_MODE *mode1, const DISPLAY_MODE *mode2);
-bool __cdecl WinVidGetDisplayModes(void);
-HRESULT __stdcall EnumDisplayModesCallback(LPDDSDESC lpDDSurfaceDesc, LPVOID lpContext);
-bool __cdecl WinVidInit(void);
-bool __cdecl WinVidGetDisplayAdapters(void);
-void __thiscall S_FlaggedString_Delete(STRING_FLAGGED *string);
-bool __cdecl EnumerateDisplayAdapters(DISPLAY_ADAPTER_LIST *displayAdapterList);
-BOOL __stdcall EnumDisplayAdaptersCallback(GUID *lpGUID, LPTSTR lpDriverDescription, LPTSTR lpDriverName, LPVOID lpContext);
-void __thiscall S_FlaggedString_InitAdapter(DISPLAY_ADAPTER *adapter);
-bool __cdecl WinVidRegisterGameWindowClass(void);
-LRESULT __stdcall WinVidGameWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
-void __cdecl WinVidResizeGameWindow(HWND hWnd, int32_t edge, LPRECT rect);
-bool __cdecl WinVidCheckGameWindowPalette(HWND hWnd);
-bool __cdecl WinVidCreateGameWindow(void);
-void __cdecl WinVidFreeWindow(void);
-void __cdecl WinVidExitMessage(void);
-DISPLAY_ADAPTER_NODE *__cdecl WinVidGetDisplayAdapter(GUID *lpGuid);
-void __cdecl WinVidStart(void);
-void __cdecl WinVidFinish(void);
-void __thiscall DisplayModeListInit(DISPLAY_MODE_LIST *pList);
-void __thiscall DisplayModeListDelete(DISPLAY_MODE_LIST *pList);
-DISPLAY_MODE *__thiscall InsertDisplayMode(DISPLAY_MODE_LIST *modeList, DISPLAY_MODE_NODE *before);
-DISPLAY_MODE *__thiscall InsertDisplayModeInListHead(DISPLAY_MODE_LIST *modeList);
-DISPLAY_MODE *__thiscall InsertDisplayModeInListTail(DISPLAY_MODE_LIST *modeList);
-sub_4470B0
-sub_4470C0
-sub_4470F0
-sub_447160
-sub_447170
-sub_4471C0
-bool __cdecl DInputCreate(void);
-void __cdecl DInputRelease(void);
-void __cdecl WinInReadKeyboard(LPVOID lpInputData);
-DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);
-sub_4473A0
-bool __cdecl WinInputInit(void);
-bool __cdecl DInputEnumDevices(JOYSTICK_LIST *joystickList);
-BOOL __stdcall DInputEnumDevicesCallback(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef);
-void __thiscall S_FlaggedString_Create(STRING_FLAGGED *string, int32_t size);
-JOYSTICK_NODE *__cdecl GetJoystick(GUID *lpGuid);
-void __cdecl DInputKeyboardCreate(void);
-void __cdecl DInputKeyboardRelease(void);
-bool __cdecl DInputJoystickCreate(void);
-void __cdecl WinInStart(void);
-void __cdecl WinInFinish(void);
-void __cdecl WinInRunControlPanel(HWND hWnd);
-void __cdecl IncreaseScreenSize(void);
-void __cdecl DecreaseScreenSize(void);
-void __cdecl setup_screen_size(void);
-void __cdecl TempVideoAdjust(int32_t hires, double sizer);
-void __cdecl TempVideoRemove(void);
-void __cdecl S_FadeInInventory(BOOL isFade);
-void __cdecl S_FadeOutInventory(BOOL isFade);
-sub_447A80
-sub_447A90
-sub_447AC0
-sub_447B30
-sub_447B40
-sub_447B90
-const SOUND_ADAPTER_NODE *__cdecl S_Audio_Sample_GetAdapter(GUID *guid);
-void __cdecl S_Audio_Sample_CloseAllTracks(void);
-bool __cdecl S_Audio_Sample_Load(int32_t sample_id, LPWAVEFORMATEX format, const void *data, int32_t data_size);
-bool __cdecl S_Audio_Sample_IsTrackPlaying(int32_t track_id);
-int32_t __cdecl S_Audio_Sample_Play(int32_t sample_id, int32_t volume, int32_t pitch, int32_t pan, int32_t flags);
-int32_t __cdecl S_Audio_Sample_GetFreeTrackIndex(void);
-void __cdecl S_Audio_Sample_AdjustTrackVolumeAndPan(int32_t track_id, int32_t volume, int32_t pan);
-void __cdecl S_Audio_Sample_AdjustTrackPitch(int32_t track_id, int32_t pitch);
-void __cdecl S_Audio_Sample_CloseTrack(int32_t track_id);
-sub_447FA0
-bool __cdecl S_Audio_Sample_Init(void);
-bool __cdecl S_Audio_Sample_DSoundEnumerate(SOUND_ADAPTER_LIST *adapter_list);
-BOOL __stdcall S_Audio_Sample_DSoundEnumCallback(LPGUID guid, LPCTSTR description, LPCTSTR module, LPVOID context);
-void __cdecl S_Audio_Sample_Init2(HWND hwnd);
-bool __cdecl S_Audio_Sample_DSoundCreate(GUID *guid);
-bool __cdecl S_Audio_Sample_DSoundBufferTest(void);
-void __cdecl S_Audio_Sample_Shutdown(void);
-bool __cdecl S_Audio_Sample_IsEnabled(void);
-sub_448410
-sub_448420
-void __cdecl CreateScreenBuffers(void);
-void __cdecl CreatePrimarySurface(void);
-void __cdecl CreateBackBuffer(void);
-void __cdecl CreateClipper(void);
-void __cdecl CreateWindowPalette(void);
-void __cdecl CreateZBuffer(void);
-DWORD __cdecl GetZBufferDepth(void);
-void __cdecl CreateRenderBuffer(void);
-void __cdecl CreatePictureBuffer(void);
-void __cdecl ClearBuffers(DWORD flags, DWORD fill_color);
-void __cdecl RestoreLostBuffers(void);
-void __cdecl UpdateFrame(bool need_run_message_loop, LPRECT rect);
-void __cdecl WaitPrimaryBufferFlip(void);
-bool __cdecl RenderInit(void);
-void __cdecl RenderStart(bool is_reset);
-void __cdecl RenderFinish(bool need_to_clear_textures);
-bool __cdecl ApplySettings(APP_SETTINGS *new_settings);
-void __cdecl FmvBackToGame(void);
-void __cdecl GameApplySettings(APP_SETTINGS *new_settings);
-void __cdecl UpdateGameResolution(void);
-LPCTSTR __cdecl DecodeErrorMessage(DWORD error_code);
-BOOL __cdecl ReadFileSync(HANDLE handle, LPVOID lpBuffer, DWORD nBytesToRead, LPDWORD lpnBytesRead, LPOVERLAPPED lpOverlapped);
-BOOL __cdecl Level_LoadTexturePages(HANDLE handle);
-BOOL __cdecl Level_LoadRooms(HANDLE handle);
-void __cdecl AdjustTextureUVs(bool reset_uv_add);
-BOOL __cdecl Level_LoadObjects(HANDLE handle);
-BOOL __cdecl Level_LoadSprites(HANDLE handle);
-BOOL __cdecl Level_LoadItems(HANDLE handle);
-BOOL __cdecl Level_LoadDepthQ(HANDLE handle);
-BOOL __cdecl Level_LoadPalettes(HANDLE handle);
-BOOL __cdecl Level_LoadCameras(HANDLE handle);
-BOOL __cdecl Level_LoadSoundEffects(HANDLE handle);
-BOOL __cdecl Level_LoadBoxes(HANDLE handle);
-BOOL __cdecl Level_LoadAnimatedTextures(HANDLE handle);
-BOOL __cdecl Level_LoadCinematic(HANDLE handle);
-BOOL __cdecl Level_LoadDemo(HANDLE handle);
-void __cdecl Level_LoadDemoExternal(LPCTSTR level_name);
-BOOL __cdecl Level_LoadSamples(HANDLE handle);
-void __cdecl ChangeFileNameExtension(char *file_name, const char *file_ext);
-LPCTSTR __cdecl GetFullPath(LPCTSTR file_name);
-BOOL __cdecl SelectDrive(void);
-bool __cdecl Level_Load(const char *file_name, int32_t level_num);
-BOOL __cdecl S_LoadLevelFile(LPCTSTR file_name, int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
-void __cdecl S_UnloadLevelFile(void);
-void __cdecl S_AdjustTexelCoordinates(void);
-BOOL __cdecl S_ReloadLevelGraphics(BOOL reload_palettes, BOOL reload_tex_pages);
-BOOL __cdecl GF_ReadStringTable(DWORD count, char **string_table, char **string_buf, LPDWORD buf_size, HANDLE handle);
-BOOL __cdecl GF_LoadFromFile(const char *file_name);
-bool __cdecl PlayFMV(const char *file_name);
-void __cdecl WinPlayFMV(const char *file_name, bool is_playback);
-void __cdecl WinStopFMV(bool is_playback);
-bool __cdecl IntroFMV(const char *file_name1, const char *file_name2);
-uint16_t __cdecl S_FindColor(int32_t red, int32_t green, int32_t blue);
-void __cdecl S_DrawScreenLine(int32_t x, int32_t y, int32_t z, int32_t x_len, int32_t y_len, BYTE color_idx, D3DCOLOR *gour, uint16_t flags);
-void __cdecl S_DrawScreenBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_OUTLINE *gour, uint16_t flags);
-void __cdecl S_DrawScreenFBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_FILL *gour, uint16_t flags);
-void __cdecl S_FinishInventory(void);
-void __cdecl S_FadeToBlack(void);
-void __cdecl S_Wait(int32_t timeout, BOOL input_check);
-bool __cdecl S_PlayFMV(const char *file_name);
-bool __cdecl S_IntroFMV(const char *file_name1, const char *file_name2);
-int16_t __cdecl Game_Start(int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
-int32_t __cdecl Game_Loop(bool demo_mode);
-int32_t __cdecl LevelCompleteSequence(void);
-int32_t __cdecl LevelStats(int32_t level_num);
-int32_t __cdecl GameStats(int32_t level_num);
-int32_t __cdecl Random_GetControl(void);
-void __cdecl Random_SeedControl(int32_t seed);
-int32_t __cdecl Random_GetDraw(void);
-void __cdecl Random_SeedDraw(int32_t seed);
-void __cdecl GetValidLevelsList(REQUEST_INFO *req);
-void __cdecl GetSavedGamesList(REQUEST_INFO *req);
-void __cdecl DisplayCredits(void);
-BOOL __cdecl S_FrontEndCheck(void);
-int32_t __cdecl S_SaveGame(const void *save_data, uint32_t save_size, int32_t slot_num);
-int32_t __cdecl S_LoadGame(void *save_data, uint32_t save_size, int32_t slot_num);
-void __cdecl HWR_InitState(void);
-void __cdecl HWR_ResetTexSource(void);
-void __cdecl HWR_ResetColorKey(void);
-void __cdecl HWR_ResetZBuffer(void);
-void __cdecl HWR_TexSource(HWR_TEXTURE_HANDLE tex_source);
-void __cdecl HWR_EnableColorKey(bool state);
-void __cdecl HWR_EnableZBuffer(bool z_write_enable, bool z_enable);
-void __cdecl HWR_BeginScene(void);
-void __cdecl HWR_DrawPolyList(void);
-void __cdecl HWR_LoadTexturePages(int32_t pages_count, void *pages_buf, RGB_888 *palette);
-void __cdecl HWR_FreeTexturePages(void);
-void __cdecl HWR_GetPageHandles(void);
-bool __cdecl HWR_VertexBufferFull(void);
-bool __cdecl HWR_Init(void);
-BOOL __cdecl S_InitialiseSystem(void);
-void __cdecl GameBuf_Shutdown(void);
-void __cdecl GameBuf_Reset(void);
-void *__cdecl GameBuf_Alloc(size_t alloc_size, GAME_BUFFER buf_index);
-void __cdecl GameBuf_Free(size_t free_size);
-void __cdecl Output_CalculateWibbleTable(void);
-void __cdecl Random_Seed(void);
-BOOL __cdecl S_Input_Key(KEYMAP keymap);
-bool __cdecl Input_Update(void);
-int32_t __cdecl RenderErrorBox(int32_t error_code);
-int32_t __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int32_t nShowCmd);
-sub_44E6F0
-int32_t __cdecl GameInit(bool skip_cd_init);
-void __cdecl Shell_Cleanup(void);
-int32_t __cdecl WinGameStart(void);
-void __cdecl Shell_Shutdown(void);
-sub_44E860
-sub_44E880
-void __cdecl Shell_ExitSystem(const char *message);
-void __cdecl ScreenshotPCX(void);
-DWORD __cdecl CompPCX(BYTE *bitmap, DWORD width, DWORD height, RGB_888 *palette, BYTE **pcx_data);
-DWORD __cdecl EncodeLinePCX(BYTE *src, DWORD width, BYTE *dst);
-DWORD __cdecl EncodePutPCX(BYTE value, BYTE num, BYTE *buffer);
-void __cdecl Screenshot(LPDDS screen);
-void __cdecl Option_DoInventory(INVENTORY_ITEM *item);
-void __cdecl Option_Passport(INVENTORY_ITEM *item);
-void __cdecl Option_Detail(INVENTORY_ITEM *item);
-void __cdecl Option_Sound(INVENTORY_ITEM *item);
-void __cdecl Option_Compass(INVENTORY_ITEM *item);
-void __cdecl Option_Controls_FlashConflicts(void);
-void __cdecl Option_Controls_DefaultConflict(void);
-void __cdecl Option_Controls(INVENTORY_ITEM *item);
-void __cdecl Option_Controls_ShowControls(void);
-void __cdecl Option_Controls_UpdateText(void);
-void __cdecl S_RemoveCtrlText(void);
-int32_t __cdecl GetRenderHeight(void);
-int32_t __cdecl GetRenderWidth(void);
-void __cdecl S_InitialisePolyList(BOOL clear_back_buffer);
-DWORD __cdecl S_DumpScreen(void);
-void __cdecl S_ClearScreen(void);
-void __cdecl S_InitialiseScreen(GAMEFLOW_LEVEL_TYPE level_type);
-void __cdecl S_OutputPolyList(void);
-int32_t __cdecl Output_GetObjectBounds(const BOUNDS_16 *bounds);
-void __cdecl S_InsertBackPolygon(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
-void __cdecl Output_InsertShadow(int16_t radius, const BOUNDS_16 *bounds, const ITEM *item);
-void __cdecl Output_CalculateLight(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Output_CalculateStaticLight(int16_t adder);
-void __cdecl Output_CalculateStaticMeshLight(int32_t x, int32_t y, int32_t z, int32_t shade_1, int32_t shade_2, ROOM *room);
-void __cdecl Output_LightRoom(ROOM *room);
-void __cdecl Output_DrawHealthBar(int32_t percent);
-void __cdecl Output_DrawAirBar(int32_t percent);
-void __cdecl Output_DoAnimateTextures(int32_t ticks);
-void __cdecl Output_SetupBelowWater(bool underwater);
-void __cdecl Output_SetupAboveWater(bool underwater);
-void __cdecl Output_AnimateTextures(int32_t ticks);
-void __cdecl S_DisplayPicture(const char *file_name, BOOL is_title);
-void __cdecl S_SyncPictureBufferPalette(void);
-void __cdecl S_DontDisplayPicture(void);
-void __cdecl ScreenDump(void);
-void __cdecl ScreenPartialDump(void);
-void __cdecl FadeToPal(int32_t fade_value, RGB_888 *palette);
-void __cdecl ScreenClear(bool is_phd_win_size);
-void __cdecl S_CopyScreenToBuffer(void);
-void __cdecl S_CopyBufferToScreen(void);
-BOOL __cdecl DecompPCX(const uint8_t *pcx, size_t pcx_size, LPBYTE pic, RGB_888 *pal);
-sub_4523A0
-sub_4523B0
-bool __cdecl OpenGameRegistryKey(LPCTSTR key);
-LONG __cdecl CloseGameRegistryKey(void);
-bool __cdecl SE_WriteAppSettings(APP_SETTINGS *settings);
-int32_t __cdecl SE_ReadAppSettings(APP_SETTINGS *settings);
-bool __cdecl SE_GraphicsTestStart(void);
-void __cdecl SE_GraphicsTestFinish(void);
-int32_t __cdecl SE_GraphicsTestExecute(void);
-int32_t __cdecl SE_GraphicsTest(void);
-bool __cdecl SE_SoundTestStart(void);
-void __cdecl SE_SoundTestFinish(void);
-int32_t __cdecl SE_SoundTestExecute(void);
-int32_t __cdecl SE_SoundTest(void);
-int32_t __stdcall SE_PropSheetCallback(HWND hwndDlg, UINT uMsg, LPARAM lParam);
-LRESULT __stdcall SE_NewPropSheetWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-bool __cdecl SE_ShowSetupDialog(HWND hParent, bool isDefault);
-INT_PTR __stdcall SE_GraphicsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl SE_GraphicsDlgFullScreenModesUpdate(HWND hwndDlg);
-void __cdecl SE_GraphicsAdapterSet(HWND hwndDlg, DISPLAY_ADAPTER_NODE *adapter);
-void __cdecl SE_GraphicsDlgUpdate(HWND hwndDlg);
-void __cdecl SE_GraphicsDlgInit(HWND hwndDlg);
-INT_PTR __stdcall SE_SoundDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl SE_SoundAdapterSet(HWND hwndDlg, SOUND_ADAPTER_NODE *adapter);
-void __cdecl SE_SoundDlgUpdate(HWND hwndDlg);
-void __cdecl SE_SoundDlgInit(HWND hwndDlg);
-INT_PTR __stdcall SE_ControlsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl SE_ControlsJoystickSet(HWND hwndDlg, JOYSTICK_NODE *joystick);
-void __cdecl SE_ControlsDlgUpdate(HWND hwndDlg);
-void __cdecl SE_ControlsDlgInit(HWND hwndDlg);
-INT_PTR __stdcall SE_OptionsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl SE_OptionsDlgUpdate(HWND hwndDlg);
-void __cdecl SE_OptionsStrCat(LPTSTR *dstString, bool isEnabled, bool *isNext, LPCTSTR srcString);
-INT_PTR __stdcall SE_AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl SE_AdvancedDlgUpdate(HWND hwndDlg);
-void __cdecl SE_AdvancedDlgInit(HWND hwndDlg);
-HWND __cdecl SE_FindSetupDialog(void);
-BOOL __cdecl Shell_Main(void);
-int16_t __cdecl TitleSequence(void);
-void __cdecl Lara_Cheat_CheckKeys(void);
-void __cdecl S_SaveSettings(void);
-void __cdecl S_LoadSettings(void);
-int32_t __cdecl S_Audio_Sample_OutPlay(int32_t sample_id, uint16_t volume, int32_t pitch, int32_t pan);
-int32_t __cdecl S_Audio_Sample_CalculateSampleVolume(int32_t volume);
-int32_t __cdecl S_Audio_Sample_CalculateSamplePan(int16_t pan);
-int32_t __cdecl S_Audio_Sample_OutPlayLooped(int32_t track_id, uint16_t volume, int32_t pitch, int32_t pan);
-void __cdecl S_Audio_Sample_OutSetPanAndVolume(int32_t track_id, int32_t pan, uint16_t volume);
-void __cdecl S_Audio_Sample_OutSetPitch(int32_t track_id, int32_t pitch);
-void __cdecl Sound_SetMasterVolume(int32_t volume);
-void __cdecl S_Audio_Sample_OutCloseTrack(int32_t track_id);
-void __cdecl S_Audio_Sample_OutCloseAllTracks(void);
-BOOL __cdecl S_Audio_Sample_OutIsTrackPlaying(int32_t track_id);
-bool __cdecl Music_Init(void);
-void __cdecl Music_Shutdown(void);
-void __cdecl Music_Legacy_Play(int16_t track_id, bool is_looped);
-void __cdecl Music_Stop(void);
-bool __cdecl Music_PlaySynced(int32_t track_id);
-int32_t __cdecl Music_GetFrames(void);
-void __cdecl Music_SetVolume(int32_t volume);
-void __cdecl CopyBitmapPalette(RGB_888 *src_pal, BYTE *src_bitmap, int32_t bitmap_size, RGB_888 *dest_pal);
-BYTE __cdecl FindNearestPaletteEntry(RGB_888 *palette, int32_t red, int32_t green, int32_t blue, bool ignore_sys_palette);
-void __cdecl SyncSurfacePalettes(void *src_data, int32_t width, int32_t height, int32_t src_pitch, RGB_888 *src_palette, void *dst_data, int32_t dst_pitch, RGB_888 *dst_palette, bool preserve_sys_palette);
-int32_t __cdecl CreateTexturePalette(const RGB_888 *pal);
-int32_t __cdecl GetFreePaletteIndex(void);
-void __cdecl FreePalette(int32_t palette_idx);
-void __cdecl SafeFreePalette(int32_t palette_idx);
-int32_t __cdecl CreateTexturePage(int32_t width, int32_t height, LPDIRECTDRAWPALETTE palette);
-int32_t __cdecl GetFreeTexturePageIndex(void);
-bool __cdecl CreateTexturePageSurface(TEXPAGE_DESC *desc);
-bool __cdecl TexturePageInit(TEXPAGE_DESC *page);
-LPDIRECT3DTEXTURE2 __cdecl Create3DTexture(LPDDS surface);
-void __cdecl SafeFreeTexturePage(int32_t page_idx);
-void __cdecl FreeTexturePage(int32_t page_idx);
-void __cdecl TexturePageReleaseVidMemSurface(TEXPAGE_DESC *page);
-void __cdecl FreeTexturePages(void);
-bool __cdecl LoadTexturePage(int32_t page_idx, bool reset);
-bool __cdecl ReloadTextures(bool reset);
-HWR_TEXTURE_HANDLE __cdecl GetTexturePageHandle(int32_t page_idx);
-int32_t __cdecl AddTexturePage8(int32_t width, int32_t height, const uint8_t *page_buf, int32_t pal_idx);
-int32_t __cdecl AddTexturePage16(int32_t width, int32_t height, const uint8_t *page_buf);
-HRESULT __stdcall EnumTextureFormatsCallback(LPDDSDESC lpDdsd, LPVOID lpContext);
-HRESULT __cdecl EnumerateTextureFormats(void);
-void __cdecl CleanupTextures(void);
-bool __cdecl InitTextures(void);
-void __cdecl UpdateTicks(void);
-bool __cdecl TIME_Init(void);
-DWORD __cdecl Sync(void);
-LPVOID __cdecl UT_LoadResource(LPCTSTR lpName, LPCTSTR lpType);
-void __cdecl UT_InitAccurateTimer(void);
-double __cdecl UT_Microseconds(void);
-BOOL __cdecl UT_CenterWindow(HWND hWnd);
-LPTSTR __cdecl UT_FindArg(LPCTSTR str);
-int32_t __cdecl UT_MessageBox(LPCTSTR lpText, HWND hWnd);
-int32_t __cdecl UT_ErrorBox(UINT uID, HWND hWnd);
-LPCTSTR __cdecl GuidBinaryToString(GUID *guid);
-bool __cdecl GuidStringToBinary(LPCTSTR lpString, GUID *guid);
-BOOL __cdecl OpenRegistryKey(LPCTSTR lpSubKey);
-bool __cdecl IsNewRegistryKeyCreated(void);
-LONG __cdecl CloseRegistryKey(void);
-LONG __cdecl SetRegistryDwordValue(LPCTSTR lpValueName, DWORD value);
-LONG __cdecl SetRegistryBoolValue(LPCTSTR lpValueName, bool value);
-LONG __cdecl SetRegistryFloatValue(LPCTSTR lpValueName, double value);
-LONG __cdecl SetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize);
-LONG __cdecl SetRegistryStringValue(LPCTSTR lpValueName, LPCTSTR value, int32_t length);
-LONG __cdecl DeleteRegistryValue(LPCTSTR lpValueName);
-bool __cdecl GetRegistryDwordValue(LPCTSTR lpValueName, DWORD *pValue, DWORD defaultValue);
-bool __cdecl GetRegistryBoolValue(LPCTSTR lpValueName, bool *pValue, bool defaultValue);
-bool __cdecl GetRegistryFloatValue(LPCTSTR lpValueName, double *value, double defaultValue);
-bool __cdecl GetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize, LPBYTE defaultValue);
-bool __cdecl GetRegistryStringValue(LPCTSTR lpValueName, LPTSTR value, DWORD maxSize, LPCTSTR defaultValue);
-bool __cdecl GetRegistryGuidValue(LPCTSTR lpValueName, GUID *value, GUID *defaultValue);
-void __thiscall SE_ReleaseBitmapResource(BITMAP_RESOURCE *bmpRsrc);
-void __thiscall SE_LoadBitmapResource(BITMAP_RESOURCE *bmpRsrc, LPCTSTR lpName);
-void __thiscall SE_DrawBitmap(BITMAP_RESOURCE *bmpRsrc, HDC hdc, int32_t x, int32_t y);
-void __thiscall SE_UpdateBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd, HWND hSender);
-void __thiscall SE_ChangeBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd);
-bool __cdecl SE_RegisterSetupWindowClass(void);
-LRESULT __stdcall SE_SetupWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl SE_PassMessageToImage(HWND hWnd, UINT uMsg, WPARAM wParam);
-void __cdecl UT_MemBlt(BYTE *dstBuf, DWORD dstX, DWORD dstY, DWORD width, DWORD height, DWORD dstPitch, BYTE *srcBuf, DWORD srcX, DWORD srcY, DWORD srcPitch);
-void __cdecl Matrix_Push(void);
-void __cdecl Matrix_PushUnit(void);
-void __fastcall Output_FlatA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
-void __fastcall Output_TransA(int32_t y0, int32_t y1, uint8_t depth_q); // actually, __watcall, which is esoteric and rarely supported
-void __fastcall Output_GourA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
-void __fastcall Output_GTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
-void __fastcall Output_WGTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
-int32_t __fastcall Math_Atan(int32_t x, int32_t y);
-int32_t __fastcall Math_Cos(int16_t angle);
-int32_t __fastcall Math_Sin(int16_t angle);
-int32_t __fastcall Math_SinImpl(int16_t angle);
-uint32_t __fastcall Math_Sqrt(uint32_t n);
-int __cdecl Player_PlayFrame(LPVOID, LPVOID, LPVOID, DWORD, LPCRECT, DWORD, DWORD, DWORD);
-int __cdecl Movie_GetTotalFrames(LPVOID);
-int __cdecl Movie_GetCurrentFrame(LPVOID);
-int __cdecl Player_StartTimer(LPVOID);
-int __cdecl Player_InitMoviePlayback(LPVOID, LPVOID, LPVOID);
-int __cdecl Movie_SetSyncAdjust(LPVOID, LPVOID, DWORD);
-int __cdecl Player_InitSound(LPVOID, DWORD, DWORD, BOOL, DWORD, DWORD, DWORD, DWORD, DWORD);
-int __cdecl Movie_GetSoundChannels(LPVOID);
-int __cdecl Movie_GetSoundRate(LPVOID);
-int __cdecl Movie_GetSoundPrecision(LPVOID);
-int __cdecl Player_GetDSErrorCode(void);
-int __cdecl Player_InitSoundSystem(HWND);
-int __cdecl Player_BlankScreen(DWORD, DWORD, DWORD, DWORD);
-int __cdecl Player_InitPlaybackMode(HWND, LPVOID, DWORD, DWORD);
-int __cdecl Player_InitVideo(LPVOID, LPVOID, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD);
-int __cdecl Movie_GetXSize(LPVOID);
-int __cdecl Movie_GetYSize(LPVOID);
-int __cdecl Movie_GetFormat(LPVOID);
-int __cdecl Player_InitMovie(LPVOID, DWORD, DWORD, LPCTSTR, DWORD);
-int __cdecl Player_PassInDirectDrawObject(LPDIRECTDRAW3);
-int __cdecl Player_ReturnPlaybackMode(BOOL);
-int __cdecl Player_ShutDownSoundSystem(void);
-int __cdecl Player_ShutDownMovie(LPVOID);
-int __cdecl Player_ShutDownVideo(LPVOID);
-int __cdecl Player_ShutDownSound(LPVOID);
-int __cdecl Player_StopTimer(LPVOID);
-
-
-
-Tomb2.exe progress according to the function sizes:
-99.67% · 0% · 0% · 0.33%
-
-
-
-
-
-void __cdecl Output_WGTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
-int32_t __cdecl Inv_Display(int32_t inventory_mode);
-void __cdecl Object_SetupBaddyObjects(void);
-void __cdecl Output_GTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
-void __cdecl Lara_Draw(const ITEM *item);
-void __cdecl GF_ModifyInventory(int32_t level, int32_t type);
-void __cdecl Object_SetupGeneralObjects(void);
-void __cdecl Lara_Draw_I(const ITEM *item, const FRAME_INFO *frame1, const FRAME_INFO *frame2, int32_t frac, int32_t rate);
-bool __cdecl Input_Update(void);
-const int16_t *__cdecl Output_InsertObjectGT4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Lara_Hair_Control(bool in_cutscene);
-int32_t __cdecl Creature_Animate(int16_t item_num, int16_t angle, int16_t tilt);
-const int16_t *__cdecl Output_InsertObjectGT3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-int32_t __cdecl Requester_Display(REQUEST_INFO *req, int32_t des, int32_t backgrounds);
-void __cdecl ExtractSaveGameInfo(void);
-void __cdecl Camera_SmartShift(GAME_VECTOR *target, void (*__cdecl shift)(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom));
-void __cdecl SE_GraphicsDlgUpdate(HWND hwndDlg);
-void __cdecl Output_InsertGT3_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2, SORT_TYPE sort_type);
-void __cdecl Option_Controls(INVENTORY_ITEM *item);
-BOOL __cdecl GF_LoadFromFile(const char *file_name);
-int32_t __cdecl Inv_AddItem(GAME_OBJECT_ID object_id);
-void __cdecl Room_Legacy_TestTriggers(int16_t *data, int32_t heavy);
-void __cdecl Collide_GetCollisionInfo(COLL_INFO *coll, int32_t xpos, int32_t ypos, int32_t zpos, int16_t room_num, int32_t obj_height);
-void __cdecl Lara_Control(int16_t item_num);
-void __cdecl Option_Passport(INVENTORY_ITEM *item);
-void __cdecl Output_InsertGT3_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2);
-void __cdecl Boat_Control(int16_t item_num);
-void __cdecl Object_SetupTrapObjects(void);
-void __cdecl Yeti_Control(int16_t item_num);
-void __cdecl Worker3_Control(int16_t item_num);
-void __cdecl XianSpearman_Control(int16_t item_num);
-BOOL __cdecl Level_LoadObjects(HANDLE handle);
-void __cdecl Cultist3_Control(int16_t item_num);
-void __cdecl CreateSaveGameInfo(void);
-void __cdecl Dragon_Control(int16_t back_num);
-int32_t __cdecl Output_XYGUVClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-void __cdecl Gun_Control(void);
-int32_t __cdecl Boat_Dynamics(int16_t boat_num);
-void __cdecl Output_InsertGT4_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture, SORT_TYPE sort_type);
-void __cdecl Option_Controls_ShowControls(void);
-void __cdecl Camera_Update(void);
-void __cdecl Output_InsertTrans8(const PHD_VBUF *vbuf, int16_t shade);
-void __cdecl Monk_Control(int16_t item_num);
-LRESULT __stdcall WinVidGameWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
-int32_t __cdecl Skidoo_Dynamics(ITEM *skidoo);
-void __cdecl Option_Sound(INVENTORY_ITEM *item);
-void __cdecl Sound_Effect(int32_t sample_id, const XYZ_32 *pos, uint32_t flags);
-void __cdecl Pickup_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl GF_InterpretSequence(int16_t *ptr, GAMEFLOW_LEVEL_TYPE type, int32_t seq_type);
-TARGET_TYPE __cdecl Box_CalculateTarget(XYZ_32 *target, ITEM *item, LOT_INFO *lot);
-void __cdecl Output_InsertGT4_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture);
-int32_t __cdecl Skidoo_Control(void);
-void __cdecl Creature_Mood(ITEM *item, AI_INFO *info, int32_t violent);
-const int16_t *__cdecl Output_InsertObjectG4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Worker2_Control(int16_t item_num);
-void __cdecl ShowEndStatsText(void);
-int32_t __cdecl Output_XYGClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-void __cdecl Inv_DrawInventoryItem(INVENTORY_ITEM *inv_item);
-void __cdecl Cultist2_Control(int16_t item_num);
-void __cdecl Bandit2_Control(int16_t item_num);
-void __cdecl Cultist1_Control(int16_t item_num);
-void __cdecl Grenade_Control(int16_t item_num);
-void __cdecl XianWarrior_Draw(const ITEM *item);
-void __cdecl SkidooDriver_Control(int16_t rider_num);
-void __cdecl Door_Initialise(int16_t item_num);
-int32_t __cdecl Collide_CollideStaticObjects(COLL_INFO *coll, int32_t x, int32_t y, int32_t z, int16_t room_num, int32_t height);
-void __cdecl Room_Clip(ROOM *r);
-void __cdecl Text_DrawText(const TEXTSTRING *string);
-const int16_t *__cdecl Output_InsertObjectG4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Worker1_Control(int16_t item_num);
-void __cdecl XianKnight_Control(int16_t item_num);
-HRESULT __stdcall EnumDisplayModesCallback(LPDDSDESC lpDDSurfaceDesc, LPVOID lpContext);
-void __cdecl RenderStart(bool is_reset);
-BOOL __cdecl Level_LoadRooms(HANDLE handle);
-const int16_t *__cdecl Output_InsertObjectG4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl ShowStatsText(char *time_str, int32_t type);
-void __cdecl Lara_GetJointAbsPosition(XYZ_32 *vec, int32_t joint);
-void __cdecl Diver_Control(int16_t item_num);
-void __cdecl Dog_Control(int16_t item_num);
-int32_t __cdecl Effect_ExplodingDeath(int16_t item_num, int32_t mesh_bits, int16_t damage);
-void __cdecl Room_SetBounds(const int16_t *objptr, int32_t room_num, ROOM *parent);
-void __cdecl Gun_Rifle_Animate(LARA_GUN_TYPE weapon_type);
-void __cdecl Object_DrawAnimatingItem(const ITEM *item);
-void __cdecl WinVidStart(void);
-void __cdecl Camera_Move(const GAME_VECTOR *target, int32_t speed);
-void __cdecl Lara_InitialiseInventory(int32_t level_num);
-void __cdecl Inv_RingNotActive(INVENTORY_ITEM *inv_item);
-int32_t __cdecl Gun_FireWeapon(LARA_GUN_TYPE weapon_type, ITEM *target, const ITEM *src, const int16_t *angles);
-int32_t __cdecl Game_Control(int32_t nframes, int32_t demo_mode);
-INT_PTR __stdcall SE_GraphicsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-int32_t __cdecl SE_ReadAppSettings(APP_SETTINGS *settings);
-void __cdecl Output_InsertSprite_Sorted(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
-void __cdecl RollingBall_Control(int16_t item_num);
-void __cdecl HarpoonBolt_Control(int16_t item_num);
-const int16_t *__cdecl Output_InsertObjectG3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __fastcall Output_WGTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
-void __cdecl Lara_HangTest(ITEM *item, COLL_INFO *coll);
-void __cdecl Item_Animate(ITEM *item);
-void __cdecl Gun_Pistols_Animate(LARA_GUN_TYPE weapon_type);
-void __cdecl Lara_Cheat_CheckKeys(void);
-const int16_t *__cdecl Output_InsertObjectG3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Lara_GetJointAbsPosition_I(ITEM *item, XYZ_32 *vec, int16_t *frame1, int16_t *frame2, int32_t frac, int32_t rate);
-void __cdecl Bandit1_Control(int16_t item_num);
-void __cdecl Lara_Push(ITEM *item, ITEM *lara_item, COLL_INFO *coll, int32_t spaz_on, int32_t big_push);
-int32_t __cdecl LOS_CheckSmashable(const GAME_VECTOR *start, GAME_VECTOR *target);
-void __fastcall Output_GTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
-void __cdecl Output_CalculateLight(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Dragon_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl LOS_CheckX(const GAME_VECTOR *start, GAME_VECTOR *target);
-int32_t __cdecl LOS_CheckZ(const GAME_VECTOR *start, GAME_VECTOR *target);
-int32_t __cdecl Lara_TestVault(ITEM *item, COLL_INFO *coll);
-void __cdecl WinPlayFMV(const char *file_name, bool is_playback);
-bool __cdecl SE_ShowSetupDialog(HWND hParent, bool isDefault);
-void __cdecl Option_Detail(INVENTORY_ITEM *item);
-int32_t __cdecl Collide_GetSpheres(const ITEM *item, SPHERE *spheres, bool world_space);
-void __cdecl Skidoo_Draw(const ITEM *item);
-const int16_t *__cdecl Output_InsertObjectG3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-int32_t __cdecl Output_XYClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-void __cdecl Missile_Control(int16_t fx_num);
-BOOL __cdecl Shell_Main(void);
-void __cdecl Lara_Animate(ITEM *item);
-void __cdecl BirdGuardian_Control(int16_t item_num);
-void __cdecl Output_DrawSprite(uint32_t flags, int32_t x, int32_t y, int32_t z, int16_t sprite_idx, int16_t shade, int16_t scale);
-void __cdecl Lara_Initialise(int32_t type);
-void __cdecl Skidoo_Animation(ITEM *skidoo, int32_t collide, int32_t dead);
-void __cdecl Room_DrawAllRooms(int16_t current_room);
-void __cdecl PuzzleHole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Zipline_Control(int16_t item_num);
-void __cdecl TRex_Control(int16_t item_num);
-int32_t __cdecl Output_XGenXGUVPerspFP(const int16_t *obj_ptr);
-void __cdecl Tiger_Control(int16_t item_num);
-const int16_t *__cdecl Output_CalcRoomVertices(const int16_t *obj_ptr, int32_t far_clip);
-void __cdecl Shark_Control(int16_t item_num);
-int32_t __cdecl DoShift(ITEM *skidoo, XYZ_32 *pos, XYZ_32 *old);
-int32_t __cdecl Output_GetObjectBounds(const BOUNDS_16 *bounds);
-void __cdecl Flare_Control(int16_t item_num);
-void __cdecl Output_Init(int16_t x, int16_t y, int32_t width, int32_t height, int32_t near_z, int32_t far_z, int16_t view_angle, int32_t screen_width, int32_t screen_height);
-int32_t __cdecl Room_GetHeight(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-BOOL __cdecl Level_LoadSamples(HANDLE handle);
-int32_t __cdecl Lara_TestClimb(int32_t x, int32_t y, int32_t z, int32_t xfront, int32_t zfront, int32_t item_height, int16_t item_room, int32_t *shift);
-bool __cdecl SE_WriteAppSettings(APP_SETTINGS *settings);
-void __cdecl S_CopyBufferToScreen(void);
-void __cdecl BGND_DrawTextureTile(int32_t sx, int32_t sy, int32_t width, int32_t height, HWR_TEXTURE_HANDLE tex_source, int32_t tu, int32_t tv, int32_t t_width, int32_t t_height, D3DCOLOR color0, D3DCOLOR color1, D3DCOLOR color2, D3DCOLOR color3);
-void __cdecl RollingBall_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-bool __cdecl Level_Load(const char *file_name, int32_t level_num);
-void __cdecl Camera_LoadCutsceneFrame(void);
-void __cdecl Creature_AIInfo(ITEM *item, AI_INFO *info);
-int32_t __cdecl Room_GetCeiling(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-void __cdecl Detonator_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl GameApplySettings(APP_SETTINGS *new_settings);
-LRESULT __stdcall SE_SetupWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl MovableBlock_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestClimbUpPos(ITEM *item, int32_t front, int32_t right, int32_t *shift, int32_t *ledge);
-void __cdecl SE_OptionsDlgUpdate(HWND hwndDlg);
-int32_t __cdecl Skidoo_CheckGetOff(void);
-void __cdecl DisplayCredits(void);
-void __cdecl Gun_Pistols_Undraw(LARA_GUN_TYPE weapon_type);
-int32_t __cdecl MovableBlock_TestPull(ITEM *item, int32_t block_height, uint16_t quadrant);
-void __cdecl Output_DrawScaledSpriteC(const int16_t *obj_ptr);
-void __cdecl Lara_HandleUnderwater(ITEM *item, COLL_INFO *coll);
-void __cdecl Keyhole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Flare_Undraw(void);
-BOOL __cdecl Level_LoadBoxes(HANDLE handle);
-void __cdecl BGND_DrawInGameBackground(void);
-void __cdecl Gun_GetNewTarget(WEAPON_INFO *winfo);
-int32_t __cdecl Lara_TestWaterClimbOut(ITEM *item, COLL_INFO *coll);
-void __cdecl Barracuda_Control(int16_t item_num);
-int32_t __cdecl Output_XGenXGUV(const int16_t *obj_ptr);
-void __cdecl Room_DrawSingleRoomObjects(int16_t room_num);
-void __cdecl FinalLevelCounter_Control(int16_t item_num);
-void __cdecl Lara_Col_ClimbStance(ITEM *item, COLL_INFO *coll);
-void __cdecl Switch_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Spider_Control(int16_t item_num);
-void __cdecl Output_LightRoom(ROOM *room);
-bool __cdecl ApplySettings(APP_SETTINGS *new_settings);
-void __cdecl CreateStartInfo(int32_t level_num);
-void __cdecl Bird_Control(int16_t item_num);
-void __cdecl BodyPart_Control(int16_t fx_num);
-void __cdecl Skidoo_BaddieCollision(const ITEM *skidoo);
-void __cdecl Output_DrawAirBar(int32_t percent);
-void __cdecl Screenshot(LPDDS screen);
-void __cdecl Mine_Control(int16_t mine_num);
-int32_t __cdecl Box_SearchLOT(LOT_INFO *lot, int32_t expansion);
-void __cdecl Output_InsertShadow(int16_t radius, const BOUNDS_16 *bounds, const ITEM *item);
-void __cdecl Lara_WaterCurrent(COLL_INFO *coll);
-int32_t __cdecl GF_LoadScriptFile(const char *fname);
-void __cdecl Matrix_RotYXZpack(uint32_t rpack);
-void __cdecl Camera_Look(const ITEM *item);
-void __cdecl Eel_Control(int16_t item_num);
-void __cdecl Matrix_RotYXZ(int16_t ry, int16_t rx, int16_t rz);
-void __cdecl Mouse_Control(int16_t item_num);
-void __cdecl SE_GraphicsDlgFullScreenModesUpdate(HWND hwndDlg);
-void __cdecl Creature_GetBaddieTarget(int16_t item_num, int32_t goody);
-void __cdecl Flare_Create(int32_t thrown);
-void __cdecl ShowGymStatsText(char *time_str, int32_t type);
-BOOL __cdecl Level_LoadItems(HANDLE handle);
-int32_t __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int32_t nShowCmd);
-const int16_t *__cdecl Output_CalcObjectVertices(const int16_t *obj_ptr);
-void __cdecl Matrix_GenerateW2V(PHD_3DPOS *viewpos);
-void __cdecl Output_DrawHealthBar(int32_t percent);
-void __cdecl Output_InsertFlatRect_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl FadeToPal(int32_t fade_value, RGB_888 *palette);
-void __cdecl Room_GetBounds(void);
-int32_t __cdecl Creature_ShootAtLara(ITEM *item, AI_INFO *info, BITE *gun, int16_t extra_rotation, int32_t damage);
-int32_t __cdecl LevelStats(int32_t level_num);
-void __cdecl Boat_DoShift(int32_t boat_num);
-void __cdecl WinVidResizeGameWindow(HWND hWnd, int32_t edge, LPRECT rect);
-BOOL __stdcall EnumDisplayAdaptersCallback(GUID *lpGUID, LPTSTR lpDriverDescription, LPTSTR lpDriverName, LPVOID lpContext);
-void __cdecl BGND_Make640x480(uint8_t *bitmap, RGB_888 *palette);
-void __cdecl D3DDeviceCreate(LPDDS lpBackBuffer);
-int32_t __cdecl Skidoo_UserControl(ITEM *skidoo, int32_t height, int32_t *pitch);
-void __cdecl Item_Initialise(int16_t item_num);
-int32_t __cdecl Demo_Start(int32_t level_num);
-bool __cdecl LOT_EnableBaddieAI(int16_t item_num, bool always);
-void __cdecl Output_InsertClippedPoly_Textured(int32_t vtx_count, float z, int16_t poly_type, int16_t tex_page);
-void __cdecl Matrix_Interpolate(void);
-void __cdecl BigSpider_Control(int16_t item_num);
-void __cdecl ClearBuffers(DWORD flags, DWORD fill_color);
-void __cdecl Output_DrawPolyLine(const int16_t *obj_ptr);
-int32_t __cdecl Camera_ShiftClamp(GAME_VECTOR *pos, int32_t clamp);
-int32_t __cdecl Lara_TestHangJump(ITEM *item, COLL_INFO *coll);
-void __cdecl BigEel_Control(int16_t item_num);
-void __cdecl Lara_Col_ClimbDown(ITEM *item, COLL_INFO *coll);
-void __cdecl Collide_GetJointAbsPosition(const ITEM *item, XYZ_32 *out_vec, int32_t joint);
-SECTOR *__cdecl Room_GetSector(int32_t x, int32_t y, int32_t z, int16_t *room_num);
-int32_t __cdecl AddTexturePage16(int32_t width, int32_t height, const uint8_t *page_buf);
-void __cdecl Output_InsertTrans8_Sorted(const PHD_VBUF *vbuf, int16_t shade);
-void __cdecl Lara_BaddieCollision(ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lara_HandleAboveWater(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_TargetInfo(const WEAPON_INFO *winfo);
-void __cdecl Bartoli_Control(int16_t item_num);
-int32_t __cdecl Lara_GetWaterDepth(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Lara_Col_Walk(ITEM *item, COLL_INFO *coll);
-void __cdecl Propeller_Control(int16_t item_num);
-void __cdecl Camera_Combat(const ITEM *item);
-void __cdecl Gun_Pistols_Control(LARA_GUN_TYPE weapon_type);
-void __cdecl Text_DrawBorder(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height);
-BOOL __cdecl Level_LoadTexturePages(HANDLE handle);
-BOOL __cdecl Level_LoadDepthQ(HANDLE handle);
-int32_t __cdecl Boat_UserControl(ITEM *boat);
-int32_t __cdecl Lara_MovePosition(XYZ_32 *vec, ITEM *item, ITEM *lara_item);
-void __cdecl Gun_Rifle_FireHarpoon(void);
-void __cdecl Output_InsertFlatRect_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Twinkle_Control(int16_t fx_num);
-void __cdecl S_Audio_Sample_Init2(HWND hwnd);
-void __cdecl SE_GraphicsDlgInit(HWND hwndDlg);
-void __cdecl SpinningBlade_Control(int16_t item_num);
-void __cdecl Lift_FloorCeiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *floor, int32_t *ceiling);
-void __cdecl Lara_Col_Run(ITEM *item, COLL_INFO *coll);
-void __cdecl Output_InsertPoly_Gouraud(int32_t vtx_count, float z, int32_t red, int32_t green, int32_t blue, int16_t poly_type);
-void __cdecl Boat_DoWakeEffect(ITEM *boat);
-bool __cdecl TexturePageInit(TEXPAGE_DESC *page);
-void __cdecl Winston_Control(int16_t item_num);
-int32_t __cdecl Boat_CheckGetOn(int16_t item_num, COLL_INFO *coll);
-void __cdecl Creature_Kill(ITEM *item, int32_t kill_anim, int32_t kill_state, int32_t lara_kill_state);
-int32_t __cdecl Game_Cutscene_Control(int32_t nframes);
-int32_t __cdecl Misc_Move3DPosTo3DPos(PHD_3DPOS *src_pos, const PHD_3DPOS *dest_pos, int32_t velocity, int16_t ang_add);
-const int16_t *__cdecl Output_CalcVerticeLight(const int16_t *obj_ptr);
-int32_t __cdecl Lara_TestHangJumpUp(ITEM *item, COLL_INFO *coll);
-void __cdecl HWR_DrawPolyList(void);
-void __cdecl Boat_Animation(ITEM *boat, int32_t collide);
-void __cdecl Flare_Draw(void);
-int32_t __cdecl Room_GetWaterHeight(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Inv_RingIsOpen(RING_INFO *ring);
-void __cdecl Gun_Rifle_Draw(LARA_GUN_TYPE weapon_type);
-BOOL __cdecl S_FrontEndCheck(void);
-void __cdecl Flame_Control(int16_t fx_num);
-void __cdecl Lara_Col_Wade(ITEM *item, COLL_INFO *coll);
-void __fastcall Output_GourA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
-int32_t __cdecl Level_Initialise(int32_t level_num, int32_t level_type);
-void __cdecl Boat_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lara_SwimCollision(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_HandleSurface(ITEM *item, COLL_INFO *coll);
-void __cdecl Inv_Construct(void);
-void __cdecl Spikes_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-void __cdecl Dart_Control(int16_t item_num);
-void __cdecl Camera_Shift(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
-const int16_t *__cdecl Output_InsertRoomSprite(const int16_t *obj_ptr, int32_t vtx_count);
-void __cdecl Lara_Col_Climbing(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_DrawFlash(LARA_GUN_TYPE weapon_type, int32_t clip);
-INT_PTR __stdcall SE_SoundDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl Lara_State_Stop(ITEM *item, COLL_INFO *coll);
-void __cdecl MovableBlock_Control(int16_t item_num);
-void __cdecl Effect_Draw(int16_t fx_num);
-int32_t __cdecl Output_XGenXG(const int16_t *obj_ptr);
-void __cdecl Overlay_DrawAssaultTimer(void);
-int16_t __cdecl Game_Start(int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
-void __cdecl Lara_State_Run(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Output_ZedClipper(int32_t vtx_count, POINT_INFO *pts, VERTEX_INFO *vtx);
-void __cdecl Output_DrawClippedPoly_Textured(int32_t vtx_count);
-void __cdecl Skidoo_DoSnowEffect(ITEM *skidoo);
-void __cdecl Lara_UseItem(GAME_OBJECT_ID object_id);
-void __cdecl Inv_Ring_DoMotions(RING_INFO *ring);
-void __cdecl DartEmitter_Control(int16_t item_num);
-void __cdecl Output_InsertTransQuad_Sorted(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
-void __cdecl Waterfall_Control(int16_t item_num);
-void __cdecl RestoreLostBuffers(void);
-void __cdecl Item_AlignPosition(XYZ_32 *vec, ITEM *src_item, ITEM *dst_item);
-void __cdecl CreateScreenBuffers(void);
-void __fastcall Output_TransA(int32_t y0, int32_t y1, uint8_t depth_q); // actually, __watcall, which is esoteric and rarely supported
-void __cdecl Camera_UpdateCutscene(void);
-void __cdecl SpikeWall_Control(int16_t item_num);
-int32_t __cdecl Item_TestPosition(int16_t *bounds, ITEM *src_item, ITEM *dst_item);
-int32_t __cdecl MovableBlock_TestPush(ITEM *item, int32_t block_height, uint16_t quadrant);
-void __cdecl CopyBitmapPalette(RGB_888 *src_pal, BYTE *src_bitmap, int32_t bitmap_size, RGB_888 *dest_pal);
-void __cdecl Lara_DeflectEdgeJump(ITEM *item, COLL_INFO *coll);
-BOOL __cdecl Level_LoadSprites(HANDLE handle);
-void __cdecl Output_InsertSkybox(const int16_t *obj_ptr);
-void __cdecl Output_InsertLine_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Overlay_DrawAmmoInfo(void);
-void __cdecl Inv_DoInventoryBackground(void);
-int32_t __cdecl Creature_Vault(int16_t item_num, int16_t angle, int32_t vault, int32_t shift);
-int32_t __cdecl Lara_TestSlide(ITEM *item, COLL_INFO *coll);
-void __cdecl SphereOfDoom_Draw(const ITEM *item);
-void __cdecl Output_InsertLine_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Inv_InsertItem(INVENTORY_ITEM *inv_item);
-void __cdecl SphereOfDoom_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl Collide_TestCollision(ITEM *item, const ITEM *lara_item);
-void __cdecl HWR_InitState(void);
-void __cdecl Lara_Col_Hang(ITEM *item, COLL_INFO *coll);
-void __cdecl Output_CalculateStaticMeshLight(int32_t x, int32_t y, int32_t z, int32_t shade_1, int32_t shade_2, ROOM *room);
-BOOL __cdecl S_Input_Key(KEYMAP keymap);
-void __cdecl Item_Kill(int16_t item_num);
-void __cdecl Gun_InitialiseNewWeapon(void);
-void __cdecl Lara_Col_UpJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Skidoo_Guns(void);
-void __cdecl SE_SoundDlgUpdate(HWND hwndDlg);
-HRESULT __stdcall EnumTextureFormatsCallback(LPDDSDESC lpDdsd, LPVOID lpContext);
-void __cdecl SkidooArmed_Push(const ITEM *item, ITEM *lara_item, int32_t radius);
-void __cdecl Jelly_Control(int16_t item_num);
-void __cdecl S_DrawScreenBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_OUTLINE *gour, uint16_t flags);
-void __cdecl SpikeCeiling_Control(int16_t item_num);
-void __cdecl Bartoli_Initialise(int16_t item_num);
-int32_t __cdecl S_SaveGame(const void *save_data, uint32_t save_size, int32_t slot_num);
-int32_t __cdecl GameStats(int32_t level_num);
-int32_t __cdecl Game_Cutscene_Start(int32_t level_num);
-int32_t __cdecl Inv_RemoveItem(GAME_OBJECT_ID object_id);
-int16_t __cdecl TitleSequence(void);
-void __cdecl Inv_Ring_Init(RING_INFO *ring, int16_t type, INVENTORY_ITEM **list, int16_t qty, int16_t current, IMOTION_INFO *imo);
-void __cdecl ScreenshotPCX(void);
-bool __cdecl S_Audio_Sample_Load(int32_t sample_id, LPWAVEFORMATEX format, const void *data, int32_t data_size);
-void __cdecl Lara_State_Compress(ITEM *item, COLL_INFO *coll);
-void __cdecl Copter_Control(int16_t item_num);
-void __cdecl Ember_Control(int16_t fx_num);
-bool __cdecl WinVidGoWindowed(int32_t width, int32_t height, DISPLAY_MODE *dispMode);
-void __cdecl Inv_InitColors(void);
-void __cdecl Pendulum_Control(int16_t item_num);
-void __cdecl KillerStatue_Control(int16_t item_num);
-int32_t __cdecl Text_GetWidth(TEXTSTRING *string);
-int32_t __cdecl Diver_GetWaterSurface(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl LOT_InitialiseSlot(int16_t item_num, int32_t slot);
-int32_t __cdecl Skidoo_CheckGetOffOK(int32_t direction);
-INT_PTR __stdcall SE_ControlsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-TEXTSTRING *__cdecl Text_Create(int32_t x, int32_t y, int32_t z, const char *text);
-void __cdecl FallingBlock_Control(int16_t item_num);
-void __cdecl FmvBackToGame(void);
-void __cdecl S_DisplayPicture(const char *file_name, BOOL is_title);
-void __cdecl Gun_Rifle_Undraw(LARA_GUN_TYPE weapon_type);
-bool __cdecl WinVidGetMinMaxInfo(LPMINMAXINFO info);
-void __cdecl Icicle_Control(int16_t item_num);
-void __cdecl Overlay_DrawPickups(bool pickup_state);
-void __cdecl Matrix_InterpolateArm(void);
-void __cdecl Switch_CollisionUW(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lara_Col_Back(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_InitialiseMeshes(int32_t level_num);
-BOOL __cdecl DecompPCX(const uint8_t *pcx, size_t pcx_size, LPBYTE pic, RGB_888 *pal);
-int32_t __cdecl Boat_TestWaterHeight(ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
-int32_t __cdecl Creature_CheckBaddieOverlap(int16_t item_num);
-void __cdecl Flare_DrawInAir(const ITEM *item);
-void __cdecl Skidoo_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-void __cdecl Output_DrawPoly_Gouraud(int32_t vtx_count, int32_t red, int32_t green, int32_t blue);
-int32_t __cdecl Lara_TestHangOnClimbWall(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_Rifle_Control(LARA_GUN_TYPE weapon_type);
-int32_t __cdecl AddTexturePage8(int32_t width, int32_t height, const uint8_t *page_buf, int32_t pal_idx);
-void __cdecl Output_InsertPolygons(const int16_t *obj_ptr, int32_t clip);
-void __cdecl Bubble_Control(int16_t fx_num);
-void __cdecl Lara_SurfaceCollision(ITEM *item, COLL_INFO *coll);
-DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);
-int32_t __cdecl Box_StalkBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
-void __cdecl Gun_Rifle_FireShotgun(void);
-void __cdecl SphereOfDoom_Control(int16_t item_num);
-void __cdecl Gun_Rifle_FireGrenade(void);
-void __cdecl Lara_DoClimbLeftRight(ITEM *item, COLL_INFO *coll, int32_t result, int32_t shift);
-void __cdecl Camera_Chase(const ITEM *item);
-void __cdecl Lara_State_SurfTread(ITEM *item, COLL_INFO *coll);
-void __cdecl Output_InsertRoom(const int16_t *obj_ptr, int32_t is_outside);
-void __cdecl Output_CalculateObjectLighting(const ITEM *item, const BOUNDS_16 *bounds);
-BOOL __stdcall DInputEnumDevicesCallback(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef);
-void __cdecl Output_CalculateWibbleTable(void);
-void __cdecl Camera_Legacy_RefreshFromTrigger(int16_t type, const int16_t *data);
-int32_t __cdecl Lara_TestWaterStepOut(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl S_Audio_Sample_Play(int32_t sample_id, int32_t volume, int32_t pitch, int32_t pan, int32_t flags);
-void __cdecl Lara_TouchLava(ITEM *item);
-void __cdecl RenderFinish(bool need_to_clear_textures);
-bool __cdecl DInputJoystickCreate(void);
-void __cdecl S_InitialisePolyList(BOOL clear_back_buffer);
-void __cdecl Effect_Kill(int16_t fx_num);
-void __cdecl BigBowl_Control(int16_t item_num);
-void __cdecl Lara_SlideSlope(ITEM *item, COLL_INFO *coll);
-bool __cdecl WinVidSpinMessageLoop(bool needWait);
-BOOL __stdcall S_Audio_Sample_DSoundEnumCallback(LPGUID guid, LPCTSTR description, LPCTSTR module, LPVOID context);
-int32_t __cdecl Lara_TestWall(ITEM *item, int32_t front, int32_t right, int32_t down);
-int32_t __cdecl Skidoo_CheckGetOn(int16_t item_num, COLL_INFO *coll);
-void __cdecl FallingCeiling_Control(int16_t item_num);
-BOOL __cdecl SelectDrive(void);
-void __cdecl HotLiquid_Control(int16_t fx_num);
-void __cdecl CutscenePlayer_Control(int16_t item_num);
-void __cdecl Window_2_Control(int16_t item_num);
-void __cdecl BGND_DrawQuad(float sx, float sy, float width, float height, D3DCOLOR color);
-INT_PTR __stdcall SE_AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl Earthquake_Control(int16_t item_num);
-void __cdecl ModifyStartInfo(int32_t level_num);
-void __cdecl Springboard_Control(int16_t item_num);
-void __cdecl S_LoadSettings(void);
-int32_t __cdecl LOS_ClipTarget(const GAME_VECTOR *start, GAME_VECTOR *target, const SECTOR *sector);
-void __cdecl Room_TriggerMusicTrackImpl(int16_t value, int16_t flags, int16_t type);
-void __cdecl Effect_CreateBartoliLight(int16_t item_num);
-void __cdecl Dragon_Bones(int16_t item_num);
-void __cdecl MiniCopter_Control(int16_t item_num);
-void __cdecl Camera_Clip(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
-void __cdecl Lara_Col_ForwardJump(ITEM *item, COLL_INFO *coll);
-bool __cdecl SE_GraphicsTestStart(void);
-int16_t __cdecl Creature_Turn(ITEM *item, int16_t maximum_turn);
-void __cdecl WinVidSetDisplayAdapter(DISPLAY_ADAPTER *disp_adapter);
-void __cdecl Lift_Control(int16_t item_num);
-void __cdecl Output_InsertTransQuad(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
-void __cdecl Lara_State_ForwardJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Flare_DoInHand(int32_t flare_age);
-void __cdecl CreateWindowPalette(void);
-int32_t __cdecl Output_XGenX(const int16_t *obj_ptr);
-void __cdecl General_Control(int16_t item_num);
-DWORD __cdecl EncodeLinePCX(BYTE *src, DWORD width, BYTE *dst);
-void __cdecl UpdateFrame(bool need_run_message_loop, LPRECT rect);
-void __cdecl Lara_TestWaterDepth(ITEM *item, COLL_INFO *coll);
-void __cdecl GetCarriedItems(void);
-void __cdecl Demo_LoadLaraPos(void);
-void __cdecl Output_InsertFlatRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-int32_t __cdecl Item_TestBoundsCollide(const ITEM *src_item, const ITEM *dst_item, int32_t radius);
-void __cdecl Lara_State_Wade(ITEM *item, COLL_INFO *coll);
-void __cdecl DInputKeyboardCreate(void);
-void __cdecl Room_GetNearbyRooms(int32_t x, int32_t y, int32_t z, int32_t r, int32_t h, int16_t room_num);
-void __cdecl Door_Control(int16_t item_num);
-BYTE __cdecl FindNearestPaletteEntry(RGB_888 *palette, int32_t red, int32_t green, int32_t blue, bool ignore_sys_palette);
-void __cdecl Output_RotateLight(int16_t pitch, int16_t yaw);
-bool __cdecl SE_SoundTestStart(void);
-sub_4449D0
-bool __cdecl WinVidCreateGameWindow(void);
-BOOL __cdecl GF_ReadStringTable(DWORD count, char **string_table, char **string_buf, LPDWORD buf_size, HANDLE handle);
-void __cdecl Output_QuickSort(int32_t left, int32_t right);
-void __cdecl EmberEmitter_Control(int16_t item_num);
-void __cdecl Window_Smash(int16_t item_num);
-bool __cdecl S_Audio_Sample_DSoundBufferTest(void);
-BOOL __cdecl S_ReloadLevelGraphics(BOOL reload_palettes, BOOL reload_tex_pages);
-void __thiscall SE_LoadBitmapResource(BITMAP_RESOURCE *bmpRsrc, LPCTSTR lpName);
-void __cdecl Splash(ITEM *item);
-int32_t __cdecl Inv_GetItemOption(GAME_OBJECT_ID object_id);
-void __cdecl Gun_AimWeapon(WEAPON_INFO *winfo, LARA_ARM *arm);
-void __cdecl Requester_ChangeItem(REQUEST_INFO *req, int32_t item, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
-void __cdecl Option_Compass(INVENTORY_ITEM *item);
-void __cdecl Output_DoAnimateTextures(int32_t ticks);
-void __cdecl Zipline_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lara_Col_StepRight(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestClimbStance(ITEM *item, COLL_INFO *coll);
-void __cdecl SE_SoundDlgInit(HWND hwndDlg);
-void __cdecl GongBonger_Control(int16_t item_num);
-int32_t __cdecl Switch_Trigger(int16_t item_num, int16_t timer);
-void __cdecl TeethTrap_Control(int16_t item_num);
-HRESULT __stdcall Enum3DDevicesCallback(GUID *lpGuid, LPTSTR lpDeviceDescription, LPTSTR lpDeviceName, LPD3DDEVICEDESC lpD3DHWDeviceDesc, LPD3DDEVICEDESC lpD3DHELDeviceDesc, LPVOID lpContext);
-void __cdecl SE_ControlsDlgInit(HWND hwndDlg);
-void __cdecl Lara_State_Extra_PullDagger(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_TestClimbPos(ITEM *item, int32_t front, int32_t right, int32_t origin, int32_t height, int32_t *shift);
-bool __cdecl WinVidCheckGameWindowPalette(HWND hWnd);
-void __cdecl CreateZBuffer(void);
-int32_t __cdecl Lara_LandedBad(ITEM *item, COLL_INFO *coll);
-void __cdecl Room_AlterFloorHeight(ITEM *item, int32_t height);
-void __cdecl Lara_CheatGetStuff(void);
-int16_t __cdecl Effect_GunHit(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-int32_t __cdecl BGND_AddTexture(int32_t tile_idx, BYTE *bitmap, int32_t pal_index, RGB_888 *bmp_pal);
-bool __cdecl D3DSetViewport(void);
-void __cdecl Creature_Die(int16_t item_num, int32_t explode);
-void __cdecl LOT_CreateZone(ITEM *item);
-void __cdecl Output_InsertLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-void __cdecl Room_DrawSingleRoomGeometry(int16_t room_num);
-void __cdecl Gondola_Control(int16_t item_num);
-void __cdecl Room_FlipMap(void);
-void __cdecl Lara_Col_FastBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Roll2(ITEM *item, COLL_INFO *coll);
-void __cdecl FX_AssaultFinished(ITEM *item);
-int32_t __cdecl Skidoo_TestHeight(const ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
-int32_t __cdecl Lara_TestHangSwingIn(ITEM *item, int16_t angle);
-int32_t __cdecl Drawbridge_IsItemOnTop(const ITEM *item, int32_t x, int32_t y);
-void __cdecl Output_AnimateTextures(int32_t ticks);
-void __cdecl Camera_Initialise(void);
-bool __cdecl WinVidGetDisplayAdapters(void);
-void __cdecl WaterSprite_Control(int16_t fx_num);
-DWORD __cdecl CompPCX(BYTE *bitmap, DWORD width, DWORD height, RGB_888 *palette, BYTE **pcx_data);
-void __cdecl SyncSurfacePalettes(void *src_data, int32_t width, int32_t height, int32_t src_pitch, RGB_888 *src_palette, void *dst_data, int32_t dst_pitch, RGB_888 *dst_palette, bool preserve_sys_palette);
-int32_t __cdecl Lara_TestEdgeCatch(ITEM *item, COLL_INFO *coll, int32_t *edge);
-void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
-void __cdecl Spider_Leap(int16_t item_num, int16_t angle);
-bool __cdecl Matrix_TranslateRel(int32_t x, int32_t y, int32_t z);
-int32_t __cdecl Item_GetAnimChange(ITEM *item, const ANIM *anim);
-int16_t __cdecl Effect_MissileFlame(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-void __cdecl Overlay_DrawHealthBar(bool flash_state);
-void __cdecl Lara_SlideEdgeJump(ITEM *item, COLL_INFO *coll);
-void __cdecl S_CopyScreenToBuffer(void);
-void __cdecl Matrix_RotX(int16_t rx);
-const int16_t *__cdecl Output_InsertObjectGT3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Requester_SetHeading(REQUEST_INFO *req, char *text1, uint32_t flags1, char *text2, uint32_t flags2);
-int32_t __cdecl Lara_CheckForLetGo(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_FindTargetPoint(const ITEM *item, GAME_VECTOR *target);
-bool __cdecl GuidStringToBinary(LPCTSTR lpString, GUID *guid);
-void __cdecl Matrix_RotY(int16_t ry);
-void __cdecl Matrix_RotZ(int16_t rz);
-void __cdecl Creature_Float(int16_t item_num);
-void __cdecl XianSpearman_DoDamage(ITEM *item, CREATURE *xian, int32_t damage);
-void __cdecl Output_InsertSprite(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
-int32_t __cdecl Box_ValidBox(const ITEM *item, int16_t zone_num, int16_t box_num);
-void __cdecl Missile_ShootAtLara(FX *fx);
-int16_t __cdecl Effect_GunMiss(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-bool __cdecl ShowDDrawGameWindow(bool active);
-void __cdecl Lara_State_Extra_StartHouse(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Box_EscapeBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
-void __cdecl DoLotsOfBlood(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num, int32_t num);
-void __cdecl Requester_Shutdown(REQUEST_INFO *req);
-void __cdecl Lara_State_Extra_FinalAnim(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Trapdoor_IsItemOnTop(const ITEM *item, int32_t x, int32_t z);
-bool __cdecl LoadTexturePage(int32_t page_idx, bool reset);
-void __cdecl Output_AlterFOV(int16_t fov);
-void __cdecl Matrix_RotYXZsuperpack(const int16_t **pprot, int32_t skip);
-void __cdecl CreateRenderBuffer(void);
-int32_t __cdecl LOS_Check(const GAME_VECTOR *start, GAME_VECTOR *target);
-const int16_t *__cdecl Output_InsertObjectGT3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl setup_screen_size(void);
-void __cdecl Output_DrawScreenSprite(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
-int32_t __cdecl Flare_DoLight(XYZ_32 *pos, int32_t flare_age);
-void __cdecl InitialiseFinalLevel(void);
-void __cdecl CreateClipper(void);
-void __cdecl Item_NewRoom(int16_t item_num, int16_t room_num);
-bool __cdecl S_Audio_Sample_Init(void);
-void __cdecl Lara_CollideStop(ITEM *item, COLL_INFO *coll);
-void __cdecl FX_SwapMeshesWithMeshSwap3(ITEM *item);
-void __cdecl Level_LoadDemoExternal(LPCTSTR level_name);
-int32_t __cdecl Game_Loop(bool demo_mode);
-void __cdecl Camera_Fixed(void);
-int16_t __cdecl Room_GetTiltType(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-void __cdecl Lara_Col_FastFall(ITEM *item, COLL_INFO *coll);
-void __cdecl XianKnight_SparkleTrail(ITEM *item);
-void __cdecl CreateBackBuffer(void);
-bool __cdecl CreateTexturePageSurface(TEXPAGE_DESC *desc);
-void __cdecl Overlay_DrawAirBar(bool flash_state);
-void __cdecl AdjustTextureUVs(bool reset_uv_add);
-void __cdecl Output_DrawScreenSprite2D(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
-void __cdecl Lara_Control_Cutscene(int16_t item_num);
-void __cdecl Room_RemoveFlipItems(ROOM *r);
-void __cdecl FX_FloorShake(ITEM *item);
-void __cdecl Lara_State_Zipline(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Compress( ITEM *item, COLL_INFO *coll );
-void __cdecl Gun_HitTarget(ITEM *item, GAME_VECTOR *hitpos, int32_t damage);
-void __cdecl Window_1_Control(int16_t item_num);
-int32_t __cdecl S_LoadGame(void *save_data, uint32_t save_size, int32_t slot_num);
-void __cdecl Option_Controls_UpdateText(void);
-void __cdecl Output_SetNearZ(int32_t near_z);
-void __cdecl Box_TargetBox(LOT_INFO *lot, int16_t box_num);
-void __cdecl Lara_Col_TurnRight(ITEM *item, COLL_INFO *coll);
-bool __cdecl GetRegistryStringValue(LPCTSTR lpValueName, LPTSTR value, DWORD maxSize, LPCTSTR defaultValue);
-void __cdecl CreatePrimarySurface(void);
-void __cdecl Room_InitCinematic(void);
-void __cdecl Effect_NewRoom(int16_t fx_num, int16_t room_num);
-void __cdecl SE_AdvancedDlgUpdate(HWND hwndDlg);
-int32_t __cdecl Item_GetFrames(const ITEM *item, FRAME_INFO *frmptr[], int32_t *rate);
-void __cdecl Music_SetVolume(int32_t volume);
-const int16_t *__cdecl Output_InsertObjectGT4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-void __cdecl Lara_State_Extra_SharkKill(ITEM *item, COLL_INFO *coll);
-void __cdecl Blade_Control(int16_t item_num);
-bool __cdecl GetRegistryGuidValue(LPCTSTR lpValueName, GUID *value, GUID *defaultValue);
-void __cdecl Lara_Col_Reach(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl GetCollisionAnim(ITEM *skidoo, XYZ_32 *moved);
-void __cdecl FlameEmitter_Control(int16_t item_num);
-bool __cdecl WinVidCopyBitmapToBuffer(LPDDS surface, const BYTE *bitmap);
-void __cdecl CutscenePlayer1_Initialise(int16_t item_num);
-void __cdecl FX_Flood(ITEM *item);
-void __cdecl HWR_LoadTexturePages(int32_t pages_count, void *pages_buf, RGB_888 *palette);
-void __cdecl Detonator_Control(int16_t item_num);
-const int16_t *__cdecl Output_InsertObjectGT4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-int32_t __cdecl Lara_IsNearItem(PHD_3DPOS *pos, int32_t distance);
-void __cdecl SnowSprite_Control(int16_t fx_num);
-void __cdecl Text_AddBackground(TEXTSTRING *string, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t color, uint16_t *gour_ptr, uint16_t flags);
-sub_444B20
-bool __cdecl WinVidGetDisplayMode(DISPLAY_MODE *disp_mode);
-int32_t __cdecl Box_BadFloor(int32_t x, int32_t y, int32_t z, int32_t box_height, int32_t next_height, int16_t room_num, LOT_INFO *lot);
-void __cdecl Lara_State_Walk(ITEM *item, COLL_INFO *coll);
-D3DCOLOR __cdecl BGND_CenterLighting(int32_t x, int32_t y, int32_t width, int32_t height);
-void __cdecl Item_RemoveActive(int16_t item_num);
-void __cdecl Lara_State_TurnRight(ITEM *item, COLL_INFO *coll);
-BOOL __cdecl Level_LoadDemo(HANDLE handle);
-INT_PTR __stdcall SE_OptionsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-void __cdecl Bird_Initialise(int16_t item_num);
-void __cdecl Inv_SelectMeshes(INVENTORY_ITEM *inv_item);
-void __cdecl Lara_ResetLook(void);
-void __cdecl Lara_State_TurnLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl S_OutputPolyList(void);
-bool __cdecl WinVidGoFullScreen(DISPLAY_MODE *disp_mode);
-bool __cdecl IntroFMV(const char *file_name1, const char *file_name2);
-void __cdecl DyingMonk_Control(int16_t item_num);
-bool __cdecl HideDDrawGameWindow(void);
-int32_t __cdecl CreateTexturePalette(const RGB_888 *pal);
-void __cdecl Lara_SwimTurn(ITEM *item);
-void __cdecl Sound_EndScene(void);
-void __cdecl Hook_Control(int16_t item_num);
-void __cdecl Output_DrawPickup(int32_t sx, int32_t sy, int32_t scale, int16_t sprite_idx, int16_t shade);
-void __cdecl Lara_State_Tread(ITEM *item, COLL_INFO *coll);
-bool __cdecl Creature_CanTargetEnemy(const ITEM *item, const AI_INFO *info);
-void __cdecl Lara_State_Back(ITEM *item, COLL_INFO *coll);
-bool __cdecl Music_PlaySynced(int32_t track_id);
-void __cdecl Object_DrawSpriteItem(const ITEM *item);
-void __cdecl Lara_Col_Fallback(ITEM *item, COLL_INFO *coll);
-void __cdecl Blood_Control(int16_t fx_num);
-void __cdecl Requester_Init(REQUEST_INFO *req);
-void __cdecl HWR_EnableZBuffer(bool z_write_enable, bool z_enable);
-int32_t __cdecl Inv_AnimateInventoryItem(INVENTORY_ITEM *inv_item);
-void __cdecl Inv_RingIsNotOpen(RING_INFO *ring);
-int32_t __cdecl AddAssaultTime(uint32_t time);
-void __cdecl Lara_Col_Stop(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Roll(ITEM *item, COLL_INFO *coll);
-void __cdecl SkidooArmed_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl Room_FindByPos(int32_t x, int32_t y, int32_t z);
-void __cdecl Explosion_Control(int16_t fx_num);
-int32_t __cdecl Lara_DeflectEdge(ITEM *item, COLL_INFO *coll);
-void __cdecl SkidooDriver_Initialise(int16_t item_num);
-bool __cdecl WinInputInit(void);
-void __cdecl Random_Seed(void);
-void __cdecl Option_DoInventory(INVENTORY_ITEM *item);
-void __cdecl Bell_Control(int16_t item_num);
-void __cdecl Option_Controls_FlashConflicts(void);
-void __cdecl S_SyncPictureBufferPalette(void);
-void __cdecl S_SaveSettings(void);
-BOUNDS_16 *__cdecl Item_GetBoundsAccurate(const ITEM *item);
-int32_t __cdecl Item_GlobalReplace(GAME_OBJECT_ID src_object_id, GAME_OBJECT_ID dst_object_id);
-void __cdecl Lara_State_StepRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_StepLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_Pistols_Draw(LARA_GUN_TYPE weapon_type);
-void __cdecl DyingMonk_Initialise(int16_t item_num);
-void __cdecl Skidoo_Explode(const ITEM *skidoo);
-int32_t __cdecl WinGameStart(void);
-void __cdecl Gun_Rifle_FireM16(bool running);
-void __cdecl Matrix_TranslateAbs(int32_t x, int32_t y, int32_t z);
-int16_t __cdecl Diver_Harpoon(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-void __cdecl Overlay_DisplayModeInfo(char* string);
-void __cdecl Lara_TakeHit(ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Lara_Col_FastDive(ITEM *item, COLL_INFO *coll);
-BOOL __cdecl Level_LoadCinematic(HANDLE handle);
-void __cdecl Math_GetVectorAngles(int32_t x, int32_t y, int32_t z, int16_t *dest);
-void __cdecl Creature_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl FX_Bubbles(ITEM *item);
-void __cdecl Door_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl Inv_RequestItem(GAME_OBJECT_ID object_id);
-bool __cdecl Music_Init(void);
-int16_t __cdecl Knife(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-void __cdecl Lara_Hair_Draw(void);
-void __cdecl Lara_State_Glide(ITEM *item, COLL_INFO *coll);
-bool __cdecl GetRegistryBoolValue(LPCTSTR lpValueName, bool *pValue, bool defaultValue);
-int16_t __cdecl Lara_FloorFront(ITEM *item, int16_t ang, int32_t dist);
-void __cdecl Lara_State_ClimbStance(ITEM *item, COLL_INFO *coll);
-void __cdecl Window_Initialise(int16_t item_num);
-void __cdecl Lara_Hair_Initialise(void);
-void __cdecl Lara_Col_Jumper(ITEM *item, COLL_INFO *coll);
-void __cdecl GameWindowCalculateSizeFromClient(int32_t *width, int32_t *height);
-void __cdecl Matrix_LookAt(int32_t xsrc, int32_t ysrc, int32_t zsrc, int32_t xtar, int32_t ytar, int32_t ztar, int16_t roll);
-void __cdecl Ricochet(GAME_VECTOR *pos);
-void __cdecl Lara_LookLeftRight(void);
-void __cdecl Splash_Control(int16_t fx_num);
-void __thiscall WinVidGetColorBitMasks(COLOR_BIT_MASKS *bm, LPDDPIXELFORMAT pixel_format);
-BOOL __cdecl Level_LoadPalettes(HANDLE handle);
-bool __cdecl GetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize, LPBYTE defaultValue);
-void __cdecl Gun_Rifle_Ready(LARA_GUN_TYPE weapon_type);
-void __cdecl Lara_State_SurfSwim(ITEM *item, COLL_INFO *coll);
-void __cdecl CreatePictureBuffer(void);
-int32_t __cdecl Box_UpdateLOT(LOT_INFO *lot, int32_t expansion);
-void __cdecl Item_RemoveDrawn(int16_t item_num);
-void __cdecl Music_Legacy_Play(int16_t track_id, bool is_looped);
-BOOL __cdecl UT_CenterWindow(HWND hWnd);
-void __cdecl UT_MemBlt(BYTE *dstBuf, DWORD dstX, DWORD dstY, DWORD width, DWORD height, DWORD dstPitch, BYTE *srcBuf, DWORD srcX, DWORD srcY, DWORD srcPitch);
-int32_t __cdecl Output_VisibleZClip(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2);
-void __cdecl Overlay_AddDisplayPickup(GAME_OBJECT_ID object_id);
-int16_t __cdecl Effect_Create(int16_t room_num);
-void *__cdecl GameBuf_Alloc(size_t alloc_size, GAME_BUFFER buf_index);
-void __cdecl Output_SetFarZ(int32_t far_z);
-void __cdecl Lara_State_Swim(ITEM *item, COLL_INFO *coll);
-void __cdecl Object_DrawUnclippedItem(const ITEM *item);
-bool __cdecl PlayFMV(const char *file_name);
-void __cdecl Direct3DRelease(void);
-void __cdecl GameWindowCalculateSizeFromClientByZero(int32_t *width, int32_t *height);
-bool __cdecl WinVidRegisterGameWindowClass(void);
-int32_t __cdecl CreateTexturePage(int32_t width, int32_t height, LPDIRECTDRAWPALETTE palette);
-void __cdecl Lara_Col_SwanDive(ITEM *item, COLL_INFO *coll);
-void __cdecl Sound_UpdateEffects(void);
-void __cdecl ClockChimes_Control(int16_t item_num);
-void __cdecl Lara_Col_Death(ITEM *item, COLL_INFO *coll);
-void __cdecl Object_SetupAllObjects(void);
-sub_4470F0
-sub_447AC0
-void __cdecl SE_ControlsDlgUpdate(HWND hwndDlg);
-void __cdecl Object_Collision_Trap(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl AlarmSound_Control(int16_t item_num);
-int32_t __cdecl Lara_HitCeiling(ITEM *item, COLL_INFO *coll);
-void __cdecl UpdateGameResolution(void);
-int32_t __cdecl GF_DoLevelSequence(int32_t level, GAMEFLOW_LEVEL_TYPE type);
-void __cdecl Lara_LookUpDown(void);
-int16_t __cdecl Effect_GunShot(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-void __cdecl CreateBubble(XYZ_32 *pos, int16_t room_num);
-int32_t __cdecl GameInit(bool skip_cd_init);
-void __thiscall SE_DrawBitmap(BITMAP_RESOURCE *bmpRsrc, HDC hdc, int32_t x, int32_t y);
-void __cdecl FX_SwapMeshesWithMeshSwap1(ITEM *item);
-void __cdecl FX_SwapMeshesWithMeshSwap2(ITEM *item);
-void __cdecl Inv_Ring_MotionInit(RING_INFO *ring, int16_t frames, int16_t status, int16_t status_target);
-void __cdecl Inv_Ring_MotionItemDeselect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
-void __cdecl InitialiseStartInfo(void);
-void __cdecl IncreaseScreenSize(void);
-void __cdecl DecreaseScreenSize(void);
-void __cdecl InitialiseGameFlags(void);
-DWORD __cdecl CalculateCompatibleColor(COLOR_BIT_MASKS *mask, int32_t red, int32_t green, int32_t blue, int32_t alpha);
-int32_t __cdecl Music_GetFrames(void);
-bool __cdecl SE_RegisterSetupWindowClass(void);
-void __fastcall Output_FlatA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
-void __cdecl Inv_Ring_GetView(RING_INFO *ring, PHD_3DPOS *viewer);
-void __cdecl Lara_State_SurfLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_SurfRight(ITEM *item, COLL_INFO *coll);
-BOOL __cdecl Level_LoadCameras(HANDLE handle);
-BOOL __cdecl Level_LoadSoundEffects(HANDLE handle);
-void __cdecl UT_InitAccurateTimer(void);
-void __cdecl Item_Translate(ITEM *item, int32_t x, int32_t y, int32_t z);
-void __cdecl BGND_DrawInGameBlack(void);
-sub_444AB0
-void __cdecl Lara_State_SurfBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Sound_StopEffect(int32_t sample_id);
-bool __cdecl GetRegistryDwordValue(LPCTSTR lpValueName, DWORD *pValue, DWORD defaultValue);
-void __cdecl Item_UpdateRoom(ITEM *item, int32_t height);
-void __cdecl BirdTweeter_Control(int16_t item_num);
-void __cdecl Inv_Ring_MotionItemSelect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
-void __cdecl Lara_Col_ClimbLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl TeethTrap_Bite(ITEM *item, const BITE *bite);
-LRESULT __stdcall SE_NewPropSheetWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-int16_t __cdecl Creature_Effect(ITEM *item, BITE *bite, int16_t (*__cdecl spawn)(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num));
-void __cdecl Room_AddFlipItems(ROOM *r);
-void __cdecl Gun_Pistols_Ready(LARA_GUN_TYPE weapon_type);
-BOOL __cdecl S_InitialiseSystem(void);
-bool __cdecl GetRegistryFloatValue(LPCTSTR lpValueName, double *value, double defaultValue);
-void __cdecl Lara_Col_UWDeath(ITEM *item, COLL_INFO *coll);
-void __cdecl Item_AddActive(int16_t item_num);
-void __cdecl WinInReadKeyboard(LPVOID lpInputData);
-int32_t __cdecl Demo_Control(int32_t level_num);
-int16_t __cdecl DoBloodSplat(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num);
-void __cdecl DoChimeSound(const ITEM *item);
-void __cdecl Lara_Col_Splat(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_ClimbRight(ITEM *item, COLL_INFO *coll);
-void __cdecl HWR_ResetZBuffer(void);
-void __cdecl XianWarrior_Initialise(int16_t item_num);
-void __cdecl Item_ClearKilled(void);
-void __cdecl Lara_State_Hang(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_PickupFlare(ITEM *item, COLL_INFO *coll);
-DWORD __cdecl Sync(void);
-void __cdecl Lara_State_FastBack(ITEM *item, COLL_INFO *coll);
-void __cdecl S_Wait(int32_t timeout, BOOL input_check);
-int32_t __cdecl SE_GraphicsTest(void);
-int32_t __cdecl SE_SoundTest(void);
-void __thiscall SE_ChangeBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd);
-void __cdecl Requester_Item_RightAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-void __cdecl Room_GetNewRoom(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Object_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-int32_t __cdecl Item_IsTriggerActive(ITEM *item);
-BOOL __cdecl Level_LoadAnimatedTextures(HANDLE handle);
-void __cdecl Shell_Cleanup(void);
-void __cdecl Requester_Item_LeftAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-void __cdecl Lara_State_FastDive(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
-bool __cdecl DDrawCreate(LPGUID lpGUID);
-void __cdecl Lara_State_UWDeath(ITEM *item, COLL_INFO *coll);
-void __cdecl LOT_InitialiseArray(void);
-bool __cdecl WinVidGetDisplayModes(void);
-void __cdecl Item_InitialiseArray(int32_t num_items);
-void __cdecl Lara_State_Extra_DinoKill(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Lara_Fallen(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_SmashItem(int16_t item_num, LARA_GUN_TYPE weapon_type);
-void __cdecl Output_SetupBelowWater(bool underwater);
-void __cdecl Music_Shutdown(void);
-bool __cdecl TIME_Init(void);
-LPCTSTR __cdecl GuidBinaryToString(GUID *guid);
-void __cdecl Creature_Underwater(ITEM *item, int32_t depth);
-const SECTOR *__cdecl Camera_GoodPosition(int32_t x, int32_t y, int32_t z, int16_t room_num);
-void __cdecl Cultist3_Initialise(int16_t item_num);
-void __cdecl Gun_Pistols_SetArmInfo(LARA_ARM *arm, int32_t frame);
-void __cdecl LOT_DisableBaddieAI(int16_t item_num);
-void __cdecl Trapdoor_Control(int16_t item_num);
-void __cdecl Creature_Neck(ITEM *item, int16_t required);
-int16_t __cdecl Room_Legacy_GetDoor(const SECTOR *sector);
-void __cdecl Gun_Pistols_DrawMeshes(LARA_GUN_TYPE weapon_type);
-int32_t __cdecl MovableBlock_TestDestination(ITEM *item, int32_t block_height);
-void __cdecl GunFlash_Control(int16_t fx_num);
-JOYSTICK_NODE *__cdecl GetJoystick(GUID *lpGuid);
-bool __cdecl OpenGameRegistryKey(LPCTSTR key);
-double __cdecl UT_Microseconds(void);
-void __cdecl Lara_State_Extra_StartAnim(ITEM *item, COLL_INFO *coll);
-void __cdecl BGND_Free(void);
-bool __cdecl WinVidClearBuffer(LPDDS surface, LPRECT rect, DWORD fill_color);
-void __cdecl WinVidExitMessage(void);
-void __cdecl Lara_State_Extra_Breath(ITEM *item, COLL_INFO *coll);
-void __cdecl WriteSG(const void *pointer, int32_t size);
-void __cdecl GetSavedGamesList(REQUEST_INFO *req);
-int32_t __cdecl Boat_DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
-void __cdecl Lara_State_FastTurn(ITEM *item, COLL_INFO *coll);
-void __cdecl Flare_SetArm(int32_t frame);
-void __cdecl DartEffect_Control(int16_t fx_num);
-void __cdecl SE_OptionsStrCat(LPTSTR *dstString, bool isEnabled, bool *isNext, LPCTSTR srcString);
-void __cdecl Lara_State_BackJump(ITEM *item, COLL_INFO *coll);
-DISPLAY_MODE *__thiscall InsertDisplayModeInListTail(DISPLAY_MODE_LIST *modeList);
-void __cdecl HWR_EnableColorKey(bool state);
-void __cdecl HWR_FreeTexturePages(void);
-LONG __cdecl SetRegistryStringValue(LPCTSTR lpValueName, LPCTSTR value, int32_t length);
-void __cdecl Creature_Head(ITEM *item, int16_t required);
-void __cdecl LOT_ClearLOT(LOT_INFO *lot);
-void __cdecl Lara_CatchFire(void);
-BOOL __cdecl ReadFileSync(HANDLE handle, LPVOID lpBuffer, DWORD nBytesToRead, LPDWORD lpnBytesRead, LPOVERLAPPED lpOverlapped);
-void __cdecl Output_AddDynamicLight(int32_t x, int32_t y, int32_t z, int32_t intensity, int32_t falloff);
-int32_t __cdecl CalculateWindowWidth(int32_t width, int32_t height);
-DISPLAY_ADAPTER_NODE *__cdecl WinVidGetDisplayAdapter(GUID *lpGuid);
-DISPLAY_MODE *__thiscall InsertDisplayModeInListHead(DISPLAY_MODE_LIST *modeList);
-const SOUND_ADAPTER_NODE *__cdecl S_Audio_Sample_GetAdapter(GUID *guid);
-void __cdecl WinStopFMV(bool is_playback);
-int32_t __fastcall Math_Atan(int32_t x, int32_t y);
-int32_t __cdecl Creature_Activate(int16_t item_num);
-void __cdecl Matrix_TranslateRel_ID(int32_t x, int32_t y, int32_t z, int32_t x2, int32_t y2, int32_t z2);
-void __cdecl Lara_State_Extra_YetiKill(ITEM *item, COLL_INFO *coll);
-void __cdecl KillerStatue_Initialise(int16_t item_num);
-HRESULT __cdecl DDrawSurfaceRestoreLost(LPDDS surface1, LPDDS surface2, bool blank);
-DWORD __cdecl GetRenderBitDepth(DWORD dwRGBBitCount);
-void __cdecl S_InsertBackPolygon(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
-int32_t __cdecl S_Audio_Sample_OutPlay(int32_t sample_id, uint16_t volume, int32_t pitch, int32_t pan);
-int32_t __cdecl S_Audio_Sample_OutPlayLooped(int32_t track_id, uint16_t volume, int32_t pitch, int32_t pan);
-void __cdecl Overlay_DrawGameInfo(bool pickup_state);
-bool __thiscall CompareVideoModes(const DISPLAY_MODE *mode1, const DISPLAY_MODE *mode2);
-bool __cdecl S_Audio_Sample_IsTrackPlaying(int32_t track_id);
-void __cdecl FallingBlock_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-HRESULT __cdecl DDrawSurfaceCreate(LPDDSDESC dsp, LPDDS *surface);
-void __cdecl BitMaskGetNumberOfBits(uint32_t bit_mask, uint32_t *bit_depth, uint32_t *bit_offset);
-void __cdecl GetValidLevelsList(REQUEST_INFO *req);
-void __cdecl FX_LaraDrawRightGun(ITEM *item);
-void __cdecl FX_LaraDrawLeftGun(ITEM *item);
-void __cdecl Cultist1_Initialise(int16_t item_num);
-void __cdecl WinVidShowGameWindow(int32_t nCmdShow);
-void __cdecl S_FadeToBlack(void);
-void __cdecl Door_Shut(DOORPOS_DATA *d);
-int32_t __cdecl UT_ErrorBox(UINT uID, HWND hWnd);
-void __cdecl Matrix_TranslateRel_I(int32_t x, int32_t y, int32_t z);
-void __cdecl Matrix_RotYXZ_I(int16_t y, int16_t x, int16_t z);
-void __cdecl WinVidSetMinWindowSize(int32_t width, int32_t height);
-void __cdecl WinVidSetMaxWindowSize(int32_t width, int32_t height);
-void __cdecl FX_LaraNormal(ITEM *item);
-void __cdecl Inv_Ring_Light(RING_INFO *ring);
-void __cdecl Lara_State_FastFall(ITEM *item, COLL_INFO *coll);
-void __cdecl Skidoo_Initialise(int16_t item_num);
-bool __cdecl WinVidInit(void);
-void __cdecl Option_Controls_DefaultConflict(void);
-void __cdecl UpdateTicks(void);
-void __cdecl DingDong_Control(int16_t item_num);
-void __cdecl Trapdoor_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Flare_Ready(void);
-void __cdecl FallingBlock_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Enumerate3DDevices(DISPLAY_ADAPTER *adapter);
-DWORD __cdecl EncodePutPCX(BYTE value, BYTE num, BYTE *buffer);
-int32_t __stdcall SE_PropSheetCallback(HWND hwndDlg, UINT uMsg, LPARAM lParam);
-HWR_TEXTURE_HANDLE __cdecl GetTexturePageHandle(int32_t page_idx);
-void __cdecl Matrix_RotYXZsuperpack_I(const int16_t **pprot1, const int16_t **pprot2, int32_t skip);
-int32_t __cdecl Keyhole_Trigger(int16_t item_num);
-HRESULT __cdecl WinVidBufferLock(LPDDS surface, LPDDSDESC desc, DWORD flags);
-int32_t __cdecl SE_SoundTestExecute(void);
-void __cdecl Output_DrawPolyGTMap(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyWGTMap(const int16_t *obj_ptr);
-void __cdecl Boat_Initialise(int16_t item_num);
-void __cdecl FinalCutscene_Control(int16_t item_num);
-void __cdecl Blade_Initialise(int16_t item_num);
-void __cdecl RollingBall_Initialise(int16_t item_num);
-int32_t __cdecl RenderErrorBox(int32_t error_code);
-void __cdecl Shell_ExitSystem(const char *message);
-void __cdecl S_Audio_Sample_OutCloseAllTracks(void);
-int32_t __cdecl Gun_CheckForHoldingState(int32_t state);
-GAME_OBJECT_ID Gun_GetWeaponAnim(const LARA_GUN_TYPE gun_type);
-void __cdecl Drawbridge_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-int32_t __cdecl Bridge_GetOffset(const ITEM *item, int32_t x, int32_t z);
-void __cdecl Glow_Control(int16_t fx_num);
-void __cdecl WaitPrimaryBufferFlip(void);
-void __cdecl S_RemoveCtrlText(void);
-void __cdecl TexturePageReleaseVidMemSurface(TEXPAGE_DESC *page);
-void __cdecl Gun_Pistols_UndrawMeshLeft(LARA_GUN_TYPE weapon_type);
-void __cdecl Gun_Pistols_UndrawMeshRight(LARA_GUN_TYPE weapon_type);
-void __cdecl Trapdoor_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl WinVidHideGameWindow(void);
-void __cdecl Output_InitPolyList(void);
-void __cdecl Requester_SetSize(REQUEST_INFO *req, int32_t maxlines, int32_t ypos);
-int16_t __cdecl Item_Create(void);
-void __cdecl Lara_State_SwitchOn(ITEM *item, COLL_INFO *coll);
-void __cdecl Switch_Control(int16_t item_num);
-uint32_t __cdecl Text_GetScaleV(uint32_t value);
-sub_447170
-void __cdecl TempVideoRemove(void);
-sub_447B40
-int32_t __cdecl S_Audio_Sample_GetFreeTrackIndex(void);
-void __cdecl Shell_Shutdown(void);
-void __cdecl S_Audio_Sample_OutSetPanAndVolume(int32_t track_id, int32_t pan, uint16_t volume);
-void __cdecl Music_Stop(void);
-void __cdecl Output_DrawPolyGTMapPersp(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyWGTMapPersp(const int16_t *obj_ptr);
-void __cdecl Item_ShiftCol(ITEM *item, COLL_INFO *coll);
-int32_t __cdecl Game_DrawCinematic(void);
-int32_t __cdecl Game_Draw(void);
-void __cdecl LaraAlarm_Control(int16_t item_num);
-void __cdecl Text_ChangeText(TEXTSTRING *string, const char *text);
-uint32_t __cdecl Text_GetScaleH(uint32_t value);
-bool __cdecl D3DIsSupported(LPD3DDEVICEDESC desc);
-void __cdecl S_InitialiseScreen(GAMEFLOW_LEVEL_TYPE level_type);
-LONG __cdecl SetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize);
-void __thiscall SE_ReleaseBitmapResource(BITMAP_RESOURCE *bmpRsrc);
-void __cdecl Output_PrintPolyList(uint8_t *surface_ptr);
-void __cdecl Lara_Col_Default(ITEM *item, COLL_INFO *coll);
-void __cdecl Drawbridge_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl ChangeFileNameExtension(char *file_name, const char *file_ext);
-DWORD __cdecl S_DumpScreen(void);
-LPVOID __cdecl UT_LoadResource(LPCTSTR lpName, LPCTSTR lpType);
-LONG __cdecl SetRegistryFloatValue(LPCTSTR lpValueName, double value);
-void __cdecl Output_DrawPolyFlat(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyTrans(const int16_t *obj_ptr);
-void __cdecl Output_DrawPolyGouraud(const int16_t *obj_ptr);
-void __cdecl Creature_Tilt(ITEM *item, int16_t angle);
-FRAME_INFO *__cdecl Item_GetBestFrame(const ITEM *item);
-void __cdecl Lara_State_HangLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_HangRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Lift_Initialise(int16_t item_num);
-void __cdecl Lift_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl Lift_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl BridgeTilt1_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl ReadSG(void *pointer, int32_t size);
-void __cdecl WinVidSetGameWindowSize(int32_t width, int32_t height);
-void __thiscall S_FlaggedString_InitAdapter(DISPLAY_ADAPTER *adapter);
-void __cdecl S_FadeInInventory(BOOL isFade);
-void __cdecl S_DrawScreenLine(int32_t x, int32_t y, int32_t z, int32_t x_len, int32_t y_len, BYTE color_idx, D3DCOLOR *gour, uint16_t flags);
-void __cdecl HWR_GetPageHandles(void);
-bool __cdecl ReloadTextures(bool reset);
-void __cdecl Matrix_InitInterpolate(int32_t frac, int32_t rate);
-void __cdecl BridgeTilt2_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl TempVideoAdjust(int32_t hires, double sizer);
-void __cdecl GameBuf_Free(size_t free_size);
-void __cdecl Output_SortPolyList(void);
-void __cdecl CutscenePlayerGen_Initialise(int16_t item_num);
-void __cdecl Lara_State_RightJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_LeftJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_HangLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_HangRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_Rifle_DrawMeshes(LARA_GUN_TYPE weapon_type);
-int32_t __cdecl Pickup_Trigger(int16_t item_num);
-void __cdecl DDrawRelease(void);
-void __cdecl Matrix_PushUnit(void);
-const int16_t *__cdecl Output_CalcSkyboxLight(const int16_t *obj_ptr);
-void __cdecl Inv_RingActive(void);
-void __cdecl Lara_GetCollisionInfo(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfSwim(ITEM *item, COLL_INFO *coll);
-void __cdecl Door_Open(DOORPOS_DATA *d);
-void __cdecl BGND_GetPageHandles(void);
-void __thiscall DisplayModeListDelete(DISPLAY_MODE_LIST *pList);
-void __cdecl FreeTexturePage(int32_t page_idx);
-void __cdecl Matrix_RotY_I(int16_t ang);
-void __cdecl Matrix_RotX_I(int16_t ang);
-void __cdecl Matrix_RotZ_I(int16_t ang);
-int32_t __cdecl Music_GetRealTrack(int32_t track);
-void __cdecl S_Audio_Sample_AdjustTrackPitch(int32_t track_id, int32_t pitch);
-void __cdecl Output_CalculateStaticLight(int16_t adder);
-void __cdecl Ricochet_Control(int16_t fx_num);
-void __cdecl Effect_InitialiseArray(void);
-void __cdecl Lara_State_PushBlock(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Pickup(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_UseKey(ITEM *item, COLL_INFO *coll);
-void __cdecl BridgeTilt1_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-bool __cdecl BGND_Init(void);
-void __cdecl CleanupTextures(void);
-BOOL __cdecl OpenRegistryKey(LPCTSTR lpSubKey);
-void __cdecl Creature_Initialise(int16_t item_num);
-int32_t __cdecl Room_FindGridShift(int32_t src, int32_t dst);
-void __cdecl Inv_Ring_RotateLeft(RING_INFO *ring);
-void __cdecl Inv_Ring_RotateRight(RING_INFO *ring);
-void __cdecl Lara_State_SwanDive(ITEM *item, COLL_INFO *coll);
-void __cdecl BridgeTilt2_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-sub_4471C0
-sub_447B90
-void __cdecl S_Audio_Sample_CloseTrack(int32_t track_id);
-void __cdecl S_Audio_Sample_CloseAllTracks(void);
-void __cdecl S_DrawScreenFBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_FILL *gour, uint16_t flags);
-void __cdecl Demo_GetInput(void);
-BOOL __cdecl Overlay_FlashCounter(void);
-void __cdecl WinInStart(void);
-void __cdecl FX_Chandelier(ITEM *item);
-void __cdecl Overlay_DrawModeInfo(void);
-void __cdecl Inv_Ring_CalcAdders(RING_INFO *ring, int16_t rotation_duration);
-void __cdecl Inv_Ring_MotionSetup(RING_INFO *ring, int16_t status, int16_t status_target, int16_t frames);
-void __cdecl Lara_State_Fallback(ITEM *item, COLL_INFO *coll);
-void __cdecl MovableBlock_Initialise(int16_t item_num);
-void __cdecl Drawbridge_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-void __cdecl Text_Init(void);
-void __cdecl S_Audio_Sample_AdjustTrackVolumeAndPan(int32_t track_id, int32_t volume, int32_t pan);
-LPTSTR __cdecl UT_FindArg(LPCTSTR str);
-uint32_t __fastcall Math_Sqrt(uint32_t n);
-void __cdecl Lara_State_Slide(ITEM *item, COLL_INFO *coll);
-void __cdecl Gun_Rifle_UndrawMeshes(LARA_GUN_TYPE weapon_type);
-void __cdecl Text_Flash(TEXTSTRING *string, int16_t enable, int16_t rate);
-DWORD __cdecl GetZBufferDepth(void);
-void __cdecl HWR_ResetColorKey(void);
-void __cdecl Output_InsertPolygons_I(int16_t *ptr, int32_t clip);
-void __cdecl Sound_Init(void);
-void __cdecl S_Audio_Sample_Shutdown(void);
-void __cdecl S_UnloadLevelFile(void);
-int32_t __cdecl S_Audio_Sample_CalculateSampleVolume(int32_t volume);
-LONG __cdecl SetRegistryBoolValue(LPCTSTR lpValueName, bool value);
-void __cdecl Text_AddOutline(TEXTSTRING *string, int16_t enable, int16_t color, uint16_t *gour_ptr, uint16_t flags);
-void __cdecl DInputKeyboardRelease(void);
-void __cdecl HWR_ResetTexSource(void);
-void __cdecl Overlay_MakeAmmoString(char *string);
-int32_t __cdecl CalculateWindowHeight(int32_t width, int32_t height);
-void __cdecl Matrix_Push_I(void);
-void __cdecl Lara_State_PPReady(ITEM *item, COLL_INFO *coll);
-void __cdecl InitialiseLevelFlags(void);
-void __cdecl Text_Draw(void);
-void __cdecl S_FadeOutInventory(BOOL isFade);
-void __cdecl Inv_Ring_MotionRadius(RING_INFO *ring, int16_t target);
-LPCTSTR __cdecl GetFullPath(LPCTSTR file_name);
-void __cdecl ScreenClear(bool is_phd_win_size);
-int32_t __cdecl S_Audio_Sample_CalculateSamplePan(int16_t pan);
-void __cdecl FreeTexturePages(void);
-void __cdecl SE_PassMessageToImage(HWND hWnd, UINT uMsg, WPARAM wParam);
-void __cdecl Inv_Ring_MotionCameraPos(RING_INFO *ring, int16_t target);
-int32_t __cdecl Text_Remove(TEXTSTRING *string);
-HRESULT __cdecl WinVidBufferUnlock(LPDDS surface, LPDDSDESC desc);
-LPDIRECT3DTEXTURE2 __cdecl Create3DTexture(LPDDS surface);
-HRESULT __cdecl EnumerateTextureFormats(void);
-void __cdecl Room_Legacy_TriggerMusicTrack(int16_t value, int16_t flags, int16_t type);
-void __cdecl FX_AssaultStart(ITEM *item);
-void __cdecl Inv_RemoveInventoryText(void);
-void __cdecl Sound_Shutdown(void);
-int16_t __cdecl Text_GetTextLength(const char *text);
-bool __cdecl DInputEnumDevices(JOYSTICK_LIST *joystickList);
-void __cdecl HWR_TexSource(HWR_TEXTURE_HANDLE tex_source);
-void __cdecl FX_Rubble(ITEM *item);
-void __cdecl FX_Explosion(ITEM *item);
-void __cdecl Lara_Col_BackJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_RightJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_LeftJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SlideBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfRight(ITEM *item, COLL_INFO *coll);
-void __cdecl Secret2_Control(int16_t item_num);
-uint16_t __cdecl S_FindColor(int32_t red, int32_t green, int32_t blue);
-void __cdecl FreePalette(int32_t palette_idx);
-void __cdecl Matrix_Pop_I(void);
-void __cdecl Inv_Ring_MotionRotation(RING_INFO *ring, int16_t rotation, int16_t target);
-void __cdecl MovableBlock_Draw(const ITEM *item);
-void __cdecl WinVidFreeWindow(void);
-bool __cdecl DInputCreate(void);
-bool __cdecl HWR_Init(void);
-void __cdecl Lara_InitialiseLoad(int16_t item_num);
-void __cdecl GameBuf_Reset(void);
-void __cdecl Output_SetupAboveWater(bool underwater);
-void __cdecl Inv_Ring_MotionCameraPitch(RING_INFO *ring, int16_t target);
-void __cdecl SafeFreeTexturePage(int32_t page_idx);
-void __cdecl FX_AssaultStop(ITEM *item);
-int32_t __cdecl GF_DoFrontendSequence(void);
-bool __cdecl D3DCreate(void);
-void __thiscall S_FlaggedString_Create(STRING_FLAGGED *string, int32_t size);
-BOOL __cdecl S_Audio_Sample_OutIsTrackPlaying(int32_t track_id);
-bool __cdecl InitTextures(void);
-void __cdecl Lara_Col_Slide(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbEnd(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_SurfTread(ITEM *item, COLL_INFO *coll);
-void __cdecl Text_CentreH(TEXTSTRING *string, int16_t enable);
-void __cdecl Text_CentreV(TEXTSTRING *string, int16_t enable);
-void __cdecl Text_AlignRight(TEXTSTRING *string, int16_t enable);
-void __cdecl Text_AlignBottom(TEXTSTRING *string, int16_t enable);
-int32_t __cdecl Random_GetControl(void);
-int32_t __cdecl Random_GetDraw(void);
-LONG __cdecl SetRegistryDwordValue(LPCTSTR lpValueName, DWORD value);
-void __cdecl Matrix_Push(void);
-void __cdecl Lara_State_Special(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_GongBong(ITEM *item, COLL_INFO *coll);
-void __cdecl FX_Boiler(ITEM *item);
-void __cdecl FX_Piston(ITEM *item);
-void __cdecl FX_Curtain(ITEM *item);
-void __cdecl FX_Statue(ITEM *item);
-void __cdecl FX_SetChange(ITEM *item);
-void __cdecl Lara_State_Reach(ITEM *item, COLL_INFO *coll);
-bool __cdecl S_Audio_Sample_DSoundCreate(GUID *guid);
-void __cdecl S_DontDisplayPicture(void);
-void __cdecl S_Audio_Sample_OutSetPitch(int32_t track_id, int32_t pitch);
-int32_t __cdecl GetFreePaletteIndex(void);
-int32_t __cdecl GetFreeTexturePageIndex(void);
-void __thiscall SE_UpdateBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd, HWND hSender);
-void __cdecl Inv_RemoveAllItems(void);
-void __cdecl Requester_Item_CenterAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-void __cdecl Lara_ControlExtra(int16_t item_num);
-void __cdecl BridgeFlat_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-int32_t __fastcall Math_Sin(int16_t angle);
-bool __cdecl EnumerateDisplayAdapters(DISPLAY_ADAPTER_LIST *displayAdapterList);
-void __cdecl DInputRelease(void);
-bool __cdecl S_Audio_Sample_DSoundEnumerate(SOUND_ADAPTER_LIST *adapter_list);
-int32_t __fastcall Math_SinImpl(int16_t angle);
-int32_t __cdecl Input_GetDebounced(int32_t input);
-bool __cdecl HWR_VertexBufferFull(void);
-void __cdecl Lara_State_SlideBack(ITEM *item, COLL_INFO *coll);
-void __cdecl Flare_DrawMeshes(void);
-void __cdecl Flare_UndrawMeshes(void);
-sub_444990
-sub_444AA0
-sub_4470B0
-sub_447160
-sub_447A80
-sub_447B30
-BOOL __cdecl S_LoadLevelFile(LPCTSTR file_name, int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
-int32_t __cdecl UT_MessageBox(LPCTSTR lpText, HWND hWnd);
-void __cdecl FX_AssaultReset(ITEM *item);
-void __cdecl Text_SetScale(TEXTSTRING *string, int32_t scale_h, int32_t scale_v);
-void __cdecl WinInRunControlPanel(HWND hWnd);
-sub_44E860
-void __cdecl SE_GraphicsAdapterSet(HWND hwndDlg, DISPLAY_ADAPTER_NODE *adapter);
-void __cdecl S_Audio_Sample_OutCloseTrack(int32_t track_id);
-void __cdecl FX_Turn180(ITEM *item);
-void __cdecl FX_InvisibilityOff(ITEM *item);
-void __cdecl BridgeFlat_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-void __cdecl HWR_BeginScene(void);
-void __cdecl Overlay_InitialisePickUpDisplay(void);
-void __cdecl Lara_State_WaterOut(ITEM *item, COLL_INFO *coll);
-void __cdecl ResetSG(void);
-void __cdecl Lara_State_Death(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Climbing(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_ClimbDown(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Dive(ITEM *item, COLL_INFO *coll);
-void __cdecl S_AdjustTexelCoordinates(void);
-void __cdecl SE_GraphicsTestFinish(void);
-void __cdecl Requester_RemoveAllItems(REQUEST_INFO *req);
-void __cdecl Lara_State_UpJump(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_Extra_Airlock(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_TurnLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Land(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_StepLeft(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Null(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_Col_Swim(ITEM *item, COLL_INFO *coll);
-void __thiscall S_FlaggedString_Delete(STRING_FLAGGED *string);
-void __cdecl WinVidFinish(void);
-bool __cdecl S_IntroFMV(const char *file_name1, const char *file_name2);
-LONG __cdecl DeleteRegistryValue(LPCTSTR lpValueName);
-sub_4449A0
-DISPLAY_MODE *__thiscall InsertDisplayMode(DISPLAY_MODE_LIST *modeList, DISPLAY_MODE_NODE *before);
-sub_4470C0
-sub_447A90
-void __cdecl SafeFreePalette(int32_t palette_idx);
-HWND __cdecl WinVidFindGameWindow(void);
-void __cdecl GameBuf_Shutdown(void);
-HWND __cdecl SE_FindSetupDialog(void);
-void __cdecl Text_RemoveBackground(TEXTSTRING *string);
-void __cdecl Text_RemoveOutline(TEXTSTRING *string);
-sub_44E880
-void __cdecl ScreenPartialDump(void);
-void __cdecl WinInFinish(void);
-void __cdecl S_FinishInventory(void);
-bool __cdecl IsNewRegistryKeyCreated(void);
-bool __cdecl S_PlayFMV(const char *file_name);
-void __cdecl SE_AdvancedDlgInit(HWND hwndDlg);
-void __thiscall DisplayModeListInit(DISPLAY_MODE_LIST *pList);
-void __cdecl ScreenDump(void);
-LONG __cdecl CloseRegistryKey(void);
-LPCTSTR __cdecl DecodeErrorMessage(DWORD error_code);
-void __cdecl FX_FinishLevel(ITEM *item);
-void __cdecl FX_DynamicLightOff(ITEM *item);
-void __cdecl Lara_State_Null(ITEM *item, COLL_INFO *coll);
-void __cdecl Lara_State_UWTwist(ITEM *item, COLL_INFO *coll);
-void __cdecl S_ClearScreen(void);
-void __cdecl Game_SetCutsceneTrack(int32_t track);
-void __cdecl FX_LaraHandsFree(ITEM *item);
-void __cdecl Lara_State_Splat(ITEM *item, COLL_INFO *coll);
-void __cdecl Random_SeedControl(int32_t seed);
-void __cdecl Random_SeedDraw(int32_t seed);
-void __cdecl SE_SoundAdapterSet(HWND hwndDlg, SOUND_ADAPTER_NODE *adapter);
-void __cdecl SE_ControlsJoystickSet(HWND hwndDlg, JOYSTICK_NODE *joystick);
-void __cdecl Sound_SetMasterVolume(int32_t volume);
-void __cdecl FX_InvisibilityOn(ITEM *item);
-void __cdecl FX_DynamicLightOn(ITEM *item);
-void __cdecl WinVidClearMinWindowSize(void);
-void __cdecl WinVidClearMaxWindowSize(void);
-bool __cdecl Direct3DInit(void);
-bool __cdecl S_Audio_Sample_IsEnabled(void);
-int32_t __cdecl LevelCompleteSequence(void);
-int32_t __cdecl GetRenderHeight(void);
-int32_t __cdecl GetRenderWidth(void);
-int32_t __fastcall Math_Cos(int16_t angle);
-int __cdecl Player_PlayFrame(LPVOID, LPVOID, LPVOID, DWORD, LPCRECT, DWORD, DWORD, DWORD);
-int __cdecl Movie_GetTotalFrames(LPVOID);
-int __cdecl Movie_GetCurrentFrame(LPVOID);
-int __cdecl Player_StartTimer(LPVOID);
-int __cdecl Player_InitMoviePlayback(LPVOID, LPVOID, LPVOID);
-int __cdecl Movie_SetSyncAdjust(LPVOID, LPVOID, DWORD);
-int __cdecl Player_InitSound(LPVOID, DWORD, DWORD, BOOL, DWORD, DWORD, DWORD, DWORD, DWORD);
-int __cdecl Movie_GetSoundChannels(LPVOID);
-int __cdecl Movie_GetSoundRate(LPVOID);
-int __cdecl Movie_GetSoundPrecision(LPVOID);
-int __cdecl Player_GetDSErrorCode(void);
-int __cdecl Player_InitSoundSystem(HWND);
-int __cdecl Player_BlankScreen(DWORD, DWORD, DWORD, DWORD);
-int __cdecl Player_InitPlaybackMode(HWND, LPVOID, DWORD, DWORD);
-int __cdecl Player_InitVideo(LPVOID, LPVOID, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD);
-int __cdecl Movie_GetXSize(LPVOID);
-int __cdecl Movie_GetYSize(LPVOID);
-int __cdecl Movie_GetFormat(LPVOID);
-int __cdecl Player_InitMovie(LPVOID, DWORD, DWORD, LPCTSTR, DWORD);
-int __cdecl Player_PassInDirectDrawObject(LPDIRECTDRAW3);
-int __cdecl Player_ReturnPlaybackMode(BOOL);
-int __cdecl Player_ShutDownSoundSystem(void);
-int __cdecl Player_ShutDownMovie(LPVOID);
-int __cdecl Player_ShutDownVideo(LPVOID);
-int __cdecl Player_ShutDownSound(LPVOID);
-int __cdecl Player_StopTimer(LPVOID);
-void __cdecl FX_FlipMap(ITEM *item);
-void __cdecl FX_ResetHair(ITEM *item);
-void __cdecl Inv_DoInventoryPicture(void);
-sub_444BB0
-sub_4473A0
-sub_447FA0
-sub_448410
-sub_4523A0
-LONG __cdecl CloseGameRegistryKey(void);
-void __cdecl SE_SoundTestFinish(void);
-bool __cdecl RenderInit(void);
-int32_t __cdecl SE_GraphicsTestExecute(void);
-void __cdecl Output_InsertInventoryBackground(const int16_t *obj_ptr);
-sub_444BC0
-sub_448420
-sub_44E6F0
-sub_4523B0
-
-
-
diff --git a/docs/tr2/progress.txt b/docs/tr2/progress.txt
deleted file mode 100644
index 9edcc6663..000000000
--- a/docs/tr2/progress.txt
+++ /dev/null
@@ -1,4906 +0,0 @@
-# TYPES
-typedef IDirect3DDevice2 *LPDIRECT3DDEVICE2; // decompiled
-typedef IDirect3DTexture2 *LPDIRECT3DTEXTURE2; // decompiled
-typedef IDirect3DViewport2 *LPDIRECT3DVIEWPORT2; // decompiled
-typedef IDirect3DMaterial2 *LPDIRECT3DMATERIAL2; // decompiled
-typedef DDSURFACEDESC DDSDESC, *LPDDSDESC; // decompiled
-typedef LPDIRECTDRAWSURFACE3 LPDDS; // decompiled
-typedef LPDIRECTDRAW3 LPDD; // decompiled
-typedef D3DTEXTUREHANDLE HWR_TEXTURE_HANDLE; // decompiled
-
-typedef struct __unaligned { // decompiled
- int32_t x;
- int32_t y;
- int32_t z;
-} XYZ_32;
-
-typedef struct __unaligned { // decompiled
- int16_t x;
- int16_t y;
- int16_t z;
-} XYZ_16;
-
-typedef struct __unaligned { // decompiled
- int32_t _00;
- int32_t _01;
- int32_t _02;
- int32_t _03;
- int32_t _10;
- int32_t _11;
- int32_t _12;
- int32_t _13;
- int32_t _20;
- int32_t _21;
- int32_t _22;
- int32_t _23;
-} MATRIX;
-
-typedef enum { // decompiled
- VGA_NO_VGA = 0,
- VGA_256_COLOR = 1,
- VGA_MODEX = 2,
- VGA_STANDARD = 3,
-} VGA_MODE;
-
-typedef struct __unaligned { // decompiled
- LPBITMAPINFO bmp_info;
- void *bmp_data;
- HPALETTE hPalette;
- DWORD flags;
-} BITMAP_RESOURCE;
-
-typedef struct __unaligned { // decompiled
- int32_t width;
- int32_t height;
- int32_t bpp;
- VGA_MODE vga;
-} DISPLAY_MODE;
-
-typedef struct __unaligned DISPLAY_MODE_NODE { // decompiled
- struct DISPLAY_MODE_NODE *next;
- struct DISPLAY_MODE_NODE *previous;
- DISPLAY_MODE body;
-} DISPLAY_MODE_NODE;
-
-typedef struct __unaligned { // decompiled
- DISPLAY_MODE_NODE *head;
- DISPLAY_MODE_NODE *tail;
- DWORD count;
-} DISPLAY_MODE_LIST;
-
-typedef struct __unaligned { // decompiled
- char *content;
- bool is_valid;
-} STRING_FLAGGED;
-
-typedef struct __unaligned { // decompiled
- LPGUID adapter_guid_ptr;
- GUID adapter_guid;
- STRING_FLAGGED driver_desc;
- STRING_FLAGGED driver_name;
- DDCAPS_DX5 driver_caps;
- DDCAPS_DX5 hel_caps;
- GUID device_guid;
- D3DDEVICEDESC_V2 hw_device_desc;
- DISPLAY_MODE_LIST hw_disp_mode_list;
- DISPLAY_MODE_LIST sw_disp_mode_list;
- DISPLAY_MODE vga_mode1;
- DISPLAY_MODE vga_mode2;
- uint32_t screen_width;
- bool hw_render_supported;
- bool sw_windowed_supported;
- bool hw_windowed_supported;
- bool is_vga_mode1_presented;
- bool is_vga_mode2_presented;
- bool perspective_correct_supported;
- bool dither_supported;
- bool zbuffer_supported;
- bool linear_filter_supported;
- bool shade_restricted;
-} DISPLAY_ADAPTER;
-
-typedef struct __unaligned DISPLAY_ADAPTER_NODE { // decompiled
- struct DISPLAY_ADAPTER_NODE *next;
- struct DISPLAY_ADAPTER_NODE *previous;
- DISPLAY_ADAPTER body;
-} DISPLAY_ADAPTER_NODE;
-
-typedef struct __unaligned { // decompiled
- DISPLAY_ADAPTER_NODE *head;
- DISPLAY_ADAPTER_NODE *tail;
- DWORD count;
-} DISPLAY_ADAPTER_LIST;
-
-typedef struct __unaligned { // decompiled
- GUID *adapter_guid_ptr;
- GUID adapter_guid;
- STRING_FLAGGED description;
- STRING_FLAGGED module;
-} SOUND_ADAPTER;
-
-typedef struct __unaligned SOUND_ADAPTER_NODE { // decompiled
- struct SOUND_ADAPTER_NODE *next;
- struct SOUND_ADAPTER_NODE *previous;
- SOUND_ADAPTER body;
-} SOUND_ADAPTER_NODE;
-
-typedef struct __unaligned { // decompiled
- SOUND_ADAPTER_NODE *head;
- SOUND_ADAPTER_NODE *tail;
- DWORD count;
-} SOUND_ADAPTER_LIST;
-
-typedef struct __unaligned { // decompiled
- GUID *lpJoystickGuid;
- GUID joystickGuid;
- STRING_FLAGGED productName;
- STRING_FLAGGED instanceName;
-} JOYSTICK;
-
-typedef struct __unaligned JOYSTICK_NODE { // decompiled
- struct JOYSTICK_NODE *next;
- struct JOYSTICK_NODE *previous;
- JOYSTICK body;
-} JOYSTICK_NODE;
-
-typedef struct __unaligned JOYSTICK_LIST { // decompiled
- struct JOYSTICK_LIST *head;
- struct JOYSTICK_LIST *tail;
- DWORD count;
-} JOYSTICK_LIST;
-
-typedef enum {
- RM_UNKNOWN = 0,
- RM_SOFTWARE = 1,
- RM_HARDWARE = 2,
-} RENDER_MODE;
-
-typedef enum {
- AM_4_3 = 0,
- AM_16_9 = 1,
- AM_ANY = 2,
-} ASPECT_MODE;
-
-typedef enum {
- TAM_DISABLED = 0,
- TAM_BILINEAR_ONLY = 1,
- TAM_ALWAYS = 2,
-} TEXEL_ADJUST_MODE;
-
-typedef struct __unaligned { // decompiled
- DISPLAY_ADAPTER_NODE *preferred_display_adapter;
- SOUND_ADAPTER_NODE *preferred_sound_adapter;
- JOYSTICK_NODE *preferred_joystick;
- const DISPLAY_MODE_NODE *video_mode;
- RENDER_MODE render_mode;
- int32_t window_width;
- int32_t window_height;
- ASPECT_MODE aspect_mode;
- bool perspective_correct;
- bool dither;
- bool zbuffer;
- bool bilinear_filtering;
- bool triple_buffering; // TODO: remove this option
- bool fullscreen;
- bool sound_enabled;
- bool lara_mic; // TODO: remove this option
- bool joystick_enabled;
- bool disable_16bit_textures;
- bool dont_sort_primitives;
- bool flip_broken;
- TEXEL_ADJUST_MODE texel_adjust_mode;
- int32_t nearest_adjustment;
- int32_t linear_adjustment;
-} APP_SETTINGS;
-
-typedef struct __unaligned { // decompiled
- LPDDS sys_mem_surface;
- LPDDS vid_mem_surface;
- LPDIRECTDRAWPALETTE palette;
- LPDIRECT3DTEXTURE2 texture_3d;
- HWR_TEXTURE_HANDLE tex_handle;
- int32_t width;
- int32_t height;
- int32_t status;
-} TEXPAGE_DESC;
-
-typedef struct __unaligned {
- union {
- uint8_t red;
- uint8_t r;
- };
- union {
- uint8_t green;
- uint8_t g;
- };
- union {
- uint8_t blue;
- uint8_t b;
- };
-} RGB_888;
-
-typedef struct __unaligned {
- union {
- uint8_t red;
- uint8_t r;
- };
- union {
- uint8_t green;
- uint8_t g;
- };
- union {
- uint8_t blue;
- uint8_t b;
- };
- union {
- uint8_t alpha;
- uint8_t a;
- };
-} RGBA_8888;
-
-typedef struct { // decompiled
- struct {
- uint32_t r;
- uint32_t g;
- uint32_t b;
- uint32_t a;
- } mask, depth, offset;
-} COLOR_BIT_MASKS;
-
-typedef struct __unaligned { // decompiled
- D3DCOLOR clr[4][4];
-} GOURAUD_FILL;
-
-typedef struct __unaligned { // decompiled
- D3DCOLOR clr[9];
-} GOURAUD_OUTLINE;
-
-typedef struct __unaligned {
- uint8_t index[256];
-} DEPTHQ_ENTRY;
-
-typedef struct __unaligned {
- uint8_t index[32];
-} GOURAUD_ENTRY;
-
-typedef struct __unaligned {
- XYZ_32 pos;
- XYZ_16 rot;
-} PHD_3DPOS;
-
-typedef struct __unaligned {
- int32_t x;
- int32_t y;
- int32_t z;
- int32_t r;
-} SPHERE;
-
-typedef struct __unaligned { // decompiled
- union {
- uint32_t all;
- struct {
- uint32_t active: 1;
- uint32_t flash: 1;
- uint32_t rotate_h: 1;
- uint32_t rotate_v: 1;
- uint32_t centre_h: 1;
- uint32_t centre_v: 1;
- uint32_t hide: 1;
- uint32_t right: 1;
- uint32_t bottom: 1;
- uint32_t background: 1;
- uint32_t outline: 1;
- uint32_t multiline: 1;
- uint32_t manual_draw: 1; // not present in the OG
- };
- } flags;
- uint16_t text_flags;
- uint16_t bgnd_flags;
- uint16_t outl_flags;
- XYZ_16 pos;
- int16_t letter_spacing;
- int16_t word_spacing;
- struct {
- int16_t rate;
- int16_t count;
- } flash;
- int16_t bgnd_color;
- const uint16_t *bgnd_gour;
- int16_t outl_color;
- const uint16_t *outl_gour;
- struct {
- int16_t x;
- int16_t y;
- } bgnd_size;
- XYZ_16 bgnd_off;
- struct {
- int32_t h;
- int32_t v;
- } scale;
- char *content;
-} TEXTSTRING;
-
-typedef struct __unaligned {
- float xv;
- float yv;
- float zv;
- float rhw;
- float xs;
- float ys;
- int16_t clip;
- int16_t g;
- int16_t u;
- int16_t v;
-} PHD_VBUF;
-
-typedef struct __unaligned {
- uint16_t u;
- uint16_t v;
-} PHD_UV;
-
-typedef struct __unaligned { // decompiled
- uint16_t draw_type;
- uint16_t tex_page;
- PHD_UV uv[4];
-} PHD_TEXTURE;
-
-typedef struct __unaligned {
- uint16_t tex_page;
- uint16_t offset;
- uint16_t width;
- uint16_t height;
- int16_t x0;
- int16_t y0;
- int16_t x1;
- int16_t y1;
-} PHD_SPRITE;
-
-typedef enum {
- SHAPE_SPRITE = 1,
- SHAPE_LINE = 2,
- SHAPE_BOX = 3,
- SHAPE_FBOX = 4,
-} SHAPE;
-
-typedef enum {
- SPRF_RGB = 0x00FFFFFF,
- SPRF_ABS = 0x01000000,
- SPRF_SEMITRANS = 0x02000000,
- SPRF_SCALE = 0x04000000,
- SPRF_SHADE = 0x08000000,
- SPRF_TINT = 0x10000000,
- SPRF_BLEND_ADD = 0x20000000,
- SPRF_BLEND_SUB = 0x40000000,
- SPRF_BLEND_QRT = SPRF_BLEND_ADD | SPRF_BLEND_SUB,
- SPRF_BLEND = SPRF_BLEND_QRT,
- SPRF_ITEM = 0x80000000,
-} SPRITE_FLAG;
-
-typedef struct __unaligned {
- float xv;
- float yv;
- float zv;
- float rhw;
- float xs;
- float ys;
- float u;
- float v;
- float g;
-} POINT_INFO;
-
-typedef struct __unaligned { // decompiled
- float x;
- float y;
- float rhw;
- float u;
- float v;
- float g;
-} VERTEX_INFO;
-
-typedef enum { // decompiled
- INPUT_ROLE_FORWARD = 0,
- INPUT_ROLE_BACK = 1,
- INPUT_ROLE_LEFT = 2,
- INPUT_ROLE_RIGHT = 3,
- INPUT_ROLE_STEP_L = 4,
- INPUT_ROLE_STEP_R = 5,
- INPUT_ROLE_SLOW = 6,
- INPUT_ROLE_JUMP = 7,
- INPUT_ROLE_ACTION = 8,
- INPUT_ROLE_DRAW = 9,
- INPUT_ROLE_USE_FLARE = 10,
- INPUT_ROLE_LOOK = 11,
- INPUT_ROLE_ROLL = 12,
- INPUT_ROLE_OPTION = 13,
-} INPUT_ROLE;
-
-typedef struct __unaligned {
- uint16_t no_selector : 1;
- uint16_t ready : 1; // not present in the OG
- uint16_t pad : 14;
- uint16_t items_count;
- uint16_t selected;
- uint16_t visible_count;
- uint16_t line_offset;
- uint16_t line_old_offset;
- uint16_t pix_width;
- uint16_t line_height;
- int16_t x_pos;
- int16_t y_pos;
- int16_t z_pos;
- uint16_t item_string_len;
- char *pitem_strings1;
- char *pitem_strings2;
- uint32_t *pitem_flags1;
- uint32_t *pitem_flags2;
- uint32_t heading_flags1;
- uint32_t heading_flags2;
- uint32_t background_flags;
- uint32_t moreup_flags;
- uint32_t moredown_flags;
- uint32_t item_flags1[24]; // MAX_REQUESTER_ITEMS
- uint32_t item_flags2[24]; // MAX_REQUESTER_ITEMS
- TEXTSTRING *heading_text1;
- TEXTSTRING *heading_text2;
- TEXTSTRING *background_text;
- TEXTSTRING *moreup_text;
- TEXTSTRING *moredown_text;
- TEXTSTRING *item_texts1[24]; // MAX_REQUESTER_ITEMS
- TEXTSTRING *item_texts2[24]; // MAX_REQUESTER_ITEMS
- char heading_string1[32];
- char heading_string2[32];
- uint32_t render_width;
- uint32_t render_height;
-} REQUEST_INFO;
-
-typedef enum { // decompiled
- POLY_GTMAP = 0,
- POLY_WGTMAP = 1,
- POLY_GTMAP_PERSP = 2,
- POLY_WGTMAP_PERSP = 3,
- POLY_LINE = 4,
- POLY_FLAT = 5,
- POLY_GOURAUD = 6,
- POLY_TRANS = 7,
- POLY_SPRITE = 8,
- POLY_HWR_GTMAP = 9,
- POLY_HWR_WGTMAP = 10,
- POLY_HWR_GOURAUD = 11,
- POLY_HWR_LINE = 12,
- POLY_HWR_TRANS = 13,
-} POLY_TYPE;
-
-typedef struct __unaligned {
- uint32_t best_time[10];
- uint32_t best_finish[10];
- uint32_t finish_count;
-} ASSAULT_STATS;
-
-typedef struct __unaligned {
- int32_t _0;
- int32_t _1;
-} SORT_ITEM;
-
-typedef enum { // decompiled
- ST_AVG_Z = 0,
- ST_MAX_Z = 1,
- ST_FAR_Z = 2,
-} SORT_TYPE;
-
-typedef enum {
- DRAW_OPAQUE = 0,
- DRAW_COLOR_KEY = 1,
-} DRAW_TYPE;
-
-typedef struct __unaligned { // decompiled
- int32_t floor;
- int32_t ceiling;
- int32_t type;
-} COLL_SIDE;
-
-typedef struct __unaligned { // decompiled
- COLL_SIDE side_mid;
- COLL_SIDE side_front;
- COLL_SIDE side_left;
- COLL_SIDE side_right;
- int32_t radius;
- int32_t bad_pos;
- int32_t bad_neg;
- int32_t bad_ceiling;
- XYZ_32 shift;
- XYZ_32 old;
- int16_t old_anim_state;
- int16_t old_anim_num;
- int16_t old_frame_num;
- int16_t facing;
- int16_t quadrant;
- int16_t coll_type;
- int16_t *trigger;
- int8_t x_tilt;
- int8_t z_tilt;
- int8_t hit_by_baddie;
- int8_t hit_static;
- uint16_t slopes_are_walls: 1; // 0x01 1
- uint16_t slopes_are_pits: 1; // 0x02 2
- uint16_t lava_is_pit: 1; // 0x04 4
- uint16_t enable_baddie_push: 1; // 0x08 8
- uint16_t enable_spaz: 1; // 0x10 16
- uint16_t hit_ceiling: 1; // 0x20 32
- uint16_t pad: 10;
-} COLL_INFO;
-
-typedef struct __unaligned { // decompiled
- int16_t min_x;
- int16_t max_x;
- int16_t min_y;
- int16_t max_y;
- int16_t min_z;
- int16_t max_z;
-} BOUNDS_16;
-
-typedef struct __unaligned {
- int16_t mesh_idx;
- uint16_t flags;
- BOUNDS_16 draw_bounds;
- BOUNDS_16 collision_bounds;
-} STATIC_INFO;
-
-typedef struct __unaligned { // decompiled
- int32_t floor;
- uint32_t touch_bits;
- uint32_t mesh_bits;
- int16_t object_id;
- int16_t current_anim_state;
- int16_t goal_anim_state;
- int16_t required_anim_state;
- int16_t anim_num;
- int16_t frame_num;
- int16_t room_num;
- int16_t next_item;
- int16_t next_active;
- int16_t speed;
- int16_t fall_speed;
- int16_t hit_points;
- int16_t box_num;
- int16_t timer;
- uint16_t flags;
- int16_t shade_1;
- int16_t shade_2;
- int16_t carried_item;
- void *data;
- union {
- struct {
- XYZ_32 pos;
- XYZ_16 rot;
- };
- PHD_3DPOS pos_full; // TODO: stick to pos and rot
- };
- uint16_t active: 1; // 0x0001
- uint16_t status: 2; // 0x0002…0x0004
- uint16_t gravity: 1; // 0x0008
- uint16_t hit_status: 1; // 0x0010
- uint16_t collidable: 1; // 0x0020
- uint16_t looked_at: 1; // 0x0040
- uint16_t dynamic_light: 1; // 0x0080
- uint16_t killed: 1; // 0x0100
- uint16_t pad: 7; // 0x0200…0x8000
-} ITEM;
-
-typedef struct __unaligned {
- uint32_t timer;
- uint32_t shots;
- uint32_t hits;
- uint32_t distance;
- uint16_t kills;
- uint8_t secrets;
- uint8_t medipacks;
-} STATISTICS_INFO;
-
-typedef struct __unaligned {
- uint16_t pistol_ammo;
- uint16_t magnum_ammo;
- uint16_t uzi_ammo;
- uint16_t shotgun_ammo;
- uint16_t m16_ammo;
- uint16_t grenade_ammo;
- uint16_t harpoon_ammo;
- uint8_t small_medipacks;
- uint8_t large_medipacks;
- uint8_t reserved1;
- uint8_t flares;
- uint8_t gun_status;
- uint8_t gun_type;
- uint16_t available: 1; // 0x01 1
- uint16_t has_pistols: 1; // 0x02 2
- uint16_t has_magnums: 1; // 0x04 4
- uint16_t has_uzis: 1; // 0x08 8
- uint16_t has_shotgun: 1; // 0x10 16
- uint16_t has_m16: 1; // 0x20 32
- uint16_t has_grenade: 1; // 0x40 64
- uint16_t has_harpoon: 1; // 0x80 128
- uint16_t pad : 8;
- uint16_t reserved2;
- STATISTICS_INFO statistics;
-} START_INFO;
-
-typedef struct __unaligned {
- START_INFO start[24];
- STATISTICS_INFO statistics;
- int16_t current_level;
- bool bonus_flag;
- uint8_t num_pickup[2];
- uint8_t num_puzzle[4];
- uint8_t num_key[4];
- uint16_t reserved;
- char buffer[6272]; // MAX_SG_BUFFER_SIZE
-} SAVEGAME_INFO;
-
-typedef struct __unaligned { // decompiled
- uint16_t idx;
- int16_t box;
- uint8_t pit_room;
- int8_t floor;
- uint8_t sky_room;
- int8_t ceiling;
-} SECTOR;
-
-typedef struct __unaligned {
- int16_t lock_angles[4];
- int16_t left_angles[4];
- int16_t right_angles[4];
- int16_t aim_speed;
- int16_t shot_accuracy;
- int32_t gun_height;
- int32_t damage;
- int32_t target_dist;
- int16_t recoil_frame;
- int16_t flash_time;
- int16_t sample_num;
-} WEAPON_INFO;
-
-typedef struct __unaligned { // decompiled
- XYZ_32 pos;
- XYZ_16 rot;
- int16_t room_num;
- int16_t object_id;
- int16_t next_free;
- int16_t next_active;
- int16_t speed;
- int16_t fall_speed;
- int16_t frame_num;
- int16_t counter;
- int16_t shade;
-} FX;
-
-typedef struct __unaligned {
- int16_t zone_num;
- int16_t enemy_zone_num;
- int32_t distance;
- int32_t ahead;
- int32_t bite;
- int16_t angle;
- int16_t enemy_facing;
-} AI_INFO;
-
-typedef struct __unaligned { // decompiled
- int16_t exit_box;
- uint16_t search_num;
- int16_t next_expansion;
- int16_t box_num;
-} BOX_NODE;
-
-typedef struct __unaligned { // decompiled
- BOX_NODE *node;
- int16_t head;
- int16_t tail;
- uint16_t search_num;
- uint16_t block_mask;
- int16_t step;
- int16_t drop;
- int16_t fly;
- int16_t zone_count;
- int16_t target_box;
- int16_t required_box;
- XYZ_32 target;
-} LOT_INFO;
-
-typedef enum { // decompiled
- GFL_NO_LEVEL = -1,
- GFL_TITLE = 0,
- GFL_NORMAL = 1,
- GFL_SAVED = 2,
- GFL_DEMO = 3,
- GFL_CUTSCENE = 4,
- GFL_STORY = 5,
- GFL_QUIET = 6,
- GFL_MID_STORY = 7,
-} GAMEFLOW_LEVEL_TYPE;
-
-typedef struct __unaligned {
- int16_t timer;
- int16_t sprite;
-} PICKUP_INFO;
-
-typedef struct __unaligned {
- int16_t shape;
- XYZ_16 pos;
- int32_t param1;
- int32_t param2;
- void *grdptr;
- int16_t sprite_num;
-} INVENTORY_SPRITE;
-
-typedef struct __unaligned {
- char *string;
- int16_t object_id;
- int16_t frames_total;
- int16_t current_frame;
- int16_t goal_frame;
- int16_t open_frame;
- int16_t anim_direction;
- int16_t anim_speed;
- int16_t anim_count;
- int16_t x_rot_pt_sel;
- int16_t x_rot_pt;
- int16_t x_rot_sel;
- int16_t x_rot_nosel;
- int16_t x_rot;
- int16_t y_rot_sel;
- int16_t y_rot;
- int32_t y_trans_sel;
- int32_t y_trans;
- int32_t z_trans_sel;
- int32_t z_trans;
- uint32_t meshes_sel;
- uint32_t meshes_drawn;
- int16_t inv_pos;
- INVENTORY_SPRITE **sprite_list;
- int32_t reserved[4];
-} INVENTORY_ITEM;
-
-typedef enum {
- RNG_OPENING = 0,
- RNG_OPEN = 1,
- RNG_CLOSING = 2,
- RNG_MAIN2OPTION = 3,
- RNG_MAIN2KEYS = 4,
- RNG_KEYS2MAIN = 5,
- RNG_OPTION2MAIN = 6,
- RNG_SELECTING = 7,
- RNG_SELECTED = 8,
- RNG_DESELECTING = 9,
- RNG_DESELECT = 10,
- RNG_CLOSING_ITEM = 11,
- RNG_EXITING_INVENTORY = 12,
- RNG_DONE = 13,
-} RING_STATUS;
-
-typedef struct __unaligned {
- int16_t count;
- int16_t status;
- int16_t status_target;
- int16_t radius_target;
- int16_t radius_rate;
- int16_t camera_y_target;
- int16_t camera_y_rate;
- int16_t camera_pitch_target;
- int16_t camera_pitch_rate;
- int16_t rotate_target;
- int16_t rotate_rate;
- int16_t item_pt_x_rot_target;
- int16_t item_pt_x_rot_rate;
- int16_t item_x_rot_target;
- int16_t item_x_rot_rate;
- int32_t item_y_trans_target;
- int32_t item_y_trans_rate;
- int32_t item_z_trans_target;
- int32_t item_z_trans_rate;
- int32_t misc;
-} IMOTION_INFO;
-
-typedef enum {
- PM_SPINE = 1,
- PM_FRONT = 2,
- PM_IN_FRONT = 4,
- PM_PAGE_2 = 8,
- PM_BACK = 16,
- PM_IN_BACK = 32,
- PM_PAGE_1 = 64,
- PM_COMMON = PM_SPINE | PM_BACK | PM_FRONT,
-} PASS_MESH;
-
-typedef struct __unaligned {
- INVENTORY_ITEM **list;
- int16_t type;
- int16_t radius;
- int16_t camera_pitch;
- int16_t rotating;
- int16_t rot_count;
- int16_t current_object;
- int16_t target_object;
- int16_t number_of_objects;
- int16_t angle_adder;
- int16_t rot_adder;
- int16_t rot_adder_l;
- int16_t rot_adder_r;
- PHD_3DPOS ring_pos;
- PHD_3DPOS camera;
- XYZ_32 light;
- IMOTION_INFO *imo;
-} RING_INFO;
-
-typedef enum {
- GFE_PICTURE = 0,
- GFE_LIST_START = 1,
- GFE_LIST_END = 2,
- GFE_PLAY_FMV = 3,
- GFE_START_LEVEL = 4,
- GFE_CUTSCENE = 5,
- GFE_LEVEL_COMPLETE = 6,
- GFE_DEMO_PLAY = 7,
- GFE_JUMP_TO_SEQ = 8,
- GFE_END_SEQ = 9,
- GFE_SET_TRACK = 10,
- GFE_SUNSET = 11,
- GFE_LOADING_PIC = 12,
- GFE_DEADLY_WATER = 13,
- GFE_REMOVE_WEAPONS = 14,
- GFE_GAME_COMPLETE = 15,
- GFE_CUT_ANGLE = 16,
- GFE_NO_FLOOR = 17,
- GFE_ADD_TO_INV = 18,
- GFE_START_ANIM = 19,
- GFE_NUM_SECRETS = 20,
- GFE_KILL_TO_COMPLETE = 21,
- GFE_REMOVE_AMMO = 22,
-} GF_EVENTS;
-
-typedef enum { // decompiled
- MOOD_BORED = 0,
- MOOD_ATTACK = 1,
- MOOD_ESCAPE = 2,
- MOOD_STALK = 3,
-} MOOD_TYPE;
-
-typedef enum {
- TARGET_NONE = 0,
- TARGET_PRIMARY = 1,
- TARGET_SECONDARY = 2,
-} TARGET_TYPE;
-
-typedef struct __unaligned {
- XYZ_32 pos;
- int32_t mesh_num;
-} BITE;
-
-typedef struct __unaligned { // decompiled
- int16_t *frame_ptr;
- int16_t interpolation;
- int16_t current_anim_state;
- int32_t velocity;
- int32_t acceleration;
- int16_t frame_base;
- int16_t frame_end;
- int16_t jump_anim_num;
- int16_t jump_frame_num;
- int16_t num_changes;
- int16_t change_idx;
- int16_t num_commands;
- int16_t command_idx;
-} ANIM;
-
-typedef struct { // decompiled
- int16_t goal_anim_state;
- int16_t num_ranges;
- int16_t range_idx;
-} ANIM_CHANGE;
-
-typedef struct { // decompiled
- int16_t start_frame;
- int16_t end_frame;
- int16_t link_anim_num;
- int16_t link_frame_num;
-} ANIM_RANGE;
-
-typedef struct __unaligned { // decompiled
- int16_t room;
- XYZ_16 normal;
- XYZ_16 vertex[4];
-} PORTAL;
-
-typedef struct __unaligned { // decompiled
- int16_t count;
- PORTAL portal[];
-} PORTALS;
-
-typedef struct __unaligned { // decompiled
- int32_t x;
- int32_t y;
- int32_t z;
- int16_t intensity_1;
- int16_t intensity_2;
- int32_t falloff_1;
- int32_t falloff_2;
-} LIGHT;
-
-typedef struct __unaligned { // decompiled
- XYZ_16 pos;
- struct __unaligned {
- int16_t y;
- } rot;
- int16_t shade_1;
- int16_t shade_2;
- int16_t static_num;
-} MESH;
-
-typedef enum {
- RF_UNDERWATER = 0x01,
- RF_OUTSIDE = 0x08,
- RF_DYNAMIC_LIT = 0x10,
- RF_NOT_INSIDE = 0x20,
- RF_INSIDE = 0x40,
-} ROOM_FLAG;
-
-typedef struct __unaligned {
- SECTOR *sector;
- SECTOR old_sector;
- int16_t block;
-} DOORPOS_DATA;
-
-typedef struct __unaligned { // decompiled
- DOORPOS_DATA d1;
- DOORPOS_DATA d1flip;
- DOORPOS_DATA d2;
- DOORPOS_DATA d2flip;
-} DOOR_DATA;
-
-typedef struct __unaligned { // decompiled
- int16_t *data;
- PORTALS *portals;
- SECTOR *sectors;
- LIGHT *lights;
- MESH *meshes;
- XYZ_32 pos;
- int32_t min_floor;
- int32_t max_ceiling;
- struct __unaligned {
- int16_t z;
- int16_t x;
- } size;
- int16_t ambient_1;
- int16_t ambient_2;
- int16_t light_mode;
- int16_t num_lights;
- int16_t num_meshes;
- int16_t bound_left;
- int16_t bound_right;
- int16_t bound_top;
- int16_t bound_bottom;
- uint16_t bound_active;
- int16_t test_left;
- int16_t test_right;
- int16_t test_top;
- int16_t test_bottom;
- int16_t item_num;
- int16_t fx_num;
- int16_t flipped_room;
- uint16_t flags;
-} ROOM;
-
-typedef struct __unaligned { // decompiled
- int16_t head_rotation;
- int16_t neck_rotation;
- int16_t maximum_turn;
- int16_t flags;
- int16_t item_num;
- MOOD_TYPE mood;
- LOT_INFO lot;
- XYZ_32 target;
- ITEM *enemy;
-} CREATURE;
-
-typedef enum {
- CAM_CHASE = 0,
- CAM_FIXED = 1,
- CAM_LOOK = 2,
- CAM_COMBAT = 3,
- CAM_CINEMATIC = 4,
- CAM_HEAVY = 5,
-} CAMERA_TYPE;
-
-typedef struct __unaligned {
- union {
- XYZ_32 pos;
- struct {
- int32_t x;
- int32_t y;
- int32_t z;
- };
- };
- int16_t room_num;
- int16_t box_num;
-} GAME_VECTOR;
-
-typedef struct __unaligned {
- union {
- struct __unaligned {
- int32_t x;
- int32_t y;
- int32_t z;
- };
- XYZ_32 pos;
- };
- int16_t data;
- int16_t flags;
-} OBJECT_VECTOR;
-
-typedef struct __unaligned {
- uint8_t left;
- uint8_t right;
- uint8_t top;
- uint8_t bottom;
- int16_t height;
- int16_t overlap_index;
-} BOX_INFO;
-
-typedef enum {
- LV_GYM = 0,
- LV_FIRST = 1,
-} LEVEL_TYPE;
-
-typedef enum {
- RT_MAIN = 0,
- RT_OPTION = 1,
- RT_KEYS = 2,
-} RING_TYPE;
-
-typedef enum {
- INV_COLOR_BLACK = 0,
- INV_COLOR_GRAY = 1,
- INV_COLOR_WHITE = 2,
- INV_COLOR_RED = 3,
- INV_COLOR_ORANGE = 4,
- INV_COLOR_YELLOW = 5,
- INV_COLOR_DARK_GREEN = 12,
- INV_COLOR_GREEN = 13,
- INV_COLOR_CYAN = 14,
- INV_COLOR_BLUE = 15,
- INV_COLOR_MAGENTA = 16,
- INV_COLOR_NUMBER_OF = 17,
-} INV_COLOR;
-
-typedef enum {
- INV_GAME_MODE = 0,
- INV_TITLE_MODE = 1,
- INV_KEYS_MODE = 2,
- INV_SAVE_MODE = 3,
- INV_LOAD_MODE = 4,
- INV_DEATH_MODE = 5,
-} INVENTORY_MODE;
-
-typedef enum {
- GAMEMODE_NOT_IN_GAME,
- GAMEMODE_IN_GAME,
- GAMEMODE_IN_DEMO,
- GAMEMODE_IN_CUTSCENE
-} GAMEMODE;
-
-typedef enum {
- TRAP_SET = 0,
- TRAP_ACTIVATE = 1,
- TRAP_WORKING = 2,
- TRAP_FINISHED = 3,
-} TRAP_ANIM;
-
-typedef enum { // decompiled
- DOOR_STATE_CLOSED = 0,
- DOOR_STATE_OPEN = 1,
-} DOOR_STATE;
-
-typedef enum {
- GFD_START_GAME = 0x0000,
- GFD_START_SAVED_GAME = 0x0100,
- GFD_START_CINE = 0x0200,
- GFD_START_FMV = 0x0300,
- GFD_START_DEMO = 0x0400,
- GFD_EXIT_TO_TITLE = 0x0500,
- GFD_LEVEL_COMPLETE = 0x0600,
- GFD_EXIT_GAME = 0x0700,
- GFD_EXIT_TO_OPTION = 0x0800,
- GFD_TITLE_DESELECT = 0x0900,
- GFD_OVERRIDE = 0x0A00,
-} GAME_FLOW_DIR;
-
-typedef struct __unaligned {
- int32_t first_option;
- int32_t title_replace;
- int32_t on_death_demo_mode;
- int32_t on_death_in_game;
- int32_t no_input_time;
- int32_t on_demo_interrupt;
- int32_t on_demo_end;
- uint16_t reserved1[18];
- uint16_t num_levels;
- uint16_t num_pictures;
- uint16_t num_titles;
- uint16_t num_fmvs;
- uint16_t num_cutscenes;
- uint16_t num_demos;
- uint16_t title_track;
- int16_t single_level;
- uint16_t reserved2[16];
-
- uint16_t demo_version: 1; // 0x0001
- uint16_t title_disabled: 1; // 0x0002
- uint16_t cheat_mode_check_disabled: 1; // 0x0004
- uint16_t no_input_timeout: 1; // 0x0008
- uint16_t load_save_disabled: 1; // 0x0010
- uint16_t screen_sizing_disabled: 1; // 0x0020
- uint16_t lockout_option_ring: 1; // 0x0040
- uint16_t dozy_cheat_enabled: 1; // 0x0080
- uint16_t cyphered_strings: 1; // 0x0100
- uint16_t gym_enabled: 1; // 0x0200
- uint16_t play_any_level: 1; // 0x0400
- uint16_t cheat_enable: 1; // 0x0800
-
- uint16_t reserved3[3];
- uint8_t cypher_code;
- uint8_t language;
- uint8_t secret_track;
- uint8_t level_complete_track;
- uint16_t reserved4[2];
-} GAME_FLOW;
-
-typedef struct __unaligned { // decompiled
- int16_t mesh_count;
- int16_t mesh_idx;
- int32_t bone_idx;
- int16_t *frame_base; // TODO: make me FRAME_INFO
-
- void (*initialise)(int16_t item_num);
- void (*control)(int16_t item_num);
- void (*floor)(
- const ITEM *item, int32_t x, int32_t y, int32_t z,
- int32_t *out_height);
- void (*ceiling)(
- const ITEM *item, int32_t x, int32_t y, int32_t z,
- int32_t *out_height);
- void (*draw_routine)(const ITEM *item);
- void (*collision)(int16_t
- item_num, ITEM *lara_item, COLL_INFO *coll);
-
- int16_t anim_idx;
- int16_t hit_points;
- int16_t pivot_length;
- int16_t radius;
- int16_t shadow_size;
-
- union {
- uint16_t flags;
- struct {
- uint16_t loaded: 1; // 0x01 1
- uint16_t intelligent: 1; // 0x02 2
- uint16_t save_position: 1; // 0x04 4
- uint16_t save_hitpoints: 1; // 0x08 8
- uint16_t save_flags: 1; // 0x10 16
- uint16_t save_anim: 1; // 0x20 32
- uint16_t semi_transparent: 1; // 0x40 64
- uint16_t water_creature: 1; // 0x80 128
- uint16_t pad : 8;
- };
- };
-} OBJECT;
-
-typedef struct __unaligned {
- GAME_VECTOR pos;
- GAME_VECTOR target;
- CAMERA_TYPE type;
- int32_t shift;
- uint32_t flags;
- int32_t fixed_camera;
- int32_t num_frames;
- int32_t bounce;
- int32_t underwater;
- int32_t target_distance;
- int32_t target_square;
- int16_t target_angle;
- int16_t actual_angle;
- int16_t target_elevation;
- int16_t box;
- int16_t num;
- int16_t last;
- int16_t timer;
- int16_t speed;
- ITEM *item;
- ITEM *last_item;
- OBJECT_VECTOR *fixed;
- int32_t is_lara_mic; // TODO: remove this - now stored in g_Config
- XYZ_32 mic_pos;
-} CAMERA_INFO;
-
-typedef struct __unaligned { // decompiled
- int16_t *frame_base;
- int16_t frame_num;
- int16_t anim_num;
- int16_t lock;
- struct __unaligned {
- int16_t y;
- int16_t x;
- int16_t z;
- } rot; // TODO: XYZ_16
- int16_t flash_gun;
-} LARA_ARM;
-
-typedef struct __unaligned { // decompiled
- int32_t ammo;
-} AMMO_INFO;
-
-typedef enum { // decompiled
- LWS_ABOVE_WATER = 0,
- LWS_UNDERWATER = 1,
- LWS_SURFACE = 2,
- LWS_CHEAT = 3,
- LWS_WADE = 4,
-} LARA_WATER_STATE;
-
-typedef struct __unaligned { // decompiled
- int16_t item_num;
- int16_t gun_status;
- int16_t gun_type;
- int16_t request_gun_type;
- int16_t last_gun_type;
- int16_t calc_fall_speed;
- int16_t water_status;
- int16_t climb_status;
- int16_t pose_count;
- int16_t hit_frame;
- int16_t hit_direction;
- int16_t air;
- int16_t dive_count;
- int16_t death_timer;
- int16_t current_active;
- int16_t spaz_effect_count;
- int16_t flare_age;
- int16_t skidoo;
- int16_t weapon_item;
- int16_t back_gun;
- int16_t flare_frame;
- union {
- uint16_t flags;
- struct ___unaligned {
- uint16_t flare_control_left: 1; // 0x01 1
- uint16_t flare_control_right: 1; // 0x02 2
- uint16_t extra_anim: 1; // 0x04 4
- uint16_t look: 1; // 0x08 8
- uint16_t burn: 1; // 0x10 16
- uint16_t pad: 11;
- };
- };
- int32_t water_surface_dist;
- XYZ_32 last_pos;
- FX *spaz_effect;
- uint32_t mesh_effects;
- int16_t *mesh_ptrs[15];
- ITEM *target;
- int16_t target_angles[2];
- int16_t turn_rate;
- int16_t move_angle;
- int16_t head_y_rot;
- int16_t head_x_rot;
- int16_t head_z_rot;
- int16_t torso_y_rot;
- int16_t torso_x_rot;
- int16_t torso_z_rot;
- LARA_ARM left_arm;
- LARA_ARM right_arm;
- AMMO_INFO pistol_ammo;
- AMMO_INFO magnum_ammo;
- AMMO_INFO uzi_ammo;
- AMMO_INFO shotgun_ammo;
- AMMO_INFO harpoon_ammo;
- AMMO_INFO grenade_ammo;
- AMMO_INFO m16_ammo;
- CREATURE *creature;
-} LARA_INFO;
-
-typedef enum { // decompiled
- SFX_LARA_FEET = 0,
- SFX_LARA_CLIMB_2 = 1,
- SFX_LARA_NO = 2,
- SFX_LARA_SLIPPING = 3,
- SFX_LARA_LAND = 4,
- SFX_LARA_CLIMB_1 = 5,
- SFX_LARA_DRAW = 6,
- SFX_LARA_HOLSTER = 7,
- SFX_LARA_FIRE = 8,
- SFX_LARA_RELOAD = 9,
- SFX_LARA_RICOCHET = 10,
- SFX_LARA_FLARE_IGNITE = 11,
- SFX_LARA_FLARE_BURN = 12,
- SFX_LARA_HARPOON_FIRE = 15,
- SFX_LARA_HARPOON_LOAD = 16,
- SFX_LARA_WET_FEET = 17,
- SFX_LARA_WADE = 18,
- SFX_LARA_TREAD = 20,
- SFX_LARA_FIRE_MAGNUMS = 21,
- SFX_LARA_HARPOON_LOAD_WATER = 22,
- SFX_LARA_HARPOON_FIRE_WATER = 23,
- SFX_MASSIVE_CRASH = 24,
- SFX_PUSH_SWITCH = 25,
- SFX_LARA_CLIMB_3 = 26,
- SFX_LARA_BODYSL = 27,
- SFX_LARA_SHIMMY = 28,
- SFX_LARA_JUMP = 29,
- SFX_LARA_FALL = 30,
- SFX_LARA_INJURY = 31,
- SFX_LARA_ROLL = 32,
- SFX_LARA_SPLASH = 33,
- SFX_LARA_GETOUT = 34,
- SFX_LARA_SWIM = 35,
- SFX_LARA_BREATH = 36,
- SFX_LARA_BUBBLES = 37,
- SFX_LARA_SWITCH = 38,
- SFX_LARA_KEY = 39,
- SFX_LARA_OBJECT = 40,
- SFX_LARA_GENERAL_DEATH = 41,
- SFX_LARA_KNEES_DEATH = 42,
- SFX_LARA_UZI_FIRE = 43,
- SFX_LARA_UZI_STOP = 44,
- SFX_LARA_SHOTGUN = 45,
- SFX_LARA_BLOCK_PUSH_1 = 46,
- SFX_LARA_BLOCK_PUSH_2 = 47,
- SFX_CLICK = 48,
- SFX_LARA_HIT = 49,
- SFX_LARA_BULLETHIT = 50,
- SFX_LARA_BLKPULL = 51,
- SFX_LARA_FLOATING = 52,
- SFX_LARA_FALLDETH = 53,
- SFX_LARA_GRABHAND = 54,
- SFX_LARA_GRABBODY = 55,
- SFX_LARA_GRABFEET = 56,
- SFX_LARA_SWITCHUP = 57,
- SFX_GLASS_BREAK = 58,
- SFX_WATER_LOOP = 59,
- SFX_UNDERWATER = 60,
- SFX_UNDERWATER_SWITCH = 61,
- SFX_LARA_PICKUP = 62,
- SFX_BLOCK_SOUND = 63,
- SFX_DOOR = 64,
- SFX_SWING = 65,
- SFX_ROCK_FALL_CRUMBLE = 66,
- SFX_ROCK_FALL_LAND = 67,
- SFX_ROCK_FALL_SOLID = 68,
- SFX_ENEMY_FEET = 69,
- SFX_ENEMY_GRUNT = 70,
- SFX_ENEMY_HIT_1 = 71,
- SFX_ENEMY_HIT_2 = 72,
- SFX_ENEMY_DEATH_1 = 73,
- SFX_ENEMY_JUMP = 74,
- SFX_ENEMY_CLIMBUP = 75,
- SFX_ENEMY_CLIMBDOWN = 76,
- SFX_WEAPON_CLATTER = 77,
- SFX_M16_FIRE = 78,
- SFX_WATERFALL_LOOP = 79,
- SFX_SWORD_STATUE_DROP = 80,
- SFX_SWORD_STATUE_LIFT = 81,
- SFX_PORTCULLIS_UP = 82,
- SFX_PORTCULLIS_DOWN = 83,
- SFX_DOG_FEET_1 = 84,
- SFX_BODY_SLAM = 85,
- SFX_DOG_BARK_1 = 86,
- SFX_DOG_FEET_2 = 87,
- SFX_DOG_BARK_2 = 88,
- SFX_DOG_DEATH = 89,
- SFX_DOG_PANT = 90,
- SFX_LEOPARD_FEET = 91,
- SFX_LEOPARD_ROAR = 92,
- SFX_LEOPARD_BITE = 93,
- SFX_LEOPARD_STRIKE = 94,
- SFX_LEOPARD_DEATH = 95,
- SFX_LEOPARD_GROWL = 96,
- SFX_RAT_ATTACK = 97,
- SFX_RAT_DEATH = 98,
- SFX_TIGER_ROAR = 99,
- SFX_TIGER_BITE = 100,
- SFX_TIGER_STRIKE = 101,
- SFX_TIGER_DEATH = 102,
- SFX_TIGER_GROWL = 103,
- SFX_M16_STOP = 104,
- SFX_EXPLOSION_1 = 105,
- SFX_GROWL = 106,
- SFX_SPIDER_JUMP = 107,
- SFX_MENU_ROTATE = 108,
- SFX_MENU_LARA_HOME = 109,
- SFX_MENU_SPININ = 111,
- SFX_MENU_SPINOUT = 112,
- SFX_MENU_STOPWATCH = 113,
- SFX_MENU_GUNS = 114,
- SFX_MENU_PASSPORT = 115,
- SFX_MENU_MEDI = 116,
- SFX_ENEMY_HEELS = 117,
- SFX_ENEMY_FIRE_SILENCER = 118,
- SFX_ENEMY_AH_DYING = 119,
- SFX_ENEMY_OOH_DYING = 120,
- SFX_ENEMY_THUMP = 121,
- SFX_SPIDER_MOVING = 122,
- SFX_LARA_MINI_LOAD = 123,
- SFX_LARA_MINI_LOCK = 124,
- SFX_LARA_MINI_FIRE = 125,
- SFX_SPIDER_BITE = 126,
- SFX_SLAM_DOOR_SLIDE = 127,
- SFX_SLAM_DOOR_CLOSE = 128,
- SFX_EAGLE_SQUAWK = 129,
- SFX_EAGLE_WING_FLAP = 130,
- SFX_EAGLE_DEATH = 131,
- SFX_CROW_CAW = 132,
- SFX_CROW_WING_FLAP = 133,
- SFX_CROW_DEATH = 134,
- SFX_CROW_ATTACK = 135,
- SFX_ENEMY_GUN_COCKING = 136,
- SFX_ENEMY_FIRE_1 = 137,
- SFX_ENEMY_FIRE_TWIRL = 138,
- SFX_ENEMY_HOLSTER = 139,
- SFX_ENEMY_BREATH_1 = 140,
- SFX_ENEMY_CHUCKLE = 141,
- SFX_MONK_POY = 142,
- SFX_MONK_DEATH = 143,
- SFX_LARA_SPIKE_DEATH = 145,
- SFX_LARA_DEATH_3 = 146,
- SFX_ROLLING_BALL = 147,
- SFX_SANDBAG_SNAP = 148,
- SFX_SANDBAG_HIT = 149,
- SFX_LOOP_FOR_SMALL_FIRES = 150,
- SFX_SKIDOO_START = 152,
- SFX_SKIDOO_IDLE = 153,
- SFX_SKIDOO_ACCELERATE = 154,
- SFX_SKIDOO_MOVING = 155,
- SFX_SKIDOO_STOP = 156,
- SFX_ENEMY_FIRE_2 = 157,
- SFX_ENEMY_DEATH_2 = 158,
- SFX_ENEMY_BREATH_2 = 159,
- SFX_STICK_TAP = 160,
- SFX_TRAPDOOR_OPEN = 161,
- SFX_TRAPDOOR_CLOSE = 162,
- SFX_YETI_GROWL = 163,
- SFX_YETI_CHEST_BEAT = 164,
- SFX_YETI_THUMP = 165,
- SFX_YETI_GRUNT_1 = 166,
- SFX_YETI_SCREAM = 167,
- SFX_YETI_DEATH = 168,
- SFX_YETI_GROWL_1 = 169,
- SFX_YETI_GROWL_2 = 170,
- SFX_YETI_GRUNT_2 = 171,
- SFX_YETI_GROWL_3 = 172,
- SFX_YETI_FEET = 173,
- SFX_ENEMY_HEAVY_BREATH = 174,
- SFX_ENEMY_FLAMETHROWER_FIRE = 175,
- SFX_ENEMY_FLAMETHROWER_SCRAPE = 176,
- SFX_ENEMY_FLAMETHROWER_CLICK = 177,
- SFX_ENEMY_FLAMETHROWER_DEATH = 178,
- SFX_ENEMY_FLAMETHROWER_FALL = 179,
- SFX_ENEMY_BELT_JINGLE = 180,
- SFX_ENEMY_WRENCH = 181,
- SFX_FOOTSTEP = 182,
- SFX_FOOTSTEP_HIT = 183,
- SFX_ENEMY_COCKING_SHOTGUN = 184,
- SFX_SCUBA_DIVER_FLIPPER = 186,
- SFX_SCUBA_DIVER_BREATH = 188,
- SFX_PULLEY_CRANE = 190,
- SFX_CURTAIN = 191,
- SFX_SCUBA_DIVER_DEATH = 192,
- SFX_SCUBA_DIVER_DIVING = 193,
- SFX_BOAT_START = 194,
- SFX_BOAT_IDLE = 195,
- SFX_BOAT_ACCELERATE = 196,
- SFX_BOAT_MOVING = 197,
- SFX_BOAT_STOP = 198,
- SFX_BOAT_SLOW_DOWN = 199,
- SFX_BOAT_HIT = 200,
- SFX_CLATTER_1 = 201,
- SFX_CLATTER_2 = 202,
- SFX_CLATTER_3 = 203,
- SFX_DOOR_SLIDE = 204,
- SFX_LARA_FLESH_WOUND = 205,
- SFX_SAW_REVVING = 206,
- SFX_SAW_STOP = 207,
- SFX_DOOR_CHIME = 208,
- SFX_CHAIN_CREAK_SNAP = 209,
- SFX_SWINGING = 210,
- SFX_BREAKING_1 = 211,
- SFX_PULLEY_MOVE = 212,
- SFX_AIRPLANE_IDLE = 213,
- SFX_UNDERWATER_FAN_ON = 215,
- SFX_SMALL_FAN_ON = 217,
- SFX_SWINGING_BOX_BAG = 218,
- SFX_JUMP_PAD_UP = 219,
- SFX_JUMP_PAD_DOWN = 220,
- SFX_BREAKING_2 = 221,
- SFX_SNOWBALL_ROLL = 222,
- SFX_SNOWBALL_STOP = 223,
- SFX_ROLLING = 224,
- SFX_ROLLING_STOP_1 = 225,
- SFX_ROLLING_STOP_2 = 226,
- SFX_ROLLING_2 = 227,
- SFX_ROLLING_2_HIT = 228,
- SFX_SIDE_BLADE_SWING = 229,
- SFX_SIDE_BLADE_BACK = 230,
- SFX_ROLLING_BLADE = 231,
- SFX_ICILE_DETACH = 232,
- SFX_ICICLE_HIT = 233,
- SFX_ROTATING_HANDLE_LOOSE = 234,
- SFX_ROTATING_HANDLE_TURN = 235,
- SFX_ROTATING_HANDLE_OPEN = 236,
- SFX_ROTATING_HANDLE_CREAK = 237,
- SFX_MONK_FEET = 238,
- SFX_MONK_SWORD_SWING_1 = 239,
- SFX_MONK_SWORD_SWING_2 = 240,
- SFX_MONK_SHOUT_1 = 241,
- SFX_MONK_SHOUT_2 = 242,
- SFX_MONK_SHOUT_3 = 243,
- SFX_MONK_SHOUT_4 = 244,
- SFX_MONK_CRUNCH = 245,
- SFX_MONK_BREATH = 246,
- SFX_SPLASH_SURFACE = 247,
- SFX_WATERFALL_1 = 248,
- SFX_ENEMY_FEET_SNOW = 249,
- SFX_ENEMY_FIRE_3 = 250,
- SFX_ENEMY_FIRE_SEMIAUTO = 251,
- SFX_ENEMY_DEATH_3 = 252,
- SFX_ENEMY_DEATH_4 = 253,
- SFX_CIRCLE_BLADE = 254,
- SFX_KNIFETHROWER_FEET = 255,
- SFX_MONK_OYE = 256,
- SFX_MONK_AWEH = 257,
- SFX_CIRCLE_BLADE_HIT = 258,
- SFX_KNIFETHROWER_WARRIOR_FEET = 259,
- SFX_WARRIOR_BLADE_SWING_1 = 260,
- SFX_WARRIOR_BLADE_SWING_2 = 261,
- SFX_WARRIOR_GROWL = 262,
- SFX_KNIFETHROWER_HICCUP = 263,
- SFX_WARROPR_BURP = 264,
- SFX_WARRIOR_GROWL_1 = 265,
- SFX_WARRIOR_WAKE = 267,
- SFX_WARRIOR_GROWL_2 = 268,
- SFX_SMALL_SWITCH = 269,
- SFX_CHAIN_PULLEY = 278,
- SFX_ZIPLINE_GRAB = 279,
- SFX_ZIPLINE_GO = 280,
- SFX_ZIPLINE_STOP = 281,
- SFX_BODY_SLUMP = 282,
- SFX_BOWL_TIPPING = 283,
- SFX_BOWL_POUR = 284,
- SFX_WATERFALL_2 = 285,
- SFX_ELEVATOR_OPEN = 286,
- SFX_ELEVATOR_CLOSE = 287,
- SFX_MINISUB_CLATTER_1 = 288,
- SFX_MINISUB_CLATTER_2 = 289,
- SFX_MINISUB_CLATTER_3 = 290,
- SFX_BIRD_MONSTER_SCREAM = 291,
- SFX_BIRD_MONSTER_GASP = 292,
- SFX_BIRD_MONSTER_BREATH = 293,
- SFX_BIRD_MONSTER_FEET = 294,
- SFX_BIRD_MONSTER_DEATH = 295,
- SFX_BIRD_MONSTER_SCRAPE = 296,
- SFX_HELICOPTER_LOOP = 297,
- SFX_DRAGON_FEET = 298,
- SFX_DRAGON_GROWL_1 = 299,
- SFX_DRAGON_GROWL_2 = 300,
- SFX_DRAGON_FALL = 301,
- SFX_DRAGON_BREATH = 302,
- SFX_DRAGON_GROWL_3 = 303,
- SFX_DRAGON_GRUNT = 304,
- SFX_DRAGON_FIRE = 305,
- SFX_DRAGON_LEG_LIFT = 306,
- SFX_DRAGON_LEG_HIT = 307,
- SFX_WARRIOR_BLADE_SWING_3 = 308,
- SFX_WARRIOR_BLADE_SWING_FAST = 309,
- SFX_WARRIOR_BREATH_ACTIVE = 311,
- SFX_WARRIOR_HOVER = 312,
- SFX_WARRIOR_LANDING = 313,
- SFX_WARRIOR_SWORD_CLANK = 314,
- SFX_WARRIOR_SWORD_SLICE = 315,
- SFX_BIRDS_CHIRP = 316,
- SFX_CRUNCH_1 = 317,
- SFX_CRUNCH_2 = 318,
- SFX_DOOR_CREAK = 319,
- SFX_BREAKING_3 = 320,
- SFX_BIG_SPIDER_SNARL = 321,
- SFX_BIG_SPIDER_FEET = 322,
- SFX_BIG_SPIDER_DEATH = 323,
- SFX_T_REX_ROAR = 324,
- SFX_T_REX_FEET = 325,
- SFX_T_REX_GROWL_1 = 326,
- SFX_T_REX_DEATH = 327,
- SFX_DRIPS_REVERB = 329,
- SFX_STAGE_BACKDROP = 330,
- SFX_STONE_DOOR_SLIDE = 331,
- SFX_PLATFORM_ALARM = 332,
- SFX_TICK_TOCK = 333,
- SFX_DOORBELL = 334,
- SFX_BURGLAR_ALARM = 335,
- SFX_BOAT_ENGINE = 336,
- SFX_BOAT_INTO_WATER = 337,
- SFX_UNKNOWN_1 = 338,
- SFX_UNKNOWN_2 = 339,
- SFX_UNKNOWN_3 = 340,
- SFX_MARCO_BARTOLLI_TRANSFORM = 341,
- SFX_WINSTON_SHUFFLE = 342,
- SFX_WINSTON_FEET = 343,
- SFX_WINSTON_GRUNT_1 = 344,
- SFX_WINSTON_GRUNT_2 = 345,
- SFX_WINSTON_GRUNT_3 = 346,
- SFX_WINSTON_CUPS = 347,
- SFX_BRITTLE_GROUND_BREAK = 348,
- SFX_SPIDER_EXPLODE = 349,
- SFX_SHARK_BITE = 350,
- SFX_LAVA_BUBBLES = 351,
- SFX_EXPLOSION_2 = 352,
- SFX_BURGLARS = 353,
- SFX_ZIPPER = 354,
- SFX_NUMBER_OF = 370,
-} SOUND_EFFECT_ID;
-
-typedef enum {
- SPM_NORMAL = 0,
- SPM_UNDERWATER = 1,
- SPM_ALWAYS = 2,
- SPM_PITCH = 4,
-} SOUND_PLAY_MODE;
-
-typedef enum {
- CF_NORMAL = 0,
- CF_FOLLOW_CENTRE = 1,
- CF_NO_CHUNKY = 2,
- CF_CHASE_OBJECT = 3,
-} CAMERA_FLAGS;
-
-typedef enum {
- FBBOX_MIN_X = 0,
- FBBOX_MAX_X = 1,
- FBBOX_MIN_Y = 2,
- FBBOX_MAX_Y = 3,
- FBBOX_MIN_Z = 4,
- FBBOX_MAX_Z = 5,
- FBBOX_X = 6,
- FBBOX_Y = 7,
- FBBOX_Z = 8,
- FBBOX_ROT = 9,
-} FRAME_BBOX_INFO;
-
-typedef struct __unaligned {
- union {
- int32_t flags;
- struct {
- uint32_t matrix_pop: 1;
- uint32_t matrix_push: 1;
- uint32_t rot_x: 1;
- uint32_t rot_y: 1;
- uint32_t rot_z: 1;
- uint32_t pad: 11;
- };
- };
- XYZ_32 pos;
-} BONE;
-
-typedef enum {
- BF_MATRIX_POP = 1,
- BF_MATRIX_PUSH = 2,
- BF_ROT_X = 4,
- BF_ROT_Y = 8,
- BF_ROT_Z = 16,
-} BONE_FLAGS;
-
-typedef struct __unaligned {
- int16_t tx;
- int16_t ty;
- int16_t tz;
- int16_t cx;
- int16_t cy;
- int16_t cz;
- int16_t fov;
- int16_t roll;
-} CINE_FRAME;
-
-typedef enum { // decompiled
- IF_ONE_SHOT = 0x0100,
- IF_CODE_BITS = 0x3E00,
- IF_REVERSE = 0x4000,
- IF_INVISIBLE = 0x0100,
- IF_KILLED = 0x8000,
-} ITEM_FLAG;
-
-typedef enum { // decompiled
- IS_INACTIVE = 0,
- IS_ACTIVE = 1,
- IS_DEACTIVATED = 2,
- IS_INVISIBLE = 3,
-} ITEM_STATUS;
-
-typedef struct __unaligned {
- uint16_t key[14]; // INPUT_ROLE_NUMBER_OF
-} CONTROL_LAYOUT;
-
-typedef enum { // decompiled
- IN_FORWARD = 0x00000001,
- IN_BACK = 0x00000002,
- IN_LEFT = 0x00000004,
- IN_RIGHT = 0x00000008,
- IN_JUMP = 0x00000010,
- IN_DRAW = 0x00000020,
- IN_ACTION = 0x00000040,
- IN_SLOW = 0x00000080,
- IN_OPTION = 0x00000100,
- IN_LOOK = 0x00000200,
- IN_STEP_LEFT = 0x00000400,
- IN_STEP_RIGHT = 0x00000800,
- IN_ROLL = 0x00001000,
- IN_PAUSE = 0x00002000,
- IN_RESERVED1 = 0x00004000,
- IN_RESERVED2 = 0x00008000,
- IN_DOZY_CHEAT = 0x00010000,
- IN_STUFF_CHEAT = 0x00020000,
- IN_DEBUG_INFO = 0x00040000,
- IN_FLARE = 0x00080000,
- IN_SELECT = 0x00100000,
- IN_DESELECT = 0x00200000,
- IN_SAVE = 0x00400000,
- IN_LOAD = 0x00800000,
-} INPUT_STATE;
-
-typedef enum { // decompiled
- LA_RUN = 0,
- LA_WALK_FORWARD = 1,
- LA_WALK_STOP_RIGHT = 2,
- LA_WALK_STOP_LEFT = 3,
- LA_WALK_TO_RUN_RIGHT = 4,
- LA_WALK_TO_RUN_LEFT = 5,
- LA_RUN_START = 6,
- LA_RUN_TO_WALK_RIGHT = 7,
- LA_RUN_TO_STAND_LEFT = 8,
- LA_RUN_TO_WALK_LEFT = 9,
- LA_RUN_TO_STAND_RIGHT = 10,
- LA_STAND_STILL = 11,
- LA_TURN_RIGHT_SLOW = 12,
- LA_TURN_LEFT_SLOW = 13,
- LA_JUMP_FORWARD_LAND_START = 14,
- LA_JUMP_FORWARD_LAND_END_UNUSED = 15,
- LA_RUN_JUMP_RIGHT_START = 16,
- LA_RUN_JUMP_RIGHT_CONTINUE = 17,
- LA_RUN_JUMP_LEFT_START = 18,
- LA_RUN_JUMP_LEFT_CONTINUE = 19,
- LA_WALK_FORWARD_START = 20,
- LA_WALK_FORWARD_START_CONTINUE = 21,
- LA_JUMP_FORWARD_TO_FREEFALL = 22,
- LA_FREEFALL = 23,
- LA_FREEFALL_LAND = 24,
- LA_FREEFALL_LAND_DEATH = 25,
- LA_STAND_TO_JUMP_UP = 26,
- LA_STAND_TO_JUMP_UP_CONTINUE = 27,
- LA_JUMP_UP = 28,
- LA_JUMP_UP_TO_HANG = 29,
- LA_JUMP_UP_TO_FREEFALL = 30,
- LA_JUMP_UP_LAND = 31,
- LA_SMASH_JUMP = 32,
- LA_SMASH_JUMP_CONTINUE = 33,
- LA_FALL_START = 34,
- LA_FALL = 35,
- LA_FALL_TO_FREEFALL = 36,
- LA_HANG_TO_FREEFALL = 37,
- LA_WALK_BACK_END_RIGHT = 38,
- LA_WALK_BACK_END_LEFT = 39,
- LA_WALK_BACK = 40,
- LA_WALK_BACK_START = 41,
- LA_CLIMB_3CLICK = 42,
- LA_CLIMB_3CLICK_END_TO_RUN = 43,
- LA_TURN_RIGHT = 44,
- LA_JUMP_FORWARD_TO_FREEFALL_2 = 45,
- LA_REACH_TO_FREEFALL = 46,
- LA_ROLL_ALTERNATE = 47,
- LA_ROLL_END_ALTERNATE = 48,
- LA_JUMP_FORWARD_END_TO_FREEFALL = 49,
- LA_CLIMB_2CLICK = 50,
- LA_CLIMB_2CLICK_END = 51,
- LA_CLIMB_2CLICK_END_TO_RUN = 52,
- LA_WALL_SMASH_LEFT = 53,
- LA_WALL_SMASH_RIGHT = 54,
- LA_RUN_UP_STEP_RIGHT = 55,
- LA_RUN_UP_STEP_LEFT = 56,
- LA_WALK_UP_STEP_RIGHT = 57,
- LA_WALK_UP_STEP_LEFT = 58,
- LA_WALK_DOWN_LEFT = 59,
- LA_WALK_DOWN_RIGHT = 60,
- LA_WALK_DOWN_BACK_LEFT = 61,
- LA_WALK_DOWN_BACK_RIGHT = 62,
- LA_WALL_SWITCH_DOWN = 63,
- LA_WALL_SWITCH_UP = 64,
- LA_SIDESTEP_LEFT = 65,
- LA_SIDESTEP_LEFT_END = 66,
- LA_SIDESTEP_RIGHT = 67,
- LA_SIDESTEP_RIGHT_END = 68,
- LA_ROTATE_LEFT = 69,
- LA_SLIDE_FORWARD = 70,
- LA_SLIDE_FORWARD_END = 71,
- LA_SLIDE_FORWARD_STOP = 72,
- LA_STAND_TO_JUMP = 73,
- LA_JUMP_BACK_START = 74,
- LA_JUMP_BACK = 75,
- LA_JUMP_FORWARD_START = 76,
- LA_JUMP_FORWARD = 77,
- LA_JUMP_LEFT_START = 78,
- LA_JUMP_LEFT = 79,
- LA_JUMP_RIGHT_START = 80,
- LA_JUMP_RIGHT = 81,
- LA_LAND = 82,
- LA_JUMP_BACK_TO_FREEFALL = 83,
- LA_JUMP_LEFT_TO_FREEFALL = 84,
- LA_JUMP_RIGHT_TO_FREEFALL = 85,
- LA_UNDERWATER_SWIM_FORWARD = 86,
- LA_UNDERWATER_SWIM_FORWARD_DRIFT = 87,
- LA_SMALL_JUMP_BACK_START = 88,
- LA_SMALL_JUMP_BACK = 89,
- LA_SMALL_JUMP_BACK_END = 90,
- LA_JUMP_UP_START = 91,
- LA_LAND_TO_RUN = 92,
- LA_FALL_BACK = 93,
- LA_JUMP_FORWARD_TO_REACH = 94,
- LA_REACH = 95,
- LA_REACH_TO_HANG = 96,
- LA_CLIMB_ON = 97,
- LA_REACH_TO_FREEFALL_2 = 98,
- LA_FALL_CROUCHING_LANDING = 99,
- LA_JUMP_FORWARD_TO_REACH_LATE = 100,
- LA_JUMP_FORWARD_START_TO_REACH_ALTERNATE = 101,
- LA_CLIMB_ON_END = 102,
- LA_STAND_IDLE = 103,
- LA_SLIDE_BACKWARD_START = 104,
- LA_SLIDE_BACKWARD = 105,
- LA_SLIDE_BACKWARD_END = 106,
- LA_UNDERWATER_SWIM_TO_IDLE = 107,
- LA_UNDERWATER_IDLE = 108,
- LA_UNDERWARER_IDLE_TO_SWIM = 109,
- LA_ONWATER_IDLE = 110,
- LA_ONWATER_TO_STAND_HIGH = 111,
- LA_FREEFALL_TO_UNDERWATER = 112,
- LA_ONWATER_DIVE_ALTERNATE = 113,
- LA_UNDERWATER_TO_ONWATER = 114,
- LA_ONWATER_SWIM_FORWARD_DIVE = 115,
- LA_ONWATER_SWIM_FORWARD = 116,
- LA_ONWATER_SWIM_FORWARD_TO_IDLE = 117,
- LA_ONWATER_IDLE_TO_SWIM_FORWARD = 118,
- LA_ONWATER_DIVE = 119,
- LA_PUSHABLE_GRAB = 120,
- LA_PUSHABLE_RELEASE = 121,
- LA_PUSHABLE_PULL = 122,
- LA_PUSHABLE_PUSH = 123,
- LA_UNDERWATER_DEATH = 124,
- LA_HIT_FRONT = 125,
- LA_HIT_BACK = 126,
- LA_HIT_LEFT = 127,
- LA_HIT_RIGHT = 128,
- LA_UNDERWATER_SWITCH = 129,
- LA_UNDERWATER_PICKUP = 130,
- LA_USE_KEY = 131,
- LA_ONWATER_DEATH = 132,
- LA_RUN_DEATH = 133,
- LA_USE_PUZZLE = 134,
- LA_PICKUP = 135,
- LA_SHIMMY_LEFT = 136,
- LA_SHIMMY_RIGHT = 137,
- LA_STAND_DEATH = 138,
- LA_BOULDER_DEATH = 139,
- LA_ONWATER_IDLE_TO_SWIM_BACK = 140,
- LA_ONWATER_SWIM_BACK = 141,
- LA_ONWATER_SWIM_BACK_TO_IDLE = 142,
- LA_ONWATER_SWIM_LEFT = 143,
- LA_ONWATER_SWIM_RIGHT = 144,
- LA_DEATH_JUMP = 145,
- LA_ROLL_START = 146,
- LA_ROLL_CONTINUE = 147,
- LA_ROLL_END = 148,
- LA_SPIKE_DEATH = 149,
- LA_REACH_TO_THIN_LEDGE = 150,
- LA_SWANDIVE_ROLL = 151,
- LA_SWANDIVE_TO_UNDERWATER = 152,
- LA_FREEFALL_SWANDIVE = 153,
- LA_FREEFALL_SWANDIVE_TO_UNDERWATER = 154,
- LA_SWANDIVE_DEATH = 155,
- LA_SWANDIVE_LEFT = 156,
- LA_SWANDIVE_RIGHT = 157,
- LA_SWANDIVE_START = 158,
- LA_CLIMB_ON_HANDSTAND = 159,
- LA_STAND_TO_LADDER = 160,
- LA_LADDER_UP = 161,
- LA_LADDER_UP_STOP_RIGHT = 162,
- LA_LADDER_UP_STOP_LEFT = 163,
- LA_LADDER_IDLE = 164,
- LA_LADDER_UP_START = 165,
- LA_LADDER_DOWN_STOP_LEFT = 166,
- LA_LADDER_DOWN_STOP_RIGHT = 167,
- LA_LADDER_DOWN = 168,
- LA_LADDER_DOWN_START = 169,
- LA_LADDER_RIGHT = 170,
- LA_LADDER_LEFT = 171,
- LA_LADDER_HANG = 172,
- LA_LADDER_HANG_TO_IDLE = 173,
- LA_LADDER_CLIMB_ON = 174,
- LA_UNKNOWN = 175,
- LA_ONWATER_TO_WADE_SHALLOW = 176,
- LA_WADE = 177,
- LA_RUN_TO_WADE_LEFT = 178,
- LA_RUN_TO_WADE_RIGHT = 179,
- LA_WADE_TO_RUN_LEFT = 180,
- LA_WADE_TO_RUN_RIGHT = 181,
- LA_LADDER_BACKFLIP_START = 182,
- LA_LADDER_BACKFLIP_CONTINUE = 183,
- LA_WADE_TO_STAND_RIGHT = 184,
- LA_WADE_TO_STAND_LEFT = 185,
- LA_STAND_TO_WADE = 186,
- LA_LADDER_UP_HANGING = 187,
- LA_LADDER_DOWN_HANGING = 188,
- LA_FLARE_THROW = 189,
- LA_ONWATER_TO_WADE = 190,
- LA_ONWATER_TO_STAND_MEDIUM = 191,
- LA_UNDERWATER_TO_STAND = 192,
- LA_ONWATER_TO_WADE_LOW = 193,
- LA_LADDER_TO_HANG_DOWN = 194,
- LA_SWITCH_SMALL_DOWN = 195,
- LA_SWITCH_SMALL_UP = 196,
- LA_BUTTON_PUSH = 197,
- LA_UNDERWATER_SWIM_TO_STILL_HUDDLE = 198,
- LA_UNDERWATER_SWIM_TO_STILL_SPRAWL = 199,
- LA_UNDERWATER_SWIM_TO_STILL_MEDIUM = 200,
- LA_LADDER_TO_HANG_RIGHT = 201,
- LA_LADDER_TO_HANG_LEFT = 202,
- LA_UNDERWATER_ROLL_START = 203,
- LA_FLARE_PICKUP = 204,
- LA_UNDERWATER_ROLL_END = 205,
- LA_UNDERWATER_FLARE_PICKUP = 206,
- LA_RUN_JUMP_ROLL_START = 207,
- LA_SOMERSAULT = 208,
- LA_RUN_JUMP_ROLL_END = 209,
- LA_JUMP_FORWARD_ROLL_START = 210,
- LA_JUMP_FORWARD_ROLL_END = 211,
- LA_JUMP_BACK_ROLL_START = 212,
- LA_JUMP_BACK_ROLL_END = 213,
- LA_KICK = 214,
- LA_ZIPLINE_GRAB = 215,
- LA_ZIPLINE_RIDE = 216,
- LA_ZIPLINE_FALL = 217,
-} LARA_ANIMATION;
-
-typedef enum { // decompiled
- LA_EXTRA_BREATH = 0,
- LA_EXTRA_PLUNGER = 1,
- LA_EXTRA_YETI_KILL = 2,
- LA_EXTRA_SHARK_KILL = 3,
- LA_EXTRA_AIRLOCK = 4,
- LA_EXTRA_GONG_BONG = 5,
- LA_EXTRA_TREX_KILL = 6,
- LA_EXTRA_PULL_DAGGER = 7,
- LA_EXTRA_START_ANIM = 8,
- LA_EXTRA_START_HOUSE = 9,
- LA_EXTRA_FINAL_ANIM = 10,
-} LARA_EXTRA_ANIMATION;
-
-typedef enum { // decompiled
- LS_WALK = 0,
- LS_RUN = 1,
- LS_STOP = 2,
- LS_FORWARD_JUMP = 3,
- LS_POSE = 4,
- LS_FAST_BACK = 5,
- LS_TURN_RIGHT = 6,
- LS_TURN_LEFT = 7,
- LS_DEATH = 8,
- LS_FAST_FALL = 9,
- LS_HANG = 10,
- LS_REACH = 11,
- LS_SPLAT = 12,
- LS_TREAD = 13,
- LS_LAND = 14,
- LS_COMPRESS = 15,
- LS_BACK = 16,
- LS_SWIM = 17,
- LS_GLIDE = 18,
- LS_NULL = 19,
- LS_FAST_TURN = 20,
- LS_STEP_RIGHT = 21,
- LS_STEP_LEFT = 22,
- LS_HIT = 23,
- LS_SLIDE = 24,
- LS_BACK_JUMP = 25,
- LS_RIGHT_JUMP = 26,
- LS_LEFT_JUMP = 27,
- LS_UP_JUMP = 28,
- LS_FALL_BACK = 29,
- LS_HANG_LEFT = 30,
- LS_HANG_RIGHT = 31,
- LS_SLIDE_BACK = 32,
- LS_SURF_TREAD = 33,
- LS_SURF_SWIM = 34,
- LS_DIVE = 35,
- LS_PUSH_BLOCK = 36,
- LS_PULL_BLOCK = 37,
- LS_PP_READY = 38,
- LS_PICKUP = 39,
- LS_SWITCH_ON = 40,
- LS_SWITCH_OFF = 41,
- LS_USE_KEY = 42,
- LS_USE_PUZZLE = 43,
- LS_UW_DEATH = 44,
- LS_ROLL = 45,
- LS_SPECIAL = 46,
- LS_SURF_BACK = 47,
- LS_SURF_LEFT = 48,
- LS_SURF_RIGHT = 49,
- LS_USE_MIDAS = 50,
- LS_DIE_MIDAS = 51,
- LS_SWAN_DIVE = 52,
- LS_FAST_DIVE = 53,
- LS_GYMNAST = 54,
- LS_WATER_OUT = 55,
- LS_CLIMB_STANCE = 56,
- LS_CLIMBING = 57,
- LS_CLIMB_LEFT = 58,
- LS_CLIMB_END = 59,
- LS_CLIMB_RIGHT = 60,
- LS_CLIMB_DOWN = 61,
- LS_LARA_TEST1 = 62,
- LS_LARA_TEST2 = 63,
- LS_LARA_TEST3 = 64,
- LS_WADE = 65,
- LS_WATER_ROLL = 66,
- LS_FLARE_PICKUP = 67,
- LS_TWIST = 68,
- LS_KICK = 69,
- LS_ZIPLINE = 70,
- LS_DUCK = 71,
- LS_DUCK_ROLL = 72,
- LS_DASH = 73,
- LS_DASH_DIVE = 74,
- LS_MONKEY_SWING = 75,
- LS_MONKEYF = 76,
- LS_LAST = 77,
-} LARA_STATE;
-
-typedef enum { // decompiled
- LGS_ARMLESS = 0,
- LGS_HANDS_BUSY = 1,
- LGS_DRAW = 2,
- LGS_UNDRAW = 3,
- LGS_READY = 4,
- LGS_SPECIAL = 5,
-} LARA_GUN_STATE;
-
-typedef enum { // decompiled
- LGT_UNARMED = 0,
- LGT_PISTOLS = 1,
- LGT_MAGNUMS = 2,
- LGT_UZIS = 3,
- LGT_SHOTGUN = 4,
- LGT_M16 = 5,
- LGT_GRENADE = 6,
- LGT_HARPOON = 7,
- LGT_FLARE = 8,
- LGT_SKIDOO = 9,
- NUM_WEAPONS = 10,
-} LARA_GUN_TYPE;
-
-typedef enum { // decompiled
- LM_HIPS = 0,
- LM_THIGH_L = 1,
- LM_CALF_L = 2,
- LM_FOOT_L = 3,
- LM_THIGH_R = 4,
- LM_CALF_R = 5,
- LM_FOOT_R = 6,
- LM_TORSO = 7,
- LM_UARM_R = 8,
- LM_LARM_R = 9,
- LM_HAND_R = 10,
- LM_UARM_L = 11,
- LM_LARM_L = 12,
- LM_HAND_L = 13,
- LM_HEAD = 14,
- LM_NUMBER_OF = 15,
-} LARA_MESH;
-
-typedef enum { // decompiled
- NO_OBJECT = -1,
- O_LARA = 0,
- O_LARA_PISTOLS = 1,
- O_LARA_HAIR = 2,
- O_LARA_SHOTGUN = 3,
- O_LARA_MAGNUMS = 4,
- O_LARA_UZIS = 5,
- O_LARA_M16 = 6,
- O_LARA_GRENADE = 7,
- O_LARA_HARPOON = 8,
- O_LARA_FLARE = 9,
- O_LARA_SKIDOO = 10,
- O_LARA_BOAT = 11,
- O_LARA_EXTRA = 12,
- O_SKIDOO_FAST = 13,
- O_BOAT = 14,
- O_DOG = 15,
- O_CULT_1 = 16,
- O_CULT_1A = 17,
- O_CULT_1B = 18,
- O_CULT_2 = 19,
- O_CULT_3 = 20,
- O_MOUSE = 21,
- O_DRAGON_FRONT = 22,
- O_DRAGON_BACK = 23,
- O_GONDOLA = 24,
- O_SHARK = 25,
- O_EEL = 26,
- O_BIG_EEL = 27,
- O_BARRACUDA = 28,
- O_DIVER = 29,
- O_WORKER_1 = 30,
- O_WORKER_2 = 31,
- O_WORKER_3 = 32,
- O_WORKER_4 = 33,
- O_WORKER_5 = 34,
- O_JELLY = 35,
- O_SPIDER = 36,
- O_BIG_SPIDER = 37,
- O_CROW = 38,
- O_TIGER = 39,
- O_BARTOLI = 40,
- O_XIAN_SPEARMAN = 41,
- O_XIAN_SPEARMAN_STATUE = 42,
- O_XIAN_KNIGHT = 43,
- O_XIAN_KNIGHT_STATUE = 44,
- O_YETI = 45,
- O_BIRD_GUARDIAN = 46,
- O_EAGLE = 47,
- O_BANDIT_1 = 48,
- O_BANDIT_2 = 49,
- O_BANDIT_2B = 50,
- O_SKIDOO_ARMED = 51,
- O_SKIDOO_DRIVER = 52,
- O_MONK_1 = 53,
- O_MONK_2 = 54,
- O_FALLING_BLOCK_1 = 55,
- O_FALLING_BLOCK_2 = 56,
- O_FALLING_BLOCK_3 = 57,
- O_PENDULUM_1 = 58,
- O_SPIKES = 59,
- O_ROLLING_BALL_1 = 60,
- O_DART = 61,
- O_DART_EMITTER = 62,
- O_DRAWBRIDGE = 63,
- O_TEETH_TRAP = 64,
- O_LIFT = 65,
- O_GENERAL = 66,
- O_MOVABLE_BLOCK_1 = 67,
- O_MOVABLE_BLOCK_2 = 68,
- O_MOVABLE_BLOCK_3 = 69,
- O_MOVABLE_BLOCK_4 = 70,
- O_BIG_BOWL = 71,
- O_WINDOW_1 = 72,
- O_WINDOW_2 = 73,
- O_WINDOW_3 = 74,
- O_WINDOW_4 = 75,
- O_PROPELLER_1 = 76,
- O_POWER_SAW = 77,
- O_HOOK = 78,
- O_FALLING_CEILING = 79,
- O_SPINNING_BLADE = 80,
- O_BLADE = 81,
- O_KILLER_STATUE = 82,
- O_ROLLING_BALL_2 = 83,
- O_ICICLE = 84,
- O_SPIKE_WALL = 85,
- O_SPRINGBOARD = 86,
- O_CEILING_SPIKES = 87,
- O_BELL = 88,
- O_WATER_SPRITE = 89,
- O_SNOW_SPRITE = 90,
- O_SKIDOO_TRACK = 91,
- O_SWITCH_TYPE_AIRLOCK = 92,
- O_SWITCH_TYPE_SMALL = 93,
- O_PROPELLER_2 = 94,
- O_PROPELLER_3 = 95,
- O_PENDULUM_2 = 96,
- O_MESH_SWAP_1 = 97,
- O_MESH_SWAP_2 = 98,
- O_LARA_SWAP = 99,
- O_TEXT_BOX = 100,
- O_ROLLING_BALL_3 = 101,
- O_ZIPLINE_HANDLE = 102,
- O_SWITCH_TYPE_BUTTON = 103,
- O_SWITCH_TYPE_NORMAL = 104,
- O_SWITCH_TYPE_UW = 105,
- O_DOOR_TYPE_1 = 106,
- O_DOOR_TYPE_2 = 107,
- O_DOOR_TYPE_3 = 108,
- O_DOOR_TYPE_4 = 109,
- O_DOOR_TYPE_5 = 110,
- O_DOOR_TYPE_6 = 111,
- O_DOOR_TYPE_7 = 112,
- O_DOOR_TYPE_8 = 113,
- O_TRAPDOOR_TYPE_1 = 114,
- O_TRAPDOOR_TYPE_2 = 115,
- O_TRAPDOOR_TYPE_3 = 116,
- O_BRIDGE_FLAT = 117,
- O_BRIDGE_TILT_1 = 118,
- O_BRIDGE_TILT_2 = 119,
- O_PASSPORT_OPTION = 120,
- O_COMPASS_OPTION = 121,
- O_PHOTO_OPTION = 122,
- O_PLAYER_1 = 123,
- O_PLAYER_2 = 124,
- O_PLAYER_3 = 125,
- O_PLAYER_4 = 126,
- O_PLAYER_5 = 127,
- O_PLAYER_6 = 128,
- O_PLAYER_7 = 129,
- O_PLAYER_8 = 130,
- O_PLAYER_9 = 131,
- O_PLAYER_10 = 132,
- O_PASSPORT_CLOSED = 133,
- O_COMPASS_ITEM = 134,
- O_PISTOL_ITEM = 135,
- O_SHOTGUN_ITEM = 136,
- O_MAGNUM_ITEM = 137,
- O_UZI_ITEM = 138,
- O_HARPOON_ITEM = 139,
- O_M16_ITEM = 140,
- O_GRENADE_ITEM = 141,
- O_PISTOL_AMMO_ITEM = 142,
- O_SHOTGUN_AMMO_ITEM = 143,
- O_MAGNUM_AMMO_ITEM = 144,
- O_UZI_AMMO_ITEM = 145,
- O_HARPOON_AMMO_ITEM = 146,
- O_M16_AMMO_ITEM = 147,
- O_GRENADE_AMMO_ITEM = 148,
- O_SMALL_MEDIPACK_ITEM = 149,
- O_LARGE_MEDIPACK_ITEM = 150,
- O_FLARES_ITEM = 151,
- O_FLARE_ITEM = 152,
- O_DETAIL_OPTION = 153,
- O_SOUND_OPTION = 154,
- O_CONTROL_OPTION = 155,
- O_GAMMA_OPTION = 156,
- O_PISTOL_OPTION = 157,
- O_SHOTGUN_OPTION = 158,
- O_MAGNUM_OPTION = 159,
- O_UZI_OPTION = 160,
- O_HARPOON_OPTION = 161,
- O_M16_OPTION = 162,
- O_GRENADE_OPTION = 163,
- O_PISTOL_AMMO_OPTION = 164,
- O_SHOTGUN_AMMO_OPTION = 165,
- O_MAGNUM_AMMO_OPTION = 166,
- O_UZI_AMMO_OPTION = 167,
- O_HARPOON_AMMO_OPTION = 168,
- O_M16_AMMO_OPTION = 169,
- O_GRENADE_AMMO_OPTION = 170,
- O_SMALL_MEDIPACK_OPTION = 171,
- O_LARGE_MEDIPACK_OPTION = 172,
- O_FLARES_OPTION = 173,
- O_PUZZLE_ITEM_1 = 174,
- O_PUZZLE_ITEM_2 = 175,
- O_PUZZLE_ITEM_3 = 176,
- O_PUZZLE_ITEM_4 = 177,
- O_PUZZLE_OPTION_1 = 178,
- O_PUZZLE_OPTION_2 = 179,
- O_PUZZLE_OPTION_3 = 180,
- O_PUZZLE_OPTION_4 = 181,
- O_PUZZLE_HOLE_1 = 182,
- O_PUZZLE_HOLE_2 = 183,
- O_PUZZLE_HOLE_3 = 184,
- O_PUZZLE_HOLE_4 = 185,
- O_PUZZLE_DONE_1 = 186,
- O_PUZZLE_DONE_2 = 187,
- O_PUZZLE_DONE_3 = 188,
- O_PUZZLE_DONE_4 = 189,
- O_SECRET_1 = 190,
- O_SECRET_2 = 191,
- O_SECRET_3 = 192,
- O_KEY_ITEM_1 = 193,
- O_KEY_ITEM_2 = 194,
- O_KEY_ITEM_3 = 195,
- O_KEY_ITEM_4 = 196,
- O_KEY_OPTION_1 = 197,
- O_KEY_OPTION_2 = 198,
- O_KEY_OPTION_3 = 199,
- O_KEY_OPTION_4 = 200,
- O_KEY_HOLE_1 = 201,
- O_KEY_HOLE_2 = 202,
- O_KEY_HOLE_3 = 203,
- O_KEY_HOLE_4 = 204,
- O_PICKUP_ITEM_1 = 205,
- O_PICKUP_ITEM_2 = 206,
- O_PICKUP_OPTION_1 = 207,
- O_PICKUP_OPTION_2 = 208,
- O_SPHERE_OF_DOOM_1 = 209,
- O_SPHERE_OF_DOOM_2 = 210,
- O_SPHERE_OF_DOOM_3 = 211,
- O_ALARM_SOUND = 212,
- O_BIRD_TWEETER_1 = 213,
- O_DINO = 214,
- O_BIRD_TWEETER_2 = 215,
- O_CLOCK_CHIMES = 216,
- O_DRAGON_BONES_1 = 217,
- O_DRAGON_BONES_2 = 218,
- O_DRAGON_BONES_3 = 219,
- O_HOT_LIQUID = 220,
- O_BOAT_BITS = 221,
- O_MINE = 222,
- O_INV_BACKGROUND = 223,
- O_FX_RESERVED = 224,
- O_GONG_BONGER = 225,
- O_DETONATOR_1 = 226,
- O_DETONATOR_2 = 227,
- O_COPTER = 228,
- O_EXPLOSION = 229,
- O_SPLASH = 230,
- O_BUBBLE = 231,
- O_BUBBLE_EMITTER = 232,
- O_BLOOD = 233,
- O_DART_EFFECT = 234,
- O_FLARE_FIRE = 235,
- O_GLOW = 236,
- O_GLOW_RESERVED = 237,
- O_RICOCHET = 238,
- O_TWINKLE = 239,
- O_GUN_FLASH = 240,
- O_M16_FLASH = 241,
- O_BODY_PART = 242,
- O_CAMERA_TARGET = 243,
- O_WATERFALL = 244,
- O_MISSILE_HARPOON = 245,
- O_MISSILE_FLAME = 246,
- O_MISSILE_KNIFE = 247,
- O_GRENADE = 248,
- O_HARPOON_BOLT = 249,
- O_EMBER = 250,
- O_EMBER_EMITTER = 251,
- O_FLAME = 252,
- O_FLAME_EMITTER = 253,
- O_SKYBOX = 254,
- O_ALPHABET = 255,
- O_DYING_MONK = 256,
- O_DING_DONG = 257,
- O_LARA_ALARM = 258,
- O_MINI_COPTER = 259,
- O_WINSTON = 260,
- O_ASSAULT_DIGITS = 261,
- O_FINAL_LEVEL_COUNTER = 262,
- O_CUT_SHOTGUN = 263,
- O_EARTHQUAKE = 264,
- O_NUMBER_OF = 265,
-} GAME_OBJECT_ID;
-
-typedef enum { // decompiled
- MX_INACTIVE = -1,
- MX_UNUSED_0 = 0, // 2.mp3
- MX_UNUSED_1 = 1, // 2.mp3
- MX_CUTSCENE_THE_GREAT_WALL = 2, // 2.mp3
- MX_UNUSED_2 = 3, // 2.mp3
- MX_CUTSCENE_OPERA_HOUSE = 4, // 3.mp3
- MX_CUTSCENE_BROTHER_CHAN = 5, // 4.mp3
- MX_GYM_HINT_1 = 6, // 5.mp3
- MX_GYM_HINT_2 = 7, // 6.mp3
- MX_GYM_HINT_3 = 8, // 7.mp3
- MX_GYM_HINT_4 = 9, // 8.mp3
- MX_GYM_HINT_5 = 10, // 9.mp3
- MX_GYM_HINT_6 = 11, // 10.mp3
- MX_GYM_HINT_7 = 12, // 11.mp3
- MX_GYM_HINT_8 = 13, // 12.mp3
- MX_GYM_HINT_9 = 14, // 13.mp3
- MX_GYM_HINT_10 = 15, // 14.mp3
- MX_GYM_HINT_11 = 16, // 15.mp3
- MX_GYM_HINT_12 = 17, // 16.mp3
- MX_GYM_HINT_13 = 18, // 17.mp3
- MX_GYM_HINT_14 = 19, // 18.mp3
- MX_UNUSED_3 = 20, // 18.mp3
- MX_UNUSED_4 = 21, // 18.mp3
- MX_GYM_HINT_15 = 22, // 19.mp3
- MX_GYM_HINT_16 = 23, // 20.mp3
- MX_GYM_HINT_17 = 24, // 21.mp3
- MX_GYM_HINT_18 = 25, // 22.mp3
- MX_UNUSED_5 = 26, // 23.mp3
- MX_CUTSCENE_BATH = 27, // 23.mp3
- MX_DAGGER_PULL = 28, // 24.mp3
- MX_GYM_HINT_20 = 29, // 25.mp3
- MX_CUTSCENE_XIAN = 30, // 26.mp3
- MX_CAVES_AMBIENCE = 31, // 27.mp3
- MX_SEWERS_AMBIENCE = 32, // 28.mp3
- MX_WINDY_AMBIENCE = 33, // 29.mp3
- MX_HEARTBEAT_AMBIENCE = 34, // 30.mp3
- MX_SURPRISE_1 = 35, // 31.mp3
- MX_SURPRISE_2 = 36, // 32.mp3
- MX_SURPRISE_3 = 37, // 33.mp3
- MX_OOH_AAH_1 = 38, // 34.mp3
- MX_OOH_AAH_2 = 39, // 35.mp3
- MX_VENICE_VIOLINS = 40, // 36.mp3
- MX_END_OF_LEVEL = 41, // 37.mp3
- MX_SPOOKY_1 = 42, // 38.mp3
- MX_SPOOKY_2 = 43, // 39.mp3
- MX_SPOOKY_3 = 44, // 40.mp3
- MX_HARP_THEME = 45, // 41.mp3
- MX_MYSTERY_1 = 46, // 42.mp3
- MX_SECRET = 47, // 43.mp3
- MX_AMBUSH_1 = 48, // 44.mp3
- MX_AMBUSH_2 = 49, // 45.mp3
- MX_AMBUSH_3 = 50, // 46.mp3
- MX_AMBUSH_4 = 51, // 47.mp3
- MX_SKIDOO_THEME = 52, // 48.mp3
- MX_BATTLE_THEME = 53, // 49.mp3
- MX_MYSTERY_2 = 54, // 50.mp3
- MX_MYSTERY_3 = 55, // 51.mp3
- MX_MYSTERY_4 = 56, // 52.mp3
- MX_MYSTERY_5 = 57, // 53.mp3
- MX_RIG_AMBIENCE = 58, // 54.mp3
- MX_TOMB_AMBIENCE = 59, // 55.mp3
- MX_OOH_AAH_3 = 60, // 56.mp3
- MX_REVEAL_1 = 61, // 57.mp3
- MX_CUTSCENE_RIG = 62, // 58.mp3
- MX_REVEAL_2 = 63, // 59.mp3
- MX_TITLE_THEME = 64, // 60.mp3
- MX_UNUSED_6 = 65, // 61.mp3
-} MUSIC_TRACK_ID;
-
-typedef enum {
- COLL_NONE = 0x00,
- COLL_FRONT = 0x01,
- COLL_LEFT = 0x02,
- COLL_RIGHT = 0x04,
- COLL_TOP = 0x08,
- COLL_TOP_FRONT = 0x10,
- COLL_CLAMP = 0x20,
-} COLL_TYPE;
-
-typedef enum { // decompiled
- FT_FLOOR = 0,
- FT_DOOR = 1,
- FT_TILT = 2,
- FT_ROOF = 3,
- FT_TRIGGER = 4,
- FT_LAVA = 5,
- FT_CLIMB = 6,
-} FLOOR_TYPE;
-
-typedef enum {
- HT_WALL = 0,
- HT_SMALL_SLOPE = 1,
- HT_BIG_SLOPE = 2,
-} HEIGHT_TYPE;
-
-typedef enum { // decompiled
- DIR_UNKNOWN = -1,
- DIR_NORTH = 0,
- DIR_EAST = 1,
- DIR_SOUTH = 2,
- DIR_WEST = 3,
-} DIRECTION;
-
-typedef struct __unaligned { // decompiled
- uint16_t x;
- uint16_t y;
-} XGEN_X;
-
-typedef struct __unaligned { // decompiled
- int32_t x1;
- int32_t x2;
-} XBUF_X;
-
-typedef struct __unaligned { // decompiled
- int16_t x;
- int16_t y;
- int16_t g;
-} XGEN_XG;
-
-typedef struct __unaligned { // decompiled
- int32_t x1;
- int32_t g1;
- int32_t x2;
- int32_t g2;
-} XBUF_XG;
-
-typedef struct __unaligned { // decompiled
- uint16_t x;
- uint16_t y;
- uint16_t g;
- uint16_t u;
- uint16_t v;
-} XGEN_XGUV;
-
-typedef struct __unaligned { // decompiled
- int32_t x1;
- int32_t g1;
- int32_t u1;
- int32_t v1;
- int32_t x2;
- int32_t g2;
- int32_t u2;
- int32_t v2;
-} XBUF_XGUV;
-
-typedef struct __unaligned { // decompiled
- uint16_t x;
- uint16_t y;
- uint16_t g;
- float rhw;
- float u;
- float v;
-} XGEN_XGUVP;
-
-typedef struct __unaligned { // decompiled
- int32_t x1;
- int32_t g1;
- float u1;
- float v1;
- float rhw1;
- int32_t x2;
- int32_t g2;
- float u2;
- float v2;
- float rhw2;
-} XBUF_XGUVP;
-
-typedef struct __unaligned { // decompiled
- uint8_t manufacturer;
- uint8_t version;
- uint8_t rle;
- uint8_t bpp;
- uint16_t x_min;
- uint16_t y_min;
- uint16_t x_max;
- uint16_t y_max;
- uint16_t h_dpi;
- uint16_t v_dpi;
- RGB_888 palette[16];
- uint8_t reserved;
- uint8_t planes;
- uint16_t bytes_per_line;
- uint16_t pal_pnterpret;
- uint16_t h_res;
- uint16_t v_res;
- uint8_t reserved_data[54];
-} PCX_HEADER;
-
-typedef struct __unaligned { // decompiled
- uint8_t id_length;
- uint8_t color_map_type;
- uint8_t data_type_code;
- uint16_t color_map_origin;
- uint16_t color_map_length;
- uint8_t color_map_depth;
- uint16_t x_origin;
- uint16_t y_origin;
- uint16_t width;
- uint16_t height;
- uint8_t bpp;
- uint8_t image_descriptor;
-} TGA_HEADER;
-
-typedef struct __unaligned {
- int16_t number;
- int16_t volume;
- int16_t randomness;
- int16_t flags;
-} SAMPLE_INFO;
-
-/*
-typedef struct __unaligned {
- int32_t volume;
- int32_t pan;
- int32_t sample_num;
- int32_t pitch;
-} SOUND_SLOT;
-*/
-
-typedef enum {
- SF_FLIP = 0x40,
- SF_UNFLIP = 0x80,
-} SOUND_FLAG;
-
-typedef enum { // decompiled
- GBUF_TEMP_ALLOC = 0,
- GBUF_TEXTURE_PAGES = 1,
- GBUF_MESH_POINTERS = 2,
- GBUF_MESHES = 3,
- GBUF_ANIMS = 4,
- GBUF_STRUCTS = 5,
- GBUF_ANIM_RANGES = 6,
- GBUF_ANIM_COMMANDS = 7,
- GBUF_ANIM_BONES = 8,
- GBUF_ANIM_FRAMES = 9,
- GBUF_ROOM_TEXTURES = 10,
- GBUF_ROOMS = 11,
- GBUF_ROOM_MESH = 12,
- GBUF_ROOM_PORTALS = 13,
- GBUF_ROOM_FLOOR = 14,
- GBUF_ROOM_LIGHTS = 15,
- GBUF_ROOM_STATIC_MESHES = 16,
- GBUF_FLOOR_DATA = 17,
- GBUF_ITEMS = 18,
- GBUF_CAMERAS = 19,
- GBUF_SOUND_FX = 20,
- GBUF_BOXES = 21,
- GBUF_OVERLAPS = 22,
- GBUF_GROUND_ZONE = 23,
- GBUF_FLY_ZONE = 24,
- GBUF_ANIMATING_TEXTURE_RANGES = 25,
- GBUF_CINEMATIC_FRAMES = 26,
- GBUF_LOAD_DEMO_BUFFER = 27,
- GBUF_SAVE_DEMO_BUFFER = 28,
- GBUF_CINEMATIC_EFFECTS = 29,
- GBUF_MUMMY_HEAD_TURN = 30,
- GBUF_EXTRA_DOOR_STUFF = 31,
- GBUF_EFFECTS_ARRAY = 32,
- GBUF_CREATURE_DATA = 33,
- GBUF_CREATURE_LOT = 34,
- GBUF_SAMPLE_INFOS = 35,
- GBUF_SAMPLES = 36,
- GBUF_SAMPLE_OFFSETS = 37,
- GBUF_ROLLING_BALL_STUFF = 38,
- GBUF_SKIDOO_STUFF = 39,
- GBUF_LOAD_PICTURE_BUFFER = 40,
- GBUF_FMV_BUFFERS = 41,
- GBUF_POLYGON_BUFFERS = 42,
- GBUF_ORDER_TABLES = 43,
- GBUF_CLUTS = 44,
- GBUF_TEXTURE_INFOS = 45,
- GBUF_SPRITE_INFOS = 46,
- GBUF_NUM_MALLOC_TYPES = 47,
-} GAME_BUFFER;
-
-typedef enum { // decompiled
- CLRB_PRIMARY_BUFFER = 0x0001,
- CLRB_BACK_BUFFER = 0x0002,
- CLRB_THIRD_BUFFER = 0x0004,
- CLRB_Z_BUFFER = 0x0008,
- CLRB_RENDER_BUFFER = 0x0010,
- CLRB_PICTURE_BUFFER = 0x0020,
- CLRB_WINDOWED_PRIMARY_BUFFER = 0x0040,
- CLRB_RESERVED = 0x0080,
- CLRB_PHDWINSIZE = 0x0100,
-} CLEAR_BUFFER_FLAGS;
-
-typedef enum {
- AC_NULL = 0,
- AC_MOVE_ORIGIN = 1,
- AC_JUMP_VELOCITY = 2,
- AC_ATTACK_READY = 3,
- AC_DEACTIVATE = 4,
- AC_SOUND_FX = 5,
- AC_EFFECT = 6,
-} ANIM_COMMAND;
-
-typedef enum {
- ACE_ALL = 0,
- ACE_LAND = 1,
- ACE_WATER = 2,
-} ANIM_COMMAND_ENVIRONMENT;
-
-typedef struct __unaligned { // decompiled
- DDPIXELFORMAT pixel_fmt;
- COLOR_BIT_MASKS color_bit_masks;
- DWORD bpp;
-} TEXTURE_FORMAT;
-
-typedef struct __unaligned {
- int32_t boat_turn;
- int32_t left_fallspeed;
- int32_t right_fallspeed;
- int16_t tilt_angle;
- int16_t extra_rotation;
- int32_t water;
- int32_t pitch;
-} BOAT_INFO;
-
-typedef struct __unaligned {
- int16_t track_mesh;
- int32_t skidoo_turn;
- int32_t left_fallspeed;
- int32_t right_fallspeed;
- int16_t momentum_angle;
- int16_t extra_rotation;
- int32_t pitch;
-} SKIDOO_INFO;
-
-typedef struct __unaligned { // decompiled
- int32_t start_height;
- int32_t wait_time;
-} LIFT_INFO;
-
-typedef struct __unaligned {
- struct {
- XYZ_16 min;
- XYZ_16 max;
- } shift, rot;
-} OBJECT_BOUNDS;
-
-typedef struct __unaligned {
- int32_t xv;
- int32_t yv;
- int32_t zv;
-} PORTAL_VBUF;
-
-typedef struct __unaligned {
- BOUNDS_16 bounds;
- XYZ_16 offset;
- int16_t mesh_rots[];
-} FRAME_INFO;
-
-typedef struct __unaligned { // decompiled
- XYZ_16 pos;
- int16_t radius;
- int16_t poly_count;
- int16_t vertex_count;
- XYZ_16 vertex[32];
-} SHADOW_INFO;
-
-typedef struct __unaligned {
- int32_t table[32]; // WIBBLE_SIZE
-} ROOM_LIGHT_TABLE;
-
-typedef struct __unaligned { // decompiled
- XYZ_16 pos;
- int16_t light_base;
- uint8_t light_table_value;
- uint8_t flags;
- int16_t light_adder;
-} ROOM_VERTEX;
-
-typedef struct __unaligned { // decompiled
- XYZ_32 pos;
- XYZ_16 rot;
-} HAIR_SEGMENT;
-
-typedef enum { // decompiled
- TO_OBJECT = 0,
- TO_CAMERA = 1,
- TO_SINK = 2,
- TO_FLIP_MAP = 3,
- TO_FLIP_ON = 4,
- TO_FLIP_OFF = 5,
- TO_TARGET = 6,
- TO_FINISH = 7,
- TO_CD = 8,
- TO_FLIP_EFFECT = 9,
- TO_SECRET = 10,
- TO_BODY_BAG = 11,
-} TRIGGER_OBJECT;
-
-typedef enum { // decompiled
- TT_TRIGGER = 0,
- TT_PAD = 1,
- TT_SWITCH = 2,
- TT_KEY = 3,
- TT_PICKUP = 4,
- TT_HEAVY = 5,
- TT_ANTIPAD = 6,
- TT_COMBAT = 7,
- TT_DUMMY = 8,
- TT_ANTITRIGGER = 9,
-} TRIGGER_TYPE;
-
-typedef enum {
- GF_S_PC_DETAIL_LEVELS = 0,
- GF_S_PC_DEMO_MODE = 1,
- GF_S_PC_SOUND = 2,
- GF_S_PC_CONTROLS = 3,
- GF_S_PC_GAMMA = 4,
- GF_S_PC_SET_VOLUMES = 5,
- GF_S_PC_USER_KEYS = 6,
- GF_S_PC_SAVE_FILE_WARNING = 7,
- GF_S_PC_TRY_AGAIN_QUESTION = 8,
- GF_S_PC_YES = 9,
- GF_S_PC_NO = 10,
- GF_S_PC_SAVE_COMPLETE = 11,
- GF_S_PC_NO_SAVE_GAMES = 12,
- GF_S_PC_NONE_VALID = 13,
- GF_S_PC_SAVE_GAME_QUESTION = 14,
- GF_S_PC_EMPTY_SLOT = 15,
- GF_S_PC_OFF = 16,
- GF_S_PC_ON = 17,
- GF_S_PC_SETUP_SOUND_CARD = 18,
- GF_S_PC_DEFAULT_KEYS = 19,
- GF_S_PC_DOZY = 20,
- GF_S_PC_NUMBER_OF = 41,
-} GF_PC_STRING;
-
-typedef enum {
- GF_S_GAME_HEADING_INVENTORY = 0,
- GF_S_GAME_HEADING_OPTION = 1,
- GF_S_GAME_HEADING_ITEMS = 2,
- GF_S_GAME_HEADING_GAME_OVER = 3,
- GF_S_GAME_PASSPORT_LOAD_GAME = 4,
- GF_S_GAME_PASSPORT_SAVE_GAME = 5,
- GF_S_GAME_PASSPORT_NEW_GAME = 6,
- GF_S_GAME_PASSPORT_RESTART_LEVEL = 7,
- GF_S_GAME_PASSPORT_EXIT_TO_TITLE = 8,
- GF_S_GAME_PASSPORT_EXIT_DEMO = 9,
- GF_S_GAME_PASSPORT_EXIT_GAME = 10,
- GF_S_GAME_PASSPORT_SELECT_LEVEL = 11,
- GF_S_GAME_PASSPORT_SAVE_POSITION = 12,
- GF_S_GAME_DETAIL_SELECT_DETAIL = 13,
- GF_S_GAME_DETAIL_HIGH = 14,
- GF_S_GAME_DETAIL_MEDIUM = 15,
- GF_S_GAME_DETAIL_LOW = 16,
- GF_S_GAME_KEYMAP_WALK = 17,
- GF_S_GAME_KEYMAP_ROLL = 18,
- GF_S_GAME_KEYMAP_RUN = 19,
- GF_S_GAME_KEYMAP_LEFT = 20,
- GF_S_GAME_KEYMAP_RIGHT = 21,
- GF_S_GAME_KEYMAP_BACK = 22,
- GF_S_GAME_KEYMAP_STEP_LEFT = 23,
- GF_S_GAME_KEYMAP_RESERVED_1 = 24,
- GF_S_GAME_KEYMAP_STEP_RIGHT = 25,
- GF_S_GAME_KEYMAP_RESERVED_2 = 26,
- GF_S_GAME_KEYMAP_LOOK = 27,
- GF_S_GAME_KEYMAP_JUMP = 28,
- GF_S_GAME_KEYMAP_ACTION = 29,
- GF_S_GAME_KEYMAP_DRAW_WEAPON = 30,
- GF_S_GAME_KEYMAP_RESERVED_3 = 31,
- GF_S_GAME_KEYMAP_INVENTORY = 32,
- GF_S_GAME_KEYMAP_FLARE = 33,
- GF_S_GAME_KEYMAP_STEP = 34,
- GF_S_GAME_INV_ITEM_STATISTICS = 35,
- GF_S_GAME_INV_ITEM_PISTOLS = 36,
- GF_S_GAME_INV_ITEM_SHOTGUN = 37,
- GF_S_GAME_INV_ITEM_MAGNUMS = 38,
- GF_S_GAME_INV_ITEM_UZIS = 39,
- GF_S_GAME_INV_ITEM_HARPOON = 40,
- GF_S_GAME_INV_ITEM_M16 = 41,
- GF_S_GAME_INV_ITEM_GRENADE = 42,
- GF_S_GAME_INV_ITEM_FLARE = 43,
- GF_S_GAME_INV_ITEM_PISTOL_AMMO = 44,
- GF_S_GAME_INV_ITEM_SHOTGUN_AMMO = 45,
- GF_S_GAME_INV_ITEM_MAGNUM_AMMO = 46,
- GF_S_GAME_INV_ITEM_UZI_AMMO = 47,
- GF_S_GAME_INV_ITEM_HARPOON_AMMO = 48,
- GF_S_GAME_INV_ITEM_M16_AMMO = 49,
- GF_S_GAME_INV_ITEM_GRENADE_AMMO = 50,
- GF_S_GAME_INV_ITEM_SMALL_MEDIPACK = 51,
- GF_S_GAME_INV_ITEM_LARGE_MEDIPACK = 52,
- GF_S_GAME_INV_ITEM_PICKUP = 53,
- GF_S_GAME_INV_ITEM_PUZZLE = 54,
- GF_S_GAME_INV_ITEM_KEY = 55,
- GF_S_GAME_INV_ITEM_GAME = 56,
- GF_S_GAME_INV_ITEM_LARA_HOME = 57,
- GF_S_GAME_MISC_LOADING = 58,
- GF_S_GAME_MISC_TIME_TAKEN = 59,
- GF_S_GAME_MISC_SECRETS_FOUND = 60,
- GF_S_GAME_MISC_LOCATION = 61,
- GF_S_GAME_MISC_KILLS = 62,
- GF_S_GAME_MISC_AMMO_USED = 63,
- GF_S_GAME_MISC_HITS = 64,
- GF_S_GAME_MISC_SAVES_PERFORMED = 65,
- GF_S_GAME_MISC_DISTANCE_TRAVELLED = 66,
- GF_S_GAME_MISC_HEALTH_PACKS_USED = 67,
- GF_S_GAME_MISC_RELEASE_VERSION = 68,
- GF_S_GAME_MISC_NONE = 69,
- GF_S_GAME_MISC_FINISH = 70,
- GF_S_GAME_MISC_BEST_TIMES = 71,
- GF_S_GAME_MISC_NO_TIMES_SET = 72,
- GF_S_GAME_MISC_NA = 73,
- GF_S_GAME_MISC_CURRENT_POSITION = 74,
- GF_S_GAME_MISC_FINAL_STATISTICS = 75,
- GF_S_GAME_MISC_OF = 76,
- GF_S_GAME_MISC_STORY_SO_FAR = 77,
- GF_S_GAME_NUMBER_OF = 89,
-} GF_GAME_STRING;
-
-typedef enum {
- GF_ADD_INV_PISTOLS = 0,
- GF_ADD_INV_SHOTGUN = 1,
- GF_ADD_INV_MAGNUMS = 2,
- GF_ADD_INV_UZIS = 3,
- GF_ADD_INV_HARPOON = 4,
- GF_ADD_INV_M16 = 5,
- GF_ADD_INV_GRENADE = 6,
- GF_ADD_INV_PISTOL_AMMO = 7,
- GF_ADD_INV_SHOTGUN_AMMO = 8,
- GF_ADD_INV_MAGNUM_AMMO = 9,
- GF_ADD_INV_UZI_AMMO = 10,
- GF_ADD_INV_HARPOON_AMMO = 11,
- GF_ADD_INV_M16_AMMO = 12,
- GF_ADD_INV_GRENADE_AMMO = 13,
- GF_ADD_INV_FLARES = 14,
- GF_ADD_INV_SMALL_MEDI = 15,
- GF_ADD_INV_LARGE_MEDI = 16,
- GF_ADD_INV_PICKUP_1 = 17,
- GF_ADD_INV_PICKUP_2 = 18,
- GF_ADD_INV_PUZZLE_1 = 19,
- GF_ADD_INV_PUZZLE_2 = 20,
- GF_ADD_INV_PUZZLE_3 = 21,
- GF_ADD_INV_PUZZLE_4 = 22,
- GF_ADD_INV_KEY_1 = 23,
- GF_ADD_INV_KEY_2 = 24,
- GF_ADD_INV_KEY_3 = 25,
- GF_ADD_INV_KEY_4 = 26,
- GF_ADD_INV_NUMBER_OF = 27,
-} GF_ADD_INV;
-
-typedef enum {
- IT_NAME = 0,
- IT_QTY = 1,
- IT_NUMBER_OF = 2,
-} INV_TEXT;
-
-typedef enum {
- REQ_CENTER = 0x00,
- REQ_USE = 0x01,
- REQ_ALIGN_LEFT = 0x02,
- REQ_ALIGN_RIGHT = 0x04,
- REQ_HEADING = 0x08,
- REQ_BEST_TIME = 0x10,
- REQ_NORMAL_TIME = 0x20,
- REQ_NO_TIME = 0x40,
-} REQUESTER_FLAGS;
-
-
-# FUNCTIONS
-# Flags:
-# - to do
-# * to do, called by TR2X
-# x unused
-# + fully decompiled
-# @ not decompiled, but implemented via different means
-# Offset Size Flags Declaration
-
-# 3dsystem/3d_gen.c
-0x00401000 0x01D0 + void __cdecl Matrix_GenerateW2V(PHD_3DPOS *viewpos);
-0x004011D0 0x0072 + void __cdecl Matrix_LookAt(int32_t xsrc, int32_t ysrc, int32_t zsrc, int32_t xtar, int32_t ytar, int32_t ztar, int16_t roll);
-0x00401250 0x0078 + void __cdecl Math_GetVectorAngles(int32_t x, int32_t y, int32_t z, int16_t *dest);
-0x004012D0 0x00AA + void __cdecl Matrix_RotX(int16_t rx);
-0x00401380 0x00A8 + void __cdecl Matrix_RotY(int16_t ry);
-0x00401430 0x00A8 + void __cdecl Matrix_RotZ(int16_t rz);
-0x004014E0 0x01DC + void __cdecl Matrix_RotYXZ(int16_t ry, int16_t rx, int16_t rz);
-0x004016C0 0x01E7 + void __cdecl Matrix_RotYXZpack(uint32_t rpack);
-0x004018B0 0x00AB + bool __cdecl Matrix_TranslateRel(int32_t x, int32_t y, int32_t z);
-0x00401960 0x007A + void __cdecl Matrix_TranslateAbs(int32_t x, int32_t y, int32_t z);
-0x004019E0 0x00F3 + void __cdecl Output_InsertPolygons(const int16_t *obj_ptr, int32_t clip);
-0x00401AE0 0x00EA + void __cdecl Output_InsertRoom(const int16_t *obj_ptr, int32_t is_outside);
-0x00401BD0 0x0032 + const int16_t *__cdecl Output_CalcSkyboxLight(const int16_t *obj_ptr);
-0x00401C10 0x0134 + void __cdecl Output_InsertSkybox(const int16_t *obj_ptr);
-0x00401D50 0x0001 x void __cdecl Output_InsertInventoryBackground(const int16_t *obj_ptr);
-0x00401D60 0x01D5 + const int16_t *__cdecl Output_CalcObjectVertices(const int16_t *obj_ptr);
-0x00401F40 0x016D + const int16_t *__cdecl Output_CalcVerticeLight(const int16_t *obj_ptr);
-0x004020B0 0x027D + const int16_t *__cdecl Output_CalcRoomVertices(const int16_t *obj_ptr, int32_t far_clip);
-0x00402330 0x00C7 + void __cdecl Output_RotateLight(int16_t pitch, int16_t yaw);
-0x00402400 0x0039 + void __cdecl Output_InitPolyList(void);
-0x00402430 0x0033 + void __cdecl Output_SortPolyList(void);
-0x00402470 0x00C5 + void __cdecl Output_QuickSort(int32_t left, int32_t right);
-0x00402540 0x0036 + void __cdecl Output_PrintPolyList(uint8_t *surface_ptr);
-0x00402580 0x00A1 + void __cdecl Output_AlterFOV(int16_t fov);
-0x00402690 0x0095 + void __cdecl Output_SetNearZ(int32_t near_z);
-0x004026E0 0x006B + void __cdecl Output_SetFarZ(int32_t far_z);
-0x00402700 0x0266 + void __cdecl Output_Init(int16_t x, int16_t y, int32_t width, int32_t height, int32_t near_z, int32_t far_z, int16_t view_angle, int32_t screen_width, int32_t screen_height);
-
-# 3dsystem/3d_out.c
-0x00402970 0x019F + void __cdecl Output_DrawPolyLine(const int16_t *obj_ptr);
-0x00402B10 0x0035 + void __cdecl Output_DrawPolyFlat(const int16_t *obj_ptr);
-0x00402B50 0x0035 + void __cdecl Output_DrawPolyTrans(const int16_t *obj_ptr);
-0x00402B90 0x0035 + void __cdecl Output_DrawPolyGouraud(const int16_t *obj_ptr);
-0x00402BD0 0x003C + void __cdecl Output_DrawPolyGTMap(const int16_t *obj_ptr);
-0x00402C10 0x003C + void __cdecl Output_DrawPolyWGTMap(const int16_t *obj_ptr);
-0x00402C50 0x00D2 + int32_t __cdecl Output_XGenX(const int16_t *obj_ptr);
-0x00402D30 0x0146 + int32_t __cdecl Output_XGenXG(const int16_t *obj_ptr);
-0x00402E80 0x0219 + int32_t __cdecl Output_XGenXGUV(const int16_t *obj_ptr);
-0x004030A0 0x0284 + int32_t __cdecl Output_XGenXGUVPerspFP(const int16_t *obj_ptr);
-0x00403330 0x0FC6 + void __cdecl Output_GTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
-0x00404300 0x14C4 + void __cdecl Output_WGTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
-0x004057D0 0x0037 + void __cdecl Output_DrawPolyGTMapPersp(const int16_t *obj_ptr);
-0x00405810 0x0037 + void __cdecl Output_DrawPolyWGTMapPersp(const int16_t *obj_ptr);
-
-# 3dsystem/3dinsert.c
-0x00405850 0x006C + int32_t __cdecl Output_VisibleZClip(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2);
-0x004058C0 0x0140 + int32_t __cdecl Output_ZedClipper(int32_t vtx_count, POINT_INFO *pts, VERTEX_INFO *vtx);
-0x00405A00 0x0511 + int32_t __cdecl Output_XYGUVClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-0x00405F20 0x0A5C + const int16_t *__cdecl Output_InsertObjectGT4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x00406980 0x0872 + const int16_t *__cdecl Output_InsertObjectGT3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x00407200 0x0422 + int32_t __cdecl Output_XYGClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-0x00407630 0x03D1 + const int16_t *__cdecl Output_InsertObjectG4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x00407A10 0x031B + const int16_t *__cdecl Output_InsertObjectG3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x00407D30 0x02D0 + int32_t __cdecl Output_XYClipper(int32_t vtx_count, VERTEX_INFO *vtx);
-0x00408000 0x04A4 + void __cdecl Output_InsertTrans8(const PHD_VBUF *vbuf, int16_t shade);
-0x004084B0 0x00D3 + void __cdecl Output_InsertTransQuad(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
-0x00408590 0x00CB + void __cdecl Output_InsertFlatRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x00408660 0x00B5 + void __cdecl Output_InsertLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x00408720 0x0642 + void __cdecl Output_InsertGT3_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2);
-0x00408D70 0x0140 + void __cdecl Output_DrawClippedPoly_Textured(int32_t vtx_count);
-0x00408EB0 0x0444 + void __cdecl Output_InsertGT4_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture);
-0x00409300 0x0091 + const int16_t *__cdecl Output_InsertObjectGT4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x004093A0 0x00AA + const int16_t *__cdecl Output_InsertObjectGT3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x00409450 0x039C + const int16_t *__cdecl Output_InsertObjectG4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x004097F0 0x00F7 + void __cdecl Output_DrawPoly_Gouraud(int32_t vtx_count, int32_t red, int32_t green, int32_t blue);
-0x004098F0 0x02D3 + const int16_t *__cdecl Output_InsertObjectG3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x00409BD0 0x01C9 + void __cdecl Output_InsertFlatRect_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x00409DA0 0x0133 + void __cdecl Output_InsertLine_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x00409EE0 0x0706 + void __cdecl Output_InsertGT3_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2, SORT_TYPE sort_type);
-0x0040A5F0 0x01AC + void __cdecl Output_InsertClippedPoly_Textured(int32_t vtx_count, float z, int16_t poly_type, int16_t tex_page);
-0x0040A7A0 0x04D7 + void __cdecl Output_InsertGT4_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture, SORT_TYPE sort_type);
-0x0040AC80 0x008C + const int16_t *__cdecl Output_InsertObjectGT4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x0040AD10 0x009F + const int16_t *__cdecl Output_InsertObjectGT3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x0040ADB0 0x043B + const int16_t *__cdecl Output_InsertObjectG4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x0040B1F0 0x0175 + void __cdecl Output_InsertPoly_Gouraud(int32_t vtx_count, float z, int32_t red, int32_t green, int32_t blue, int16_t poly_type);
-0x0040B370 0x0343 + const int16_t *__cdecl Output_InsertObjectG3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x0040B6C0 0x0347 + void __cdecl Output_InsertSprite_Sorted(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
-0x0040BA10 0x017F + void __cdecl Output_InsertFlatRect_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x0040BB90 0x012B + void __cdecl Output_InsertLine_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x0040BCC0 0x0195 + void __cdecl Output_InsertTrans8_Sorted(const PHD_VBUF *vbuf, int16_t shade);
-0x0040BE60 0x013D + void __cdecl Output_InsertTransQuad_Sorted(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
-0x0040BFA0 0x00A7 + void __cdecl Output_InsertSprite(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
-
-# 3dsystem/scalespr.c
-0x0040C050 0x02C7 + void __cdecl Output_DrawSprite(uint32_t flags, int32_t x, int32_t y, int32_t z, int16_t sprite_idx, int16_t shade, int16_t scale);
-0x0040C320 0x0085 + void __cdecl Output_DrawPickup(int32_t sx, int32_t sy, int32_t scale, int16_t sprite_idx, int16_t shade);
-0x0040C3B0 0x0152 + const int16_t *__cdecl Output_InsertRoomSprite(const int16_t *obj_ptr, int32_t vtx_count);
-0x0040C510 0x0096 + void __cdecl Output_DrawScreenSprite2D(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
-0x0040C5B0 0x009D + void __cdecl Output_DrawScreenSprite(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
-0x0040C650 0x0223 + void __cdecl Output_DrawScaledSpriteC(const int16_t *obj_ptr);
-
-# game/bird.c
-0x0040C880 0x0089 + void __cdecl Bird_Initialise(int16_t item_num);
-0x0040C910 0x0200 + void __cdecl Bird_Control(int16_t item_num);
-
-# game/boat.c
-0x0040CB30 0x003C + void __cdecl Boat_Initialise(int16_t item_num);
-0x0040CB70 0x0170 + int32_t __cdecl Boat_CheckGetOn(int16_t item_num, COLL_INFO *coll);
-0x0040CCE0 0x015E + void __cdecl Boat_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x0040CE40 0x00F8 + int32_t __cdecl Boat_TestWaterHeight(ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
-0x0040CF40 0x01C1 + void __cdecl Boat_DoShift(int32_t boat_num);
-0x0040D110 0x0174 + void __cdecl Boat_DoWakeEffect(ITEM *boat);
-0x0040D290 0x004B + int32_t __cdecl Boat_DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
-0x0040D2E0 0x04DD + int32_t __cdecl Boat_Dynamics(int16_t boat_num);
-0x0040D7C0 0x0187 + int32_t __cdecl Boat_UserControl(ITEM *boat);
-0x0040D950 0x0169 + void __cdecl Boat_Animation(ITEM *boat, int32_t collide);
-0x0040DAC0 0x062A + void __cdecl Boat_Control(int16_t item_num);
-0x0040E0F0 0x00B3 + void __cdecl Gondola_Control(int16_t item_num);
-
-# game/box.c
-0x0040E1B0 0x002F + void __cdecl Creature_Initialise(int16_t item_num);
-0x0040E1E0 0x0047 + int32_t __cdecl Creature_Activate(int16_t item_num);
-0x0040E230 0x0242 + void __cdecl Creature_AIInfo(ITEM *item, AI_INFO *info);
-0x0040E490 0x01F3 + int32_t __cdecl Box_SearchLOT(LOT_INFO *lot, int32_t expansion);
-0x0040E690 0x006F + int32_t __cdecl Box_UpdateLOT(LOT_INFO *lot, int32_t expansion);
-0x0040E700 0x0095 + void __cdecl Box_TargetBox(LOT_INFO *lot, int16_t box_num);
-0x0040E7A0 0x00F2 + int32_t __cdecl Box_StalkBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
-0x0040E8A0 0x00A4 + int32_t __cdecl Box_EscapeBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
-0x0040E950 0x00A7 + int32_t __cdecl Box_ValidBox(const ITEM *item, int16_t zone_num, int16_t box_num);
-0x0040EA00 0x043F + void __cdecl Creature_Mood(ITEM *item, AI_INFO *info, int32_t violent);
-0x0040EE70 0x0459 + TARGET_TYPE __cdecl Box_CalculateTarget(XYZ_32 *target, ITEM *item, LOT_INFO *lot);
-0x0040F2D0 0x00F8 + int32_t __cdecl Creature_CheckBaddieOverlap(int16_t item_num);
-0x0040F3D0 0x008B + int32_t __cdecl Box_BadFloor(int32_t x, int32_t y, int32_t z, int32_t box_height, int32_t next_height, int16_t room_num, LOT_INFO *lot);
-0x0040F460 0x00B8 + void __cdecl Creature_Die(int16_t item_num, int32_t explode);
-0x0040F520 0x08CC + int32_t __cdecl Creature_Animate(int16_t item_num, int16_t angle, int16_t tilt);
-0x0040FDF0 0x00D5 + int16_t __cdecl Creature_Turn(ITEM *item, int16_t maximum_turn);
-0x0040FED0 0x0035 + void __cdecl Creature_Tilt(ITEM *item, int16_t angle);
-0x0040FF10 0x0049 + void __cdecl Creature_Head(ITEM *item, int16_t required);
-0x0040FF60 0x004E + void __cdecl Creature_Neck(ITEM *item, int16_t required);
-0x0040FFB0 0x00A8 + void __cdecl Creature_Float(int16_t item_num);
-0x00410060 0x0050 + void __cdecl Creature_Underwater(ITEM *item, int32_t depth);
-0x004100B0 0x005C + int16_t __cdecl Creature_Effect(ITEM *item, BITE *bite, int16_t (*__cdecl spawn)(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num));
-0x00410110 0x0131 + int32_t __cdecl Creature_Vault(int16_t item_num, int16_t angle, int32_t vault, int32_t shift);
-0x00410250 0x016F + void __cdecl Creature_Kill(ITEM *item, int32_t kill_anim, int32_t kill_state, int32_t lara_kill_state);
-0x004103C0 0x01DB + void __cdecl Creature_GetBaddieTarget(int16_t item_num, int32_t goody);
-
-# game/camera.c
-0x004105A0 0x00B0 + void __cdecl Camera_Initialise(void);
-0x00410650 0x0372 + void __cdecl Camera_Move(const GAME_VECTOR *target, int32_t speed);
-0x004109D0 0x00D7 + void __cdecl Camera_Clip(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
-0x00410AB0 0x0154 + void __cdecl Camera_Shift(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
-0x00410C10 0x0050 + const SECTOR *__cdecl Camera_GoodPosition(int32_t x, int32_t y, int32_t z, int16_t room_num);
-0x00410C60 0x0781 + void __cdecl Camera_SmartShift(GAME_VECTOR *target, void (*__cdecl shift)(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom));
-0x004113F0 0x00ED + void __cdecl Camera_Chase(const ITEM *item);
-0x004114E0 0x019E + int32_t __cdecl Camera_ShiftClamp(GAME_VECTOR *pos, int32_t clamp);
-0x00411680 0x018E + void __cdecl Camera_Combat(const ITEM *item);
-0x00411810 0x01E2 + void __cdecl Camera_Look(const ITEM *item);
-0x00411A00 0x0099 + void __cdecl Camera_Fixed(void);
-0x00411AA0 0x04A9 + void __cdecl Camera_Update(void);
-
-# game/cinema.c
-0x00411F50 0x000A + void __cdecl Game_SetCutsceneTrack(int32_t track);
-0x00411F60 0x0112 + int32_t __cdecl Game_Cutscene_Start(int32_t level_num);
-0x00412080 0x0093 + void __cdecl Room_InitCinematic(void);
-0x00412120 0x016F + int32_t __cdecl Game_Cutscene_Control(int32_t nframes);
-0x00412290 0x0138 + void __cdecl Camera_UpdateCutscene(void);
-0x004123D0 0x007F +R int32_t __cdecl Room_FindByPos(int32_t x, int32_t y, int32_t z);
-0x00412450 0x00DC + void __cdecl CutscenePlayer_Control(int16_t item_num);
-0x00412530 0x0096 + void __cdecl Lara_Control_Cutscene(int16_t item_num);
-0x004125D0 0x008F +R void __cdecl CutscenePlayer1_Initialise(int16_t item_num);
-0x00412660 0x0033 +R void __cdecl CutscenePlayerGen_Initialise(int16_t item_num);
-0x004126A0 0x0245 + void __cdecl Camera_LoadCutsceneFrame(void);
-
-# game/collide.c
-0x004128F0 0x067C + void __cdecl Collide_GetCollisionInfo(COLL_INFO *coll, int32_t xpos, int32_t ypos, int32_t zpos, int16_t room_num, int32_t obj_height);
-0x00412FB0 0x002F + int32_t __cdecl Room_FindGridShift(int32_t src, int32_t dst);
-0x00412FE0 0x03D2 + int32_t __cdecl Collide_CollideStaticObjects(COLL_INFO *coll, int32_t x, int32_t y, int32_t z, int16_t room_num, int32_t height);
-0x004133D0 0x00C8 + void __cdecl Room_GetNearbyRooms(int32_t x, int32_t y, int32_t z, int32_t r, int32_t h, int16_t room_num);
-0x004134A0 0x0055 + void __cdecl Room_GetNewRoom(int32_t x, int32_t y, int32_t z, int16_t room_num);
-0x00413500 0x0037 + void __cdecl Item_ShiftCol(ITEM *item, COLL_INFO *coll);
-0x00413540 0x005D + void __cdecl Item_UpdateRoom(ITEM *item, int32_t height);
-0x004135A0 0x0099 + int16_t __cdecl Room_GetTiltType(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-0x00413640 0x0195 + void __cdecl Lara_BaddieCollision(ITEM *lara_item, COLL_INFO *coll);
-0x004137E0 0x0079 + void __cdecl Lara_TakeHit(ITEM *lara_item, COLL_INFO *coll);
-0x00413860 0x0078 + void __cdecl Creature_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x004138E0 0x0055 + void __cdecl Object_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00413940 0x0077 + void __cdecl Door_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x004139C0 0x0067 + void __cdecl Object_Collision_Trap(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00413A30 0x0306 + void __cdecl Lara_Push(ITEM *item, ITEM *lara_item, COLL_INFO *coll, int32_t spaz_on, int32_t big_push);
-0x00413D40 0x00CB + int32_t __cdecl Item_TestBoundsCollide(const ITEM *src_item, const ITEM *dst_item, int32_t radius);
-0x00413E10 0x0137 + int32_t __cdecl Item_TestPosition(int16_t *bounds, ITEM *src_item, ITEM *dst_item);
-0x00413F50 0x013B + void __cdecl Item_AlignPosition(XYZ_32 *vec, ITEM *src_item, ITEM *dst_item);
-0x00414090 0x0187 + int32_t __cdecl Lara_MovePosition(XYZ_32 *vec, ITEM *item, ITEM *lara_item);
-0x00414220 0x016E +R int32_t __cdecl Misc_Move3DPosTo3DPos(PHD_3DPOS *src_pos, const PHD_3DPOS *dest_pos, int32_t velocity, int16_t ang_add);
-
-# game/control.c
-0x00414390 0x0356 + int32_t __cdecl Game_Control(int32_t nframes, int32_t demo_mode);
-0x004146F0 0x0338 + void __cdecl Item_Animate(ITEM *item);
-0x00414A60 0x00AB + int32_t __cdecl Item_GetAnimChange(ITEM *item, const ANIM *anim);
-0x00414B10 0x005F + void __cdecl Item_Translate(ITEM *item, int32_t x, int32_t y, int32_t z);
-0x00414B70 0x0198 + SECTOR *__cdecl Room_GetSector(int32_t x, int32_t y, int32_t z, int16_t *room_num);
-0x00414D10 0x0168 + int32_t __cdecl Room_GetWaterHeight(int32_t x, int32_t y, int32_t z, int16_t room_num);
-0x00414E80 0x0265 + int32_t __cdecl Room_GetHeight(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-0x00415100 0x00E7 + void __cdecl Camera_Legacy_RefreshFromTrigger(int16_t type, const int16_t *data);
-0x004151F0 0x0690 + void __cdecl Room_Legacy_TestTriggers(int16_t *data, int32_t heavy);
-0x004158D0 0x0055 + int32_t __cdecl Item_IsTriggerActive(ITEM *item);
-0x00415930 0x023D + int32_t __cdecl Room_GetCeiling(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
-0x00415B90 0x004E + int16_t __cdecl Room_Legacy_GetDoor(const SECTOR *sector);
-0x00415BE0 0x00A0 + int32_t __cdecl LOS_Check(const GAME_VECTOR *start, GAME_VECTOR *target);
-0x00415C80 0x02EB + int32_t __cdecl LOS_CheckZ(const GAME_VECTOR *start, GAME_VECTOR *target);
-0x00415F70 0x02EC + int32_t __cdecl LOS_CheckX(const GAME_VECTOR *start, GAME_VECTOR *target);
-0x00416260 0x00DA + int32_t __cdecl LOS_ClipTarget(const GAME_VECTOR *start, GAME_VECTOR *target, const SECTOR *sector);
-0x00416340 0x02FE + int32_t __cdecl LOS_CheckSmashable(const GAME_VECTOR *start, GAME_VECTOR *target);
-0x00416640 0x00B3 + void __cdecl Room_FlipMap(void);
-0x00416700 0x0096 + void __cdecl Room_RemoveFlipItems(ROOM *r);
-0x004167A0 0x005C + void __cdecl Room_AddFlipItems(ROOM *r);
-0x00416800 0x0024 + void __cdecl Room_Legacy_TriggerMusicTrack(int16_t value, int16_t flags, int16_t type);
-0x00416830 0x00DA + void __cdecl Room_TriggerMusicTrackImpl(int16_t value, int16_t flags, int16_t type);
-
-# game/demo.c
-0x00416910 0x0059 + int32_t __cdecl Demo_Control(int32_t level_num);
-0x00416970 0x01B0 + int32_t __cdecl Demo_Start(int32_t level_num);
-0x00416B20 0x00CD + void __cdecl Demo_LoadLaraPos(void);
-0x00416BF0 0x002D + void __cdecl Demo_GetInput(void);
-
-# game/diver.c
-0x00416C20 0x007A + int16_t __cdecl Diver_Harpoon(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-0x00416CA0 0x0106 + int32_t __cdecl Diver_GetWaterSurface(int32_t x, int32_t y, int32_t z, int16_t room_num);
-0x00416DB0 0x0389 + void __cdecl Diver_Control(int16_t item_num);
-
-# game/dog.c
-0x00417160 0x0387 + void __cdecl Dog_Control(int16_t item_num);
-0x00417510 0x027E + void __cdecl Tiger_Control(int16_t item_num);
-
-# game/dragon.c
-0x004177B0 0x017F + void __cdecl Twinkle_Control(int16_t fx_num);
-0x00417930 0x00D9 +R void __cdecl Effect_CreateBartoliLight(int16_t item_num);
-0x00417A10 0x00AB +R int16_t __cdecl Effect_MissileFlame(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-0x00417AC0 0x02ED + void __cdecl Dragon_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00417DB0 0x00D9 +R void __cdecl Dragon_Bones(int16_t item_num);
-0x00417E90 0x0519 + void __cdecl Dragon_Control(int16_t back_num);
-0x004183E0 0x0114 + void __cdecl Bartoli_Initialise(int16_t item_num);
-0x00418500 0x0193 + void __cdecl Bartoli_Control(int16_t item_num);
-0x004186A0 0x0287 + void __cdecl TRex_Control(int16_t item_num);
-
-# game/draw.c
-0x00418950 0x0037 + int32_t __cdecl Game_DrawCinematic(void);
-0x00418990 0x0037 + int32_t __cdecl Game_Draw(void);
-0x004189D0 0x02B0 + void __cdecl Room_DrawAllRooms(int16_t current_room);
-0x00418C80 0x01C6 + void __cdecl Room_GetBounds(void);
-0x00418E50 0x037F + void __cdecl Room_SetBounds(const int16_t *objptr, int32_t room_num, ROOM *parent);
-0x004191D0 0x03D2 + void __cdecl Room_Clip(ROOM *r);
-0x004195B0 0x00B4 + void __cdecl Room_DrawSingleRoomGeometry(int16_t room_num);
-0x00419670 0x0218 + void __cdecl Room_DrawSingleRoomObjects(int16_t room_num);
-0x00419890 0x0147 + void __cdecl Effect_Draw(int16_t fx_num);
-0x004199E0 0x0083 + void __cdecl Object_DrawSpriteItem(const ITEM *item);
-0x00419A70 0x0378 + void __cdecl Object_DrawAnimatingItem(const ITEM *item);
-0x00419DF0 0x0D02 + void __cdecl Lara_Draw(const ITEM *item);
-0x0041AB20 0x0BC6 + void __cdecl Lara_Draw_I(const ITEM *item, const FRAME_INFO *frame1, const FRAME_INFO *frame2, int32_t frac, int32_t rate);
-0x0041B710 0x0034 + void __cdecl Matrix_InitInterpolate(int32_t frac, int32_t rate);
-0x0041B750 0x0022 + void __cdecl Matrix_Pop_I(void);
-0x0041B780 0x0027 + void __cdecl Matrix_Push_I(void);
-0x0041B7B0 0x0031 + void __cdecl Matrix_RotY_I(int16_t ang);
-0x0041B7F0 0x0031 + void __cdecl Matrix_RotX_I(int16_t ang);
-0x0041B830 0x0031 + void __cdecl Matrix_RotZ_I(int16_t ang);
-0x0041B870 0x0041 + void __cdecl Matrix_TranslateRel_I(int32_t x, int32_t y, int32_t z);
-0x0041B8C0 0x0047 + void __cdecl Matrix_TranslateRel_ID(int32_t x, int32_t y, int32_t z, int32_t x2, int32_t y2, int32_t z2);
-0x0041B910 0x0041 + void __cdecl Matrix_RotYXZ_I(int16_t y, int16_t x, int16_t z);
-0x0041B960 0x003D + void __cdecl Matrix_RotYXZsuperpack_I(const int16_t **pprot1, const int16_t **pprot2, int32_t skip);
-0x0041B9A0 0x00A1 + void __cdecl Matrix_RotYXZsuperpack(const int16_t **pprot, int32_t skip);
-0x0041BA50 0x002A + void __cdecl Output_InsertPolygons_I(int16_t *ptr, int32_t clip);
-0x0041BA80 0x01A5 + void __cdecl Matrix_Interpolate(void);
-0x0041BC30 0x00FC + void __cdecl Matrix_InterpolateArm(void);
-0x0041BD30 0x014B + void __cdecl Gun_DrawFlash(LARA_GUN_TYPE weapon_type, int32_t clip);
-0x0041BEA0 0x00E8 + void __cdecl Output_CalculateObjectLighting(const ITEM *item, const BOUNDS_16 *bounds);
-0x0041BF90 0x0092 + int32_t __cdecl Item_GetFrames(const ITEM *item, FRAME_INFO *frmptr[], int32_t *rate);
-0x0041C030 0x007C + BOUNDS_16 *__cdecl Item_GetBoundsAccurate(const ITEM *item);
-0x0041C0B0 0x0035 + FRAME_INFO *__cdecl Item_GetBestFrame(const ITEM *item);
-0x0041C0F0 0x0048 + void __cdecl Output_AddDynamicLight(int32_t x, int32_t y, int32_t z, int32_t intensity, int32_t falloff);
-
-# game/eel.c
-0x0041C140 0x019D + void __cdecl BigEel_Control(int16_t item_num);
-0x0041C2E0 0x01E1 + void __cdecl Eel_Control(int16_t item_num);
-
-# game/effects.c
-0x0041C4D0 0x008C + int32_t __cdecl Lara_IsNearItem(PHD_3DPOS *pos, int32_t distance);
-0x0041C560 0x0068 + void __cdecl Sound_UpdateEffects(void);
-0x0041C5D0 0x0059 +R int16_t __cdecl DoBloodSplat(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num);
-0x0041C630 0x00A4 +R void __cdecl DoLotsOfBlood(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num, int32_t num);
-0x0041C6E0 0x0082 + void __cdecl Blood_Control(int16_t fx_num);
-0x0041C770 0x007F + void __cdecl Explosion_Control(int16_t fx_num);
-0x0041C7F0 0x0072 +R void __cdecl Ricochet(GAME_VECTOR *pos);
-0x0041C870 0x0030 + void __cdecl Ricochet_Control(int16_t fx_num);
-0x0041C8A0 0x0064 +R void __cdecl CreateBubble(XYZ_32 *pos, int16_t room_num);
-0x0041C910 0x0078 + void __cdecl FX_Bubbles(ITEM *item);
-0x0041C990 0x00F3 + void __cdecl Bubble_Control(int16_t fx_num);
-0x0041CA90 0x00C2 +R void __cdecl Splash(ITEM *item);
-0x0041CB60 0x0071 +R void __cdecl Splash_Control(int16_t fx_num);
-0x0041CBE0 0x00AE + void __cdecl WaterSprite_Control(int16_t fx_num);
-0x0041CC90 0x008C + void __cdecl SnowSprite_Control(int16_t fx_num);
-0x0041CD20 0x00DE + void __cdecl HotLiquid_Control(int16_t fx_num);
-0x0041CE00 0x013D + void __cdecl Waterfall_Control(int16_t item_num);
-0x0041CF40 0x000B + void __cdecl FX_FinishLevel(ITEM *item);
-0x0041CF50 0x0016 + void __cdecl FX_Turn180(ITEM *item);
-0x0041CF70 0x0096 + void __cdecl FX_FloorShake(ITEM *item);
-0x0041D010 0x0040 + void __cdecl FX_LaraNormal(ITEM *item);
-0x0041D050 0x001C + void __cdecl FX_Boiler(ITEM *item);
-0x0041D070 0x008F + void __cdecl FX_Flood(ITEM *item);
-0x0041D100 0x0023 + void __cdecl FX_Rubble(ITEM *item);
-0x0041D130 0x002C + void __cdecl FX_Chandelier(ITEM *item);
-0x0041D160 0x0023 + void __cdecl FX_Explosion(ITEM *item);
-0x0041D190 0x001C + void __cdecl FX_Piston(ITEM *item);
-0x0041D1B0 0x001C + void __cdecl FX_Curtain(ITEM *item);
-0x0041D1D0 0x001C + void __cdecl FX_Statue(ITEM *item);
-0x0041D1F0 0x001C + void __cdecl FX_SetChange(ITEM *item);
-0x0041D210 0x003F + void __cdecl DingDong_Control(int16_t item_num);
-0x0041D250 0x0037 + void __cdecl LaraAlarm_Control(int16_t item_num);
-0x0041D290 0x0067 + void __cdecl AlarmSound_Control(int16_t item_num);
-0x0041D300 0x005D + void __cdecl BirdTweeter_Control(int16_t item_num);
-0x0041D360 0x0059 +R void __cdecl DoChimeSound(const ITEM *item);
-0x0041D3C0 0x0068 + void __cdecl ClockChimes_Control(int16_t item_num);
-0x0041D430 0x0128 + void __cdecl SphereOfDoom_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x0041D560 0x00F0 + void __cdecl SphereOfDoom_Control(int16_t item_num);
-0x0041D650 0x012D + void __cdecl SphereOfDoom_Draw(const ITEM *item);
-0x0041D780 0x000A + void __cdecl FX_LaraHandsFree(ITEM *item);
-0x0041D790 0x0005 + void __cdecl FX_FlipMap(ITEM *item);
-0x0041D7A0 0x0043 + void __cdecl FX_LaraDrawRightGun(ITEM *item);
-0x0041D7F0 0x0043 + void __cdecl FX_LaraDrawLeftGun(ITEM *item);
-0x0041D840 0x0063 + void __cdecl FX_SwapMeshesWithMeshSwap1(ITEM *item);
-0x0041D8B0 0x0063 + void __cdecl FX_SwapMeshesWithMeshSwap2(ITEM *item);
-0x0041D920 0x009A + void __cdecl FX_SwapMeshesWithMeshSwap3(ITEM *item);
-0x0041D9C0 0x0009 + void __cdecl FX_InvisibilityOn(ITEM *item);
-0x0041D9D0 0x0016 + void __cdecl FX_InvisibilityOff(ITEM *item);
-0x0041D9F0 0x0009 + void __cdecl FX_DynamicLightOn(ITEM *item);
-0x0041DA00 0x000B + void __cdecl FX_DynamicLightOff(ITEM *item);
-0x0041DA10 0x0005 + void __cdecl FX_ResetHair(ITEM *item);
-0x0041DA20 0x0024 + void __cdecl FX_AssaultStart(ITEM *item);
-0x0041DA50 0x001F + void __cdecl FX_AssaultStop(ITEM *item);
-0x0041DA70 0x0017 + void __cdecl FX_AssaultReset(ITEM *item);
-0x0041DA90 0x00B2 + void __cdecl FX_AssaultFinished(ITEM *item);
-
-# game/enemies.c
-0x0041DB50 0x0076 +R int16_t __cdecl Knife(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-0x0041DBD0 0x040B + void __cdecl Cultist2_Control(int16_t item_num);
-0x0041E000 0x04A1 + void __cdecl Monk_Control(int16_t item_num);
-0x0041E4D0 0x05BD + void __cdecl Worker3_Control(int16_t item_num);
-0x0041EAE0 0x03F7 + void __cdecl XianWarrior_Draw(const ITEM *item);
-0x0041EEE0 0x00A8 + void __cdecl XianSpearman_DoDamage(ITEM *item, CREATURE *xian, int32_t damage);
-0x0041EF90 0x0058 + void __cdecl XianWarrior_Initialise(int16_t item_num);
-0x0041EFF0 0x0590 + void __cdecl XianSpearman_Control(int16_t item_num);
-0x0041F5D0 0x0098 + void __cdecl XianKnight_SparkleTrail(ITEM *item);
-0x0041F670 0x03BA + void __cdecl XianKnight_Control(int16_t item_num);
-
-# game/gameflow.c
-0x0041FA60 0x01E9 + int32_t __cdecl GF_LoadScriptFile(const char *fname);
-0x0041FC50 0x001F + int32_t __cdecl GF_DoFrontendSequence(void);
-0x0041FC70 0x0066 + int32_t __cdecl GF_DoLevelSequence(int32_t level, GAMEFLOW_LEVEL_TYPE type);
-0x0041FCE0 0x047C + int32_t __cdecl GF_InterpretSequence(int16_t *ptr, GAMEFLOW_LEVEL_TYPE type, int32_t seq_type);
-0x004201C0 0x0CD3 + void __cdecl GF_ModifyInventory(int32_t level, int32_t type);
-
-# game/hair.c
-0x00420EA0 0x0074 + void __cdecl Lara_Hair_Initialise(void);
-0x00420F20 0x09E5 + void __cdecl Lara_Hair_Control(bool in_cutscene);
-0x00421920 0x0076 + void __cdecl Lara_Hair_Draw(void);
-
-# game/health.c
-0x004219A0 0x002D + BOOL __cdecl Overlay_FlashCounter(void);
-0x004219D0 0x0145 + void __cdecl Overlay_DrawAssaultTimer(void);
-0x00421B20 0x0045 + void __cdecl Overlay_DrawGameInfo(bool pickup_state);
-0x00421B70 0x00AB + void __cdecl Overlay_DrawHealthBar(bool flash_state);
-0x00421C20 0x0097 + void __cdecl Overlay_DrawAirBar(bool flash_state);
-0x00421CC0 0x0028 + void __cdecl Overlay_MakeAmmoString(char *string);
-0x00421CF0 0x0132 + void __cdecl Overlay_DrawAmmoInfo(void);
-0x00421E40 0x0015 + void __cdecl Overlay_InitialisePickUpDisplay(void);
-0x00421E60 0x00FD + void __cdecl Overlay_DrawPickups(bool pickup_state);
-0x00421F60 0x006C + void __cdecl Overlay_AddDisplayPickup(GAME_OBJECT_ID object_id);
-0x00421FD0 0x007A + void __cdecl Overlay_DisplayModeInfo(char* string);
-0x00422050 0x002C + void __cdecl Overlay_DrawModeInfo(void);
-
-# game/inventory.c
-0x00422080 0x119E + int32_t __cdecl Inv_Display(int32_t inventory_mode);
-0x00423310 0x0156 + void __cdecl Inv_Construct(void);
-0x00423470 0x0089 + void __cdecl Inv_SelectMeshes(INVENTORY_ITEM *inv_item);
-0x00423500 0x0081 + int32_t __cdecl Inv_AnimateInventoryItem(INVENTORY_ITEM *inv_item);
-0x00423590 0x041D + void __cdecl Inv_DrawInventoryItem(INVENTORY_ITEM *inv_item);
-0x004239C0 0x0019 + int32_t __cdecl Input_GetDebounced(int32_t input);
-0x004239E0 0x0005 + void __cdecl Inv_DoInventoryPicture(void);
-0x004239F0 0x0132 + void __cdecl Inv_DoInventoryBackground(void);
-
-# game/invfunc.c
-0x00423B30 0x010A + void __cdecl Inv_InitColors(void);
-0x00423C40 0x0167 + void __cdecl Inv_RingIsOpen(RING_INFO *ring);
-0x00423DB0 0x0081 + void __cdecl Inv_RingIsNotOpen(RING_INFO *ring);
-0x00423E40 0x0369 + void __cdecl Inv_RingNotActive(INVENTORY_ITEM *inv_item);
-0x004242B0 0x0032 + void __cdecl Inv_RingActive(void);
-0x004242F0 0x06BE + int32_t __cdecl Inv_AddItem(GAME_OBJECT_ID object_id);
-0x00424B00 0x0129 + void __cdecl Inv_InsertItem(INVENTORY_ITEM *inv_item);
-0x00424C30 0x0077 + int32_t __cdecl Inv_RequestItem(GAME_OBJECT_ID object_id);
-0x00424CB0 0x001B + void __cdecl Inv_RemoveAllItems(void);
-0x00424CD0 0x0110 + int32_t __cdecl Inv_RemoveItem(GAME_OBJECT_ID object_id);
-0x00424DE0 0x00C1 + int32_t __cdecl Inv_GetItemOption(GAME_OBJECT_ID object_id);
-0x00424FD0 0x0024 + void __cdecl Inv_RemoveInventoryText(void);
-0x00425000 0x010F + void __cdecl Inv_Ring_Init(RING_INFO *ring, int16_t type, INVENTORY_ITEM **list, int16_t qty, int16_t current, IMOTION_INFO *imo);
-0x00425110 0x0060 + void __cdecl Inv_Ring_GetView(RING_INFO *ring, PHD_3DPOS *viewer);
-0x00425170 0x0040 + void __cdecl Inv_Ring_Light(RING_INFO *ring);
-0x004251B0 0x002C + void __cdecl Inv_Ring_CalcAdders(RING_INFO *ring, int16_t rotation_duration);
-0x004251E0 0x013E + void __cdecl Inv_Ring_DoMotions(RING_INFO *ring);
-0x00425320 0x002F + void __cdecl Inv_Ring_RotateLeft(RING_INFO *ring);
-0x00425350 0x002F + void __cdecl Inv_Ring_RotateRight(RING_INFO *ring);
-0x00425380 0x0063 + void __cdecl Inv_Ring_MotionInit(RING_INFO *ring, int16_t frames, int16_t status, int16_t status_target);
-0x004253F0 0x002C + void __cdecl Inv_Ring_MotionSetup(RING_INFO *ring, int16_t status, int16_t status_target, int16_t frames);
-0x00425420 0x0026 + void __cdecl Inv_Ring_MotionRadius(RING_INFO *ring, int16_t target);
-0x00425450 0x0022 + void __cdecl Inv_Ring_MotionRotation(RING_INFO *ring, int16_t rotation, int16_t target);
-0x00425480 0x0025 + void __cdecl Inv_Ring_MotionCameraPos(RING_INFO *ring, int16_t target);
-0x004254B0 0x0020 + void __cdecl Inv_Ring_MotionCameraPitch(RING_INFO *ring, int16_t target);
-0x004254D0 0x005D + void __cdecl Inv_Ring_MotionItemSelect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
-0x00425530 0x0063 + void __cdecl Inv_Ring_MotionItemDeselect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
-
-# game/invtext.c
-0x004255A0 0x0082 + void __cdecl Requester_Init(REQUEST_INFO *req);
-0x00425630 0x00A3 + void __cdecl Requester_Shutdown(REQUEST_INFO *req);
-0x004256E0 0x001B + void __cdecl Requester_Item_CenterAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-0x00425700 0x0054 + void __cdecl Requester_Item_LeftAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-0x00425760 0x0056 + void __cdecl Requester_Item_RightAlign(REQUEST_INFO *req, TEXTSTRING *txt);
-0x004257C0 0x0866 + int32_t __cdecl Requester_Display(REQUEST_INFO *req, int32_t des, int32_t backgrounds);
-0x00426030 0x00AA + void __cdecl Requester_SetHeading(REQUEST_INFO *req, char *text1, uint32_t flags1, char *text2, uint32_t flags2);
-0x004260E0 0x0013 + void __cdecl Requester_RemoveAllItems(REQUEST_INFO *req);
-0x00426100 0x00C0 + void __cdecl Requester_ChangeItem(REQUEST_INFO *req, int32_t item, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
-0x004261C0 0x00AC + void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
-0x00426270 0x0039 + void __cdecl Requester_SetSize(REQUEST_INFO *req, int32_t maxlines, int32_t ypos);
-0x004262B0 0x0081 +R int32_t __cdecl AddAssaultTime(uint32_t time);
-0x00426340 0x01D6 +R void __cdecl ShowGymStatsText(char *time_str, int32_t type);
-0x00426520 0x0397 +R void __cdecl ShowStatsText(char *time_str, int32_t type);
-0x004268C0 0x0425 +R void __cdecl ShowEndStatsText(void);
-
-# game/items.c
-0x00426CF0 0x0052 + void __cdecl Item_InitialiseArray(int32_t num_items);
-0x00426D50 0x011E + void __cdecl Item_Kill(int16_t item_num);
-0x00426E70 0x0039 + int16_t __cdecl Item_Create(void);
-0x00426EB0 0x01B3 + void __cdecl Item_Initialise(int16_t item_num);
-0x00427070 0x008A + void __cdecl Item_RemoveActive(int16_t item_num);
-0x00427100 0x006F + void __cdecl Item_RemoveDrawn(int16_t item_num);
-0x00427170 0x005A + void __cdecl Item_AddActive(int16_t item_num);
-0x004271D0 0x009C + void __cdecl Item_NewRoom(int16_t item_num, int16_t room_num);
-0x00427270 0x007C + int32_t __cdecl Item_GlobalReplace(GAME_OBJECT_ID src_object_id, GAME_OBJECT_ID dst_object_id);
-0x004272F0 0x0030 + void __cdecl Effect_InitialiseArray(void);
-0x00427320 0x006C + int16_t __cdecl Effect_Create(int16_t room_num);
-0x00427390 0x00E3 + void __cdecl Effect_Kill(int16_t fx_num);
-0x00427480 0x0093 + void __cdecl Effect_NewRoom(int16_t fx_num, int16_t room_num);
-0x00427520 0x0058 + void __cdecl Item_ClearKilled(void);
-
-# game/lara.c
-0x00427580 0x0195 + void __cdecl Lara_HandleAboveWater(ITEM *item, COLL_INFO *coll);
-0x00427720 0x0066 + void __cdecl Lara_LookUpDown(void);
-0x00427790 0x0072 + void __cdecl Lara_LookLeftRight(void);
-0x00427810 0x0089 + void __cdecl Lara_ResetLook(void);
-0x004278A0 0x008B + void __cdecl Lara_State_Walk(ITEM *item, COLL_INFO *coll);
-0x00427930 0x0143 + void __cdecl Lara_State_Run(ITEM *item, COLL_INFO *coll);
-0x00427A80 0x0148 + void __cdecl Lara_State_Stop(ITEM *item, COLL_INFO *coll);
-0x00427BD0 0x00D3 + void __cdecl Lara_State_ForwardJump(ITEM *item, COLL_INFO *coll);
-0x00427CB0 0x0057 + void __cdecl Lara_State_FastBack(ITEM *item, COLL_INFO *coll);
-0x00427D10 0x008A + void __cdecl Lara_State_TurnRight(ITEM *item, COLL_INFO *coll);
-0x00427DA0 0x0089 + void __cdecl Lara_State_TurnLeft(ITEM *item, COLL_INFO *coll);
-0x00427E30 0x0014 + void __cdecl Lara_State_Death(ITEM *item, COLL_INFO *coll);
-0x00427E50 0x0040 + void __cdecl Lara_State_FastFall(ITEM *item, COLL_INFO *coll);
-0x00427E90 0x0058 + void __cdecl Lara_State_Hang(ITEM *item, COLL_INFO *coll);
-0x00427EF0 0x001C + void __cdecl Lara_State_Reach(ITEM *item, COLL_INFO *coll);
-0x00427F10 0x000A + void __cdecl Lara_State_Splat(ITEM *item, COLL_INFO *coll);
-0x00427F20 0x010C + void __cdecl Lara_State_Compress(ITEM *item, COLL_INFO *coll);
-0x00428030 0x0084 + void __cdecl Lara_State_Back(ITEM *item, COLL_INFO *coll);
-0x004280C0 0x000B + void __cdecl Lara_State_Null(ITEM *item, COLL_INFO *coll);
-0x004280D0 0x004B + void __cdecl Lara_State_FastTurn(ITEM *item, COLL_INFO *coll);
-0x00428120 0x007C + void __cdecl Lara_State_StepRight(ITEM *item, COLL_INFO *coll);
-0x004281A0 0x007C + void __cdecl Lara_State_StepLeft(ITEM *item, COLL_INFO *coll);
-0x00428220 0x002B + void __cdecl Lara_State_Slide(ITEM *item, COLL_INFO *coll);
-0x00428250 0x004A + void __cdecl Lara_State_BackJump(ITEM *item, COLL_INFO *coll);
-0x004282A0 0x0033 + void __cdecl Lara_State_RightJump(ITEM *item, COLL_INFO *coll);
-0x004282E0 0x0033 + void __cdecl Lara_State_LeftJump(ITEM *item, COLL_INFO *coll);
-0x00428320 0x0013 + void __cdecl Lara_State_UpJump(ITEM *item, COLL_INFO *coll);
-0x00428340 0x002C + void __cdecl Lara_State_Fallback(ITEM *item, COLL_INFO *coll);
-0x00428370 0x0035 + void __cdecl Lara_State_HangLeft(ITEM *item, COLL_INFO *coll);
-0x004283B0 0x0035 + void __cdecl Lara_State_HangRight(ITEM *item, COLL_INFO *coll);
-0x004283F0 0x0018 + void __cdecl Lara_State_SlideBack(ITEM *item, COLL_INFO *coll);
-0x00428410 0x0030 + void __cdecl Lara_State_PushBlock(ITEM *item, COLL_INFO *coll);
-0x00428440 0x0027 + void __cdecl Lara_State_PPReady(ITEM *item, COLL_INFO *coll);
-0x00428470 0x0030 + void __cdecl Lara_State_Pickup(ITEM *item, COLL_INFO *coll);
-0x004284A0 0x0058 + void __cdecl Lara_State_PickupFlare(ITEM *item, COLL_INFO *coll);
-0x00428500 0x0039 + void __cdecl Lara_State_SwitchOn(ITEM *item, COLL_INFO *coll);
-0x00428540 0x0030 + void __cdecl Lara_State_UseKey(ITEM *item, COLL_INFO *coll);
-0x00428570 0x001D + void __cdecl Lara_State_Special(ITEM *item, COLL_INFO *coll);
-0x00428590 0x002F + void __cdecl Lara_State_SwanDive(ITEM *item, COLL_INFO *coll);
-0x004285C0 0x0054 + void __cdecl Lara_State_FastDive(ITEM *item, COLL_INFO *coll);
-0x00428620 0x0015 + void __cdecl Lara_State_WaterOut(ITEM *item, COLL_INFO *coll);
-0x00428640 0x00CA + void __cdecl Lara_State_Wade(ITEM *item, COLL_INFO *coll);
-0x00428710 0x0096 + void __cdecl Lara_State_Zipline(ITEM *item, COLL_INFO *coll);
-0x004287B0 0x004C + void __cdecl Lara_State_Extra_Breath(ITEM *item, COLL_INFO *coll);
-0x00428800 0x0047 + void __cdecl Lara_State_Extra_YetiKill(ITEM *item, COLL_INFO *coll);
-0x00428850 0x0091 + void __cdecl Lara_State_Extra_SharkKill(ITEM *item, COLL_INFO *coll);
-0x004288F0 0x0013 + void __cdecl Lara_State_Extra_Airlock(ITEM *item, COLL_INFO *coll);
-0x00428910 0x001D + void __cdecl Lara_State_Extra_GongBong(ITEM *item, COLL_INFO *coll);
-0x00428930 0x0051 + void __cdecl Lara_State_Extra_DinoKill(ITEM *item, COLL_INFO *coll);
-0x00428990 0x00BC + void __cdecl Lara_State_Extra_PullDagger(ITEM *item, COLL_INFO *coll);
-0x00428A50 0x004D + void __cdecl Lara_State_Extra_StartAnim(ITEM *item, COLL_INFO *coll);
-0x00428AA0 0x00A5 + void __cdecl Lara_State_Extra_StartHouse(ITEM *item, COLL_INFO *coll);
-0x00428B50 0x00A3 + void __cdecl Lara_State_Extra_FinalAnim(ITEM *item, COLL_INFO *coll);
-0x00428C00 0x0051 + int32_t __cdecl Lara_Fallen(ITEM *item, COLL_INFO *coll);
-0x00428C60 0x009B + void __cdecl Lara_CollideStop(ITEM *item, COLL_INFO *coll);
-0x00428D20 0x0191 + void __cdecl Lara_Col_Walk(ITEM *item, COLL_INFO *coll);
-0x00428EC0 0x0176 + void __cdecl Lara_Col_Run(ITEM *item, COLL_INFO *coll);
-0x00429040 0x0081 + void __cdecl Lara_Col_Stop(ITEM *item, COLL_INFO *coll);
-0x004290D0 0x00D7 + void __cdecl Lara_Col_ForwardJump(ITEM *item, COLL_INFO *coll);
-0x004291B0 0x00B3 + void __cdecl Lara_Col_FastBack(ITEM *item, COLL_INFO *coll);
-0x00429270 0x0095 + void __cdecl Lara_Col_TurnRight(ITEM *item, COLL_INFO *coll);
-0x00429310 0x0013 + void __cdecl Lara_Col_TurnLeft(ITEM *item, COLL_INFO *coll);
-0x00429330 0x0068 + void __cdecl Lara_Col_Death(ITEM *item, COLL_INFO *coll);
-0x004293A0 0x0099 + void __cdecl Lara_Col_FastFall(ITEM *item, COLL_INFO *coll);
-0x00429440 0x0127 + void __cdecl Lara_Col_Hang(ITEM *item, COLL_INFO *coll);
-0x00429570 0x0090 + void __cdecl Lara_Col_Reach(ITEM *item, COLL_INFO *coll);
-0x00429600 0x0059 + void __cdecl Lara_Col_Splat(ITEM *item, COLL_INFO *coll);
-0x00429660 0x0013 + void __cdecl Lara_Col_Land(ITEM *item, COLL_INFO *coll);
-0x00429680 0x0096 + void __cdecl Lara_Col_Compress( ITEM *item, COLL_INFO *coll );
-0x00429720 0x00FB + void __cdecl Lara_Col_Back(ITEM *item, COLL_INFO *coll);
-0x00429820 0x00BE + void __cdecl Lara_Col_StepRight(ITEM *item, COLL_INFO *coll);
-0x004298E0 0x0013 + void __cdecl Lara_Col_StepLeft(ITEM *item, COLL_INFO *coll);
-0x00429900 0x001E + void __cdecl Lara_Col_Slide(ITEM *item, COLL_INFO *coll);
-0x00429920 0x0023 + void __cdecl Lara_Col_BackJump(ITEM *item, COLL_INFO *coll);
-0x00429950 0x0023 + void __cdecl Lara_Col_RightJump(ITEM *item, COLL_INFO *coll);
-0x00429980 0x0023 + void __cdecl Lara_Col_LeftJump(ITEM *item, COLL_INFO *coll);
-0x004299B0 0x011B + void __cdecl Lara_Col_UpJump(ITEM *item, COLL_INFO *coll);
-0x00429AD0 0x0083 + void __cdecl Lara_Col_Fallback(ITEM *item, COLL_INFO *coll);
-0x00429B60 0x0033 + void __cdecl Lara_Col_HangLeft(ITEM *item, COLL_INFO *coll);
-0x00429BA0 0x0033 + void __cdecl Lara_Col_HangRight(ITEM *item, COLL_INFO *coll);
-0x00429BE0 0x0023 + void __cdecl Lara_Col_SlideBack(ITEM *item, COLL_INFO *coll);
-0x00429C10 0x0013 + void __cdecl Lara_Col_Null(ITEM *item, COLL_INFO *coll);
-0x00429C30 0x0081 + void __cdecl Lara_Col_Roll(ITEM *item, COLL_INFO *coll);
-0x00429CC0 0x00B3 + void __cdecl Lara_Col_Roll2(ITEM *item, COLL_INFO *coll);
-0x00429D80 0x0069 + void __cdecl Lara_Col_SwanDive(ITEM *item, COLL_INFO *coll);
-0x00429DF0 0x0079 + void __cdecl Lara_Col_FastDive(ITEM *item, COLL_INFO *coll);
-0x00429E70 0x0162 + void __cdecl Lara_Col_Wade(ITEM *item, COLL_INFO *coll);
-0x00429FE0 0x0036 + void __cdecl Lara_Col_Default(ITEM *item, COLL_INFO *coll);
-0x0042A020 0x0074 + void __cdecl Lara_Col_Jumper(ITEM *item, COLL_INFO *coll);
-0x0042A0A0 0x0032 + void __cdecl Lara_GetCollisionInfo(ITEM *item, COLL_INFO *coll);
-0x0042A0E0 0x00E2 + void __cdecl Lara_SlideSlope(ITEM *item, COLL_INFO *coll);
-0x0042A1D0 0x0067 + int32_t __cdecl Lara_HitCeiling(ITEM *item, COLL_INFO *coll);
-0x0042A240 0x007F + int32_t __cdecl Lara_DeflectEdge(ITEM *item, COLL_INFO *coll);
-0x0042A2C0 0x0136 + void __cdecl Lara_DeflectEdgeJump(ITEM *item, COLL_INFO *coll);
-0x0042A440 0x00AB + void __cdecl Lara_SlideEdgeJump(ITEM *item, COLL_INFO *coll);
-0x0042A530 0x00E1 + int32_t __cdecl Lara_TestWall(ITEM *item, int32_t front, int32_t right, int32_t down);
-0x0042A640 0x00F5 + int32_t __cdecl Lara_TestHangOnClimbWall(ITEM *item, COLL_INFO *coll);
-0x0042A750 0x00BE + int32_t __cdecl Lara_TestClimbStance(ITEM *item, COLL_INFO *coll);
-0x0042A810 0x033E + void __cdecl Lara_HangTest(ITEM *item, COLL_INFO *coll);
-0x0042AB70 0x00AD + int32_t __cdecl Lara_TestEdgeCatch(ITEM *item, COLL_INFO *coll, int32_t *edge);
-0x0042AC20 0x016D + int32_t __cdecl Lara_TestHangJumpUp(ITEM *item, COLL_INFO *coll);
-0x0042AD90 0x019E + int32_t __cdecl Lara_TestHangJump(ITEM *item, COLL_INFO *coll);
-0x0042AF30 0x00B1 + int32_t __cdecl Lara_TestHangSwingIn(ITEM *item, int16_t angle);
-0x0042AFF0 0x02E7 + int32_t __cdecl Lara_TestVault(ITEM *item, COLL_INFO *coll);
-0x0042B2E0 0x0130 + int32_t __cdecl Lara_TestSlide(ITEM *item, COLL_INFO *coll);
-0x0042B410 0x0075 + int16_t __cdecl Lara_FloorFront(ITEM *item, int16_t ang, int32_t dist);
-0x0042B490 0x00BB + int32_t __cdecl Lara_LandedBad(ITEM *item, COLL_INFO *coll);
-0x0042B550 0x038F + void __cdecl Lara_GetJointAbsPosition(XYZ_32 *vec, int32_t joint);
-0x0042B8E0 0x031A + void __cdecl Lara_GetJointAbsPosition_I(ITEM *item, XYZ_32 *vec, int16_t *frame1, int16_t *frame2, int32_t frac, int32_t rate);
-
-# game/lara1gun.c
-0x0042BC00 0x0033 + void __cdecl Gun_Rifle_DrawMeshes(LARA_GUN_TYPE weapon_type);
-0x0042BC40 0x002B + void __cdecl Gun_Rifle_UndrawMeshes(LARA_GUN_TYPE weapon_type);
-0x0042BC70 0x0070 + void __cdecl Gun_Rifle_Ready(LARA_GUN_TYPE weapon_type);
-0x0042BCE0 0x00F5 + void __cdecl Gun_Rifle_Control(LARA_GUN_TYPE weapon_type);
-0x0042BDE0 0x00F2 + void __cdecl Gun_Rifle_FireShotgun(void);
-0x0042BEE0 0x007B + void __cdecl Gun_Rifle_FireM16(bool running);
-0x0042BF60 0x0187 + void __cdecl Gun_Rifle_FireHarpoon(void);
-0x0042C0F0 0x0344 + void __cdecl HarpoonBolt_Control(int16_t item_num);
-0x0042C440 0x00F0 + void __cdecl Gun_Rifle_FireGrenade(void);
-0x0042C530 0x03FD + void __cdecl Grenade_Control(int16_t item_num);
-0x0042C930 0x0166 + void __cdecl Gun_Rifle_Draw(LARA_GUN_TYPE weapon_type);
-0x0042CAA0 0x0104 + void __cdecl Gun_Rifle_Undraw(LARA_GUN_TYPE weapon_type);
-0x0042CBB0 0x037E + void __cdecl Gun_Rifle_Animate(LARA_GUN_TYPE weapon_type);
-
-# game/lara2gun.c
-0x0042CF60 0x004F + void __cdecl Gun_Pistols_SetArmInfo(LARA_ARM *arm, int32_t frame);
-0x0042CFB0 0x007C + void __cdecl Gun_Pistols_Draw(LARA_GUN_TYPE weapon_type);
-0x0042D030 0x0225 + void __cdecl Gun_Pistols_Undraw(LARA_GUN_TYPE weapon_type);
-0x0042D260 0x005C + void __cdecl Gun_Pistols_Ready(LARA_GUN_TYPE weapon_type);
-0x0042D2C0 0x004E + void __cdecl Gun_Pistols_DrawMeshes(LARA_GUN_TYPE weapon_type);
-0x0042D310 0x003A + void __cdecl Gun_Pistols_UndrawMeshLeft(LARA_GUN_TYPE weapon_type);
-0x0042D350 0x003A + void __cdecl Gun_Pistols_UndrawMeshRight(LARA_GUN_TYPE weapon_type);
-0x0042D390 0x018C + void __cdecl Gun_Pistols_Control(LARA_GUN_TYPE weapon_type);
-0x0042D520 0x0330 + void __cdecl Gun_Pistols_Animate(LARA_GUN_TYPE weapon_type);
-
-# game/laraclimb.c
-0x0042D850 0x0035 + void __cdecl Lara_State_ClimbLeft(ITEM *item, COLL_INFO *coll);
-0x0042D890 0x0035 + void __cdecl Lara_State_ClimbRight(ITEM *item, COLL_INFO *coll);
-0x0042D8D0 0x0075 + void __cdecl Lara_State_ClimbStance(ITEM *item, COLL_INFO *coll);
-0x0042D950 0x0014 + void __cdecl Lara_State_Climbing(ITEM *item, COLL_INFO *coll);
-0x0042D970 0x001E + void __cdecl Lara_State_ClimbEnd(ITEM *item, COLL_INFO *coll);
-0x0042D990 0x0014 + void __cdecl Lara_State_ClimbDown(ITEM *item, COLL_INFO *coll);
-0x0042D9B0 0x005D + void __cdecl Lara_Col_ClimbLeft(ITEM *item, COLL_INFO *coll);
-0x0042DA10 0x0059 + void __cdecl Lara_Col_ClimbRight(ITEM *item, COLL_INFO *coll);
-0x0042DA70 0x020D + void __cdecl Lara_Col_ClimbStance(ITEM *item, COLL_INFO *coll);
-0x0042DC80 0x014D + void __cdecl Lara_Col_Climbing(ITEM *item, COLL_INFO *coll);
-0x0042DDD0 0x019C + void __cdecl Lara_Col_ClimbDown(ITEM *item, COLL_INFO *coll);
-0x0042DF70 0x00AA + int32_t __cdecl Lara_CheckForLetGo(ITEM *item, COLL_INFO *coll);
-0x0042E020 0x0263 + int32_t __cdecl Lara_TestClimb(int32_t x, int32_t y, int32_t z, int32_t xfront, int32_t zfront, int32_t item_height, int16_t item_room, int32_t *shift);
-0x0042E290 0x00BC + int32_t __cdecl Lara_TestClimbPos(ITEM *item, int32_t front, int32_t right, int32_t origin, int32_t height, int32_t *shift);
-0x0042E360 0x00EF + void __cdecl Lara_DoClimbLeftRight(ITEM *item, COLL_INFO *coll, int32_t result, int32_t shift);
-0x0042E450 0x0235 + int32_t __cdecl Lara_TestClimbUpPos(ITEM *item, int32_t front, int32_t right, int32_t *shift, int32_t *ledge);
-
-# game/larafire.c
-0x0042E6A0 0x04E8 + void __cdecl Gun_Control(void);
-0x0042EC10 0x003B + int32_t __cdecl Gun_CheckForHoldingState(int32_t state);
-0x0042EC50 0x011C + void __cdecl Gun_InitialiseNewWeapon(void);
-0x0042ED90 0x0194 + void __cdecl Gun_TargetInfo(const WEAPON_INFO *winfo);
-0x0042EF30 0x021C + void __cdecl Gun_GetNewTarget(WEAPON_INFO *winfo);
-0x0042F150 0x00AA + void __cdecl Gun_FindTargetPoint(const ITEM *item, GAME_VECTOR *target);
-0x0042F200 0x00C1 + void __cdecl Gun_AimWeapon(WEAPON_INFO *winfo, LARA_ARM *arm);
-0x0042F2D0 0x0360 + int32_t __cdecl Gun_FireWeapon(LARA_GUN_TYPE weapon_type, ITEM *target, const ITEM *src, const int16_t *angles);
-0x0042F640 0x0096 + void __cdecl Gun_HitTarget(ITEM *item, GAME_VECTOR *hitpos, int32_t damage);
-0x0042F6E0 0x0051 + void __cdecl Gun_SmashItem(int16_t item_num, LARA_GUN_TYPE weapon_type);
-0x0042F740 0x003B + GAME_OBJECT_ID Gun_GetWeaponAnim(const LARA_GUN_TYPE gun_type);
-
-# game/laraflare.c
-0x0042F7A0 0x009D + int32_t __cdecl Flare_DoLight(XYZ_32 *pos, int32_t flare_age);
-0x0042F840 0x00D3 + void __cdecl Flare_DoInHand(int32_t flare_age);
-0x0042F920 0x00F8 + void __cdecl Flare_DrawInAir(const ITEM *item);
-0x0042FA20 0x01D7 + void __cdecl Flare_Create(int32_t thrown);
-0x0042FC00 0x004B + void __cdecl Flare_SetArm(int32_t frame);
-0x0042FC50 0x0169 + void __cdecl Flare_Draw(void);
-0x0042FDC0 0x0221 + void __cdecl Flare_Undraw(void);
-0x0042FFF0 0x0018 + void __cdecl Flare_DrawMeshes(void);
-0x00430010 0x0018 + void __cdecl Flare_UndrawMeshes(void);
-0x00430030 0x003E + void __cdecl Flare_Ready(void);
-0x00430070 0x026E + void __cdecl Flare_Control(int16_t item_num);
-
-# game/laramisc.c
-0x004302E0 0x0668 + void __cdecl Lara_Control(int16_t item_num);
-0x00430970 0x02CD + void __cdecl Lara_Animate(ITEM *item);
-0x00430C70 0x013F + void __cdecl Lara_UseItem(GAME_OBJECT_ID object_id);
-0x00430E30 0x00BA + void __cdecl Lara_CheatGetStuff(void);
-0x00430EF0 0x001B + void __cdecl Lara_ControlExtra(int16_t item_num);
-0x00430F10 0x0021 + void __cdecl Lara_InitialiseLoad(int16_t item_num);
-0x00430F40 0x02BD + void __cdecl Lara_Initialise(int32_t type);
-0x00431200 0x036C + void __cdecl Lara_InitialiseInventory(int32_t level_num);
-0x00431570 0x00FA + void __cdecl Lara_InitialiseMeshes(int32_t level_num);
-
-# game/larasurf.c
-0x00431670 0x0158 + void __cdecl Lara_HandleSurface(ITEM *item, COLL_INFO *coll);
-0x004317D0 0x0070 + void __cdecl Lara_State_SurfSwim(ITEM *item, COLL_INFO *coll);
-0x00431840 0x005E + void __cdecl Lara_State_SurfBack(ITEM *item, COLL_INFO *coll);
-0x004318A0 0x0060 + void __cdecl Lara_State_SurfLeft(ITEM *item, COLL_INFO *coll);
-0x00431900 0x0060 + void __cdecl Lara_State_SurfRight(ITEM *item, COLL_INFO *coll);
-0x00431960 0x00EB + void __cdecl Lara_State_SurfTread(ITEM *item, COLL_INFO *coll);
-0x00431A50 0x0032 + void __cdecl Lara_Col_SurfSwim(ITEM *item, COLL_INFO *coll);
-0x00431A90 0x0023 + void __cdecl Lara_Col_SurfBack(ITEM *item, COLL_INFO *coll);
-0x00431AC0 0x0023 + void __cdecl Lara_Col_SurfLeft(ITEM *item, COLL_INFO *coll);
-0x00431AF0 0x0023 + void __cdecl Lara_Col_SurfRight(ITEM *item, COLL_INFO *coll);
-0x00431B20 0x001E + void __cdecl Lara_Col_SurfTread(ITEM *item, COLL_INFO *coll);
-0x00431B40 0x00F3 + void __cdecl Lara_SurfaceCollision(ITEM *item, COLL_INFO *coll);
-0x00431C40 0x00E7 + int32_t __cdecl Lara_TestWaterStepOut(ITEM *item, COLL_INFO *coll);
-0x00431D30 0x021C + int32_t __cdecl Lara_TestWaterClimbOut(ITEM *item, COLL_INFO *coll);
-
-# game/laraswim.c
-0x00431F50 0x0223 + void __cdecl Lara_HandleUnderwater(ITEM *item, COLL_INFO *coll);
-0x00432180 0x0086 + void __cdecl Lara_SwimTurn(ITEM *item);
-0x00432210 0x006B + void __cdecl Lara_State_Swim(ITEM *item, COLL_INFO *coll);
-0x00432280 0x0076 + void __cdecl Lara_State_Glide(ITEM *item, COLL_INFO *coll);
-0x00432300 0x0085 + void __cdecl Lara_State_Tread(ITEM *item, COLL_INFO *coll);
-0x00432390 0x0014 + void __cdecl Lara_State_Dive(ITEM *item, COLL_INFO *coll);
-0x004323B0 0x0053 + void __cdecl Lara_State_UWDeath(ITEM *item, COLL_INFO *coll);
-0x00432410 0x000B + void __cdecl Lara_State_UWTwist(ITEM *item, COLL_INFO *coll);
-0x00432420 0x0013 + void __cdecl Lara_Col_Swim(ITEM *item, COLL_INFO *coll);
-0x00432440 0x005B + void __cdecl Lara_Col_UWDeath(ITEM *item, COLL_INFO *coll);
-0x004324A0 0x0192 + int32_t __cdecl Lara_GetWaterDepth(int32_t x, int32_t y, int32_t z, int16_t room_num);
-0x00432640 0x00CE + void __cdecl Lara_TestWaterDepth(ITEM *item, COLL_INFO *coll);
-0x00432710 0x015C + void __cdecl Lara_SwimCollision(ITEM *item, COLL_INFO *coll);
-0x00432870 0x01EC + void __cdecl Lara_WaterCurrent(COLL_INFO *coll);
-
-# game/lot.c
-0x00432A60 0x0053 + void __cdecl LOT_InitialiseArray(void);
-0x00432AC0 0x004F + void __cdecl LOT_DisableBaddieAI(int16_t item_num);
-0x00432B10 0x01B0 + bool __cdecl LOT_EnableBaddieAI(int16_t item_num, bool always);
-0x00432CC0 0x0106 + void __cdecl LOT_InitialiseSlot(int16_t item_num, int32_t slot);
-0x00432ED0 0x00B8 + void __cdecl LOT_CreateZone(ITEM *item);
-0x00432F90 0x0049 + void __cdecl LOT_ClearLOT(LOT_INFO *lot);
-
-# game/missile.c
-0x00432FE0 0x02D0 + void __cdecl Missile_Control(int16_t fx_num);
-0x004332B0 0x00A7 + void __cdecl Missile_ShootAtLara(FX *fx);
-0x00433360 0x0386 + int32_t __cdecl Effect_ExplodingDeath(int16_t item_num, int32_t mesh_bits, int16_t damage);
-0x004336F0 0x0200 + void __cdecl BodyPart_Control(int16_t fx_num);
-
-# game/moveblock.c
-0x004338F0 0x002C + void __cdecl MovableBlock_Initialise(int16_t item_num);
-0x00433920 0x0148 + void __cdecl MovableBlock_Control(int16_t item_num);
-0x00433A70 0x0239 + void __cdecl MovableBlock_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00433CD0 0x004E + int32_t __cdecl MovableBlock_TestDestination(ITEM *item, int32_t block_height);
-0x00433D20 0x0137 + int32_t __cdecl MovableBlock_TestPush(ITEM *item, int32_t block_height, uint16_t quadrant);
-0x00433E70 0x0225 + int32_t __cdecl MovableBlock_TestPull(ITEM *item, int32_t block_height, uint16_t quadrant);
-0x004340B0 0x00BB + void __cdecl Room_AlterFloorHeight(ITEM *item, int32_t height);
-0x00434170 0x0022 + void __cdecl MovableBlock_Draw(const ITEM *item);
-0x004341A0 0x006B + void __cdecl Object_DrawUnclippedItem(const ITEM *item);
-
-# game/objects.c
-0x00434210 0x00DB + void __cdecl Earthquake_Control(int16_t item_num);
-0x004342F0 0x003C + void __cdecl FinalCutscene_Control(int16_t item_num);
-0x00434330 0x009D +R void __cdecl InitialiseFinalLevel(void);
-0x00434400 0x020F + void __cdecl FinalLevelCounter_Control(int16_t item_num);
-0x00434610 0x00D9 + void __cdecl MiniCopter_Control(int16_t item_num);
-0x004346F0 0x007C + void __cdecl DyingMonk_Initialise(int16_t item_num);
-0x00434770 0x0087 + void __cdecl DyingMonk_Control(int16_t item_num);
-0x00434800 0x00BD + void __cdecl GongBonger_Control(int16_t item_num);
-0x004348C0 0x00BF + void __cdecl Zipline_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00434980 0x028F + void __cdecl Zipline_Control(int16_t item_num);
-0x00434C10 0x00E3 + void __cdecl BigBowl_Control(int16_t item_num);
-0x00434D00 0x007E + void __cdecl Bell_Control(int16_t item_num);
-0x00434D80 0x0075 + void __cdecl Window_Initialise(int16_t item_num);
-0x00434E00 0x00C4 +R void __cdecl Window_Smash(int16_t item_num);
-0x00434ED0 0x0096 + void __cdecl Window_1_Control(int16_t item_num);
-0x00434F70 0x00DC + void __cdecl Window_2_Control(int16_t item_num);
-0x00435050 0x0042 + void __cdecl Door_Shut(DOORPOS_DATA *d);
-0x004350A0 0x0032 + void __cdecl Door_Open(DOORPOS_DATA *d);
-0x004350E0 0x03DC + void __cdecl Door_Initialise(int16_t item_num);
-0x004354C0 0x00C8 + void __cdecl Door_Control(int16_t item_num);
-0x00435590 0x00B1 + int32_t __cdecl Drawbridge_IsItemOnTop(const ITEM *item, int32_t x, int32_t y);
-0x00435650 0x0036 + void __cdecl Drawbridge_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435690 0x003B + void __cdecl Drawbridge_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x004356D0 0x002C + void __cdecl Drawbridge_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00435700 0x0035 + void __cdecl Lift_Initialise(int16_t item_num);
-0x00435740 0x00D4 + void __cdecl Lift_Control(int16_t item_num);
-0x00435820 0x0179 + void __cdecl Lift_FloorCeiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *floor, int32_t *ceiling);
-0x004359A0 0x0035 + void __cdecl Lift_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x004359E0 0x0035 + void __cdecl Lift_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435A20 0x0016 + void __cdecl BridgeFlat_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435A40 0x001B + void __cdecl BridgeFlat_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435A60 0x003B + int32_t __cdecl Bridge_GetOffset(const ITEM *item, int32_t x, int32_t z);
-0x00435AA0 0x0030 + void __cdecl BridgeTilt1_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435AD0 0x0035 + void __cdecl BridgeTilt1_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435B10 0x002F + void __cdecl BridgeTilt2_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435B40 0x0034 + void __cdecl BridgeTilt2_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00435B80 0x010C + void __cdecl Copter_Control(int16_t item_num);
-0x00435C90 0x00D2 + void __cdecl General_Control(int16_t item_num);
-0x00435D70 0x008D + void __cdecl Detonator_Control(int16_t item_num);
-
-# game/people.c
-0x00435E00 0x0085 + bool __cdecl Creature_CanTargetEnemy(const ITEM *item, const AI_INFO *info);
-0x00435E90 0x003B + void __cdecl Glow_Control(int16_t fx_num);
-0x00435ED0 0x004E + void __cdecl GunFlash_Control(int16_t fx_num);
-0x00435F20 0x0066 + int16_t __cdecl Effect_GunShot(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-0x00435F90 0x00B9 + int16_t __cdecl Effect_GunHit(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-0x00436050 0x00A7 + int16_t __cdecl Effect_GunMiss(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
-0x00436100 0x01C4 + int32_t __cdecl Creature_ShootAtLara(ITEM *item, AI_INFO *info, BITE *gun, int16_t extra_rotation, int32_t damage);
-0x004362D0 0x0043 + void __cdecl Cultist1_Initialise(int16_t item_num);
-0x00436320 0x0401 + void __cdecl Cultist1_Control(int16_t item_num);
-0x00436750 0x0050 + void __cdecl Cultist3_Initialise(int16_t item_num);
-0x004367A0 0x053C + void __cdecl Cultist3_Control(int16_t item_num);
-0x00436D10 0x03CA + void __cdecl Worker1_Control(int16_t item_num);
-0x00437110 0x042A + void __cdecl Worker2_Control(int16_t item_num);
-0x00437570 0x030B + void __cdecl Bandit1_Control(int16_t item_num);
-0x004378B0 0x0408 + void __cdecl Bandit2_Control(int16_t item_num);
-0x00437CF0 0x0172 + void __cdecl Winston_Control(int16_t item_num);
-
-# game/pickup.c
-0x00437E70 0x0480 + void __cdecl Pickup_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x004382F0 0x020A + void __cdecl Switch_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00438500 0x00FC + void __cdecl Switch_CollisionUW(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00438600 0x023B + void __cdecl Detonator_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00438840 0x0223 + void __cdecl Keyhole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00438A80 0x0294 + void __cdecl PuzzleHole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-0x00438D40 0x0039 + void __cdecl Switch_Control(int16_t item_num);
-0x00438D80 0x00BD + int32_t __cdecl Switch_Trigger(int16_t item_num, int16_t timer);
-0x00438E40 0x003D + int32_t __cdecl Keyhole_Trigger(int16_t item_num);
-0x00438E80 0x0033 + int32_t __cdecl Pickup_Trigger(int16_t item_num);
-0x00438EC0 0x0023 + void __cdecl Secret2_Control(int16_t item_num);
-
-# game/rat.c
-0x00438EF0 0x01DC + void __cdecl Mouse_Control(int16_t item_num);
-
-# game/savegame.c
-0x004390E0 0x0062 +R void __cdecl InitialiseStartInfo(void);
-0x00439150 0x00DB +R void __cdecl ModifyStartInfo(int32_t level_num);
-0x00439230 0x0201 +R void __cdecl CreateStartInfo(int32_t level_num);
-0x00439440 0x052B +R void __cdecl CreateSaveGameInfo(void);
-0x00439970 0x085C +R void __cdecl ExtractSaveGameInfo(void);
-0x0043A1D0 0x0015 +R void __cdecl ResetSG(void);
-0x0043A1F0 0x004C +R void __cdecl WriteSG(const void *pointer, int32_t size);
-0x0043A240 0x0035 +R void __cdecl ReadSG(void *pointer, int32_t size);
-
-# game/setup.c
-0x0043A280 0x015F + int32_t __cdecl Level_Initialise(int32_t level_num, int32_t level_type);
-0x0043A3E0 0x0061 +R void __cdecl InitialiseGameFlags(void);
-0x0043A450 0x0027 +R void __cdecl InitialiseLevelFlags(void);
-0x0043A480 0x103B + void __cdecl Object_SetupBaddyObjects(void);
-0x0043B4C0 0x05FD + void __cdecl Object_SetupTrapObjects(void);
-0x0043BAC0 0x0C4C + void __cdecl Object_SetupGeneralObjects(void);
-0x0043C710 0x0068 + void __cdecl Object_SetupAllObjects(void);
-0x0043C780 0x00CE +R void __cdecl GetCarriedItems(void);
-
-# game/shark.c
-0x0043C850 0x0116 + void __cdecl Jelly_Control(int16_t item_num);
-0x0043C970 0x021B + void __cdecl Barracuda_Control(int16_t item_num);
-0x0043CBA0 0x027C + void __cdecl Shark_Control(int16_t item_num);
-
-# game/skidoo.c
-0x0043CE30 0x0040 +R void __cdecl Skidoo_Initialise(int16_t item_num);
-0x0043CE70 0x00E1 +R int32_t __cdecl Skidoo_CheckGetOn(int16_t item_num, COLL_INFO *coll);
-0x0043CF60 0x00F8 +R void __cdecl Skidoo_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-0x0043D060 0x01F9 +R void __cdecl Skidoo_BaddieCollision(const ITEM *skidoo);
-0x0043D260 0x00B2 +R int32_t __cdecl Skidoo_TestHeight(const ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
-0x0043D320 0x027C +R int32_t __cdecl DoShift(ITEM *skidoo, XYZ_32 *pos, XYZ_32 *old);
-0x0043D5A0 0x0054 +R int32_t __cdecl DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
-0x0043D600 0x0090 +R int32_t __cdecl GetCollisionAnim(ITEM *skidoo, XYZ_32 *moved);
-0x0043D690 0x0140 +R void __cdecl Skidoo_DoSnowEffect(ITEM *skidoo);
-0x0043D7D0 0x049E +R int32_t __cdecl Skidoo_Dynamics(ITEM *skidoo);
-0x0043DC70 0x01B6 +R int32_t __cdecl Skidoo_UserControl(ITEM *skidoo, int32_t height, int32_t *pitch);
-0x0043DE30 0x0106 +R int32_t __cdecl Skidoo_CheckGetOffOK(int32_t direction);
-0x0043DF40 0x02B9 +R void __cdecl Skidoo_Animation(ITEM *skidoo, int32_t collide, int32_t dead);
-0x0043E220 0x007C +R void __cdecl Skidoo_Explode(const ITEM *skidoo);
-0x0043E2A0 0x0233 +R int32_t __cdecl Skidoo_CheckGetOff(void);
-0x0043E4E0 0x011B +R void __cdecl Skidoo_Guns(void);
-0x0043E600 0x0440 +R int32_t __cdecl Skidoo_Control(void);
-0x0043EA60 0x02D5 +R void __cdecl Skidoo_Draw(const ITEM *item);
-0x0043ED40 0x007F + void __cdecl SkidooDriver_Initialise(int16_t item_num);
-0x0043EDD0 0x03E2 + void __cdecl SkidooDriver_Control(int16_t rider_num);
-0x0043F1D0 0x0119 + void __cdecl SkidooArmed_Push(const ITEM *item, ITEM *lara_item, int32_t radius);
-0x0043F2F0 0x0081 + void __cdecl SkidooArmed_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
-
-# game/sound.c
-0x0043F380 0x0031 + int32_t __cdecl Music_GetRealTrack(int32_t track);
-0x0043F3C0 0x0484 + void __cdecl Sound_Effect(int32_t sample_id, const XYZ_32 *pos, uint32_t flags);
-0x0043F860 0x005E + void __cdecl Sound_StopEffect(int32_t sample_id);
-0x0043F8C0 0x0086 + void __cdecl Sound_EndScene(void);
-0x0043F950 0x0024 + void __cdecl Sound_Shutdown(void);
-0x0043F980 0x002A + void __cdecl Sound_Init(void);
-
-# game/sphere.c
-0x0043F9B0 0x0128 + int32_t __cdecl Collide_TestCollision(ITEM *item, const ITEM *lara_item);
-0x0043FAE0 0x02D8 + int32_t __cdecl Collide_GetSpheres(const ITEM *item, SPHERE *spheres, bool world_space);
-0x0043FDC0 0x019A + void __cdecl Collide_GetJointAbsPosition(const ITEM *item, XYZ_32 *out_vec, int32_t joint);
-0x0043FF60 0x005D + void __cdecl TeethTrap_Bite(ITEM *item, const BITE *bite);
-
-# game/spider.c
-0x0043FFC0 0x00AC + void __cdecl Spider_Leap(int16_t item_num, int16_t angle);
-0x00440070 0x0206 + void __cdecl Spider_Control(int16_t item_num);
-0x00440290 0x01A5 + void __cdecl BigSpider_Control(int16_t item_num);
-
-# game/text.c
-0x00440450 0x002C + void __cdecl Text_Init(void);
-0x00440480 0x0105 + TEXTSTRING *__cdecl Text_Create(int32_t x, int32_t y, int32_t z, const char *text);
-0x00440590 0x0037 + void __cdecl Text_ChangeText(TEXTSTRING *string, const char *text);
-0x004405D0 0x0017 + void __cdecl Text_SetScale(TEXTSTRING *string, int32_t scale_h, int32_t scale_v);
-0x004405F0 0x002B + void __cdecl Text_Flash(TEXTSTRING *string, int16_t enable, int16_t rate);
-0x00440620 0x008C + void __cdecl Text_AddBackground(TEXTSTRING *string, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t color, uint16_t *gour_ptr, uint16_t flags);
-0x004406B0 0x0010 + void __cdecl Text_RemoveBackground(TEXTSTRING *string);
-0x004406C0 0x0029 + void __cdecl Text_AddOutline(TEXTSTRING *string, int16_t enable, int16_t color, uint16_t *gour_ptr, uint16_t flags);
-0x004406F0 0x0010 + void __cdecl Text_RemoveOutline(TEXTSTRING *string);
-0x00440700 0x001E + void __cdecl Text_CentreH(TEXTSTRING *string, int16_t enable);
-0x00440720 0x001E + void __cdecl Text_CentreV(TEXTSTRING *string, int16_t enable);
-0x00440740 0x001E + void __cdecl Text_AlignRight(TEXTSTRING *string, int16_t enable);
-0x00440760 0x001E + void __cdecl Text_AlignBottom(TEXTSTRING *string, int16_t enable);
-0x00440780 0x0107 + int32_t __cdecl Text_GetWidth(TEXTSTRING *string);
-0x00440890 0x0025 + int32_t __cdecl Text_Remove(TEXTSTRING *string);
-0x004408C0 0x0024 + int16_t __cdecl Text_GetTextLength(const char *text);
-0x004408F0 0x0027 + void __cdecl Text_Draw(void);
-0x00440920 0x0189 + void __cdecl Text_DrawBorder(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height);
-0x00440AB0 0x03D2 + void __cdecl Text_DrawText(const TEXTSTRING *string);
-0x00440E90 0x0037 + uint32_t __cdecl Text_GetScaleH(uint32_t value);
-0x00440ED0 0x0039 + uint32_t __cdecl Text_GetScaleV(uint32_t value);
-
-# game/traps.c
-0x00440F10 0x01F4 + void __cdecl Mine_Control(int16_t mine_num);
-0x00441110 0x0138 + void __cdecl SpikeWall_Control(int16_t item_num);
-0x00441250 0x0115 + void __cdecl SpikeCeiling_Control(int16_t item_num);
-0x00441370 0x0086 + void __cdecl Hook_Control(int16_t item_num);
-0x00441400 0x0190 + void __cdecl Propeller_Control(int16_t item_num);
-0x00441590 0x017B + void __cdecl SpinningBlade_Control(int16_t item_num);
-0x00441710 0x00FE + void __cdecl Icicle_Control(int16_t item_num);
-0x00441810 0x003C + void __cdecl Blade_Initialise(int16_t item_num);
-0x00441850 0x0091 + void __cdecl Blade_Control(int16_t item_num);
-0x004418F0 0x0046 + void __cdecl KillerStatue_Initialise(int16_t item_num);
-0x00441940 0x0109 + void __cdecl KillerStatue_Control(int16_t item_num);
-0x00441A50 0x00DB + void __cdecl Springboard_Control(int16_t item_num);
-0x00441B30 0x003C + void __cdecl RollingBall_Initialise(int16_t item_num);
-0x00441B70 0x0347 + void __cdecl RollingBall_Control(int16_t item_num);
-0x00441EC0 0x024A + void __cdecl RollingBall_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-0x00442110 0x0155 + void __cdecl Spikes_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
-0x00442270 0x004F + void __cdecl Trapdoor_Control(int16_t item_num);
-0x004422C0 0x003A + void __cdecl Trapdoor_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00442300 0x003F + void __cdecl Trapdoor_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00442340 0x00A3 + int32_t __cdecl Trapdoor_IsItemOnTop(const ITEM *item, int32_t x, int32_t z);
-0x004423F0 0x010A + void __cdecl Pendulum_Control(int16_t item_num);
-0x00442500 0x0105 + void __cdecl FallingBlock_Control(int16_t item_num);
-0x00442610 0x003E + void __cdecl FallingBlock_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x00442650 0x0044 + void __cdecl FallingBlock_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
-0x004426A0 0x00BD + void __cdecl TeethTrap_Control(int16_t item_num);
-0x00442760 0x00E0 + void __cdecl FallingCeiling_Control(int16_t item_num);
-0x00442840 0x013E + void __cdecl DartEmitter_Control(int16_t item_num);
-0x00442980 0x0155 + void __cdecl Dart_Control(int16_t item_num);
-0x00442AE0 0x004B + void __cdecl DartEffect_Control(int16_t fx_num);
-0x00442B30 0x0090 + void __cdecl FlameEmitter_Control(int16_t item_num);
-0x00442BC0 0x0164 + void __cdecl Flame_Control(int16_t fx_num);
-0x00442D30 0x0049 + void __cdecl Lara_CatchFire(void);
-0x00442D80 0x00E6 + void __cdecl Lara_TouchLava(ITEM *item);
-0x00442E70 0x00C5 + void __cdecl EmberEmitter_Control(int16_t item_num);
-0x00442F40 0x010B + void __cdecl Ember_Control(int16_t fx_num);
-
-# game/yeti.c
-0x00443050 0x02CA + void __cdecl BirdGuardian_Control(int16_t item_num);
-0x00443350 0x05ED + void __cdecl Yeti_Control(int16_t item_num);
-
-0x00443990 0x01B8 +R void __cdecl BGND_Make640x480(uint8_t *bitmap, RGB_888 *palette);
-0x00443B50 0x00B9 +R int32_t __cdecl BGND_AddTexture(int32_t tile_idx, BYTE *bitmap, int32_t pal_index, RGB_888 *bmp_pal);
-0x00443C10 0x0032 +R void __cdecl BGND_GetPageHandles(void);
-0x00443C50 0x005F +R void __cdecl BGND_DrawInGameBlack(void);
-0x00443CB0 0x00DC +R void __cdecl BGND_DrawQuad(float sx, float sy, float width, float height, D3DCOLOR color);
-0x00443D90 0x0220 +R void __cdecl BGND_DrawInGameBackground(void);
-0x00443FB0 0x0251 +R void __cdecl BGND_DrawTextureTile(int32_t sx, int32_t sy, int32_t width, int32_t height, HWR_TEXTURE_HANDLE tex_source, int32_t tu, int32_t tv, int32_t t_width, int32_t t_height, D3DCOLOR color0, D3DCOLOR color1, D3DCOLOR color2, D3DCOLOR color3);
-0x00444210 0x008B +R D3DCOLOR __cdecl BGND_CenterLighting(int32_t x, int32_t y, int32_t width, int32_t height);
-0x004444C0 0x004D +R void __cdecl BGND_Free(void);
-0x00444510 0x0030 +R bool __cdecl BGND_Init(void);
-0x00444540 0x003E +R void __cdecl Enumerate3DDevices(DISPLAY_ADAPTER *adapter);
-0x00444570 0x001F +R bool __cdecl D3DCreate(void);
-0x004445B0 0x00BD +R HRESULT __stdcall Enum3DDevicesCallback(GUID *lpGuid, LPTSTR lpDeviceDescription, LPTSTR lpDeviceName, LPD3DDEVICEDESC lpD3DHWDeviceDesc, LPD3DDEVICEDESC lpD3DHELDeviceDesc, LPVOID lpContext);
-0x00444670 0x0037 +R bool __cdecl D3DIsSupported(LPD3DDEVICEDESC desc);
-0x004446B0 0x00B9 +R bool __cdecl D3DSetViewport(void);
-0x00444770 0x01B8 +R void __cdecl D3DDeviceCreate(LPDDS lpBackBuffer);
-0x00444930 0x006A +R void __cdecl Direct3DRelease(void);
-0x00444980 0x0006 +R bool __cdecl Direct3DInit(void);
-0x00444990 0x0018 x sub_444990
-0x004449A0 0x0012 x sub_4449A0
-0x004449D0 0x00C6 x sub_4449D0
-0x00444AA0 0x0018 x sub_444AA0
-0x00444AB0 0x005F x sub_444AB0
-0x00444B20 0x008C x sub_444B20
-0x00444BB0 0x0005 x sub_444BB0
-0x00444BC0 0x0001 x sub_444BC0
-0x00444BD0 0x0054 +R bool __cdecl DDrawCreate(LPGUID lpGUID);
-0x00444C30 0x0033 +R void __cdecl DDrawRelease(void);
-0x00444C70 0x0073 +R void __cdecl GameWindowCalculateSizeFromClient(int32_t *width, int32_t *height);
-0x00444CF0 0x006A +R void __cdecl GameWindowCalculateSizeFromClientByZero(int32_t *width, int32_t *height);
-0x00444D60 0x0041 +R void __cdecl WinVidSetMinWindowSize(int32_t width, int32_t height);
-0x00444DB0 0x0008 +R void __cdecl WinVidClearMinWindowSize(void);
-0x00444DC0 0x0041 +R void __cdecl WinVidSetMaxWindowSize(int32_t width, int32_t height);
-0x00444E10 0x0008 +R void __cdecl WinVidClearMaxWindowSize(void);
-0x00444E20 0x0048 +R int32_t __cdecl CalculateWindowWidth(int32_t width, int32_t height);
-0x00444E70 0x0028 +R int32_t __cdecl CalculateWindowHeight(int32_t width, int32_t height);
-0x00444EA0 0x0104 +R bool __cdecl WinVidGetMinMaxInfo(LPMINMAXINFO info);
-0x00444FB0 0x0011 +R HWND __cdecl WinVidFindGameWindow(void);
-0x00444FD0 0x00E2 +R bool __cdecl WinVidSpinMessageLoop(bool needWait);
-0x004450C0 0x0043 +R void __cdecl WinVidShowGameWindow(int32_t nCmdShow);
-0x00445110 0x003A +R void __cdecl WinVidHideGameWindow(void);
-0x00445150 0x0035 +R void __cdecl WinVidSetGameWindowSize(int32_t width, int32_t height);
-0x00445190 0x00A7 +R bool __cdecl ShowDDrawGameWindow(bool active);
-0x00445240 0x0087 +R bool __cdecl HideDDrawGameWindow(void);
-0x004452D0 0x0044 +R HRESULT __cdecl DDrawSurfaceCreate(LPDDSDESC dsp, LPDDS *surface);
-0x00445320 0x0046 +R HRESULT __cdecl DDrawSurfaceRestoreLost(LPDDS surface1, LPDDS surface2, bool blank);
-0x00445370 0x004D +R bool __cdecl WinVidClearBuffer(LPDDS surface, LPRECT rect, DWORD fill_color);
-0x004453C0 0x003D +R HRESULT __cdecl WinVidBufferLock(LPDDS surface, LPDDSDESC desc, DWORD flags);
-0x00445400 0x0025 +R HRESULT __cdecl WinVidBufferUnlock(LPDDS surface, LPDDSDESC desc);
-0x00445430 0x0090 +R bool __cdecl WinVidCopyBitmapToBuffer(LPDDS surface, const BYTE *bitmap);
-0x004454C0 0x0046 +R DWORD __cdecl GetRenderBitDepth(DWORD dwRGBBitCount);
-0x00445550 0x0071 +R void __thiscall WinVidGetColorBitMasks(COLOR_BIT_MASKS *bm, LPDDPIXELFORMAT pixel_format);
-0x004455D0 0x0044 +R void __cdecl BitMaskGetNumberOfBits(uint32_t bit_mask, uint32_t *bit_depth, uint32_t *bit_offset);
-0x00445620 0x0061 +R DWORD __cdecl CalculateCompatibleColor(COLOR_BIT_MASKS *mask, int32_t red, int32_t green, int32_t blue, int32_t alpha);
-0x00445690 0x008C +R bool __cdecl WinVidGetDisplayMode(DISPLAY_MODE *disp_mode);
-0x00445720 0x0088 +R bool __cdecl WinVidGoFullScreen(DISPLAY_MODE *disp_mode);
-0x004457B0 0x010B +R bool __cdecl WinVidGoWindowed(int32_t width, int32_t height, DISPLAY_MODE *dispMode);
-0x004458C0 0x00D5 +R void __cdecl WinVidSetDisplayAdapter(DISPLAY_ADAPTER *disp_adapter);
-0x004459A0 0x0045 +R bool __thiscall CompareVideoModes(const DISPLAY_MODE *mode1, const DISPLAY_MODE *mode2);
-0x004459F0 0x0053 +R bool __cdecl WinVidGetDisplayModes(void);
-0x00445A50 0x03B1 +R HRESULT __stdcall EnumDisplayModesCallback(LPDDSDESC lpDDSurfaceDesc, LPVOID lpContext);
-0x00445E10 0x0040 +R bool __cdecl WinVidInit(void);
-0x00445E50 0x00AF +R bool __cdecl WinVidGetDisplayAdapters(void);
-0x00445F00 0x0013 + void __thiscall S_FlaggedString_Delete(STRING_FLAGGED *string);
-0x00445F20 0x001A +R bool __cdecl EnumerateDisplayAdapters(DISPLAY_ADAPTER_LIST *displayAdapterList);
-0x00445F40 0x01BE +R BOOL __stdcall EnumDisplayAdaptersCallback(GUID *lpGUID, LPTSTR lpDriverDescription, LPTSTR lpDriverName, LPVOID lpContext);
-0x00446100 0x0035 + void __thiscall S_FlaggedString_InitAdapter(DISPLAY_ADAPTER *adapter);
-0x00446140 0x006A +R bool __cdecl WinVidRegisterGameWindowClass(void);
-0x004461B0 0x049F +R LRESULT __stdcall WinVidGameWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
-0x004467C0 0x01C0 +R void __cdecl WinVidResizeGameWindow(HWND hWnd, int32_t edge, LPRECT rect);
-0x004469A0 0x00BC +R bool __cdecl WinVidCheckGameWindowPalette(HWND hWnd);
-0x00446A60 0x00C6 +R bool __cdecl WinVidCreateGameWindow(void);
-0x00446B30 0x0022 +R void __cdecl WinVidFreeWindow(void);
-0x00446B60 0x004D +R void __cdecl WinVidExitMessage(void);
-0x00446BB0 0x0048 +R DISPLAY_ADAPTER_NODE *__cdecl WinVidGetDisplayAdapter(GUID *lpGuid);
-0x00446C00 0x0374 +R void __cdecl WinVidStart(void);
-0x00446F80 0x0013 +R void __cdecl WinVidFinish(void);
-0x00446FA0 0x000D +R void __thiscall DisplayModeListInit(DISPLAY_MODE_LIST *pList);
-0x00446FB0 0x0032 +R void __thiscall DisplayModeListDelete(DISPLAY_MODE_LIST *pList);
-0x00446FF0 0x0012 +R DISPLAY_MODE *__thiscall InsertDisplayMode(DISPLAY_MODE_LIST *modeList, DISPLAY_MODE_NODE *before);
-0x00447010 0x0048 +R DISPLAY_MODE *__thiscall InsertDisplayModeInListHead(DISPLAY_MODE_LIST *modeList);
-0x00447060 0x004A +R DISPLAY_MODE *__thiscall InsertDisplayModeInListTail(DISPLAY_MODE_LIST *modeList);
-0x004470B0 0x0018 x sub_4470B0
-0x004470C0 0x0012 x sub_4470C0
-0x004470F0 0x0068 x sub_4470F0
-0x00447160 0x0018 x sub_447160
-0x00447170 0x0039 x sub_447170
-0x004471C0 0x002F x sub_4471C0
-0x004471F0 0x0022 +R bool __cdecl DInputCreate(void);
-0x00447220 0x001A +R void __cdecl DInputRelease(void);
-0x00447240 0x005A +R void __cdecl WinInReadKeyboard(LPVOID lpInputData);
-0x004472A0 0x00F3 +R DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);
-0x004473A0 0x0005 x sub_4473A0
-0x004473B0 0x007F +R bool __cdecl WinInputInit(void);
-0x00447430 0x0024 +R bool __cdecl DInputEnumDevices(JOYSTICK_LIST *joystickList);
-0x00447460 0x00E8 +R BOOL __stdcall DInputEnumDevicesCallback(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef);
-0x00447550 0x001F + void __thiscall S_FlaggedString_Create(STRING_FLAGGED *string, int32_t size);
-0x00447570 0x004E +R JOYSTICK_NODE *__cdecl GetJoystick(GUID *lpGuid);
-0x004475C0 0x00C9 +R void __cdecl DInputKeyboardCreate(void);
-0x00447690 0x0029 +R void __cdecl DInputKeyboardRelease(void);
-0x004476C0 0x00E4 +R bool __cdecl DInputJoystickCreate(void);
-0x004477B0 0x002D +R void __cdecl WinInStart(void);
-0x004477E0 0x000F +R void __cdecl WinInFinish(void);
-0x004477F0 0x0017 +R void __cdecl WinInRunControlPanel(HWND hWnd);
-0x00447810 0x0062 +R void __cdecl IncreaseScreenSize(void);
-0x00447880 0x0062 +R void __cdecl DecreaseScreenSize(void);
-0x004478F0 0x009F +R void __cdecl setup_screen_size(void);
-0x00447990 0x0034 +R void __cdecl TempVideoAdjust(int32_t hires, double sizer);
-0x004479D0 0x0039 +R void __cdecl TempVideoRemove(void);
-0x00447A10 0x0035 +R void __cdecl S_FadeInInventory(BOOL isFade);
-0x00447A50 0x0027 +R void __cdecl S_FadeOutInventory(BOOL isFade);
-0x00447A80 0x0018 x sub_447A80
-0x00447A90 0x0012 x sub_447A90
-0x00447AC0 0x0068 x sub_447AC0
-0x00447B30 0x0018 x sub_447B30
-0x00447B40 0x0039 x sub_447B40
-0x00447B90 0x002F x sub_447B90
-0x00447BC0 0x0048 + const SOUND_ADAPTER_NODE *__cdecl S_Audio_Sample_GetAdapter(GUID *guid);
-0x00447C10 0x002E + void __cdecl S_Audio_Sample_CloseAllTracks(void);
-0x00447C40 0x010E + bool __cdecl S_Audio_Sample_Load(int32_t sample_id, LPWAVEFORMATEX format, const void *data, int32_t data_size);
-0x00447D50 0x0045 + bool __cdecl S_Audio_Sample_IsTrackPlaying(int32_t track_id);
-0x00447DA0 0x00E7 + int32_t __cdecl S_Audio_Sample_Play(int32_t sample_id, int32_t volume, int32_t pitch, int32_t pan, int32_t flags);
-0x00447E90 0x0039 + int32_t __cdecl S_Audio_Sample_GetFreeTrackIndex(void);
-0x00447ED0 0x002C + void __cdecl S_Audio_Sample_AdjustTrackVolumeAndPan(int32_t track_id, int32_t volume, int32_t pan);
-0x00447F00 0x0031 + void __cdecl S_Audio_Sample_AdjustTrackPitch(int32_t track_id, int32_t pitch);
-0x00447F40 0x002F + void __cdecl S_Audio_Sample_CloseTrack(int32_t track_id);
-0x00447FA0 0x0005 x sub_447FA0
-0x00447FB0 0x009C + bool __cdecl S_Audio_Sample_Init(void);
-0x00448050 0x001A + bool __cdecl S_Audio_Sample_DSoundEnumerate(SOUND_ADAPTER_LIST *adapter_list);
-0x00448070 0x00E2 + BOOL __stdcall S_Audio_Sample_DSoundEnumCallback(LPGUID guid, LPCTSTR description, LPCTSTR module, LPVOID context);
-0x00448160 0x017C + void __cdecl S_Audio_Sample_Init2(HWND hwnd);
-0x004482E0 0x001C + bool __cdecl S_Audio_Sample_DSoundCreate(GUID *guid);
-0x00448300 0x00C4 + bool __cdecl S_Audio_Sample_DSoundBufferTest(void);
-0x004483D0 0x002A + void __cdecl S_Audio_Sample_Shutdown(void);
-0x00448400 0x0006 + bool __cdecl S_Audio_Sample_IsEnabled(void);
-0x00448410 0x0005 x sub_448410
-0x00448420 0x0001 x sub_448420
-0x00448430 0x013B +R void __cdecl CreateScreenBuffers(void);
-0x00448570 0x0094 +R void __cdecl CreatePrimarySurface(void);
-0x00448610 0x0098 +R void __cdecl CreateBackBuffer(void);
-0x004486B0 0x009D +R void __cdecl CreateClipper(void);
-0x00448750 0x00D3 +R void __cdecl CreateWindowPalette(void);
-0x00448830 0x00BC +R void __cdecl CreateZBuffer(void);
-0x004488F0 0x002B +R DWORD __cdecl GetZBufferDepth(void);
-0x00448920 0x00A1 +R void __cdecl CreateRenderBuffer(void);
-0x004489D0 0x0070 +R void __cdecl CreatePictureBuffer(void);
-0x00448A40 0x01A4 +R void __cdecl ClearBuffers(DWORD flags, DWORD fill_color);
-0x00448BF0 0x013C +R void __cdecl RestoreLostBuffers(void);
-0x00448D30 0x00CF +R void __cdecl UpdateFrame(bool need_run_message_loop, LPRECT rect);
-0x00448E00 0x003B +R void __cdecl WaitPrimaryBufferFlip(void);
-0x00448E40 0x0003 +R bool __cdecl RenderInit(void);
-0x00448E50 0x03A5 +R void __cdecl RenderStart(bool is_reset);
-0x00449200 0x00E6 +R void __cdecl RenderFinish(bool need_to_clear_textures);
-0x004492F0 0x0204 +R bool __cdecl ApplySettings(APP_SETTINGS *new_settings);
-0x00449500 0x0105 +R void __cdecl FmvBackToGame(void);
-0x00449610 0x023A +R void __cdecl GameApplySettings(APP_SETTINGS *new_settings);
-0x00449850 0x0067 +R void __cdecl UpdateGameResolution(void);
-0x004498C0 0x000C +R LPCTSTR __cdecl DecodeErrorMessage(DWORD error_code);
-0x004498D0 0x0049 @R BOOL __cdecl ReadFileSync(HANDLE handle, LPVOID lpBuffer, DWORD nBytesToRead, LPDWORD lpnBytesRead, LPOVERLAPPED lpOverlapped);
-0x00449920 0x0188 + BOOL __cdecl Level_LoadTexturePages(HANDLE handle);
-0x00449AB0 0x03A0 + BOOL __cdecl Level_LoadRooms(HANDLE handle);
-0x00449E50 0x0097 +R void __cdecl AdjustTextureUVs(bool reset_uv_add);
-0x00449EF0 0x057E + BOOL __cdecl Level_LoadObjects(HANDLE handle);
-0x0044A470 0x0135 + BOOL __cdecl Level_LoadSprites(HANDLE handle);
-0x0044A5B0 0x01D6 + BOOL __cdecl Level_LoadItems(HANDLE handle);
-0x0044A790 0x0188 + BOOL __cdecl Level_LoadDepthQ(HANDLE handle);
-0x0044A920 0x0071 + BOOL __cdecl Level_LoadPalettes(HANDLE handle);
-0x0044A9A0 0x0060 + BOOL __cdecl Level_LoadCameras(HANDLE handle);
-0x0044AA00 0x0060 + BOOL __cdecl Level_LoadSoundEffects(HANDLE handle);
-0x0044AA60 0x0221 + BOOL __cdecl Level_LoadBoxes(HANDLE handle);
-0x0044AC90 0x0055 + BOOL __cdecl Level_LoadAnimatedTextures(HANDLE handle);
-0x0044ACF0 0x0079 + BOOL __cdecl Level_LoadCinematic(HANDLE handle);
-0x0044AD70 0x008A + BOOL __cdecl Level_LoadDemo(HANDLE handle);
-0x0044AE00 0x009A + void __cdecl Level_LoadDemoExternal(LPCTSTR level_name);
-0x0044AEA0 0x0265 + BOOL __cdecl Level_LoadSamples(HANDLE handle);
-0x0044B110 0x0036 @R void __cdecl ChangeFileNameExtension(char *file_name, const char *file_ext);
-0x0044B150 0x0026 @R LPCTSTR __cdecl GetFullPath(LPCTSTR file_name);
-0x0044B180 0x00E0 @R BOOL __cdecl SelectDrive(void);
-0x0044B260 0x024A + bool __cdecl Level_Load(const char *file_name, int32_t level_num);
-0x0044B4B0 0x0018 +R BOOL __cdecl S_LoadLevelFile(LPCTSTR file_name, int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
-0x0044B4D0 0x002A +R void __cdecl S_UnloadLevelFile(void);
-0x0044B500 0x0014 +R void __cdecl S_AdjustTexelCoordinates(void);
-0x0044B520 0x00C4 +R BOOL __cdecl S_ReloadLevelGraphics(BOOL reload_palettes, BOOL reload_tex_pages);
-0x0044B5F0 0x00C6 + BOOL __cdecl GF_ReadStringTable(DWORD count, char **string_table, char **string_buf, LPDWORD buf_size, HANDLE handle);
-0x0044B6C0 0x06D1 + BOOL __cdecl GF_LoadFromFile(const char *file_name);
-0x0044BDA0 0x006B +R bool __cdecl PlayFMV(const char *file_name);
-0x0044BE10 0x02E0 +R void __cdecl WinPlayFMV(const char *file_name, bool is_playback);
-0x0044C0F0 0x0048 +R void __cdecl WinStopFMV(bool is_playback);
-0x0044C140 0x0088 +R bool __cdecl IntroFMV(const char *file_name1, const char *file_name2);
-0x0044C1D0 0x0023 +R uint16_t __cdecl S_FindColor(int32_t red, int32_t green, int32_t blue);
-0x0044C200 0x0035 +R void __cdecl S_DrawScreenLine(int32_t x, int32_t y, int32_t z, int32_t x_len, int32_t y_len, BYTE color_idx, D3DCOLOR *gour, uint16_t flags);
-0x0044C240 0x0116 +R void __cdecl S_DrawScreenBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_OUTLINE *gour, uint16_t flags);
-0x0044C360 0x002E +R void __cdecl S_DrawScreenFBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_FILL *gour, uint16_t flags);
-0x0044C390 0x000F +R void __cdecl S_FinishInventory(void);
-0x0044C3A0 0x0043 +R void __cdecl S_FadeToBlack(void);
-0x0044C3F0 0x0057 +R void __cdecl S_Wait(int32_t timeout, BOOL input_check);
-0x0044C450 0x000E +R bool __cdecl S_PlayFMV(const char *file_name);
-0x0044C460 0x0013 +R bool __cdecl S_IntroFMV(const char *file_name1, const char *file_name2);
-0x0044C480 0x0144 + int16_t __cdecl Game_Start(int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
-0x0044C5D0 0x009A + int32_t __cdecl Game_Loop(bool demo_mode);
-0x0044C670 0x0006 +R int32_t __cdecl LevelCompleteSequence(void);
-0x0044C680 0x01C2 +R int32_t __cdecl LevelStats(int32_t level_num);
-0x0044C850 0x0113 +R int32_t __cdecl GameStats(int32_t level_num);
-0x0044C970 0x001E + int32_t __cdecl Random_GetControl(void);
-0x0044C990 0x000A + void __cdecl Random_SeedControl(int32_t seed);
-0x0044C9A0 0x001E + int32_t __cdecl Random_GetDraw(void);
-0x0044C9C0 0x000A + void __cdecl Random_SeedDraw(int32_t seed);
-0x0044C9D0 0x0044 +R void __cdecl GetValidLevelsList(REQUEST_INFO *req);
-0x0044CA20 0x004C +R void __cdecl GetSavedGamesList(REQUEST_INFO *req);
-0x0044CA70 0x0233 +R void __cdecl DisplayCredits(void);
-0x0044CCB0 0x0165 +R BOOL __cdecl S_FrontEndCheck(void);
-0x0044CE20 0x0114 +R int32_t __cdecl S_SaveGame(const void *save_data, uint32_t save_size, int32_t slot_num);
-0x0044CF40 0x0096 +R int32_t __cdecl S_LoadGame(void *save_data, uint32_t save_size, int32_t slot_num);
-0x0044CFE0 0x0128 +R void __cdecl HWR_InitState(void);
-0x0044D110 0x0029 +R void __cdecl HWR_ResetTexSource(void);
-0x0044D140 0x002B +R void __cdecl HWR_ResetColorKey(void);
-0x0044D170 0x0059 +R void __cdecl HWR_ResetZBuffer(void);
-0x0044D1D0 0x0024 +R void __cdecl HWR_TexSource(HWR_TEXTURE_HANDLE tex_source);
-0x0044D200 0x004A +R void __cdecl HWR_EnableColorKey(bool state);
-0x0044D250 0x0082 +R void __cdecl HWR_EnableZBuffer(bool z_write_enable, bool z_enable);
-0x0044D2E0 0x0016 +R void __cdecl HWR_BeginScene(void);
-0x0044D310 0x016C +R void __cdecl HWR_DrawPolyList(void);
-0x0044D490 0x008E +R void __cdecl HWR_LoadTexturePages(int32_t pages_count, void *pages_buf, RGB_888 *palette);
-0x0044D520 0x004A +R void __cdecl HWR_FreeTexturePages(void);
-0x0044D570 0x0035 +R void __cdecl HWR_GetPageHandles(void);
-0x0044D5B0 0x0019 +R bool __cdecl HWR_VertexBufferFull(void);
-0x0044D5E0 0x0022 +R bool __cdecl HWR_Init(void);
-0x0044D610 0x005C + BOOL __cdecl S_InitialiseSystem(void);
-0x0044D670 0x0011 + void __cdecl GameBuf_Shutdown(void);
-0x0044D690 0x0021 + void __cdecl GameBuf_Reset(void);
-0x0044D6C0 0x006C + void *__cdecl GameBuf_Alloc(size_t alloc_size, GAME_BUFFER buf_index);
-0x0044D740 0x0034 + void __cdecl GameBuf_Free(size_t free_size);
-0x0044D780 0x00E8 + void __cdecl Output_CalculateWibbleTable(void);
-0x0044D870 0x007F + void __cdecl Random_Seed(void);
-0x0044D8F0 0x0120 + BOOL __cdecl S_Input_Key(KEYMAP keymap);
-0x0044DA10 0x0AC4 + bool __cdecl Input_Update(void);
-0x0044E4E0 0x003C +R int32_t __cdecl RenderErrorBox(int32_t error_code);
-0x0044E520 0x01D6 +R int32_t __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int32_t nShowCmd);
-0x0044E6F0 0x0001 x sub_44E6F0
-0x0044E700 0x0064 +R int32_t __cdecl GameInit(bool skip_cd_init);
-0x0044E770 0x0055 + void __cdecl Shell_Cleanup(void);
-0x0044E7A0 0x007C +R int32_t __cdecl WinGameStart(void);
-0x0044E820 0x0039 + void __cdecl Shell_Shutdown(void);
-0x0044E860 0x0017 xR sub_44E860
-0x0044E880 0x0010 xR sub_44E880
-0x0044E890 0x003C + void __cdecl Shell_ExitSystem(const char *message);
-0x0044E8E0 0x010F +R void __cdecl ScreenshotPCX(void);
-0x0044E9F0 0x00AE +R DWORD __cdecl CompPCX(BYTE *bitmap, DWORD width, DWORD height, RGB_888 *palette, BYTE **pcx_data);
-0x0044EAA0 0x00D2 +R DWORD __cdecl EncodeLinePCX(BYTE *src, DWORD width, BYTE *dst);
-0x0044EB80 0x003E +R DWORD __cdecl EncodePutPCX(BYTE value, BYTE num, BYTE *buffer);
-0x0044EBC0 0x01F5 +R void __cdecl Screenshot(LPDDS screen);
-0x0044EDC0 0x007F + void __cdecl Option_DoInventory(INVENTORY_ITEM *item);
-0x0044EED0 0x0648 + void __cdecl Option_Passport(INVENTORY_ITEM *item);
-0x0044F520 0x02DA + void __cdecl Option_Detail(INVENTORY_ITEM *item);
-0x0044F800 0x049D + void __cdecl Option_Sound(INVENTORY_ITEM *item);
-0x0044FCA0 0x00C0 + void __cdecl Option_Compass(INVENTORY_ITEM *item);
-0x0044FD60 0x007E + void __cdecl Option_Controls_FlashConflicts(void);
-0x0044FDE0 0x0040 + void __cdecl Option_Controls_DefaultConflict(void);
-0x0044FE20 0x06F4 + void __cdecl Option_Controls(INVENTORY_ITEM *item);
-0x00450530 0x04D0 + void __cdecl Option_Controls_ShowControls(void);
-0x00450A00 0x0096 + void __cdecl Option_Controls_UpdateText(void);
-0x00450AA0 0x003B +R void __cdecl S_RemoveCtrlText(void);
-0x00450AE0 0x0006 +R int32_t __cdecl GetRenderHeight(void);
-0x00450AF0 0x0006 +R int32_t __cdecl GetRenderWidth(void);
-0x00450B00 0x00E4 +R void __cdecl S_InitialisePolyList(BOOL clear_back_buffer);
-0x00450BF0 0x0036 +R DWORD __cdecl S_DumpScreen(void);
-0x00450C30 0x000B +R void __cdecl S_ClearScreen(void);
-0x00450C40 0x0037 +R void __cdecl S_InitialiseScreen(GAMEFLOW_LEVEL_TYPE level_type);
-0x00450C80 0x0089 +R void __cdecl S_OutputPolyList(void);
-0x00450CC0 0x0270 +R int32_t __cdecl Output_GetObjectBounds(const BOUNDS_16 *bounds);
-0x00450F30 0x0046 +R void __cdecl S_InsertBackPolygon(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
-0x00450F80 0x01F1 + void __cdecl Output_InsertShadow(int16_t radius, const BOUNDS_16 *bounds, const ITEM *item);
-0x00451180 0x02F6 + void __cdecl Output_CalculateLight(int32_t x, int32_t y, int32_t z, int16_t room_num);
-0x00451480 0x0031 + void __cdecl Output_CalculateStaticLight(int16_t adder);
-0x004514C0 0x0124 + void __cdecl Output_CalculateStaticMeshLight(int32_t x, int32_t y, int32_t z, int32_t shade_1, int32_t shade_2, ROOM *room);
-0x004515F0 0x0206 + void __cdecl Output_LightRoom(ROOM *room);
-0x00451800 0x01CC + void __cdecl Output_DrawHealthBar(int32_t percent);
-0x004519D0 0x01F6 + void __cdecl Output_DrawAirBar(int32_t percent);
-0x00451BD0 0x00C0 + void __cdecl Output_DoAnimateTextures(int32_t ticks);
-0x00451C90 0x0051 + void __cdecl Output_SetupBelowWater(bool underwater);
-0x00451CF0 0x0021 + void __cdecl Output_SetupAboveWater(bool underwater);
-0x00451D20 0x00B1 + void __cdecl Output_AnimateTextures(int32_t ticks);
-0x00451DE0 0x0105 +R void __cdecl S_DisplayPicture(const char *file_name, BOOL is_title);
-0x00451EF0 0x007E +R void __cdecl S_SyncPictureBufferPalette(void);
-0x00451F70 0x001C +R void __cdecl S_DontDisplayPicture(void);
-0x00451F80 0x000D +R void __cdecl ScreenDump(void);
-0x00451F90 0x0010 +R void __cdecl ScreenPartialDump(void);
-0x00451FA0 0x01C9 +R void __cdecl FadeToPal(int32_t fade_value, RGB_888 *palette);
-0x00452170 0x0026 +R void __cdecl ScreenClear(bool is_phd_win_size);
-0x004521A0 0x00AB +R void __cdecl S_CopyScreenToBuffer(void);
-0x00452250 0x0254 +R void __cdecl S_CopyBufferToScreen(void);
-0x004522A0 0x00FA @R BOOL __cdecl DecompPCX(const uint8_t *pcx, size_t pcx_size, LPBYTE pic, RGB_888 *pal);
-0x004523A0 0x0005 x sub_4523A0
-0x004523B0 0x0001 x sub_4523B0
-0x004523C0 0x004E @R bool __cdecl OpenGameRegistryKey(LPCTSTR key);
-0x00452410 0x0005 @R LONG __cdecl CloseGameRegistryKey(void);
-0x00452420 0x0262 @R bool __cdecl SE_WriteAppSettings(APP_SETTINGS *settings);
-0x00452690 0x0348 @R int32_t __cdecl SE_ReadAppSettings(APP_SETTINGS *settings);
-0x004529E0 0x00D7 @R bool __cdecl SE_GraphicsTestStart(void);
-0x00452AB0 0x0014 @R void __cdecl SE_GraphicsTestFinish(void);
-0x00452AD0 0x0003 @R int32_t __cdecl SE_GraphicsTestExecute(void);
-0x00452AE0 0x0057 @R int32_t __cdecl SE_GraphicsTest(void);
-0x00452B40 0x00C7 @R bool __cdecl SE_SoundTestStart(void);
-0x00452C00 0x0005 @R void __cdecl SE_SoundTestFinish(void);
-0x00452C10 0x003D @R int32_t __cdecl SE_SoundTestExecute(void);
-0x00452C50 0x0057 @R int32_t __cdecl SE_SoundTest(void);
-0x00452CB0 0x003E @R int32_t __stdcall SE_PropSheetCallback(HWND hwndDlg, UINT uMsg, LPARAM lParam);
-0x00452CF0 0x005D @R LRESULT __stdcall SE_NewPropSheetWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-0x00452D50 0x02DE @R bool __cdecl SE_ShowSetupDialog(HWND hParent, bool isDefault);
-0x00453030 0x0351 @R INT_PTR __stdcall SE_GraphicsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-0x004533F0 0x01DC @R void __cdecl SE_GraphicsDlgFullScreenModesUpdate(HWND hwndDlg);
-0x004535E0 0x0017 @R void __cdecl SE_GraphicsAdapterSet(HWND hwndDlg, DISPLAY_ADAPTER_NODE *adapter);
-0x00453600 0x0735 @R void __cdecl SE_GraphicsDlgUpdate(HWND hwndDlg);
-0x00453D40 0x017C @R void __cdecl SE_GraphicsDlgInit(HWND hwndDlg);
-0x00453EC0 0x0149 @R INT_PTR __stdcall SE_SoundDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-0x00454050 0x000A @R void __cdecl SE_SoundAdapterSet(HWND hwndDlg, SOUND_ADAPTER_NODE *adapter);
-0x00454060 0x011B @R void __cdecl SE_SoundDlgUpdate(HWND hwndDlg);
-0x00454180 0x00BE @R void __cdecl SE_SoundDlgInit(HWND hwndDlg);
-0x00454240 0x0106 @R INT_PTR __stdcall SE_ControlsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-0x00454350 0x000A @R void __cdecl SE_ControlsJoystickSet(HWND hwndDlg, JOYSTICK_NODE *joystick);
-0x00454360 0x0068 @R void __cdecl SE_ControlsDlgUpdate(HWND hwndDlg);
-0x004543D0 0x00BD @R void __cdecl SE_ControlsDlgInit(HWND hwndDlg);
-0x00454490 0x008A @R INT_PTR __stdcall SE_OptionsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-0x00454520 0x0234 @R void __cdecl SE_OptionsDlgUpdate(HWND hwndDlg);
-0x00454760 0x004B @R void __cdecl SE_OptionsStrCat(LPTSTR *dstString, bool isEnabled, bool *isNext, LPCTSTR srcString);
-0x004547B0 0x00DC @R INT_PTR __stdcall SE_AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
-0x004548B0 0x0093 @R void __cdecl SE_AdvancedDlgUpdate(HWND hwndDlg);
-0x00454950 0x000E @R void __cdecl SE_AdvancedDlgInit(HWND hwndDlg);
-0x00454960 0x0011 @R HWND __cdecl SE_FindSetupDialog(void);
-0x00454980 0x02D0 + BOOL __cdecl Shell_Main(void);
-0x00454C50 0x0110 +R int16_t __cdecl TitleSequence(void);
-0x00454D60 0x032D + void __cdecl Lara_Cheat_CheckKeys(void);
-0x004550C0 0x007D +R void __cdecl S_SaveSettings(void);
-0x00455140 0x00DB +R void __cdecl S_LoadSettings(void);
-0x00455220 0x0046 + int32_t __cdecl S_Audio_Sample_OutPlay(int32_t sample_id, uint16_t volume, int32_t pitch, int32_t pan);
-0x00455270 0x002A + int32_t __cdecl S_Audio_Sample_CalculateSampleVolume(int32_t volume);
-0x004552A0 0x0026 + int32_t __cdecl S_Audio_Sample_CalculateSamplePan(int16_t pan);
-0x004552D0 0x0046 + int32_t __cdecl S_Audio_Sample_OutPlayLooped(int32_t track_id, uint16_t volume, int32_t pitch, int32_t pan);
-0x00455320 0x0039 + void __cdecl S_Audio_Sample_OutSetPanAndVolume(int32_t track_id, int32_t pan, uint16_t volume);
-0x00455360 0x001C + void __cdecl S_Audio_Sample_OutSetPitch(int32_t track_id, int32_t pitch);
-0x00455380 0x000A + void __cdecl Sound_SetMasterVolume(int32_t volume);
-0x00455390 0x0017 + void __cdecl S_Audio_Sample_OutCloseTrack(int32_t track_id);
-0x004553B0 0x003C + void __cdecl S_Audio_Sample_OutCloseAllTracks(void);
-0x004553C0 0x001F + BOOL __cdecl S_Audio_Sample_OutIsTrackPlaying(int32_t track_id);
-0x004553E0 0x0077 + bool __cdecl Music_Init(void);
-0x00455460 0x0051 + void __cdecl Music_Shutdown(void);
-0x00455500 0x006F + void __cdecl Music_Legacy_Play(int16_t track_id, bool is_looped);
-0x00455570 0x0039 + void __cdecl Music_Stop(void);
-0x004555B0 0x0084 + bool __cdecl Music_PlaySynced(int32_t track_id);
-0x00455640 0x0061 + int32_t __cdecl Music_GetFrames(void);
-0x004556B0 0x0092 + void __cdecl Music_SetVolume(int32_t volume);
-0x004557A0 0x0137 +R void __cdecl CopyBitmapPalette(RGB_888 *src_pal, BYTE *src_bitmap, int32_t bitmap_size, RGB_888 *dest_pal);
-0x004558E0 0x00C8 +R BYTE __cdecl FindNearestPaletteEntry(RGB_888 *palette, int32_t red, int32_t green, int32_t blue, bool ignore_sys_palette);
-0x004559B0 0x00AE +R void __cdecl SyncSurfacePalettes(void *src_data, int32_t width, int32_t height, int32_t src_pitch, RGB_888 *src_palette, void *dst_data, int32_t dst_pitch, RGB_888 *dst_palette, bool preserve_sys_palette);
-0x00455A60 0x0087 +R int32_t __cdecl CreateTexturePalette(const RGB_888 *pal);
-0x00455AF0 0x001C +R int32_t __cdecl GetFreePaletteIndex(void);
-0x00455B10 0x0023 +R void __cdecl FreePalette(int32_t palette_idx);
-0x00455B40 0x0012 +R void __cdecl SafeFreePalette(int32_t palette_idx);
-0x00455B90 0x006A +R int32_t __cdecl CreateTexturePage(int32_t width, int32_t height, LPDIRECTDRAWPALETTE palette);
-0x00455C00 0x001C +R int32_t __cdecl GetFreeTexturePageIndex(void);
-0x00455C20 0x0098 +R bool __cdecl CreateTexturePageSurface(TEXPAGE_DESC *desc);
-0x00455CC0 0x0174 +R bool __cdecl TexturePageInit(TEXPAGE_DESC *page);
-0x00455E40 0x0025 +R LPDIRECT3DTEXTURE2 __cdecl Create3DTexture(LPDDS surface);
-0x00455E70 0x0020 +R void __cdecl SafeFreeTexturePage(int32_t page_idx);
-0x00455E90 0x0032 +R void __cdecl FreeTexturePage(int32_t page_idx);
-0x00455ED0 0x003B +R void __cdecl TexturePageReleaseVidMemSurface(TEXPAGE_DESC *page);
-0x00455F10 0x0026 +R void __cdecl FreeTexturePages(void);
-0x00455F40 0x00A2 +R bool __cdecl LoadTexturePage(int32_t page_idx, bool reset);
-0x00455FF0 0x0035 +R bool __cdecl ReloadTextures(bool reset);
-0x00456030 0x003E +R HWR_TEXTURE_HANDLE __cdecl GetTexturePageHandle(int32_t page_idx);
-0x00456070 0x00F5 +R int32_t __cdecl AddTexturePage8(int32_t width, int32_t height, const uint8_t *page_buf, int32_t pal_idx);
-0x00456170 0x0196 +R int32_t __cdecl AddTexturePage16(int32_t width, int32_t height, const uint8_t *page_buf);
-0x00456310 0x011A +R HRESULT __stdcall EnumTextureFormatsCallback(LPDDSDESC lpDdsd, LPVOID lpContext);
-0x00456430 0x0025 +R HRESULT __cdecl EnumerateTextureFormats(void);
-0x00456460 0x0030 +R void __cdecl CleanupTextures(void);
-0x00456470 0x001F +R bool __cdecl InitTextures(void);
-0x00456490 0x0040 @R void __cdecl UpdateTicks(void);
-0x004564D0 0x0051 @R bool __cdecl TIME_Init(void);
-0x00456530 0x0058 +R DWORD __cdecl Sync(void);
-0x00456590 0x0036 @R LPVOID __cdecl UT_LoadResource(LPCTSTR lpName, LPCTSTR lpType);
-0x004565D0 0x0060 @R void __cdecl UT_InitAccurateTimer(void);
-0x00456630 0x004E @R double __cdecl UT_Microseconds(void);
-0x00456680 0x006F @R BOOL __cdecl UT_CenterWindow(HWND hWnd);
-0x004566F0 0x002C @R LPTSTR __cdecl UT_FindArg(LPCTSTR str);
-0x00456720 0x0018 @R int32_t __cdecl UT_MessageBox(LPCTSTR lpText, HWND hWnd);
-0x00456740 0x0042 @R int32_t __cdecl UT_ErrorBox(UINT uID, HWND hWnd);
-0x00456790 0x0051 @R LPCTSTR __cdecl GuidBinaryToString(GUID *guid);
-0x004567F0 0x00AA @R bool __cdecl GuidStringToBinary(LPCTSTR lpString, GUID *guid);
-0x004568A0 0x0030 @R BOOL __cdecl OpenRegistryKey(LPCTSTR lpSubKey);
-0x004568D0 0x000F @R bool __cdecl IsNewRegistryKeyCreated(void);
-0x004568E0 0x000D @R LONG __cdecl CloseRegistryKey(void);
-0x004568F0 0x001E @R LONG __cdecl SetRegistryDwordValue(LPCTSTR lpValueName, DWORD value);
-0x00456910 0x002A @R LONG __cdecl SetRegistryBoolValue(LPCTSTR lpValueName, bool value);
-0x00456940 0x0036 @R LONG __cdecl SetRegistryFloatValue(LPCTSTR lpValueName, double value);
-0x00456980 0x0037 @R LONG __cdecl SetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize);
-0x004569C0 0x004A @R LONG __cdecl SetRegistryStringValue(LPCTSTR lpValueName, LPCTSTR value, int32_t length);
-0x00456A10 0x0013 @R LONG __cdecl DeleteRegistryValue(LPCTSTR lpValueName);
-0x00456A30 0x005E @R bool __cdecl GetRegistryDwordValue(LPCTSTR lpValueName, DWORD *pValue, DWORD defaultValue);
-0x00456A90 0x0076 @R bool __cdecl GetRegistryBoolValue(LPCTSTR lpValueName, bool *pValue, bool defaultValue);
-0x00456B10 0x005C @R bool __cdecl GetRegistryFloatValue(LPCTSTR lpValueName, double *value, double defaultValue);
-0x00456B70 0x0071 @R bool __cdecl GetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize, LPBYTE defaultValue);
-0x00456BF0 0x0095 @R bool __cdecl GetRegistryStringValue(LPCTSTR lpValueName, LPTSTR value, DWORD maxSize, LPCTSTR defaultValue);
-0x00456C90 0x0091 @R bool __cdecl GetRegistryGuidValue(LPCTSTR lpValueName, GUID *value, GUID *defaultValue);
-0x00456D30 0x0037 @R void __thiscall SE_ReleaseBitmapResource(BITMAP_RESOURCE *bmpRsrc);
-0x00456D70 0x00C4 @R void __thiscall SE_LoadBitmapResource(BITMAP_RESOURCE *bmpRsrc, LPCTSTR lpName);
-0x00456E40 0x0064 @R void __thiscall SE_DrawBitmap(BITMAP_RESOURCE *bmpRsrc, HDC hdc, int32_t x, int32_t y);
-0x00456EB0 0x001C @R void __thiscall SE_UpdateBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd, HWND hSender);
-0x00456ED0 0x0057 @R void __thiscall SE_ChangeBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd);
-0x00456F30 0x0061 @R bool __cdecl SE_RegisterSetupWindowClass(void);
-0x00456FA0 0x023A @R LRESULT __stdcall SE_SetupWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
-0x004571E0 0x0026 @R void __cdecl SE_PassMessageToImage(HWND hWnd, UINT uMsg, WPARAM wParam);
-0x00457210 0x006E @R void __cdecl UT_MemBlt(BYTE *dstBuf, DWORD dstX, DWORD dstY, DWORD width, DWORD height, DWORD dstPitch, BYTE *srcBuf, DWORD srcX, DWORD srcY, DWORD srcPitch);
-0x00457280 0x001E + void __cdecl Matrix_Push(void);
-0x0045729E 0x0033 + void __cdecl Matrix_PushUnit(void);
-0x004572D4 0x0061 + void __fastcall Output_FlatA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
-0x00457335 0x013A + void __fastcall Output_TransA(int32_t y0, int32_t y1, uint8_t depth_q); // actually, __watcall, which is esoteric and rarely supported
-0x0045746F 0x0160 + void __fastcall Output_GourA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
-0x004575CF 0x02FD + void __fastcall Output_GTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
-0x004578CC 0x0341 + void __fastcall Output_WGTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
-0x00457C10 0x0048 + int32_t __fastcall Math_Atan(int32_t x, int32_t y);
-0x00457C58 0x0006 + int32_t __fastcall Math_Cos(int16_t angle);
-0x00457C5E 0x001B + int32_t __fastcall Math_Sin(int16_t angle);
-0x00457C79 0x001A + int32_t __fastcall Math_SinImpl(int16_t angle);
-0x00457C93 0x002C + uint32_t __fastcall Math_Sqrt(uint32_t n);
-
-0x00458D00 0x0006 + int __cdecl Player_PlayFrame(LPVOID, LPVOID, LPVOID, DWORD, LPCRECT, DWORD, DWORD, DWORD);
-0x00458D06 0x0006 + int __cdecl Movie_GetTotalFrames(LPVOID);
-0x00458D0C 0x0006 + int __cdecl Movie_GetCurrentFrame(LPVOID);
-0x00458D12 0x0006 + int __cdecl Player_StartTimer(LPVOID);
-0x00458D18 0x0006 + int __cdecl Player_InitMoviePlayback(LPVOID, LPVOID, LPVOID);
-0x00458D1E 0x0006 + int __cdecl Movie_SetSyncAdjust(LPVOID, LPVOID, DWORD);
-0x00458D24 0x0006 + int __cdecl Player_InitSound(LPVOID, DWORD, DWORD, BOOL, DWORD, DWORD, DWORD, DWORD, DWORD);
-0x00458D2A 0x0006 + int __cdecl Movie_GetSoundChannels(LPVOID);
-0x00458D30 0x0006 + int __cdecl Movie_GetSoundRate(LPVOID);
-0x00458D36 0x0006 + int __cdecl Movie_GetSoundPrecision(LPVOID);
-0x00458D3C 0x0006 + int __cdecl Player_GetDSErrorCode(void);
-0x00458D42 0x0006 + int __cdecl Player_InitSoundSystem(HWND);
-0x00458D48 0x0006 + int __cdecl Player_BlankScreen(DWORD, DWORD, DWORD, DWORD);
-0x00458D4E 0x0006 + int __cdecl Player_InitPlaybackMode(HWND, LPVOID, DWORD, DWORD);
-0x00458D54 0x0006 + int __cdecl Player_InitVideo(LPVOID, LPVOID, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD);
-0x00458D5A 0x0006 + int __cdecl Movie_GetXSize(LPVOID);
-0x00458D60 0x0006 + int __cdecl Movie_GetYSize(LPVOID);
-0x00458D66 0x0006 + int __cdecl Movie_GetFormat(LPVOID);
-0x00458D6C 0x0006 + int __cdecl Player_InitMovie(LPVOID, DWORD, DWORD, LPCTSTR, DWORD);
-0x00458D72 0x0006 + int __cdecl Player_PassInDirectDrawObject(LPDIRECTDRAW3);
-0x00458D78 0x0006 + int __cdecl Player_ReturnPlaybackMode(BOOL);
-0x00458D7E 0x0006 + int __cdecl Player_ShutDownSoundSystem(void);
-0x00458D84 0x0006 + int __cdecl Player_ShutDownMovie(LPVOID);
-0x00458D8A 0x0006 + int __cdecl Player_ShutDownVideo(LPVOID);
-0x00458D90 0x0006 + int __cdecl Player_ShutDownSound(LPVOID);
-0x00458D96 0x0006 + int __cdecl Player_StopTimer(LPVOID);
-
-
-# VARIABLES
-# Flags:
-# - to do
-# + decompiled
-# Offset Flag Declaration
-
-0x00464060 + uint32_t g_PerspectiveDistance = 0x3000000;
-0x00464068 + void (*__cdecl g_PolyDrawRoutines[9])(const int16_t *obj_ptr);
-0x0046408C + float g_RhwFactor = 335544320.0f; // 10*2**25
-0x004640B0 + int32_t g_CineTrackID = 1;
-0x004640B8 + int32_t g_CineTickRate = 0x8000; // 0x8000 = PHD_ONE/TICKS_PER_FRAME
-0x004640BC + int16_t g_CD_TrackID = -1;
-0x004640C4 + int32_t g_FlipEffect = -1;
-0x004641F0 + uint32_t g_AssaultBestTime = -1;
-0x004641F8 + void (*__cdecl g_EffectRoutines[32])(ITEM *item);
-0x00464310 + int16_t g_CineTargetAngle = 0x4000; // PHD_90
-0x004644E0 + int32_t g_OverlayStatus = 1;
-0x004654E0 + int16_t g_Inv_MainObjectsCount = 8;
-0x00465604 + int16_t g_Inv_OptionObjectsCount = 4;
-0x00465618 + BOOL g_GymInvOpenEnabled = TRUE;
-0x00465A50 + int16_t g_Inv_Chosen = -1;
-0x00465A54 + INVENTORY_MODE g_Inv_Mode = INV_TITLE_MODE;
-0x00465A5C + int16_t g_OptionSoundVolume = 165; // NOTE: value should be 10
-0x00465A60 + int16_t g_OptionMusicVolume = 255; // NOTE: should be 10
-0x00465AD4 + int32_t g_JumpPermitted = 1;
-0x00465AD8 + int16_t g_LaraOldSlideAngle = 1;
-0x00465CD0 + void (*__cdecl g_LaraControlRoutines[71])(ITEM *item, COLL_INFO *coll);
-0x00465DF0 + void (*__cdecl g_ExtraControlRoutines[11])(ITEM *item, COLL_INFO *coll);
-0x00465E20 + void (*__cdecl g_LaraCollisionRoutines[71])(ITEM *item, COLL_INFO *coll);
-0x00466290 + int8_t g_TextSpacing[80];
-0x004662E0 + int8_t g_TextASCIIMap[];
-0x00466400 + int32_t g_BGND_PaletteIndex = -1;
-0x00466480 + double g_GameSizer = 1.0;
-0x00466488 + double g_GameSizerCopy = 1.0;
-0x00466490 + int32_t g_FadeValue = 0x100000;
-0x00466494 + int32_t g_FadeLimit = 0x100000;
-0x00466498 + int32_t g_FadeAdder = 0x8000;
-0x004664E8 + const char *g_ErrorMessages[43];
-0x00466BB0 + int32_t g_RandControl;
-0x00466BB4 + int32_t g_RandDraw;
-0x00466F70 + CONTROL_LAYOUT g_Layout[2];
-0x00467DD0 + const int32_t g_AtanBaseTable[8];
-0x00467DF0 + const int16_t g_AtanAngleTable[0x800];
-0x00468DF4 + const int16_t g_SinTable[0x402];
-0x0046C300 + int32_t g_MidSort = 0;
-0x0046C304 + float g_ViewportAspectRatio = 0.0f;
-0x0046C308 + int32_t g_XGenY1;
-0x0046C30C + int32_t g_XGenY2;
-0x0046C310 + GOURAUD_ENTRY g_GouraudTable[256];
-0x0046E310 + int32_t g_PhdWinTop;
-0x0046E318 + PHD_SPRITE g_PhdSprites[512];
-0x00470318 + int32_t g_LsAdder;
-0x0047031C + float g_FltWinBottom;
-0x00470320 + float g_FltResZBuf;
-0x00470324 + float g_FltResZ;
-0x00470328 + void (*__cdecl g_Output_InsertTransQuad)(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
-0x0047032C + int32_t g_PhdWinHeight;
-0x00470330 + int32_t g_PhdWinCenterX;
-0x00470334 + int32_t g_PhdWinCenterY;
-0x00470338 + int16_t g_LsYaw;
-0x0047033C + void (*__cdecl g_Output_InsertTrans8)(const PHD_VBUF *vbuf, int16_t shade);
-0x00470340 + float g_FltWinTop;
-0x00470348 + SORT_ITEM g_SortBuffer[4000];
-0x00478048 + float g_FltWinLeft;
-0x0047804C + int16_t g_PhdWinMinY;
-0x00478058 + int32_t g_PhdFarZ;
-0x0047805C + float g_FltRhwOPersp;
-0x00478060 + int32_t g_PhdWinBottom;
-0x00478064 + int32_t g_PhdPersp;
-0x00478068 + int32_t g_PhdWinLeft;
-0x0047806C + void (*__cdecl g_Output_InsertFlatRect)(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x00478070 + int16_t g_Info3DBuffer[120000];
-0x004B29F0 + int32_t g_PhdWinMaxX;
-0x004B29F4 + int32_t g_PhdNearZ;
-0x004B29F8 + float g_FltResZORhw;
-0x004B29FC + float g_FltFarZ;
-0x004B2A00 + float g_FltWinCenterX;
-0x004B2A04 + float g_FltWinCenterY;
-0x004B2A08 + int32_t g_PhdScreenHeight;
-0x004B2A0C + uint8_t *g_PrintSurfacePtr;
-0x004B2A10 + int16_t g_PhdWinMinX;
-0x004B2A14 + float g_FltPerspONearZ;
-0x004B2A18 + float g_FltRhwONearZ;
-0x004B2A1C + int32_t g_PhdWinMaxY;
-0x004B2A20 + void (*__cdecl g_Output_InsertSprite)(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
-0x004B2A24 + float g_FltNearZ;
-0x004B2A28 + MATRIX *g_MatrixPtr;
-0x004B2A2C + const int16_t *(*__cdecl g_Output_DrawObjectGT3)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x004B2A30 + const int16_t *(*__cdecl g_Output_DrawObjectGT4)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x004B2A38 + int32_t g_RandomTable[32];
-0x004B2AB8 + float g_FltPersp;
-0x004B2AC0 + MATRIX g_W2VMatrix;
-0x004B2AF0 + int16_t *g_Info3DPtr;
-0x004B2AF4 + int32_t g_PhdWinWidth;
-0x004B2AF8 + void (*__cdecl g_Output_InsertLine)(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
-0x004B2B00 + PHD_TEXTURE g_TextureInfo[0x800]; // MAX_TEXTURES
-0x004BCB00 + int32_t g_PhdViewDistance;
-0x004BCB04 + int16_t g_LsPitch;
-0x004BCB08 + const int16_t *(*__cdecl g_Output_DrawObjectG4)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x004BCB10 + int16_t g_ShadesTable[32];
-0x004BCB50 + const int16_t *(*__cdecl g_Output_DrawObjectG3)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
-0x004BCB58 + MATRIX g_MatrixStack[];
-0x004BD2D8 + DEPTHQ_ENTRY g_DepthQTable[32];
-0x004BF3D8 + int32_t g_PhdScreenWidth;
-0x004BF3DC + int32_t g_LsDivider;
-0x004BF3E0 + PHD_VBUF g_PhdVBuf[1500];
-0x004CAF60 + void *g_XBuffer;
-0x004D6AE0 + uint8_t *g_TexturePageBuffer8[32]; // MAX_TEXTURE_PAGES
-0x004D6B60 + float g_FltWinRight;
-0x004D6B68 + XYZ_32 g_LsVectorView;
-0x004D6B78 + float g_WibbleTable[32];
-0x004D6BF8 + int32_t g_PhdWinRight;
-0x004D6BFC + int32_t g_SurfaceCount;
-0x004D6C00 + SORT_ITEM *g_Sort3DPtr;
-0x004D6C0C + int32_t g_WibbleOffset;
-0x004D6C10 + int32_t g_IsWibbleEffect;
-0x004D6C14 + int32_t g_IsWaterEffect;
-0x004D6CD8 + VERTEX_INFO g_VBuffer[20];
-0x004D6F78 + int8_t g_IsShadeEffect;
-0x004D6F80 + D3DTLVERTEX g_VBufferD3D[32];
-0x004D7380 + PALETTEENTRY g_GamePalette16[256];
-0x004D7780 + int32_t g_CineFrameCurrent;
-0x004D778C + int32_t g_IsChunkyCamera;
-0x004D7794 + int32_t g_NoInputCounter;
-0x004D7798 + BOOL g_IsResetFlag;
-0x004D779C + int32_t g_FlipTimer;
-0x004D77A0 + int32_t g_LOSNumRooms = 0;
-0x004D77A4 + BOOL g_StopInventory;
-0x004D77AC + BOOL g_IsDemoLevelType;
-0x004D77B0 + BOOL g_IsDemoLoaded;
-0x004D77C0 + int32_t g_BoundStart;
-0x004D77C4 + int32_t g_BoundEnd;
-0x004D77E0 + int32_t g_IsAssaultTimerDisplay;
-0x004D77E4 + BOOL g_IsAssaultTimerActive;
-0x004D77E8 + BOOL g_IsMonkAngry;
-0x004D791C + int32_t g_OldGameTimer;
-0x004D7920 + BOOL g_FlashState;
-0x004D7924 + int32_t g_FlashCounter;
-0x004D7928 + int32_t g_OldHitPoints;
-0x004D792C + TEXTSTRING *g_AmmoTextInfo;
-0x004D7930 + TEXTSTRING *g_DisplayModeTextInfo;
-0x004D7934 + DWORD g_DisplayModeInfoTimer;
-0x004D7938 + UINT16 g_Inv_MainCurrent;
-0x004D793C + UINT16 g_Inv_KeyObjectsCount;
-0x004D7940 + UINT16 g_Inv_KeysCurrent;
-0x004D7944 + UINT16 g_Inv_OptionCurrent;
-0x004D7954 + TEXTSTRING* g_Inv_RingText;
-0x004D795C + TEXTSTRING* g_Inv_UpArrow1;
-0x004D7960 + TEXTSTRING* g_Inv_UpArrow2;
-0x004D7964 + TEXTSTRING* g_Inv_DownArrow1;
-0x004D7968 + TEXTSTRING* g_Inv_DownArrow2;
-0x004D796C + uint32_t g_InputDB;
-0x004D7978 + uint16_t g_Inv_IsActive;
-0x004D79A0 + BOOL g_Inv_DemoMode;
-0x004D79B4 + BOOL g_Inv_IsOptionsDelay;
-0x004D79B8 + int32_t g_Inv_OptionsDelayCounter;
-0x004D79BC + uint16_t g_SoundOptionLine;
-0x004D79C0 + REQUEST_INFO g_StatsRequester;
-0x004D7BD8 + ASSAULT_STATS g_Assault;
-0x004D7C38 + int32_t g_LevelItemCount;
-0x004D7C3C + int32_t g_HealthBarTimer;
-0x004D7C80 + int32_t g_SoundTrackIds[128];
-0x004D7EBC + LPDIRECT3DDEVICE2 g_D3DDev;
-0x004D7EE4 + bool g_IsGameWindowCreated;
-0x004D7EE8 + bool g_IsGameWindowUpdating;
-0x004D7EEC + bool g_IsDDrawGameWindowShow;
-0x004D7EF0 + int32_t g_MinWindowClientWidth;
-0x004D7ED0 + int32_t g_MinWindowClientHeight;
-0x004D8388 + int32_t g_MinWindowWidth;
-0x004D838C + int32_t g_MinWindowHeight;
-0x004D7EF4 + bool g_IsGameWindowShow;
-0x004D7EF8 + bool g_IsMinWindowSizeSet;
-0x004D7EFC + int32_t g_MaxWindowClientWidth;
-0x004D7F00 + int32_t g_GameWindowWidth;
-0x004D7F04 + bool g_IsMinMaxInfoSpecial;
-0x004D7F08 + bool g_IsGameFullScreen;
-0x004D7F0C + bool g_IsGameWindowMaximized;
-0x004D7F10 + HWND g_GameWindowHandle;
-0x004D7F14 + int32_t g_GameWindowHeight;
-0x004D7F18 + DISPLAY_ADAPTER_NODE* g_PrimaryDisplayAdapter;
-0x004D7F20 + DISPLAY_ADAPTER g_CurrentDisplayAdapter;
-0x004D8338 + uint32_t g_LockedBufferCount;
-0x004D833C + int32_t g_GameWindowPositionX;
-0x004D8340 + int32_t g_GameWindowPositionY;
-0x004D8348 + DISPLAY_ADAPTER_LIST g_DisplayAdapterList;
-0x004D8354 + int32_t g_MaxWindowClientHeight;
-0x004D8358 + bool g_IsMessageLoopClosed;
-0x004D835C + int32_t g_MaxWindowWidth;
-0x004D7EDC + int32_t g_MaxWindowHeight;
-0x004D8360 + bool g_IsMaxWindowSizeSet;
-0x004D8364 + uint32_t g_AppResultCode;
-0x004D8368 + int32_t g_FullScreenWidth;
-0x004D836C + int32_t g_FullScreenHeight;
-0x004D8370 + int32_t g_FullScreenBPP;
-0x004D8374 + int32_t g_FullScreenVGA;
-0x004D8378 + uint8_t g_IsGameToExit;
-0x004D8568 + int32_t g_ScreenSizer;
-0x004D856C + int32_t g_IsVidSizeLock;
-0x004D8570 + DWORD g_SampleFreqs[256];
-0x004D8970 + SOUND_ADAPTER_LIST g_SoundAdapterList;
-0x004D8980 + LPDIRECTSOUNDBUFFER g_SampleBuffers[256];
-0x004D8D80 + uint8_t g_IsSoundEnabled;
-0x004D8D84 + LPDIRECTSOUND g_DSound;
-0x004D8D88 + int32_t g_ChannelSamples[32];
-0x004D8E08 + LPDIRECTSOUNDBUFFER g_ChannelBuffers[32];
-0x004D8E8C + SOUND_ADAPTER g_CurrentSoundAdapter;
-0x004D8EAC + SOUND_ADAPTER_NODE *g_PrimarySoundAdapter;
-0x004D8EB0 + LPDDS g_RenderBufferSurface;
-0x004D92B8 + LPDDS g_ThirdBufferSurface;
-0x004D92BC + LPDDS g_PictureBufferSurface;
-0x004D92C0 + LPDDS g_ZBufferSurface;
-0x004D92C8 + LPDDS g_PrimaryBufferSurface;
-0x004D9338 + int32_t g_GameVid_Width;
-0x004D933C + int32_t g_GameVid_Height;
-0x004D9340 + int32_t g_GameVid_BPP;
-0x004D934C + int32_t g_UVAdd;
-0x004D9351 + int8_t g_GameVid_IsWindowedVGA;
-0x004D9EAC + int32_t g_IsFMVPlaying;
-0x004D9EC0 + int32_t g_CurrentLevel;
-0x004D9EC4 + int32_t g_LevelComplete;
-0x004D9ED8 + D3DTLVERTEX g_HWR_VertexBuffer[0x2000]; // MAX_VERTICES
-0x00519EE0 + HWR_TEXTURE_HANDLE g_HWR_PageHandles[32];
-0x00519F60 + D3DTLVERTEX *g_HWR_VertexPtr;
-0x0051A0CC + char *g_GameBuf_MemBase;
-0x0051A0D0 + BOOL g_ConflictLayout[14]; // INPUT_ROLE_NUMBER_OF
-0x0051A108 + uint8_t g_DIKeys[256];
-0x0051A208 + int32_t g_Input;
-0x0051A20C + int8_t g_IsVidModeLock;
-0x0051A210 + int32_t g_JoyKeys;
-0x0051A214 + int32_t g_JoyXPos;
-0x0051A218 + int32_t g_JoyYPos;
-0x0051A220 + int32_t g_MediPackCooldown;
-0x0051A224 + int8_t g_IsF3Pressed;
-0x0051A228 + int8_t g_IsF4Pressed;
-0x0051A22C + int8_t g_IsF7Pressed;
-0x0051A230 + int8_t g_IsF8Pressed;
-0x0051A234 + int8_t g_IsF11Pressed;
-0x0051A238 + HINSTANCE g_GameModule;
-0x0051A23C + char *g_CmdLine;
-0x0051A240 + int32_t g_ScreenshotCounter;
-0x0051B918 + RECT g_PhdWinRect;
-0x0051B928 + int32_t g_HiRes;
-0x0051B930 + RGB_888 g_GamePalette8[256];
-0x0051BCC0 + APP_SETTINGS g_SavedAppSettings;
-0x0051BD20 + char g_ErrorMessage[128];
-0x0051BDA8 + int32_t g_MasterVolume;
-0x0051BDAC + MCIDEVICEID g_MciDeviceID;
-0x0051BDB0 + int32_t g_CD_LoopTrack;
-0x0051C820 + TEXTSTRING g_TextstringTable[64]; // MAX_TEXTSTRINGS
-0x0051D6A0 + int16_t g_TextstringCount = 0;
-0x0051D6C0 + char g_TextstringBuffers[64][64];
-0x0051E6C4 + int32_t g_SoundIsActive;
-0x0051E9E0 + SAVEGAME_INFO g_SaveGame;
-0x005206E0 + LARA_INFO g_Lara;
-0x005207BC + ITEM *g_LaraItem;
-0x005207C0 + FX *g_Effects;
-0x005207C4 + int16_t g_NextEffectFree;
-0x005207C6 + int16_t g_NextItemFree;
-0x005207C8 + int16_t g_NextItemActive;
-0x005207CA + int16_t g_NextEffectActive;
-0x005207CC + int16_t g_PrevItemActive;
-0x00521CA0 + PICKUP_INFO g_Pickups[12];
-0x00521DE0 + GAME_FLOW g_GameFlow;
-0x00521FDC + int32_t g_SoundEffectCount;
-0x00522000 + OBJECT g_Objects[265];
-0x005252B0 + int16_t **g_Meshes;
-0x005252C0 + MATRIX g_IMMatrixStack[256];
-0x005258F0 + int32_t g_IMFrac;
-0x005258F4 + ANIM *g_Anims;
-0x00525BE8 + int32_t *g_AnimBones;
-0x00526180 + int32_t g_RoomCount;
-0x00526184 + int32_t g_IMRate;
-0x00526188 + MATRIX *g_IMMatrixPtr;
-0x0052618C + ROOM *g_Rooms;
-0x00526240 + int32_t g_FlipStatus;
-0x00526288 + int16_t *g_Legacy_TriggerIndex;
-0x005262A0 + int32_t g_LOSRooms[20];
-0x005262F0 + ITEM *g_Items;
-0x005262F6 + int16_t g_NumCineFrames;
-0x005262F8 + CINE_FRAME *g_CineData = NULL;
-0x00526300 + PHD_3DPOS g_CinePos;
-0x00526314 + int16_t g_CineFrameIdx;
-0x00526320 + CAMERA_INFO g_Camera;
-0x005263CC + BOX_INFO *g_Boxes;
-0x004D855C + LPDIRECTINPUT g_DInput;
-0x004D8560 + LPDIRECTINPUTDEVICE IDID_SysKeyboard;
-0x0051BDA0 + BOOL g_IsTitleLoaded;
-0x004D7980 + int32_t g_Inv_ExtraData[8];
-0x004D8394 + int32_t g_MessageLoopCounter;
-0x004D8384 + bool g_IsGameWindowMinimized;
-0x004D8390 + bool g_IsGameWindowActive;
-0x004D837C + int32_t g_GameWindowY;
-0x004D7EE0 + LPDIRECTDRAW3 g_DDraw;
-0x004D8380 + int32_t g_GameWindowX;
-0x00463150 + GUID g_IID_IDirectDrawSurface3;
-0x00463170 + GUID g_IID_IDirect3DTexture2;
-0x004640A0 + BITE g_CrowBite;
-0x00464090 + BITE g_BirdBite;
-0x005263C0 + int16_t *g_FlyZone[2];
-0x005263A0 + int16_t *g_GroundZone[][2];
-0x005263C8 + uint16_t *g_Overlap;
-0x005206C0 + CREATURE *g_BaddieSlots;
-0x00526312 + int16_t g_CineLevelID;
-0x005252B8 + int32_t g_DrawRoomsCount;
-0x00525B20 + int16_t g_DrawRoomsArray[100];
-0x00525BEC + int32_t g_DynamicLightCount;
-0x004D7784 + int32_t g_CineTickCount;
-0x004D7788 + int32_t g_OriginalRoom;
-0x00465518 + INVENTORY_ITEM *g_Inv_MainList[];
-0x00465608 + INVENTORY_ITEM *g_Inv_OptionList[];
-0x004655A8 + INVENTORY_ITEM *g_Inv_KeysList[];
-0x004644F8 + int32_t g_Inv_NFrames;
-0x00525C00 + STATIC_INFO g_StaticObjects[50]; // MAX_STATIC_OBJECTS
-0x00521FE0 + OBJECT_VECTOR *g_SoundEffects;
-0x0051E6E0 + int16_t g_SampleLUT[];
-0x0051E9C4 + SAMPLE_INFO *g_SampleInfos;
-0x004D7C78 + SOUND_SLOT g_SoundSlots[32];
-0x004D9328 + RECT g_GameVid_Rect;
-0x004D9358 + LPDDS g_BackBufferSurface;
-0x004D9350 + bool g_GameVid_IsVga;
-0x004D9344 + int32_t g_GameVid_BufWidth;
-0x004D9348 + int32_t g_GameVid_BufHeight;
-0x004D8EB4 + LPDIRECTDRAWCLIPPER g_DDrawClipper;
-0x004D8EB8 + PALETTEENTRY g_WinVid_Palette[256];
-0x004D92C4 + LPDIRECTDRAWPALETTE g_DDrawPalette;
-0x004D7EC4 + LPDIRECT3DVIEWPORT2 g_D3DView;
-0x004D9355 + bool g_NeedToReloadTextures;
-0x004D9352 + bool g_GameVid_IsFullscreenVGA;
-0x004D9353 + bool g_IsWindowedVGA;
-0x004D9354 + bool g_Is16bitTextures;
-0x004D9318 + RECT g_GameVid_BufRect;
-0x00466BE4 + int16_t g_DumpX;
-0x00466BE6 + int16_t g_DumpY;
-0x00466BE8 + int16_t g_DumpWidth;
-0x00466BEA + int16_t g_DumpHeight;
-0x0051C1B8 + TEXTURE_FORMAT g_TextureFormat;
-0x004D92E8 + COLOR_BIT_MASKS g_ColorBitMasks;
-0x0051BC30 + bool g_WinVidNeedToResetBuffers;
-0x004D7E88 + bool g_BGND_PictureIsReady;
-0x004D7E90 + int32_t g_BGND_TexturePageIndexes[5];
-0x004D7EA8 + HWR_TEXTURE_HANDLE g_BGND_PageHandles[5];
-0x004D7EC0 + LPDIRECT3D2 g_D3D;
-0x004D7EC8 + LPDIRECT3DMATERIAL2 g_D3DMaterial;
-0x004D7ED4 + LPDIRECTDRAW g_DDrawInterface;
-0x00466448 + const char g_GameClassName[];
-0x00466468 + const char g_GameWindowName[];
-0x004D7ED8 + bool g_IsGameWindowChanging;
-0x00519F68 + D3DRENDERSTATETYPE g_AlphaBlendEnabler;
-0x00519ED8 + D3DTEXTUREHANDLE g_CurrentTexSource;
-0x00519F6C + bool g_ColorKeyState;
-0x0051C20C + bool g_TexturesAlphaChannel;
-0x00519F64 + bool g_ZEnableState;
-0x00519F70 + bool g_ZWriteEnableState;
-0x00466BDC + int32_t g_PaletteIndex;
-0x00519F78 + int32_t g_HWR_TexturePageIndexes[32]; // MAX_TEXTURE_PAGES
-0x004D7790 + int32_t g_HeightType;
-0x004D9D94 + int16_t *g_Legacy_FloorData;
-0x00525B08 + int16_t *g_AnimCommands;
-0x0052617C + ANIM_CHANGE *g_AnimChanges;
-0x00525B04 + ANIM_RANGE *g_AnimRanges;
-0x00526260 + int32_t g_FlipMaps[10]; // MAX_FLIP_MAPS
-0x005252B4 + int32_t g_Outside;
-0x00526198 + int32_t g_OutsideRight;
-0x00526178 + int32_t g_OutsideLeft;
-0x005261AC + int32_t g_OutsideTop;
-0x00525B00 + int32_t g_OutsideBottom;
-0x00525900 + int32_t g_BoundRooms[128]; // MAX_BOUND_ROOMS
-0x005258C0 + PORTAL_VBUF g_DoorVBuf[4];
-0x00464180 + int32_t g_BoxLines[12][2];
-0x00526190 + BOOL g_CameraUnderwater;
-0x005263D0 + int32_t g_BoxCount;
-0x004D7C50 + int32_t g_SlotsUsed;
-0x004D9360 + int32_t g_TexturePageCount;
-0x004D9D90 + int16_t *g_MeshBase;
-0x004D9E98 + int32_t g_TextureInfoCount;
-0x004D93F0 + uint8_t g_LabTextureUVFlag[2048]; // MAX_TEXTURES
-0x005251B0 + FRAME_INFO *g_AnimFrames;
-0x0051BC38 + int32_t g_IsWet;
-0x0051B308 + RGB_888 g_WaterPalette[256];
-0x004BF2D8 + uint8_t g_DepthQIndex[256];
-0x004D7C74 + int32_t g_NumCameras;
-0x0051B92C + int16_t *g_AnimTextureRanges;
-0x005262F4 + int16_t g_CineLoaded;
-0x005261B0 + uint32_t *g_DemoPtr;
-0x005261B4 + int32_t g_DemoCount;
-0x0051E6C0 + int32_t g_NumSampleInfos;
-0x004D9BF4 + int32_t g_LevelFilePalettesOffset;
-0x004D9BF8 + int32_t g_LevelFileTexPagesOffset;
-0x004D9E9C + int32_t g_LevelFileDepthQOffset;
-0x004D9D98 + char g_LevelFileName[256];
-0x005261C0 + uint16_t g_MusicTrackFlags[64];
-0x00465AE0 + WEAPON_INFO g_Weapons[];
-0x005206A8 + int16_t g_FinalBossActive;
-0x005206BA + int16_t g_FinalLevelCount;
-0x005206BC + int16_t g_FinalBossCount;
-0x005206B0 + int16_t g_FinalBossItem[5];
-0x004D77B4 + int32_t g_DemoLevel;
-0x004D77B8 + int32_t g_DemoLevel2;
-0x00464A90 + INVENTORY_ITEM g_Inv_Item_Stopwatch;
-0x00464AE0 + INVENTORY_ITEM g_Inv_Item_Pistols;
-0x00464B30 + INVENTORY_ITEM g_Inv_Item_Flare;
-0x00464B80 + INVENTORY_ITEM g_Inv_Item_Shotgun;
-0x00464BD0 + INVENTORY_ITEM g_Inv_Item_Magnums;
-0x00464C20 + INVENTORY_ITEM g_Inv_Item_Uzis;
-0x00464C70 + INVENTORY_ITEM g_Inv_Item_Harpoon;
-0x00464CC0 + INVENTORY_ITEM g_Inv_Item_M16;
-0x00464D10 + INVENTORY_ITEM g_Inv_Item_Grenade;
-0x00464D60 + INVENTORY_ITEM g_Inv_Item_PistolAmmo;
-0x00464DB0 + INVENTORY_ITEM g_Inv_Item_ShotgunAmmo;
-0x00464E00 + INVENTORY_ITEM g_Inv_Item_MagnumAmmo;
-0x00464E50 + INVENTORY_ITEM g_Inv_Item_UziAmmo;
-0x00464EA0 + INVENTORY_ITEM g_Inv_Item_HarpoonAmmo;
-0x00464EF0 + INVENTORY_ITEM g_Inv_Item_M16Ammo;
-0x00464F40 + INVENTORY_ITEM g_Inv_Item_GrenadeAmmo;
-0x00464F90 + INVENTORY_ITEM g_Inv_Item_SmallMedi;
-0x00464FE0 + INVENTORY_ITEM g_Inv_Item_LargeMedi;
-0x00465030 + INVENTORY_ITEM g_Inv_Item_Pickup1;
-0x00465080 + INVENTORY_ITEM g_Inv_Item_Pickup2;
-0x004650D0 + INVENTORY_ITEM g_Inv_Item_Puzzle1;
-0x00465120 + INVENTORY_ITEM g_Inv_Item_Puzzle2;
-0x00465170 + INVENTORY_ITEM g_Inv_Item_Puzzle3;
-0x004651C0 + INVENTORY_ITEM g_Inv_Item_Puzzle4;
-0x00465210 + INVENTORY_ITEM g_Inv_Item_Key1;
-0x00465260 + INVENTORY_ITEM g_Inv_Item_Key2;
-0x004652B0 + INVENTORY_ITEM g_Inv_Item_Key3;
-0x00465300 + INVENTORY_ITEM g_Inv_Item_Key4;
-0x00465350 + INVENTORY_ITEM g_Inv_Item_Passport;
-0x004653A0 + INVENTORY_ITEM g_Inv_Item_Graphics;
-0x004653F0 + INVENTORY_ITEM g_Inv_Item_Sound;
-0x00465440 + INVENTORY_ITEM g_Inv_Item_Controls;
-0x00465490 + INVENTORY_ITEM g_Inv_Item_Photo;
-0x00465620 + REQUEST_INFO g_LoadGameRequester;
-0x00465838 + REQUEST_INFO g_SaveGameRequester;
-0x004642E8 + int16_t g_GF_NumSecrets = 3;
-0x004642F0 + int16_t g_GF_MusicTracks[16];
-0x004D77EC + int32_t g_GF_ScriptVersion;
-0x004D77F0 + int32_t g_GF_LaraStartAnim;
-0x004D77F4 + int16_t g_GF_SunsetEnabled;
-0x004D77F8 + int16_t g_GF_DeadlyWater;
-0x004D77FC + int16_t g_GF_NoFloor;
-0x004D7800 + int16_t g_GF_RemoveWeapons;
-0x004D7804 + int16_t g_GF_RemoveAmmo;
-0x004D7808 + char g_GF_Kill2Complete;
-0x004D780C + int8_t g_GF_StartGame;
-0x004D7818 + char g_GF_Description[256];
-0x004D9C00 + int16_t g_GF_LevelOffsets[200];
-0x00521DC4 + char **g_GF_CutsceneFileNames;
-0x00521E68 + char *g_GF_FMVFilenamesBuf;
-0x00521E6C + char *g_GF_Key1StringsBuf;
-0x00521E70 + int16_t *g_GF_FrontendSequence;
-0x00521E74 + char **g_GF_Key2Strings;
-0x00521E78 + char *g_GF_CutsceneFileNamesBuf;
-0x00521E7C + char *g_GF_Key4StringsBuf;
-0x00521E80 + int16_t *g_GF_SequenceBuf;
-0x00521E84 + char *g_GF_Key2StringsBuf;
-0x00521E8C + char *g_GF_PicFilenamesBuf;
-0x00521E90 + char **g_GF_Key4Strings;
-0x00521DC0 + char **g_GF_Puzzle1Strings;
-0x00521E98 + char **g_GF_Puzzle2Strings;
-0x00521EC0 + char **g_GF_Puzzle3Strings;
-0x00521E60 + char **g_GF_Puzzle4Strings;
-0x00521E94 + char **g_GF_Pickup1Strings;
-0x00521F44 + char **g_GF_Pickup2Strings;
-0x00521EA8 + char *g_GF_Puzzle1StringsBuf;
-0x00521F40 + char *g_GF_Puzzle2StringsBuf;
-0x00521F98 + char *g_GF_Puzzle3StringsBuf;
-0x00521F90 + char *g_GF_Puzzle4StringsBuf;
-0x00521E64 + char *g_GF_Pickup1StringsBuf;
-0x00521E88 + char *g_GF_Pickup2StringsBuf;
-0x00521E9C + char *g_GF_LevelFileNamesBuf;
-0x00521EA0 + char **g_GF_PicFilenames;
-0x00521EA4 + char **g_GF_Key1Strings;
-0x00521EAC + char *g_GF_LevelNamesBuf;
-0x00521EB0 + char **g_GF_GameStrings;
-0x00521EB4 + char *g_GF_PCStringsBuf;
-0x00521EB8 + char *g_GF_GameStringsBuf;
-0x00521EBC + char **g_GF_Key3Strings;
-0x00521EC4 + char **g_GF_LevelNames;
-0x00521EE0 + int16_t *g_GF_ScriptTable[24]; // MAX_LEVELS
-0x00521F48 + char **g_GF_TitleFileNames;
-0x00521F4C + char *g_GF_TitleFileNamesBuf;
-0x00521F50 + char **g_GF_PCStrings;
-0x00521F54 + char **g_GF_LevelFileNames;
-0x00521F60 + int16_t g_GF_ValidDemos[24]; // MAX_DEMO_FILES
-0x00521F94 + char **g_GF_FMVFilenames;
-0x00521F9C + char *g_GF_Key3StringsBuf;
-0x00521FA0 + char g_GF_SecretInvItems[27]; // GF_ADD_INV_NUMBER_OF
-0x00521FC0 + char g_GF_Add2InvItems[27]; // GF_ADD_INV_NUMBER_OF
-0x004D9ECC + int32_t g_GameMode; // GAMEMODE
-0x004D7970 + int32_t g_OldInputDB;
-0x004D7948 + TEXTSTRING *g_Inv_ItemText[3]; // IT_NUMBER_OF
-0x004D7950 + TEXTSTRING *g_Inv_LevelText;
-0x004D7958 + TEXTSTRING *g_Inv_TagText;
-0x004D9EBC + int32_t g_SavedGames;
-0x0051A2CC + TEXTSTRING *g_PasswordText1;
-0x0051A2D0 + int32_t g_PassportMode;
-0x0051A2D8 + TEXTSTRING *g_DetailText[5];
-0x0051A2F0 + TEXTSTRING *g_SoundText[4];
-0x0051A290 + TEXTSTRING *m_ControlsTextA[14]; // INPUT_ROLE_NUMBER_OF
-0x0051A258 + TEXTSTRING *g_ControlsTextB[14]; // INPUT_ROLE_NUMBER_OF
-0x0051A300 + TEXTSTRING *g_ControlsText[2];
-0x004D7C30 + int32_t m_ShowStatsTextMode;
-0x005207E0 + char g_ValidLevelStrings1[];
-0x00521720 + char g_ValidLevelStrings2[];
-0x004D7C34 + int32_t m_ShowEndStatsTextMode;
-0x004D7C2C + int32_t m_ShowGymStatsTextMode;
-0x00520D00 + uint32_t g_RequesterFlags1[24]; // MAX_REQUESTER_ITEMS
-0x00520CA0 + uint32_t g_RequesterFlags2[24]; // MAX_REQUESTER_ITEMS
-0x00521C40 + uint32_t g_SaveGameReqFlags1[24]; // MAX_REQUESTER_ITEMS
-0x00521BE0 + uint32_t g_SaveGameReqFlags2[24]; // MAX_REQUESTER_ITEMS
-0x004D9EC8 + int32_t g_SaveCounter;
-0x00466B80 + int16_t g_SavedLevels[24]; // MAX_LEVELS
-0x004654E8 + int16_t g_Inv_MainQtys[];
-0x00465578 + int16_t g_Inv_KeysQtys[];
-0x0046773C + int32_t g_DetailLevel;
-0x0051A250 + int32_t g_LayoutPage;
-0x0051A24C + int32_t g_KeySelector;
-0x0051A248 + int32_t g_KeyCursor;
-0x00466FA8 + const char *g_KeyNames[];
-0x00464500 + const uint16_t g_Requester_BackgroundGour1[];
-0x00464520 + const uint16_t g_Requester_BackgroundGour2[];
-0x00464538 + const uint16_t g_Requester_MainGour1[];
-0x00464558 + const uint16_t g_Requester_MainGour2[];
-0x00464590 + const uint16_t g_Requester_SelectionGour2[];
-0x004645A8 + const uint16_t g_Requester_UnselectionGour1[];
-0x005216E0 + uint16_t g_InvColors[17]; // INV_COLOR_NUMBER_OF
-0x00464150 + BITE g_DragonMouth;
-0x00466230 + BITE g_SkidooLeftGun;
-0x00466240 + BITE g_SkidooRightGun;
-0x00464130 + BITE g_DogBite;
-0x00464140 + BITE g_TigerBite;
-0x00465F40 + int16_t g_MovableBlockBounds[];
-0x00465F58 + int16_t g_ZiplineHandleBounds[];
-0x00465FF0 + int16_t g_PickupBounds[];
-0x00466018 + int16_t g_GongBounds[];
-0x00466030 + int16_t g_PickupBoundsUW[];
-0x00466058 + int16_t g_SwitchBounds[];
-0x004660A0 + int16_t g_SwitchBoundsUW[];
-0x004660C8 + int16_t g_KeyholeBounds[];
-0x004660F0 + int16_t g_PuzzleHoleBounds[];
-0x00465F70 + XYZ_32 g_ZiplineHandlePosition;
-0x00466008 + XYZ_32 g_PickupPosition;
-0x00466048 + XYZ_32 g_PickupPositionUW;
-0x00466070 + XYZ_32 g_SmallSwitchPosition;
-0x00466080 + XYZ_32 g_PushSwitchPosition;
-0x00466090 + XYZ_32 g_AirlockPosition;
-0x004660B8 + XYZ_32 g_SwitchUWPosition;
-0x004660E0 + XYZ_32 g_KeyholePosition;
-0x00466108 + XYZ_32 g_PuzzleHolePosition;
-0x004D7C58 + XYZ_32 g_InteractPosition;
-0x004D7C68 + XYZ_32 g_DetonatorPosition;
-0x004D9EB0 + void *g_MovieContext;
-0x004D9EB4 + void *g_FmvContext;
-0x004D9EB8 + void *g_FmvSoundContext;
-0x0051A000 + size_t g_GameBuf_MemCap;
-0x0051A004 + char *g_GameBuf_MemPtr;
-0x0051A008 + size_t g_GameBuf_MemUsed;
-0x0051A00C + size_t g_GameBuf_MemFree;
-0x0051B608 + RGB_888 g_PicturePalette[256];
-0x004D7E7C + int32_t g_DetonateAllMines;
-0x005206A4 + int32_t g_SavegameBufPos;
-0x0051E9C8 + char *g_SavegameBufPtr;
-0x0051C210 + LPDIRECTDRAWPALETTE g_TexturePalettes[16]; // MAX_PALETTES
-0x0051BDB8 + TEXPAGE_DESC g_TexturePages[32]; // MAX_TEXTURE_PAGES
-0x00466280 + BITE g_BigSpiderBite;
-0x0051C20D + uint8_t g_TexturesHaveCompatibleMasks;
-0x00467768 + SHADOW_INFO g_ShadowInfo;
-0x004663C0 + BITE g_YetiLBite;
-0x004663D0 + BITE g_YetiRBite;
-0x004663E0 + BITE g_BirdGuardianBite;
-0x0051BDA4 + int32_t g_CheatMode;
-0x0051BD1C + bool g_CheatFlare;
-0x0051BD18 + int16_t g_CheatAngle;
-0x0051BD10 + int32_t g_CheatTurn;
-0x0051A308 + ROOM_LIGHT_TABLE g_RoomLightTables[32]; // WIBBLE_SIZE
-0x005251C0 + LIGHT g_DynamicLights[10]; // MAX_DYNAMIC_LIGHTS
-0x0051B908 + int32_t g_RoomLightShades[4];
-0x00526194 + int32_t g_SunsetTimer;
-0x00521CD0 + int32_t g_IsFirstHair;
-0x00521CE0 + XYZ_32 g_HairVelocity[7]; // HAIR_SEGMENTS + 1
-0x00521D40 + HAIR_SEGMENT g_HairSegments[7]; // HAIR_SEGMENTS + 1
-0x004D7918 + int32_t g_HairWind;
-0x004641E0 + BITE g_BigEelBite;
-0x00466210 + BITE g_BarracudaBite;
-0x00466220 + BITE g_SharkBite;
-0x00466118 + BITE g_MouseBite;
-0x00465F80 + BITE g_Cultist1Gun;
-0x004642C8 + BITE g_Cultist2LeftHand;
-0x004642D8 + BITE g_Cultist2RightHand;
-0x00465F90 + BITE g_Cultist3LeftGun;
-0x00465FA0 + BITE g_Cultist3RightGun;
-0x00465FD0 + BITE g_Bandit1Gun;
-0x00465FE0 + BITE g_Bandit2Gun;
-0x00465FB0 + BITE g_Worker1Gun;
-0x00465FC0 + BITE g_Worker2Gun;
-0x00464288 + BITE g_Worker3Hit;
-0x00464278 + BITE g_MonkHit;
-0x004642A8 + BITE g_XianSpearmanRightSpear;
-0x00464298 + BITE g_XianSpearmanLeftSpear;
-0x004642B8 + BITE g_XianKnightSword;
-0x00466360 + BITE g_TeethTrapTeeth1A;
-0x00466370 + BITE g_TeethTrapTeeth1B;
-0x00466380 + BITE g_TeethTrapTeeth2A;
-0x00466390 + BITE g_TeethTrapTeeth2B;
-0x004663A0 + BITE g_TeethTrapTeeth3A;
-0x004663B0 + BITE g_TeethTrapTeeth3B;
diff --git a/docs/tr2/symbols.txt b/docs/tr2/symbols.txt
new file mode 100644
index 000000000..6c4593d59
--- /dev/null
+++ b/docs/tr2/symbols.txt
@@ -0,0 +1,4897 @@
+# TYPES
+typedef IDirect3DDevice2 *LPDIRECT3DDEVICE2;
+typedef IDirect3DTexture2 *LPDIRECT3DTEXTURE2;
+typedef IDirect3DViewport2 *LPDIRECT3DVIEWPORT2;
+typedef IDirect3DMaterial2 *LPDIRECT3DMATERIAL2;
+typedef DDSURFACEDESC DDSDESC, *LPDDSDESC;
+typedef LPDIRECTDRAWSURFACE3 LPDDS;
+typedef LPDIRECTDRAW3 LPDD;
+typedef D3DTEXTUREHANDLE HWR_TEXTURE_HANDLE;
+
+typedef struct __unaligned {
+ int32_t x;
+ int32_t y;
+ int32_t z;
+} XYZ_32;
+
+typedef struct __unaligned {
+ int16_t x;
+ int16_t y;
+ int16_t z;
+} XYZ_16;
+
+typedef struct __unaligned {
+ int32_t _00;
+ int32_t _01;
+ int32_t _02;
+ int32_t _03;
+ int32_t _10;
+ int32_t _11;
+ int32_t _12;
+ int32_t _13;
+ int32_t _20;
+ int32_t _21;
+ int32_t _22;
+ int32_t _23;
+} MATRIX;
+
+typedef enum {
+ VGA_NO_VGA = 0,
+ VGA_256_COLOR = 1,
+ VGA_MODEX = 2,
+ VGA_STANDARD = 3,
+} VGA_MODE;
+
+typedef struct __unaligned {
+ LPBITMAPINFO bmp_info;
+ void *bmp_data;
+ HPALETTE hPalette;
+ DWORD flags;
+} BITMAP_RESOURCE;
+
+typedef struct __unaligned {
+ int32_t width;
+ int32_t height;
+ int32_t bpp;
+ VGA_MODE vga;
+} DISPLAY_MODE;
+
+typedef struct __unaligned DISPLAY_MODE_NODE {
+ struct DISPLAY_MODE_NODE *next;
+ struct DISPLAY_MODE_NODE *previous;
+ DISPLAY_MODE body;
+} DISPLAY_MODE_NODE;
+
+typedef struct __unaligned {
+ DISPLAY_MODE_NODE *head;
+ DISPLAY_MODE_NODE *tail;
+ DWORD count;
+} DISPLAY_MODE_LIST;
+
+typedef struct __unaligned {
+ char *content;
+ bool is_valid;
+} STRING_FLAGGED;
+
+typedef struct __unaligned {
+ LPGUID adapter_guid_ptr;
+ GUID adapter_guid;
+ STRING_FLAGGED driver_desc;
+ STRING_FLAGGED driver_name;
+ DDCAPS_DX5 driver_caps;
+ DDCAPS_DX5 hel_caps;
+ GUID device_guid;
+ D3DDEVICEDESC_V2 hw_device_desc;
+ DISPLAY_MODE_LIST hw_disp_mode_list;
+ DISPLAY_MODE_LIST sw_disp_mode_list;
+ DISPLAY_MODE vga_mode1;
+ DISPLAY_MODE vga_mode2;
+ uint32_t screen_width;
+ bool hw_render_supported;
+ bool sw_windowed_supported;
+ bool hw_windowed_supported;
+ bool is_vga_mode1_presented;
+ bool is_vga_mode2_presented;
+ bool perspective_correct_supported;
+ bool dither_supported;
+ bool zbuffer_supported;
+ bool linear_filter_supported;
+ bool shade_restricted;
+} DISPLAY_ADAPTER;
+
+typedef struct __unaligned DISPLAY_ADAPTER_NODE {
+ struct DISPLAY_ADAPTER_NODE *next;
+ struct DISPLAY_ADAPTER_NODE *previous;
+ DISPLAY_ADAPTER body;
+} DISPLAY_ADAPTER_NODE;
+
+typedef struct __unaligned {
+ DISPLAY_ADAPTER_NODE *head;
+ DISPLAY_ADAPTER_NODE *tail;
+ DWORD count;
+} DISPLAY_ADAPTER_LIST;
+
+typedef struct __unaligned {
+ GUID *adapter_guid_ptr;
+ GUID adapter_guid;
+ STRING_FLAGGED description;
+ STRING_FLAGGED module;
+} SOUND_ADAPTER;
+
+typedef struct __unaligned SOUND_ADAPTER_NODE {
+ struct SOUND_ADAPTER_NODE *next;
+ struct SOUND_ADAPTER_NODE *previous;
+ SOUND_ADAPTER body;
+} SOUND_ADAPTER_NODE;
+
+typedef struct __unaligned {
+ SOUND_ADAPTER_NODE *head;
+ SOUND_ADAPTER_NODE *tail;
+ DWORD count;
+} SOUND_ADAPTER_LIST;
+
+typedef struct __unaligned {
+ GUID *lpJoystickGuid;
+ GUID joystickGuid;
+ STRING_FLAGGED productName;
+ STRING_FLAGGED instanceName;
+} JOYSTICK;
+
+typedef struct __unaligned JOYSTICK_NODE {
+ struct JOYSTICK_NODE *next;
+ struct JOYSTICK_NODE *previous;
+ JOYSTICK body;
+} JOYSTICK_NODE;
+
+typedef struct __unaligned JOYSTICK_LIST {
+ struct JOYSTICK_LIST *head;
+ struct JOYSTICK_LIST *tail;
+ DWORD count;
+} JOYSTICK_LIST;
+
+typedef enum {
+ RM_UNKNOWN = 0,
+ RM_SOFTWARE = 1,
+ RM_HARDWARE = 2,
+} RENDER_MODE;
+
+typedef enum {
+ AM_4_3 = 0,
+ AM_16_9 = 1,
+ AM_ANY = 2,
+} ASPECT_MODE;
+
+typedef enum {
+ TAM_DISABLED = 0,
+ TAM_BILINEAR_ONLY = 1,
+ TAM_ALWAYS = 2,
+} TEXEL_ADJUST_MODE;
+
+typedef struct __unaligned {
+ DISPLAY_ADAPTER_NODE *preferred_display_adapter;
+ SOUND_ADAPTER_NODE *preferred_sound_adapter;
+ JOYSTICK_NODE *preferred_joystick;
+ const DISPLAY_MODE_NODE *video_mode;
+ RENDER_MODE render_mode;
+ int32_t window_width;
+ int32_t window_height;
+ ASPECT_MODE aspect_mode;
+ bool perspective_correct;
+ bool dither;
+ bool zbuffer;
+ bool bilinear_filtering;
+ bool triple_buffering; // TODO: remove this option
+ bool fullscreen;
+ bool sound_enabled;
+ bool lara_mic; // TODO: remove this option
+ bool joystick_enabled;
+ bool disable_16bit_textures;
+ bool dont_sort_primitives;
+ bool flip_broken;
+ TEXEL_ADJUST_MODE texel_adjust_mode;
+ int32_t nearest_adjustment;
+ int32_t linear_adjustment;
+} APP_SETTINGS;
+
+typedef struct __unaligned {
+ LPDDS sys_mem_surface;
+ LPDDS vid_mem_surface;
+ LPDIRECTDRAWPALETTE palette;
+ LPDIRECT3DTEXTURE2 texture_3d;
+ HWR_TEXTURE_HANDLE tex_handle;
+ int32_t width;
+ int32_t height;
+ int32_t status;
+} TEXPAGE_DESC;
+
+typedef struct __unaligned {
+ union {
+ uint8_t red;
+ uint8_t r;
+ };
+ union {
+ uint8_t green;
+ uint8_t g;
+ };
+ union {
+ uint8_t blue;
+ uint8_t b;
+ };
+} RGB_888;
+
+typedef struct __unaligned {
+ union {
+ uint8_t red;
+ uint8_t r;
+ };
+ union {
+ uint8_t green;
+ uint8_t g;
+ };
+ union {
+ uint8_t blue;
+ uint8_t b;
+ };
+ union {
+ uint8_t alpha;
+ uint8_t a;
+ };
+} RGBA_8888;
+
+typedef struct {
+ struct {
+ uint32_t r;
+ uint32_t g;
+ uint32_t b;
+ uint32_t a;
+ } mask, depth, offset;
+} COLOR_BIT_MASKS;
+
+typedef struct __unaligned {
+ D3DCOLOR clr[4][4];
+} GOURAUD_FILL;
+
+typedef struct __unaligned {
+ D3DCOLOR clr[9];
+} GOURAUD_OUTLINE;
+
+typedef struct __unaligned {
+ uint8_t index[256];
+} DEPTHQ_ENTRY;
+
+typedef struct __unaligned {
+ uint8_t index[32];
+} GOURAUD_ENTRY;
+
+typedef struct __unaligned {
+ XYZ_32 pos;
+ XYZ_16 rot;
+} PHD_3DPOS;
+
+typedef struct __unaligned {
+ int32_t x;
+ int32_t y;
+ int32_t z;
+ int32_t r;
+} SPHERE;
+
+typedef struct __unaligned {
+ union {
+ uint32_t all;
+ struct {
+ uint32_t active: 1;
+ uint32_t flash: 1;
+ uint32_t rotate_h: 1;
+ uint32_t rotate_v: 1;
+ uint32_t centre_h: 1;
+ uint32_t centre_v: 1;
+ uint32_t hide: 1;
+ uint32_t right: 1;
+ uint32_t bottom: 1;
+ uint32_t background: 1;
+ uint32_t outline: 1;
+ uint32_t multiline: 1;
+ uint32_t manual_draw: 1; // not present in the OG
+ };
+ } flags;
+ uint16_t text_flags;
+ uint16_t bgnd_flags;
+ uint16_t outl_flags;
+ XYZ_16 pos;
+ int16_t letter_spacing;
+ int16_t word_spacing;
+ struct {
+ int16_t rate;
+ int16_t count;
+ } flash;
+ int16_t bgnd_color;
+ const uint16_t *bgnd_gour;
+ int16_t outl_color;
+ const uint16_t *outl_gour;
+ struct {
+ int16_t x;
+ int16_t y;
+ } bgnd_size;
+ XYZ_16 bgnd_off;
+ struct {
+ int32_t h;
+ int32_t v;
+ } scale;
+ char *content;
+} TEXTSTRING;
+
+typedef struct __unaligned {
+ float xv;
+ float yv;
+ float zv;
+ float rhw;
+ float xs;
+ float ys;
+ int16_t clip;
+ int16_t g;
+ int16_t u;
+ int16_t v;
+} PHD_VBUF;
+
+typedef struct __unaligned {
+ uint16_t u;
+ uint16_t v;
+} PHD_UV;
+
+typedef struct __unaligned {
+ uint16_t draw_type;
+ uint16_t tex_page;
+ PHD_UV uv[4];
+} PHD_TEXTURE;
+
+typedef struct __unaligned {
+ uint16_t tex_page;
+ uint16_t offset;
+ uint16_t width;
+ uint16_t height;
+ int16_t x0;
+ int16_t y0;
+ int16_t x1;
+ int16_t y1;
+} PHD_SPRITE;
+
+typedef enum {
+ SHAPE_SPRITE = 1,
+ SHAPE_LINE = 2,
+ SHAPE_BOX = 3,
+ SHAPE_FBOX = 4,
+} SHAPE;
+
+typedef enum {
+ SPRF_RGB = 0x00FFFFFF,
+ SPRF_ABS = 0x01000000,
+ SPRF_SEMITRANS = 0x02000000,
+ SPRF_SCALE = 0x04000000,
+ SPRF_SHADE = 0x08000000,
+ SPRF_TINT = 0x10000000,
+ SPRF_BLEND_ADD = 0x20000000,
+ SPRF_BLEND_SUB = 0x40000000,
+ SPRF_BLEND_QRT = SPRF_BLEND_ADD | SPRF_BLEND_SUB,
+ SPRF_BLEND = SPRF_BLEND_QRT,
+ SPRF_ITEM = 0x80000000,
+} SPRITE_FLAG;
+
+typedef struct __unaligned {
+ float xv;
+ float yv;
+ float zv;
+ float rhw;
+ float xs;
+ float ys;
+ float u;
+ float v;
+ float g;
+} POINT_INFO;
+
+typedef struct __unaligned {
+ float x;
+ float y;
+ float rhw;
+ float u;
+ float v;
+ float g;
+} VERTEX_INFO;
+
+typedef enum {
+ INPUT_ROLE_FORWARD = 0,
+ INPUT_ROLE_BACK = 1,
+ INPUT_ROLE_LEFT = 2,
+ INPUT_ROLE_RIGHT = 3,
+ INPUT_ROLE_STEP_L = 4,
+ INPUT_ROLE_STEP_R = 5,
+ INPUT_ROLE_SLOW = 6,
+ INPUT_ROLE_JUMP = 7,
+ INPUT_ROLE_ACTION = 8,
+ INPUT_ROLE_DRAW = 9,
+ INPUT_ROLE_USE_FLARE = 10,
+ INPUT_ROLE_LOOK = 11,
+ INPUT_ROLE_ROLL = 12,
+ INPUT_ROLE_OPTION = 13,
+} INPUT_ROLE;
+
+typedef struct __unaligned {
+ uint16_t no_selector : 1;
+ uint16_t ready : 1; // not present in the OG
+ uint16_t pad : 14;
+ uint16_t items_count;
+ uint16_t selected;
+ uint16_t visible_count;
+ uint16_t line_offset;
+ uint16_t line_old_offset;
+ uint16_t pix_width;
+ uint16_t line_height;
+ int16_t x_pos;
+ int16_t y_pos;
+ int16_t z_pos;
+ uint16_t item_string_len;
+ char *pitem_strings1;
+ char *pitem_strings2;
+ uint32_t *pitem_flags1;
+ uint32_t *pitem_flags2;
+ uint32_t heading_flags1;
+ uint32_t heading_flags2;
+ uint32_t background_flags;
+ uint32_t moreup_flags;
+ uint32_t moredown_flags;
+ uint32_t item_flags1[24]; // MAX_REQUESTER_ITEMS
+ uint32_t item_flags2[24]; // MAX_REQUESTER_ITEMS
+ TEXTSTRING *heading_text1;
+ TEXTSTRING *heading_text2;
+ TEXTSTRING *background_text;
+ TEXTSTRING *moreup_text;
+ TEXTSTRING *moredown_text;
+ TEXTSTRING *item_texts1[24]; // MAX_REQUESTER_ITEMS
+ TEXTSTRING *item_texts2[24]; // MAX_REQUESTER_ITEMS
+ char heading_string1[32];
+ char heading_string2[32];
+ uint32_t render_width;
+ uint32_t render_height;
+} REQUEST_INFO;
+
+typedef enum {
+ POLY_GTMAP = 0,
+ POLY_WGTMAP = 1,
+ POLY_GTMAP_PERSP = 2,
+ POLY_WGTMAP_PERSP = 3,
+ POLY_LINE = 4,
+ POLY_FLAT = 5,
+ POLY_GOURAUD = 6,
+ POLY_TRANS = 7,
+ POLY_SPRITE = 8,
+ POLY_HWR_GTMAP = 9,
+ POLY_HWR_WGTMAP = 10,
+ POLY_HWR_GOURAUD = 11,
+ POLY_HWR_LINE = 12,
+ POLY_HWR_TRANS = 13,
+} POLY_TYPE;
+
+typedef struct __unaligned {
+ uint32_t best_time[10];
+ uint32_t best_finish[10];
+ uint32_t finish_count;
+} ASSAULT_STATS;
+
+typedef struct __unaligned {
+ int32_t _0;
+ int32_t _1;
+} SORT_ITEM;
+
+typedef enum {
+ ST_AVG_Z = 0,
+ ST_MAX_Z = 1,
+ ST_FAR_Z = 2,
+} SORT_TYPE;
+
+typedef enum {
+ DRAW_OPAQUE = 0,
+ DRAW_COLOR_KEY = 1,
+} DRAW_TYPE;
+
+typedef struct __unaligned {
+ int32_t floor;
+ int32_t ceiling;
+ int32_t type;
+} COLL_SIDE;
+
+typedef struct __unaligned {
+ COLL_SIDE side_mid;
+ COLL_SIDE side_front;
+ COLL_SIDE side_left;
+ COLL_SIDE side_right;
+ int32_t radius;
+ int32_t bad_pos;
+ int32_t bad_neg;
+ int32_t bad_ceiling;
+ XYZ_32 shift;
+ XYZ_32 old;
+ int16_t old_anim_state;
+ int16_t old_anim_num;
+ int16_t old_frame_num;
+ int16_t facing;
+ int16_t quadrant;
+ int16_t coll_type;
+ int16_t *trigger;
+ int8_t x_tilt;
+ int8_t z_tilt;
+ int8_t hit_by_baddie;
+ int8_t hit_static;
+ uint16_t slopes_are_walls: 1; // 0x01 1
+ uint16_t slopes_are_pits: 1; // 0x02 2
+ uint16_t lava_is_pit: 1; // 0x04 4
+ uint16_t enable_baddie_push: 1; // 0x08 8
+ uint16_t enable_spaz: 1; // 0x10 16
+ uint16_t hit_ceiling: 1; // 0x20 32
+ uint16_t pad: 10;
+} COLL_INFO;
+
+typedef struct __unaligned {
+ int16_t min_x;
+ int16_t max_x;
+ int16_t min_y;
+ int16_t max_y;
+ int16_t min_z;
+ int16_t max_z;
+} BOUNDS_16;
+
+typedef struct __unaligned {
+ int16_t mesh_idx;
+ uint16_t flags;
+ BOUNDS_16 draw_bounds;
+ BOUNDS_16 collision_bounds;
+} STATIC_INFO;
+
+typedef struct __unaligned {
+ int32_t floor;
+ uint32_t touch_bits;
+ uint32_t mesh_bits;
+ int16_t object_id;
+ int16_t current_anim_state;
+ int16_t goal_anim_state;
+ int16_t required_anim_state;
+ int16_t anim_num;
+ int16_t frame_num;
+ int16_t room_num;
+ int16_t next_item;
+ int16_t next_active;
+ int16_t speed;
+ int16_t fall_speed;
+ int16_t hit_points;
+ int16_t box_num;
+ int16_t timer;
+ uint16_t flags;
+ int16_t shade_1;
+ int16_t shade_2;
+ int16_t carried_item;
+ void *data;
+ union {
+ struct {
+ XYZ_32 pos;
+ XYZ_16 rot;
+ };
+ PHD_3DPOS pos_full; // TODO: stick to pos and rot
+ };
+ uint16_t active: 1; // 0x0001
+ uint16_t status: 2; // 0x0002…0x0004
+ uint16_t gravity: 1; // 0x0008
+ uint16_t hit_status: 1; // 0x0010
+ uint16_t collidable: 1; // 0x0020
+ uint16_t looked_at: 1; // 0x0040
+ uint16_t dynamic_light: 1; // 0x0080
+ uint16_t killed: 1; // 0x0100
+ uint16_t pad: 7; // 0x0200…0x8000
+} ITEM;
+
+typedef struct __unaligned {
+ uint32_t timer;
+ uint32_t shots;
+ uint32_t hits;
+ uint32_t distance;
+ uint16_t kills;
+ uint8_t secrets;
+ uint8_t medipacks;
+} STATISTICS_INFO;
+
+typedef struct __unaligned {
+ uint16_t pistol_ammo;
+ uint16_t magnum_ammo;
+ uint16_t uzi_ammo;
+ uint16_t shotgun_ammo;
+ uint16_t m16_ammo;
+ uint16_t grenade_ammo;
+ uint16_t harpoon_ammo;
+ uint8_t small_medipacks;
+ uint8_t large_medipacks;
+ uint8_t reserved1;
+ uint8_t flares;
+ uint8_t gun_status;
+ uint8_t gun_type;
+ uint16_t available: 1; // 0x01 1
+ uint16_t has_pistols: 1; // 0x02 2
+ uint16_t has_magnums: 1; // 0x04 4
+ uint16_t has_uzis: 1; // 0x08 8
+ uint16_t has_shotgun: 1; // 0x10 16
+ uint16_t has_m16: 1; // 0x20 32
+ uint16_t has_grenade: 1; // 0x40 64
+ uint16_t has_harpoon: 1; // 0x80 128
+ uint16_t pad : 8;
+ uint16_t reserved2;
+ STATISTICS_INFO statistics;
+} START_INFO;
+
+typedef struct __unaligned {
+ START_INFO start[24];
+ STATISTICS_INFO statistics;
+ int16_t current_level;
+ bool bonus_flag;
+ uint8_t num_pickup[2];
+ uint8_t num_puzzle[4];
+ uint8_t num_key[4];
+ uint16_t reserved;
+ char buffer[6272]; // MAX_SG_BUFFER_SIZE
+} SAVEGAME_INFO;
+
+typedef struct __unaligned {
+ uint16_t idx;
+ int16_t box;
+ uint8_t pit_room;
+ int8_t floor;
+ uint8_t sky_room;
+ int8_t ceiling;
+} SECTOR;
+
+typedef struct __unaligned {
+ int16_t lock_angles[4];
+ int16_t left_angles[4];
+ int16_t right_angles[4];
+ int16_t aim_speed;
+ int16_t shot_accuracy;
+ int32_t gun_height;
+ int32_t damage;
+ int32_t target_dist;
+ int16_t recoil_frame;
+ int16_t flash_time;
+ int16_t sample_num;
+} WEAPON_INFO;
+
+typedef struct __unaligned {
+ XYZ_32 pos;
+ XYZ_16 rot;
+ int16_t room_num;
+ int16_t object_id;
+ int16_t next_free;
+ int16_t next_active;
+ int16_t speed;
+ int16_t fall_speed;
+ int16_t frame_num;
+ int16_t counter;
+ int16_t shade;
+} FX;
+
+typedef struct __unaligned {
+ int16_t zone_num;
+ int16_t enemy_zone_num;
+ int32_t distance;
+ int32_t ahead;
+ int32_t bite;
+ int16_t angle;
+ int16_t enemy_facing;
+} AI_INFO;
+
+typedef struct __unaligned {
+ int16_t exit_box;
+ uint16_t search_num;
+ int16_t next_expansion;
+ int16_t box_num;
+} BOX_NODE;
+
+typedef struct __unaligned {
+ BOX_NODE *node;
+ int16_t head;
+ int16_t tail;
+ uint16_t search_num;
+ uint16_t block_mask;
+ int16_t step;
+ int16_t drop;
+ int16_t fly;
+ int16_t zone_count;
+ int16_t target_box;
+ int16_t required_box;
+ XYZ_32 target;
+} LOT_INFO;
+
+typedef enum {
+ GFL_NO_LEVEL = -1,
+ GFL_TITLE = 0,
+ GFL_NORMAL = 1,
+ GFL_SAVED = 2,
+ GFL_DEMO = 3,
+ GFL_CUTSCENE = 4,
+ GFL_STORY = 5,
+ GFL_QUIET = 6,
+ GFL_MID_STORY = 7,
+} GAMEFLOW_LEVEL_TYPE;
+
+typedef struct __unaligned {
+ int16_t timer;
+ int16_t sprite;
+} PICKUP_INFO;
+
+typedef struct __unaligned {
+ int16_t shape;
+ XYZ_16 pos;
+ int32_t param1;
+ int32_t param2;
+ void *grdptr;
+ int16_t sprite_num;
+} INVENTORY_SPRITE;
+
+typedef struct __unaligned {
+ char *string;
+ int16_t object_id;
+ int16_t frames_total;
+ int16_t current_frame;
+ int16_t goal_frame;
+ int16_t open_frame;
+ int16_t anim_direction;
+ int16_t anim_speed;
+ int16_t anim_count;
+ int16_t x_rot_pt_sel;
+ int16_t x_rot_pt;
+ int16_t x_rot_sel;
+ int16_t x_rot_nosel;
+ int16_t x_rot;
+ int16_t y_rot_sel;
+ int16_t y_rot;
+ int32_t y_trans_sel;
+ int32_t y_trans;
+ int32_t z_trans_sel;
+ int32_t z_trans;
+ uint32_t meshes_sel;
+ uint32_t meshes_drawn;
+ int16_t inv_pos;
+ INVENTORY_SPRITE **sprite_list;
+ int32_t reserved[4];
+} INVENTORY_ITEM;
+
+typedef enum {
+ RNG_OPENING = 0,
+ RNG_OPEN = 1,
+ RNG_CLOSING = 2,
+ RNG_MAIN2OPTION = 3,
+ RNG_MAIN2KEYS = 4,
+ RNG_KEYS2MAIN = 5,
+ RNG_OPTION2MAIN = 6,
+ RNG_SELECTING = 7,
+ RNG_SELECTED = 8,
+ RNG_DESELECTING = 9,
+ RNG_DESELECT = 10,
+ RNG_CLOSING_ITEM = 11,
+ RNG_EXITING_INVENTORY = 12,
+ RNG_DONE = 13,
+} RING_STATUS;
+
+typedef struct __unaligned {
+ int16_t count;
+ int16_t status;
+ int16_t status_target;
+ int16_t radius_target;
+ int16_t radius_rate;
+ int16_t camera_y_target;
+ int16_t camera_y_rate;
+ int16_t camera_pitch_target;
+ int16_t camera_pitch_rate;
+ int16_t rotate_target;
+ int16_t rotate_rate;
+ int16_t item_pt_x_rot_target;
+ int16_t item_pt_x_rot_rate;
+ int16_t item_x_rot_target;
+ int16_t item_x_rot_rate;
+ int32_t item_y_trans_target;
+ int32_t item_y_trans_rate;
+ int32_t item_z_trans_target;
+ int32_t item_z_trans_rate;
+ int32_t misc;
+} IMOTION_INFO;
+
+typedef enum {
+ PM_SPINE = 1,
+ PM_FRONT = 2,
+ PM_IN_FRONT = 4,
+ PM_PAGE_2 = 8,
+ PM_BACK = 16,
+ PM_IN_BACK = 32,
+ PM_PAGE_1 = 64,
+ PM_COMMON = PM_SPINE | PM_BACK | PM_FRONT,
+} PASS_MESH;
+
+typedef struct __unaligned {
+ INVENTORY_ITEM **list;
+ int16_t type;
+ int16_t radius;
+ int16_t camera_pitch;
+ int16_t rotating;
+ int16_t rot_count;
+ int16_t current_object;
+ int16_t target_object;
+ int16_t number_of_objects;
+ int16_t angle_adder;
+ int16_t rot_adder;
+ int16_t rot_adder_l;
+ int16_t rot_adder_r;
+ PHD_3DPOS ring_pos;
+ PHD_3DPOS camera;
+ XYZ_32 light;
+ IMOTION_INFO *imo;
+} RING_INFO;
+
+typedef enum {
+ GFE_PICTURE = 0,
+ GFE_LIST_START = 1,
+ GFE_LIST_END = 2,
+ GFE_PLAY_FMV = 3,
+ GFE_START_LEVEL = 4,
+ GFE_CUTSCENE = 5,
+ GFE_LEVEL_COMPLETE = 6,
+ GFE_DEMO_PLAY = 7,
+ GFE_JUMP_TO_SEQ = 8,
+ GFE_END_SEQ = 9,
+ GFE_SET_TRACK = 10,
+ GFE_SUNSET = 11,
+ GFE_LOADING_PIC = 12,
+ GFE_DEADLY_WATER = 13,
+ GFE_REMOVE_WEAPONS = 14,
+ GFE_GAME_COMPLETE = 15,
+ GFE_CUT_ANGLE = 16,
+ GFE_NO_FLOOR = 17,
+ GFE_ADD_TO_INV = 18,
+ GFE_START_ANIM = 19,
+ GFE_NUM_SECRETS = 20,
+ GFE_KILL_TO_COMPLETE = 21,
+ GFE_REMOVE_AMMO = 22,
+} GF_EVENTS;
+
+typedef enum {
+ MOOD_BORED = 0,
+ MOOD_ATTACK = 1,
+ MOOD_ESCAPE = 2,
+ MOOD_STALK = 3,
+} MOOD_TYPE;
+
+typedef enum {
+ TARGET_NONE = 0,
+ TARGET_PRIMARY = 1,
+ TARGET_SECONDARY = 2,
+} TARGET_TYPE;
+
+typedef struct __unaligned {
+ XYZ_32 pos;
+ int32_t mesh_num;
+} BITE;
+
+typedef struct __unaligned {
+ int16_t *frame_ptr;
+ int16_t interpolation;
+ int16_t current_anim_state;
+ int32_t velocity;
+ int32_t acceleration;
+ int16_t frame_base;
+ int16_t frame_end;
+ int16_t jump_anim_num;
+ int16_t jump_frame_num;
+ int16_t num_changes;
+ int16_t change_idx;
+ int16_t num_commands;
+ int16_t command_idx;
+} ANIM;
+
+typedef struct {
+ int16_t goal_anim_state;
+ int16_t num_ranges;
+ int16_t range_idx;
+} ANIM_CHANGE;
+
+typedef struct {
+ int16_t start_frame;
+ int16_t end_frame;
+ int16_t link_anim_num;
+ int16_t link_frame_num;
+} ANIM_RANGE;
+
+typedef struct __unaligned {
+ int16_t room;
+ XYZ_16 normal;
+ XYZ_16 vertex[4];
+} PORTAL;
+
+typedef struct __unaligned {
+ int16_t count;
+ PORTAL portal[];
+} PORTALS;
+
+typedef struct __unaligned {
+ int32_t x;
+ int32_t y;
+ int32_t z;
+ int16_t intensity_1;
+ int16_t intensity_2;
+ int32_t falloff_1;
+ int32_t falloff_2;
+} LIGHT;
+
+typedef struct __unaligned {
+ XYZ_16 pos;
+ struct __unaligned {
+ int16_t y;
+ } rot;
+ int16_t shade_1;
+ int16_t shade_2;
+ int16_t static_num;
+} MESH;
+
+typedef enum {
+ RF_UNDERWATER = 0x01,
+ RF_OUTSIDE = 0x08,
+ RF_DYNAMIC_LIT = 0x10,
+ RF_NOT_INSIDE = 0x20,
+ RF_INSIDE = 0x40,
+} ROOM_FLAG;
+
+typedef struct __unaligned {
+ SECTOR *sector;
+ SECTOR old_sector;
+ int16_t block;
+} DOORPOS_DATA;
+
+typedef struct __unaligned {
+ DOORPOS_DATA d1;
+ DOORPOS_DATA d1flip;
+ DOORPOS_DATA d2;
+ DOORPOS_DATA d2flip;
+} DOOR_DATA;
+
+typedef struct __unaligned {
+ int16_t *data;
+ PORTALS *portals;
+ SECTOR *sectors;
+ LIGHT *lights;
+ MESH *meshes;
+ XYZ_32 pos;
+ int32_t min_floor;
+ int32_t max_ceiling;
+ struct __unaligned {
+ int16_t z;
+ int16_t x;
+ } size;
+ int16_t ambient_1;
+ int16_t ambient_2;
+ int16_t light_mode;
+ int16_t num_lights;
+ int16_t num_meshes;
+ int16_t bound_left;
+ int16_t bound_right;
+ int16_t bound_top;
+ int16_t bound_bottom;
+ uint16_t bound_active;
+ int16_t test_left;
+ int16_t test_right;
+ int16_t test_top;
+ int16_t test_bottom;
+ int16_t item_num;
+ int16_t fx_num;
+ int16_t flipped_room;
+ uint16_t flags;
+} ROOM;
+
+typedef struct __unaligned {
+ int16_t head_rotation;
+ int16_t neck_rotation;
+ int16_t maximum_turn;
+ int16_t flags;
+ int16_t item_num;
+ MOOD_TYPE mood;
+ LOT_INFO lot;
+ XYZ_32 target;
+ ITEM *enemy;
+} CREATURE;
+
+typedef enum {
+ CAM_CHASE = 0,
+ CAM_FIXED = 1,
+ CAM_LOOK = 2,
+ CAM_COMBAT = 3,
+ CAM_CINEMATIC = 4,
+ CAM_HEAVY = 5,
+} CAMERA_TYPE;
+
+typedef struct __unaligned {
+ union {
+ XYZ_32 pos;
+ struct {
+ int32_t x;
+ int32_t y;
+ int32_t z;
+ };
+ };
+ int16_t room_num;
+ int16_t box_num;
+} GAME_VECTOR;
+
+typedef struct __unaligned {
+ union {
+ struct __unaligned {
+ int32_t x;
+ int32_t y;
+ int32_t z;
+ };
+ XYZ_32 pos;
+ };
+ int16_t data;
+ int16_t flags;
+} OBJECT_VECTOR;
+
+typedef struct __unaligned {
+ uint8_t left;
+ uint8_t right;
+ uint8_t top;
+ uint8_t bottom;
+ int16_t height;
+ int16_t overlap_index;
+} BOX_INFO;
+
+typedef enum {
+ LV_GYM = 0,
+ LV_FIRST = 1,
+} LEVEL_TYPE;
+
+typedef enum {
+ RT_MAIN = 0,
+ RT_OPTION = 1,
+ RT_KEYS = 2,
+} RING_TYPE;
+
+typedef enum {
+ INV_COLOR_BLACK = 0,
+ INV_COLOR_GRAY = 1,
+ INV_COLOR_WHITE = 2,
+ INV_COLOR_RED = 3,
+ INV_COLOR_ORANGE = 4,
+ INV_COLOR_YELLOW = 5,
+ INV_COLOR_DARK_GREEN = 12,
+ INV_COLOR_GREEN = 13,
+ INV_COLOR_CYAN = 14,
+ INV_COLOR_BLUE = 15,
+ INV_COLOR_MAGENTA = 16,
+ INV_COLOR_NUMBER_OF = 17,
+} INV_COLOR;
+
+typedef enum {
+ INV_GAME_MODE = 0,
+ INV_TITLE_MODE = 1,
+ INV_KEYS_MODE = 2,
+ INV_SAVE_MODE = 3,
+ INV_LOAD_MODE = 4,
+ INV_DEATH_MODE = 5,
+} INVENTORY_MODE;
+
+typedef enum {
+ GAMEMODE_NOT_IN_GAME,
+ GAMEMODE_IN_GAME,
+ GAMEMODE_IN_DEMO,
+ GAMEMODE_IN_CUTSCENE
+} GAMEMODE;
+
+typedef enum {
+ TRAP_SET = 0,
+ TRAP_ACTIVATE = 1,
+ TRAP_WORKING = 2,
+ TRAP_FINISHED = 3,
+} TRAP_ANIM;
+
+typedef enum {
+ DOOR_STATE_CLOSED = 0,
+ DOOR_STATE_OPEN = 1,
+} DOOR_STATE;
+
+typedef enum {
+ GFD_START_GAME = 0x0000,
+ GFD_START_SAVED_GAME = 0x0100,
+ GFD_START_CINE = 0x0200,
+ GFD_START_FMV = 0x0300,
+ GFD_START_DEMO = 0x0400,
+ GFD_EXIT_TO_TITLE = 0x0500,
+ GFD_LEVEL_COMPLETE = 0x0600,
+ GFD_EXIT_GAME = 0x0700,
+ GFD_EXIT_TO_OPTION = 0x0800,
+ GFD_TITLE_DESELECT = 0x0900,
+ GFD_OVERRIDE = 0x0A00,
+} GAME_FLOW_DIR;
+
+typedef struct __unaligned {
+ int32_t first_option;
+ int32_t title_replace;
+ int32_t on_death_demo_mode;
+ int32_t on_death_in_game;
+ int32_t no_input_time;
+ int32_t on_demo_interrupt;
+ int32_t on_demo_end;
+ uint16_t reserved1[18];
+ uint16_t num_levels;
+ uint16_t num_pictures;
+ uint16_t num_titles;
+ uint16_t num_fmvs;
+ uint16_t num_cutscenes;
+ uint16_t num_demos;
+ uint16_t title_track;
+ int16_t single_level;
+ uint16_t reserved2[16];
+
+ uint16_t demo_version: 1; // 0x0001
+ uint16_t title_disabled: 1; // 0x0002
+ uint16_t cheat_mode_check_disabled: 1; // 0x0004
+ uint16_t no_input_timeout: 1; // 0x0008
+ uint16_t load_save_disabled: 1; // 0x0010
+ uint16_t screen_sizing_disabled: 1; // 0x0020
+ uint16_t lockout_option_ring: 1; // 0x0040
+ uint16_t dozy_cheat_enabled: 1; // 0x0080
+ uint16_t cyphered_strings: 1; // 0x0100
+ uint16_t gym_enabled: 1; // 0x0200
+ uint16_t play_any_level: 1; // 0x0400
+ uint16_t cheat_enable: 1; // 0x0800
+
+ uint16_t reserved3[3];
+ uint8_t cypher_code;
+ uint8_t language;
+ uint8_t secret_track;
+ uint8_t level_complete_track;
+ uint16_t reserved4[2];
+} GAME_FLOW;
+
+typedef struct __unaligned {
+ int16_t mesh_count;
+ int16_t mesh_idx;
+ int32_t bone_idx;
+ int16_t *frame_base; // TODO: make me FRAME_INFO
+
+ void (*initialise)(int16_t item_num);
+ void (*control)(int16_t item_num);
+ void (*floor)(
+ const ITEM *item, int32_t x, int32_t y, int32_t z,
+ int32_t *out_height);
+ void (*ceiling)(
+ const ITEM *item, int32_t x, int32_t y, int32_t z,
+ int32_t *out_height);
+ void (*draw_routine)(const ITEM *item);
+ void (*collision)(int16_t
+ item_num, ITEM *lara_item, COLL_INFO *coll);
+
+ int16_t anim_idx;
+ int16_t hit_points;
+ int16_t pivot_length;
+ int16_t radius;
+ int16_t shadow_size;
+
+ union {
+ uint16_t flags;
+ struct {
+ uint16_t loaded: 1; // 0x01 1
+ uint16_t intelligent: 1; // 0x02 2
+ uint16_t save_position: 1; // 0x04 4
+ uint16_t save_hitpoints: 1; // 0x08 8
+ uint16_t save_flags: 1; // 0x10 16
+ uint16_t save_anim: 1; // 0x20 32
+ uint16_t semi_transparent: 1; // 0x40 64
+ uint16_t water_creature: 1; // 0x80 128
+ uint16_t pad : 8;
+ };
+ };
+} OBJECT;
+
+typedef struct __unaligned {
+ GAME_VECTOR pos;
+ GAME_VECTOR target;
+ CAMERA_TYPE type;
+ int32_t shift;
+ uint32_t flags;
+ int32_t fixed_camera;
+ int32_t num_frames;
+ int32_t bounce;
+ int32_t underwater;
+ int32_t target_distance;
+ int32_t target_square;
+ int16_t target_angle;
+ int16_t actual_angle;
+ int16_t target_elevation;
+ int16_t box;
+ int16_t num;
+ int16_t last;
+ int16_t timer;
+ int16_t speed;
+ ITEM *item;
+ ITEM *last_item;
+ OBJECT_VECTOR *fixed;
+ int32_t is_lara_mic; // TODO: remove this - now stored in g_Config
+ XYZ_32 mic_pos;
+} CAMERA_INFO;
+
+typedef struct __unaligned {
+ int16_t *frame_base;
+ int16_t frame_num;
+ int16_t anim_num;
+ int16_t lock;
+ struct __unaligned {
+ int16_t y;
+ int16_t x;
+ int16_t z;
+ } rot; // TODO: XYZ_16
+ int16_t flash_gun;
+} LARA_ARM;
+
+typedef struct __unaligned {
+ int32_t ammo;
+} AMMO_INFO;
+
+typedef enum {
+ LWS_ABOVE_WATER = 0,
+ LWS_UNDERWATER = 1,
+ LWS_SURFACE = 2,
+ LWS_CHEAT = 3,
+ LWS_WADE = 4,
+} LARA_WATER_STATE;
+
+typedef struct __unaligned {
+ int16_t item_num;
+ int16_t gun_status;
+ int16_t gun_type;
+ int16_t request_gun_type;
+ int16_t last_gun_type;
+ int16_t calc_fall_speed;
+ int16_t water_status;
+ int16_t climb_status;
+ int16_t pose_count;
+ int16_t hit_frame;
+ int16_t hit_direction;
+ int16_t air;
+ int16_t dive_count;
+ int16_t death_timer;
+ int16_t current_active;
+ int16_t spaz_effect_count;
+ int16_t flare_age;
+ int16_t skidoo;
+ int16_t weapon_item;
+ int16_t back_gun;
+ int16_t flare_frame;
+ union {
+ uint16_t flags;
+ struct ___unaligned {
+ uint16_t flare_control_left: 1; // 0x01 1
+ uint16_t flare_control_right: 1; // 0x02 2
+ uint16_t extra_anim: 1; // 0x04 4
+ uint16_t look: 1; // 0x08 8
+ uint16_t burn: 1; // 0x10 16
+ uint16_t pad: 11;
+ };
+ };
+ int32_t water_surface_dist;
+ XYZ_32 last_pos;
+ FX *spaz_effect;
+ uint32_t mesh_effects;
+ int16_t *mesh_ptrs[15];
+ ITEM *target;
+ int16_t target_angles[2];
+ int16_t turn_rate;
+ int16_t move_angle;
+ int16_t head_y_rot;
+ int16_t head_x_rot;
+ int16_t head_z_rot;
+ int16_t torso_y_rot;
+ int16_t torso_x_rot;
+ int16_t torso_z_rot;
+ LARA_ARM left_arm;
+ LARA_ARM right_arm;
+ AMMO_INFO pistol_ammo;
+ AMMO_INFO magnum_ammo;
+ AMMO_INFO uzi_ammo;
+ AMMO_INFO shotgun_ammo;
+ AMMO_INFO harpoon_ammo;
+ AMMO_INFO grenade_ammo;
+ AMMO_INFO m16_ammo;
+ CREATURE *creature;
+} LARA_INFO;
+
+typedef enum {
+ SFX_LARA_FEET = 0,
+ SFX_LARA_CLIMB_2 = 1,
+ SFX_LARA_NO = 2,
+ SFX_LARA_SLIPPING = 3,
+ SFX_LARA_LAND = 4,
+ SFX_LARA_CLIMB_1 = 5,
+ SFX_LARA_DRAW = 6,
+ SFX_LARA_HOLSTER = 7,
+ SFX_LARA_FIRE = 8,
+ SFX_LARA_RELOAD = 9,
+ SFX_LARA_RICOCHET = 10,
+ SFX_LARA_FLARE_IGNITE = 11,
+ SFX_LARA_FLARE_BURN = 12,
+ SFX_LARA_HARPOON_FIRE = 15,
+ SFX_LARA_HARPOON_LOAD = 16,
+ SFX_LARA_WET_FEET = 17,
+ SFX_LARA_WADE = 18,
+ SFX_LARA_TREAD = 20,
+ SFX_LARA_FIRE_MAGNUMS = 21,
+ SFX_LARA_HARPOON_LOAD_WATER = 22,
+ SFX_LARA_HARPOON_FIRE_WATER = 23,
+ SFX_MASSIVE_CRASH = 24,
+ SFX_PUSH_SWITCH = 25,
+ SFX_LARA_CLIMB_3 = 26,
+ SFX_LARA_BODYSL = 27,
+ SFX_LARA_SHIMMY = 28,
+ SFX_LARA_JUMP = 29,
+ SFX_LARA_FALL = 30,
+ SFX_LARA_INJURY = 31,
+ SFX_LARA_ROLL = 32,
+ SFX_LARA_SPLASH = 33,
+ SFX_LARA_GETOUT = 34,
+ SFX_LARA_SWIM = 35,
+ SFX_LARA_BREATH = 36,
+ SFX_LARA_BUBBLES = 37,
+ SFX_LARA_SWITCH = 38,
+ SFX_LARA_KEY = 39,
+ SFX_LARA_OBJECT = 40,
+ SFX_LARA_GENERAL_DEATH = 41,
+ SFX_LARA_KNEES_DEATH = 42,
+ SFX_LARA_UZI_FIRE = 43,
+ SFX_LARA_UZI_STOP = 44,
+ SFX_LARA_SHOTGUN = 45,
+ SFX_LARA_BLOCK_PUSH_1 = 46,
+ SFX_LARA_BLOCK_PUSH_2 = 47,
+ SFX_CLICK = 48,
+ SFX_LARA_HIT = 49,
+ SFX_LARA_BULLETHIT = 50,
+ SFX_LARA_BLKPULL = 51,
+ SFX_LARA_FLOATING = 52,
+ SFX_LARA_FALLDETH = 53,
+ SFX_LARA_GRABHAND = 54,
+ SFX_LARA_GRABBODY = 55,
+ SFX_LARA_GRABFEET = 56,
+ SFX_LARA_SWITCHUP = 57,
+ SFX_GLASS_BREAK = 58,
+ SFX_WATER_LOOP = 59,
+ SFX_UNDERWATER = 60,
+ SFX_UNDERWATER_SWITCH = 61,
+ SFX_LARA_PICKUP = 62,
+ SFX_BLOCK_SOUND = 63,
+ SFX_DOOR = 64,
+ SFX_SWING = 65,
+ SFX_ROCK_FALL_CRUMBLE = 66,
+ SFX_ROCK_FALL_LAND = 67,
+ SFX_ROCK_FALL_SOLID = 68,
+ SFX_ENEMY_FEET = 69,
+ SFX_ENEMY_GRUNT = 70,
+ SFX_ENEMY_HIT_1 = 71,
+ SFX_ENEMY_HIT_2 = 72,
+ SFX_ENEMY_DEATH_1 = 73,
+ SFX_ENEMY_JUMP = 74,
+ SFX_ENEMY_CLIMBUP = 75,
+ SFX_ENEMY_CLIMBDOWN = 76,
+ SFX_WEAPON_CLATTER = 77,
+ SFX_M16_FIRE = 78,
+ SFX_WATERFALL_LOOP = 79,
+ SFX_SWORD_STATUE_DROP = 80,
+ SFX_SWORD_STATUE_LIFT = 81,
+ SFX_PORTCULLIS_UP = 82,
+ SFX_PORTCULLIS_DOWN = 83,
+ SFX_DOG_FEET_1 = 84,
+ SFX_BODY_SLAM = 85,
+ SFX_DOG_BARK_1 = 86,
+ SFX_DOG_FEET_2 = 87,
+ SFX_DOG_BARK_2 = 88,
+ SFX_DOG_DEATH = 89,
+ SFX_DOG_PANT = 90,
+ SFX_LEOPARD_FEET = 91,
+ SFX_LEOPARD_ROAR = 92,
+ SFX_LEOPARD_BITE = 93,
+ SFX_LEOPARD_STRIKE = 94,
+ SFX_LEOPARD_DEATH = 95,
+ SFX_LEOPARD_GROWL = 96,
+ SFX_RAT_ATTACK = 97,
+ SFX_RAT_DEATH = 98,
+ SFX_TIGER_ROAR = 99,
+ SFX_TIGER_BITE = 100,
+ SFX_TIGER_STRIKE = 101,
+ SFX_TIGER_DEATH = 102,
+ SFX_TIGER_GROWL = 103,
+ SFX_M16_STOP = 104,
+ SFX_EXPLOSION_1 = 105,
+ SFX_GROWL = 106,
+ SFX_SPIDER_JUMP = 107,
+ SFX_MENU_ROTATE = 108,
+ SFX_MENU_LARA_HOME = 109,
+ SFX_MENU_SPININ = 111,
+ SFX_MENU_SPINOUT = 112,
+ SFX_MENU_STOPWATCH = 113,
+ SFX_MENU_GUNS = 114,
+ SFX_MENU_PASSPORT = 115,
+ SFX_MENU_MEDI = 116,
+ SFX_ENEMY_HEELS = 117,
+ SFX_ENEMY_FIRE_SILENCER = 118,
+ SFX_ENEMY_AH_DYING = 119,
+ SFX_ENEMY_OOH_DYING = 120,
+ SFX_ENEMY_THUMP = 121,
+ SFX_SPIDER_MOVING = 122,
+ SFX_LARA_MINI_LOAD = 123,
+ SFX_LARA_MINI_LOCK = 124,
+ SFX_LARA_MINI_FIRE = 125,
+ SFX_SPIDER_BITE = 126,
+ SFX_SLAM_DOOR_SLIDE = 127,
+ SFX_SLAM_DOOR_CLOSE = 128,
+ SFX_EAGLE_SQUAWK = 129,
+ SFX_EAGLE_WING_FLAP = 130,
+ SFX_EAGLE_DEATH = 131,
+ SFX_CROW_CAW = 132,
+ SFX_CROW_WING_FLAP = 133,
+ SFX_CROW_DEATH = 134,
+ SFX_CROW_ATTACK = 135,
+ SFX_ENEMY_GUN_COCKING = 136,
+ SFX_ENEMY_FIRE_1 = 137,
+ SFX_ENEMY_FIRE_TWIRL = 138,
+ SFX_ENEMY_HOLSTER = 139,
+ SFX_ENEMY_BREATH_1 = 140,
+ SFX_ENEMY_CHUCKLE = 141,
+ SFX_MONK_POY = 142,
+ SFX_MONK_DEATH = 143,
+ SFX_LARA_SPIKE_DEATH = 145,
+ SFX_LARA_DEATH_3 = 146,
+ SFX_ROLLING_BALL = 147,
+ SFX_SANDBAG_SNAP = 148,
+ SFX_SANDBAG_HIT = 149,
+ SFX_LOOP_FOR_SMALL_FIRES = 150,
+ SFX_SKIDOO_START = 152,
+ SFX_SKIDOO_IDLE = 153,
+ SFX_SKIDOO_ACCELERATE = 154,
+ SFX_SKIDOO_MOVING = 155,
+ SFX_SKIDOO_STOP = 156,
+ SFX_ENEMY_FIRE_2 = 157,
+ SFX_ENEMY_DEATH_2 = 158,
+ SFX_ENEMY_BREATH_2 = 159,
+ SFX_STICK_TAP = 160,
+ SFX_TRAPDOOR_OPEN = 161,
+ SFX_TRAPDOOR_CLOSE = 162,
+ SFX_YETI_GROWL = 163,
+ SFX_YETI_CHEST_BEAT = 164,
+ SFX_YETI_THUMP = 165,
+ SFX_YETI_GRUNT_1 = 166,
+ SFX_YETI_SCREAM = 167,
+ SFX_YETI_DEATH = 168,
+ SFX_YETI_GROWL_1 = 169,
+ SFX_YETI_GROWL_2 = 170,
+ SFX_YETI_GRUNT_2 = 171,
+ SFX_YETI_GROWL_3 = 172,
+ SFX_YETI_FEET = 173,
+ SFX_ENEMY_HEAVY_BREATH = 174,
+ SFX_ENEMY_FLAMETHROWER_FIRE = 175,
+ SFX_ENEMY_FLAMETHROWER_SCRAPE = 176,
+ SFX_ENEMY_FLAMETHROWER_CLICK = 177,
+ SFX_ENEMY_FLAMETHROWER_DEATH = 178,
+ SFX_ENEMY_FLAMETHROWER_FALL = 179,
+ SFX_ENEMY_BELT_JINGLE = 180,
+ SFX_ENEMY_WRENCH = 181,
+ SFX_FOOTSTEP = 182,
+ SFX_FOOTSTEP_HIT = 183,
+ SFX_ENEMY_COCKING_SHOTGUN = 184,
+ SFX_SCUBA_DIVER_FLIPPER = 186,
+ SFX_SCUBA_DIVER_BREATH = 188,
+ SFX_PULLEY_CRANE = 190,
+ SFX_CURTAIN = 191,
+ SFX_SCUBA_DIVER_DEATH = 192,
+ SFX_SCUBA_DIVER_DIVING = 193,
+ SFX_BOAT_START = 194,
+ SFX_BOAT_IDLE = 195,
+ SFX_BOAT_ACCELERATE = 196,
+ SFX_BOAT_MOVING = 197,
+ SFX_BOAT_STOP = 198,
+ SFX_BOAT_SLOW_DOWN = 199,
+ SFX_BOAT_HIT = 200,
+ SFX_CLATTER_1 = 201,
+ SFX_CLATTER_2 = 202,
+ SFX_CLATTER_3 = 203,
+ SFX_DOOR_SLIDE = 204,
+ SFX_LARA_FLESH_WOUND = 205,
+ SFX_SAW_REVVING = 206,
+ SFX_SAW_STOP = 207,
+ SFX_DOOR_CHIME = 208,
+ SFX_CHAIN_CREAK_SNAP = 209,
+ SFX_SWINGING = 210,
+ SFX_BREAKING_1 = 211,
+ SFX_PULLEY_MOVE = 212,
+ SFX_AIRPLANE_IDLE = 213,
+ SFX_UNDERWATER_FAN_ON = 215,
+ SFX_SMALL_FAN_ON = 217,
+ SFX_SWINGING_BOX_BAG = 218,
+ SFX_JUMP_PAD_UP = 219,
+ SFX_JUMP_PAD_DOWN = 220,
+ SFX_BREAKING_2 = 221,
+ SFX_SNOWBALL_ROLL = 222,
+ SFX_SNOWBALL_STOP = 223,
+ SFX_ROLLING = 224,
+ SFX_ROLLING_STOP_1 = 225,
+ SFX_ROLLING_STOP_2 = 226,
+ SFX_ROLLING_2 = 227,
+ SFX_ROLLING_2_HIT = 228,
+ SFX_SIDE_BLADE_SWING = 229,
+ SFX_SIDE_BLADE_BACK = 230,
+ SFX_ROLLING_BLADE = 231,
+ SFX_ICILE_DETACH = 232,
+ SFX_ICICLE_HIT = 233,
+ SFX_ROTATING_HANDLE_LOOSE = 234,
+ SFX_ROTATING_HANDLE_TURN = 235,
+ SFX_ROTATING_HANDLE_OPEN = 236,
+ SFX_ROTATING_HANDLE_CREAK = 237,
+ SFX_MONK_FEET = 238,
+ SFX_MONK_SWORD_SWING_1 = 239,
+ SFX_MONK_SWORD_SWING_2 = 240,
+ SFX_MONK_SHOUT_1 = 241,
+ SFX_MONK_SHOUT_2 = 242,
+ SFX_MONK_SHOUT_3 = 243,
+ SFX_MONK_SHOUT_4 = 244,
+ SFX_MONK_CRUNCH = 245,
+ SFX_MONK_BREATH = 246,
+ SFX_SPLASH_SURFACE = 247,
+ SFX_WATERFALL_1 = 248,
+ SFX_ENEMY_FEET_SNOW = 249,
+ SFX_ENEMY_FIRE_3 = 250,
+ SFX_ENEMY_FIRE_SEMIAUTO = 251,
+ SFX_ENEMY_DEATH_3 = 252,
+ SFX_ENEMY_DEATH_4 = 253,
+ SFX_CIRCLE_BLADE = 254,
+ SFX_KNIFETHROWER_FEET = 255,
+ SFX_MONK_OYE = 256,
+ SFX_MONK_AWEH = 257,
+ SFX_CIRCLE_BLADE_HIT = 258,
+ SFX_KNIFETHROWER_WARRIOR_FEET = 259,
+ SFX_WARRIOR_BLADE_SWING_1 = 260,
+ SFX_WARRIOR_BLADE_SWING_2 = 261,
+ SFX_WARRIOR_GROWL = 262,
+ SFX_KNIFETHROWER_HICCUP = 263,
+ SFX_WARROPR_BURP = 264,
+ SFX_WARRIOR_GROWL_1 = 265,
+ SFX_WARRIOR_WAKE = 267,
+ SFX_WARRIOR_GROWL_2 = 268,
+ SFX_SMALL_SWITCH = 269,
+ SFX_CHAIN_PULLEY = 278,
+ SFX_ZIPLINE_GRAB = 279,
+ SFX_ZIPLINE_GO = 280,
+ SFX_ZIPLINE_STOP = 281,
+ SFX_BODY_SLUMP = 282,
+ SFX_BOWL_TIPPING = 283,
+ SFX_BOWL_POUR = 284,
+ SFX_WATERFALL_2 = 285,
+ SFX_ELEVATOR_OPEN = 286,
+ SFX_ELEVATOR_CLOSE = 287,
+ SFX_MINISUB_CLATTER_1 = 288,
+ SFX_MINISUB_CLATTER_2 = 289,
+ SFX_MINISUB_CLATTER_3 = 290,
+ SFX_BIRD_MONSTER_SCREAM = 291,
+ SFX_BIRD_MONSTER_GASP = 292,
+ SFX_BIRD_MONSTER_BREATH = 293,
+ SFX_BIRD_MONSTER_FEET = 294,
+ SFX_BIRD_MONSTER_DEATH = 295,
+ SFX_BIRD_MONSTER_SCRAPE = 296,
+ SFX_HELICOPTER_LOOP = 297,
+ SFX_DRAGON_FEET = 298,
+ SFX_DRAGON_GROWL_1 = 299,
+ SFX_DRAGON_GROWL_2 = 300,
+ SFX_DRAGON_FALL = 301,
+ SFX_DRAGON_BREATH = 302,
+ SFX_DRAGON_GROWL_3 = 303,
+ SFX_DRAGON_GRUNT = 304,
+ SFX_DRAGON_FIRE = 305,
+ SFX_DRAGON_LEG_LIFT = 306,
+ SFX_DRAGON_LEG_HIT = 307,
+ SFX_WARRIOR_BLADE_SWING_3 = 308,
+ SFX_WARRIOR_BLADE_SWING_FAST = 309,
+ SFX_WARRIOR_BREATH_ACTIVE = 311,
+ SFX_WARRIOR_HOVER = 312,
+ SFX_WARRIOR_LANDING = 313,
+ SFX_WARRIOR_SWORD_CLANK = 314,
+ SFX_WARRIOR_SWORD_SLICE = 315,
+ SFX_BIRDS_CHIRP = 316,
+ SFX_CRUNCH_1 = 317,
+ SFX_CRUNCH_2 = 318,
+ SFX_DOOR_CREAK = 319,
+ SFX_BREAKING_3 = 320,
+ SFX_BIG_SPIDER_SNARL = 321,
+ SFX_BIG_SPIDER_FEET = 322,
+ SFX_BIG_SPIDER_DEATH = 323,
+ SFX_T_REX_ROAR = 324,
+ SFX_T_REX_FEET = 325,
+ SFX_T_REX_GROWL_1 = 326,
+ SFX_T_REX_DEATH = 327,
+ SFX_DRIPS_REVERB = 329,
+ SFX_STAGE_BACKDROP = 330,
+ SFX_STONE_DOOR_SLIDE = 331,
+ SFX_PLATFORM_ALARM = 332,
+ SFX_TICK_TOCK = 333,
+ SFX_DOORBELL = 334,
+ SFX_BURGLAR_ALARM = 335,
+ SFX_BOAT_ENGINE = 336,
+ SFX_BOAT_INTO_WATER = 337,
+ SFX_UNKNOWN_1 = 338,
+ SFX_UNKNOWN_2 = 339,
+ SFX_UNKNOWN_3 = 340,
+ SFX_MARCO_BARTOLLI_TRANSFORM = 341,
+ SFX_WINSTON_SHUFFLE = 342,
+ SFX_WINSTON_FEET = 343,
+ SFX_WINSTON_GRUNT_1 = 344,
+ SFX_WINSTON_GRUNT_2 = 345,
+ SFX_WINSTON_GRUNT_3 = 346,
+ SFX_WINSTON_CUPS = 347,
+ SFX_BRITTLE_GROUND_BREAK = 348,
+ SFX_SPIDER_EXPLODE = 349,
+ SFX_SHARK_BITE = 350,
+ SFX_LAVA_BUBBLES = 351,
+ SFX_EXPLOSION_2 = 352,
+ SFX_BURGLARS = 353,
+ SFX_ZIPPER = 354,
+ SFX_NUMBER_OF = 370,
+} SOUND_EFFECT_ID;
+
+typedef enum {
+ SPM_NORMAL = 0,
+ SPM_UNDERWATER = 1,
+ SPM_ALWAYS = 2,
+ SPM_PITCH = 4,
+} SOUND_PLAY_MODE;
+
+typedef enum {
+ CF_NORMAL = 0,
+ CF_FOLLOW_CENTRE = 1,
+ CF_NO_CHUNKY = 2,
+ CF_CHASE_OBJECT = 3,
+} CAMERA_FLAGS;
+
+typedef enum {
+ FBBOX_MIN_X = 0,
+ FBBOX_MAX_X = 1,
+ FBBOX_MIN_Y = 2,
+ FBBOX_MAX_Y = 3,
+ FBBOX_MIN_Z = 4,
+ FBBOX_MAX_Z = 5,
+ FBBOX_X = 6,
+ FBBOX_Y = 7,
+ FBBOX_Z = 8,
+ FBBOX_ROT = 9,
+} FRAME_BBOX_INFO;
+
+typedef struct __unaligned {
+ union {
+ int32_t flags;
+ struct {
+ uint32_t matrix_pop: 1;
+ uint32_t matrix_push: 1;
+ uint32_t rot_x: 1;
+ uint32_t rot_y: 1;
+ uint32_t rot_z: 1;
+ uint32_t pad: 11;
+ };
+ };
+ XYZ_32 pos;
+} BONE;
+
+typedef enum {
+ BF_MATRIX_POP = 1,
+ BF_MATRIX_PUSH = 2,
+ BF_ROT_X = 4,
+ BF_ROT_Y = 8,
+ BF_ROT_Z = 16,
+} BONE_FLAGS;
+
+typedef struct __unaligned {
+ int16_t tx;
+ int16_t ty;
+ int16_t tz;
+ int16_t cx;
+ int16_t cy;
+ int16_t cz;
+ int16_t fov;
+ int16_t roll;
+} CINE_FRAME;
+
+typedef enum {
+ IF_ONE_SHOT = 0x0100,
+ IF_CODE_BITS = 0x3E00,
+ IF_REVERSE = 0x4000,
+ IF_INVISIBLE = 0x0100,
+ IF_KILLED = 0x8000,
+} ITEM_FLAG;
+
+typedef enum {
+ IS_INACTIVE = 0,
+ IS_ACTIVE = 1,
+ IS_DEACTIVATED = 2,
+ IS_INVISIBLE = 3,
+} ITEM_STATUS;
+
+typedef struct __unaligned {
+ uint16_t key[14]; // INPUT_ROLE_NUMBER_OF
+} CONTROL_LAYOUT;
+
+typedef enum {
+ IN_FORWARD = 0x00000001,
+ IN_BACK = 0x00000002,
+ IN_LEFT = 0x00000004,
+ IN_RIGHT = 0x00000008,
+ IN_JUMP = 0x00000010,
+ IN_DRAW = 0x00000020,
+ IN_ACTION = 0x00000040,
+ IN_SLOW = 0x00000080,
+ IN_OPTION = 0x00000100,
+ IN_LOOK = 0x00000200,
+ IN_STEP_LEFT = 0x00000400,
+ IN_STEP_RIGHT = 0x00000800,
+ IN_ROLL = 0x00001000,
+ IN_PAUSE = 0x00002000,
+ IN_RESERVED1 = 0x00004000,
+ IN_RESERVED2 = 0x00008000,
+ IN_DOZY_CHEAT = 0x00010000,
+ IN_STUFF_CHEAT = 0x00020000,
+ IN_DEBUG_INFO = 0x00040000,
+ IN_FLARE = 0x00080000,
+ IN_SELECT = 0x00100000,
+ IN_DESELECT = 0x00200000,
+ IN_SAVE = 0x00400000,
+ IN_LOAD = 0x00800000,
+} INPUT_STATE;
+
+typedef enum {
+ LA_RUN = 0,
+ LA_WALK_FORWARD = 1,
+ LA_WALK_STOP_RIGHT = 2,
+ LA_WALK_STOP_LEFT = 3,
+ LA_WALK_TO_RUN_RIGHT = 4,
+ LA_WALK_TO_RUN_LEFT = 5,
+ LA_RUN_START = 6,
+ LA_RUN_TO_WALK_RIGHT = 7,
+ LA_RUN_TO_STAND_LEFT = 8,
+ LA_RUN_TO_WALK_LEFT = 9,
+ LA_RUN_TO_STAND_RIGHT = 10,
+ LA_STAND_STILL = 11,
+ LA_TURN_RIGHT_SLOW = 12,
+ LA_TURN_LEFT_SLOW = 13,
+ LA_JUMP_FORWARD_LAND_START = 14,
+ LA_JUMP_FORWARD_LAND_END_UNUSED = 15,
+ LA_RUN_JUMP_RIGHT_START = 16,
+ LA_RUN_JUMP_RIGHT_CONTINUE = 17,
+ LA_RUN_JUMP_LEFT_START = 18,
+ LA_RUN_JUMP_LEFT_CONTINUE = 19,
+ LA_WALK_FORWARD_START = 20,
+ LA_WALK_FORWARD_START_CONTINUE = 21,
+ LA_JUMP_FORWARD_TO_FREEFALL = 22,
+ LA_FREEFALL = 23,
+ LA_FREEFALL_LAND = 24,
+ LA_FREEFALL_LAND_DEATH = 25,
+ LA_STAND_TO_JUMP_UP = 26,
+ LA_STAND_TO_JUMP_UP_CONTINUE = 27,
+ LA_JUMP_UP = 28,
+ LA_JUMP_UP_TO_HANG = 29,
+ LA_JUMP_UP_TO_FREEFALL = 30,
+ LA_JUMP_UP_LAND = 31,
+ LA_SMASH_JUMP = 32,
+ LA_SMASH_JUMP_CONTINUE = 33,
+ LA_FALL_START = 34,
+ LA_FALL = 35,
+ LA_FALL_TO_FREEFALL = 36,
+ LA_HANG_TO_FREEFALL = 37,
+ LA_WALK_BACK_END_RIGHT = 38,
+ LA_WALK_BACK_END_LEFT = 39,
+ LA_WALK_BACK = 40,
+ LA_WALK_BACK_START = 41,
+ LA_CLIMB_3CLICK = 42,
+ LA_CLIMB_3CLICK_END_TO_RUN = 43,
+ LA_TURN_RIGHT = 44,
+ LA_JUMP_FORWARD_TO_FREEFALL_2 = 45,
+ LA_REACH_TO_FREEFALL = 46,
+ LA_ROLL_ALTERNATE = 47,
+ LA_ROLL_END_ALTERNATE = 48,
+ LA_JUMP_FORWARD_END_TO_FREEFALL = 49,
+ LA_CLIMB_2CLICK = 50,
+ LA_CLIMB_2CLICK_END = 51,
+ LA_CLIMB_2CLICK_END_TO_RUN = 52,
+ LA_WALL_SMASH_LEFT = 53,
+ LA_WALL_SMASH_RIGHT = 54,
+ LA_RUN_UP_STEP_RIGHT = 55,
+ LA_RUN_UP_STEP_LEFT = 56,
+ LA_WALK_UP_STEP_RIGHT = 57,
+ LA_WALK_UP_STEP_LEFT = 58,
+ LA_WALK_DOWN_LEFT = 59,
+ LA_WALK_DOWN_RIGHT = 60,
+ LA_WALK_DOWN_BACK_LEFT = 61,
+ LA_WALK_DOWN_BACK_RIGHT = 62,
+ LA_WALL_SWITCH_DOWN = 63,
+ LA_WALL_SWITCH_UP = 64,
+ LA_SIDESTEP_LEFT = 65,
+ LA_SIDESTEP_LEFT_END = 66,
+ LA_SIDESTEP_RIGHT = 67,
+ LA_SIDESTEP_RIGHT_END = 68,
+ LA_ROTATE_LEFT = 69,
+ LA_SLIDE_FORWARD = 70,
+ LA_SLIDE_FORWARD_END = 71,
+ LA_SLIDE_FORWARD_STOP = 72,
+ LA_STAND_TO_JUMP = 73,
+ LA_JUMP_BACK_START = 74,
+ LA_JUMP_BACK = 75,
+ LA_JUMP_FORWARD_START = 76,
+ LA_JUMP_FORWARD = 77,
+ LA_JUMP_LEFT_START = 78,
+ LA_JUMP_LEFT = 79,
+ LA_JUMP_RIGHT_START = 80,
+ LA_JUMP_RIGHT = 81,
+ LA_LAND = 82,
+ LA_JUMP_BACK_TO_FREEFALL = 83,
+ LA_JUMP_LEFT_TO_FREEFALL = 84,
+ LA_JUMP_RIGHT_TO_FREEFALL = 85,
+ LA_UNDERWATER_SWIM_FORWARD = 86,
+ LA_UNDERWATER_SWIM_FORWARD_DRIFT = 87,
+ LA_SMALL_JUMP_BACK_START = 88,
+ LA_SMALL_JUMP_BACK = 89,
+ LA_SMALL_JUMP_BACK_END = 90,
+ LA_JUMP_UP_START = 91,
+ LA_LAND_TO_RUN = 92,
+ LA_FALL_BACK = 93,
+ LA_JUMP_FORWARD_TO_REACH = 94,
+ LA_REACH = 95,
+ LA_REACH_TO_HANG = 96,
+ LA_CLIMB_ON = 97,
+ LA_REACH_TO_FREEFALL_2 = 98,
+ LA_FALL_CROUCHING_LANDING = 99,
+ LA_JUMP_FORWARD_TO_REACH_LATE = 100,
+ LA_JUMP_FORWARD_START_TO_REACH_ALTERNATE = 101,
+ LA_CLIMB_ON_END = 102,
+ LA_STAND_IDLE = 103,
+ LA_SLIDE_BACKWARD_START = 104,
+ LA_SLIDE_BACKWARD = 105,
+ LA_SLIDE_BACKWARD_END = 106,
+ LA_UNDERWATER_SWIM_TO_IDLE = 107,
+ LA_UNDERWATER_IDLE = 108,
+ LA_UNDERWARER_IDLE_TO_SWIM = 109,
+ LA_ONWATER_IDLE = 110,
+ LA_ONWATER_TO_STAND_HIGH = 111,
+ LA_FREEFALL_TO_UNDERWATER = 112,
+ LA_ONWATER_DIVE_ALTERNATE = 113,
+ LA_UNDERWATER_TO_ONWATER = 114,
+ LA_ONWATER_SWIM_FORWARD_DIVE = 115,
+ LA_ONWATER_SWIM_FORWARD = 116,
+ LA_ONWATER_SWIM_FORWARD_TO_IDLE = 117,
+ LA_ONWATER_IDLE_TO_SWIM_FORWARD = 118,
+ LA_ONWATER_DIVE = 119,
+ LA_PUSHABLE_GRAB = 120,
+ LA_PUSHABLE_RELEASE = 121,
+ LA_PUSHABLE_PULL = 122,
+ LA_PUSHABLE_PUSH = 123,
+ LA_UNDERWATER_DEATH = 124,
+ LA_HIT_FRONT = 125,
+ LA_HIT_BACK = 126,
+ LA_HIT_LEFT = 127,
+ LA_HIT_RIGHT = 128,
+ LA_UNDERWATER_SWITCH = 129,
+ LA_UNDERWATER_PICKUP = 130,
+ LA_USE_KEY = 131,
+ LA_ONWATER_DEATH = 132,
+ LA_RUN_DEATH = 133,
+ LA_USE_PUZZLE = 134,
+ LA_PICKUP = 135,
+ LA_SHIMMY_LEFT = 136,
+ LA_SHIMMY_RIGHT = 137,
+ LA_STAND_DEATH = 138,
+ LA_BOULDER_DEATH = 139,
+ LA_ONWATER_IDLE_TO_SWIM_BACK = 140,
+ LA_ONWATER_SWIM_BACK = 141,
+ LA_ONWATER_SWIM_BACK_TO_IDLE = 142,
+ LA_ONWATER_SWIM_LEFT = 143,
+ LA_ONWATER_SWIM_RIGHT = 144,
+ LA_DEATH_JUMP = 145,
+ LA_ROLL_START = 146,
+ LA_ROLL_CONTINUE = 147,
+ LA_ROLL_END = 148,
+ LA_SPIKE_DEATH = 149,
+ LA_REACH_TO_THIN_LEDGE = 150,
+ LA_SWANDIVE_ROLL = 151,
+ LA_SWANDIVE_TO_UNDERWATER = 152,
+ LA_FREEFALL_SWANDIVE = 153,
+ LA_FREEFALL_SWANDIVE_TO_UNDERWATER = 154,
+ LA_SWANDIVE_DEATH = 155,
+ LA_SWANDIVE_LEFT = 156,
+ LA_SWANDIVE_RIGHT = 157,
+ LA_SWANDIVE_START = 158,
+ LA_CLIMB_ON_HANDSTAND = 159,
+ LA_STAND_TO_LADDER = 160,
+ LA_LADDER_UP = 161,
+ LA_LADDER_UP_STOP_RIGHT = 162,
+ LA_LADDER_UP_STOP_LEFT = 163,
+ LA_LADDER_IDLE = 164,
+ LA_LADDER_UP_START = 165,
+ LA_LADDER_DOWN_STOP_LEFT = 166,
+ LA_LADDER_DOWN_STOP_RIGHT = 167,
+ LA_LADDER_DOWN = 168,
+ LA_LADDER_DOWN_START = 169,
+ LA_LADDER_RIGHT = 170,
+ LA_LADDER_LEFT = 171,
+ LA_LADDER_HANG = 172,
+ LA_LADDER_HANG_TO_IDLE = 173,
+ LA_LADDER_CLIMB_ON = 174,
+ LA_UNKNOWN = 175,
+ LA_ONWATER_TO_WADE_SHALLOW = 176,
+ LA_WADE = 177,
+ LA_RUN_TO_WADE_LEFT = 178,
+ LA_RUN_TO_WADE_RIGHT = 179,
+ LA_WADE_TO_RUN_LEFT = 180,
+ LA_WADE_TO_RUN_RIGHT = 181,
+ LA_LADDER_BACKFLIP_START = 182,
+ LA_LADDER_BACKFLIP_CONTINUE = 183,
+ LA_WADE_TO_STAND_RIGHT = 184,
+ LA_WADE_TO_STAND_LEFT = 185,
+ LA_STAND_TO_WADE = 186,
+ LA_LADDER_UP_HANGING = 187,
+ LA_LADDER_DOWN_HANGING = 188,
+ LA_FLARE_THROW = 189,
+ LA_ONWATER_TO_WADE = 190,
+ LA_ONWATER_TO_STAND_MEDIUM = 191,
+ LA_UNDERWATER_TO_STAND = 192,
+ LA_ONWATER_TO_WADE_LOW = 193,
+ LA_LADDER_TO_HANG_DOWN = 194,
+ LA_SWITCH_SMALL_DOWN = 195,
+ LA_SWITCH_SMALL_UP = 196,
+ LA_BUTTON_PUSH = 197,
+ LA_UNDERWATER_SWIM_TO_STILL_HUDDLE = 198,
+ LA_UNDERWATER_SWIM_TO_STILL_SPRAWL = 199,
+ LA_UNDERWATER_SWIM_TO_STILL_MEDIUM = 200,
+ LA_LADDER_TO_HANG_RIGHT = 201,
+ LA_LADDER_TO_HANG_LEFT = 202,
+ LA_UNDERWATER_ROLL_START = 203,
+ LA_FLARE_PICKUP = 204,
+ LA_UNDERWATER_ROLL_END = 205,
+ LA_UNDERWATER_FLARE_PICKUP = 206,
+ LA_RUN_JUMP_ROLL_START = 207,
+ LA_SOMERSAULT = 208,
+ LA_RUN_JUMP_ROLL_END = 209,
+ LA_JUMP_FORWARD_ROLL_START = 210,
+ LA_JUMP_FORWARD_ROLL_END = 211,
+ LA_JUMP_BACK_ROLL_START = 212,
+ LA_JUMP_BACK_ROLL_END = 213,
+ LA_KICK = 214,
+ LA_ZIPLINE_GRAB = 215,
+ LA_ZIPLINE_RIDE = 216,
+ LA_ZIPLINE_FALL = 217,
+} LARA_ANIMATION;
+
+typedef enum {
+ LA_EXTRA_BREATH = 0,
+ LA_EXTRA_PLUNGER = 1,
+ LA_EXTRA_YETI_KILL = 2,
+ LA_EXTRA_SHARK_KILL = 3,
+ LA_EXTRA_AIRLOCK = 4,
+ LA_EXTRA_GONG_BONG = 5,
+ LA_EXTRA_TREX_KILL = 6,
+ LA_EXTRA_PULL_DAGGER = 7,
+ LA_EXTRA_START_ANIM = 8,
+ LA_EXTRA_START_HOUSE = 9,
+ LA_EXTRA_FINAL_ANIM = 10,
+} LARA_EXTRA_ANIMATION;
+
+typedef enum {
+ LS_WALK = 0,
+ LS_RUN = 1,
+ LS_STOP = 2,
+ LS_FORWARD_JUMP = 3,
+ LS_POSE = 4,
+ LS_FAST_BACK = 5,
+ LS_TURN_RIGHT = 6,
+ LS_TURN_LEFT = 7,
+ LS_DEATH = 8,
+ LS_FAST_FALL = 9,
+ LS_HANG = 10,
+ LS_REACH = 11,
+ LS_SPLAT = 12,
+ LS_TREAD = 13,
+ LS_LAND = 14,
+ LS_COMPRESS = 15,
+ LS_BACK = 16,
+ LS_SWIM = 17,
+ LS_GLIDE = 18,
+ LS_NULL = 19,
+ LS_FAST_TURN = 20,
+ LS_STEP_RIGHT = 21,
+ LS_STEP_LEFT = 22,
+ LS_HIT = 23,
+ LS_SLIDE = 24,
+ LS_BACK_JUMP = 25,
+ LS_RIGHT_JUMP = 26,
+ LS_LEFT_JUMP = 27,
+ LS_UP_JUMP = 28,
+ LS_FALL_BACK = 29,
+ LS_HANG_LEFT = 30,
+ LS_HANG_RIGHT = 31,
+ LS_SLIDE_BACK = 32,
+ LS_SURF_TREAD = 33,
+ LS_SURF_SWIM = 34,
+ LS_DIVE = 35,
+ LS_PUSH_BLOCK = 36,
+ LS_PULL_BLOCK = 37,
+ LS_PP_READY = 38,
+ LS_PICKUP = 39,
+ LS_SWITCH_ON = 40,
+ LS_SWITCH_OFF = 41,
+ LS_USE_KEY = 42,
+ LS_USE_PUZZLE = 43,
+ LS_UW_DEATH = 44,
+ LS_ROLL = 45,
+ LS_SPECIAL = 46,
+ LS_SURF_BACK = 47,
+ LS_SURF_LEFT = 48,
+ LS_SURF_RIGHT = 49,
+ LS_USE_MIDAS = 50,
+ LS_DIE_MIDAS = 51,
+ LS_SWAN_DIVE = 52,
+ LS_FAST_DIVE = 53,
+ LS_GYMNAST = 54,
+ LS_WATER_OUT = 55,
+ LS_CLIMB_STANCE = 56,
+ LS_CLIMBING = 57,
+ LS_CLIMB_LEFT = 58,
+ LS_CLIMB_END = 59,
+ LS_CLIMB_RIGHT = 60,
+ LS_CLIMB_DOWN = 61,
+ LS_LARA_TEST1 = 62,
+ LS_LARA_TEST2 = 63,
+ LS_LARA_TEST3 = 64,
+ LS_WADE = 65,
+ LS_WATER_ROLL = 66,
+ LS_FLARE_PICKUP = 67,
+ LS_TWIST = 68,
+ LS_KICK = 69,
+ LS_ZIPLINE = 70,
+ LS_DUCK = 71,
+ LS_DUCK_ROLL = 72,
+ LS_DASH = 73,
+ LS_DASH_DIVE = 74,
+ LS_MONKEY_SWING = 75,
+ LS_MONKEYF = 76,
+ LS_LAST = 77,
+} LARA_STATE;
+
+typedef enum {
+ LGS_ARMLESS = 0,
+ LGS_HANDS_BUSY = 1,
+ LGS_DRAW = 2,
+ LGS_UNDRAW = 3,
+ LGS_READY = 4,
+ LGS_SPECIAL = 5,
+} LARA_GUN_STATE;
+
+typedef enum {
+ LGT_UNARMED = 0,
+ LGT_PISTOLS = 1,
+ LGT_MAGNUMS = 2,
+ LGT_UZIS = 3,
+ LGT_SHOTGUN = 4,
+ LGT_M16 = 5,
+ LGT_GRENADE = 6,
+ LGT_HARPOON = 7,
+ LGT_FLARE = 8,
+ LGT_SKIDOO = 9,
+ NUM_WEAPONS = 10,
+} LARA_GUN_TYPE;
+
+typedef enum {
+ LM_HIPS = 0,
+ LM_THIGH_L = 1,
+ LM_CALF_L = 2,
+ LM_FOOT_L = 3,
+ LM_THIGH_R = 4,
+ LM_CALF_R = 5,
+ LM_FOOT_R = 6,
+ LM_TORSO = 7,
+ LM_UARM_R = 8,
+ LM_LARM_R = 9,
+ LM_HAND_R = 10,
+ LM_UARM_L = 11,
+ LM_LARM_L = 12,
+ LM_HAND_L = 13,
+ LM_HEAD = 14,
+ LM_NUMBER_OF = 15,
+} LARA_MESH;
+
+typedef enum {
+ NO_OBJECT = -1,
+ O_LARA = 0,
+ O_LARA_PISTOLS = 1,
+ O_LARA_HAIR = 2,
+ O_LARA_SHOTGUN = 3,
+ O_LARA_MAGNUMS = 4,
+ O_LARA_UZIS = 5,
+ O_LARA_M16 = 6,
+ O_LARA_GRENADE = 7,
+ O_LARA_HARPOON = 8,
+ O_LARA_FLARE = 9,
+ O_LARA_SKIDOO = 10,
+ O_LARA_BOAT = 11,
+ O_LARA_EXTRA = 12,
+ O_SKIDOO_FAST = 13,
+ O_BOAT = 14,
+ O_DOG = 15,
+ O_CULT_1 = 16,
+ O_CULT_1A = 17,
+ O_CULT_1B = 18,
+ O_CULT_2 = 19,
+ O_CULT_3 = 20,
+ O_MOUSE = 21,
+ O_DRAGON_FRONT = 22,
+ O_DRAGON_BACK = 23,
+ O_GONDOLA = 24,
+ O_SHARK = 25,
+ O_EEL = 26,
+ O_BIG_EEL = 27,
+ O_BARRACUDA = 28,
+ O_DIVER = 29,
+ O_WORKER_1 = 30,
+ O_WORKER_2 = 31,
+ O_WORKER_3 = 32,
+ O_WORKER_4 = 33,
+ O_WORKER_5 = 34,
+ O_JELLY = 35,
+ O_SPIDER = 36,
+ O_BIG_SPIDER = 37,
+ O_CROW = 38,
+ O_TIGER = 39,
+ O_BARTOLI = 40,
+ O_XIAN_SPEARMAN = 41,
+ O_XIAN_SPEARMAN_STATUE = 42,
+ O_XIAN_KNIGHT = 43,
+ O_XIAN_KNIGHT_STATUE = 44,
+ O_YETI = 45,
+ O_BIRD_GUARDIAN = 46,
+ O_EAGLE = 47,
+ O_BANDIT_1 = 48,
+ O_BANDIT_2 = 49,
+ O_BANDIT_2B = 50,
+ O_SKIDOO_ARMED = 51,
+ O_SKIDOO_DRIVER = 52,
+ O_MONK_1 = 53,
+ O_MONK_2 = 54,
+ O_FALLING_BLOCK_1 = 55,
+ O_FALLING_BLOCK_2 = 56,
+ O_FALLING_BLOCK_3 = 57,
+ O_PENDULUM_1 = 58,
+ O_SPIKES = 59,
+ O_ROLLING_BALL_1 = 60,
+ O_DART = 61,
+ O_DART_EMITTER = 62,
+ O_DRAWBRIDGE = 63,
+ O_TEETH_TRAP = 64,
+ O_LIFT = 65,
+ O_GENERAL = 66,
+ O_MOVABLE_BLOCK_1 = 67,
+ O_MOVABLE_BLOCK_2 = 68,
+ O_MOVABLE_BLOCK_3 = 69,
+ O_MOVABLE_BLOCK_4 = 70,
+ O_BIG_BOWL = 71,
+ O_WINDOW_1 = 72,
+ O_WINDOW_2 = 73,
+ O_WINDOW_3 = 74,
+ O_WINDOW_4 = 75,
+ O_PROPELLER_1 = 76,
+ O_POWER_SAW = 77,
+ O_HOOK = 78,
+ O_FALLING_CEILING = 79,
+ O_SPINNING_BLADE = 80,
+ O_BLADE = 81,
+ O_KILLER_STATUE = 82,
+ O_ROLLING_BALL_2 = 83,
+ O_ICICLE = 84,
+ O_SPIKE_WALL = 85,
+ O_SPRINGBOARD = 86,
+ O_CEILING_SPIKES = 87,
+ O_BELL = 88,
+ O_WATER_SPRITE = 89,
+ O_SNOW_SPRITE = 90,
+ O_SKIDOO_TRACK = 91,
+ O_SWITCH_TYPE_AIRLOCK = 92,
+ O_SWITCH_TYPE_SMALL = 93,
+ O_PROPELLER_2 = 94,
+ O_PROPELLER_3 = 95,
+ O_PENDULUM_2 = 96,
+ O_MESH_SWAP_1 = 97,
+ O_MESH_SWAP_2 = 98,
+ O_LARA_SWAP = 99,
+ O_TEXT_BOX = 100,
+ O_ROLLING_BALL_3 = 101,
+ O_ZIPLINE_HANDLE = 102,
+ O_SWITCH_TYPE_BUTTON = 103,
+ O_SWITCH_TYPE_NORMAL = 104,
+ O_SWITCH_TYPE_UW = 105,
+ O_DOOR_TYPE_1 = 106,
+ O_DOOR_TYPE_2 = 107,
+ O_DOOR_TYPE_3 = 108,
+ O_DOOR_TYPE_4 = 109,
+ O_DOOR_TYPE_5 = 110,
+ O_DOOR_TYPE_6 = 111,
+ O_DOOR_TYPE_7 = 112,
+ O_DOOR_TYPE_8 = 113,
+ O_TRAPDOOR_TYPE_1 = 114,
+ O_TRAPDOOR_TYPE_2 = 115,
+ O_TRAPDOOR_TYPE_3 = 116,
+ O_BRIDGE_FLAT = 117,
+ O_BRIDGE_TILT_1 = 118,
+ O_BRIDGE_TILT_2 = 119,
+ O_PASSPORT_OPTION = 120,
+ O_COMPASS_OPTION = 121,
+ O_PHOTO_OPTION = 122,
+ O_PLAYER_1 = 123,
+ O_PLAYER_2 = 124,
+ O_PLAYER_3 = 125,
+ O_PLAYER_4 = 126,
+ O_PLAYER_5 = 127,
+ O_PLAYER_6 = 128,
+ O_PLAYER_7 = 129,
+ O_PLAYER_8 = 130,
+ O_PLAYER_9 = 131,
+ O_PLAYER_10 = 132,
+ O_PASSPORT_CLOSED = 133,
+ O_COMPASS_ITEM = 134,
+ O_PISTOL_ITEM = 135,
+ O_SHOTGUN_ITEM = 136,
+ O_MAGNUM_ITEM = 137,
+ O_UZI_ITEM = 138,
+ O_HARPOON_ITEM = 139,
+ O_M16_ITEM = 140,
+ O_GRENADE_ITEM = 141,
+ O_PISTOL_AMMO_ITEM = 142,
+ O_SHOTGUN_AMMO_ITEM = 143,
+ O_MAGNUM_AMMO_ITEM = 144,
+ O_UZI_AMMO_ITEM = 145,
+ O_HARPOON_AMMO_ITEM = 146,
+ O_M16_AMMO_ITEM = 147,
+ O_GRENADE_AMMO_ITEM = 148,
+ O_SMALL_MEDIPACK_ITEM = 149,
+ O_LARGE_MEDIPACK_ITEM = 150,
+ O_FLARES_ITEM = 151,
+ O_FLARE_ITEM = 152,
+ O_DETAIL_OPTION = 153,
+ O_SOUND_OPTION = 154,
+ O_CONTROL_OPTION = 155,
+ O_GAMMA_OPTION = 156,
+ O_PISTOL_OPTION = 157,
+ O_SHOTGUN_OPTION = 158,
+ O_MAGNUM_OPTION = 159,
+ O_UZI_OPTION = 160,
+ O_HARPOON_OPTION = 161,
+ O_M16_OPTION = 162,
+ O_GRENADE_OPTION = 163,
+ O_PISTOL_AMMO_OPTION = 164,
+ O_SHOTGUN_AMMO_OPTION = 165,
+ O_MAGNUM_AMMO_OPTION = 166,
+ O_UZI_AMMO_OPTION = 167,
+ O_HARPOON_AMMO_OPTION = 168,
+ O_M16_AMMO_OPTION = 169,
+ O_GRENADE_AMMO_OPTION = 170,
+ O_SMALL_MEDIPACK_OPTION = 171,
+ O_LARGE_MEDIPACK_OPTION = 172,
+ O_FLARES_OPTION = 173,
+ O_PUZZLE_ITEM_1 = 174,
+ O_PUZZLE_ITEM_2 = 175,
+ O_PUZZLE_ITEM_3 = 176,
+ O_PUZZLE_ITEM_4 = 177,
+ O_PUZZLE_OPTION_1 = 178,
+ O_PUZZLE_OPTION_2 = 179,
+ O_PUZZLE_OPTION_3 = 180,
+ O_PUZZLE_OPTION_4 = 181,
+ O_PUZZLE_HOLE_1 = 182,
+ O_PUZZLE_HOLE_2 = 183,
+ O_PUZZLE_HOLE_3 = 184,
+ O_PUZZLE_HOLE_4 = 185,
+ O_PUZZLE_DONE_1 = 186,
+ O_PUZZLE_DONE_2 = 187,
+ O_PUZZLE_DONE_3 = 188,
+ O_PUZZLE_DONE_4 = 189,
+ O_SECRET_1 = 190,
+ O_SECRET_2 = 191,
+ O_SECRET_3 = 192,
+ O_KEY_ITEM_1 = 193,
+ O_KEY_ITEM_2 = 194,
+ O_KEY_ITEM_3 = 195,
+ O_KEY_ITEM_4 = 196,
+ O_KEY_OPTION_1 = 197,
+ O_KEY_OPTION_2 = 198,
+ O_KEY_OPTION_3 = 199,
+ O_KEY_OPTION_4 = 200,
+ O_KEY_HOLE_1 = 201,
+ O_KEY_HOLE_2 = 202,
+ O_KEY_HOLE_3 = 203,
+ O_KEY_HOLE_4 = 204,
+ O_PICKUP_ITEM_1 = 205,
+ O_PICKUP_ITEM_2 = 206,
+ O_PICKUP_OPTION_1 = 207,
+ O_PICKUP_OPTION_2 = 208,
+ O_SPHERE_OF_DOOM_1 = 209,
+ O_SPHERE_OF_DOOM_2 = 210,
+ O_SPHERE_OF_DOOM_3 = 211,
+ O_ALARM_SOUND = 212,
+ O_BIRD_TWEETER_1 = 213,
+ O_DINO = 214,
+ O_BIRD_TWEETER_2 = 215,
+ O_CLOCK_CHIMES = 216,
+ O_DRAGON_BONES_1 = 217,
+ O_DRAGON_BONES_2 = 218,
+ O_DRAGON_BONES_3 = 219,
+ O_HOT_LIQUID = 220,
+ O_BOAT_BITS = 221,
+ O_MINE = 222,
+ O_INV_BACKGROUND = 223,
+ O_FX_RESERVED = 224,
+ O_GONG_BONGER = 225,
+ O_DETONATOR_1 = 226,
+ O_DETONATOR_2 = 227,
+ O_COPTER = 228,
+ O_EXPLOSION = 229,
+ O_SPLASH = 230,
+ O_BUBBLE = 231,
+ O_BUBBLE_EMITTER = 232,
+ O_BLOOD = 233,
+ O_DART_EFFECT = 234,
+ O_FLARE_FIRE = 235,
+ O_GLOW = 236,
+ O_GLOW_RESERVED = 237,
+ O_RICOCHET = 238,
+ O_TWINKLE = 239,
+ O_GUN_FLASH = 240,
+ O_M16_FLASH = 241,
+ O_BODY_PART = 242,
+ O_CAMERA_TARGET = 243,
+ O_WATERFALL = 244,
+ O_MISSILE_HARPOON = 245,
+ O_MISSILE_FLAME = 246,
+ O_MISSILE_KNIFE = 247,
+ O_GRENADE = 248,
+ O_HARPOON_BOLT = 249,
+ O_EMBER = 250,
+ O_EMBER_EMITTER = 251,
+ O_FLAME = 252,
+ O_FLAME_EMITTER = 253,
+ O_SKYBOX = 254,
+ O_ALPHABET = 255,
+ O_DYING_MONK = 256,
+ O_DING_DONG = 257,
+ O_LARA_ALARM = 258,
+ O_MINI_COPTER = 259,
+ O_WINSTON = 260,
+ O_ASSAULT_DIGITS = 261,
+ O_FINAL_LEVEL_COUNTER = 262,
+ O_CUT_SHOTGUN = 263,
+ O_EARTHQUAKE = 264,
+ O_NUMBER_OF = 265,
+} GAME_OBJECT_ID;
+
+typedef enum {
+ MX_INACTIVE = -1,
+ MX_UNUSED_0 = 0, // 2.mp3
+ MX_UNUSED_1 = 1, // 2.mp3
+ MX_CUTSCENE_THE_GREAT_WALL = 2, // 2.mp3
+ MX_UNUSED_2 = 3, // 2.mp3
+ MX_CUTSCENE_OPERA_HOUSE = 4, // 3.mp3
+ MX_CUTSCENE_BROTHER_CHAN = 5, // 4.mp3
+ MX_GYM_HINT_1 = 6, // 5.mp3
+ MX_GYM_HINT_2 = 7, // 6.mp3
+ MX_GYM_HINT_3 = 8, // 7.mp3
+ MX_GYM_HINT_4 = 9, // 8.mp3
+ MX_GYM_HINT_5 = 10, // 9.mp3
+ MX_GYM_HINT_6 = 11, // 10.mp3
+ MX_GYM_HINT_7 = 12, // 11.mp3
+ MX_GYM_HINT_8 = 13, // 12.mp3
+ MX_GYM_HINT_9 = 14, // 13.mp3
+ MX_GYM_HINT_10 = 15, // 14.mp3
+ MX_GYM_HINT_11 = 16, // 15.mp3
+ MX_GYM_HINT_12 = 17, // 16.mp3
+ MX_GYM_HINT_13 = 18, // 17.mp3
+ MX_GYM_HINT_14 = 19, // 18.mp3
+ MX_UNUSED_3 = 20, // 18.mp3
+ MX_UNUSED_4 = 21, // 18.mp3
+ MX_GYM_HINT_15 = 22, // 19.mp3
+ MX_GYM_HINT_16 = 23, // 20.mp3
+ MX_GYM_HINT_17 = 24, // 21.mp3
+ MX_GYM_HINT_18 = 25, // 22.mp3
+ MX_UNUSED_5 = 26, // 23.mp3
+ MX_CUTSCENE_BATH = 27, // 23.mp3
+ MX_DAGGER_PULL = 28, // 24.mp3
+ MX_GYM_HINT_20 = 29, // 25.mp3
+ MX_CUTSCENE_XIAN = 30, // 26.mp3
+ MX_CAVES_AMBIENCE = 31, // 27.mp3
+ MX_SEWERS_AMBIENCE = 32, // 28.mp3
+ MX_WINDY_AMBIENCE = 33, // 29.mp3
+ MX_HEARTBEAT_AMBIENCE = 34, // 30.mp3
+ MX_SURPRISE_1 = 35, // 31.mp3
+ MX_SURPRISE_2 = 36, // 32.mp3
+ MX_SURPRISE_3 = 37, // 33.mp3
+ MX_OOH_AAH_1 = 38, // 34.mp3
+ MX_OOH_AAH_2 = 39, // 35.mp3
+ MX_VENICE_VIOLINS = 40, // 36.mp3
+ MX_END_OF_LEVEL = 41, // 37.mp3
+ MX_SPOOKY_1 = 42, // 38.mp3
+ MX_SPOOKY_2 = 43, // 39.mp3
+ MX_SPOOKY_3 = 44, // 40.mp3
+ MX_HARP_THEME = 45, // 41.mp3
+ MX_MYSTERY_1 = 46, // 42.mp3
+ MX_SECRET = 47, // 43.mp3
+ MX_AMBUSH_1 = 48, // 44.mp3
+ MX_AMBUSH_2 = 49, // 45.mp3
+ MX_AMBUSH_3 = 50, // 46.mp3
+ MX_AMBUSH_4 = 51, // 47.mp3
+ MX_SKIDOO_THEME = 52, // 48.mp3
+ MX_BATTLE_THEME = 53, // 49.mp3
+ MX_MYSTERY_2 = 54, // 50.mp3
+ MX_MYSTERY_3 = 55, // 51.mp3
+ MX_MYSTERY_4 = 56, // 52.mp3
+ MX_MYSTERY_5 = 57, // 53.mp3
+ MX_RIG_AMBIENCE = 58, // 54.mp3
+ MX_TOMB_AMBIENCE = 59, // 55.mp3
+ MX_OOH_AAH_3 = 60, // 56.mp3
+ MX_REVEAL_1 = 61, // 57.mp3
+ MX_CUTSCENE_RIG = 62, // 58.mp3
+ MX_REVEAL_2 = 63, // 59.mp3
+ MX_TITLE_THEME = 64, // 60.mp3
+ MX_UNUSED_6 = 65, // 61.mp3
+} MUSIC_TRACK_ID;
+
+typedef enum {
+ COLL_NONE = 0x00,
+ COLL_FRONT = 0x01,
+ COLL_LEFT = 0x02,
+ COLL_RIGHT = 0x04,
+ COLL_TOP = 0x08,
+ COLL_TOP_FRONT = 0x10,
+ COLL_CLAMP = 0x20,
+} COLL_TYPE;
+
+typedef enum {
+ FT_FLOOR = 0,
+ FT_DOOR = 1,
+ FT_TILT = 2,
+ FT_ROOF = 3,
+ FT_TRIGGER = 4,
+ FT_LAVA = 5,
+ FT_CLIMB = 6,
+} FLOOR_TYPE;
+
+typedef enum {
+ HT_WALL = 0,
+ HT_SMALL_SLOPE = 1,
+ HT_BIG_SLOPE = 2,
+} HEIGHT_TYPE;
+
+typedef enum {
+ DIR_UNKNOWN = -1,
+ DIR_NORTH = 0,
+ DIR_EAST = 1,
+ DIR_SOUTH = 2,
+ DIR_WEST = 3,
+} DIRECTION;
+
+typedef struct __unaligned {
+ uint16_t x;
+ uint16_t y;
+} XGEN_X;
+
+typedef struct __unaligned {
+ int32_t x1;
+ int32_t x2;
+} XBUF_X;
+
+typedef struct __unaligned {
+ int16_t x;
+ int16_t y;
+ int16_t g;
+} XGEN_XG;
+
+typedef struct __unaligned {
+ int32_t x1;
+ int32_t g1;
+ int32_t x2;
+ int32_t g2;
+} XBUF_XG;
+
+typedef struct __unaligned {
+ uint16_t x;
+ uint16_t y;
+ uint16_t g;
+ uint16_t u;
+ uint16_t v;
+} XGEN_XGUV;
+
+typedef struct __unaligned {
+ int32_t x1;
+ int32_t g1;
+ int32_t u1;
+ int32_t v1;
+ int32_t x2;
+ int32_t g2;
+ int32_t u2;
+ int32_t v2;
+} XBUF_XGUV;
+
+typedef struct __unaligned {
+ uint16_t x;
+ uint16_t y;
+ uint16_t g;
+ float rhw;
+ float u;
+ float v;
+} XGEN_XGUVP;
+
+typedef struct __unaligned {
+ int32_t x1;
+ int32_t g1;
+ float u1;
+ float v1;
+ float rhw1;
+ int32_t x2;
+ int32_t g2;
+ float u2;
+ float v2;
+ float rhw2;
+} XBUF_XGUVP;
+
+typedef struct __unaligned {
+ uint8_t manufacturer;
+ uint8_t version;
+ uint8_t rle;
+ uint8_t bpp;
+ uint16_t x_min;
+ uint16_t y_min;
+ uint16_t x_max;
+ uint16_t y_max;
+ uint16_t h_dpi;
+ uint16_t v_dpi;
+ RGB_888 palette[16];
+ uint8_t reserved;
+ uint8_t planes;
+ uint16_t bytes_per_line;
+ uint16_t pal_pnterpret;
+ uint16_t h_res;
+ uint16_t v_res;
+ uint8_t reserved_data[54];
+} PCX_HEADER;
+
+typedef struct __unaligned {
+ uint8_t id_length;
+ uint8_t color_map_type;
+ uint8_t data_type_code;
+ uint16_t color_map_origin;
+ uint16_t color_map_length;
+ uint8_t color_map_depth;
+ uint16_t x_origin;
+ uint16_t y_origin;
+ uint16_t width;
+ uint16_t height;
+ uint8_t bpp;
+ uint8_t image_descriptor;
+} TGA_HEADER;
+
+typedef struct __unaligned {
+ int16_t number;
+ int16_t volume;
+ int16_t randomness;
+ int16_t flags;
+} SAMPLE_INFO;
+
+/*
+typedef struct __unaligned {
+ int32_t volume;
+ int32_t pan;
+ int32_t sample_num;
+ int32_t pitch;
+} SOUND_SLOT;
+*/
+
+typedef enum {
+ SF_FLIP = 0x40,
+ SF_UNFLIP = 0x80,
+} SOUND_FLAG;
+
+typedef enum {
+ GBUF_TEMP_ALLOC = 0,
+ GBUF_TEXTURE_PAGES = 1,
+ GBUF_MESH_POINTERS = 2,
+ GBUF_MESHES = 3,
+ GBUF_ANIMS = 4,
+ GBUF_STRUCTS = 5,
+ GBUF_ANIM_RANGES = 6,
+ GBUF_ANIM_COMMANDS = 7,
+ GBUF_ANIM_BONES = 8,
+ GBUF_ANIM_FRAMES = 9,
+ GBUF_ROOM_TEXTURES = 10,
+ GBUF_ROOMS = 11,
+ GBUF_ROOM_MESH = 12,
+ GBUF_ROOM_PORTALS = 13,
+ GBUF_ROOM_FLOOR = 14,
+ GBUF_ROOM_LIGHTS = 15,
+ GBUF_ROOM_STATIC_MESHES = 16,
+ GBUF_FLOOR_DATA = 17,
+ GBUF_ITEMS = 18,
+ GBUF_CAMERAS = 19,
+ GBUF_SOUND_FX = 20,
+ GBUF_BOXES = 21,
+ GBUF_OVERLAPS = 22,
+ GBUF_GROUND_ZONE = 23,
+ GBUF_FLY_ZONE = 24,
+ GBUF_ANIMATING_TEXTURE_RANGES = 25,
+ GBUF_CINEMATIC_FRAMES = 26,
+ GBUF_LOAD_DEMO_BUFFER = 27,
+ GBUF_SAVE_DEMO_BUFFER = 28,
+ GBUF_CINEMATIC_EFFECTS = 29,
+ GBUF_MUMMY_HEAD_TURN = 30,
+ GBUF_EXTRA_DOOR_STUFF = 31,
+ GBUF_EFFECTS_ARRAY = 32,
+ GBUF_CREATURE_DATA = 33,
+ GBUF_CREATURE_LOT = 34,
+ GBUF_SAMPLE_INFOS = 35,
+ GBUF_SAMPLES = 36,
+ GBUF_SAMPLE_OFFSETS = 37,
+ GBUF_ROLLING_BALL_STUFF = 38,
+ GBUF_SKIDOO_STUFF = 39,
+ GBUF_LOAD_PICTURE_BUFFER = 40,
+ GBUF_FMV_BUFFERS = 41,
+ GBUF_POLYGON_BUFFERS = 42,
+ GBUF_ORDER_TABLES = 43,
+ GBUF_CLUTS = 44,
+ GBUF_TEXTURE_INFOS = 45,
+ GBUF_SPRITE_INFOS = 46,
+ GBUF_NUM_MALLOC_TYPES = 47,
+} GAME_BUFFER;
+
+typedef enum {
+ CLRB_PRIMARY_BUFFER = 0x0001,
+ CLRB_BACK_BUFFER = 0x0002,
+ CLRB_THIRD_BUFFER = 0x0004,
+ CLRB_Z_BUFFER = 0x0008,
+ CLRB_RENDER_BUFFER = 0x0010,
+ CLRB_PICTURE_BUFFER = 0x0020,
+ CLRB_WINDOWED_PRIMARY_BUFFER = 0x0040,
+ CLRB_RESERVED = 0x0080,
+ CLRB_PHDWINSIZE = 0x0100,
+} CLEAR_BUFFER_FLAGS;
+
+typedef enum {
+ AC_NULL = 0,
+ AC_MOVE_ORIGIN = 1,
+ AC_JUMP_VELOCITY = 2,
+ AC_ATTACK_READY = 3,
+ AC_DEACTIVATE = 4,
+ AC_SOUND_FX = 5,
+ AC_EFFECT = 6,
+} ANIM_COMMAND;
+
+typedef enum {
+ ACE_ALL = 0,
+ ACE_LAND = 1,
+ ACE_WATER = 2,
+} ANIM_COMMAND_ENVIRONMENT;
+
+typedef struct __unaligned {
+ DDPIXELFORMAT pixel_fmt;
+ COLOR_BIT_MASKS color_bit_masks;
+ DWORD bpp;
+} TEXTURE_FORMAT;
+
+typedef struct __unaligned {
+ int32_t boat_turn;
+ int32_t left_fallspeed;
+ int32_t right_fallspeed;
+ int16_t tilt_angle;
+ int16_t extra_rotation;
+ int32_t water;
+ int32_t pitch;
+} BOAT_INFO;
+
+typedef struct __unaligned {
+ int16_t track_mesh;
+ int32_t skidoo_turn;
+ int32_t left_fallspeed;
+ int32_t right_fallspeed;
+ int16_t momentum_angle;
+ int16_t extra_rotation;
+ int32_t pitch;
+} SKIDOO_INFO;
+
+typedef struct __unaligned {
+ int32_t start_height;
+ int32_t wait_time;
+} LIFT_INFO;
+
+typedef struct __unaligned {
+ struct {
+ XYZ_16 min;
+ XYZ_16 max;
+ } shift, rot;
+} OBJECT_BOUNDS;
+
+typedef struct __unaligned {
+ int32_t xv;
+ int32_t yv;
+ int32_t zv;
+} PORTAL_VBUF;
+
+typedef struct __unaligned {
+ BOUNDS_16 bounds;
+ XYZ_16 offset;
+ int16_t mesh_rots[];
+} FRAME_INFO;
+
+typedef struct __unaligned {
+ XYZ_16 pos;
+ int16_t radius;
+ int16_t poly_count;
+ int16_t vertex_count;
+ XYZ_16 vertex[32];
+} SHADOW_INFO;
+
+typedef struct __unaligned {
+ int32_t table[32]; // WIBBLE_SIZE
+} ROOM_LIGHT_TABLE;
+
+typedef struct __unaligned {
+ XYZ_16 pos;
+ int16_t light_base;
+ uint8_t light_table_value;
+ uint8_t flags;
+ int16_t light_adder;
+} ROOM_VERTEX;
+
+typedef struct __unaligned {
+ XYZ_32 pos;
+ XYZ_16 rot;
+} HAIR_SEGMENT;
+
+typedef enum {
+ TO_OBJECT = 0,
+ TO_CAMERA = 1,
+ TO_SINK = 2,
+ TO_FLIP_MAP = 3,
+ TO_FLIP_ON = 4,
+ TO_FLIP_OFF = 5,
+ TO_TARGET = 6,
+ TO_FINISH = 7,
+ TO_CD = 8,
+ TO_FLIP_EFFECT = 9,
+ TO_SECRET = 10,
+ TO_BODY_BAG = 11,
+} TRIGGER_OBJECT;
+
+typedef enum {
+ TT_TRIGGER = 0,
+ TT_PAD = 1,
+ TT_SWITCH = 2,
+ TT_KEY = 3,
+ TT_PICKUP = 4,
+ TT_HEAVY = 5,
+ TT_ANTIPAD = 6,
+ TT_COMBAT = 7,
+ TT_DUMMY = 8,
+ TT_ANTITRIGGER = 9,
+} TRIGGER_TYPE;
+
+typedef enum {
+ GF_S_PC_DETAIL_LEVELS = 0,
+ GF_S_PC_DEMO_MODE = 1,
+ GF_S_PC_SOUND = 2,
+ GF_S_PC_CONTROLS = 3,
+ GF_S_PC_GAMMA = 4,
+ GF_S_PC_SET_VOLUMES = 5,
+ GF_S_PC_USER_KEYS = 6,
+ GF_S_PC_SAVE_FILE_WARNING = 7,
+ GF_S_PC_TRY_AGAIN_QUESTION = 8,
+ GF_S_PC_YES = 9,
+ GF_S_PC_NO = 10,
+ GF_S_PC_SAVE_COMPLETE = 11,
+ GF_S_PC_NO_SAVE_GAMES = 12,
+ GF_S_PC_NONE_VALID = 13,
+ GF_S_PC_SAVE_GAME_QUESTION = 14,
+ GF_S_PC_EMPTY_SLOT = 15,
+ GF_S_PC_OFF = 16,
+ GF_S_PC_ON = 17,
+ GF_S_PC_SETUP_SOUND_CARD = 18,
+ GF_S_PC_DEFAULT_KEYS = 19,
+ GF_S_PC_DOZY = 20,
+ GF_S_PC_NUMBER_OF = 41,
+} GF_PC_STRING;
+
+typedef enum {
+ GF_S_GAME_HEADING_INVENTORY = 0,
+ GF_S_GAME_HEADING_OPTION = 1,
+ GF_S_GAME_HEADING_ITEMS = 2,
+ GF_S_GAME_HEADING_GAME_OVER = 3,
+ GF_S_GAME_PASSPORT_LOAD_GAME = 4,
+ GF_S_GAME_PASSPORT_SAVE_GAME = 5,
+ GF_S_GAME_PASSPORT_NEW_GAME = 6,
+ GF_S_GAME_PASSPORT_RESTART_LEVEL = 7,
+ GF_S_GAME_PASSPORT_EXIT_TO_TITLE = 8,
+ GF_S_GAME_PASSPORT_EXIT_DEMO = 9,
+ GF_S_GAME_PASSPORT_EXIT_GAME = 10,
+ GF_S_GAME_PASSPORT_SELECT_LEVEL = 11,
+ GF_S_GAME_PASSPORT_SAVE_POSITION = 12,
+ GF_S_GAME_DETAIL_SELECT_DETAIL = 13,
+ GF_S_GAME_DETAIL_HIGH = 14,
+ GF_S_GAME_DETAIL_MEDIUM = 15,
+ GF_S_GAME_DETAIL_LOW = 16,
+ GF_S_GAME_KEYMAP_WALK = 17,
+ GF_S_GAME_KEYMAP_ROLL = 18,
+ GF_S_GAME_KEYMAP_RUN = 19,
+ GF_S_GAME_KEYMAP_LEFT = 20,
+ GF_S_GAME_KEYMAP_RIGHT = 21,
+ GF_S_GAME_KEYMAP_BACK = 22,
+ GF_S_GAME_KEYMAP_STEP_LEFT = 23,
+ GF_S_GAME_KEYMAP_RESERVED_1 = 24,
+ GF_S_GAME_KEYMAP_STEP_RIGHT = 25,
+ GF_S_GAME_KEYMAP_RESERVED_2 = 26,
+ GF_S_GAME_KEYMAP_LOOK = 27,
+ GF_S_GAME_KEYMAP_JUMP = 28,
+ GF_S_GAME_KEYMAP_ACTION = 29,
+ GF_S_GAME_KEYMAP_DRAW_WEAPON = 30,
+ GF_S_GAME_KEYMAP_RESERVED_3 = 31,
+ GF_S_GAME_KEYMAP_INVENTORY = 32,
+ GF_S_GAME_KEYMAP_FLARE = 33,
+ GF_S_GAME_KEYMAP_STEP = 34,
+ GF_S_GAME_INV_ITEM_STATISTICS = 35,
+ GF_S_GAME_INV_ITEM_PISTOLS = 36,
+ GF_S_GAME_INV_ITEM_SHOTGUN = 37,
+ GF_S_GAME_INV_ITEM_MAGNUMS = 38,
+ GF_S_GAME_INV_ITEM_UZIS = 39,
+ GF_S_GAME_INV_ITEM_HARPOON = 40,
+ GF_S_GAME_INV_ITEM_M16 = 41,
+ GF_S_GAME_INV_ITEM_GRENADE = 42,
+ GF_S_GAME_INV_ITEM_FLARE = 43,
+ GF_S_GAME_INV_ITEM_PISTOL_AMMO = 44,
+ GF_S_GAME_INV_ITEM_SHOTGUN_AMMO = 45,
+ GF_S_GAME_INV_ITEM_MAGNUM_AMMO = 46,
+ GF_S_GAME_INV_ITEM_UZI_AMMO = 47,
+ GF_S_GAME_INV_ITEM_HARPOON_AMMO = 48,
+ GF_S_GAME_INV_ITEM_M16_AMMO = 49,
+ GF_S_GAME_INV_ITEM_GRENADE_AMMO = 50,
+ GF_S_GAME_INV_ITEM_SMALL_MEDIPACK = 51,
+ GF_S_GAME_INV_ITEM_LARGE_MEDIPACK = 52,
+ GF_S_GAME_INV_ITEM_PICKUP = 53,
+ GF_S_GAME_INV_ITEM_PUZZLE = 54,
+ GF_S_GAME_INV_ITEM_KEY = 55,
+ GF_S_GAME_INV_ITEM_GAME = 56,
+ GF_S_GAME_INV_ITEM_LARA_HOME = 57,
+ GF_S_GAME_MISC_LOADING = 58,
+ GF_S_GAME_MISC_TIME_TAKEN = 59,
+ GF_S_GAME_MISC_SECRETS_FOUND = 60,
+ GF_S_GAME_MISC_LOCATION = 61,
+ GF_S_GAME_MISC_KILLS = 62,
+ GF_S_GAME_MISC_AMMO_USED = 63,
+ GF_S_GAME_MISC_HITS = 64,
+ GF_S_GAME_MISC_SAVES_PERFORMED = 65,
+ GF_S_GAME_MISC_DISTANCE_TRAVELLED = 66,
+ GF_S_GAME_MISC_HEALTH_PACKS_USED = 67,
+ GF_S_GAME_MISC_RELEASE_VERSION = 68,
+ GF_S_GAME_MISC_NONE = 69,
+ GF_S_GAME_MISC_FINISH = 70,
+ GF_S_GAME_MISC_BEST_TIMES = 71,
+ GF_S_GAME_MISC_NO_TIMES_SET = 72,
+ GF_S_GAME_MISC_NA = 73,
+ GF_S_GAME_MISC_CURRENT_POSITION = 74,
+ GF_S_GAME_MISC_FINAL_STATISTICS = 75,
+ GF_S_GAME_MISC_OF = 76,
+ GF_S_GAME_MISC_STORY_SO_FAR = 77,
+ GF_S_GAME_NUMBER_OF = 89,
+} GF_GAME_STRING;
+
+typedef enum {
+ GF_ADD_INV_PISTOLS = 0,
+ GF_ADD_INV_SHOTGUN = 1,
+ GF_ADD_INV_MAGNUMS = 2,
+ GF_ADD_INV_UZIS = 3,
+ GF_ADD_INV_HARPOON = 4,
+ GF_ADD_INV_M16 = 5,
+ GF_ADD_INV_GRENADE = 6,
+ GF_ADD_INV_PISTOL_AMMO = 7,
+ GF_ADD_INV_SHOTGUN_AMMO = 8,
+ GF_ADD_INV_MAGNUM_AMMO = 9,
+ GF_ADD_INV_UZI_AMMO = 10,
+ GF_ADD_INV_HARPOON_AMMO = 11,
+ GF_ADD_INV_M16_AMMO = 12,
+ GF_ADD_INV_GRENADE_AMMO = 13,
+ GF_ADD_INV_FLARES = 14,
+ GF_ADD_INV_SMALL_MEDI = 15,
+ GF_ADD_INV_LARGE_MEDI = 16,
+ GF_ADD_INV_PICKUP_1 = 17,
+ GF_ADD_INV_PICKUP_2 = 18,
+ GF_ADD_INV_PUZZLE_1 = 19,
+ GF_ADD_INV_PUZZLE_2 = 20,
+ GF_ADD_INV_PUZZLE_3 = 21,
+ GF_ADD_INV_PUZZLE_4 = 22,
+ GF_ADD_INV_KEY_1 = 23,
+ GF_ADD_INV_KEY_2 = 24,
+ GF_ADD_INV_KEY_3 = 25,
+ GF_ADD_INV_KEY_4 = 26,
+ GF_ADD_INV_NUMBER_OF = 27,
+} GF_ADD_INV;
+
+typedef enum {
+ IT_NAME = 0,
+ IT_QTY = 1,
+ IT_NUMBER_OF = 2,
+} INV_TEXT;
+
+typedef enum {
+ REQ_CENTER = 0x00,
+ REQ_USE = 0x01,
+ REQ_ALIGN_LEFT = 0x02,
+ REQ_ALIGN_RIGHT = 0x04,
+ REQ_HEADING = 0x08,
+ REQ_BEST_TIME = 0x10,
+ REQ_NORMAL_TIME = 0x20,
+ REQ_NO_TIME = 0x40,
+} REQUESTER_FLAGS;
+
+
+# FUNCTIONS
+# Offset Size Declaration
+
+# 3dsystem/3d_gen.c
+0x00401000 0x01D0 void __cdecl Matrix_GenerateW2V(PHD_3DPOS *viewpos);
+0x004011D0 0x0072 void __cdecl Matrix_LookAt(int32_t xsrc, int32_t ysrc, int32_t zsrc, int32_t xtar, int32_t ytar, int32_t ztar, int16_t roll);
+0x00401250 0x0078 void __cdecl Math_GetVectorAngles(int32_t x, int32_t y, int32_t z, int16_t *dest);
+0x004012D0 0x00AA void __cdecl Matrix_RotX(int16_t rx);
+0x00401380 0x00A8 void __cdecl Matrix_RotY(int16_t ry);
+0x00401430 0x00A8 void __cdecl Matrix_RotZ(int16_t rz);
+0x004014E0 0x01DC void __cdecl Matrix_RotYXZ(int16_t ry, int16_t rx, int16_t rz);
+0x004016C0 0x01E7 void __cdecl Matrix_RotYXZpack(uint32_t rpack);
+0x004018B0 0x00AB bool __cdecl Matrix_TranslateRel(int32_t x, int32_t y, int32_t z);
+0x00401960 0x007A void __cdecl Matrix_TranslateAbs(int32_t x, int32_t y, int32_t z);
+0x004019E0 0x00F3 void __cdecl Output_InsertPolygons(const int16_t *obj_ptr, int32_t clip);
+0x00401AE0 0x00EA void __cdecl Output_InsertRoom(const int16_t *obj_ptr, int32_t is_outside);
+0x00401BD0 0x0032 const int16_t *__cdecl Output_CalcSkyboxLight(const int16_t *obj_ptr);
+0x00401C10 0x0134 void __cdecl Output_InsertSkybox(const int16_t *obj_ptr);
+0x00401D50 0x0001 void __cdecl Output_InsertInventoryBackground(const int16_t *obj_ptr);
+0x00401D60 0x01D5 const int16_t *__cdecl Output_CalcObjectVertices(const int16_t *obj_ptr);
+0x00401F40 0x016D const int16_t *__cdecl Output_CalcVerticeLight(const int16_t *obj_ptr);
+0x004020B0 0x027D const int16_t *__cdecl Output_CalcRoomVertices(const int16_t *obj_ptr, int32_t far_clip);
+0x00402330 0x00C7 void __cdecl Output_RotateLight(int16_t pitch, int16_t yaw);
+0x00402400 0x0039 void __cdecl Output_InitPolyList(void);
+0x00402430 0x0033 void __cdecl Output_SortPolyList(void);
+0x00402470 0x00C5 void __cdecl Output_QuickSort(int32_t left, int32_t right);
+0x00402540 0x0036 void __cdecl Output_PrintPolyList(uint8_t *surface_ptr);
+0x00402580 0x00A1 void __cdecl Output_AlterFOV(int16_t fov);
+0x00402690 0x0095 void __cdecl Output_SetNearZ(int32_t near_z);
+0x004026E0 0x006B void __cdecl Output_SetFarZ(int32_t far_z);
+0x00402700 0x0266 void __cdecl Output_Init(int16_t x, int16_t y, int32_t width, int32_t height, int32_t near_z, int32_t far_z, int16_t view_angle, int32_t screen_width, int32_t screen_height);
+
+# 3dsystem/3d_out.c
+0x00402970 0x019F void __cdecl Output_DrawPolyLine(const int16_t *obj_ptr);
+0x00402B10 0x0035 void __cdecl Output_DrawPolyFlat(const int16_t *obj_ptr);
+0x00402B50 0x0035 void __cdecl Output_DrawPolyTrans(const int16_t *obj_ptr);
+0x00402B90 0x0035 void __cdecl Output_DrawPolyGouraud(const int16_t *obj_ptr);
+0x00402BD0 0x003C void __cdecl Output_DrawPolyGTMap(const int16_t *obj_ptr);
+0x00402C10 0x003C void __cdecl Output_DrawPolyWGTMap(const int16_t *obj_ptr);
+0x00402C50 0x00D2 int32_t __cdecl Output_XGenX(const int16_t *obj_ptr);
+0x00402D30 0x0146 int32_t __cdecl Output_XGenXG(const int16_t *obj_ptr);
+0x00402E80 0x0219 int32_t __cdecl Output_XGenXGUV(const int16_t *obj_ptr);
+0x004030A0 0x0284 int32_t __cdecl Output_XGenXGUVPerspFP(const int16_t *obj_ptr);
+0x00403330 0x0FC6 void __cdecl Output_GTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
+0x00404300 0x14C4 void __cdecl Output_WGTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);
+0x004057D0 0x0037 void __cdecl Output_DrawPolyGTMapPersp(const int16_t *obj_ptr);
+0x00405810 0x0037 void __cdecl Output_DrawPolyWGTMapPersp(const int16_t *obj_ptr);
+
+# 3dsystem/3dinsert.
+0x00405850 0x006C int32_t __cdecl Output_VisibleZClip(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2);
+0x004058C0 0x0140 int32_t __cdecl Output_ZedClipper(int32_t vtx_count, POINT_INFO *pts, VERTEX_INFO *vtx);
+0x00405A00 0x0511 int32_t __cdecl Output_XYGUVClipper(int32_t vtx_count, VERTEX_INFO *vtx);
+0x00405F20 0x0A5C const int16_t *__cdecl Output_InsertObjectGT4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x00406980 0x0872 const int16_t *__cdecl Output_InsertObjectGT3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x00407200 0x0422 int32_t __cdecl Output_XYGClipper(int32_t vtx_count, VERTEX_INFO *vtx);
+0x00407630 0x03D1 const int16_t *__cdecl Output_InsertObjectG4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x00407A10 0x031B const int16_t *__cdecl Output_InsertObjectG3(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x00407D30 0x02D0 int32_t __cdecl Output_XYClipper(int32_t vtx_count, VERTEX_INFO *vtx);
+0x00408000 0x04A4 void __cdecl Output_InsertTrans8(const PHD_VBUF *vbuf, int16_t shade);
+0x004084B0 0x00D3 void __cdecl Output_InsertTransQuad(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
+0x00408590 0x00CB void __cdecl Output_InsertFlatRect(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x00408660 0x00B5 void __cdecl Output_InsertLine(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x00408720 0x0642 void __cdecl Output_InsertGT3_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2);
+0x00408D70 0x0140 void __cdecl Output_DrawClippedPoly_Textured(int32_t vtx_count);
+0x00408EB0 0x0444 void __cdecl Output_InsertGT4_ZBuffered(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture);
+0x00409300 0x0091 const int16_t *__cdecl Output_InsertObjectGT4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x004093A0 0x00AA const int16_t *__cdecl Output_InsertObjectGT3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x00409450 0x039C const int16_t *__cdecl Output_InsertObjectG4_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x004097F0 0x00F7 void __cdecl Output_DrawPoly_Gouraud(int32_t vtx_count, int32_t red, int32_t green, int32_t blue);
+0x004098F0 0x02D3 const int16_t *__cdecl Output_InsertObjectG3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x00409BD0 0x01C9 void __cdecl Output_InsertFlatRect_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x00409DA0 0x0133 void __cdecl Output_InsertLine_ZBuffered(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x00409EE0 0x0706 void __cdecl Output_InsertGT3_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_TEXTURE *texture, const PHD_UV *uv0, const PHD_UV *uv1, const PHD_UV *uv2, SORT_TYPE sort_type);
+0x0040A5F0 0x01AC void __cdecl Output_InsertClippedPoly_Textured(int32_t vtx_count, float z, int16_t poly_type, int16_t tex_page);
+0x0040A7A0 0x04D7 void __cdecl Output_InsertGT4_Sorted(const PHD_VBUF *vtx0, const PHD_VBUF *vtx1, const PHD_VBUF *vtx2, const PHD_VBUF *vtx3, const PHD_TEXTURE *texture, SORT_TYPE sort_type);
+0x0040AC80 0x008C const int16_t *__cdecl Output_InsertObjectGT4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x0040AD10 0x009F const int16_t *__cdecl Output_InsertObjectGT3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x0040ADB0 0x043B const int16_t *__cdecl Output_InsertObjectG4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x0040B1F0 0x0175 void __cdecl Output_InsertPoly_Gouraud(int32_t vtx_count, float z, int32_t red, int32_t green, int32_t blue, int16_t poly_type);
+0x0040B370 0x0343 const int16_t *__cdecl Output_InsertObjectG3_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x0040B6C0 0x0347 void __cdecl Output_InsertSprite_Sorted(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
+0x0040BA10 0x017F void __cdecl Output_InsertFlatRect_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x0040BB90 0x012B void __cdecl Output_InsertLine_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x0040BCC0 0x0195 void __cdecl Output_InsertTrans8_Sorted(const PHD_VBUF *vbuf, int16_t shade);
+0x0040BE60 0x013D void __cdecl Output_InsertTransQuad_Sorted(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
+0x0040BFA0 0x00A7 void __cdecl Output_InsertSprite(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
+
+# 3dsystem/scalespr.
+0x0040C050 0x02C7 void __cdecl Output_DrawSprite(uint32_t flags, int32_t x, int32_t y, int32_t z, int16_t sprite_idx, int16_t shade, int16_t scale);
+0x0040C320 0x0085 void __cdecl Output_DrawPickup(int32_t sx, int32_t sy, int32_t scale, int16_t sprite_idx, int16_t shade);
+0x0040C3B0 0x0152 const int16_t *__cdecl Output_InsertRoomSprite(const int16_t *obj_ptr, int32_t vtx_count);
+0x0040C510 0x0096 void __cdecl Output_DrawScreenSprite2D(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
+0x0040C5B0 0x009D void __cdecl Output_DrawScreenSprite(int32_t sx, int32_t sy, int32_t sz, int32_t scale_h, int32_t scale_v, int16_t sprite_idx, int16_t shade, uint16_t flags);
+0x0040C650 0x0223 void __cdecl Output_DrawScaledSpriteC(const int16_t *obj_ptr);
+
+# game/bird.c
+0x0040C880 0x0089 void __cdecl Bird_Initialise(int16_t item_num);
+0x0040C910 0x0200 void __cdecl Bird_Control(int16_t item_num);
+
+# game/boat.c
+0x0040CB30 0x003C void __cdecl Boat_Initialise(int16_t item_num);
+0x0040CB70 0x0170 int32_t __cdecl Boat_CheckGetOn(int16_t item_num, COLL_INFO *coll);
+0x0040CCE0 0x015E void __cdecl Boat_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x0040CE40 0x00F8 int32_t __cdecl Boat_TestWaterHeight(ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
+0x0040CF40 0x01C1 void __cdecl Boat_DoShift(int32_t boat_num);
+0x0040D110 0x0174 void __cdecl Boat_DoWakeEffect(ITEM *boat);
+0x0040D290 0x004B int32_t __cdecl Boat_DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
+0x0040D2E0 0x04DD int32_t __cdecl Boat_Dynamics(int16_t boat_num);
+0x0040D7C0 0x0187 int32_t __cdecl Boat_UserControl(ITEM *boat);
+0x0040D950 0x0169 void __cdecl Boat_Animation(ITEM *boat, int32_t collide);
+0x0040DAC0 0x062A void __cdecl Boat_Control(int16_t item_num);
+0x0040E0F0 0x00B3 void __cdecl Gondola_Control(int16_t item_num);
+
+# game/box.c
+0x0040E1B0 0x002F void __cdecl Creature_Initialise(int16_t item_num);
+0x0040E1E0 0x0047 int32_t __cdecl Creature_Activate(int16_t item_num);
+0x0040E230 0x0242 void __cdecl Creature_AIInfo(ITEM *item, AI_INFO *info);
+0x0040E490 0x01F3 int32_t __cdecl Box_SearchLOT(LOT_INFO *lot, int32_t expansion);
+0x0040E690 0x006F int32_t __cdecl Box_UpdateLOT(LOT_INFO *lot, int32_t expansion);
+0x0040E700 0x0095 void __cdecl Box_TargetBox(LOT_INFO *lot, int16_t box_num);
+0x0040E7A0 0x00F2 int32_t __cdecl Box_StalkBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
+0x0040E8A0 0x00A4 int32_t __cdecl Box_EscapeBox(const ITEM *item, const ITEM *enemy, int16_t box_num);
+0x0040E950 0x00A7 int32_t __cdecl Box_ValidBox(const ITEM *item, int16_t zone_num, int16_t box_num);
+0x0040EA00 0x043F void __cdecl Creature_Mood(ITEM *item, AI_INFO *info, int32_t violent);
+0x0040EE70 0x0459 TARGET_TYPE __cdecl Box_CalculateTarget(XYZ_32 *target, ITEM *item, LOT_INFO *lot);
+0x0040F2D0 0x00F8 int32_t __cdecl Creature_CheckBaddieOverlap(int16_t item_num);
+0x0040F3D0 0x008B int32_t __cdecl Box_BadFloor(int32_t x, int32_t y, int32_t z, int32_t box_height, int32_t next_height, int16_t room_num, LOT_INFO *lot);
+0x0040F460 0x00B8 void __cdecl Creature_Die(int16_t item_num, int32_t explode);
+0x0040F520 0x08CC int32_t __cdecl Creature_Animate(int16_t item_num, int16_t angle, int16_t tilt);
+0x0040FDF0 0x00D5 int16_t __cdecl Creature_Turn(ITEM *item, int16_t maximum_turn);
+0x0040FED0 0x0035 void __cdecl Creature_Tilt(ITEM *item, int16_t angle);
+0x0040FF10 0x0049 void __cdecl Creature_Head(ITEM *item, int16_t required);
+0x0040FF60 0x004E void __cdecl Creature_Neck(ITEM *item, int16_t required);
+0x0040FFB0 0x00A8 void __cdecl Creature_Float(int16_t item_num);
+0x00410060 0x0050 void __cdecl Creature_Underwater(ITEM *item, int32_t depth);
+0x004100B0 0x005C int16_t __cdecl Creature_Effect(ITEM *item, BITE *bite, int16_t (*__cdecl spawn)(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num));
+0x00410110 0x0131 int32_t __cdecl Creature_Vault(int16_t item_num, int16_t angle, int32_t vault, int32_t shift);
+0x00410250 0x016F void __cdecl Creature_Kill(ITEM *item, int32_t kill_anim, int32_t kill_state, int32_t lara_kill_state);
+0x004103C0 0x01DB void __cdecl Creature_GetBaddieTarget(int16_t item_num, int32_t goody);
+
+# game/camera.c
+0x004105A0 0x00B0 void __cdecl Camera_Initialise(void);
+0x00410650 0x0372 void __cdecl Camera_Move(const GAME_VECTOR *target, int32_t speed);
+0x004109D0 0x00D7 void __cdecl Camera_Clip(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
+0x00410AB0 0x0154 void __cdecl Camera_Shift(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom);
+0x00410C10 0x0050 const SECTOR *__cdecl Camera_GoodPosition(int32_t x, int32_t y, int32_t z, int16_t room_num);
+0x00410C60 0x0781 void __cdecl Camera_SmartShift(GAME_VECTOR *target, void (*__cdecl shift)(int32_t *x, int32_t *y, int32_t *h, int32_t target_x, int32_t target_y, int32_t target_h, int32_t left, int32_t top, int32_t right, int32_t bottom));
+0x004113F0 0x00ED void __cdecl Camera_Chase(const ITEM *item);
+0x004114E0 0x019E int32_t __cdecl Camera_ShiftClamp(GAME_VECTOR *pos, int32_t clamp);
+0x00411680 0x018E void __cdecl Camera_Combat(const ITEM *item);
+0x00411810 0x01E2 void __cdecl Camera_Look(const ITEM *item);
+0x00411A00 0x0099 void __cdecl Camera_Fixed(void);
+0x00411AA0 0x04A9 void __cdecl Camera_Update(void);
+
+# game/cinema.c
+0x00411F50 0x000A void __cdecl Game_SetCutsceneTrack(int32_t track);
+0x00411F60 0x0112 int32_t __cdecl Game_Cutscene_Start(int32_t level_num);
+0x00412080 0x0093 void __cdecl Room_InitCinematic(void);
+0x00412120 0x016F int32_t __cdecl Game_Cutscene_Control(int32_t nframes);
+0x00412290 0x0138 void __cdecl Camera_UpdateCutscene(void);
+0x004123D0 0x007F int32_t __cdecl Room_FindByPos(int32_t x, int32_t y, int32_t z);
+0x00412450 0x00DC void __cdecl CutscenePlayer_Control(int16_t item_num);
+0x00412530 0x0096 void __cdecl Lara_Control_Cutscene(int16_t item_num);
+0x004125D0 0x008F void __cdecl CutscenePlayer1_Initialise(int16_t item_num);
+0x00412660 0x0033 void __cdecl CutscenePlayerGen_Initialise(int16_t item_num);
+0x004126A0 0x0245 void __cdecl Camera_LoadCutsceneFrame(void);
+
+# game/collide.c
+0x004128F0 0x067C void __cdecl Collide_GetCollisionInfo(COLL_INFO *coll, int32_t xpos, int32_t ypos, int32_t zpos, int16_t room_num, int32_t obj_height);
+0x00412FB0 0x002F int32_t __cdecl Room_FindGridShift(int32_t src, int32_t dst);
+0x00412FE0 0x03D2 int32_t __cdecl Collide_CollideStaticObjects(COLL_INFO *coll, int32_t x, int32_t y, int32_t z, int16_t room_num, int32_t height);
+0x004133D0 0x00C8 void __cdecl Room_GetNearbyRooms(int32_t x, int32_t y, int32_t z, int32_t r, int32_t h, int16_t room_num);
+0x004134A0 0x0055 void __cdecl Room_GetNewRoom(int32_t x, int32_t y, int32_t z, int16_t room_num);
+0x00413500 0x0037 void __cdecl Item_ShiftCol(ITEM *item, COLL_INFO *coll);
+0x00413540 0x005D void __cdecl Item_UpdateRoom(ITEM *item, int32_t height);
+0x004135A0 0x0099 int16_t __cdecl Room_GetTiltType(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
+0x00413640 0x0195 void __cdecl Lara_BaddieCollision(ITEM *lara_item, COLL_INFO *coll);
+0x004137E0 0x0079 void __cdecl Lara_TakeHit(ITEM *lara_item, COLL_INFO *coll);
+0x00413860 0x0078 void __cdecl Creature_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x004138E0 0x0055 void __cdecl Object_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00413940 0x0077 void __cdecl Door_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x004139C0 0x0067 void __cdecl Object_Collision_Trap(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00413A30 0x0306 void __cdecl Lara_Push(ITEM *item, ITEM *lara_item, COLL_INFO *coll, int32_t spaz_on, int32_t big_push);
+0x00413D40 0x00CB int32_t __cdecl Item_TestBoundsCollide(const ITEM *src_item, const ITEM *dst_item, int32_t radius);
+0x00413E10 0x0137 int32_t __cdecl Item_TestPosition(int16_t *bounds, ITEM *src_item, ITEM *dst_item);
+0x00413F50 0x013B void __cdecl Item_AlignPosition(XYZ_32 *vec, ITEM *src_item, ITEM *dst_item);
+0x00414090 0x0187 int32_t __cdecl Lara_MovePosition(XYZ_32 *vec, ITEM *item, ITEM *lara_item);
+0x00414220 0x016E int32_t __cdecl Misc_Move3DPosTo3DPos(PHD_3DPOS *src_pos, const PHD_3DPOS *dest_pos, int32_t velocity, int16_t ang_add);
+
+# game/control.c
+0x00414390 0x0356 int32_t __cdecl Game_Control(int32_t nframes, int32_t demo_mode);
+0x004146F0 0x0338 void __cdecl Item_Animate(ITEM *item);
+0x00414A60 0x00AB int32_t __cdecl Item_GetAnimChange(ITEM *item, const ANIM *anim);
+0x00414B10 0x005F void __cdecl Item_Translate(ITEM *item, int32_t x, int32_t y, int32_t z);
+0x00414B70 0x0198 SECTOR *__cdecl Room_GetSector(int32_t x, int32_t y, int32_t z, int16_t *room_num);
+0x00414D10 0x0168 int32_t __cdecl Room_GetWaterHeight(int32_t x, int32_t y, int32_t z, int16_t room_num);
+0x00414E80 0x0265 int32_t __cdecl Room_GetHeight(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
+0x00415100 0x00E7 void __cdecl Camera_Legacy_RefreshFromTrigger(int16_t type, const int16_t *data);
+0x004151F0 0x0690 void __cdecl Room_Legacy_TestTriggers(int16_t *data, int32_t heavy);
+0x004158D0 0x0055 int32_t __cdecl Item_IsTriggerActive(ITEM *item);
+0x00415930 0x023D int32_t __cdecl Room_GetCeiling(const SECTOR *sector, int32_t x, int32_t y, int32_t z);
+0x00415B90 0x004E int16_t __cdecl Room_Legacy_GetDoor(const SECTOR *sector);
+0x00415BE0 0x00A0 int32_t __cdecl LOS_Check(const GAME_VECTOR *start, GAME_VECTOR *target);
+0x00415C80 0x02EB int32_t __cdecl LOS_CheckZ(const GAME_VECTOR *start, GAME_VECTOR *target);
+0x00415F70 0x02EC int32_t __cdecl LOS_CheckX(const GAME_VECTOR *start, GAME_VECTOR *target);
+0x00416260 0x00DA int32_t __cdecl LOS_ClipTarget(const GAME_VECTOR *start, GAME_VECTOR *target, const SECTOR *sector);
+0x00416340 0x02FE int32_t __cdecl LOS_CheckSmashable(const GAME_VECTOR *start, GAME_VECTOR *target);
+0x00416640 0x00B3 void __cdecl Room_FlipMap(void);
+0x00416700 0x0096 void __cdecl Room_RemoveFlipItems(ROOM *r);
+0x004167A0 0x005C void __cdecl Room_AddFlipItems(ROOM *r);
+0x00416800 0x0024 void __cdecl Room_Legacy_TriggerMusicTrack(int16_t value, int16_t flags, int16_t type);
+0x00416830 0x00DA void __cdecl Room_TriggerMusicTrackImpl(int16_t value, int16_t flags, int16_t type);
+
+# game/demo.c
+0x00416910 0x0059 int32_t __cdecl Demo_Control(int32_t level_num);
+0x00416970 0x01B0 int32_t __cdecl Demo_Start(int32_t level_num);
+0x00416B20 0x00CD void __cdecl Demo_LoadLaraPos(void);
+0x00416BF0 0x002D void __cdecl Demo_GetInput(void);
+
+# game/diver.c
+0x00416C20 0x007A int16_t __cdecl Diver_Harpoon(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
+0x00416CA0 0x0106 int32_t __cdecl Diver_GetWaterSurface(int32_t x, int32_t y, int32_t z, int16_t room_num);
+0x00416DB0 0x0389 void __cdecl Diver_Control(int16_t item_num);
+
+# game/dog.c
+0x00417160 0x0387 void __cdecl Dog_Control(int16_t item_num);
+0x00417510 0x027E void __cdecl Tiger_Control(int16_t item_num);
+
+# game/dragon.c
+0x004177B0 0x017F void __cdecl Twinkle_Control(int16_t fx_num);
+0x00417930 0x00D9 void __cdecl Effect_CreateBartoliLight(int16_t item_num);
+0x00417A10 0x00AB int16_t __cdecl Effect_MissileFlame(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
+0x00417AC0 0x02ED void __cdecl Dragon_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00417DB0 0x00D9 void __cdecl Dragon_Bones(int16_t item_num);
+0x00417E90 0x0519 void __cdecl Dragon_Control(int16_t back_num);
+0x004183E0 0x0114 void __cdecl Bartoli_Initialise(int16_t item_num);
+0x00418500 0x0193 void __cdecl Bartoli_Control(int16_t item_num);
+0x004186A0 0x0287 void __cdecl TRex_Control(int16_t item_num);
+
+# game/draw.c
+0x00418950 0x0037 int32_t __cdecl Game_DrawCinematic(void);
+0x00418990 0x0037 int32_t __cdecl Game_Draw(void);
+0x004189D0 0x02B0 void __cdecl Room_DrawAllRooms(int16_t current_room);
+0x00418C80 0x01C6 void __cdecl Room_GetBounds(void);
+0x00418E50 0x037F void __cdecl Room_SetBounds(const int16_t *objptr, int32_t room_num, ROOM *parent);
+0x004191D0 0x03D2 void __cdecl Room_Clip(ROOM *r);
+0x004195B0 0x00B4 void __cdecl Room_DrawSingleRoomGeometry(int16_t room_num);
+0x00419670 0x0218 void __cdecl Room_DrawSingleRoomObjects(int16_t room_num);
+0x00419890 0x0147 void __cdecl Effect_Draw(int16_t fx_num);
+0x004199E0 0x0083 void __cdecl Object_DrawSpriteItem(const ITEM *item);
+0x00419A70 0x0378 void __cdecl Object_DrawAnimatingItem(const ITEM *item);
+0x00419DF0 0x0D02 void __cdecl Lara_Draw(const ITEM *item);
+0x0041AB20 0x0BC6 void __cdecl Lara_Draw_I(const ITEM *item, const FRAME_INFO *frame1, const FRAME_INFO *frame2, int32_t frac, int32_t rate);
+0x0041B710 0x0034 void __cdecl Matrix_InitInterpolate(int32_t frac, int32_t rate);
+0x0041B750 0x0022 void __cdecl Matrix_Pop_I(void);
+0x0041B780 0x0027 void __cdecl Matrix_Push_I(void);
+0x0041B7B0 0x0031 void __cdecl Matrix_RotY_I(int16_t ang);
+0x0041B7F0 0x0031 void __cdecl Matrix_RotX_I(int16_t ang);
+0x0041B830 0x0031 void __cdecl Matrix_RotZ_I(int16_t ang);
+0x0041B870 0x0041 void __cdecl Matrix_TranslateRel_I(int32_t x, int32_t y, int32_t z);
+0x0041B8C0 0x0047 void __cdecl Matrix_TranslateRel_ID(int32_t x, int32_t y, int32_t z, int32_t x2, int32_t y2, int32_t z2);
+0x0041B910 0x0041 void __cdecl Matrix_RotYXZ_I(int16_t y, int16_t x, int16_t z);
+0x0041B960 0x003D void __cdecl Matrix_RotYXZsuperpack_I(const int16_t **pprot1, const int16_t **pprot2, int32_t skip);
+0x0041B9A0 0x00A1 void __cdecl Matrix_RotYXZsuperpack(const int16_t **pprot, int32_t skip);
+0x0041BA50 0x002A void __cdecl Output_InsertPolygons_I(int16_t *ptr, int32_t clip);
+0x0041BA80 0x01A5 void __cdecl Matrix_Interpolate(void);
+0x0041BC30 0x00FC void __cdecl Matrix_InterpolateArm(void);
+0x0041BD30 0x014B void __cdecl Gun_DrawFlash(LARA_GUN_TYPE weapon_type, int32_t clip);
+0x0041BEA0 0x00E8 void __cdecl Output_CalculateObjectLighting(const ITEM *item, const BOUNDS_16 *bounds);
+0x0041BF90 0x0092 int32_t __cdecl Item_GetFrames(const ITEM *item, FRAME_INFO *frmptr[], int32_t *rate);
+0x0041C030 0x007C BOUNDS_16 *__cdecl Item_GetBoundsAccurate(const ITEM *item);
+0x0041C0B0 0x0035 FRAME_INFO *__cdecl Item_GetBestFrame(const ITEM *item);
+0x0041C0F0 0x0048 void __cdecl Output_AddDynamicLight(int32_t x, int32_t y, int32_t z, int32_t intensity, int32_t falloff);
+
+# game/eel.c
+0x0041C140 0x019D void __cdecl BigEel_Control(int16_t item_num);
+0x0041C2E0 0x01E1 void __cdecl Eel_Control(int16_t item_num);
+
+# game/effects.c
+0x0041C4D0 0x008C int32_t __cdecl Lara_IsNearItem(PHD_3DPOS *pos, int32_t distance);
+0x0041C560 0x0068 void __cdecl Sound_UpdateEffects(void);
+0x0041C5D0 0x0059 int16_t __cdecl DoBloodSplat(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num);
+0x0041C630 0x00A4 void __cdecl DoLotsOfBlood(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t direction, int16_t room_num, int32_t num);
+0x0041C6E0 0x0082 void __cdecl Blood_Control(int16_t fx_num);
+0x0041C770 0x007F void __cdecl Explosion_Control(int16_t fx_num);
+0x0041C7F0 0x0072 void __cdecl Ricochet(GAME_VECTOR *pos);
+0x0041C870 0x0030 void __cdecl Ricochet_Control(int16_t fx_num);
+0x0041C8A0 0x0064 void __cdecl CreateBubble(XYZ_32 *pos, int16_t room_num);
+0x0041C910 0x0078 void __cdecl FX_Bubbles(ITEM *item);
+0x0041C990 0x00F3 void __cdecl Bubble_Control(int16_t fx_num);
+0x0041CA90 0x00C2 void __cdecl Splash(ITEM *item);
+0x0041CB60 0x0071 void __cdecl Splash_Control(int16_t fx_num);
+0x0041CBE0 0x00AE void __cdecl WaterSprite_Control(int16_t fx_num);
+0x0041CC90 0x008C void __cdecl SnowSprite_Control(int16_t fx_num);
+0x0041CD20 0x00DE void __cdecl HotLiquid_Control(int16_t fx_num);
+0x0041CE00 0x013D void __cdecl Waterfall_Control(int16_t item_num);
+0x0041CF40 0x000B void __cdecl FX_FinishLevel(ITEM *item);
+0x0041CF50 0x0016 void __cdecl FX_Turn180(ITEM *item);
+0x0041CF70 0x0096 void __cdecl FX_FloorShake(ITEM *item);
+0x0041D010 0x0040 void __cdecl FX_LaraNormal(ITEM *item);
+0x0041D050 0x001C void __cdecl FX_Boiler(ITEM *item);
+0x0041D070 0x008F void __cdecl FX_Flood(ITEM *item);
+0x0041D100 0x0023 void __cdecl FX_Rubble(ITEM *item);
+0x0041D130 0x002C void __cdecl FX_Chandelier(ITEM *item);
+0x0041D160 0x0023 void __cdecl FX_Explosion(ITEM *item);
+0x0041D190 0x001C void __cdecl FX_Piston(ITEM *item);
+0x0041D1B0 0x001C void __cdecl FX_Curtain(ITEM *item);
+0x0041D1D0 0x001C void __cdecl FX_Statue(ITEM *item);
+0x0041D1F0 0x001C void __cdecl FX_SetChange(ITEM *item);
+0x0041D210 0x003F void __cdecl DingDong_Control(int16_t item_num);
+0x0041D250 0x0037 void __cdecl LaraAlarm_Control(int16_t item_num);
+0x0041D290 0x0067 void __cdecl AlarmSound_Control(int16_t item_num);
+0x0041D300 0x005D void __cdecl BirdTweeter_Control(int16_t item_num);
+0x0041D360 0x0059 void __cdecl DoChimeSound(const ITEM *item);
+0x0041D3C0 0x0068 void __cdecl ClockChimes_Control(int16_t item_num);
+0x0041D430 0x0128 void __cdecl SphereOfDoom_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x0041D560 0x00F0 void __cdecl SphereOfDoom_Control(int16_t item_num);
+0x0041D650 0x012D void __cdecl SphereOfDoom_Draw(const ITEM *item);
+0x0041D780 0x000A void __cdecl FX_LaraHandsFree(ITEM *item);
+0x0041D790 0x0005 void __cdecl FX_FlipMap(ITEM *item);
+0x0041D7A0 0x0043 void __cdecl FX_LaraDrawRightGun(ITEM *item);
+0x0041D7F0 0x0043 void __cdecl FX_LaraDrawLeftGun(ITEM *item);
+0x0041D840 0x0063 void __cdecl FX_SwapMeshesWithMeshSwap1(ITEM *item);
+0x0041D8B0 0x0063 void __cdecl FX_SwapMeshesWithMeshSwap2(ITEM *item);
+0x0041D920 0x009A void __cdecl FX_SwapMeshesWithMeshSwap3(ITEM *item);
+0x0041D9C0 0x0009 void __cdecl FX_InvisibilityOn(ITEM *item);
+0x0041D9D0 0x0016 void __cdecl FX_InvisibilityOff(ITEM *item);
+0x0041D9F0 0x0009 void __cdecl FX_DynamicLightOn(ITEM *item);
+0x0041DA00 0x000B void __cdecl FX_DynamicLightOff(ITEM *item);
+0x0041DA10 0x0005 void __cdecl FX_ResetHair(ITEM *item);
+0x0041DA20 0x0024 void __cdecl FX_AssaultStart(ITEM *item);
+0x0041DA50 0x001F void __cdecl FX_AssaultStop(ITEM *item);
+0x0041DA70 0x0017 void __cdecl FX_AssaultReset(ITEM *item);
+0x0041DA90 0x00B2 void __cdecl FX_AssaultFinished(ITEM *item);
+
+# game/enemies.c
+0x0041DB50 0x0076 int16_t __cdecl Knife(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
+0x0041DBD0 0x040B void __cdecl Cultist2_Control(int16_t item_num);
+0x0041E000 0x04A1 void __cdecl Monk_Control(int16_t item_num);
+0x0041E4D0 0x05BD void __cdecl Worker3_Control(int16_t item_num);
+0x0041EAE0 0x03F7 void __cdecl XianWarrior_Draw(const ITEM *item);
+0x0041EEE0 0x00A8 void __cdecl XianSpearman_DoDamage(ITEM *item, CREATURE *xian, int32_t damage);
+0x0041EF90 0x0058 void __cdecl XianWarrior_Initialise(int16_t item_num);
+0x0041EFF0 0x0590 void __cdecl XianSpearman_Control(int16_t item_num);
+0x0041F5D0 0x0098 void __cdecl XianKnight_SparkleTrail(ITEM *item);
+0x0041F670 0x03BA void __cdecl XianKnight_Control(int16_t item_num);
+
+# game/gameflow.c
+0x0041FA60 0x01E9 int32_t __cdecl GF_LoadScriptFile(const char *fname);
+0x0041FC50 0x001F int32_t __cdecl GF_DoFrontendSequence(void);
+0x0041FC70 0x0066 int32_t __cdecl GF_DoLevelSequence(int32_t level, GAMEFLOW_LEVEL_TYPE type);
+0x0041FCE0 0x047C int32_t __cdecl GF_InterpretSequence(int16_t *ptr, GAMEFLOW_LEVEL_TYPE type, int32_t seq_type);
+0x004201C0 0x0CD3 void __cdecl GF_ModifyInventory(int32_t level, int32_t type);
+
+# game/hair.c
+0x00420EA0 0x0074 void __cdecl Lara_Hair_Initialise(void);
+0x00420F20 0x09E5 void __cdecl Lara_Hair_Control(bool in_cutscene);
+0x00421920 0x0076 void __cdecl Lara_Hair_Draw(void);
+
+# game/health.c
+0x004219A0 0x002D BOOL __cdecl Overlay_FlashCounter(void);
+0x004219D0 0x0145 void __cdecl Overlay_DrawAssaultTimer(void);
+0x00421B20 0x0045 void __cdecl Overlay_DrawGameInfo(bool pickup_state);
+0x00421B70 0x00AB void __cdecl Overlay_DrawHealthBar(bool flash_state);
+0x00421C20 0x0097 void __cdecl Overlay_DrawAirBar(bool flash_state);
+0x00421CC0 0x0028 void __cdecl Overlay_MakeAmmoString(char *string);
+0x00421CF0 0x0132 void __cdecl Overlay_DrawAmmoInfo(void);
+0x00421E40 0x0015 void __cdecl Overlay_InitialisePickUpDisplay(void);
+0x00421E60 0x00FD void __cdecl Overlay_DrawPickups(bool pickup_state);
+0x00421F60 0x006C void __cdecl Overlay_AddDisplayPickup(GAME_OBJECT_ID object_id);
+0x00421FD0 0x007A void __cdecl Overlay_DisplayModeInfo(char* string);
+0x00422050 0x002C void __cdecl Overlay_DrawModeInfo(void);
+
+# game/inventory.c
+0x00422080 0x119E int32_t __cdecl Inv_Display(int32_t inventory_mode);
+0x00423310 0x0156 void __cdecl Inv_Construct(void);
+0x00423470 0x0089 void __cdecl Inv_SelectMeshes(INVENTORY_ITEM *inv_item);
+0x00423500 0x0081 int32_t __cdecl Inv_AnimateInventoryItem(INVENTORY_ITEM *inv_item);
+0x00423590 0x041D void __cdecl Inv_DrawInventoryItem(INVENTORY_ITEM *inv_item);
+0x004239C0 0x0019 int32_t __cdecl Input_GetDebounced(int32_t input);
+0x004239E0 0x0005 void __cdecl Inv_DoInventoryPicture(void);
+0x004239F0 0x0132 void __cdecl Inv_DoInventoryBackground(void);
+
+# game/invfunc.c
+0x00423B30 0x010A void __cdecl Inv_InitColors(void);
+0x00423C40 0x0167 void __cdecl Inv_RingIsOpen(RING_INFO *ring);
+0x00423DB0 0x0081 void __cdecl Inv_RingIsNotOpen(RING_INFO *ring);
+0x00423E40 0x0369 void __cdecl Inv_RingNotActive(INVENTORY_ITEM *inv_item);
+0x004242B0 0x0032 void __cdecl Inv_RingActive(void);
+0x004242F0 0x06BE int32_t __cdecl Inv_AddItem(GAME_OBJECT_ID object_id);
+0x00424B00 0x0129 void __cdecl Inv_InsertItem(INVENTORY_ITEM *inv_item);
+0x00424C30 0x0077 int32_t __cdecl Inv_RequestItem(GAME_OBJECT_ID object_id);
+0x00424CB0 0x001B void __cdecl Inv_RemoveAllItems(void);
+0x00424CD0 0x0110 int32_t __cdecl Inv_RemoveItem(GAME_OBJECT_ID object_id);
+0x00424DE0 0x00C1 int32_t __cdecl Inv_GetItemOption(GAME_OBJECT_ID object_id);
+0x00424FD0 0x0024 void __cdecl Inv_RemoveInventoryText(void);
+0x00425000 0x010F void __cdecl Inv_Ring_Init(RING_INFO *ring, int16_t type, INVENTORY_ITEM **list, int16_t qty, int16_t current, IMOTION_INFO *imo);
+0x00425110 0x0060 void __cdecl Inv_Ring_GetView(RING_INFO *ring, PHD_3DPOS *viewer);
+0x00425170 0x0040 void __cdecl Inv_Ring_Light(RING_INFO *ring);
+0x004251B0 0x002C void __cdecl Inv_Ring_CalcAdders(RING_INFO *ring, int16_t rotation_duration);
+0x004251E0 0x013E void __cdecl Inv_Ring_DoMotions(RING_INFO *ring);
+0x00425320 0x002F void __cdecl Inv_Ring_RotateLeft(RING_INFO *ring);
+0x00425350 0x002F void __cdecl Inv_Ring_RotateRight(RING_INFO *ring);
+0x00425380 0x0063 void __cdecl Inv_Ring_MotionInit(RING_INFO *ring, int16_t frames, int16_t status, int16_t status_target);
+0x004253F0 0x002C void __cdecl Inv_Ring_MotionSetup(RING_INFO *ring, int16_t status, int16_t status_target, int16_t frames);
+0x00425420 0x0026 void __cdecl Inv_Ring_MotionRadius(RING_INFO *ring, int16_t target);
+0x00425450 0x0022 void __cdecl Inv_Ring_MotionRotation(RING_INFO *ring, int16_t rotation, int16_t target);
+0x00425480 0x0025 void __cdecl Inv_Ring_MotionCameraPos(RING_INFO *ring, int16_t target);
+0x004254B0 0x0020 void __cdecl Inv_Ring_MotionCameraPitch(RING_INFO *ring, int16_t target);
+0x004254D0 0x005D void __cdecl Inv_Ring_MotionItemSelect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
+0x00425530 0x0063 void __cdecl Inv_Ring_MotionItemDeselect(RING_INFO *ring, INVENTORY_ITEM *inv_item);
+
+# game/invtext.c
+0x004255A0 0x0082 void __cdecl Requester_Init(REQUEST_INFO *req);
+0x00425630 0x00A3 void __cdecl Requester_Shutdown(REQUEST_INFO *req);
+0x004256E0 0x001B void __cdecl Requester_Item_CenterAlign(REQUEST_INFO *req, TEXTSTRING *txt);
+0x00425700 0x0054 void __cdecl Requester_Item_LeftAlign(REQUEST_INFO *req, TEXTSTRING *txt);
+0x00425760 0x0056 void __cdecl Requester_Item_RightAlign(REQUEST_INFO *req, TEXTSTRING *txt);
+0x004257C0 0x0866 int32_t __cdecl Requester_Display(REQUEST_INFO *req, int32_t des, int32_t backgrounds);
+0x00426030 0x00AA void __cdecl Requester_SetHeading(REQUEST_INFO *req, char *text1, uint32_t flags1, char *text2, uint32_t flags2);
+0x004260E0 0x0013 void __cdecl Requester_RemoveAllItems(REQUEST_INFO *req);
+0x00426100 0x00C0 void __cdecl Requester_ChangeItem(REQUEST_INFO *req, int32_t item, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
+0x004261C0 0x00AC void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2);
+0x00426270 0x0039 void __cdecl Requester_SetSize(REQUEST_INFO *req, int32_t maxlines, int32_t ypos);
+0x004262B0 0x0081 int32_t __cdecl AddAssaultTime(uint32_t time);
+0x00426340 0x01D6 void __cdecl ShowGymStatsText(char *time_str, int32_t type);
+0x00426520 0x0397 void __cdecl ShowStatsText(char *time_str, int32_t type);
+0x004268C0 0x0425 void __cdecl ShowEndStatsText(void);
+
+# game/items.c
+0x00426CF0 0x0052 void __cdecl Item_InitialiseArray(int32_t num_items);
+0x00426D50 0x011E void __cdecl Item_Kill(int16_t item_num);
+0x00426E70 0x0039 int16_t __cdecl Item_Create(void);
+0x00426EB0 0x01B3 void __cdecl Item_Initialise(int16_t item_num);
+0x00427070 0x008A void __cdecl Item_RemoveActive(int16_t item_num);
+0x00427100 0x006F void __cdecl Item_RemoveDrawn(int16_t item_num);
+0x00427170 0x005A void __cdecl Item_AddActive(int16_t item_num);
+0x004271D0 0x009C void __cdecl Item_NewRoom(int16_t item_num, int16_t room_num);
+0x00427270 0x007C int32_t __cdecl Item_GlobalReplace(GAME_OBJECT_ID src_object_id, GAME_OBJECT_ID dst_object_id);
+0x004272F0 0x0030 void __cdecl Effect_InitialiseArray(void);
+0x00427320 0x006C int16_t __cdecl Effect_Create(int16_t room_num);
+0x00427390 0x00E3 void __cdecl Effect_Kill(int16_t fx_num);
+0x00427480 0x0093 void __cdecl Effect_NewRoom(int16_t fx_num, int16_t room_num);
+0x00427520 0x0058 void __cdecl Item_ClearKilled(void);
+
+# game/lara.c
+0x00427580 0x0195 void __cdecl Lara_HandleAboveWater(ITEM *item, COLL_INFO *coll);
+0x00427720 0x0066 void __cdecl Lara_LookUpDown(void);
+0x00427790 0x0072 void __cdecl Lara_LookLeftRight(void);
+0x00427810 0x0089 void __cdecl Lara_ResetLook(void);
+0x004278A0 0x008B void __cdecl Lara_State_Walk(ITEM *item, COLL_INFO *coll);
+0x00427930 0x0143 void __cdecl Lara_State_Run(ITEM *item, COLL_INFO *coll);
+0x00427A80 0x0148 void __cdecl Lara_State_Stop(ITEM *item, COLL_INFO *coll);
+0x00427BD0 0x00D3 void __cdecl Lara_State_ForwardJump(ITEM *item, COLL_INFO *coll);
+0x00427CB0 0x0057 void __cdecl Lara_State_FastBack(ITEM *item, COLL_INFO *coll);
+0x00427D10 0x008A void __cdecl Lara_State_TurnRight(ITEM *item, COLL_INFO *coll);
+0x00427DA0 0x0089 void __cdecl Lara_State_TurnLeft(ITEM *item, COLL_INFO *coll);
+0x00427E30 0x0014 void __cdecl Lara_State_Death(ITEM *item, COLL_INFO *coll);
+0x00427E50 0x0040 void __cdecl Lara_State_FastFall(ITEM *item, COLL_INFO *coll);
+0x00427E90 0x0058 void __cdecl Lara_State_Hang(ITEM *item, COLL_INFO *coll);
+0x00427EF0 0x001C void __cdecl Lara_State_Reach(ITEM *item, COLL_INFO *coll);
+0x00427F10 0x000A void __cdecl Lara_State_Splat(ITEM *item, COLL_INFO *coll);
+0x00427F20 0x010C void __cdecl Lara_State_Compress(ITEM *item, COLL_INFO *coll);
+0x00428030 0x0084 void __cdecl Lara_State_Back(ITEM *item, COLL_INFO *coll);
+0x004280C0 0x000B void __cdecl Lara_State_Null(ITEM *item, COLL_INFO *coll);
+0x004280D0 0x004B void __cdecl Lara_State_FastTurn(ITEM *item, COLL_INFO *coll);
+0x00428120 0x007C void __cdecl Lara_State_StepRight(ITEM *item, COLL_INFO *coll);
+0x004281A0 0x007C void __cdecl Lara_State_StepLeft(ITEM *item, COLL_INFO *coll);
+0x00428220 0x002B void __cdecl Lara_State_Slide(ITEM *item, COLL_INFO *coll);
+0x00428250 0x004A void __cdecl Lara_State_BackJump(ITEM *item, COLL_INFO *coll);
+0x004282A0 0x0033 void __cdecl Lara_State_RightJump(ITEM *item, COLL_INFO *coll);
+0x004282E0 0x0033 void __cdecl Lara_State_LeftJump(ITEM *item, COLL_INFO *coll);
+0x00428320 0x0013 void __cdecl Lara_State_UpJump(ITEM *item, COLL_INFO *coll);
+0x00428340 0x002C void __cdecl Lara_State_Fallback(ITEM *item, COLL_INFO *coll);
+0x00428370 0x0035 void __cdecl Lara_State_HangLeft(ITEM *item, COLL_INFO *coll);
+0x004283B0 0x0035 void __cdecl Lara_State_HangRight(ITEM *item, COLL_INFO *coll);
+0x004283F0 0x0018 void __cdecl Lara_State_SlideBack(ITEM *item, COLL_INFO *coll);
+0x00428410 0x0030 void __cdecl Lara_State_PushBlock(ITEM *item, COLL_INFO *coll);
+0x00428440 0x0027 void __cdecl Lara_State_PPReady(ITEM *item, COLL_INFO *coll);
+0x00428470 0x0030 void __cdecl Lara_State_Pickup(ITEM *item, COLL_INFO *coll);
+0x004284A0 0x0058 void __cdecl Lara_State_PickupFlare(ITEM *item, COLL_INFO *coll);
+0x00428500 0x0039 void __cdecl Lara_State_SwitchOn(ITEM *item, COLL_INFO *coll);
+0x00428540 0x0030 void __cdecl Lara_State_UseKey(ITEM *item, COLL_INFO *coll);
+0x00428570 0x001D void __cdecl Lara_State_Special(ITEM *item, COLL_INFO *coll);
+0x00428590 0x002F void __cdecl Lara_State_SwanDive(ITEM *item, COLL_INFO *coll);
+0x004285C0 0x0054 void __cdecl Lara_State_FastDive(ITEM *item, COLL_INFO *coll);
+0x00428620 0x0015 void __cdecl Lara_State_WaterOut(ITEM *item, COLL_INFO *coll);
+0x00428640 0x00CA void __cdecl Lara_State_Wade(ITEM *item, COLL_INFO *coll);
+0x00428710 0x0096 void __cdecl Lara_State_Zipline(ITEM *item, COLL_INFO *coll);
+0x004287B0 0x004C void __cdecl Lara_State_Extra_Breath(ITEM *item, COLL_INFO *coll);
+0x00428800 0x0047 void __cdecl Lara_State_Extra_YetiKill(ITEM *item, COLL_INFO *coll);
+0x00428850 0x0091 void __cdecl Lara_State_Extra_SharkKill(ITEM *item, COLL_INFO *coll);
+0x004288F0 0x0013 void __cdecl Lara_State_Extra_Airlock(ITEM *item, COLL_INFO *coll);
+0x00428910 0x001D void __cdecl Lara_State_Extra_GongBong(ITEM *item, COLL_INFO *coll);
+0x00428930 0x0051 void __cdecl Lara_State_Extra_DinoKill(ITEM *item, COLL_INFO *coll);
+0x00428990 0x00BC void __cdecl Lara_State_Extra_PullDagger(ITEM *item, COLL_INFO *coll);
+0x00428A50 0x004D void __cdecl Lara_State_Extra_StartAnim(ITEM *item, COLL_INFO *coll);
+0x00428AA0 0x00A5 void __cdecl Lara_State_Extra_StartHouse(ITEM *item, COLL_INFO *coll);
+0x00428B50 0x00A3 void __cdecl Lara_State_Extra_FinalAnim(ITEM *item, COLL_INFO *coll);
+0x00428C00 0x0051 int32_t __cdecl Lara_Fallen(ITEM *item, COLL_INFO *coll);
+0x00428C60 0x009B void __cdecl Lara_CollideStop(ITEM *item, COLL_INFO *coll);
+0x00428D20 0x0191 void __cdecl Lara_Col_Walk(ITEM *item, COLL_INFO *coll);
+0x00428EC0 0x0176 void __cdecl Lara_Col_Run(ITEM *item, COLL_INFO *coll);
+0x00429040 0x0081 void __cdecl Lara_Col_Stop(ITEM *item, COLL_INFO *coll);
+0x004290D0 0x00D7 void __cdecl Lara_Col_ForwardJump(ITEM *item, COLL_INFO *coll);
+0x004291B0 0x00B3 void __cdecl Lara_Col_FastBack(ITEM *item, COLL_INFO *coll);
+0x00429270 0x0095 void __cdecl Lara_Col_TurnRight(ITEM *item, COLL_INFO *coll);
+0x00429310 0x0013 void __cdecl Lara_Col_TurnLeft(ITEM *item, COLL_INFO *coll);
+0x00429330 0x0068 void __cdecl Lara_Col_Death(ITEM *item, COLL_INFO *coll);
+0x004293A0 0x0099 void __cdecl Lara_Col_FastFall(ITEM *item, COLL_INFO *coll);
+0x00429440 0x0127 void __cdecl Lara_Col_Hang(ITEM *item, COLL_INFO *coll);
+0x00429570 0x0090 void __cdecl Lara_Col_Reach(ITEM *item, COLL_INFO *coll);
+0x00429600 0x0059 void __cdecl Lara_Col_Splat(ITEM *item, COLL_INFO *coll);
+0x00429660 0x0013 void __cdecl Lara_Col_Land(ITEM *item, COLL_INFO *coll);
+0x00429680 0x0096 void __cdecl Lara_Col_Compress( ITEM *item, COLL_INFO *coll );
+0x00429720 0x00FB void __cdecl Lara_Col_Back(ITEM *item, COLL_INFO *coll);
+0x00429820 0x00BE void __cdecl Lara_Col_StepRight(ITEM *item, COLL_INFO *coll);
+0x004298E0 0x0013 void __cdecl Lara_Col_StepLeft(ITEM *item, COLL_INFO *coll);
+0x00429900 0x001E void __cdecl Lara_Col_Slide(ITEM *item, COLL_INFO *coll);
+0x00429920 0x0023 void __cdecl Lara_Col_BackJump(ITEM *item, COLL_INFO *coll);
+0x00429950 0x0023 void __cdecl Lara_Col_RightJump(ITEM *item, COLL_INFO *coll);
+0x00429980 0x0023 void __cdecl Lara_Col_LeftJump(ITEM *item, COLL_INFO *coll);
+0x004299B0 0x011B void __cdecl Lara_Col_UpJump(ITEM *item, COLL_INFO *coll);
+0x00429AD0 0x0083 void __cdecl Lara_Col_Fallback(ITEM *item, COLL_INFO *coll);
+0x00429B60 0x0033 void __cdecl Lara_Col_HangLeft(ITEM *item, COLL_INFO *coll);
+0x00429BA0 0x0033 void __cdecl Lara_Col_HangRight(ITEM *item, COLL_INFO *coll);
+0x00429BE0 0x0023 void __cdecl Lara_Col_SlideBack(ITEM *item, COLL_INFO *coll);
+0x00429C10 0x0013 void __cdecl Lara_Col_Null(ITEM *item, COLL_INFO *coll);
+0x00429C30 0x0081 void __cdecl Lara_Col_Roll(ITEM *item, COLL_INFO *coll);
+0x00429CC0 0x00B3 void __cdecl Lara_Col_Roll2(ITEM *item, COLL_INFO *coll);
+0x00429D80 0x0069 void __cdecl Lara_Col_SwanDive(ITEM *item, COLL_INFO *coll);
+0x00429DF0 0x0079 void __cdecl Lara_Col_FastDive(ITEM *item, COLL_INFO *coll);
+0x00429E70 0x0162 void __cdecl Lara_Col_Wade(ITEM *item, COLL_INFO *coll);
+0x00429FE0 0x0036 void __cdecl Lara_Col_Default(ITEM *item, COLL_INFO *coll);
+0x0042A020 0x0074 void __cdecl Lara_Col_Jumper(ITEM *item, COLL_INFO *coll);
+0x0042A0A0 0x0032 void __cdecl Lara_GetCollisionInfo(ITEM *item, COLL_INFO *coll);
+0x0042A0E0 0x00E2 void __cdecl Lara_SlideSlope(ITEM *item, COLL_INFO *coll);
+0x0042A1D0 0x0067 int32_t __cdecl Lara_HitCeiling(ITEM *item, COLL_INFO *coll);
+0x0042A240 0x007F int32_t __cdecl Lara_DeflectEdge(ITEM *item, COLL_INFO *coll);
+0x0042A2C0 0x0136 void __cdecl Lara_DeflectEdgeJump(ITEM *item, COLL_INFO *coll);
+0x0042A440 0x00AB void __cdecl Lara_SlideEdgeJump(ITEM *item, COLL_INFO *coll);
+0x0042A530 0x00E1 int32_t __cdecl Lara_TestWall(ITEM *item, int32_t front, int32_t right, int32_t down);
+0x0042A640 0x00F5 int32_t __cdecl Lara_TestHangOnClimbWall(ITEM *item, COLL_INFO *coll);
+0x0042A750 0x00BE int32_t __cdecl Lara_TestClimbStance(ITEM *item, COLL_INFO *coll);
+0x0042A810 0x033E void __cdecl Lara_HangTest(ITEM *item, COLL_INFO *coll);
+0x0042AB70 0x00AD int32_t __cdecl Lara_TestEdgeCatch(ITEM *item, COLL_INFO *coll, int32_t *edge);
+0x0042AC20 0x016D int32_t __cdecl Lara_TestHangJumpUp(ITEM *item, COLL_INFO *coll);
+0x0042AD90 0x019E int32_t __cdecl Lara_TestHangJump(ITEM *item, COLL_INFO *coll);
+0x0042AF30 0x00B1 int32_t __cdecl Lara_TestHangSwingIn(ITEM *item, int16_t angle);
+0x0042AFF0 0x02E7 int32_t __cdecl Lara_TestVault(ITEM *item, COLL_INFO *coll);
+0x0042B2E0 0x0130 int32_t __cdecl Lara_TestSlide(ITEM *item, COLL_INFO *coll);
+0x0042B410 0x0075 int16_t __cdecl Lara_FloorFront(ITEM *item, int16_t ang, int32_t dist);
+0x0042B490 0x00BB int32_t __cdecl Lara_LandedBad(ITEM *item, COLL_INFO *coll);
+0x0042B550 0x038F void __cdecl Lara_GetJointAbsPosition(XYZ_32 *vec, int32_t joint);
+0x0042B8E0 0x031A void __cdecl Lara_GetJointAbsPosition_I(ITEM *item, XYZ_32 *vec, int16_t *frame1, int16_t *frame2, int32_t frac, int32_t rate);
+
+# game/lara1gun.c
+0x0042BC00 0x0033 void __cdecl Gun_Rifle_DrawMeshes(LARA_GUN_TYPE weapon_type);
+0x0042BC40 0x002B void __cdecl Gun_Rifle_UndrawMeshes(LARA_GUN_TYPE weapon_type);
+0x0042BC70 0x0070 void __cdecl Gun_Rifle_Ready(LARA_GUN_TYPE weapon_type);
+0x0042BCE0 0x00F5 void __cdecl Gun_Rifle_Control(LARA_GUN_TYPE weapon_type);
+0x0042BDE0 0x00F2 void __cdecl Gun_Rifle_FireShotgun(void);
+0x0042BEE0 0x007B void __cdecl Gun_Rifle_FireM16(bool running);
+0x0042BF60 0x0187 void __cdecl Gun_Rifle_FireHarpoon(void);
+0x0042C0F0 0x0344 void __cdecl HarpoonBolt_Control(int16_t item_num);
+0x0042C440 0x00F0 void __cdecl Gun_Rifle_FireGrenade(void);
+0x0042C530 0x03FD void __cdecl Grenade_Control(int16_t item_num);
+0x0042C930 0x0166 void __cdecl Gun_Rifle_Draw(LARA_GUN_TYPE weapon_type);
+0x0042CAA0 0x0104 void __cdecl Gun_Rifle_Undraw(LARA_GUN_TYPE weapon_type);
+0x0042CBB0 0x037E void __cdecl Gun_Rifle_Animate(LARA_GUN_TYPE weapon_type);
+
+# game/lara2gun.c
+0x0042CF60 0x004F void __cdecl Gun_Pistols_SetArmInfo(LARA_ARM *arm, int32_t frame);
+0x0042CFB0 0x007C void __cdecl Gun_Pistols_Draw(LARA_GUN_TYPE weapon_type);
+0x0042D030 0x0225 void __cdecl Gun_Pistols_Undraw(LARA_GUN_TYPE weapon_type);
+0x0042D260 0x005C void __cdecl Gun_Pistols_Ready(LARA_GUN_TYPE weapon_type);
+0x0042D2C0 0x004E void __cdecl Gun_Pistols_DrawMeshes(LARA_GUN_TYPE weapon_type);
+0x0042D310 0x003A void __cdecl Gun_Pistols_UndrawMeshLeft(LARA_GUN_TYPE weapon_type);
+0x0042D350 0x003A void __cdecl Gun_Pistols_UndrawMeshRight(LARA_GUN_TYPE weapon_type);
+0x0042D390 0x018C void __cdecl Gun_Pistols_Control(LARA_GUN_TYPE weapon_type);
+0x0042D520 0x0330 void __cdecl Gun_Pistols_Animate(LARA_GUN_TYPE weapon_type);
+
+# game/laraclimb.c
+0x0042D850 0x0035 void __cdecl Lara_State_ClimbLeft(ITEM *item, COLL_INFO *coll);
+0x0042D890 0x0035 void __cdecl Lara_State_ClimbRight(ITEM *item, COLL_INFO *coll);
+0x0042D8D0 0x0075 void __cdecl Lara_State_ClimbStance(ITEM *item, COLL_INFO *coll);
+0x0042D950 0x0014 void __cdecl Lara_State_Climbing(ITEM *item, COLL_INFO *coll);
+0x0042D970 0x001E void __cdecl Lara_State_ClimbEnd(ITEM *item, COLL_INFO *coll);
+0x0042D990 0x0014 void __cdecl Lara_State_ClimbDown(ITEM *item, COLL_INFO *coll);
+0x0042D9B0 0x005D void __cdecl Lara_Col_ClimbLeft(ITEM *item, COLL_INFO *coll);
+0x0042DA10 0x0059 void __cdecl Lara_Col_ClimbRight(ITEM *item, COLL_INFO *coll);
+0x0042DA70 0x020D void __cdecl Lara_Col_ClimbStance(ITEM *item, COLL_INFO *coll);
+0x0042DC80 0x014D void __cdecl Lara_Col_Climbing(ITEM *item, COLL_INFO *coll);
+0x0042DDD0 0x019C void __cdecl Lara_Col_ClimbDown(ITEM *item, COLL_INFO *coll);
+0x0042DF70 0x00AA int32_t __cdecl Lara_CheckForLetGo(ITEM *item, COLL_INFO *coll);
+0x0042E020 0x0263 int32_t __cdecl Lara_TestClimb(int32_t x, int32_t y, int32_t z, int32_t xfront, int32_t zfront, int32_t item_height, int16_t item_room, int32_t *shift);
+0x0042E290 0x00BC int32_t __cdecl Lara_TestClimbPos(ITEM *item, int32_t front, int32_t right, int32_t origin, int32_t height, int32_t *shift);
+0x0042E360 0x00EF void __cdecl Lara_DoClimbLeftRight(ITEM *item, COLL_INFO *coll, int32_t result, int32_t shift);
+0x0042E450 0x0235 int32_t __cdecl Lara_TestClimbUpPos(ITEM *item, int32_t front, int32_t right, int32_t *shift, int32_t *ledge);
+
+# game/larafire.c
+0x0042E6A0 0x04E8 void __cdecl Gun_Control(void);
+0x0042EC10 0x003B int32_t __cdecl Gun_CheckForHoldingState(int32_t state);
+0x0042EC50 0x011C void __cdecl Gun_InitialiseNewWeapon(void);
+0x0042ED90 0x0194 void __cdecl Gun_TargetInfo(const WEAPON_INFO *winfo);
+0x0042EF30 0x021C void __cdecl Gun_GetNewTarget(WEAPON_INFO *winfo);
+0x0042F150 0x00AA void __cdecl Gun_FindTargetPoint(const ITEM *item, GAME_VECTOR *target);
+0x0042F200 0x00C1 void __cdecl Gun_AimWeapon(WEAPON_INFO *winfo, LARA_ARM *arm);
+0x0042F2D0 0x0360 int32_t __cdecl Gun_FireWeapon(LARA_GUN_TYPE weapon_type, ITEM *target, const ITEM *src, const int16_t *angles);
+0x0042F640 0x0096 void __cdecl Gun_HitTarget(ITEM *item, GAME_VECTOR *hitpos, int32_t damage);
+0x0042F6E0 0x0051 void __cdecl Gun_SmashItem(int16_t item_num, LARA_GUN_TYPE weapon_type);
+0x0042F740 0x003B GAME_OBJECT_ID Gun_GetWeaponAnim(const LARA_GUN_TYPE gun_type);
+
+# game/laraflare.c
+0x0042F7A0 0x009D int32_t __cdecl Flare_DoLight(XYZ_32 *pos, int32_t flare_age);
+0x0042F840 0x00D3 void __cdecl Flare_DoInHand(int32_t flare_age);
+0x0042F920 0x00F8 void __cdecl Flare_DrawInAir(const ITEM *item);
+0x0042FA20 0x01D7 void __cdecl Flare_Create(int32_t thrown);
+0x0042FC00 0x004B void __cdecl Flare_SetArm(int32_t frame);
+0x0042FC50 0x0169 void __cdecl Flare_Draw(void);
+0x0042FDC0 0x0221 void __cdecl Flare_Undraw(void);
+0x0042FFF0 0x0018 void __cdecl Flare_DrawMeshes(void);
+0x00430010 0x0018 void __cdecl Flare_UndrawMeshes(void);
+0x00430030 0x003E void __cdecl Flare_Ready(void);
+0x00430070 0x026E void __cdecl Flare_Control(int16_t item_num);
+
+# game/laramisc.c
+0x004302E0 0x0668 void __cdecl Lara_Control(int16_t item_num);
+0x00430970 0x02CD void __cdecl Lara_Animate(ITEM *item);
+0x00430C70 0x013F void __cdecl Lara_UseItem(GAME_OBJECT_ID object_id);
+0x00430E30 0x00BA void __cdecl Lara_CheatGetStuff(void);
+0x00430EF0 0x001B void __cdecl Lara_ControlExtra(int16_t item_num);
+0x00430F10 0x0021 void __cdecl Lara_InitialiseLoad(int16_t item_num);
+0x00430F40 0x02BD void __cdecl Lara_Initialise(int32_t type);
+0x00431200 0x036C void __cdecl Lara_InitialiseInventory(int32_t level_num);
+0x00431570 0x00FA void __cdecl Lara_InitialiseMeshes(int32_t level_num);
+
+# game/larasurf.c
+0x00431670 0x0158 void __cdecl Lara_HandleSurface(ITEM *item, COLL_INFO *coll);
+0x004317D0 0x0070 void __cdecl Lara_State_SurfSwim(ITEM *item, COLL_INFO *coll);
+0x00431840 0x005E void __cdecl Lara_State_SurfBack(ITEM *item, COLL_INFO *coll);
+0x004318A0 0x0060 void __cdecl Lara_State_SurfLeft(ITEM *item, COLL_INFO *coll);
+0x00431900 0x0060 void __cdecl Lara_State_SurfRight(ITEM *item, COLL_INFO *coll);
+0x00431960 0x00EB void __cdecl Lara_State_SurfTread(ITEM *item, COLL_INFO *coll);
+0x00431A50 0x0032 void __cdecl Lara_Col_SurfSwim(ITEM *item, COLL_INFO *coll);
+0x00431A90 0x0023 void __cdecl Lara_Col_SurfBack(ITEM *item, COLL_INFO *coll);
+0x00431AC0 0x0023 void __cdecl Lara_Col_SurfLeft(ITEM *item, COLL_INFO *coll);
+0x00431AF0 0x0023 void __cdecl Lara_Col_SurfRight(ITEM *item, COLL_INFO *coll);
+0x00431B20 0x001E void __cdecl Lara_Col_SurfTread(ITEM *item, COLL_INFO *coll);
+0x00431B40 0x00F3 void __cdecl Lara_SurfaceCollision(ITEM *item, COLL_INFO *coll);
+0x00431C40 0x00E7 int32_t __cdecl Lara_TestWaterStepOut(ITEM *item, COLL_INFO *coll);
+0x00431D30 0x021C int32_t __cdecl Lara_TestWaterClimbOut(ITEM *item, COLL_INFO *coll);
+
+# game/laraswim.c
+0x00431F50 0x0223 void __cdecl Lara_HandleUnderwater(ITEM *item, COLL_INFO *coll);
+0x00432180 0x0086 void __cdecl Lara_SwimTurn(ITEM *item);
+0x00432210 0x006B void __cdecl Lara_State_Swim(ITEM *item, COLL_INFO *coll);
+0x00432280 0x0076 void __cdecl Lara_State_Glide(ITEM *item, COLL_INFO *coll);
+0x00432300 0x0085 void __cdecl Lara_State_Tread(ITEM *item, COLL_INFO *coll);
+0x00432390 0x0014 void __cdecl Lara_State_Dive(ITEM *item, COLL_INFO *coll);
+0x004323B0 0x0053 void __cdecl Lara_State_UWDeath(ITEM *item, COLL_INFO *coll);
+0x00432410 0x000B void __cdecl Lara_State_UWTwist(ITEM *item, COLL_INFO *coll);
+0x00432420 0x0013 void __cdecl Lara_Col_Swim(ITEM *item, COLL_INFO *coll);
+0x00432440 0x005B void __cdecl Lara_Col_UWDeath(ITEM *item, COLL_INFO *coll);
+0x004324A0 0x0192 int32_t __cdecl Lara_GetWaterDepth(int32_t x, int32_t y, int32_t z, int16_t room_num);
+0x00432640 0x00CE void __cdecl Lara_TestWaterDepth(ITEM *item, COLL_INFO *coll);
+0x00432710 0x015C void __cdecl Lara_SwimCollision(ITEM *item, COLL_INFO *coll);
+0x00432870 0x01EC void __cdecl Lara_WaterCurrent(COLL_INFO *coll);
+
+# game/lot.c
+0x00432A60 0x0053 void __cdecl LOT_InitialiseArray(void);
+0x00432AC0 0x004F void __cdecl LOT_DisableBaddieAI(int16_t item_num);
+0x00432B10 0x01B0 bool __cdecl LOT_EnableBaddieAI(int16_t item_num, bool always);
+0x00432CC0 0x0106 void __cdecl LOT_InitialiseSlot(int16_t item_num, int32_t slot);
+0x00432ED0 0x00B8 void __cdecl LOT_CreateZone(ITEM *item);
+0x00432F90 0x0049 void __cdecl LOT_ClearLOT(LOT_INFO *lot);
+
+# game/missile.c
+0x00432FE0 0x02D0 void __cdecl Missile_Control(int16_t fx_num);
+0x004332B0 0x00A7 void __cdecl Missile_ShootAtLara(FX *fx);
+0x00433360 0x0386 int32_t __cdecl Effect_ExplodingDeath(int16_t item_num, int32_t mesh_bits, int16_t damage);
+0x004336F0 0x0200 void __cdecl BodyPart_Control(int16_t fx_num);
+
+# game/moveblock.c
+0x004338F0 0x002C void __cdecl MovableBlock_Initialise(int16_t item_num);
+0x00433920 0x0148 void __cdecl MovableBlock_Control(int16_t item_num);
+0x00433A70 0x0239 void __cdecl MovableBlock_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00433CD0 0x004E int32_t __cdecl MovableBlock_TestDestination(ITEM *item, int32_t block_height);
+0x00433D20 0x0137 int32_t __cdecl MovableBlock_TestPush(ITEM *item, int32_t block_height, uint16_t quadrant);
+0x00433E70 0x0225 int32_t __cdecl MovableBlock_TestPull(ITEM *item, int32_t block_height, uint16_t quadrant);
+0x004340B0 0x00BB void __cdecl Room_AlterFloorHeight(ITEM *item, int32_t height);
+0x00434170 0x0022 void __cdecl MovableBlock_Draw(const ITEM *item);
+0x004341A0 0x006B void __cdecl Object_DrawUnclippedItem(const ITEM *item);
+
+# game/objects.c
+0x00434210 0x00DB void __cdecl Earthquake_Control(int16_t item_num);
+0x004342F0 0x003C void __cdecl FinalCutscene_Control(int16_t item_num);
+0x00434330 0x009D void __cdecl InitialiseFinalLevel(void);
+0x00434400 0x020F void __cdecl FinalLevelCounter_Control(int16_t item_num);
+0x00434610 0x00D9 void __cdecl MiniCopter_Control(int16_t item_num);
+0x004346F0 0x007C void __cdecl DyingMonk_Initialise(int16_t item_num);
+0x00434770 0x0087 void __cdecl DyingMonk_Control(int16_t item_num);
+0x00434800 0x00BD void __cdecl GongBonger_Control(int16_t item_num);
+0x004348C0 0x00BF void __cdecl Zipline_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00434980 0x028F void __cdecl Zipline_Control(int16_t item_num);
+0x00434C10 0x00E3 void __cdecl BigBowl_Control(int16_t item_num);
+0x00434D00 0x007E void __cdecl Bell_Control(int16_t item_num);
+0x00434D80 0x0075 void __cdecl Window_Initialise(int16_t item_num);
+0x00434E00 0x00C4 void __cdecl Window_Smash(int16_t item_num);
+0x00434ED0 0x0096 void __cdecl Window_1_Control(int16_t item_num);
+0x00434F70 0x00DC void __cdecl Window_2_Control(int16_t item_num);
+0x00435050 0x0042 void __cdecl Door_Shut(DOORPOS_DATA *d);
+0x004350A0 0x0032 void __cdecl Door_Open(DOORPOS_DATA *d);
+0x004350E0 0x03DC void __cdecl Door_Initialise(int16_t item_num);
+0x004354C0 0x00C8 void __cdecl Door_Control(int16_t item_num);
+0x00435590 0x00B1 int32_t __cdecl Drawbridge_IsItemOnTop(const ITEM *item, int32_t x, int32_t y);
+0x00435650 0x0036 void __cdecl Drawbridge_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435690 0x003B void __cdecl Drawbridge_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x004356D0 0x002C void __cdecl Drawbridge_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00435700 0x0035 void __cdecl Lift_Initialise(int16_t item_num);
+0x00435740 0x00D4 void __cdecl Lift_Control(int16_t item_num);
+0x00435820 0x0179 void __cdecl Lift_FloorCeiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *floor, int32_t *ceiling);
+0x004359A0 0x0035 void __cdecl Lift_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x004359E0 0x0035 void __cdecl Lift_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435A20 0x0016 void __cdecl BridgeFlat_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435A40 0x001B void __cdecl BridgeFlat_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435A60 0x003B int32_t __cdecl Bridge_GetOffset(const ITEM *item, int32_t x, int32_t z);
+0x00435AA0 0x0030 void __cdecl BridgeTilt1_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435AD0 0x0035 void __cdecl BridgeTilt1_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435B10 0x002F void __cdecl BridgeTilt2_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435B40 0x0034 void __cdecl BridgeTilt2_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00435B80 0x010C void __cdecl Copter_Control(int16_t item_num);
+0x00435C90 0x00D2 void __cdecl General_Control(int16_t item_num);
+0x00435D70 0x008D void __cdecl Detonator_Control(int16_t item_num);
+
+# game/people.c
+0x00435E00 0x0085 bool __cdecl Creature_CanTargetEnemy(const ITEM *item, const AI_INFO *info);
+0x00435E90 0x003B void __cdecl Glow_Control(int16_t fx_num);
+0x00435ED0 0x004E void __cdecl GunFlash_Control(int16_t fx_num);
+0x00435F20 0x0066 int16_t __cdecl Effect_GunShot(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
+0x00435F90 0x00B9 int16_t __cdecl Effect_GunHit(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
+0x00436050 0x00A7 int16_t __cdecl Effect_GunMiss(int32_t x, int32_t y, int32_t z, int16_t speed, int16_t y_rot, int16_t room_num);
+0x00436100 0x01C4 int32_t __cdecl Creature_ShootAtLara(ITEM *item, AI_INFO *info, BITE *gun, int16_t extra_rotation, int32_t damage);
+0x004362D0 0x0043 void __cdecl Cultist1_Initialise(int16_t item_num);
+0x00436320 0x0401 void __cdecl Cultist1_Control(int16_t item_num);
+0x00436750 0x0050 void __cdecl Cultist3_Initialise(int16_t item_num);
+0x004367A0 0x053C void __cdecl Cultist3_Control(int16_t item_num);
+0x00436D10 0x03CA void __cdecl Worker1_Control(int16_t item_num);
+0x00437110 0x042A void __cdecl Worker2_Control(int16_t item_num);
+0x00437570 0x030B void __cdecl Bandit1_Control(int16_t item_num);
+0x004378B0 0x0408 void __cdecl Bandit2_Control(int16_t item_num);
+0x00437CF0 0x0172 void __cdecl Winston_Control(int16_t item_num);
+
+# game/pickup.c
+0x00437E70 0x0480 void __cdecl Pickup_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x004382F0 0x020A void __cdecl Switch_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00438500 0x00FC void __cdecl Switch_CollisionUW(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00438600 0x023B void __cdecl Detonator_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00438840 0x0223 void __cdecl Keyhole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00438A80 0x0294 void __cdecl PuzzleHole_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+0x00438D40 0x0039 void __cdecl Switch_Control(int16_t item_num);
+0x00438D80 0x00BD int32_t __cdecl Switch_Trigger(int16_t item_num, int16_t timer);
+0x00438E40 0x003D int32_t __cdecl Keyhole_Trigger(int16_t item_num);
+0x00438E80 0x0033 int32_t __cdecl Pickup_Trigger(int16_t item_num);
+0x00438EC0 0x0023 void __cdecl Secret2_Control(int16_t item_num);
+
+# game/rat.c
+0x00438EF0 0x01DC void __cdecl Mouse_Control(int16_t item_num);
+
+# game/savegame.c
+0x004390E0 0x0062 void __cdecl InitialiseStartInfo(void);
+0x00439150 0x00DB void __cdecl ModifyStartInfo(int32_t level_num);
+0x00439230 0x0201 void __cdecl CreateStartInfo(int32_t level_num);
+0x00439440 0x052B void __cdecl CreateSaveGameInfo(void);
+0x00439970 0x085C void __cdecl ExtractSaveGameInfo(void);
+0x0043A1D0 0x0015 void __cdecl ResetSG(void);
+0x0043A1F0 0x004C void __cdecl WriteSG(const void *pointer, int32_t size);
+0x0043A240 0x0035 void __cdecl ReadSG(void *pointer, int32_t size);
+
+# game/setup.c
+0x0043A280 0x015F int32_t __cdecl Level_Initialise(int32_t level_num, int32_t level_type);
+0x0043A3E0 0x0061 void __cdecl InitialiseGameFlags(void);
+0x0043A450 0x0027 void __cdecl InitialiseLevelFlags(void);
+0x0043A480 0x103B void __cdecl Object_SetupBaddyObjects(void);
+0x0043B4C0 0x05FD void __cdecl Object_SetupTrapObjects(void);
+0x0043BAC0 0x0C4C void __cdecl Object_SetupGeneralObjects(void);
+0x0043C710 0x0068 void __cdecl Object_SetupAllObjects(void);
+0x0043C780 0x00CE void __cdecl GetCarriedItems(void);
+
+# game/shark.c
+0x0043C850 0x0116 void __cdecl Jelly_Control(int16_t item_num);
+0x0043C970 0x021B void __cdecl Barracuda_Control(int16_t item_num);
+0x0043CBA0 0x027C void __cdecl Shark_Control(int16_t item_num);
+
+# game/skidoo.c
+0x0043CE30 0x0040 void __cdecl Skidoo_Initialise(int16_t item_num);
+0x0043CE70 0x00E1 int32_t __cdecl Skidoo_CheckGetOn(int16_t item_num, COLL_INFO *coll);
+0x0043CF60 0x00F8 void __cdecl Skidoo_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
+0x0043D060 0x01F9 void __cdecl Skidoo_BaddieCollision(const ITEM *skidoo);
+0x0043D260 0x00B2 int32_t __cdecl Skidoo_TestHeight(const ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);
+0x0043D320 0x027C int32_t __cdecl DoShift(ITEM *skidoo, XYZ_32 *pos, XYZ_32 *old);
+0x0043D5A0 0x0054 int32_t __cdecl DoDynamics(int32_t height, int32_t fall_speed, int32_t *y);
+0x0043D600 0x0090 int32_t __cdecl GetCollisionAnim(ITEM *skidoo, XYZ_32 *moved);
+0x0043D690 0x0140 void __cdecl Skidoo_DoSnowEffect(ITEM *skidoo);
+0x0043D7D0 0x049E int32_t __cdecl Skidoo_Dynamics(ITEM *skidoo);
+0x0043DC70 0x01B6 int32_t __cdecl Skidoo_UserControl(ITEM *skidoo, int32_t height, int32_t *pitch);
+0x0043DE30 0x0106 int32_t __cdecl Skidoo_CheckGetOffOK(int32_t direction);
+0x0043DF40 0x02B9 void __cdecl Skidoo_Animation(ITEM *skidoo, int32_t collide, int32_t dead);
+0x0043E220 0x007C void __cdecl Skidoo_Explode(const ITEM *skidoo);
+0x0043E2A0 0x0233 int32_t __cdecl Skidoo_CheckGetOff(void);
+0x0043E4E0 0x011B void __cdecl Skidoo_Guns(void);
+0x0043E600 0x0440 int32_t __cdecl Skidoo_Control(void);
+0x0043EA60 0x02D5 void __cdecl Skidoo_Draw(const ITEM *item);
+0x0043ED40 0x007F void __cdecl SkidooDriver_Initialise(int16_t item_num);
+0x0043EDD0 0x03E2 void __cdecl SkidooDriver_Control(int16_t rider_num);
+0x0043F1D0 0x0119 void __cdecl SkidooArmed_Push(const ITEM *item, ITEM *lara_item, int32_t radius);
+0x0043F2F0 0x0081 void __cdecl SkidooArmed_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
+
+# game/sound.c
+0x0043F380 0x0031 int32_t __cdecl Music_GetRealTrack(int32_t track);
+0x0043F3C0 0x0484 void __cdecl Sound_Effect(int32_t sample_id, const XYZ_32 *pos, uint32_t flags);
+0x0043F860 0x005E void __cdecl Sound_StopEffect(int32_t sample_id);
+0x0043F8C0 0x0086 void __cdecl Sound_EndScene(void);
+0x0043F950 0x0024 void __cdecl Sound_Shutdown(void);
+0x0043F980 0x002A void __cdecl Sound_Init(void);
+
+# game/sphere.c
+0x0043F9B0 0x0128 int32_t __cdecl Collide_TestCollision(ITEM *item, const ITEM *lara_item);
+0x0043FAE0 0x02D8 int32_t __cdecl Collide_GetSpheres(const ITEM *item, SPHERE *spheres, bool world_space);
+0x0043FDC0 0x019A void __cdecl Collide_GetJointAbsPosition(const ITEM *item, XYZ_32 *out_vec, int32_t joint);
+0x0043FF60 0x005D void __cdecl TeethTrap_Bite(ITEM *item, const BITE *bite);
+
+# game/spider.c
+0x0043FFC0 0x00AC void __cdecl Spider_Leap(int16_t item_num, int16_t angle);
+0x00440070 0x0206 void __cdecl Spider_Control(int16_t item_num);
+0x00440290 0x01A5 void __cdecl BigSpider_Control(int16_t item_num);
+
+# game/text.c
+0x00440450 0x002C void __cdecl Text_Init(void);
+0x00440480 0x0105 TEXTSTRING *__cdecl Text_Create(int32_t x, int32_t y, int32_t z, const char *text);
+0x00440590 0x0037 void __cdecl Text_ChangeText(TEXTSTRING *string, const char *text);
+0x004405D0 0x0017 void __cdecl Text_SetScale(TEXTSTRING *string, int32_t scale_h, int32_t scale_v);
+0x004405F0 0x002B void __cdecl Text_Flash(TEXTSTRING *string, int16_t enable, int16_t rate);
+0x00440620 0x008C void __cdecl Text_AddBackground(TEXTSTRING *string, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t color, uint16_t *gour_ptr, uint16_t flags);
+0x004406B0 0x0010 void __cdecl Text_RemoveBackground(TEXTSTRING *string);
+0x004406C0 0x0029 void __cdecl Text_AddOutline(TEXTSTRING *string, int16_t enable, int16_t color, uint16_t *gour_ptr, uint16_t flags);
+0x004406F0 0x0010 void __cdecl Text_RemoveOutline(TEXTSTRING *string);
+0x00440700 0x001E void __cdecl Text_CentreH(TEXTSTRING *string, int16_t enable);
+0x00440720 0x001E void __cdecl Text_CentreV(TEXTSTRING *string, int16_t enable);
+0x00440740 0x001E void __cdecl Text_AlignRight(TEXTSTRING *string, int16_t enable);
+0x00440760 0x001E void __cdecl Text_AlignBottom(TEXTSTRING *string, int16_t enable);
+0x00440780 0x0107 int32_t __cdecl Text_GetWidth(TEXTSTRING *string);
+0x00440890 0x0025 int32_t __cdecl Text_Remove(TEXTSTRING *string);
+0x004408C0 0x0024 int16_t __cdecl Text_GetTextLength(const char *text);
+0x004408F0 0x0027 void __cdecl Text_Draw(void);
+0x00440920 0x0189 void __cdecl Text_DrawBorder(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height);
+0x00440AB0 0x03D2 void __cdecl Text_DrawText(const TEXTSTRING *string);
+0x00440E90 0x0037 uint32_t __cdecl Text_GetScaleH(uint32_t value);
+0x00440ED0 0x0039 uint32_t __cdecl Text_GetScaleV(uint32_t value);
+
+# game/traps.c
+0x00440F10 0x01F4 void __cdecl Mine_Control(int16_t mine_num);
+0x00441110 0x0138 void __cdecl SpikeWall_Control(int16_t item_num);
+0x00441250 0x0115 void __cdecl SpikeCeiling_Control(int16_t item_num);
+0x00441370 0x0086 void __cdecl Hook_Control(int16_t item_num);
+0x00441400 0x0190 void __cdecl Propeller_Control(int16_t item_num);
+0x00441590 0x017B void __cdecl SpinningBlade_Control(int16_t item_num);
+0x00441710 0x00FE void __cdecl Icicle_Control(int16_t item_num);
+0x00441810 0x003C void __cdecl Blade_Initialise(int16_t item_num);
+0x00441850 0x0091 void __cdecl Blade_Control(int16_t item_num);
+0x004418F0 0x0046 void __cdecl KillerStatue_Initialise(int16_t item_num);
+0x00441940 0x0109 void __cdecl KillerStatue_Control(int16_t item_num);
+0x00441A50 0x00DB void __cdecl Springboard_Control(int16_t item_num);
+0x00441B30 0x003C void __cdecl RollingBall_Initialise(int16_t item_num);
+0x00441B70 0x0347 void __cdecl RollingBall_Control(int16_t item_num);
+0x00441EC0 0x024A void __cdecl RollingBall_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
+0x00442110 0x0155 void __cdecl Spikes_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);
+0x00442270 0x004F void __cdecl Trapdoor_Control(int16_t item_num);
+0x004422C0 0x003A void __cdecl Trapdoor_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00442300 0x003F void __cdecl Trapdoor_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00442340 0x00A3 int32_t __cdecl Trapdoor_IsItemOnTop(const ITEM *item, int32_t x, int32_t z);
+0x004423F0 0x010A void __cdecl Pendulum_Control(int16_t item_num);
+0x00442500 0x0105 void __cdecl FallingBlock_Control(int16_t item_num);
+0x00442610 0x003E void __cdecl FallingBlock_Floor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x00442650 0x0044 void __cdecl FallingBlock_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
+0x004426A0 0x00BD void __cdecl TeethTrap_Control(int16_t item_num);
+0x00442760 0x00E0 void __cdecl FallingCeiling_Control(int16_t item_num);
+0x00442840 0x013E void __cdecl DartEmitter_Control(int16_t item_num);
+0x00442980 0x0155 void __cdecl Dart_Control(int16_t item_num);
+0x00442AE0 0x004B void __cdecl DartEffect_Control(int16_t fx_num);
+0x00442B30 0x0090 void __cdecl FlameEmitter_Control(int16_t item_num);
+0x00442BC0 0x0164 void __cdecl Flame_Control(int16_t fx_num);
+0x00442D30 0x0049 void __cdecl Lara_CatchFire(void);
+0x00442D80 0x00E6 void __cdecl Lara_TouchLava(ITEM *item);
+0x00442E70 0x00C5 void __cdecl EmberEmitter_Control(int16_t item_num);
+0x00442F40 0x010B void __cdecl Ember_Control(int16_t fx_num);
+
+# game/yeti.c
+0x00443050 0x02CA void __cdecl BirdGuardian_Control(int16_t item_num);
+0x00443350 0x05ED void __cdecl Yeti_Control(int16_t item_num);
+
+0x00443990 0x01B8 void __cdecl BGND_Make640x480(uint8_t *bitmap, RGB_888 *palette);
+0x00443B50 0x00B9 int32_t __cdecl BGND_AddTexture(int32_t tile_idx, BYTE *bitmap, int32_t pal_index, RGB_888 *bmp_pal);
+0x00443C10 0x0032 void __cdecl BGND_GetPageHandles(void);
+0x00443C50 0x005F void __cdecl BGND_DrawInGameBlack(void);
+0x00443CB0 0x00DC void __cdecl BGND_DrawQuad(float sx, float sy, float width, float height, D3DCOLOR color);
+0x00443D90 0x0220 void __cdecl BGND_DrawInGameBackground(void);
+0x00443FB0 0x0251 void __cdecl BGND_DrawTextureTile(int32_t sx, int32_t sy, int32_t width, int32_t height, HWR_TEXTURE_HANDLE tex_source, int32_t tu, int32_t tv, int32_t t_width, int32_t t_height, D3DCOLOR color0, D3DCOLOR color1, D3DCOLOR color2, D3DCOLOR color3);
+0x00444210 0x008B D3DCOLOR __cdecl BGND_CenterLighting(int32_t x, int32_t y, int32_t width, int32_t height);
+0x004444C0 0x004D void __cdecl BGND_Free(void);
+0x00444510 0x0030 bool __cdecl BGND_Init(void);
+0x00444540 0x003E void __cdecl Enumerate3DDevices(DISPLAY_ADAPTER *adapter);
+0x00444570 0x001F bool __cdecl D3DCreate(void);
+0x004445B0 0x00BD HRESULT __stdcall Enum3DDevicesCallback(GUID *lpGuid, LPTSTR lpDeviceDescription, LPTSTR lpDeviceName, LPD3DDEVICEDESC lpD3DHWDeviceDesc, LPD3DDEVICEDESC lpD3DHELDeviceDesc, LPVOID lpContext);
+0x00444670 0x0037 bool __cdecl D3DIsSupported(LPD3DDEVICEDESC desc);
+0x004446B0 0x00B9 bool __cdecl D3DSetViewport(void);
+0x00444770 0x01B8 void __cdecl D3DDeviceCreate(LPDDS lpBackBuffer);
+0x00444930 0x006A void __cdecl Direct3DRelease(void);
+0x00444980 0x0006 bool __cdecl Direct3DInit(void);
+0x00444990 0x0018 sub_444990
+0x004449A0 0x0012 sub_4449A0
+0x004449D0 0x00C6 sub_4449D0
+0x00444AA0 0x0018 sub_444AA0
+0x00444AB0 0x005F sub_444AB0
+0x00444B20 0x008C sub_444B20
+0x00444BB0 0x0005 sub_444BB0
+0x00444BC0 0x0001 sub_444BC0
+0x00444BD0 0x0054 bool __cdecl DDrawCreate(LPGUID lpGUID);
+0x00444C30 0x0033 void __cdecl DDrawRelease(void);
+0x00444C70 0x0073 void __cdecl GameWindowCalculateSizeFromClient(int32_t *width, int32_t *height);
+0x00444CF0 0x006A void __cdecl GameWindowCalculateSizeFromClientByZero(int32_t *width, int32_t *height);
+0x00444D60 0x0041 void __cdecl WinVidSetMinWindowSize(int32_t width, int32_t height);
+0x00444DB0 0x0008 void __cdecl WinVidClearMinWindowSize(void);
+0x00444DC0 0x0041 void __cdecl WinVidSetMaxWindowSize(int32_t width, int32_t height);
+0x00444E10 0x0008 void __cdecl WinVidClearMaxWindowSize(void);
+0x00444E20 0x0048 int32_t __cdecl CalculateWindowWidth(int32_t width, int32_t height);
+0x00444E70 0x0028 int32_t __cdecl CalculateWindowHeight(int32_t width, int32_t height);
+0x00444EA0 0x0104 bool __cdecl WinVidGetMinMaxInfo(LPMINMAXINFO info);
+0x00444FB0 0x0011 HWND __cdecl WinVidFindGameWindow(void);
+0x00444FD0 0x00E2 bool __cdecl WinVidSpinMessageLoop(bool needWait);
+0x004450C0 0x0043 void __cdecl WinVidShowGameWindow(int32_t nCmdShow);
+0x00445110 0x003A void __cdecl WinVidHideGameWindow(void);
+0x00445150 0x0035 void __cdecl WinVidSetGameWindowSize(int32_t width, int32_t height);
+0x00445190 0x00A7 bool __cdecl ShowDDrawGameWindow(bool active);
+0x00445240 0x0087 bool __cdecl HideDDrawGameWindow(void);
+0x004452D0 0x0044 HRESULT __cdecl DDrawSurfaceCreate(LPDDSDESC dsp, LPDDS *surface);
+0x00445320 0x0046 HRESULT __cdecl DDrawSurfaceRestoreLost(LPDDS surface1, LPDDS surface2, bool blank);
+0x00445370 0x004D bool __cdecl WinVidClearBuffer(LPDDS surface, LPRECT rect, DWORD fill_color);
+0x004453C0 0x003D HRESULT __cdecl WinVidBufferLock(LPDDS surface, LPDDSDESC desc, DWORD flags);
+0x00445400 0x0025 HRESULT __cdecl WinVidBufferUnlock(LPDDS surface, LPDDSDESC desc);
+0x00445430 0x0090 bool __cdecl WinVidCopyBitmapToBuffer(LPDDS surface, const BYTE *bitmap);
+0x004454C0 0x0046 DWORD __cdecl GetRenderBitDepth(DWORD dwRGBBitCount);
+0x00445550 0x0071 void __thiscall WinVidGetColorBitMasks(COLOR_BIT_MASKS *bm, LPDDPIXELFORMAT pixel_format);
+0x004455D0 0x0044 void __cdecl BitMaskGetNumberOfBits(uint32_t bit_mask, uint32_t *bit_depth, uint32_t *bit_offset);
+0x00445620 0x0061 DWORD __cdecl CalculateCompatibleColor(COLOR_BIT_MASKS *mask, int32_t red, int32_t green, int32_t blue, int32_t alpha);
+0x00445690 0x008C bool __cdecl WinVidGetDisplayMode(DISPLAY_MODE *disp_mode);
+0x00445720 0x0088 bool __cdecl WinVidGoFullScreen(DISPLAY_MODE *disp_mode);
+0x004457B0 0x010B bool __cdecl WinVidGoWindowed(int32_t width, int32_t height, DISPLAY_MODE *dispMode);
+0x004458C0 0x00D5 void __cdecl WinVidSetDisplayAdapter(DISPLAY_ADAPTER *disp_adapter);
+0x004459A0 0x0045 bool __thiscall CompareVideoModes(const DISPLAY_MODE *mode1, const DISPLAY_MODE *mode2);
+0x004459F0 0x0053 bool __cdecl WinVidGetDisplayModes(void);
+0x00445A50 0x03B1 HRESULT __stdcall EnumDisplayModesCallback(LPDDSDESC lpDDSurfaceDesc, LPVOID lpContext);
+0x00445E10 0x0040 bool __cdecl WinVidInit(void);
+0x00445E50 0x00AF bool __cdecl WinVidGetDisplayAdapters(void);
+0x00445F00 0x0013 void __thiscall S_FlaggedString_Delete(STRING_FLAGGED *string);
+0x00445F20 0x001A bool __cdecl EnumerateDisplayAdapters(DISPLAY_ADAPTER_LIST *displayAdapterList);
+0x00445F40 0x01BE BOOL __stdcall EnumDisplayAdaptersCallback(GUID *lpGUID, LPTSTR lpDriverDescription, LPTSTR lpDriverName, LPVOID lpContext);
+0x00446100 0x0035 void __thiscall S_FlaggedString_InitAdapter(DISPLAY_ADAPTER *adapter);
+0x00446140 0x006A bool __cdecl WinVidRegisterGameWindowClass(void);
+0x004461B0 0x049F LRESULT __stdcall WinVidGameWindowProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
+0x004467C0 0x01C0 void __cdecl WinVidResizeGameWindow(HWND hWnd, int32_t edge, LPRECT rect);
+0x004469A0 0x00BC bool __cdecl WinVidCheckGameWindowPalette(HWND hWnd);
+0x00446A60 0x00C6 bool __cdecl WinVidCreateGameWindow(void);
+0x00446B30 0x0022 void __cdecl WinVidFreeWindow(void);
+0x00446B60 0x004D void __cdecl WinVidExitMessage(void);
+0x00446BB0 0x0048 DISPLAY_ADAPTER_NODE *__cdecl WinVidGetDisplayAdapter(GUID *lpGuid);
+0x00446C00 0x0374 void __cdecl WinVidStart(void);
+0x00446F80 0x0013 void __cdecl WinVidFinish(void);
+0x00446FA0 0x000D void __thiscall DisplayModeListInit(DISPLAY_MODE_LIST *pList);
+0x00446FB0 0x0032 void __thiscall DisplayModeListDelete(DISPLAY_MODE_LIST *pList);
+0x00446FF0 0x0012 DISPLAY_MODE *__thiscall InsertDisplayMode(DISPLAY_MODE_LIST *modeList, DISPLAY_MODE_NODE *before);
+0x00447010 0x0048 DISPLAY_MODE *__thiscall InsertDisplayModeInListHead(DISPLAY_MODE_LIST *modeList);
+0x00447060 0x004A DISPLAY_MODE *__thiscall InsertDisplayModeInListTail(DISPLAY_MODE_LIST *modeList);
+0x004470B0 0x0018 sub_4470B0
+0x004470C0 0x0012 sub_4470C0
+0x004470F0 0x0068 sub_4470F0
+0x00447160 0x0018 sub_447160
+0x00447170 0x0039 sub_447170
+0x004471C0 0x002F sub_4471C0
+0x004471F0 0x0022 bool __cdecl DInputCreate(void);
+0x00447220 0x001A void __cdecl DInputRelease(void);
+0x00447240 0x005A void __cdecl WinInReadKeyboard(LPVOID lpInputData);
+0x004472A0 0x00F3 DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);
+0x004473A0 0x0005 sub_4473A0
+0x004473B0 0x007F bool __cdecl WinInputInit(void);
+0x00447430 0x0024 bool __cdecl DInputEnumDevices(JOYSTICK_LIST *joystickList);
+0x00447460 0x00E8 BOOL __stdcall DInputEnumDevicesCallback(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef);
+0x00447550 0x001F void __thiscall S_FlaggedString_Create(STRING_FLAGGED *string, int32_t size);
+0x00447570 0x004E JOYSTICK_NODE *__cdecl GetJoystick(GUID *lpGuid);
+0x004475C0 0x00C9 void __cdecl DInputKeyboardCreate(void);
+0x00447690 0x0029 void __cdecl DInputKeyboardRelease(void);
+0x004476C0 0x00E4 bool __cdecl DInputJoystickCreate(void);
+0x004477B0 0x002D void __cdecl WinInStart(void);
+0x004477E0 0x000F void __cdecl WinInFinish(void);
+0x004477F0 0x0017 void __cdecl WinInRunControlPanel(HWND hWnd);
+0x00447810 0x0062 void __cdecl IncreaseScreenSize(void);
+0x00447880 0x0062 void __cdecl DecreaseScreenSize(void);
+0x004478F0 0x009F void __cdecl setup_screen_size(void);
+0x00447990 0x0034 void __cdecl TempVideoAdjust(int32_t hires, double sizer);
+0x004479D0 0x0039 void __cdecl TempVideoRemove(void);
+0x00447A10 0x0035 void __cdecl S_FadeInInventory(BOOL isFade);
+0x00447A50 0x0027 void __cdecl S_FadeOutInventory(BOOL isFade);
+0x00447A80 0x0018 sub_447A80
+0x00447A90 0x0012 sub_447A90
+0x00447AC0 0x0068 sub_447AC0
+0x00447B30 0x0018 sub_447B30
+0x00447B40 0x0039 sub_447B40
+0x00447B90 0x002F sub_447B90
+0x00447BC0 0x0048 const SOUND_ADAPTER_NODE *__cdecl S_Audio_Sample_GetAdapter(GUID *guid);
+0x00447C10 0x002E void __cdecl S_Audio_Sample_CloseAllTracks(void);
+0x00447C40 0x010E bool __cdecl S_Audio_Sample_Load(int32_t sample_id, LPWAVEFORMATEX format, const void *data, int32_t data_size);
+0x00447D50 0x0045 bool __cdecl S_Audio_Sample_IsTrackPlaying(int32_t track_id);
+0x00447DA0 0x00E7 int32_t __cdecl S_Audio_Sample_Play(int32_t sample_id, int32_t volume, int32_t pitch, int32_t pan, int32_t flags);
+0x00447E90 0x0039 int32_t __cdecl S_Audio_Sample_GetFreeTrackIndex(void);
+0x00447ED0 0x002C void __cdecl S_Audio_Sample_AdjustTrackVolumeAndPan(int32_t track_id, int32_t volume, int32_t pan);
+0x00447F00 0x0031 void __cdecl S_Audio_Sample_AdjustTrackPitch(int32_t track_id, int32_t pitch);
+0x00447F40 0x002F void __cdecl S_Audio_Sample_CloseTrack(int32_t track_id);
+0x00447FA0 0x0005 sub_447FA0
+0x00447FB0 0x009C bool __cdecl S_Audio_Sample_Init(void);
+0x00448050 0x001A bool __cdecl S_Audio_Sample_DSoundEnumerate(SOUND_ADAPTER_LIST *adapter_list);
+0x00448070 0x00E2 BOOL __stdcall S_Audio_Sample_DSoundEnumCallback(LPGUID guid, LPCTSTR description, LPCTSTR module, LPVOID context);
+0x00448160 0x017C void __cdecl S_Audio_Sample_Init2(HWND hwnd);
+0x004482E0 0x001C bool __cdecl S_Audio_Sample_DSoundCreate(GUID *guid);
+0x00448300 0x00C4 bool __cdecl S_Audio_Sample_DSoundBufferTest(void);
+0x004483D0 0x002A void __cdecl S_Audio_Sample_Shutdown(void);
+0x00448400 0x0006 bool __cdecl S_Audio_Sample_IsEnabled(void);
+0x00448410 0x0005 sub_448410
+0x00448420 0x0001 sub_448420
+0x00448430 0x013B void __cdecl CreateScreenBuffers(void);
+0x00448570 0x0094 void __cdecl CreatePrimarySurface(void);
+0x00448610 0x0098 void __cdecl CreateBackBuffer(void);
+0x004486B0 0x009D void __cdecl CreateClipper(void);
+0x00448750 0x00D3 void __cdecl CreateWindowPalette(void);
+0x00448830 0x00BC void __cdecl CreateZBuffer(void);
+0x004488F0 0x002B DWORD __cdecl GetZBufferDepth(void);
+0x00448920 0x00A1 void __cdecl CreateRenderBuffer(void);
+0x004489D0 0x0070 void __cdecl CreatePictureBuffer(void);
+0x00448A40 0x01A4 void __cdecl ClearBuffers(DWORD flags, DWORD fill_color);
+0x00448BF0 0x013C void __cdecl RestoreLostBuffers(void);
+0x00448D30 0x00CF void __cdecl UpdateFrame(bool need_run_message_loop, LPRECT rect);
+0x00448E00 0x003B void __cdecl WaitPrimaryBufferFlip(void);
+0x00448E40 0x0003 bool __cdecl RenderInit(void);
+0x00448E50 0x03A5 void __cdecl RenderStart(bool is_reset);
+0x00449200 0x00E6 void __cdecl RenderFinish(bool need_to_clear_textures);
+0x004492F0 0x0204 bool __cdecl ApplySettings(APP_SETTINGS *new_settings);
+0x00449500 0x0105 void __cdecl FmvBackToGame(void);
+0x00449610 0x023A void __cdecl GameApplySettings(APP_SETTINGS *new_settings);
+0x00449850 0x0067 void __cdecl UpdateGameResolution(void);
+0x004498C0 0x000C LPCTSTR __cdecl DecodeErrorMessage(DWORD error_code);
+0x004498D0 0x0049 BOOL __cdecl ReadFileSync(HANDLE handle, LPVOID lpBuffer, DWORD nBytesToRead, LPDWORD lpnBytesRead, LPOVERLAPPED lpOverlapped);
+0x00449920 0x0188 BOOL __cdecl Level_LoadTexturePages(HANDLE handle);
+0x00449AB0 0x03A0 BOOL __cdecl Level_LoadRooms(HANDLE handle);
+0x00449E50 0x0097 void __cdecl AdjustTextureUVs(bool reset_uv_add);
+0x00449EF0 0x057E BOOL __cdecl Level_LoadObjects(HANDLE handle);
+0x0044A470 0x0135 BOOL __cdecl Level_LoadSprites(HANDLE handle);
+0x0044A5B0 0x01D6 BOOL __cdecl Level_LoadItems(HANDLE handle);
+0x0044A790 0x0188 BOOL __cdecl Level_LoadDepthQ(HANDLE handle);
+0x0044A920 0x0071 BOOL __cdecl Level_LoadPalettes(HANDLE handle);
+0x0044A9A0 0x0060 BOOL __cdecl Level_LoadCameras(HANDLE handle);
+0x0044AA00 0x0060 BOOL __cdecl Level_LoadSoundEffects(HANDLE handle);
+0x0044AA60 0x0221 BOOL __cdecl Level_LoadBoxes(HANDLE handle);
+0x0044AC90 0x0055 BOOL __cdecl Level_LoadAnimatedTextures(HANDLE handle);
+0x0044ACF0 0x0079 BOOL __cdecl Level_LoadCinematic(HANDLE handle);
+0x0044AD70 0x008A BOOL __cdecl Level_LoadDemo(HANDLE handle);
+0x0044AE00 0x009A void __cdecl Level_LoadDemoExternal(LPCTSTR level_name);
+0x0044AEA0 0x0265 BOOL __cdecl Level_LoadSamples(HANDLE handle);
+0x0044B110 0x0036 void __cdecl ChangeFileNameExtension(char *file_name, const char *file_ext);
+0x0044B150 0x0026 LPCTSTR __cdecl GetFullPath(LPCTSTR file_name);
+0x0044B180 0x00E0 BOOL __cdecl SelectDrive(void);
+0x0044B260 0x024A bool __cdecl Level_Load(const char *file_name, int32_t level_num);
+0x0044B4B0 0x0018 BOOL __cdecl S_LoadLevelFile(LPCTSTR file_name, int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
+0x0044B4D0 0x002A void __cdecl S_UnloadLevelFile(void);
+0x0044B500 0x0014 void __cdecl S_AdjustTexelCoordinates(void);
+0x0044B520 0x00C4 BOOL __cdecl S_ReloadLevelGraphics(BOOL reload_palettes, BOOL reload_tex_pages);
+0x0044B5F0 0x00C6 BOOL __cdecl GF_ReadStringTable(DWORD count, char **string_table, char **string_buf, LPDWORD buf_size, HANDLE handle);
+0x0044B6C0 0x06D1 BOOL __cdecl GF_LoadFromFile(const char *file_name);
+0x0044BDA0 0x006B bool __cdecl PlayFMV(const char *file_name);
+0x0044BE10 0x02E0 void __cdecl WinPlayFMV(const char *file_name, bool is_playback);
+0x0044C0F0 0x0048 void __cdecl WinStopFMV(bool is_playback);
+0x0044C140 0x0088 bool __cdecl IntroFMV(const char *file_name1, const char *file_name2);
+0x0044C1D0 0x0023 uint16_t __cdecl S_FindColor(int32_t red, int32_t green, int32_t blue);
+0x0044C200 0x0035 void __cdecl S_DrawScreenLine(int32_t x, int32_t y, int32_t z, int32_t x_len, int32_t y_len, BYTE color_idx, D3DCOLOR *gour, uint16_t flags);
+0x0044C240 0x0116 void __cdecl S_DrawScreenBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_OUTLINE *gour, uint16_t flags);
+0x0044C360 0x002E void __cdecl S_DrawScreenFBox(int32_t sx, int32_t sy, int32_t z, int32_t width, int32_t height, BYTE color_idx, const GOURAUD_FILL *gour, uint16_t flags);
+0x0044C390 0x000F void __cdecl S_FinishInventory(void);
+0x0044C3A0 0x0043 void __cdecl S_FadeToBlack(void);
+0x0044C3F0 0x0057 void __cdecl S_Wait(int32_t timeout, BOOL input_check);
+0x0044C450 0x000E bool __cdecl S_PlayFMV(const char *file_name);
+0x0044C460 0x0013 bool __cdecl S_IntroFMV(const char *file_name1, const char *file_name2);
+0x0044C480 0x0144 int16_t __cdecl Game_Start(int32_t level_num, GAMEFLOW_LEVEL_TYPE level_type);
+0x0044C5D0 0x009A int32_t __cdecl Game_Loop(bool demo_mode);
+0x0044C670 0x0006 int32_t __cdecl LevelCompleteSequence(void);
+0x0044C680 0x01C2 int32_t __cdecl LevelStats(int32_t level_num);
+0x0044C850 0x0113 int32_t __cdecl GameStats(int32_t level_num);
+0x0044C970 0x001E int32_t __cdecl Random_GetControl(void);
+0x0044C990 0x000A void __cdecl Random_SeedControl(int32_t seed);
+0x0044C9A0 0x001E int32_t __cdecl Random_GetDraw(void);
+0x0044C9C0 0x000A void __cdecl Random_SeedDraw(int32_t seed);
+0x0044C9D0 0x0044 void __cdecl GetValidLevelsList(REQUEST_INFO *req);
+0x0044CA20 0x004C void __cdecl GetSavedGamesList(REQUEST_INFO *req);
+0x0044CA70 0x0233 void __cdecl DisplayCredits(void);
+0x0044CCB0 0x0165 BOOL __cdecl S_FrontEndCheck(void);
+0x0044CE20 0x0114 int32_t __cdecl S_SaveGame(const void *save_data, uint32_t save_size, int32_t slot_num);
+0x0044CF40 0x0096 int32_t __cdecl S_LoadGame(void *save_data, uint32_t save_size, int32_t slot_num);
+0x0044CFE0 0x0128 void __cdecl HWR_InitState(void);
+0x0044D110 0x0029 void __cdecl HWR_ResetTexSource(void);
+0x0044D140 0x002B void __cdecl HWR_ResetColorKey(void);
+0x0044D170 0x0059 void __cdecl HWR_ResetZBuffer(void);
+0x0044D1D0 0x0024 void __cdecl HWR_TexSource(HWR_TEXTURE_HANDLE tex_source);
+0x0044D200 0x004A void __cdecl HWR_EnableColorKey(bool state);
+0x0044D250 0x0082 void __cdecl HWR_EnableZBuffer(bool z_write_enable, bool z_enable);
+0x0044D2E0 0x0016 void __cdecl HWR_BeginScene(void);
+0x0044D310 0x016C void __cdecl HWR_DrawPolyList(void);
+0x0044D490 0x008E void __cdecl HWR_LoadTexturePages(int32_t pages_count, void *pages_buf, RGB_888 *palette);
+0x0044D520 0x004A void __cdecl HWR_FreeTexturePages(void);
+0x0044D570 0x0035 void __cdecl HWR_GetPageHandles(void);
+0x0044D5B0 0x0019 bool __cdecl HWR_VertexBufferFull(void);
+0x0044D5E0 0x0022 bool __cdecl HWR_Init(void);
+0x0044D610 0x005C BOOL __cdecl S_InitialiseSystem(void);
+0x0044D670 0x0011 void __cdecl GameBuf_Shutdown(void);
+0x0044D690 0x0021 void __cdecl GameBuf_Reset(void);
+0x0044D6C0 0x006C void *__cdecl GameBuf_Alloc(size_t alloc_size, GAME_BUFFER buf_index);
+0x0044D740 0x0034 void __cdecl GameBuf_Free(size_t free_size);
+0x0044D780 0x00E8 void __cdecl Output_CalculateWibbleTable(void);
+0x0044D870 0x007F void __cdecl Random_Seed(void);
+0x0044D8F0 0x0120 BOOL __cdecl S_Input_Key(KEYMAP keymap);
+0x0044DA10 0x0AC4 bool __cdecl Input_Update(void);
+0x0044E4E0 0x003C int32_t __cdecl RenderErrorBox(int32_t error_code);
+0x0044E520 0x01D6 int32_t __stdcall WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int32_t nShowCmd);
+0x0044E6F0 0x0001 sub_44E6F0
+0x0044E700 0x0064 int32_t __cdecl GameInit(bool skip_cd_init);
+0x0044E770 0x0055 void __cdecl Shell_Cleanup(void);
+0x0044E7A0 0x007C int32_t __cdecl WinGameStart(void);
+0x0044E820 0x0039 void __cdecl Shell_Shutdown(void);
+0x0044E860 0x0017 sub_44E860
+0x0044E880 0x0010 sub_44E880
+0x0044E890 0x003C void __cdecl Shell_ExitSystem(const char *message);
+0x0044E8E0 0x010F void __cdecl ScreenshotPCX(void);
+0x0044E9F0 0x00AE DWORD __cdecl CompPCX(BYTE *bitmap, DWORD width, DWORD height, RGB_888 *palette, BYTE **pcx_data);
+0x0044EAA0 0x00D2 DWORD __cdecl EncodeLinePCX(BYTE *src, DWORD width, BYTE *dst);
+0x0044EB80 0x003E DWORD __cdecl EncodePutPCX(BYTE value, BYTE num, BYTE *buffer);
+0x0044EBC0 0x01F5 void __cdecl Screenshot(LPDDS screen);
+0x0044EDC0 0x007F void __cdecl Option_DoInventory(INVENTORY_ITEM *item);
+0x0044EED0 0x0648 void __cdecl Option_Passport(INVENTORY_ITEM *item);
+0x0044F520 0x02DA void __cdecl Option_Detail(INVENTORY_ITEM *item);
+0x0044F800 0x049D void __cdecl Option_Sound(INVENTORY_ITEM *item);
+0x0044FCA0 0x00C0 void __cdecl Option_Compass(INVENTORY_ITEM *item);
+0x0044FD60 0x007E void __cdecl Option_Controls_FlashConflicts(void);
+0x0044FDE0 0x0040 void __cdecl Option_Controls_DefaultConflict(void);
+0x0044FE20 0x06F4 void __cdecl Option_Controls(INVENTORY_ITEM *item);
+0x00450530 0x04D0 void __cdecl Option_Controls_ShowControls(void);
+0x00450A00 0x0096 void __cdecl Option_Controls_UpdateText(void);
+0x00450AA0 0x003B void __cdecl S_RemoveCtrlText(void);
+0x00450AE0 0x0006 int32_t __cdecl GetRenderHeight(void);
+0x00450AF0 0x0006 int32_t __cdecl GetRenderWidth(void);
+0x00450B00 0x00E4 void __cdecl S_InitialisePolyList(BOOL clear_back_buffer);
+0x00450BF0 0x0036 DWORD __cdecl S_DumpScreen(void);
+0x00450C30 0x000B void __cdecl S_ClearScreen(void);
+0x00450C40 0x0037 void __cdecl S_InitialiseScreen(GAMEFLOW_LEVEL_TYPE level_type);
+0x00450C80 0x0089 void __cdecl S_OutputPolyList(void);
+0x00450CC0 0x0270 int32_t __cdecl Output_GetObjectBounds(const BOUNDS_16 *bounds);
+0x00450F30 0x0046 void __cdecl S_InsertBackPolygon(int32_t x0, int32_t y0, int32_t x1, int32_t y1);
+0x00450F80 0x01F1 void __cdecl Output_InsertShadow(int16_t radius, const BOUNDS_16 *bounds, const ITEM *item);
+0x00451180 0x02F6 void __cdecl Output_CalculateLight(int32_t x, int32_t y, int32_t z, int16_t room_num);
+0x00451480 0x0031 void __cdecl Output_CalculateStaticLight(int16_t adder);
+0x004514C0 0x0124 void __cdecl Output_CalculateStaticMeshLight(int32_t x, int32_t y, int32_t z, int32_t shade_1, int32_t shade_2, ROOM *room);
+0x004515F0 0x0206 void __cdecl Output_LightRoom(ROOM *room);
+0x00451800 0x01CC void __cdecl Output_DrawHealthBar(int32_t percent);
+0x004519D0 0x01F6 void __cdecl Output_DrawAirBar(int32_t percent);
+0x00451BD0 0x00C0 void __cdecl Output_DoAnimateTextures(int32_t ticks);
+0x00451C90 0x0051 void __cdecl Output_SetupBelowWater(bool underwater);
+0x00451CF0 0x0021 void __cdecl Output_SetupAboveWater(bool underwater);
+0x00451D20 0x00B1 void __cdecl Output_AnimateTextures(int32_t ticks);
+0x00451DE0 0x0105 void __cdecl S_DisplayPicture(const char *file_name, BOOL is_title);
+0x00451EF0 0x007E void __cdecl S_SyncPictureBufferPalette(void);
+0x00451F70 0x001C void __cdecl S_DontDisplayPicture(void);
+0x00451F80 0x000D void __cdecl ScreenDump(void);
+0x00451F90 0x0010 void __cdecl ScreenPartialDump(void);
+0x00451FA0 0x01C9 void __cdecl FadeToPal(int32_t fade_value, RGB_888 *palette);
+0x00452170 0x0026 void __cdecl ScreenClear(bool is_phd_win_size);
+0x004521A0 0x00AB void __cdecl S_CopyScreenToBuffer(void);
+0x00452250 0x0254 void __cdecl S_CopyBufferToScreen(void);
+0x004522A0 0x00FA BOOL __cdecl DecompPCX(const uint8_t *pcx, size_t pcx_size, LPBYTE pic, RGB_888 *pal);
+0x004523A0 0x0005 sub_4523A0
+0x004523B0 0x0001 sub_4523B0
+0x004523C0 0x004E bool __cdecl OpenGameRegistryKey(LPCTSTR key);
+0x00452410 0x0005 LONG __cdecl CloseGameRegistryKey(void);
+0x00452420 0x0262 bool __cdecl SE_WriteAppSettings(APP_SETTINGS *settings);
+0x00452690 0x0348 int32_t __cdecl SE_ReadAppSettings(APP_SETTINGS *settings);
+0x004529E0 0x00D7 bool __cdecl SE_GraphicsTestStart(void);
+0x00452AB0 0x0014 void __cdecl SE_GraphicsTestFinish(void);
+0x00452AD0 0x0003 int32_t __cdecl SE_GraphicsTestExecute(void);
+0x00452AE0 0x0057 int32_t __cdecl SE_GraphicsTest(void);
+0x00452B40 0x00C7 bool __cdecl SE_SoundTestStart(void);
+0x00452C00 0x0005 void __cdecl SE_SoundTestFinish(void);
+0x00452C10 0x003D int32_t __cdecl SE_SoundTestExecute(void);
+0x00452C50 0x0057 int32_t __cdecl SE_SoundTest(void);
+0x00452CB0 0x003E int32_t __stdcall SE_PropSheetCallback(HWND hwndDlg, UINT uMsg, LPARAM lParam);
+0x00452CF0 0x005D LRESULT __stdcall SE_NewPropSheetWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+0x00452D50 0x02DE bool __cdecl SE_ShowSetupDialog(HWND hParent, bool isDefault);
+0x00453030 0x0351 INT_PTR __stdcall SE_GraphicsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+0x004533F0 0x01DC void __cdecl SE_GraphicsDlgFullScreenModesUpdate(HWND hwndDlg);
+0x004535E0 0x0017 void __cdecl SE_GraphicsAdapterSet(HWND hwndDlg, DISPLAY_ADAPTER_NODE *adapter);
+0x00453600 0x0735 void __cdecl SE_GraphicsDlgUpdate(HWND hwndDlg);
+0x00453D40 0x017C void __cdecl SE_GraphicsDlgInit(HWND hwndDlg);
+0x00453EC0 0x0149 INT_PTR __stdcall SE_SoundDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+0x00454050 0x000A void __cdecl SE_SoundAdapterSet(HWND hwndDlg, SOUND_ADAPTER_NODE *adapter);
+0x00454060 0x011B void __cdecl SE_SoundDlgUpdate(HWND hwndDlg);
+0x00454180 0x00BE void __cdecl SE_SoundDlgInit(HWND hwndDlg);
+0x00454240 0x0106 INT_PTR __stdcall SE_ControlsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+0x00454350 0x000A void __cdecl SE_ControlsJoystickSet(HWND hwndDlg, JOYSTICK_NODE *joystick);
+0x00454360 0x0068 void __cdecl SE_ControlsDlgUpdate(HWND hwndDlg);
+0x004543D0 0x00BD void __cdecl SE_ControlsDlgInit(HWND hwndDlg);
+0x00454490 0x008A INT_PTR __stdcall SE_OptionsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+0x00454520 0x0234 void __cdecl SE_OptionsDlgUpdate(HWND hwndDlg);
+0x00454760 0x004B void __cdecl SE_OptionsStrCat(LPTSTR *dstString, bool isEnabled, bool *isNext, LPCTSTR srcString);
+0x004547B0 0x00DC INT_PTR __stdcall SE_AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
+0x004548B0 0x0093 void __cdecl SE_AdvancedDlgUpdate(HWND hwndDlg);
+0x00454950 0x000E void __cdecl SE_AdvancedDlgInit(HWND hwndDlg);
+0x00454960 0x0011 HWND __cdecl SE_FindSetupDialog(void);
+0x00454980 0x02D0 BOOL __cdecl Shell_Main(void);
+0x00454C50 0x0110 int16_t __cdecl TitleSequence(void);
+0x00454D60 0x032D void __cdecl Lara_Cheat_CheckKeys(void);
+0x004550C0 0x007D void __cdecl S_SaveSettings(void);
+0x00455140 0x00DB void __cdecl S_LoadSettings(void);
+0x00455220 0x0046 int32_t __cdecl S_Audio_Sample_OutPlay(int32_t sample_id, uint16_t volume, int32_t pitch, int32_t pan);
+0x00455270 0x002A int32_t __cdecl S_Audio_Sample_CalculateSampleVolume(int32_t volume);
+0x004552A0 0x0026 int32_t __cdecl S_Audio_Sample_CalculateSamplePan(int16_t pan);
+0x004552D0 0x0046 int32_t __cdecl S_Audio_Sample_OutPlayLooped(int32_t track_id, uint16_t volume, int32_t pitch, int32_t pan);
+0x00455320 0x0039 void __cdecl S_Audio_Sample_OutSetPanAndVolume(int32_t track_id, int32_t pan, uint16_t volume);
+0x00455360 0x001C void __cdecl S_Audio_Sample_OutSetPitch(int32_t track_id, int32_t pitch);
+0x00455380 0x000A void __cdecl Sound_SetMasterVolume(int32_t volume);
+0x00455390 0x0017 void __cdecl S_Audio_Sample_OutCloseTrack(int32_t track_id);
+0x004553B0 0x003C void __cdecl S_Audio_Sample_OutCloseAllTracks(void);
+0x004553C0 0x001F BOOL __cdecl S_Audio_Sample_OutIsTrackPlaying(int32_t track_id);
+0x004553E0 0x0077 bool __cdecl Music_Init(void);
+0x00455460 0x0051 void __cdecl Music_Shutdown(void);
+0x00455500 0x006F void __cdecl Music_Legacy_Play(int16_t track_id, bool is_looped);
+0x00455570 0x0039 void __cdecl Music_Stop(void);
+0x004555B0 0x0084 bool __cdecl Music_PlaySynced(int32_t track_id);
+0x00455640 0x0061 int32_t __cdecl Music_GetFrames(void);
+0x004556B0 0x0092 void __cdecl Music_SetVolume(int32_t volume);
+0x004557A0 0x0137 void __cdecl CopyBitmapPalette(RGB_888 *src_pal, BYTE *src_bitmap, int32_t bitmap_size, RGB_888 *dest_pal);
+0x004558E0 0x00C8 BYTE __cdecl FindNearestPaletteEntry(RGB_888 *palette, int32_t red, int32_t green, int32_t blue, bool ignore_sys_palette);
+0x004559B0 0x00AE void __cdecl SyncSurfacePalettes(void *src_data, int32_t width, int32_t height, int32_t src_pitch, RGB_888 *src_palette, void *dst_data, int32_t dst_pitch, RGB_888 *dst_palette, bool preserve_sys_palette);
+0x00455A60 0x0087 int32_t __cdecl CreateTexturePalette(const RGB_888 *pal);
+0x00455AF0 0x001C int32_t __cdecl GetFreePaletteIndex(void);
+0x00455B10 0x0023 void __cdecl FreePalette(int32_t palette_idx);
+0x00455B40 0x0012 void __cdecl SafeFreePalette(int32_t palette_idx);
+0x00455B90 0x006A int32_t __cdecl CreateTexturePage(int32_t width, int32_t height, LPDIRECTDRAWPALETTE palette);
+0x00455C00 0x001C int32_t __cdecl GetFreeTexturePageIndex(void);
+0x00455C20 0x0098 bool __cdecl CreateTexturePageSurface(TEXPAGE_DESC *desc);
+0x00455CC0 0x0174 bool __cdecl TexturePageInit(TEXPAGE_DESC *page);
+0x00455E40 0x0025 LPDIRECT3DTEXTURE2 __cdecl Create3DTexture(LPDDS surface);
+0x00455E70 0x0020 void __cdecl SafeFreeTexturePage(int32_t page_idx);
+0x00455E90 0x0032 void __cdecl FreeTexturePage(int32_t page_idx);
+0x00455ED0 0x003B void __cdecl TexturePageReleaseVidMemSurface(TEXPAGE_DESC *page);
+0x00455F10 0x0026 void __cdecl FreeTexturePages(void);
+0x00455F40 0x00A2 bool __cdecl LoadTexturePage(int32_t page_idx, bool reset);
+0x00455FF0 0x0035 bool __cdecl ReloadTextures(bool reset);
+0x00456030 0x003E HWR_TEXTURE_HANDLE __cdecl GetTexturePageHandle(int32_t page_idx);
+0x00456070 0x00F5 int32_t __cdecl AddTexturePage8(int32_t width, int32_t height, const uint8_t *page_buf, int32_t pal_idx);
+0x00456170 0x0196 int32_t __cdecl AddTexturePage16(int32_t width, int32_t height, const uint8_t *page_buf);
+0x00456310 0x011A HRESULT __stdcall EnumTextureFormatsCallback(LPDDSDESC lpDdsd, LPVOID lpContext);
+0x00456430 0x0025 HRESULT __cdecl EnumerateTextureFormats(void);
+0x00456460 0x0030 void __cdecl CleanupTextures(void);
+0x00456470 0x001F bool __cdecl InitTextures(void);
+0x00456490 0x0040 void __cdecl UpdateTicks(void);
+0x004564D0 0x0051 bool __cdecl TIME_Init(void);
+0x00456530 0x0058 DWORD __cdecl Sync(void);
+0x00456590 0x0036 LPVOID __cdecl UT_LoadResource(LPCTSTR lpName, LPCTSTR lpType);
+0x004565D0 0x0060 void __cdecl UT_InitAccurateTimer(void);
+0x00456630 0x004E double __cdecl UT_Microseconds(void);
+0x00456680 0x006F BOOL __cdecl UT_CenterWindow(HWND hWnd);
+0x004566F0 0x002C LPTSTR __cdecl UT_FindArg(LPCTSTR str);
+0x00456720 0x0018 int32_t __cdecl UT_MessageBox(LPCTSTR lpText, HWND hWnd);
+0x00456740 0x0042 int32_t __cdecl UT_ErrorBox(UINT uID, HWND hWnd);
+0x00456790 0x0051 LPCTSTR __cdecl GuidBinaryToString(GUID *guid);
+0x004567F0 0x00AA bool __cdecl GuidStringToBinary(LPCTSTR lpString, GUID *guid);
+0x004568A0 0x0030 BOOL __cdecl OpenRegistryKey(LPCTSTR lpSubKey);
+0x004568D0 0x000F bool __cdecl IsNewRegistryKeyCreated(void);
+0x004568E0 0x000D LONG __cdecl CloseRegistryKey(void);
+0x004568F0 0x001E LONG __cdecl SetRegistryDwordValue(LPCTSTR lpValueName, DWORD value);
+0x00456910 0x002A LONG __cdecl SetRegistryBoolValue(LPCTSTR lpValueName, bool value);
+0x00456940 0x0036 LONG __cdecl SetRegistryFloatValue(LPCTSTR lpValueName, double value);
+0x00456980 0x0037 LONG __cdecl SetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize);
+0x004569C0 0x004A LONG __cdecl SetRegistryStringValue(LPCTSTR lpValueName, LPCTSTR value, int32_t length);
+0x00456A10 0x0013 LONG __cdecl DeleteRegistryValue(LPCTSTR lpValueName);
+0x00456A30 0x005E bool __cdecl GetRegistryDwordValue(LPCTSTR lpValueName, DWORD *pValue, DWORD defaultValue);
+0x00456A90 0x0076 bool __cdecl GetRegistryBoolValue(LPCTSTR lpValueName, bool *pValue, bool defaultValue);
+0x00456B10 0x005C bool __cdecl GetRegistryFloatValue(LPCTSTR lpValueName, double *value, double defaultValue);
+0x00456B70 0x0071 bool __cdecl GetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize, LPBYTE defaultValue);
+0x00456BF0 0x0095 bool __cdecl GetRegistryStringValue(LPCTSTR lpValueName, LPTSTR value, DWORD maxSize, LPCTSTR defaultValue);
+0x00456C90 0x0091 bool __cdecl GetRegistryGuidValue(LPCTSTR lpValueName, GUID *value, GUID *defaultValue);
+0x00456D30 0x0037 void __thiscall SE_ReleaseBitmapResource(BITMAP_RESOURCE *bmpRsrc);
+0x00456D70 0x00C4 void __thiscall SE_LoadBitmapResource(BITMAP_RESOURCE *bmpRsrc, LPCTSTR lpName);
+0x00456E40 0x0064 void __thiscall SE_DrawBitmap(BITMAP_RESOURCE *bmpRsrc, HDC hdc, int32_t x, int32_t y);
+0x00456EB0 0x001C void __thiscall SE_UpdateBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd, HWND hSender);
+0x00456ED0 0x0057 void __thiscall SE_ChangeBitmapPalette(BITMAP_RESOURCE *bmpRsrc, HWND hWnd);
+0x00456F30 0x0061 bool __cdecl SE_RegisterSetupWindowClass(void);
+0x00456FA0 0x023A LRESULT __stdcall SE_SetupWindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
+0x004571E0 0x0026 void __cdecl SE_PassMessageToImage(HWND hWnd, UINT uMsg, WPARAM wParam);
+0x00457210 0x006E void __cdecl UT_MemBlt(BYTE *dstBuf, DWORD dstX, DWORD dstY, DWORD width, DWORD height, DWORD dstPitch, BYTE *srcBuf, DWORD srcX, DWORD srcY, DWORD srcPitch);
+0x00457280 0x001E void __cdecl Matrix_Push(void);
+0x0045729E 0x0033 void __cdecl Matrix_PushUnit(void);
+0x004572D4 0x0061 void __fastcall Output_FlatA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
+0x00457335 0x013A void __fastcall Output_TransA(int32_t y0, int32_t y1, uint8_t depth_q); // actually, __watcall, which is esoteric and rarely supported
+0x0045746F 0x0160 void __fastcall Output_GourA(int32_t y0, int32_t y1, uint8_t color_idx); // actually, __watcall, which is esoteric and rarely supported
+0x004575CF 0x02FD void __fastcall Output_GTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
+0x004578CC 0x0341 void __fastcall Output_WGTMapA(int32_t y0, int32_t y1, uint8_t *tex_page); // actually, __watcall, which is esoteric and rarely supported
+0x00457C10 0x0048 int32_t __fastcall Math_Atan(int32_t x, int32_t y);
+0x00457C58 0x0006 int32_t __fastcall Math_Cos(int16_t angle);
+0x00457C5E 0x001B int32_t __fastcall Math_Sin(int16_t angle);
+0x00457C79 0x001A int32_t __fastcall Math_SinImpl(int16_t angle);
+0x00457C93 0x002C uint32_t __fastcall Math_Sqrt(uint32_t n);
+
+0x00458D00 0x0006 int __cdecl Player_PlayFrame(LPVOID, LPVOID, LPVOID, DWORD, LPCRECT, DWORD, DWORD, DWORD);
+0x00458D06 0x0006 int __cdecl Movie_GetTotalFrames(LPVOID);
+0x00458D0C 0x0006 int __cdecl Movie_GetCurrentFrame(LPVOID);
+0x00458D12 0x0006 int __cdecl Player_StartTimer(LPVOID);
+0x00458D18 0x0006 int __cdecl Player_InitMoviePlayback(LPVOID, LPVOID, LPVOID);
+0x00458D1E 0x0006 int __cdecl Movie_SetSyncAdjust(LPVOID, LPVOID, DWORD);
+0x00458D24 0x0006 int __cdecl Player_InitSound(LPVOID, DWORD, DWORD, BOOL, DWORD, DWORD, DWORD, DWORD, DWORD);
+0x00458D2A 0x0006 int __cdecl Movie_GetSoundChannels(LPVOID);
+0x00458D30 0x0006 int __cdecl Movie_GetSoundRate(LPVOID);
+0x00458D36 0x0006 int __cdecl Movie_GetSoundPrecision(LPVOID);
+0x00458D3C 0x0006 int __cdecl Player_GetDSErrorCode(void);
+0x00458D42 0x0006 int __cdecl Player_InitSoundSystem(HWND);
+0x00458D48 0x0006 int __cdecl Player_BlankScreen(DWORD, DWORD, DWORD, DWORD);
+0x00458D4E 0x0006 int __cdecl Player_InitPlaybackMode(HWND, LPVOID, DWORD, DWORD);
+0x00458D54 0x0006 int __cdecl Player_InitVideo(LPVOID, LPVOID, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD, DWORD);
+0x00458D5A 0x0006 int __cdecl Movie_GetXSize(LPVOID);
+0x00458D60 0x0006 int __cdecl Movie_GetYSize(LPVOID);
+0x00458D66 0x0006 int __cdecl Movie_GetFormat(LPVOID);
+0x00458D6C 0x0006 int __cdecl Player_InitMovie(LPVOID, DWORD, DWORD, LPCTSTR, DWORD);
+0x00458D72 0x0006 int __cdecl Player_PassInDirectDrawObject(LPDIRECTDRAW3);
+0x00458D78 0x0006 int __cdecl Player_ReturnPlaybackMode(BOOL);
+0x00458D7E 0x0006 int __cdecl Player_ShutDownSoundSystem(void);
+0x00458D84 0x0006 int __cdecl Player_ShutDownMovie(LPVOID);
+0x00458D8A 0x0006 int __cdecl Player_ShutDownVideo(LPVOID);
+0x00458D90 0x0006 int __cdecl Player_ShutDownSound(LPVOID);
+0x00458D96 0x0006 int __cdecl Player_StopTimer(LPVOID);
+
+
+# VARIABLES
+# Offset Declaration
+
+0x00464060 uint32_t g_PerspectiveDistance = 0x3000000;
+0x00464068 void (*__cdecl g_PolyDrawRoutines[9])(const int16_t *obj_ptr);
+0x0046408C float g_RhwFactor = 335544320.0f; // 10*2**25
+0x004640B0 int32_t g_CineTrackID = 1;
+0x004640B8 int32_t g_CineTickRate = 0x8000; // 0x8000 = PHD_ONE/TICKS_PER_FRAME
+0x004640BC int16_t g_CD_TrackID = -1;
+0x004640C4 int32_t g_FlipEffect = -1;
+0x004641F0 uint32_t g_AssaultBestTime = -1;
+0x004641F8 void (*__cdecl g_EffectRoutines[32])(ITEM *item);
+0x00464310 int16_t g_CineTargetAngle = 0x4000; // PHD_90
+0x004644E0 int32_t g_OverlayStatus = 1;
+0x004654E0 int16_t g_Inv_MainObjectsCount = 8;
+0x00465604 int16_t g_Inv_OptionObjectsCount = 4;
+0x00465618 BOOL g_GymInvOpenEnabled = TRUE;
+0x00465A50 int16_t g_Inv_Chosen = -1;
+0x00465A54 INVENTORY_MODE g_Inv_Mode = INV_TITLE_MODE;
+0x00465A5C int16_t g_OptionSoundVolume = 165; // NOTE: value should be 10
+0x00465A60 int16_t g_OptionMusicVolume = 255; // NOTE: should be 10
+0x00465AD4 int32_t g_JumpPermitted = 1;
+0x00465AD8 int16_t g_LaraOldSlideAngle = 1;
+0x00465CD0 void (*__cdecl g_LaraControlRoutines[71])(ITEM *item, COLL_INFO *coll);
+0x00465DF0 void (*__cdecl g_ExtraControlRoutines[11])(ITEM *item, COLL_INFO *coll);
+0x00465E20 void (*__cdecl g_LaraCollisionRoutines[71])(ITEM *item, COLL_INFO *coll);
+0x00466290 int8_t g_TextSpacing[80];
+0x004662E0 int8_t g_TextASCIIMap[];
+0x00466400 int32_t g_BGND_PaletteIndex = -1;
+0x00466480 double g_GameSizer = 1.0;
+0x00466488 double g_GameSizerCopy = 1.0;
+0x00466490 int32_t g_FadeValue = 0x100000;
+0x00466494 int32_t g_FadeLimit = 0x100000;
+0x00466498 int32_t g_FadeAdder = 0x8000;
+0x004664E8 const char *g_ErrorMessages[43];
+0x00466BB0 int32_t g_RandControl;
+0x00466BB4 int32_t g_RandDraw;
+0x00466F70 CONTROL_LAYOUT g_Layout[2];
+0x00467DD0 const int32_t g_AtanBaseTable[8];
+0x00467DF0 const int16_t g_AtanAngleTable[0x800];
+0x00468DF4 const int16_t g_SinTable[0x402];
+0x0046C300 int32_t g_MidSort = 0;
+0x0046C304 float g_ViewportAspectRatio = 0.0f;
+0x0046C308 int32_t g_XGenY1;
+0x0046C30C int32_t g_XGenY2;
+0x0046C310 GOURAUD_ENTRY g_GouraudTable[256];
+0x0046E310 int32_t g_PhdWinTop;
+0x0046E318 PHD_SPRITE g_PhdSprites[512];
+0x00470318 int32_t g_LsAdder;
+0x0047031C float g_FltWinBottom;
+0x00470320 float g_FltResZBuf;
+0x00470324 float g_FltResZ;
+0x00470328 void (*__cdecl g_Output_InsertTransQuad)(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);
+0x0047032C int32_t g_PhdWinHeight;
+0x00470330 int32_t g_PhdWinCenterX;
+0x00470334 int32_t g_PhdWinCenterY;
+0x00470338 int16_t g_LsYaw;
+0x0047033C void (*__cdecl g_Output_InsertTrans8)(const PHD_VBUF *vbuf, int16_t shade);
+0x00470340 float g_FltWinTop;
+0x00470348 SORT_ITEM g_SortBuffer[4000];
+0x00478048 float g_FltWinLeft;
+0x0047804C int16_t g_PhdWinMinY;
+0x00478058 int32_t g_PhdFarZ;
+0x0047805C float g_FltRhwOPersp;
+0x00478060 int32_t g_PhdWinBottom;
+0x00478064 int32_t g_PhdPersp;
+0x00478068 int32_t g_PhdWinLeft;
+0x0047806C void (*__cdecl g_Output_InsertFlatRect)(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x00478070 int16_t g_Info3DBuffer[120000];
+0x004B29F0 int32_t g_PhdWinMaxX;
+0x004B29F4 int32_t g_PhdNearZ;
+0x004B29F8 float g_FltResZORhw;
+0x004B29FC float g_FltFarZ;
+0x004B2A00 float g_FltWinCenterX;
+0x004B2A04 float g_FltWinCenterY;
+0x004B2A08 int32_t g_PhdScreenHeight;
+0x004B2A0C uint8_t *g_PrintSurfacePtr;
+0x004B2A10 int16_t g_PhdWinMinX;
+0x004B2A14 float g_FltPerspONearZ;
+0x004B2A18 float g_FltRhwONearZ;
+0x004B2A1C int32_t g_PhdWinMaxY;
+0x004B2A20 void (*__cdecl g_Output_InsertSprite)(int32_t z, int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t sprite_idx, int16_t shade);
+0x004B2A24 float g_FltNearZ;
+0x004B2A28 MATRIX *g_MatrixPtr;
+0x004B2A2C const int16_t *(*__cdecl g_Output_DrawObjectGT3)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x004B2A30 const int16_t *(*__cdecl g_Output_DrawObjectGT4)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x004B2A38 int32_t g_RandomTable[32];
+0x004B2AB8 float g_FltPersp;
+0x004B2AC0 MATRIX g_W2VMatrix;
+0x004B2AF0 int16_t *g_Info3DPtr;
+0x004B2AF4 int32_t g_PhdWinWidth;
+0x004B2AF8 void (*__cdecl g_Output_InsertLine)(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);
+0x004B2B00 PHD_TEXTURE g_TextureInfo[0x800]; // MAX_TEXTURES
+0x004BCB00 int32_t g_PhdViewDistance;
+0x004BCB04 int16_t g_LsPitch;
+0x004BCB08 const int16_t *(*__cdecl g_Output_DrawObjectG4)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x004BCB10 int16_t g_ShadesTable[32];
+0x004BCB50 const int16_t *(*__cdecl g_Output_DrawObjectG3)(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);
+0x004BCB58 MATRIX g_MatrixStack[];
+0x004BD2D8 DEPTHQ_ENTRY g_DepthQTable[32];
+0x004BF3D8 int32_t g_PhdScreenWidth;
+0x004BF3DC int32_t g_LsDivider;
+0x004BF3E0 PHD_VBUF g_PhdVBuf[1500];
+0x004CAF60 void *g_XBuffer;
+0x004D6AE0 uint8_t *g_TexturePageBuffer8[32]; // MAX_TEXTURE_PAGES
+0x004D6B60 float g_FltWinRight;
+0x004D6B68 XYZ_32 g_LsVectorView;
+0x004D6B78 float g_WibbleTable[32];
+0x004D6BF8 int32_t g_PhdWinRight;
+0x004D6BFC int32_t g_SurfaceCount;
+0x004D6C00 SORT_ITEM *g_Sort3DPtr;
+0x004D6C0C int32_t g_WibbleOffset;
+0x004D6C10 int32_t g_IsWibbleEffect;
+0x004D6C14 int32_t g_IsWaterEffect;
+0x004D6CD8 VERTEX_INFO g_VBuffer[20];
+0x004D6F78 int8_t g_IsShadeEffect;
+0x004D6F80 D3DTLVERTEX g_VBufferD3D[32];
+0x004D7380 PALETTEENTRY g_GamePalette16[256];
+0x004D7780 int32_t g_CineFrameCurrent;
+0x004D778C int32_t g_IsChunkyCamera;
+0x004D7794 int32_t g_NoInputCounter;
+0x004D7798 BOOL g_IsResetFlag;
+0x004D779C int32_t g_FlipTimer;
+0x004D77A0 int32_t g_LOSNumRooms = 0;
+0x004D77A4 BOOL g_StopInventory;
+0x004D77AC BOOL g_IsDemoLevelType;
+0x004D77B0 BOOL g_IsDemoLoaded;
+0x004D77C0 int32_t g_BoundStart;
+0x004D77C4 int32_t g_BoundEnd;
+0x004D77E0 int32_t g_IsAssaultTimerDisplay;
+0x004D77E4 BOOL g_IsAssaultTimerActive;
+0x004D77E8 BOOL g_IsMonkAngry;
+0x004D791C int32_t g_OldGameTimer;
+0x004D7920 BOOL g_FlashState;
+0x004D7924 int32_t g_FlashCounter;
+0x004D7928 int32_t g_OldHitPoints;
+0x004D792C TEXTSTRING *g_AmmoTextInfo;
+0x004D7930 TEXTSTRING *g_DisplayModeTextInfo;
+0x004D7934 DWORD g_DisplayModeInfoTimer;
+0x004D7938 UINT16 g_Inv_MainCurrent;
+0x004D793C UINT16 g_Inv_KeyObjectsCount;
+0x004D7940 UINT16 g_Inv_KeysCurrent;
+0x004D7944 UINT16 g_Inv_OptionCurrent;
+0x004D7954 TEXTSTRING* g_Inv_RingText;
+0x004D795C TEXTSTRING* g_Inv_UpArrow1;
+0x004D7960 TEXTSTRING* g_Inv_UpArrow2;
+0x004D7964 TEXTSTRING* g_Inv_DownArrow1;
+0x004D7968 TEXTSTRING* g_Inv_DownArrow2;
+0x004D796C uint32_t g_InputDB;
+0x004D7978 uint16_t g_Inv_IsActive;
+0x004D79A0 BOOL g_Inv_DemoMode;
+0x004D79B4 BOOL g_Inv_IsOptionsDelay;
+0x004D79B8 int32_t g_Inv_OptionsDelayCounter;
+0x004D79BC uint16_t g_SoundOptionLine;
+0x004D79C0 REQUEST_INFO g_StatsRequester;
+0x004D7BD8 ASSAULT_STATS g_Assault;
+0x004D7C38 int32_t g_LevelItemCount;
+0x004D7C3C int32_t g_HealthBarTimer;
+0x004D7C80 int32_t g_SoundTrackIds[128];
+0x004D7EBC LPDIRECT3DDEVICE2 g_D3DDev;
+0x004D7EE4 bool g_IsGameWindowCreated;
+0x004D7EE8 bool g_IsGameWindowUpdating;
+0x004D7EEC bool g_IsDDrawGameWindowShow;
+0x004D7EF0 int32_t g_MinWindowClientWidth;
+0x004D7ED0 int32_t g_MinWindowClientHeight;
+0x004D8388 int32_t g_MinWindowWidth;
+0x004D838C int32_t g_MinWindowHeight;
+0x004D7EF4 bool g_IsGameWindowShow;
+0x004D7EF8 bool g_IsMinWindowSizeSet;
+0x004D7EFC int32_t g_MaxWindowClientWidth;
+0x004D7F00 int32_t g_GameWindowWidth;
+0x004D7F04 bool g_IsMinMaxInfoSpecial;
+0x004D7F08 bool g_IsGameFullScreen;
+0x004D7F0C bool g_IsGameWindowMaximized;
+0x004D7F10 HWND g_GameWindowHandle;
+0x004D7F14 int32_t g_GameWindowHeight;
+0x004D7F18 DISPLAY_ADAPTER_NODE* g_PrimaryDisplayAdapter;
+0x004D7F20 DISPLAY_ADAPTER g_CurrentDisplayAdapter;
+0x004D8338 uint32_t g_LockedBufferCount;
+0x004D833C int32_t g_GameWindowPositionX;
+0x004D8340 int32_t g_GameWindowPositionY;
+0x004D8348 DISPLAY_ADAPTER_LIST g_DisplayAdapterList;
+0x004D8354 int32_t g_MaxWindowClientHeight;
+0x004D8358 bool g_IsMessageLoopClosed;
+0x004D835C int32_t g_MaxWindowWidth;
+0x004D7EDC int32_t g_MaxWindowHeight;
+0x004D8360 bool g_IsMaxWindowSizeSet;
+0x004D8364 uint32_t g_AppResultCode;
+0x004D8368 int32_t g_FullScreenWidth;
+0x004D836C int32_t g_FullScreenHeight;
+0x004D8370 int32_t g_FullScreenBPP;
+0x004D8374 int32_t g_FullScreenVGA;
+0x004D8378 uint8_t g_IsGameToExit;
+0x004D8568 int32_t g_ScreenSizer;
+0x004D856C int32_t g_IsVidSizeLock;
+0x004D8570 DWORD g_SampleFreqs[256];
+0x004D8970 SOUND_ADAPTER_LIST g_SoundAdapterList;
+0x004D8980 LPDIRECTSOUNDBUFFER g_SampleBuffers[256];
+0x004D8D80 uint8_t g_IsSoundEnabled;
+0x004D8D84 LPDIRECTSOUND g_DSound;
+0x004D8D88 int32_t g_ChannelSamples[32];
+0x004D8E08 LPDIRECTSOUNDBUFFER g_ChannelBuffers[32];
+0x004D8E8C SOUND_ADAPTER g_CurrentSoundAdapter;
+0x004D8EAC SOUND_ADAPTER_NODE *g_PrimarySoundAdapter;
+0x004D8EB0 LPDDS g_RenderBufferSurface;
+0x004D92B8 LPDDS g_ThirdBufferSurface;
+0x004D92BC LPDDS g_PictureBufferSurface;
+0x004D92C0 LPDDS g_ZBufferSurface;
+0x004D92C8 LPDDS g_PrimaryBufferSurface;
+0x004D9338 int32_t g_GameVid_Width;
+0x004D933C int32_t g_GameVid_Height;
+0x004D9340 int32_t g_GameVid_BPP;
+0x004D934C int32_t g_UVAdd;
+0x004D9351 int8_t g_GameVid_IsWindowedVGA;
+0x004D9EAC int32_t g_IsFMVPlaying;
+0x004D9EC0 int32_t g_CurrentLevel;
+0x004D9EC4 int32_t g_LevelComplete;
+0x004D9ED8 D3DTLVERTEX g_HWR_VertexBuffer[0x2000]; // MAX_VERTICES
+0x00519EE0 HWR_TEXTURE_HANDLE g_HWR_PageHandles[32];
+0x00519F60 D3DTLVERTEX *g_HWR_VertexPtr;
+0x0051A0CC char *g_GameBuf_MemBase;
+0x0051A0D0 BOOL g_ConflictLayout[14]; // INPUT_ROLE_NUMBER_OF
+0x0051A108 uint8_t g_DIKeys[256];
+0x0051A208 int32_t g_Input;
+0x0051A20C int8_t g_IsVidModeLock;
+0x0051A210 int32_t g_JoyKeys;
+0x0051A214 int32_t g_JoyXPos;
+0x0051A218 int32_t g_JoyYPos;
+0x0051A220 int32_t g_MediPackCooldown;
+0x0051A224 int8_t g_IsF3Pressed;
+0x0051A228 int8_t g_IsF4Pressed;
+0x0051A22C int8_t g_IsF7Pressed;
+0x0051A230 int8_t g_IsF8Pressed;
+0x0051A234 int8_t g_IsF11Pressed;
+0x0051A238 HINSTANCE g_GameModule;
+0x0051A23C char *g_CmdLine;
+0x0051A240 int32_t g_ScreenshotCounter;
+0x0051B918 RECT g_PhdWinRect;
+0x0051B928 int32_t g_HiRes;
+0x0051B930 RGB_888 g_GamePalette8[256];
+0x0051BCC0 APP_SETTINGS g_SavedAppSettings;
+0x0051BD20 char g_ErrorMessage[128];
+0x0051BDA8 int32_t g_MasterVolume;
+0x0051BDAC MCIDEVICEID g_MciDeviceID;
+0x0051BDB0 int32_t g_CD_LoopTrack;
+0x0051C820 TEXTSTRING g_TextstringTable[64]; // MAX_TEXTSTRINGS
+0x0051D6A0 int16_t g_TextstringCount = 0;
+0x0051D6C0 char g_TextstringBuffers[64][64];
+0x0051E6C4 int32_t g_SoundIsActive;
+0x0051E9E0 SAVEGAME_INFO g_SaveGame;
+0x005206E0 LARA_INFO g_Lara;
+0x005207BC ITEM *g_LaraItem;
+0x005207C0 FX *g_Effects;
+0x005207C4 int16_t g_NextEffectFree;
+0x005207C6 int16_t g_NextItemFree;
+0x005207C8 int16_t g_NextItemActive;
+0x005207CA int16_t g_NextEffectActive;
+0x005207CC int16_t g_PrevItemActive;
+0x00521CA0 PICKUP_INFO g_Pickups[12];
+0x00521DE0 GAME_FLOW g_GameFlow;
+0x00521FDC int32_t g_SoundEffectCount;
+0x00522000 OBJECT g_Objects[265];
+0x005252B0 int16_t **g_Meshes;
+0x005252C0 MATRIX g_IMMatrixStack[256];
+0x005258F0 int32_t g_IMFrac;
+0x005258F4 ANIM *g_Anims;
+0x00525BE8 int32_t *g_AnimBones;
+0x00526180 int32_t g_RoomCount;
+0x00526184 int32_t g_IMRate;
+0x00526188 MATRIX *g_IMMatrixPtr;
+0x0052618C ROOM *g_Rooms;
+0x00526240 int32_t g_FlipStatus;
+0x00526288 int16_t *g_Legacy_TriggerIndex;
+0x005262A0 int32_t g_LOSRooms[20];
+0x005262F0 ITEM *g_Items;
+0x005262F6 int16_t g_NumCineFrames;
+0x005262F8 CINE_FRAME *g_CineData = NULL;
+0x00526300 PHD_3DPOS g_CinePos;
+0x00526314 int16_t g_CineFrameIdx;
+0x00526320 CAMERA_INFO g_Camera;
+0x005263CC BOX_INFO *g_Boxes;
+0x004D855C LPDIRECTINPUT g_DInput;
+0x004D8560 LPDIRECTINPUTDEVICE IDID_SysKeyboard;
+0x0051BDA0 BOOL g_IsTitleLoaded;
+0x004D7980 int32_t g_Inv_ExtraData[8];
+0x004D8394 int32_t g_MessageLoopCounter;
+0x004D8384 bool g_IsGameWindowMinimized;
+0x004D8390 bool g_IsGameWindowActive;
+0x004D837C int32_t g_GameWindowY;
+0x004D7EE0 LPDIRECTDRAW3 g_DDraw;
+0x004D8380 int32_t g_GameWindowX;
+0x00463150 GUID g_IID_IDirectDrawSurface3;
+0x00463170 GUID g_IID_IDirect3DTexture2;
+0x004640A0 BITE g_CrowBite;
+0x00464090 BITE g_BirdBite;
+0x005263C0 int16_t *g_FlyZone[2];
+0x005263A0 int16_t *g_GroundZone[][2];
+0x005263C8 uint16_t *g_Overlap;
+0x005206C0 CREATURE *g_BaddieSlots;
+0x00526312 int16_t g_CineLevelID;
+0x005252B8 int32_t g_DrawRoomsCount;
+0x00525B20 int16_t g_DrawRoomsArray[100];
+0x00525BEC int32_t g_DynamicLightCount;
+0x004D7784 int32_t g_CineTickCount;
+0x004D7788 int32_t g_OriginalRoom;
+0x00465518 INVENTORY_ITEM *g_Inv_MainList[];
+0x00465608 INVENTORY_ITEM *g_Inv_OptionList[];
+0x004655A8 INVENTORY_ITEM *g_Inv_KeysList[];
+0x004644F8 int32_t g_Inv_NFrames;
+0x00525C00 STATIC_INFO g_StaticObjects[50]; // MAX_STATIC_OBJECTS
+0x00521FE0 OBJECT_VECTOR *g_SoundEffects;
+0x0051E6E0 int16_t g_SampleLUT[];
+0x0051E9C4 SAMPLE_INFO *g_SampleInfos;
+0x004D7C78 SOUND_SLOT g_SoundSlots[32];
+0x004D9328 RECT g_GameVid_Rect;
+0x004D9358 LPDDS g_BackBufferSurface;
+0x004D9350 bool g_GameVid_IsVga;
+0x004D9344 int32_t g_GameVid_BufWidth;
+0x004D9348 int32_t g_GameVid_BufHeight;
+0x004D8EB4 LPDIRECTDRAWCLIPPER g_DDrawClipper;
+0x004D8EB8 PALETTEENTRY g_WinVid_Palette[256];
+0x004D92C4 LPDIRECTDRAWPALETTE g_DDrawPalette;
+0x004D7EC4 LPDIRECT3DVIEWPORT2 g_D3DView;
+0x004D9355 bool g_NeedToReloadTextures;
+0x004D9352 bool g_GameVid_IsFullscreenVGA;
+0x004D9353 bool g_IsWindowedVGA;
+0x004D9354 bool g_Is16bitTextures;
+0x004D9318 RECT g_GameVid_BufRect;
+0x00466BE4 int16_t g_DumpX;
+0x00466BE6 int16_t g_DumpY;
+0x00466BE8 int16_t g_DumpWidth;
+0x00466BEA int16_t g_DumpHeight;
+0x0051C1B8 TEXTURE_FORMAT g_TextureFormat;
+0x004D92E8 COLOR_BIT_MASKS g_ColorBitMasks;
+0x0051BC30 bool g_WinVidNeedToResetBuffers;
+0x004D7E88 bool g_BGND_PictureIsReady;
+0x004D7E90 int32_t g_BGND_TexturePageIndexes[5];
+0x004D7EA8 HWR_TEXTURE_HANDLE g_BGND_PageHandles[5];
+0x004D7EC0 LPDIRECT3D2 g_D3D;
+0x004D7EC8 LPDIRECT3DMATERIAL2 g_D3DMaterial;
+0x004D7ED4 LPDIRECTDRAW g_DDrawInterface;
+0x00466448 const char g_GameClassName[];
+0x00466468 const char g_GameWindowName[];
+0x004D7ED8 bool g_IsGameWindowChanging;
+0x00519F68 D3DRENDERSTATETYPE g_AlphaBlendEnabler;
+0x00519ED8 D3DTEXTUREHANDLE g_CurrentTexSource;
+0x00519F6C bool g_ColorKeyState;
+0x0051C20C bool g_TexturesAlphaChannel;
+0x00519F64 bool g_ZEnableState;
+0x00519F70 bool g_ZWriteEnableState;
+0x00466BDC int32_t g_PaletteIndex;
+0x00519F78 int32_t g_HWR_TexturePageIndexes[32]; // MAX_TEXTURE_PAGES
+0x004D7790 int32_t g_HeightType;
+0x004D9D94 int16_t *g_Legacy_FloorData;
+0x00525B08 int16_t *g_AnimCommands;
+0x0052617C ANIM_CHANGE *g_AnimChanges;
+0x00525B04 ANIM_RANGE *g_AnimRanges;
+0x00526260 int32_t g_FlipMaps[10]; // MAX_FLIP_MAPS
+0x005252B4 int32_t g_Outside;
+0x00526198 int32_t g_OutsideRight;
+0x00526178 int32_t g_OutsideLeft;
+0x005261AC int32_t g_OutsideTop;
+0x00525B00 int32_t g_OutsideBottom;
+0x00525900 int32_t g_BoundRooms[128]; // MAX_BOUND_ROOMS
+0x005258C0 PORTAL_VBUF g_DoorVBuf[4];
+0x00464180 int32_t g_BoxLines[12][2];
+0x00526190 BOOL g_CameraUnderwater;
+0x005263D0 int32_t g_BoxCount;
+0x004D7C50 int32_t g_SlotsUsed;
+0x004D9360 int32_t g_TexturePageCount;
+0x004D9D90 int16_t *g_MeshBase;
+0x004D9E98 int32_t g_TextureInfoCount;
+0x004D93F0 uint8_t g_LabTextureUVFlag[2048]; // MAX_TEXTURES
+0x005251B0 FRAME_INFO *g_AnimFrames;
+0x0051BC38 int32_t g_IsWet;
+0x0051B308 RGB_888 g_WaterPalette[256];
+0x004BF2D8 uint8_t g_DepthQIndex[256];
+0x004D7C74 int32_t g_NumCameras;
+0x0051B92C int16_t *g_AnimTextureRanges;
+0x005262F4 int16_t g_CineLoaded;
+0x005261B0 uint32_t *g_DemoPtr;
+0x005261B4 int32_t g_DemoCount;
+0x0051E6C0 int32_t g_NumSampleInfos;
+0x004D9BF4 int32_t g_LevelFilePalettesOffset;
+0x004D9BF8 int32_t g_LevelFileTexPagesOffset;
+0x004D9E9C int32_t g_LevelFileDepthQOffset;
+0x004D9D98 char g_LevelFileName[256];
+0x005261C0 uint16_t g_MusicTrackFlags[64];
+0x00465AE0 WEAPON_INFO g_Weapons[];
+0x005206A8 int16_t g_FinalBossActive;
+0x005206BA int16_t g_FinalLevelCount;
+0x005206BC int16_t g_FinalBossCount;
+0x005206B0 int16_t g_FinalBossItem[5];
+0x004D77B4 int32_t g_DemoLevel;
+0x004D77B8 int32_t g_DemoLevel2;
+0x00464A90 INVENTORY_ITEM g_Inv_Item_Stopwatch;
+0x00464AE0 INVENTORY_ITEM g_Inv_Item_Pistols;
+0x00464B30 INVENTORY_ITEM g_Inv_Item_Flare;
+0x00464B80 INVENTORY_ITEM g_Inv_Item_Shotgun;
+0x00464BD0 INVENTORY_ITEM g_Inv_Item_Magnums;
+0x00464C20 INVENTORY_ITEM g_Inv_Item_Uzis;
+0x00464C70 INVENTORY_ITEM g_Inv_Item_Harpoon;
+0x00464CC0 INVENTORY_ITEM g_Inv_Item_M16;
+0x00464D10 INVENTORY_ITEM g_Inv_Item_Grenade;
+0x00464D60 INVENTORY_ITEM g_Inv_Item_PistolAmmo;
+0x00464DB0 INVENTORY_ITEM g_Inv_Item_ShotgunAmmo;
+0x00464E00 INVENTORY_ITEM g_Inv_Item_MagnumAmmo;
+0x00464E50 INVENTORY_ITEM g_Inv_Item_UziAmmo;
+0x00464EA0 INVENTORY_ITEM g_Inv_Item_HarpoonAmmo;
+0x00464EF0 INVENTORY_ITEM g_Inv_Item_M16Ammo;
+0x00464F40 INVENTORY_ITEM g_Inv_Item_GrenadeAmmo;
+0x00464F90 INVENTORY_ITEM g_Inv_Item_SmallMedi;
+0x00464FE0 INVENTORY_ITEM g_Inv_Item_LargeMedi;
+0x00465030 INVENTORY_ITEM g_Inv_Item_Pickup1;
+0x00465080 INVENTORY_ITEM g_Inv_Item_Pickup2;
+0x004650D0 INVENTORY_ITEM g_Inv_Item_Puzzle1;
+0x00465120 INVENTORY_ITEM g_Inv_Item_Puzzle2;
+0x00465170 INVENTORY_ITEM g_Inv_Item_Puzzle3;
+0x004651C0 INVENTORY_ITEM g_Inv_Item_Puzzle4;
+0x00465210 INVENTORY_ITEM g_Inv_Item_Key1;
+0x00465260 INVENTORY_ITEM g_Inv_Item_Key2;
+0x004652B0 INVENTORY_ITEM g_Inv_Item_Key3;
+0x00465300 INVENTORY_ITEM g_Inv_Item_Key4;
+0x00465350 INVENTORY_ITEM g_Inv_Item_Passport;
+0x004653A0 INVENTORY_ITEM g_Inv_Item_Graphics;
+0x004653F0 INVENTORY_ITEM g_Inv_Item_Sound;
+0x00465440 INVENTORY_ITEM g_Inv_Item_Controls;
+0x00465490 INVENTORY_ITEM g_Inv_Item_Photo;
+0x00465620 REQUEST_INFO g_LoadGameRequester;
+0x00465838 REQUEST_INFO g_SaveGameRequester;
+0x004642E8 int16_t g_GF_NumSecrets = 3;
+0x004642F0 int16_t g_GF_MusicTracks[16];
+0x004D77EC int32_t g_GF_ScriptVersion;
+0x004D77F0 int32_t g_GF_LaraStartAnim;
+0x004D77F4 int16_t g_GF_SunsetEnabled;
+0x004D77F8 int16_t g_GF_DeadlyWater;
+0x004D77FC int16_t g_GF_NoFloor;
+0x004D7800 int16_t g_GF_RemoveWeapons;
+0x004D7804 int16_t g_GF_RemoveAmmo;
+0x004D7808 char g_GF_Kill2Complete;
+0x004D780C int8_t g_GF_StartGame;
+0x004D7818 char g_GF_Description[256];
+0x004D9C00 int16_t g_GF_LevelOffsets[200];
+0x00521DC4 char **g_GF_CutsceneFileNames;
+0x00521E68 char *g_GF_FMVFilenamesBuf;
+0x00521E6C char *g_GF_Key1StringsBuf;
+0x00521E70 int16_t *g_GF_FrontendSequence;
+0x00521E74 char **g_GF_Key2Strings;
+0x00521E78 char *g_GF_CutsceneFileNamesBuf;
+0x00521E7C char *g_GF_Key4StringsBuf;
+0x00521E80 int16_t *g_GF_SequenceBuf;
+0x00521E84 char *g_GF_Key2StringsBuf;
+0x00521E8C char *g_GF_PicFilenamesBuf;
+0x00521E90 char **g_GF_Key4Strings;
+0x00521DC0 char **g_GF_Puzzle1Strings;
+0x00521E98 char **g_GF_Puzzle2Strings;
+0x00521EC0 char **g_GF_Puzzle3Strings;
+0x00521E60 char **g_GF_Puzzle4Strings;
+0x00521E94 char **g_GF_Pickup1Strings;
+0x00521F44 char **g_GF_Pickup2Strings;
+0x00521EA8 char *g_GF_Puzzle1StringsBuf;
+0x00521F40 char *g_GF_Puzzle2StringsBuf;
+0x00521F98 char *g_GF_Puzzle3StringsBuf;
+0x00521F90 char *g_GF_Puzzle4StringsBuf;
+0x00521E64 char *g_GF_Pickup1StringsBuf;
+0x00521E88 char *g_GF_Pickup2StringsBuf;
+0x00521E9C char *g_GF_LevelFileNamesBuf;
+0x00521EA0 char **g_GF_PicFilenames;
+0x00521EA4 char **g_GF_Key1Strings;
+0x00521EAC char *g_GF_LevelNamesBuf;
+0x00521EB0 char **g_GF_GameStrings;
+0x00521EB4 char *g_GF_PCStringsBuf;
+0x00521EB8 char *g_GF_GameStringsBuf;
+0x00521EBC char **g_GF_Key3Strings;
+0x00521EC4 char **g_GF_LevelNames;
+0x00521EE0 int16_t *g_GF_ScriptTable[24]; // MAX_LEVELS
+0x00521F48 char **g_GF_TitleFileNames;
+0x00521F4C char *g_GF_TitleFileNamesBuf;
+0x00521F50 char **g_GF_PCStrings;
+0x00521F54 char **g_GF_LevelFileNames;
+0x00521F60 int16_t g_GF_ValidDemos[24]; // MAX_DEMO_FILES
+0x00521F94 char **g_GF_FMVFilenames;
+0x00521F9C char *g_GF_Key3StringsBuf;
+0x00521FA0 char g_GF_SecretInvItems[27]; // GF_ADD_INV_NUMBER_OF
+0x00521FC0 char g_GF_Add2InvItems[27]; // GF_ADD_INV_NUMBER_OF
+0x004D9ECC int32_t g_GameMode; // GAMEMODE
+0x004D7970 int32_t g_OldInputDB;
+0x004D7948 TEXTSTRING *g_Inv_ItemText[3]; // IT_NUMBER_OF
+0x004D7950 TEXTSTRING *g_Inv_LevelText;
+0x004D7958 TEXTSTRING *g_Inv_TagText;
+0x004D9EBC int32_t g_SavedGames;
+0x0051A2CC TEXTSTRING *g_PasswordText1;
+0x0051A2D0 int32_t g_PassportMode;
+0x0051A2D8 TEXTSTRING *g_DetailText[5];
+0x0051A2F0 TEXTSTRING *g_SoundText[4];
+0x0051A290 TEXTSTRING *m_ControlsTextA[14]; // INPUT_ROLE_NUMBER_OF
+0x0051A258 TEXTSTRING *g_ControlsTextB[14]; // INPUT_ROLE_NUMBER_OF
+0x0051A300 TEXTSTRING *g_ControlsText[2];
+0x004D7C30 int32_t m_ShowStatsTextMode;
+0x005207E0 char g_ValidLevelStrings1[];
+0x00521720 char g_ValidLevelStrings2[];
+0x004D7C34 int32_t m_ShowEndStatsTextMode;
+0x004D7C2C int32_t m_ShowGymStatsTextMode;
+0x00520D00 uint32_t g_RequesterFlags1[24]; // MAX_REQUESTER_ITEMS
+0x00520CA0 uint32_t g_RequesterFlags2[24]; // MAX_REQUESTER_ITEMS
+0x00521C40 uint32_t g_SaveGameReqFlags1[24]; // MAX_REQUESTER_ITEMS
+0x00521BE0 uint32_t g_SaveGameReqFlags2[24]; // MAX_REQUESTER_ITEMS
+0x004D9EC8 int32_t g_SaveCounter;
+0x00466B80 int16_t g_SavedLevels[24]; // MAX_LEVELS
+0x004654E8 int16_t g_Inv_MainQtys[];
+0x00465578 int16_t g_Inv_KeysQtys[];
+0x0046773C int32_t g_DetailLevel;
+0x0051A250 int32_t g_LayoutPage;
+0x0051A24C int32_t g_KeySelector;
+0x0051A248 int32_t g_KeyCursor;
+0x00466FA8 const char *g_KeyNames[];
+0x00464500 const uint16_t g_Requester_BackgroundGour1[];
+0x00464520 const uint16_t g_Requester_BackgroundGour2[];
+0x00464538 const uint16_t g_Requester_MainGour1[];
+0x00464558 const uint16_t g_Requester_MainGour2[];
+0x00464590 const uint16_t g_Requester_SelectionGour2[];
+0x004645A8 const uint16_t g_Requester_UnselectionGour1[];
+0x005216E0 uint16_t g_InvColors[17]; // INV_COLOR_NUMBER_OF
+0x00464150 BITE g_DragonMouth;
+0x00466230 BITE g_SkidooLeftGun;
+0x00466240 BITE g_SkidooRightGun;
+0x00464130 BITE g_DogBite;
+0x00464140 BITE g_TigerBite;
+0x00465F40 int16_t g_MovableBlockBounds[];
+0x00465F58 int16_t g_ZiplineHandleBounds[];
+0x00465FF0 int16_t g_PickupBounds[];
+0x00466018 int16_t g_GongBounds[];
+0x00466030 int16_t g_PickupBoundsUW[];
+0x00466058 int16_t g_SwitchBounds[];
+0x004660A0 int16_t g_SwitchBoundsUW[];
+0x004660C8 int16_t g_KeyholeBounds[];
+0x004660F0 int16_t g_PuzzleHoleBounds[];
+0x00465F70 XYZ_32 g_ZiplineHandlePosition;
+0x00466008 XYZ_32 g_PickupPosition;
+0x00466048 XYZ_32 g_PickupPositionUW;
+0x00466070 XYZ_32 g_SmallSwitchPosition;
+0x00466080 XYZ_32 g_PushSwitchPosition;
+0x00466090 XYZ_32 g_AirlockPosition;
+0x004660B8 XYZ_32 g_SwitchUWPosition;
+0x004660E0 XYZ_32 g_KeyholePosition;
+0x00466108 XYZ_32 g_PuzzleHolePosition;
+0x004D7C58 XYZ_32 g_InteractPosition;
+0x004D7C68 XYZ_32 g_DetonatorPosition;
+0x004D9EB0 void *g_MovieContext;
+0x004D9EB4 void *g_FmvContext;
+0x004D9EB8 void *g_FmvSoundContext;
+0x0051A000 size_t g_GameBuf_MemCap;
+0x0051A004 char *g_GameBuf_MemPtr;
+0x0051A008 size_t g_GameBuf_MemUsed;
+0x0051A00C size_t g_GameBuf_MemFree;
+0x0051B608 RGB_888 g_PicturePalette[256];
+0x004D7E7C int32_t g_DetonateAllMines;
+0x005206A4 int32_t g_SavegameBufPos;
+0x0051E9C8 char *g_SavegameBufPtr;
+0x0051C210 LPDIRECTDRAWPALETTE g_TexturePalettes[16]; // MAX_PALETTES
+0x0051BDB8 TEXPAGE_DESC g_TexturePages[32]; // MAX_TEXTURE_PAGES
+0x00466280 BITE g_BigSpiderBite;
+0x0051C20D uint8_t g_TexturesHaveCompatibleMasks;
+0x00467768 SHADOW_INFO g_ShadowInfo;
+0x004663C0 BITE g_YetiLBite;
+0x004663D0 BITE g_YetiRBite;
+0x004663E0 BITE g_BirdGuardianBite;
+0x0051BDA4 int32_t g_CheatMode;
+0x0051BD1C bool g_CheatFlare;
+0x0051BD18 int16_t g_CheatAngle;
+0x0051BD10 int32_t g_CheatTurn;
+0x0051A308 ROOM_LIGHT_TABLE g_RoomLightTables[32]; // WIBBLE_SIZE
+0x005251C0 LIGHT g_DynamicLights[10]; // MAX_DYNAMIC_LIGHTS
+0x0051B908 int32_t g_RoomLightShades[4];
+0x00526194 int32_t g_SunsetTimer;
+0x00521CD0 int32_t g_IsFirstHair;
+0x00521CE0 XYZ_32 g_HairVelocity[7]; // HAIR_SEGMENTS + 1
+0x00521D40 HAIR_SEGMENT g_HairSegments[7]; // HAIR_SEGMENTS + 1
+0x004D7918 int32_t g_HairWind;
+0x004641E0 BITE g_BigEelBite;
+0x00466210 BITE g_BarracudaBite;
+0x00466220 BITE g_SharkBite;
+0x00466118 BITE g_MouseBite;
+0x00465F80 BITE g_Cultist1Gun;
+0x004642C8 BITE g_Cultist2LeftHand;
+0x004642D8 BITE g_Cultist2RightHand;
+0x00465F90 BITE g_Cultist3LeftGun;
+0x00465FA0 BITE g_Cultist3RightGun;
+0x00465FD0 BITE g_Bandit1Gun;
+0x00465FE0 BITE g_Bandit2Gun;
+0x00465FB0 BITE g_Worker1Gun;
+0x00465FC0 BITE g_Worker2Gun;
+0x00464288 BITE g_Worker3Hit;
+0x00464278 BITE g_MonkHit;
+0x004642A8 BITE g_XianSpearmanRightSpear;
+0x00464298 BITE g_XianSpearmanLeftSpear;
+0x004642B8 BITE g_XianKnightSword;
+0x00466360 BITE g_TeethTrapTeeth1A;
+0x00466370 BITE g_TeethTrapTeeth1B;
+0x00466380 BITE g_TeethTrapTeeth2A;
+0x00466390 BITE g_TeethTrapTeeth2B;
+0x004663A0 BITE g_TeethTrapTeeth3A;
+0x004663B0 BITE g_TeethTrapTeeth3B;
diff --git a/tools/shared/ida_progress.py b/tools/shared/ida_progress.py
index 91159e05e..fdd22bf33 100644
--- a/tools/shared/ida_progress.py
+++ b/tools/shared/ida_progress.py
@@ -74,13 +74,6 @@ def extract_symbol_name(c_declaration: str) -> str | None:
return result
-class SymbolStatus(StrEnum):
- DECOMPILED = auto()
- KNOWN = auto()
- TODO = auto()
- UNUSED = auto()
-
-
class ProgressFileSection(StrEnum):
TYPES = "types"
FUNCTIONS = "functions"
@@ -92,7 +85,6 @@ class Symbol:
offset: int
signature: str
size: int | None = None
- flags: str = ""
@property
def name(self) -> str:
@@ -102,32 +94,10 @@ class Symbol:
def offset_str(self) -> str:
return f"0x{self.offset:08X}"
- @property
- def is_decompiled(self) -> bool:
- return "+" in self.flags or "@" in self.flags
-
- @property
- def is_called(self) -> bool:
- return "*" in self.flags
-
- @property
- def is_unused(self) -> bool:
- return "x" in self.flags
-
@property
def is_known(self) -> bool:
return not re.search(r"(\s|^)sub_", self.signature)
- @property
- def status(self) -> SymbolStatus:
- if self.is_decompiled:
- return SymbolStatus.DECOMPILED
- elif self.is_unused:
- return SymbolStatus.UNUSED
- elif self.is_known:
- return SymbolStatus.KNOWN
- return SymbolStatus.TODO
-
@dataclass
class ProgressFile:
@@ -173,23 +143,21 @@ def parse_progress_file(path: Path) -> ProgressFile:
continue
if section == ProgressFileSection.FUNCTIONS:
- offset, size, flags, signature = re.split(r"\s+", line, maxsplit=3)
+ offset, size, signature = re.split(r"\s+", line, maxsplit=2)
result.functions.append(
Symbol(
signature=signature,
offset=to_int(offset),
size=to_int(size),
- flags=flags,
)
)
if section == ProgressFileSection.VARIABLES:
- offset, flags, signature = re.split(r"\s+", line, maxsplit=2)
+ offset, signature = re.split(r"\s+", line, maxsplit=1)
result.variables.append(
Symbol(
signature=signature,
offset=to_int(offset),
- flags=flags,
)
)
diff --git a/tools/shared/paths.py b/tools/shared/paths.py
index 633355103..ec187768f 100644
--- a/tools/shared/paths.py
+++ b/tools/shared/paths.py
@@ -28,7 +28,6 @@ class ProjectPaths:
TR1Paths = ProjectPaths(folder_name="tr1")
TR2Paths = ProjectPaths(folder_name="tr2")
-TR2Paths.progress_file = TR2Paths.docs_dir / "progress.txt"
-TR2Paths.progress_svg = TR2Paths.docs_dir / "progress.svg"
+TR2Paths.progress_file = TR2Paths.docs_dir / "symbols.txt"
PROJECT_PATHS = {1: TR1Paths, 2: TR2Paths}
diff --git a/tools/tr2/generate_ida_importer b/tools/tr2/generate_ida_importer
index e80980768..d52bbc22b 100755
--- a/tools/tr2/generate_ida_importer
+++ b/tools/tr2/generate_ida_importer
@@ -1,5 +1,5 @@
#!/usr/bin/env python3
-"""Converts progress.txt to an IDC script usable with IDA Free, that propagates
+"""Converts symbols.txt to an IDC script usable with IDA Free, that propagates
the IDA database with typing information, function declarations and variable
declarations.
"""
@@ -60,22 +60,6 @@ def import_symbol(symbol: Symbol, file) -> None:
file=file,
)
- if "+" in symbol.flags:
- color = 0xA0FFA0
- elif "@" in symbol.flags:
- color = 0xA0C0A0
- elif "x" in symbol.flags:
- color = 0xA0A0A0
- elif known:
- color = 0xA0FFFF
- else:
- color = 0xEEEEEE
-
- print(
- f"set_color(0x{symbol.offset:x}, CIC_FUNC, 0x{color:x});",
- file=file,
- )
-
def generate_symbols(symbols: list[Symbol], file) -> None:
error_count = 0
diff --git a/tools/tr2/render_progress b/tools/tr2/render_progress
deleted file mode 100755
index 47bd4653c..000000000
--- a/tools/tr2/render_progress
+++ /dev/null
@@ -1,706 +0,0 @@
-#!/usr/bin/env python3
-import re
-from collections.abc import Callable, Iterable
-from dataclasses import dataclass
-from decimal import Decimal
-from enum import StrEnum, auto
-from itertools import groupby
-from pathlib import Path
-from typing import Any
-
-from shared.ida_progress import Symbol, SymbolStatus, parse_progress_file
-from shared.paths import TR2Paths
-
-DOCUMENT_MARGIN = Decimal(2)
-GRID_MAX_SQUARES = 50
-GRID_SQUARE_SIZE = Decimal(12)
-GRID_SQUARE_MARGIN = Decimal(3)
-PROGRESS_BAR_SIZE = Decimal(6)
-LEGEND_SQUARE_SIZE = GRID_SQUARE_SIZE
-LEGEND_SQUARE_MARGIN = GRID_SQUARE_MARGIN
-LEGEND_ROW_PADDING = Decimal(3)
-LEGEND_MARGIN = Decimal(15)
-TEXT_SIZE = Decimal(15)
-TEXT_MARGIN = Decimal(5)
-SECTION_MARGIN = GRID_SQUARE_SIZE + LEGEND_MARGIN
-GRID_WIDTH = (
- GRID_MAX_SQUARES * (GRID_SQUARE_SIZE + GRID_SQUARE_MARGIN)
- - GRID_SQUARE_MARGIN
-)
-ZERO = Decimal(0)
-EPSILON = Decimal("0.1")
-
-
-class SumMode(StrEnum):
- BYTES = auto()
- COUNT = auto()
-
-
-@dataclass
-class MyFraction:
- """Fraction that doesn't normalize (eg 8/12 doesn't become 2/3)"""
-
- numerator: int
- denominator: int
-
-
-def format_decimal(source: Decimal) -> str:
- return str(source.quantize(Decimal("1.11"))).replace(".00", "")
-
-
-def format_percent(source: MyFraction) -> str:
- return format_decimal(fraction_to_decimal(source) * 100) + "%"
-
-
-def fraction_to_decimal(source: MyFraction) -> Decimal:
- return Decimal(source.numerator) / Decimal(source.denominator)
-
-
-@dataclass
-class Box:
- x1: Decimal
- y1: Decimal
- x2: Decimal
- y2: Decimal
-
- @property
- def dx(self) -> Decimal:
- return self.x2 - self.x1
-
- @property
- def dy(self) -> Decimal:
- return self.y2 - self.y1
-
-
-@dataclass
-class SquarifyResult(Box):
- item: Any
-
-
-class Squarify:
- def __init__(
- self,
- items: Iterable[Any],
- key: Callable[[Any], Decimal],
- box: Box,
- normalize: bool = True,
- ) -> None:
- self.key: Callable[[Any], Decimal] = key
-
- if normalize:
- total_size = sum(map(key, items))
- total_area = box.dx * box.dy
-
- def normalized_key(item: Any) -> Decimal:
- return key(item) * total_area / total_size
-
- self.key = normalized_key
-
- self.items = list(sorted(items, key=self.key, reverse=True))
- self.box = box
-
- def layoutrow(self, items: Iterable[Any]) -> Iterable[SquarifyResult]:
- covered_area = sum(self.key(item) for item in items)
- dx = covered_area / self.box.dy
- y = self.box.y1
- for item in items:
- yield SquarifyResult(
- item=item,
- x1=self.box.x1,
- y1=y,
- x2=self.box.x1 + dx,
- y2=y + self.key(item) / dx,
- )
- y += self.key(item) / dx
-
- def layoutcol(self, items: Iterable[Any]) -> Iterable[SquarifyResult]:
- covered_area = sum(self.key(item) for item in items)
- dy = covered_area / self.box.dx
- x = self.box.x1
- for item in items:
- yield SquarifyResult(
- item=item,
- x1=x,
- y1=self.box.y1,
- x2=x + self.key(item) / dy,
- y2=self.box.y1 + dy,
- )
- x += self.key(item) / dy
-
- def layout(self, items: Iterable[Any]) -> Iterable[SquarifyResult]:
- yield from (
- self.layoutrow(items)
- if self.box.dx >= self.box.dy
- else self.layoutcol(items)
- )
-
- def leftoverrow(self, items: Iterable[Any]) -> Box:
- covered_area = sum(self.key(item) for item in items)
- dx = covered_area / self.box.dy
- return Box(
- x1=self.box.x1 + dx,
- y1=self.box.y1,
- x2=self.box.x1 + self.box.dx,
- y2=self.box.y1 + self.box.dy,
- )
-
- def leftovercol(self, items: Iterable[Any]) -> Box:
- covered_area = sum(self.key(item) for item in items)
- dy = covered_area / self.box.dx
- return Box(
- x1=self.box.x1,
- y1=self.box.y1 + dy,
- x2=self.box.x1 + self.box.dx,
- y2=self.box.y1 + self.box.dy,
- )
-
- def leftover(self, items: Iterable[Any]) -> Box:
- return (
- self.leftoverrow(items)
- if self.box.dx >= self.box.dy
- else self.leftovercol(items)
- )
-
- def worst_ratio(self, items: Iterable[Any]) -> Decimal:
- return max(
- max(result.dx / result.dy, result.dy / result.dx)
- for result in self.layout(items)
- )
-
- def run(self, items: list[Any] | None = None) -> Iterable[SquarifyResult]:
- if not items:
- items = self.items
-
- if len(items) == 0:
- return
-
- if len(items) == 1:
- yield from self.layout(items)
- return
-
- i = 1
- while i < len(items) and self.worst_ratio(
- items[:i]
- ) >= self.worst_ratio(items[: i + 1]):
- i += 1
- current = items[:i]
- remaining = items[i:]
-
- leftover_box = self.leftover(current)
- yield from self.layout(current)
- yield from Squarify(
- remaining, key=self.key, box=leftover_box, normalize=False
- ).run()
-
-
-def squarify(
- items: list[Any], key: Callable[[Any], Decimal], box: Box
-) -> Iterable[SquarifyResult]:
- yield from Squarify(items, key, box).run()
-
-
-def collect_functions() -> Iterable[Symbol]:
- in_functions = False
- for line in TR2Paths.progress_file.open():
- line = line.strip()
- if line == "# FUNCTIONS":
- in_functions = True
- elif re.match("^# [A-Z]*$", line):
- in_functions = False
- if not in_functions:
- continue
-
- if line.startswith("#") or not line:
- continue
- offset, size, flags, func_signature = re.split(
- r"\s+", line, maxsplit=3
- )
- if not offset.replace("-", ""):
- continue
- yield Symbol(
- signature=func_signature,
- offset=int(offset, 16),
- size=int(size, 16),
- flags=flags,
- )
-
-
-class Shape:
- box: Box = ...
-
- def render(self) -> str:
- raise NotImplementedError("not implemented")
-
-
-class Container(Shape):
- def __init__(self):
- self.children: list[Shape] = []
-
- def __post_init__(self) -> None:
- self.box = get_common_bbox(self.children)
-
- def render(self) -> str:
- return "\n".join(child.render() for child in self.children)
-
-
-def get_common_bbox(shapes: list[Shape]) -> Box:
- return Box(
- x1=min(shape.box.x1 for shape in shapes),
- y1=min(shape.box.y1 for shape in shapes),
- x2=max(shape.box.x2 for shape in shapes),
- y2=max(shape.box.y2 for shape in shapes),
- )
-
-
-@dataclass
-class Rectangle(Shape):
- x: Decimal
- y: Decimal
- class_name: str
- dx: Decimal
- dy: Decimal
- title: str | None = None
-
- def __post_init__(self) -> None:
- self.box = Box(
- x1=self.x,
- y1=self.y,
- x2=self.x + self.dx,
- y2=self.y + self.dy,
- )
-
- def render(self) -> str:
- return (
- f"{self.title} " if self.title else "/>")
- )
-
-
-class Square(Rectangle):
- def __init__(
- self,
- x: Decimal,
- y: Decimal,
- class_name: str,
- size: Decimal = GRID_SQUARE_SIZE,
- title: str | None = None,
- ) -> None:
- super().__init__(
- x=x, y=y, class_name=class_name, dx=size, dy=size, title=title
- )
-
-
-@dataclass
-class Text(Shape):
- x: Decimal
- y: Decimal
- text: str
- class_name: str | None = None
- size: Decimal = TEXT_SIZE
-
- def __post_init__(self) -> None:
- self.style = ""
- if self.size != TEXT_SIZE:
- self.style = f"font-size: {self.size}px; "
- self.box = Box(x1=self.x, y1=self.y, x2=self.x, y2=self.y + self.size)
-
- def render(self) -> str:
- return (
- "'
- f"{self.text}"
- f" "
- )
-
-
-class LegendText(Container):
- def __init__(self, class_name: str, text: str) -> None:
- super().__init__()
- text_shape = Text(
- x=LEGEND_SQUARE_SIZE + TEXT_MARGIN,
- y=ZERO,
- text=text,
- )
-
- square_shape = Square(
- x=ZERO,
- y=(text_shape.size - LEGEND_SQUARE_SIZE) / 2,
- class_name=class_name,
- size=LEGEND_SQUARE_SIZE,
- )
-
- self.children.extend([text_shape, square_shape])
-
- self.__post_init__()
-
-
-@dataclass
-class TranslateShape(Container):
- def __init__(
- self, children: list[Shape], x: Decimal = ZERO, y: Decimal = ZERO
- ) -> None:
- self.children = children
- self.x = x
- self.y = y
-
- super().__post_init__()
-
- self.box.x1 += self.x
- self.box.x2 += self.x
- self.box.y1 += self.y
- self.box.y2 += self.y
-
- def render(self) -> str:
- return (
- f'\n'
- f"{super().render()}\n"
- " "
- )
-
-
-@dataclass
-class LegendSection(Container):
- def __init__(self, all_functions: list[Symbol]) -> None:
- super().__init__()
-
- functions_status_map = get_functions_status_map(all_functions)
-
- self.title = Text(x=ZERO, y=0, text="Legend:")
- self.children.append(self.title)
-
- captions = {
- SymbolStatus.DECOMPILED: "Function fully decompiled",
- SymbolStatus.UNUSED: "Function not used by the game",
- SymbolStatus.KNOWN: "Function not yet decompiled, but with a known signature",
- SymbolStatus.TODO: "Function not yet decompiled, with an unknown signature",
- }
-
- y = self.title.size + TEXT_MARGIN
- for status in SymbolStatus:
- caption = captions[status]
- functions = functions_status_map[status]
- legend_text = TranslateShape(
- [LegendText(class_name=status.value, text=caption)], y=y
- )
- self.children.append(legend_text)
- y = legend_text.box.y2 + LEGEND_ROW_PADDING
-
- self.__post_init__()
-
-
-class FunctionGrid(Container):
- def __init__(self, all_functions: list[Symbol]) -> None:
- super().__init__()
- for i, function in enumerate(all_functions):
- x = (i % GRID_MAX_SQUARES) * (
- GRID_SQUARE_SIZE + GRID_SQUARE_MARGIN
- )
- y = (i // GRID_MAX_SQUARES) * (
- GRID_SQUARE_SIZE + GRID_SQUARE_MARGIN
- )
- self.children.append(
- Square(
- x=x,
- y=y,
- class_name=function.status.value,
- title=function.signature,
- )
- )
-
- self.__post_init__()
-
-
-class FunctionTreeGrid(Container):
- def __init__(self, all_functions: list[Symbol]) -> None:
- super().__init__()
- box = Box(
- x1=ZERO,
- y1=ZERO,
- x2=GRID_WIDTH + GRID_SQUARE_MARGIN,
- y2=(
- (
- (len(all_functions) + GRID_MAX_SQUARES - 1)
- // GRID_MAX_SQUARES
- )
- * (GRID_SQUARE_SIZE + GRID_SQUARE_MARGIN)
- )
- + GRID_SQUARE_MARGIN,
- )
-
- for result in squarify(
- all_functions, key=lambda function: Decimal(function.size), box=box
- ):
- result.x2 = max(ZERO, result.x2 - GRID_SQUARE_MARGIN)
- result.y2 = max(ZERO, result.y2 - GRID_SQUARE_MARGIN)
-
- self.children.append(
- Rectangle(
- x=result.x1,
- y=result.y1,
- dx=result.dx,
- dy=result.dy,
- class_name=result.item.status.value,
- title=result.item.signature,
- )
- )
-
- self.__post_init__()
-
-
-def get_function_done_percentage(
- chosen_functions: list[Symbol],
- all_functions: list[Symbol],
- mode: SumMode,
-) -> MyFraction:
- match mode:
- case SumMode.COUNT:
- return MyFraction(len(chosen_functions), len(all_functions))
- case SumMode.BYTES:
- return MyFraction(
- sum(function.size for function in chosen_functions),
- sum(function.size for function in all_functions),
- )
- case _:
- assert False
-
-
-class ProgressBar(Container):
- def __init__(self, all_functions: list[Symbol], mode: SumMode) -> None:
- super().__init__()
- lx2 = ZERO
-
- def sorter(function):
- return list(SymbolStatus).index(function.status)
-
- for status_value, group in groupby(
- sorted(all_functions, key=sorter), sorter
- ):
- chosen_functions = list(group)
- if not chosen_functions:
- continue
-
- status = chosen_functions[0].status
- fraction = get_function_done_percentage(
- chosen_functions, all_functions, mode=mode
- )
- ratio = fraction_to_decimal(fraction)
- lx1 = lx2
- lx2 += ratio * GRID_WIDTH
- self.children.append(
- Rectangle(
- x=lx1,
- y=ZERO,
- dx=lx2 - lx1,
- dy=PROGRESS_BAR_SIZE,
- class_name=status,
- )
- )
-
- self.__post_init__()
-
-
-def get_functions_status_map(
- all_functions: list[Symbol],
-) -> dict[SymbolStatus, list[Symbol]]:
- functions_status_map: dict[SymbolStatus, list[Symbol]] = {
- status: [] for status in SymbolStatus
- }
- for function in all_functions:
- functions_status_map[function.status].append(function)
- return functions_status_map
-
-
-def get_progress_parts(
- all_functions: list[Symbol],
-) -> dict[SymbolStatus, tuple[list[Symbol], dict[SumMode, MyFraction]]]:
- functions_status_map = get_functions_status_map(all_functions)
-
- return {
- status: (
- functions_status_map[status],
- {
- mode: get_function_done_percentage(
- functions_status_map[status], all_functions, mode=mode
- )
- for mode in SumMode
- },
- )
- for status in SymbolStatus
- }
-
-
-class GridSection(Container):
- def __init__(
- self, header: str, all_functions: list[Symbol], mode: SumMode
- ) -> None:
- super().__init__()
- header_shape = Text(x=ZERO, y=ZERO, text=header)
-
- y = header_shape.size + TEXT_MARGIN
- x2 = GRID_WIDTH
-
- progress_bar = TranslateShape(
- [ProgressBar(all_functions, mode=mode)], y=y
- )
-
- y = progress_bar.box.y2 + TEXT_MARGIN
-
- if mode == SumMode.COUNT:
- grid = TranslateShape([FunctionGrid(all_functions)], y=y)
- else:
- grid = TranslateShape([FunctionTreeGrid(all_functions)], y=y)
-
- progress_parts = get_progress_parts(all_functions)
-
- progress_text = Text(
- x=GRID_WIDTH,
- y=Decimal(3),
- size=Decimal(12),
- class_name=SymbolStatus.TODO.value,
- text=(
- ''
- + " · ".join(
- f''
- + f"{format_percent(progress_parts[status][1][mode])}"
- + (
- f" ({progress_parts[status][1][mode].numerator})"
- if mode == SumMode.COUNT
- else ""
- )
- + " "
- for status in SymbolStatus
- )
- + " "
- ),
- )
-
- self.children.extend(
- [
- header_shape,
- progress_text,
- progress_bar,
- grid,
- ]
- )
-
- self.__post_init__()
-
-
-class ProgressSVG(Container):
- def __init__(self, all_functions: list[Symbol]) -> None:
- super().__init__()
-
- y = ZERO
-
- section1 = GridSection(
- header="Tomb2.exe progress according to the physical function order:",
- all_functions=all_functions,
- mode=SumMode.COUNT,
- )
-
- section2 = GridSection(
- header="Tomb2.exe progress according to the function sizes:",
- all_functions=all_functions,
- mode=SumMode.BYTES,
- )
-
- legend = LegendSection(all_functions)
-
- section1_wrap = TranslateShape(
- [section1], y=legend.box.y2 + SECTION_MARGIN
- )
- section2_wrap = TranslateShape(
- [section2], y=section1_wrap.box.y2 + SECTION_MARGIN
- )
- legend_wrap = TranslateShape([legend])
-
- self.children.extend(
- [
- legend_wrap,
- section1_wrap,
- section2_wrap,
- ]
- )
-
- super().__post_init__()
-
- def render(self) -> str:
- x1 = -DOCUMENT_MARGIN
- y1 = -DOCUMENT_MARGIN
- x2 = self.box.dx + DOCUMENT_MARGIN * 2
- y2 = self.box.dy + DOCUMENT_MARGIN * 2
- return (
- f"""
-
-
-
-
-
-
-"""
- + super().render()
- + "\n "
- )
-
-
-def main() -> None:
- progress_file = parse_progress_file(TR2Paths.progress_file)
-
- with TR2Paths.progress_svg.open("w") as handle:
- svg = ProgressSVG(progress_file.functions)
- print(svg.render(), file=handle)
-
-
-if __name__ == "__main__":
- main()