port Lara_State_Extra_PullDagger

This commit is contained in:
Marcin Kurczewski 2023-10-06 11:01:30 +02:00
parent c6ab116b68
commit 9a81dd2049
No known key found for this signature in database
GPG Key ID: CC65E6FD28CAE42A
8 changed files with 483 additions and 13 deletions

View File

@ -69,10 +69,10 @@
</g>
<g transform="translate(0 116)">
<text x="0" y="7.50">Tomb2.exe progress according to the physical function order:</text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">9.17% (110)</tspan> · <tspan class="known">88.42% (1061)</tspan> · <tspan class="todo">0.67% (8)</tspan> · <tspan class="unused">1.75% (21)</tspan></tspan></text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">9.25% (111)</tspan> · <tspan class="known">88.33% (1060)</tspan> · <tspan class="todo">0.67% (8)</tspan> · <tspan class="unused">1.75% (21)</tspan></tspan></text>
<g transform="translate(0 20)">
<rect width="68.48" height="6" x="0" y="0" class="decompiled"/>
<rect width="660.47" height="6" x="68.48" y="0" class="known"/>
<rect width="69.10" height="6" x="0" y="0" class="decompiled"/>
<rect width="659.85" height="6" x="69.10" y="0" class="known"/>
<rect width="4.98" height="6" x="728.95" y="0" class="todo"/>
<rect width="13.07" height="6" x="733.93" y="0" class="unused"/>
</g>
@ -512,7 +512,7 @@
<rect width="12" height="12" x="480" y="120" class="decompiled"><title>void __cdecl Lara_State_Extra_Airlock(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="495" y="120" class="decompiled"><title>void __cdecl Lara_State_Extra_GongBong(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="510" y="120" class="decompiled"><title>void __cdecl Lara_State_Extra_DinoKill(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="525" y="120" class="known"><title>void __cdecl Lara_State_Extra_PullDagger(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="525" y="120" class="decompiled"><title>void __cdecl Lara_State_Extra_PullDagger(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="540" y="120" class="known"><title>void __cdecl Lara_State_Extra_StartAnim(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="555" y="120" class="known"><title>void __cdecl Lara_State_Extra_StartHouse(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="570" y="120" class="known"><title>void __cdecl Lara_State_Extra_FinalAnim(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
@ -1281,10 +1281,10 @@
</g>
<g transform="translate(0 531)">
<text x="0" y="7.50">Tomb2.exe progress according to the function sizes:</text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">5.04%</tspan> · <tspan class="known">94.63%</tspan> · <tspan class="todo">0.02%</tspan> · <tspan class="unused">0.31%</tspan></tspan></text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">5.10%</tspan> · <tspan class="known">94.57%</tspan> · <tspan class="todo">0.02%</tspan> · <tspan class="unused">0.31%</tspan></tspan></text>
<g transform="translate(0 20)">
<rect width="37.68" height="6" x="0" y="0" class="decompiled"/>
<rect width="706.85" height="6" x="37.68" y="0" class="known"/>
<rect width="38.10" height="6" x="0" y="0" class="decompiled"/>
<rect width="706.44" height="6" x="38.10" y="0" class="known"/>
<rect width="0.13" height="6" x="744.54" y="0" class="todo"/>
<rect width="2.33" height="6" x="744.67" y="0" class="unused"/>
</g>
@ -1751,7 +1751,7 @@
<rect width="8.87" height="9.82" x="726.26" y="133.25" class="known"><title>void __cdecl TeethTrap(int16_t item_num);</title></rect>
<rect width="8.87" height="9.82" x="738.13" y="133.25" class="known"><title>HRESULT __stdcall Enum3DDevicesCallback(GUID *lpGuid, LPTSTR lpDeviceDescription, LPTSTR lpDeviceName, LPD3DDEVICEDESC lpD3DHWDeviceDesc, LPD3DDEVICEDESC lpD3DHELDeviceDesc, LPVOID lpContext);</title></rect>
<rect width="9.33" height="9.34" x="532.47" y="146.07" class="known"><title>void __cdecl SE_ControlsDlgInit(HWND hwndDlg);</title></rect>
<rect width="9.33" height="9.28" x="532.47" y="158.41" class="known"><title>void __cdecl Lara_State_Extra_PullDagger(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="9.33" height="9.28" x="532.47" y="158.41" class="decompiled"><title>void __cdecl Lara_State_Extra_PullDagger(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="9.33" height="9.28" x="532.47" y="170.69" class="known"><title>int32_t __cdecl Lara_TestClimbPos(struct ITEM_INFO *item, int32_t front, int32_t right, int32_t origin, int32_t height, int32_t *shift);</title></rect>
<rect width="9.33" height="9.28" x="532.47" y="182.97" class="known"><title>bool __cdecl WinVidCheckGameWindowPalette(HWND hWnd);</title></rect>
<rect width="9.33" height="9.28" x="532.47" y="195.24" class="known"><title>void __cdecl CreateZBuffer(void);</title></rect>

Before

Width:  |  Height:  |  Size: 357 KiB

After

Width:  |  Height:  |  Size: 357 KiB

View File

@ -1,4 +1,5 @@
# TYPES
#pragma pack(push, 1)
typedef int16_t PHD_ANGLE;
typedef void* LPDIRECT3DTEXTURE2;
@ -744,6 +745,42 @@ typedef struct BOX_INFO {
uint16_t overlap_index;
} BOX_INFO;
typedef struct OBJECT_INFO {
int16_t mesh_count;
int16_t mesh_idx;
int32_t bone_idx;
int16_t *frame_base;
void (*initialise)(int16_t item_number);
void (*control)(int16_t item_number);
void (*floor)(
struct ITEM_INFO *item, int32_t x, int32_t y, int32_t z,
int32_t *height);
void (*ceiling)(
struct ITEM_INFO *item, int32_t x, int32_t y, int32_t z,
int32_t *height);
void (*draw_routine)(struct ITEM_INFO *item);
void (*collision)(
int16_t item_num, struct ITEM_INFO *lara_item, struct COLL_INFO *coll);
int16_t anim_idx;
int16_t hit_points;
int16_t pivot_length;
int16_t radius;
int16_t shadow_size;
uint16_t bite_offset;
uint16_t loaded : 1;
uint16_t intelligent : 1;
uint16_t non_lot : 1;
uint16_t save_position : 1;
uint16_t save_hitpoints : 1;
uint16_t save_flags : 1;
uint16_t save_anim : 1;
uint16_t semi_transparent : 1;
uint16_t water_creature : 1;
} OBJECT_INFO;
typedef struct __unaligned CAMERA_INFO {
struct GAME_VECTOR pos;
struct GAME_VECTOR target;
@ -771,7 +808,7 @@ typedef struct __unaligned CAMERA_INFO {
struct PHD_VECTOR mic_pos;
} CAMERA_INFO;
typedef struct __unaligned LARA_ARM {
typedef struct LARA_ARM {
int16_t *frame_base;
int16_t frame_num;
int16_t anim_num;
@ -782,11 +819,11 @@ typedef struct __unaligned LARA_ARM {
int16_t flash_gun;
} LARA_ARM;
typedef struct __unaligned AMMO_INFO {
typedef struct AMMO_INFO {
int32_t ammo;
} AMMO_INFO;
typedef struct __unaligned LARA_INFO {
typedef struct LARA_INFO {
int16_t item_num;
int16_t gun_status;
int16_t gun_type;
@ -1030,6 +1067,8 @@ typedef enum LARA_GUN_STATE {
LGS_READY = 4,
} LARA_GUN_STATE;
#pragma pack(pop)
# FUNCTIONS
# Flags:
# - to do
@ -1526,7 +1565,7 @@ typedef enum LARA_GUN_STATE {
004288F0 00000013 + void __cdecl Lara_State_Extra_Airlock(struct ITEM_INFO *item, struct COLL_INFO *coll);
00428910 0000001D + void __cdecl Lara_State_Extra_GongBong(struct ITEM_INFO *item, struct COLL_INFO *coll);
00428930 00000051 + void __cdecl Lara_State_Extra_DinoKill(struct ITEM_INFO *item, struct COLL_INFO *coll);
00428990 000000BC - void __cdecl Lara_State_Extra_PullDagger(struct ITEM_INFO *item, struct COLL_INFO *coll);
00428990 000000BC + void __cdecl Lara_State_Extra_PullDagger(struct ITEM_INFO *item, struct COLL_INFO *coll);
00428A50 0000004D - void __cdecl Lara_State_Extra_StartAnim(struct ITEM_INFO *item, struct COLL_INFO *coll);
00428AA0 000000A5 - void __cdecl Lara_State_Extra_StartHouse(struct ITEM_INFO *item, struct COLL_INFO *coll);
00428B50 000000A3 - void __cdecl Lara_State_Extra_FinalAnim(struct ITEM_INFO *item, struct COLL_INFO *coll);
@ -2406,6 +2445,7 @@ typedef enum LARA_GUN_STATE {
005206E0 - struct LARA_INFO g_Lara;
005207BC - struct ITEM_INFO *g_LaraItem;
00521FDC - int32_t g_SoundFxCount;
005252B0 - int16_t **g_Meshes;
005258F4 - struct ANIM_STRUCT *g_Anims;
0052618C - struct ROOM_INFO *g_Rooms;
00526240 - int32_t g_FlipStatus;
@ -2417,3 +2457,4 @@ typedef enum LARA_GUN_STATE {
00526314 - int16_t g_CineFrameIdx;
00526320 - struct CAMERA_INFO g_Camera;
005263CC - struct BOX_INFO *g_Boxes;
00522000 - struct OBJECT_INFO g_Objects[];

View File

@ -1,5 +1,6 @@
#include "game/lara/lara_state.h"
#include "game/music.h"
#include "global/const.h"
#include "global/funcs.h"
#include "global/vars.h"
@ -743,3 +744,26 @@ void __cdecl Lara_State_Extra_DinoKill(
g_Lara.death_count = 1;
}
}
void __cdecl Lara_State_Extra_PullDagger(
struct ITEM_INFO *item, struct COLL_INFO *coll)
{
int32_t frame_num_rel =
item->frame_num - g_Anims[item->anim_num].frame_base;
if (frame_num_rel == 1) {
Music_PlaySynced(MX_DAGGER_PULL);
} else if (frame_num_rel == 180) {
g_Lara.mesh_ptrs[LM_HAND_R] =
g_Meshes[g_Objects[O_LARA].mesh_idx + LM_HAND_R];
Inv_AddItem(O_PUZZLE_ITEM_2);
}
if (item->frame_num == g_Anims[item->anim_num].frame_end) {
item->pos.y_rot += PHD_90;
int16_t room_num;
struct FLOOR_INFO *floor = Room_GetFloor(
item->pos.x, item->pos.y, item->pos.z, (int16_t *)&room_num);
Room_GetHeight(floor, item->pos.x, item->pos.y, item->pos.z);
Room_TestTriggers(g_TriggerIndex, 1);
}
}

View File

@ -78,3 +78,5 @@ void __cdecl Lara_State_Extra_GongBong(
struct ITEM_INFO *item, struct COLL_INFO *coll);
void __cdecl Lara_State_Extra_DinoKill(
struct ITEM_INFO *item, struct COLL_INFO *coll);
void __cdecl Lara_State_Extra_PullDagger(
struct ITEM_INFO *item, struct COLL_INFO *coll);

View File

@ -373,7 +373,6 @@
#define Lara_LookUpDown ((void __cdecl (*)(void))0x00427720)
#define Lara_LookLeftRight ((void __cdecl (*)(void))0x00427790)
#define Lara_ResetLook ((void __cdecl (*)(void))0x00427810)
#define Lara_State_Extra_PullDagger ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x00428990)
#define Lara_State_Extra_StartAnim ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x00428A50)
#define Lara_State_Extra_StartHouse ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x00428AA0)
#define Lara_State_Extra_FinalAnim ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x00428B50)

View File

@ -759,6 +759,42 @@ typedef struct BOX_INFO {
uint16_t overlap_index;
} BOX_INFO;
typedef struct OBJECT_INFO {
int16_t mesh_count;
int16_t mesh_idx;
int32_t bone_idx;
int16_t *frame_base;
void (*initialise)(int16_t item_number);
void (*control)(int16_t item_number);
void (*floor)(
struct ITEM_INFO *item, int32_t x, int32_t y, int32_t z,
int32_t *height);
void (*ceiling)(
struct ITEM_INFO *item, int32_t x, int32_t y, int32_t z,
int32_t *height);
void (*draw_routine)(struct ITEM_INFO *item);
void (*collision)(
int16_t item_num, struct ITEM_INFO *lara_item, struct COLL_INFO *coll);
int16_t anim_idx;
int16_t hit_points;
int16_t pivot_length;
int16_t radius;
int16_t shadow_size;
uint16_t bite_offset;
uint16_t loaded : 1;
uint16_t intelligent : 1;
uint16_t non_lot : 1;
uint16_t save_position : 1;
uint16_t save_hitpoints : 1;
uint16_t save_flags : 1;
uint16_t save_anim : 1;
uint16_t semi_transparent : 1;
uint16_t water_creature : 1;
} OBJECT_INFO;
typedef struct CAMERA_INFO {
struct GAME_VECTOR pos;
struct GAME_VECTOR target;
@ -1074,3 +1110,368 @@ typedef enum LARA_GUN_STATE {
LGS_UNDRAW = 3,
LGS_READY = 4,
} LARA_GUN_STATE;
typedef enum LARA_MESH {
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;
// clang-format off
typedef enum {
O_NONE = -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_or_WOLF = 36,
O_BIG_SPIDER_or_BEAR = 37,
O_CROW = 38,
O_TIGER = 39,
O_BARTOLI = 40,
O_XIAN_LORD = 41,
O_CHINESE_2 = 42,
O_WARRIOR = 43,
O_CHINESE_4 = 44,
O_YETI = 45,
O_GIANT_YETI = 46,
O_EAGLE = 47,
O_BANDIT_1 = 48,
O_BANDIT_2 = 49,
O_BANDIT_2B = 50,
O_SKIDOO_ARMED = 51,
O_SKIDMAN = 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_DARTS = 61,
O_DART_EMITTER = 62,
O_DRAW_BRIDGE = 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_PROPELLER_2 = 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_SPRING_BOARD = 86,
O_CEILING_SPIKES = 87,
O_BELL = 88,
O_WATER_SPRITE = 89,
O_SNOW_SPRITE = 90,
O_SKIDOO_LARA = 91,
O_SWITCH_TYPE_1 = 92,
O_SWITCH_TYPE_2 = 93,
O_PROPELLER_3 = 94,
O_PROPELLER_4 = 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_DEATH_SLIDE = 102,
O_SWITCH_TYPE_3 = 103,
O_SWITCH_TYPE_4 = 104,
O_SWITCH_TYPE_5 = 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_BUBBLES = 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_ROCKET = 248,
O_HARPOON_BOLT = 249,
O_LAVA = 250,
O_LAVA_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;
// clang-format on
// clang-format off
typedef enum MUSIC_TRACK_ID {
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_GYM_HINT_19 = 26, // 23.mp3
MX_UNUSED_5 = 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;
// clang-format on
#pragma pack(pop)

View File

@ -59,6 +59,7 @@
#define g_Lara VAR_U_(0x005206E0, struct LARA_INFO)
#define g_LaraItem VAR_U_(0x005207BC, struct ITEM_INFO *)
#define g_SoundFxCount VAR_U_(0x00521FDC, int32_t)
#define g_Meshes VAR_U_(0x005252B0, int16_t **)
#define g_Anims VAR_U_(0x005258F4, struct ANIM_STRUCT *)
#define g_Rooms VAR_U_(0x0052618C, struct ROOM_INFO *)
#define g_FlipStatus VAR_U_(0x00526240, int32_t)
@ -70,4 +71,5 @@
#define g_CineFrameIdx VAR_U_(0x00526314, int16_t)
#define g_Camera VAR_U_(0x00526320, struct CAMERA_INFO)
#define g_Boxes VAR_U_(0x005263CC, struct BOX_INFO *)
#define g_Objects ARRAY_(0x00522000, struct OBJECT_INFO, [])
// clang-format on

View File

@ -127,6 +127,7 @@ static void Inject_Lara_State(void)
INJECT(1, 0x004288F0, Lara_State_Extra_Airlock);
INJECT(1, 0x00428910, Lara_State_Extra_GongBong);
INJECT(1, 0x00428930, Lara_State_Extra_DinoKill);
INJECT(1, 0x00428990, Lara_State_Extra_PullDagger);
}
static void Inject_S_Audio_Sample(void)