tr2/objects: port Object_SetupGeneralObjects

This commit is contained in:
Marcin Kurczewski 2024-11-05 00:04:56 +01:00
parent 6c365499e5
commit c9948af9ba
105 changed files with 1047 additions and 127 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">71.30% (887)</tspan> · <tspan class="known">26.29% (327)</tspan> · <tspan class="todo">0% (0)</tspan> · <tspan class="unused">2.41% (30)</tspan></tspan></text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">71.38% (888)</tspan> · <tspan class="known">26.21% (326)</tspan> · <tspan class="todo">0% (0)</tspan> · <tspan class="unused">2.41% (30)</tspan></tspan></text>
<g transform="translate(0 20)">
<rect width="532.63" height="6" x="0" y="0" class="decompiled"/>
<rect width="196.36" height="6" x="532.63" y="0" class="known"/>
<rect width="533.23" height="6" x="0" y="0" class="decompiled"/>
<rect width="195.76" height="6" x="533.23" y="0" class="known"/>
<rect width="18.01" height="6" x="728.99" y="0" class="unused"/>
</g>
<g transform="translate(0 31)">
@ -321,19 +321,19 @@
<rect width="12" height="12" x="630" y="60" class="decompiled"><title>void __cdecl Sound_UpdateEffects(void);</title></rect>
<rect width="12" height="12" x="645" y="60" class="known"><title>int16_t __cdecl DoBloodSplat(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE direction, int16_t room_num);</title></rect>
<rect width="12" height="12" x="660" y="60" class="known"><title>void __cdecl DoLotsOfBlood(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE direction, int16_t room_num, int32_t num);</title></rect>
<rect width="12" height="12" x="675" y="60" class="known"><title>void __cdecl ControlBlood1(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="690" y="60" class="known"><title>void __cdecl ControlExplosion1(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="675" y="60" class="known"><title>void __cdecl Blood_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="690" y="60" class="known"><title>void __cdecl Explosion_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="705" y="60" class="known"><title>void __cdecl Richochet(GAME_VECTOR *pos);</title></rect>
<rect width="12" height="12" x="720" y="60" class="known"><title>void __cdecl ControlRichochet1(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="720" y="60" class="known"><title>void __cdecl Richochet_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="735" y="60" class="known"><title>void __cdecl CreateBubble(XYZ_32 *pos, int16_t room_num);</title></rect>
<rect width="12" height="12" x="0" y="75" class="known"><title>void __cdecl LaraBubbles(ITEM *item);</title></rect>
<rect width="12" height="12" x="15" y="75" class="known"><title>void __cdecl ControlBubble1(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="15" y="75" class="known"><title>void __cdecl Bubbles_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="30" y="75" class="known"><title>void __cdecl Splash(ITEM *item);</title></rect>
<rect width="12" height="12" x="45" y="75" class="known"><title>void __cdecl ControlSplash1(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="60" y="75" class="known"><title>void __cdecl ControlWaterSprite(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="75" y="75" class="known"><title>void __cdecl ControlSnowSprite(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="90" y="75" class="known"><title>void __cdecl ControlHotLiquid(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="105" y="75" class="known"><title>void __cdecl WaterFall(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="45" y="75" class="known"><title>void __cdecl Splash_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="60" y="75" class="known"><title>void __cdecl WaterSprite_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="75" y="75" class="known"><title>void __cdecl SnowSprite_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="90" y="75" class="known"><title>void __cdecl HotLiquid_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="105" y="75" class="known"><title>void __cdecl Waterfall_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="120" y="75" class="known"><title>void __cdecl finish_level_effect(ITEM *item);</title></rect>
<rect width="12" height="12" x="135" y="75" class="known"><title>void __cdecl turn180_effect(ITEM *item);</title></rect>
<rect width="12" height="12" x="150" y="75" class="known"><title>void __cdecl floor_shake_effect(ITEM *item);</title></rect>
@ -347,15 +347,15 @@
<rect width="12" height="12" x="270" y="75" class="known"><title>void __cdecl CurtainFX(ITEM *item);</title></rect>
<rect width="12" height="12" x="285" y="75" class="known"><title>void __cdecl StatueFX(ITEM *item);</title></rect>
<rect width="12" height="12" x="300" y="75" class="known"><title>void __cdecl SetChangeFX(ITEM *item);</title></rect>
<rect width="12" height="12" x="315" y="75" class="known"><title>void __cdecl ControlDingDong(int16_t item_num);</title></rect>
<rect width="12" height="12" x="330" y="75" class="known"><title>void __cdecl ControlLaraAlarm(int16_t item_num);</title></rect>
<rect width="12" height="12" x="345" y="75" class="known"><title>void __cdecl ControlAlarmSound(int16_t item_num);</title></rect>
<rect width="12" height="12" x="360" y="75" class="known"><title>void __cdecl ControlBirdTweeter(int16_t item_num);</title></rect>
<rect width="12" height="12" x="315" y="75" class="known"><title>void __cdecl DingDong_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="330" y="75" class="known"><title>void __cdecl LaraAlarm_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="345" y="75" class="known"><title>void __cdecl AlarmSound_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="360" y="75" class="known"><title>void __cdecl BirdTweeter_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="375" y="75" class="known"><title>void __cdecl DoChimeSound(ITEM *item);</title></rect>
<rect width="12" height="12" x="390" y="75" class="known"><title>void __cdecl ControlClockChimes(int16_t item_num);</title></rect>
<rect width="12" height="12" x="405" y="75" class="known"><title>void __cdecl SphereOfDoomCollision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="420" y="75" class="known"><title>void __cdecl SphereOfDoom(int16_t item_num);</title></rect>
<rect width="12" height="12" x="435" y="75" class="known"><title>void __cdecl DrawSphereOfDoom(ITEM *item);</title></rect>
<rect width="12" height="12" x="390" y="75" class="known"><title>void __cdecl ClockChimes_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="405" y="75" class="known"><title>void __cdecl SphereOfDoom_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="420" y="75" class="known"><title>void __cdecl SphereOfDoom_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="435" y="75" class="known"><title>void __cdecl SphereOfDoom_Draw(const ITEM *item);</title></rect>
<rect width="12" height="12" x="450" y="75" class="known"><title>void __cdecl lara_hands_free(ITEM *item);</title></rect>
<rect width="12" height="12" x="465" y="75" class="known"><title>void __cdecl flip_map_effect(ITEM *item);</title></rect>
<rect width="12" height="12" x="480" y="75" class="known"><title>void __cdecl draw_right_gun(ITEM *item);</title></rect>
@ -626,7 +626,7 @@
<rect width="12" height="12" x="705" y="150" class="decompiled"><title>GAME_OBJECT_ID Gun_GetWeaponAnim(const LARA_GUN_TYPE gun_type);</title></rect>
<rect width="12" height="12" x="720" y="150" class="known"><title>int32_t __cdecl Flare_DoLight(XYZ_32 *pos, int32_t flare_age);</title></rect>
<rect width="12" height="12" x="735" y="150" class="known"><title>void __cdecl Flare_DoInHand(int32_t flare_age);</title></rect>
<rect width="12" height="12" x="0" y="165" class="known"><title>void __cdecl Flare_DrawInAir(ITEM *item);</title></rect>
<rect width="12" height="12" x="0" y="165" class="known"><title>void __cdecl Flare_DrawInAir(const ITEM *item);</title></rect>
<rect width="12" height="12" x="15" y="165" class="known"><title>void __cdecl Flare_Create(int32_t thrown);</title></rect>
<rect width="12" height="12" x="30" y="165" class="known"><title>void __cdecl Flare_SetArm(int32_t frame);</title></rect>
<rect width="12" height="12" x="45" y="165" class="known"><title>void __cdecl Flare_Draw(void);</title></rect>
@ -678,7 +678,7 @@
<rect width="12" height="12" x="735" y="165" class="decompiled"><title>void __cdecl LOT_InitialiseSlot(int16_t item_num, int32_t slot);</title></rect>
<rect width="12" height="12" x="0" y="180" class="decompiled"><title>void __cdecl LOT_CreateZone(ITEM *item);</title></rect>
<rect width="12" height="12" x="15" y="180" class="decompiled"><title>void __cdecl LOT_ClearLOT(LOT_INFO *lot);</title></rect>
<rect width="12" height="12" x="30" y="180" class="known"><title>void __cdecl ControlMissile(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="30" y="180" class="known"><title>void __cdecl Missile_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="45" y="180" class="known"><title>void __cdecl ShootAtLara(FX *fx);</title></rect>
<rect width="12" height="12" x="60" y="180" class="decompiled"><title>int32_t __cdecl Effect_ExplodingDeath(int16_t item_num, int32_t mesh_bits, int16_t damage);</title></rect>
<rect width="12" height="12" x="75" y="180" class="known"><title>void __cdecl BodyPart_Control(int16_t fx_num);</title></rect>
@ -691,8 +691,8 @@
<rect width="12" height="12" x="180" y="180" class="decompiled"><title>void __cdecl Room_AlterFloorHeight(ITEM *item, int32_t height);</title></rect>
<rect width="12" height="12" x="195" y="180" class="decompiled"><title>void __cdecl MovableBlock_Draw(const ITEM *item);</title></rect>
<rect width="12" height="12" x="210" y="180" class="known"><title>void __cdecl Object_DrawUnclippedItem(const ITEM *item);</title></rect>
<rect width="12" height="12" x="225" y="180" class="known"><title>void __cdecl EarthQuake(int16_t item_num);</title></rect>
<rect width="12" height="12" x="240" y="180" class="known"><title>void __cdecl ControlCutShotgun(int16_t item_num);</title></rect>
<rect width="12" height="12" x="225" y="180" class="known"><title>void __cdecl Earthquake_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="240" y="180" class="known"><title>void __cdecl FinalCutscene_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="255" y="180" class="known"><title>void __cdecl InitialiseFinalLevel(void);</title></rect>
<rect width="12" height="12" x="270" y="180" class="decompiled"><title>void __cdecl FinalLevelCounter_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="285" y="180" class="known"><title>void __cdecl MiniCopterControl(int16_t item_num);</title></rect>
@ -701,12 +701,12 @@
<rect width="12" height="12" x="330" y="180" class="decompiled"><title>void __cdecl GongBonger_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="345" y="180" class="decompiled"><title>void __cdecl Zipline_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);</title></rect>
<rect width="12" height="12" x="360" y="180" class="decompiled"><title>void __cdecl Zipline_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="375" y="180" class="known"><title>void __cdecl BigBowlControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="390" y="180" class="known"><title>void __cdecl BellControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="405" y="180" class="known"><title>void __cdecl InitialiseWindow(int16_t item_num);</title></rect>
<rect width="12" height="12" x="375" y="180" class="known"><title>void __cdecl BigBowl_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="390" y="180" class="known"><title>void __cdecl Bell_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="405" y="180" class="known"><title>void __cdecl Window_Initialise(int16_t item_num);</title></rect>
<rect width="12" height="12" x="420" y="180" class="known"><title>void __cdecl SmashWindow(int16_t item_num);</title></rect>
<rect width="12" height="12" x="435" y="180" class="known"><title>void __cdecl WindowControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="450" y="180" class="known"><title>void __cdecl SmashIceControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="435" y="180" class="known"><title>void __cdecl Window_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="450" y="180" class="known"><title>void __cdecl SmashIce_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="465" y="180" class="decompiled"><title>void __cdecl Door_Shut(DOORPOS_DATA *d);</title></rect>
<rect width="12" height="12" x="480" y="180" class="decompiled"><title>void __cdecl Door_Open(DOORPOS_DATA *d);</title></rect>
<rect width="12" height="12" x="495" y="180" class="decompiled"><title>void __cdecl Door_Initialise(int16_t item_num);</title></rect>
@ -731,8 +731,8 @@
<rect width="12" height="12" x="30" y="195" class="known"><title>void __cdecl GeneralControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="45" y="195" class="decompiled"><title>void __cdecl Detonator_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="60" y="195" class="decompiled"><title>bool __cdecl Creature_CanTargetEnemy(const ITEM *item, const AI_INFO *info);</title></rect>
<rect width="12" height="12" x="75" y="195" class="known"><title>void __cdecl ControlGlow(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="90" y="195" class="known"><title>void __cdecl ControlGunShot(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="75" y="195" class="known"><title>void __cdecl Glow_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="90" y="195" class="known"><title>void __cdecl GunFlash_Control(int16_t fx_num);</title></rect>
<rect width="12" height="12" x="105" y="195" class="known"><title>int16_t __cdecl GunShot(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE yrot, int16_t room_num);</title></rect>
<rect width="12" height="12" x="120" y="195" class="known"><title>int16_t __cdecl GunHit(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE yrot, int16_t room_num);</title></rect>
<rect width="12" height="12" x="135" y="195" class="known"><title>int16_t __cdecl GunMiss(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE yrot, int16_t room_num);</title></rect>
@ -756,7 +756,7 @@
<rect width="12" height="12" x="405" y="195" class="decompiled"><title>int32_t __cdecl Switch_Trigger(int16_t item_num, int16_t timer);</title></rect>
<rect width="12" height="12" x="420" y="195" class="decompiled"><title>int32_t __cdecl Keyhole_Trigger(int16_t item_num);</title></rect>
<rect width="12" height="12" x="435" y="195" class="decompiled"><title>int32_t __cdecl Pickup_Trigger(int16_t item_num);</title></rect>
<rect width="12" height="12" x="450" y="195" class="known"><title>void __cdecl SecretControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="450" y="195" class="known"><title>void __cdecl Secret_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="465" y="195" class="known"><title>void __cdecl Mouse_Control(int16_t item_num);</title></rect>
<rect width="12" height="12" x="480" y="195" class="known"><title>void __cdecl InitialiseStartInfo(void);</title></rect>
<rect width="12" height="12" x="495" y="195" class="known"><title>void __cdecl ModifyStartInfo(int32_t level_num);</title></rect>
@ -771,7 +771,7 @@
<rect width="12" height="12" x="630" y="195" class="known"><title>void __cdecl InitialiseLevelFlags(void);</title></rect>
<rect width="12" height="12" x="645" y="195" class="decompiled"><title>void __cdecl Object_SetupBaddyObjects(void);</title></rect>
<rect width="12" height="12" x="660" y="195" class="known"><title>void __cdecl Object_SetupTrapObjects(void);</title></rect>
<rect width="12" height="12" x="675" y="195" class="known"><title>void __cdecl Object_SetupGeneralObjects(void);</title></rect>
<rect width="12" height="12" x="675" y="195" class="decompiled"><title>void __cdecl Object_SetupGeneralObjects(void);</title></rect>
<rect width="12" height="12" x="690" y="195" class="decompiled"><title>void __cdecl Object_SetupAllObjects(void);</title></rect>
<rect width="12" height="12" x="705" y="195" class="known"><title>void __cdecl GetCarriedItems(void);</title></rect>
<rect width="12" height="12" x="720" y="195" class="known"><title>void __cdecl Jelly_Control(int16_t item_num);</title></rect>
@ -1324,10 +1324,10 @@
</g>
<g transform="translate(0 546)">
<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">75%</tspan> · <tspan class="known">24.68%</tspan> · <tspan class="todo">0%</tspan> · <tspan class="unused">0.33%</tspan></tspan></text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">75.92%</tspan> · <tspan class="known">23.75%</tspan> · <tspan class="todo">0%</tspan> · <tspan class="unused">0.33%</tspan></tspan></text>
<g transform="translate(0 20)">
<rect width="560.24" height="6" x="0" y="0" class="decompiled"/>
<rect width="184.33" height="6" x="560.24" y="0" class="known"/>
<rect width="567.12" height="6" x="0" y="0" class="decompiled"/>
<rect width="177.44" height="6" x="567.12" y="0" class="known"/>
<rect width="2.44" height="6" x="744.56" y="0" class="unused"/>
</g>
<g transform="translate(0 31)">
@ -1337,7 +1337,7 @@
<rect width="57.98" height="51.94" x="0" y="190.24" class="decompiled"><title>void __cdecl Output_GTMapPersp32FP(int32_t y1, int32_t y2, uint8_t *tex_page);</title></rect>
<rect width="57.98" height="42.31" x="0" y="245.18" class="decompiled"><title>void __cdecl Lara_Draw(const ITEM *item);</title></rect>
<rect width="57.98" height="41.67" x="0" y="290.49" class="decompiled"><title>void __cdecl GF_ModifyInventory(int32_t level, int32_t type);</title></rect>
<rect width="57.98" height="39.83" x="0" y="335.17" class="known"><title>void __cdecl Object_SetupGeneralObjects(void);</title></rect>
<rect width="57.98" height="39.83" x="0" y="335.17" class="decompiled"><title>void __cdecl Object_SetupGeneralObjects(void);</title></rect>
<rect width="40.15" height="54.95" x="60.98" y="0" class="decompiled"><title>void __cdecl Lara_Draw_I(const ITEM *item, const FRAME_INFO *frame1, const FRAME_INFO *frame2, int32_t frac, int32_t rate);</title></rect>
<rect width="40.15" height="49.99" x="60.98" y="57.95" class="decompiled"><title>bool __cdecl Input_Update(void);</title></rect>
<rect width="40.15" height="47.99" x="60.98" y="110.94" class="decompiled"><title>const int16_t *__cdecl Output_InsertObjectGT4(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);</title></rect>
@ -1449,7 +1449,7 @@
<rect width="21.59" height="21.46" x="319.90" y="329.15" class="decompiled"><title>void __cdecl Skidoo_Draw(const ITEM *item);</title></rect>
<rect width="21.59" height="21.39" x="319.90" y="353.61" class="decompiled"><title>const int16_t *__cdecl Output_InsertObjectG3_ZBuffered(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);</title></rect>
<rect width="20.94" height="21.96" x="344.49" y="0" class="decompiled"><title>int32_t __cdecl Output_XYClipper(int32_t vtx_count, VERTEX_INFO *vtx);</title></rect>
<rect width="20.94" height="21.96" x="344.49" y="24.96" class="known"><title>void __cdecl ControlMissile(int16_t fx_num);</title></rect>
<rect width="20.94" height="21.96" x="344.49" y="24.96" class="known"><title>void __cdecl Missile_Control(int16_t fx_num);</title></rect>
<rect width="20.94" height="21.96" x="344.49" y="49.91" class="decompiled"><title>BOOL __cdecl Shell_Main(void);</title></rect>
<rect width="20.94" height="21.85" x="344.49" y="74.87" class="decompiled"><title>void __cdecl Lara_Animate(ITEM *item);</title></rect>
<rect width="20.94" height="21.75" x="344.49" y="99.73" class="known"><title>void __cdecl GiantYeti_Control(int16_t item_num);</title></rect>
@ -1626,7 +1626,7 @@
<rect width="13.47" height="13.02" x="448.40" y="140.93" class="decompiled"><title>void __cdecl Inv_Ring_DoMotions(RING_INFO *ring);</title></rect>
<rect width="13.47" height="13.02" x="448.40" y="156.95" class="known"><title>void __cdecl DartEmitterControl(int16_t item_num);</title></rect>
<rect width="13.47" height="12.97" x="448.40" y="172.97" class="decompiled"><title>void __cdecl Output_InsertTransQuad_Sorted(int32_t x, int32_t y, int32_t width, int32_t height, int32_t z);</title></rect>
<rect width="13.47" height="12.97" x="448.40" y="188.94" class="known"><title>void __cdecl WaterFall(int16_t fx_num);</title></rect>
<rect width="13.47" height="12.97" x="448.40" y="188.94" class="known"><title>void __cdecl Waterfall_Control(int16_t fx_num);</title></rect>
<rect width="13.47" height="12.92" x="448.40" y="204.91" class="decompiled"><title>void __cdecl RestoreLostBuffers(void);</title></rect>
<rect width="13.47" height="12.87" x="448.40" y="220.83" class="decompiled"><title>void __cdecl Item_AlignPosition(XYZ_32 *vec, ITEM *src_item, ITEM *dst_item);</title></rect>
<rect width="13.47" height="12.87" x="448.40" y="236.70" class="decompiled"><title>void __cdecl CreateScreenBuffers(void);</title></rect>
@ -1644,10 +1644,10 @@
<rect width="13.31" height="12.56" x="513.97" y="92.62" class="decompiled"><title>void __cdecl Inv_DoInventoryBackground(void);</title></rect>
<rect width="13.26" height="12.56" x="530.28" y="92.62" class="decompiled"><title>int32_t __cdecl Creature_Vault(int16_t item_num, int16_t angle, int32_t vault, int32_t shift);</title></rect>
<rect width="13.20" height="12.56" x="546.53" y="92.62" class="decompiled"><title>int32_t __cdecl Lara_TestSlide(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="13.04" height="12.56" x="562.74" y="92.62" class="known"><title>void __cdecl DrawSphereOfDoom(ITEM *item);</title></rect>
<rect width="13.04" height="12.56" x="562.74" y="92.62" class="known"><title>void __cdecl SphereOfDoom_Draw(const ITEM *item);</title></rect>
<rect width="12.94" height="12.56" x="578.78" y="92.62" class="decompiled"><title>void __cdecl Output_InsertLine_Sorted(int32_t x0, int32_t y0, int32_t x1, int32_t y1, int32_t z, uint8_t color_idx);</title></rect>
<rect width="12.83" height="12.56" x="594.72" y="92.62" class="decompiled"><title>void __cdecl Inv_InsertItem(INVENTORY_ITEM *inv_item);</title></rect>
<rect width="12.78" height="12.56" x="610.55" y="92.62" class="known"><title>void __cdecl SphereOfDoomCollision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);</title></rect>
<rect width="12.78" height="12.56" x="610.55" y="92.62" class="known"><title>void __cdecl SphereOfDoom_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);</title></rect>
<rect width="12.78" height="12.56" x="626.33" y="92.62" class="known"><title>int32_t __cdecl Collide_TestCollision(ITEM *item, const ITEM *lara_item);</title></rect>
<rect width="12.78" height="12.56" x="642.11" y="92.62" class="decompiled"><title>void __cdecl HWR_InitState(void);</title></rect>
<rect width="12.73" height="12.56" x="657.89" y="92.62" class="decompiled"><title>void __cdecl Lara_Col_Hang(ITEM *item, COLL_INFO *coll);</title></rect>
@ -1699,19 +1699,19 @@
<rect width="11.37" height="11.43" x="552.37" y="108.19" class="known"><title>BOOL __cdecl DecompPCX(const uint8_t *pcx, size_t pcx_size, LPBYTE pic, RGB_888 *pal);</title></rect>
<rect width="11.26" height="11.43" x="566.74" y="108.19" class="decompiled"><title>int32_t __cdecl Boat_TestWaterHeight(ITEM *item, int32_t z_off, int32_t x_off, XYZ_32 *pos);</title></rect>
<rect width="11.26" height="11.43" x="581" y="108.19" class="decompiled"><title>int32_t __cdecl Creature_CheckBaddieOverlap(int16_t item_num);</title></rect>
<rect width="11.26" height="11.43" x="595.25" y="108.19" class="known"><title>void __cdecl Flare_DrawInAir(ITEM *item);</title></rect>
<rect width="11.26" height="11.43" x="595.25" y="108.19" class="known"><title>void __cdecl Flare_DrawInAir(const ITEM *item);</title></rect>
<rect width="11.26" height="11.43" x="609.51" y="108.19" class="decompiled"><title>void __cdecl Skidoo_Collision(int16_t item_num, ITEM *litem, COLL_INFO *coll);</title></rect>
<rect width="11.20" height="11.43" x="623.77" y="108.19" class="decompiled"><title>void __cdecl Output_DrawPoly_Gouraud(int32_t vtx_count, int32_t red, int32_t green, int32_t blue);</title></rect>
<rect width="11.08" height="11.43" x="637.96" y="108.19" class="decompiled"><title>int32_t __cdecl Lara_TestHangOnClimbWall(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="11.08" height="11.43" x="652.05" y="108.19" class="decompiled"><title>void __cdecl Gun_Rifle_Control(LARA_GUN_TYPE weapon_type);</title></rect>
<rect width="11.08" height="11.43" x="666.13" y="108.19" class="known"><title>int32_t __cdecl AddTexturePage8(int32_t width, int32_t height, const uint8_t *page_buf, int32_t pal_idx);</title></rect>
<rect width="10.97" height="11.43" x="680.21" y="108.19" class="decompiled"><title>void __cdecl Output_InsertPolygons(const int16_t *obj_ptr, int32_t clip);</title></rect>
<rect width="10.97" height="11.43" x="694.18" y="108.19" class="known"><title>void __cdecl ControlBubble1(int16_t fx_num);</title></rect>
<rect width="10.97" height="11.43" x="694.18" y="108.19" class="known"><title>void __cdecl Bubbles_Control(int16_t fx_num);</title></rect>
<rect width="10.97" height="11.43" x="708.15" y="108.19" class="decompiled"><title>void __cdecl Lara_SurfaceCollision(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="10.97" height="11.43" x="722.12" y="108.19" class="decompiled"><title>DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);</title></rect>
<rect width="10.91" height="11.43" x="736.09" y="108.19" class="decompiled"><title>int32_t __cdecl Box_StalkBox(const ITEM *item, const ITEM *enemy, int16_t box_num);</title></rect>
<rect width="10.64" height="11.72" x="494.60" y="122.62" class="decompiled"><title>void __cdecl Gun_Rifle_FireShotgun(void);</title></rect>
<rect width="10.64" height="11.60" x="494.60" y="137.34" class="known"><title>void __cdecl SphereOfDoom(int16_t item_num);</title></rect>
<rect width="10.64" height="11.60" x="494.60" y="137.34" class="known"><title>void __cdecl SphereOfDoom_Control(int16_t item_num);</title></rect>
<rect width="10.64" height="11.60" x="494.60" y="151.94" class="decompiled"><title>void __cdecl Gun_Rifle_FireGrenade(void);</title></rect>
<rect width="10.64" height="11.54" x="494.60" y="166.53" class="decompiled"><title>void __cdecl Lara_DoClimbLeftRight(ITEM *item, COLL_INFO *coll, int32_t result, int32_t shift);</title></rect>
<rect width="10.64" height="11.41" x="494.60" y="181.07" class="decompiled"><title>void __cdecl Camera_Chase(const ITEM *item);</title></rect>
@ -1728,7 +1728,7 @@
<rect width="10.64" height="10.87" x="494.60" y="336.46" class="decompiled"><title>bool __cdecl DInputJoystickCreate(void);</title></rect>
<rect width="10.64" height="10.87" x="494.60" y="350.33" class="known"><title>void __cdecl S_InitialisePolyList(BOOL clear_back_buffer);</title></rect>
<rect width="10.64" height="10.81" x="494.60" y="364.19" class="decompiled"><title>void __cdecl Effect_Kill(int16_t fx_num);</title></rect>
<rect width="10.72" height="10.72" x="508.24" y="122.62" class="known"><title>void __cdecl BigBowlControl(int16_t item_num);</title></rect>
<rect width="10.72" height="10.72" x="508.24" y="122.62" class="known"><title>void __cdecl BigBowl_Control(int16_t item_num);</title></rect>
<rect width="10.66" height="10.72" x="521.97" y="122.62" class="decompiled"><title>void __cdecl Lara_SlideSlope(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="10.66" height="10.72" x="535.63" y="122.62" class="decompiled"><title>bool __cdecl WinVidSpinMessageLoop(bool needWait);</title></rect>
<rect width="10.66" height="10.72" x="549.29" y="122.62" class="decompiled"><title>BOOL __stdcall S_Audio_Sample_DSoundEnumCallback(LPGUID guid, LPCTSTR description, LPCTSTR module, LPVOID context);</title></rect>
@ -1736,12 +1736,12 @@
<rect width="10.60" height="10.72" x="576.56" y="122.62" class="decompiled"><title>int32_t __cdecl Skidoo_CheckGetOn(int16_t item_num, COLL_INFO *coll);</title></rect>
<rect width="10.54" height="10.72" x="590.16" y="122.62" class="known"><title>void __cdecl FallingCeiling(int16_t item_num);</title></rect>
<rect width="10.54" height="10.72" x="603.70" y="122.62" class="known"><title>BOOL __cdecl SelectDrive(void);</title></rect>
<rect width="10.42" height="10.72" x="617.24" y="122.62" class="known"><title>void __cdecl ControlHotLiquid(int16_t fx_num);</title></rect>
<rect width="10.42" height="10.72" x="617.24" y="122.62" class="known"><title>void __cdecl HotLiquid_Control(int16_t fx_num);</title></rect>
<rect width="10.30" height="10.72" x="630.66" y="122.62" class="decompiled"><title>void __cdecl CutscenePlayer_Control(int16_t item_num);</title></rect>
<rect width="10.30" height="10.72" x="643.96" y="122.62" class="known"><title>void __cdecl SmashIceControl(int16_t item_num);</title></rect>
<rect width="10.30" height="10.72" x="643.96" y="122.62" class="known"><title>void __cdecl SmashIce_Control(int16_t item_num);</title></rect>
<rect width="10.30" height="10.72" x="657.26" y="122.62" class="decompiled"><title>void __cdecl DrawQuad(float sx, float sy, float width, float height, D3DCOLOR color);</title></rect>
<rect width="10.30" height="10.72" x="670.56" y="122.62" class="known"><title>INT_PTR __stdcall SE_AdvancedDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);</title></rect>
<rect width="10.24" height="10.72" x="683.86" y="122.62" class="known"><title>void __cdecl EarthQuake(int16_t item_num);</title></rect>
<rect width="10.24" height="10.72" x="683.86" y="122.62" class="known"><title>void __cdecl Earthquake_Control(int16_t item_num);</title></rect>
<rect width="10.24" height="10.72" x="697.10" y="122.62" class="known"><title>void __cdecl ModifyStartInfo(int32_t level_num);</title></rect>
<rect width="10.24" height="10.72" x="710.34" y="122.62" class="known"><title>void __cdecl SpringBoardControl(int16_t item_num);</title></rect>
<rect width="10.24" height="10.72" x="723.58" y="122.62" class="decompiled"><title>void __cdecl S_LoadSettings(void);</title></rect>
@ -1825,7 +1825,7 @@
<rect width="9.18" height="9.06" x="595.10" y="161.47" class="known"><title>void __cdecl S_AnimateTextures(int32_t ticks);</title></rect>
<rect width="9.11" height="9.06" x="607.28" y="161.47" class="decompiled"><title>void __cdecl Camera_Initialise(void);</title></rect>
<rect width="9.04" height="9.06" x="619.39" y="161.47" class="decompiled"><title>bool __cdecl WinVidGetDisplayAdapters(void);</title></rect>
<rect width="8.97" height="9.06" x="631.43" y="161.47" class="known"><title>void __cdecl ControlWaterSprite(int16_t fx_num);</title></rect>
<rect width="8.97" height="9.06" x="631.43" y="161.47" class="known"><title>void __cdecl WaterSprite_Control(int16_t fx_num);</title></rect>
<rect width="8.97" height="9.06" x="643.41" y="161.47" class="decompiled"><title>DWORD __cdecl CompPCX(BYTE *bitmap, DWORD width, DWORD height, RGB_888 *palette, BYTE **pcx_data);</title></rect>
<rect width="8.97" height="9.06" x="655.38" y="161.47" class="known"><title>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);</title></rect>
<rect width="8.90" height="9.06" x="667.36" y="161.47" class="decompiled"><title>int32_t __cdecl Lara_TestEdgeCatch(ITEM *item, COLL_INFO *coll, int32_t *edge);</title></rect>
@ -1890,7 +1890,7 @@
<rect width="7.86" height="8.46" x="556.72" y="185.25" class="decompiled"><title>void __cdecl Lara_State_Zipline(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="7.86" height="8.46" x="556.72" y="196.72" class="decompiled"><title>void __cdecl Lara_Col_Compress( ITEM *item, COLL_INFO *coll );</title></rect>
<rect width="7.86" height="8.46" x="556.72" y="208.18" class="decompiled"><title>void __cdecl Gun_HitTarget(ITEM *item, GAME_VECTOR *hitpos, int32_t damage);</title></rect>
<rect width="7.86" height="8.46" x="556.72" y="219.64" class="known"><title>void __cdecl WindowControl(int16_t item_num);</title></rect>
<rect width="7.86" height="8.46" x="556.72" y="219.64" class="known"><title>void __cdecl Window_Control(int16_t item_num);</title></rect>
<rect width="7.86" height="8.46" x="556.72" y="231.11" class="known"><title>int32_t __cdecl S_LoadGame(void *save_data, uint32_t save_size, int32_t slot_num);</title></rect>
<rect width="7.86" height="8.46" x="556.72" y="242.57" class="decompiled"><title>void __cdecl Option_Controls_UpdateText(void);</title></rect>
<rect width="7.86" height="8.39" x="556.72" y="254.04" class="decompiled"><title>void __cdecl Output_SetNearZ(int32_t near_z);</title></rect>
@ -1917,7 +1917,7 @@
<rect width="7.63" height="8.01" x="676.05" y="185.25" class="decompiled"><title>void __cdecl Detonator_Control(int16_t item_num);</title></rect>
<rect width="7.55" height="8.01" x="686.68" y="185.25" class="decompiled"><title>const int16_t *__cdecl Output_InsertObjectGT4_Sorted(const int16_t *obj_ptr, int32_t num, SORT_TYPE sort_type);</title></rect>
<rect width="7.55" height="8.01" x="697.23" y="185.25" class="decompiled"><title>int32_t __cdecl Lara_IsNearItem(PHD_3DPOS *pos, int32_t distance);</title></rect>
<rect width="7.55" height="8.01" x="707.79" y="185.25" class="known"><title>void __cdecl ControlSnowSprite(int16_t fx_num);</title></rect>
<rect width="7.55" height="8.01" x="707.79" y="185.25" class="known"><title>void __cdecl SnowSprite_Control(int16_t fx_num);</title></rect>
<rect width="7.55" height="8.01" x="718.34" y="185.25" class="decompiled"><title>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);</title></rect>
<rect width="7.55" height="8.01" x="728.89" y="185.25" class="unused"><title>sub_444B20</title></rect>
<rect width="7.55" height="8.01" x="739.45" y="185.25" class="decompiled"><title>bool __cdecl WinVidGetDisplayMode(DISPLAY_MODE *disp_mode);</title></rect>
@ -1948,7 +1948,7 @@
<rect width="7.78" height="7.16" x="654.39" y="196.26" class="decompiled"><title>bool __cdecl Music_PlaySynced(int32_t track_id);</title></rect>
<rect width="7.70" height="7.16" x="665.17" y="196.26" class="known"><title>void __cdecl Object_DrawSpriteItem(const ITEM *item);</title></rect>
<rect width="7.70" height="7.16" x="675.86" y="196.26" class="decompiled"><title>void __cdecl Lara_Col_Fallback(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="7.61" height="7.16" x="686.56" y="196.26" class="known"><title>void __cdecl ControlBlood1(int16_t fx_num);</title></rect>
<rect width="7.61" height="7.16" x="686.56" y="196.26" class="known"><title>void __cdecl Blood_Control(int16_t fx_num);</title></rect>
<rect width="7.61" height="7.16" x="697.17" y="196.26" class="decompiled"><title>void __cdecl Requester_Init(REQUEST_INFO *req);</title></rect>
<rect width="7.61" height="7.16" x="707.79" y="196.26" class="decompiled"><title>void __cdecl HWR_EnableZBuffer(bool z_write_enable, bool z_enable);</title></rect>
<rect width="7.53" height="7.16" x="718.40" y="196.26" class="decompiled"><title>int32_t __cdecl Inv_AnimateInventoryItem(INVENTORY_ITEM *inv_item);</title></rect>
@ -1958,13 +1958,13 @@
<rect width="7.40" height="7.29" x="578.21" y="216.71" class="decompiled"><title>void __cdecl Lara_Col_Roll(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="7.40" height="7.29" x="578.21" y="227" class="decompiled"><title>void __cdecl SkidooArmed_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="237.29" class="decompiled"><title>int32_t __cdecl Room_FindByPos(int32_t x, int32_t y, int32_t z);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="247.42" class="known"><title>void __cdecl ControlExplosion1(int16_t fx_num);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="247.42" class="known"><title>void __cdecl Explosion_Control(int16_t fx_num);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="257.55" class="decompiled"><title>int32_t __cdecl Lara_DeflectEdge(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="267.68" class="decompiled"><title>void __cdecl SkidooDriver_Initialise(int16_t item_num);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="277.81" class="decompiled"><title>bool __cdecl WinInputInit(void);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="287.94" class="decompiled"><title>void __cdecl Random_Seed(void);</title></rect>
<rect width="7.40" height="7.13" x="578.21" y="298.07" class="decompiled"><title>void __cdecl Option_DoInventory(INVENTORY_ITEM *item);</title></rect>
<rect width="7.40" height="7.05" x="578.21" y="308.20" class="known"><title>void __cdecl BellControl(int16_t item_num);</title></rect>
<rect width="7.40" height="7.05" x="578.21" y="308.20" class="known"><title>void __cdecl Bell_Control(int16_t item_num);</title></rect>
<rect width="7.40" height="7.05" x="578.21" y="318.25" class="decompiled"><title>void __cdecl Option_Controls_FlashConflicts(void);</title></rect>
<rect width="7.40" height="7.05" x="578.21" y="328.30" class="known"><title>void __cdecl S_SyncPictureBufferPalette(void);</title></rect>
<rect width="7.40" height="6.97" x="578.21" y="338.36" class="decompiled"><title>void __cdecl S_SaveSettings(void);</title></rect>
@ -1995,14 +1995,14 @@
<rect width="7.22" height="6.58" x="639.90" y="216.45" class="known"><title>bool __cdecl GetRegistryBoolValue(LPCTSTR lpValueName, bool *pValue, bool defaultValue);</title></rect>
<rect width="7.14" height="6.58" x="650.12" y="216.45" class="decompiled"><title>int16_t __cdecl Lara_FloorFront(ITEM *item, PHD_ANGLE ang, int32_t dist);</title></rect>
<rect width="7.14" height="6.58" x="660.25" y="216.45" class="decompiled"><title>void __cdecl Lara_State_ClimbStance(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="7.14" height="6.58" x="670.39" y="216.45" class="known"><title>void __cdecl InitialiseWindow(int16_t item_num);</title></rect>
<rect width="7.14" height="6.58" x="670.39" y="216.45" class="known"><title>void __cdecl Window_Initialise(int16_t item_num);</title></rect>
<rect width="7.05" height="6.58" x="680.53" y="216.45" class="known"><title>void __cdecl InitialiseHair(void);</title></rect>
<rect width="7.05" height="6.58" x="690.57" y="216.45" class="decompiled"><title>void __cdecl Lara_Col_Jumper(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="6.96" height="6.58" x="700.62" y="216.45" class="decompiled"><title>void __cdecl GameWindowCalculateSizeFromClient(int32_t *width, int32_t *height);</title></rect>
<rect width="6.88" height="6.58" x="710.58" y="216.45" class="decompiled"><title>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);</title></rect>
<rect width="6.88" height="6.58" x="720.46" y="216.45" class="known"><title>void __cdecl Richochet(GAME_VECTOR *pos);</title></rect>
<rect width="6.88" height="6.58" x="730.34" y="216.45" class="decompiled"><title>void __cdecl Lara_LookLeftRight(void);</title></rect>
<rect width="6.79" height="6.58" x="740.21" y="216.45" class="known"><title>void __cdecl ControlSplash1(int16_t fx_num);</title></rect>
<rect width="6.79" height="6.58" x="740.21" y="216.45" class="known"><title>void __cdecl Splash_Control(int16_t fx_num);</title></rect>
<rect width="6.65" height="6.71" x="588.61" y="226.03" class="decompiled"><title>void __thiscall WinVidGetColorBitMasks(COLOR_BIT_MASKS *bm, LPDDPIXELFORMAT pixel_format);</title></rect>
<rect width="6.65" height="6.71" x="588.61" y="235.74" class="decompiled"><title>BOOL __cdecl Level_LoadPalettes(HANDLE handle);</title></rect>
<rect width="6.65" height="6.71" x="588.61" y="245.45" class="known"><title>bool __cdecl GetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize, LPBYTE defaultValue);</title></rect>
@ -2028,14 +2028,14 @@
<rect width="6.57" height="6.19" x="655.95" y="226.03" class="known"><title>int32_t __cdecl CreateTexturePage(int32_t width, int32_t height, bool alpha);</title></rect>
<rect width="6.48" height="6.19" x="665.51" y="226.03" class="decompiled"><title>void __cdecl Lara_Col_SwanDive(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="6.39" height="6.19" x="674.99" y="226.03" class="decompiled"><title>void __cdecl Sound_UpdateEffects(void);</title></rect>
<rect width="6.39" height="6.19" x="684.38" y="226.03" class="known"><title>void __cdecl ControlClockChimes(int16_t item_num);</title></rect>
<rect width="6.39" height="6.19" x="684.38" y="226.03" class="known"><title>void __cdecl ClockChimes_Control(int16_t item_num);</title></rect>
<rect width="6.39" height="6.19" x="693.77" y="226.03" class="decompiled"><title>void __cdecl Lara_Col_Death(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="6.39" height="6.19" x="703.15" y="226.03" class="decompiled"><title>void __cdecl Object_SetupAllObjects(void);</title></rect>
<rect width="6.39" height="6.19" x="712.54" y="226.03" class="unused"><title>sub_4470F0</title></rect>
<rect width="6.39" height="6.19" x="721.93" y="226.03" class="unused"><title>sub_447AC0</title></rect>
<rect width="6.39" height="6.19" x="731.32" y="226.03" class="known"><title>void __cdecl SE_ControlsDlgUpdate(HWND hwndDlg);</title></rect>
<rect width="6.30" height="6.19" x="740.70" y="226.03" class="decompiled"><title>void __cdecl Object_Collision_Trap(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);</title></rect>
<rect width="6.33" height="6.16" x="598.27" y="235.22" class="known"><title>void __cdecl ControlAlarmSound(int16_t item_num);</title></rect>
<rect width="6.33" height="6.16" x="598.27" y="235.22" class="known"><title>void __cdecl AlarmSound_Control(int16_t item_num);</title></rect>
<rect width="6.33" height="6.16" x="598.27" y="244.38" class="decompiled"><title>int32_t __cdecl Lara_HitCeiling(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="6.33" height="6.16" x="598.27" y="253.54" class="decompiled"><title>void __cdecl UpdateGameResolution(void);</title></rect>
<rect width="6.33" height="6.07" x="598.27" y="262.71" class="decompiled"><title>int32_t __cdecl GF_DoLevelSequence(int32_t level, GAMEFLOW_LEVEL_TYPE type);</title></rect>
@ -2069,7 +2069,7 @@
<rect width="5.73" height="5.94" x="741.27" y="235.22" class="decompiled"><title>void __cdecl Sound_StopEffect(int32_t sample_id);</title></rect>
<rect width="5.57" height="6.10" x="607.59" y="244.16" class="known"><title>bool __cdecl GetRegistryDwordValue(LPCTSTR lpValueName, DWORD *pValue, DWORD defaultValue);</title></rect>
<rect width="5.57" height="6" x="607.59" y="253.25" class="decompiled"><title>void __cdecl Item_UpdateRoom(ITEM *item, int32_t height);</title></rect>
<rect width="5.57" height="6" x="607.59" y="262.25" class="known"><title>void __cdecl ControlBirdTweeter(int16_t item_num);</title></rect>
<rect width="5.57" height="6" x="607.59" y="262.25" class="known"><title>void __cdecl BirdTweeter_Control(int16_t item_num);</title></rect>
<rect width="5.57" height="6" x="607.59" y="271.25" class="decompiled"><title>void __cdecl Inv_Ring_MotionItemSelect(RING_INFO *ring, INVENTORY_ITEM *inv_item);</title></rect>
<rect width="5.57" height="6" x="607.59" y="280.25" class="decompiled"><title>void __cdecl Lara_Col_ClimbLeft(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="5.57" height="6" x="607.59" y="289.25" class="known"><title>void __cdecl BaddieBiteEffect(ITEM *item, BITE *bite);</title></rect>
@ -2129,7 +2129,7 @@
<rect width="4.94" height="5.15" x="624.52" y="361.70" class="decompiled"><title>int16_t __cdecl Room_GetDoor(const SECTOR *sector);</title></rect>
<rect width="4.94" height="5.15" x="624.52" y="369.85" class="decompiled"><title>void __cdecl Gun_Pistols_DrawMeshes(LARA_GUN_TYPE weapon_type);</title></rect>
<rect width="4.97" height="5.12" x="632.45" y="252.89" class="decompiled"><title>int32_t __cdecl MovableBlock_TestDestination(ITEM *item, int32_t block_height);</title></rect>
<rect width="4.97" height="5.12" x="640.42" y="252.89" class="known"><title>void __cdecl ControlGunShot(int16_t fx_num);</title></rect>
<rect width="4.97" height="5.12" x="640.42" y="252.89" class="known"><title>void __cdecl GunFlash_Control(int16_t fx_num);</title></rect>
<rect width="4.97" height="5.12" x="648.39" y="252.89" class="decompiled"><title>JOYSTICK_NODE *__cdecl GetJoystick(GUID *lpGuid);</title></rect>
<rect width="4.97" height="5.12" x="656.35" y="252.89" class="known"><title>bool __cdecl OpenGameRegistryKey(LPCTSTR key);</title></rect>
<rect width="4.97" height="5.12" x="664.32" y="252.89" class="known"><title>double __cdecl UT_Microseconds(void);</title></rect>
@ -2195,7 +2195,7 @@
<rect width="4.37" height="4.20" x="684.82" y="268.48" class="decompiled"><title>bool __cdecl WinVidInit(void);</title></rect>
<rect width="4.37" height="4.20" x="692.19" y="268.48" class="decompiled"><title>void __cdecl Option_Controls_DefaultConflict(void);</title></rect>
<rect width="4.37" height="4.20" x="699.56" y="268.48" class="known"><title>void __cdecl UpdateTicks(void);</title></rect>
<rect width="4.26" height="4.20" x="706.93" y="268.48" class="known"><title>void __cdecl ControlDingDong(int16_t item_num);</title></rect>
<rect width="4.26" height="4.20" x="706.93" y="268.48" class="known"><title>void __cdecl DingDong_Control(int16_t item_num);</title></rect>
<rect width="4.26" height="4.20" x="714.19" y="268.48" class="decompiled"><title>void __cdecl Trapdoor_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);</title></rect>
<rect width="4.14" height="4.20" x="721.44" y="268.48" class="known"><title>void __cdecl Flare_Ready(void);</title></rect>
<rect width="4.14" height="4.20" x="728.58" y="268.48" class="known"><title>void __cdecl FallingBlockFloor(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);</title></rect>
@ -2210,7 +2210,7 @@
<rect width="4.23" height="3.89" x="692.18" y="275.68" class="decompiled"><title>void __cdecl Output_DrawPolyGTMap(const int16_t *obj_ptr);</title></rect>
<rect width="4.23" height="3.89" x="699.41" y="275.68" class="decompiled"><title>void __cdecl Output_DrawPolyWGTMap(const int16_t *obj_ptr);</title></rect>
<rect width="4.23" height="3.89" x="706.64" y="275.68" class="decompiled"><title>void __cdecl Boat_Initialise(int16_t item_num);</title></rect>
<rect width="4.23" height="3.89" x="713.86" y="275.68" class="known"><title>void __cdecl ControlCutShotgun(int16_t item_num);</title></rect>
<rect width="4.23" height="3.89" x="713.86" y="275.68" class="known"><title>void __cdecl FinalCutscene_Control(int16_t item_num);</title></rect>
<rect width="4.23" height="3.89" x="721.09" y="275.68" class="known"><title>void __cdecl InitialiseBlade(int16_t item_num);</title></rect>
<rect width="4.23" height="3.89" x="728.32" y="275.68" class="known"><title>void __cdecl InitialiseRollingBall(int16_t item_num);</title></rect>
<rect width="4.23" height="3.89" x="735.55" y="275.68" class="decompiled"><title>int32_t __cdecl RenderErrorBox(int32_t error_code);</title></rect>
@ -2220,7 +2220,7 @@
<rect width="4.14" height="3.86" x="647.85" y="296.40" class="decompiled"><title>GAME_OBJECT_ID Gun_GetWeaponAnim(const LARA_GUN_TYPE gun_type);</title></rect>
<rect width="4.14" height="3.86" x="647.85" y="303.26" class="decompiled"><title>void __cdecl Drawbridge_Ceiling(const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);</title></rect>
<rect width="4.14" height="3.86" x="647.85" y="310.12" class="decompiled"><title>int32_t __cdecl Bridge_GetOffset(const ITEM *item, int32_t x, int32_t z);</title></rect>
<rect width="4.14" height="3.86" x="647.85" y="316.98" class="known"><title>void __cdecl ControlGlow(int16_t fx_num);</title></rect>
<rect width="4.14" height="3.86" x="647.85" y="316.98" class="known"><title>void __cdecl Glow_Control(int16_t fx_num);</title></rect>
<rect width="4.14" height="3.86" x="647.85" y="323.83" class="decompiled"><title>void __cdecl WaitPrimaryBufferFlip(void);</title></rect>
<rect width="4.14" height="3.86" x="647.85" y="330.69" class="decompiled"><title>void __cdecl S_RemoveCtrlText(void);</title></rect>
<rect width="4.14" height="3.86" x="647.85" y="337.55" class="known"><title>void __cdecl TexturePageReleaseVidMemSurface(TEXPAGE_DESC *page);</title></rect>
@ -2246,7 +2246,7 @@
<rect width="3.68" height="3.84" x="654.99" y="289.50" class="decompiled"><title>void __cdecl Item_ShiftCol(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="3.68" height="3.84" x="654.99" y="296.34" class="decompiled"><title>int32_t __cdecl Game_DrawCinematic(void);</title></rect>
<rect width="3.68" height="3.84" x="654.99" y="303.18" class="decompiled"><title>int32_t __cdecl Game_Draw(void);</title></rect>
<rect width="3.68" height="3.84" x="654.99" y="310.01" class="known"><title>void __cdecl ControlLaraAlarm(int16_t item_num);</title></rect>
<rect width="3.68" height="3.84" x="654.99" y="310.01" class="known"><title>void __cdecl LaraAlarm_Control(int16_t item_num);</title></rect>
<rect width="3.68" height="3.84" x="654.99" y="316.85" class="decompiled"><title>void __cdecl Text_ChangeText(TEXTSTRING *string, const char *text);</title></rect>
<rect width="3.68" height="3.84" x="654.99" y="323.68" class="decompiled"><title>uint32_t __cdecl Text_GetScaleH(uint32_t value);</title></rect>
<rect width="3.68" height="3.84" x="654.99" y="330.52" class="decompiled"><title>bool __cdecl D3DIsSupported(LPD3DDEVICEDESC desc);</title></rect>
@ -2308,7 +2308,7 @@
<rect width="3.57" height="3.19" x="668.09" y="371.81" class="known"><title>int32_t __cdecl Music_GetRealTrack(int32_t track);</title></rect>
<rect width="3.36" height="3.39" x="674.66" y="302.76" class="decompiled"><title>void __cdecl S_Audio_Sample_AdjustTrackPitch(int32_t track_id, int32_t pitch);</title></rect>
<rect width="3.36" height="3.39" x="674.66" y="309.15" class="known"><title>void __cdecl S_CalculateStaticLight(int16_t adder);</title></rect>
<rect width="3.36" height="3.26" x="674.66" y="315.54" class="known"><title>void __cdecl ControlRichochet1(int16_t fx_num);</title></rect>
<rect width="3.36" height="3.26" x="674.66" y="315.54" class="known"><title>void __cdecl Richochet_Control(int16_t fx_num);</title></rect>
<rect width="3.36" height="3.26" x="674.66" y="321.80" class="decompiled"><title>void __cdecl Effect_InitialiseArray(void);</title></rect>
<rect width="3.36" height="3.26" x="674.66" y="328.06" class="decompiled"><title>void __cdecl Lara_State_PushBlock(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="3.36" height="3.26" x="674.66" y="334.32" class="decompiled"><title>void __cdecl Lara_State_Pickup(ITEM *item, COLL_INFO *coll);</title></rect>
@ -2390,7 +2390,7 @@
<rect width="2.57" height="2.21" x="692.67" y="351.93" class="decompiled"><title>void __cdecl Lara_Col_SurfBack(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="2.57" height="2.21" x="692.67" y="357.14" class="decompiled"><title>void __cdecl Lara_Col_SurfLeft(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="2.57" height="2.21" x="692.67" y="362.36" class="decompiled"><title>void __cdecl Lara_Col_SurfRight(ITEM *item, COLL_INFO *coll);</title></rect>
<rect width="2.57" height="2.21" x="692.67" y="367.57" class="known"><title>void __cdecl SecretControl(int16_t item_num);</title></rect>
<rect width="2.57" height="2.21" x="692.67" y="367.57" class="known"><title>void __cdecl Secret_Control(int16_t item_num);</title></rect>
<rect width="2.57" height="2.21" x="692.67" y="372.79" class="known"><title>uint16_t __cdecl S_COLOR(int32_t red, int32_t green, int32_t blue);</title></rect>
<rect width="2.36" height="2.42" x="698.24" y="325.85" class="known"><title>void __cdecl FreePalette(int32_t palette_idx);</title></rect>
<rect width="2.21" height="2.42" x="703.60" y="325.85" class="decompiled"><title>void __cdecl Matrix_Pop_I(void);</title></rect>

Before

Width:  |  Height:  |  Size: 370 KiB

After

Width:  |  Height:  |  Size: 371 KiB

Before After
Before After

View file

@ -3157,19 +3157,19 @@ typedef enum {
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, PHD_ANGLE direction, int16_t room_num);
0x0041C630 0x00A4 -R void __cdecl DoLotsOfBlood(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE direction, int16_t room_num, int32_t num);
0x0041C6E0 0x0082 -R void __cdecl ControlBlood1(int16_t fx_num);
0x0041C770 0x007F -R void __cdecl ControlExplosion1(int16_t fx_num);
0x0041C6E0 0x0082 -R void __cdecl Blood_Control(int16_t fx_num);
0x0041C770 0x007F -R void __cdecl Explosion_Control(int16_t fx_num);
0x0041C7F0 0x0072 -R void __cdecl Richochet(GAME_VECTOR *pos);
0x0041C870 0x0030 -R void __cdecl ControlRichochet1(int16_t fx_num);
0x0041C870 0x0030 -R void __cdecl Richochet_Control(int16_t fx_num);
0x0041C8A0 0x0064 -R void __cdecl CreateBubble(XYZ_32 *pos, int16_t room_num);
0x0041C910 0x0078 -R void __cdecl LaraBubbles(ITEM *item);
0x0041C990 0x00F3 -R void __cdecl ControlBubble1(int16_t fx_num);
0x0041C990 0x00F3 -R void __cdecl Bubbles_Control(int16_t fx_num);
0x0041CA90 0x00C2 -R void __cdecl Splash(ITEM *item);
0x0041CB60 0x0071 -R void __cdecl ControlSplash1(int16_t fx_num);
0x0041CBE0 0x00AE -R void __cdecl ControlWaterSprite(int16_t fx_num);
0x0041CC90 0x008C -R void __cdecl ControlSnowSprite(int16_t fx_num);
0x0041CD20 0x00DE -R void __cdecl ControlHotLiquid(int16_t fx_num);
0x0041CE00 0x013D -R void __cdecl WaterFall(int16_t fx_num);
0x0041CB60 0x0071 -R void __cdecl Splash_Control(int16_t fx_num);
0x0041CBE0 0x00AE -R void __cdecl WaterSprite_Control(int16_t fx_num);
0x0041CC90 0x008C -R void __cdecl SnowSprite_Control(int16_t fx_num);
0x0041CD20 0x00DE -R void __cdecl HotLiquid_Control(int16_t fx_num);
0x0041CE00 0x013D -R void __cdecl Waterfall_Control(int16_t fx_num);
0x0041CF40 0x000B -R void __cdecl finish_level_effect(ITEM *item);
0x0041CF50 0x0016 -R void __cdecl turn180_effect(ITEM *item);
0x0041CF70 0x0096 -R void __cdecl floor_shake_effect(ITEM *item);
@ -3183,15 +3183,15 @@ typedef enum {
0x0041D1B0 0x001C -R void __cdecl CurtainFX(ITEM *item);
0x0041D1D0 0x001C -R void __cdecl StatueFX(ITEM *item);
0x0041D1F0 0x001C -R void __cdecl SetChangeFX(ITEM *item);
0x0041D210 0x003F -R void __cdecl ControlDingDong(int16_t item_num);
0x0041D250 0x0037 -R void __cdecl ControlLaraAlarm(int16_t item_num);
0x0041D290 0x0067 -R void __cdecl ControlAlarmSound(int16_t item_num);
0x0041D300 0x005D -R void __cdecl ControlBirdTweeter(int16_t item_num);
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(ITEM *item);
0x0041D3C0 0x0068 -R void __cdecl ControlClockChimes(int16_t item_num);
0x0041D430 0x0128 -R void __cdecl SphereOfDoomCollision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);
0x0041D560 0x00F0 -R void __cdecl SphereOfDoom(int16_t item_num);
0x0041D650 0x012D -R void __cdecl DrawSphereOfDoom(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 -R void __cdecl lara_hands_free(ITEM *item);
0x0041D790 0x0005 -R void __cdecl flip_map_effect(ITEM *item);
0x0041D7A0 0x0043 -R void __cdecl draw_right_gun(ITEM *item);
@ -3490,7 +3490,7 @@ typedef enum {
# 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(ITEM *item);
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);
@ -3552,7 +3552,7 @@ typedef enum {
0x00432F90 0x0049 + void __cdecl LOT_ClearLOT(LOT_INFO *lot);
# game/missile.c
0x00432FE0 0x02D0 -R void __cdecl ControlMissile(int16_t fx_num);
0x00432FE0 0x02D0 -R void __cdecl Missile_Control(int16_t fx_num);
0x004332B0 0x00A7 -R void __cdecl ShootAtLara(FX *fx);
0x00433360 0x0386 +R int32_t __cdecl Effect_ExplodingDeath(int16_t item_num, int32_t mesh_bits, int16_t damage);
0x004336F0 0x0200 -R void __cdecl BodyPart_Control(int16_t fx_num);
@ -3569,8 +3569,8 @@ typedef enum {
0x004341A0 0x006B - void __cdecl Object_DrawUnclippedItem(const ITEM *item);
# game/objects.c
0x00434210 0x00DB -R void __cdecl EarthQuake(int16_t item_num);
0x004342F0 0x003C -R void __cdecl ControlCutShotgun(int16_t item_num);
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 -R void __cdecl MiniCopterControl(int16_t item_num);
@ -3579,12 +3579,12 @@ typedef enum {
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 -R void __cdecl BigBowlControl(int16_t item_num);
0x00434D00 0x007E -R void __cdecl BellControl(int16_t item_num);
0x00434D80 0x0075 -R void __cdecl InitialiseWindow(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 SmashWindow(int16_t item_num);
0x00434ED0 0x0096 -R void __cdecl WindowControl(int16_t item_num);
0x00434F70 0x00DC -R void __cdecl SmashIceControl(int16_t item_num);
0x00434ED0 0x0096 - void __cdecl Window_Control(int16_t item_num);
0x00434F70 0x00DC -R void __cdecl SmashIce_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);
@ -3611,8 +3611,8 @@ typedef enum {
# game/people.c
0x00435E00 0x0085 + bool __cdecl Creature_CanTargetEnemy(const ITEM *item, const AI_INFO *info);
0x00435E90 0x003B -R void __cdecl ControlGlow(int16_t fx_num);
0x00435ED0 0x004E -R void __cdecl ControlGunShot(int16_t fx_num);
0x00435E90 0x003B -R void __cdecl Glow_Control(int16_t fx_num);
0x00435ED0 0x004E -R void __cdecl GunFlash_Control(int16_t fx_num);
0x00435F20 0x0066 -R int16_t __cdecl GunShot(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE yrot, int16_t room_num);
0x00435F90 0x00B9 -R int16_t __cdecl GunHit(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE yrot, int16_t room_num);
0x00436050 0x00A7 -R int16_t __cdecl GunMiss(int32_t x, int32_t y, int32_t z, int16_t speed, PHD_ANGLE yrot, int16_t room_num);
@ -3638,7 +3638,7 @@ typedef enum {
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 -R void __cdecl SecretControl(int16_t item_num);
0x00438EC0 0x0023 -R void __cdecl Secret_Control(int16_t item_num);
# game/rat.c
0x00438EF0 0x01DC - void __cdecl Mouse_Control(int16_t item_num);
@ -3659,7 +3659,7 @@ typedef enum {
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);
0x0043BAC0 0x0C4C + void __cdecl Object_SetupGeneralObjects(void);
0x0043C710 0x0068 + void __cdecl Object_SetupAllObjects(void);
0x0043C780 0x00CE -R void __cdecl GetCarriedItems(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/effects/blood.h"
#include "global/funcs.h"
void Blood_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BLOOD);
obj->control = Blood_Control;
obj->semi_transparent = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Blood_Setup(void);

View file

@ -0,0 +1,11 @@
#include "game/objects/effects/body_part.h"
#include "global/funcs.h"
void BodyPart_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BODY_PART);
obj->control = BodyPart_Control;
obj->loaded = 1;
obj->mesh_count = 0;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void BodyPart_Setup(void);

View file

@ -0,0 +1,9 @@
#include "game/objects/effects/bubbles.h"
#include "global/funcs.h"
void Bubbles_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BUBBLES);
obj->control = Bubbles_Control;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Bubbles_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/effects/explosion.h"
#include "global/funcs.h"
void Explosion_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_EXPLOSION);
obj->control = Explosion_Control;
obj->semi_transparent = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Explosion_Setup(void);

View file

@ -0,0 +1,9 @@
#include "game/objects/effects/glow.h"
#include "global/funcs.h"
void Glow_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_GLOW);
obj->control = Glow_Control;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Glow_Setup(void);

View file

@ -0,0 +1,9 @@
#include "game/objects/effects/gun_flash.h"
#include "global/funcs.h"
void GunFlash_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_GUN_FLASH);
obj->control = GunFlash_Control;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void GunFlash_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/effects/missile_flame.h"
#include "global/funcs.h"
void MissileFlame_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_MISSILE_FLAME);
obj->control = Missile_Control;
obj->semi_transparent = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void MissileFlame_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/effects/missile_harpoon.h"
#include "global/funcs.h"
void MissileHarpoon_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_MISSILE_HARPOON);
obj->control = Missile_Control;
obj->save_position = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void MissileHarpoon_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/effects/missile_knife.h"
#include "global/funcs.h"
void MissileKnife_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_MISSILE_KNIFE);
obj->control = Missile_Control;
obj->save_position = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void MissileKnife_Setup(void);

View file

@ -0,0 +1,9 @@
#include "game/objects/effects/ricochet.h"
#include "global/funcs.h"
void Ricochet_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_RICOCHET);
obj->control = Richochet_Control;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Ricochet_Setup(void);

View file

@ -0,0 +1,9 @@
#include "game/objects/effects/snow_sprite.h"
#include "global/funcs.h"
void SnowSprite_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_SNOW_SPRITE);
obj->control = SnowSprite_Control;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void SnowSprite_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/effects/splash.h"
#include "global/funcs.h"
void Splash_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_SPLASH);
obj->control = Splash_Control;
obj->semi_transparent = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Splash_Setup(void);

View file

@ -44,6 +44,12 @@ static bool M_ShouldDisappear(
return dx < DISAPPEAR_RANGE && dy < DISAPPEAR_RANGE && dz < DISAPPEAR_RANGE;
}
void Twinkle_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_TWINKLE);
obj->control = Twinkle_Control;
}
void __cdecl Twinkle_Control(const int16_t fx_num)
{
FX *const fx = &g_Effects[fx_num];

View file

@ -2,4 +2,6 @@
#include <stdint.h>
void Twinkle_Setup(void);
void __cdecl Twinkle_Control(int16_t fx_num);

View file

@ -0,0 +1,10 @@
#include "game/objects/effects/water_sprite.h"
#include "global/funcs.h"
void WaterSprite_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_WATER_SPRITE);
obj->control = WaterSprite_Control;
obj->semi_transparent = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void WaterSprite_Setup(void);

View file

@ -0,0 +1,11 @@
#include "game/objects/effects/waterfall.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void Waterfall_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_WATERFALL);
obj->control = Waterfall_Control;
obj->draw_routine = Object_DrawDummyItem;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Waterfall_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/general/alarm_sound.h"
#include "global/funcs.h"
void AlarmSound_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_ALARM_SOUND);
obj->control = AlarmSound_Control;
obj->save_flags = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void AlarmSound_Setup(void);

View file

@ -0,0 +1,13 @@
#include "game/objects/general/bell.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void Bell_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BELL);
obj->control = Bell_Control;
obj->collision = Object_Collision;
obj->save_flags = 1;
obj->save_anim = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Bell_Setup(void);

View file

@ -0,0 +1,11 @@
#include "game/objects/general/big_bowl.h"
#include "global/funcs.h"
void BigBowl_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BIG_BOWL);
obj->control = BigBowl_Control;
obj->save_flags = 1;
obj->save_anim = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void BigBowl_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/general/bird_tweeter.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void BirdTweeter_Setup(OBJECT *const obj)
{
obj->control = BirdTweeter_Control;
obj->draw_routine = Object_DrawDummyItem;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void BirdTweeter_Setup(OBJECT *obj);

View file

@ -1,5 +1,12 @@
#include "game/objects/general/bridge_flat.h"
void BridgeFlat_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BRIDGE_FLAT);
obj->ceiling = BridgeFlat_Ceiling;
obj->floor = BridgeFlat_Floor;
}
void __cdecl BridgeFlat_Floor(
const ITEM *const item, const int32_t x, const int32_t y, const int32_t z,
int32_t *const out_height)

View file

@ -2,6 +2,8 @@
#include "global/types.h"
void BridgeFlat_Setup(void);
void __cdecl BridgeFlat_Floor(
const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);

View file

@ -2,6 +2,13 @@
#include "game/objects/general/bridge_common.h"
void BridgeTilt1_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BRIDGE_TILT_1);
obj->ceiling = BridgeTilt1_Ceiling;
obj->floor = BridgeTilt1_Floor;
}
void __cdecl BridgeTilt1_Floor(
const ITEM *const item, const int32_t x, const int32_t y, const int32_t z,
int32_t *const out_height)

View file

@ -2,6 +2,8 @@
#include "global/types.h"
void BridgeTilt1_Setup(void);
void __cdecl BridgeTilt1_Floor(
const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);

View file

@ -2,6 +2,13 @@
#include "game/objects/general/bridge_common.h"
void BridgeTilt2_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BRIDGE_TILT_2);
obj->ceiling = BridgeTilt2_Ceiling;
obj->floor = BridgeTilt2_Floor;
}
void __cdecl BridgeTilt2_Floor(
const ITEM *const item, const int32_t x, const int32_t y, const int32_t z,
int32_t *const out_height)

View file

@ -2,6 +2,8 @@
#include "global/types.h"
void BridgeTilt2_Setup(void);
void __cdecl BridgeTilt2_Floor(
const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);

View file

@ -0,0 +1,9 @@
#include "game/objects/general/camera_target.h"
#include "game/objects/common.h"
void CameraTarget_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_CAMERA_TARGET);
obj->draw_routine = Object_DrawDummyItem;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void CameraTarget_Setup(void);

View file

@ -0,0 +1,12 @@
#include "game/objects/general/clock_chimes.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void ClockChimes_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_CLOCK_CHIMES);
obj->control = ClockChimes_Control;
obj->draw_routine = Object_DrawDummyItem;
obj->save_flags = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void ClockChimes_Setup(void);

View file

@ -0,0 +1,10 @@
#include "game/objects/general/cutscene_player.h"
#include "decomp/decomp.h"
void CutscenePlayer_Setup(OBJECT *const obj)
{
obj->initialise = CutscenePlayerGen_Initialise;
obj->control = CutscenePlayer_Control;
obj->hit_points = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void CutscenePlayer_Setup(OBJECT *obj);

View file

@ -34,6 +34,21 @@ static void M_CreateGongBonger(ITEM *const lara_item)
item_gong_bonger->status = IS_ACTIVE;
}
void Detonator1_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_DETONATOR_1);
obj->collision = Detonator_Collision;
}
void Detonator2_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_DETONATOR_2);
obj->collision = Detonator_Collision;
obj->control = Detonator_Control;
obj->save_flags = 1;
obj->save_anim = 1;
}
void __cdecl Detonator_Control(const int16_t item_num)
{
ITEM *const item = Item_Get(item_num);

View file

@ -2,6 +2,9 @@
#include "global/types.h"
void Detonator1_Setup(void);
void Detonator2_Setup(void);
void __cdecl Detonator_Control(int16_t item_num);
void __cdecl Detonator_Collision(

View file

@ -0,0 +1,11 @@
#include "game/objects/general/ding_dong.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void DingDong_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_DING_DONG);
obj->control = DingDong_Control;
obj->draw_routine = Object_DrawDummyItem;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void DingDong_Setup(void);

View file

@ -89,6 +89,16 @@ void __cdecl Door_Open(DOORPOS_DATA *const d)
}
}
void Door_Setup(OBJECT *const obj)
{
obj->initialise = Door_Initialise;
obj->control = Door_Control;
obj->draw_routine = Object_DrawUnclippedItem;
obj->collision = Door_Collision;
obj->save_flags = 1;
obj->save_anim = 1;
}
void __cdecl Door_Initialise(const int16_t item_num)
{
ITEM *const item = Item_Get(item_num);

View file

@ -10,6 +10,8 @@ typedef enum {
void __cdecl Door_Shut(DOORPOS_DATA *d);
void __cdecl Door_Open(DOORPOS_DATA *d);
void Door_Setup(OBJECT *obj);
void __cdecl Door_Initialise(int16_t item_num);
void __cdecl Door_Control(int16_t item_num);
void __cdecl Door_Collision(int16_t item_num, ITEM *lara_item, COLL_INFO *coll);

View file

@ -1,12 +1,27 @@
#include "game/objects/general/drawbridge.h"
#include "game/objects/general/door.h"
#include "global/funcs.h"
typedef enum {
DRAWBRIDGE_STATE_CLOSED = DOOR_STATE_CLOSED,
DRAWBRIDGE_STATE_OPEN = DOOR_STATE_OPEN,
} DRAWBRIDGE_STATE;
void Drawbridge_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_DRAWBRIDGE);
if (!obj->loaded) {
return;
}
obj->control = GeneralControl;
obj->collision = Drawbridge_Collision;
obj->ceiling = Drawbridge_Ceiling;
obj->floor = Drawbridge_Floor;
obj->save_flags = 1;
obj->save_anim = 1;
}
int32_t __cdecl Drawbridge_IsItemOnTop(
const ITEM *const item, const int32_t z, const int32_t x)
{

View file

@ -2,6 +2,8 @@
#include "global/types.h"
void Drawbridge_Setup(void);
int32_t __cdecl Drawbridge_IsItemOnTop(const ITEM *item, int32_t z, int32_t x);
void __cdecl Drawbridge_Floor(

View file

@ -0,0 +1,12 @@
#include "game/objects/general/earthquake.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void Earthquake_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_EARTHQUAKE);
obj->control = Earthquake_Control;
obj->draw_routine = Object_DrawDummyItem;
obj->save_flags = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Earthquake_Setup(void);

View file

@ -0,0 +1,11 @@
#include "game/objects/general/final_cutscene.h"
#include "global/funcs.h"
void FinalCutscene_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_CUT_SHOTGUN);
obj->control = FinalCutscene_Control;
obj->save_flags = 1;
obj->save_anim = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void FinalCutscene_Setup(void);

View file

@ -4,6 +4,7 @@
#include "game/items.h"
#include "game/los.h"
#include "game/lot.h"
#include "game/objects/common.h"
#include "global/vars.h"
#include <libtrx/utils.h>
@ -73,6 +74,14 @@ static void __cdecl M_PrepareCutscene(const int16_t item_num)
g_CinePos.rot = item->rot;
}
void FinalLevelCounter_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_FINAL_LEVEL_COUNTER);
obj->control = FinalLevelCounter_Control;
obj->draw_routine = Object_DrawDummyItem;
obj->save_flags = 1;
}
void __cdecl FinalLevelCounter_Control(const int16_t item_num)
{
if (g_SaveGame.statistics.kills == g_FinalLevelCount

View file

@ -2,4 +2,6 @@
#include <stdint.h>
void FinalLevelCounter_Setup(void);
void FinalLevelCounter_Control(int16_t item_num);

View file

@ -0,0 +1,14 @@
#include "game/objects/general/flare_item.h"
#include "game/objects/general/pickup.h"
#include "global/funcs.h"
void FlareItem_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_FLARE_ITEM);
obj->collision = Pickup_Collision;
obj->control = Flare_Control;
obj->draw_routine = Flare_DrawInAir;
obj->save_position = 1;
obj->save_flags = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void FlareItem_Setup(void);

View file

@ -18,6 +18,14 @@ static void M_ActivateHeavyTriggers(const int16_t item_num)
Item_Kill(item_num);
}
void GongBonger_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_GONG_BONGER);
obj->control = GongBonger_Control;
obj->save_flags = 1;
obj->save_anim = 1;
}
void __cdecl GongBonger_Control(const int16_t item_num)
{
ITEM *const item = Item_Get(item_num);

View file

@ -2,4 +2,6 @@
#include "global/types.h"
void GongBonger_Setup(void);
void __cdecl GongBonger_Control(int16_t item_num);

View file

@ -32,6 +32,13 @@ static void M_Explode(int16_t grenade_item_num, const XYZ_32 pos)
Item_Kill(grenade_item_num);
}
void Grenade_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_GRENADE);
obj->control = Grenade_Control;
obj->save_position = 1;
}
void __cdecl Grenade_Control(int16_t item_num)
{
ITEM *const item = Item_Get(item_num);

View file

@ -2,4 +2,6 @@
#include "global/types.h"
void Grenade_Setup(void);
void __cdecl Grenade_Control(int16_t item_num);

View file

@ -7,6 +7,13 @@
#include "global/funcs.h"
#include "global/vars.h"
void HarpoonBolt_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_HARPOON_BOLT);
obj->control = HarpoonBolt_Control;
obj->save_position = 1;
}
void __cdecl HarpoonBolt_Control(const int16_t item_num)
{
ITEM *const item = Item_Get(item_num);

View file

@ -2,4 +2,5 @@
#include "global/types.h"
void HarpoonBolt_Setup(void);
void __cdecl HarpoonBolt_Control(int16_t item_num);

View file

@ -0,0 +1,10 @@
#include "game/objects/general/hot_liquid.h"
#include "global/funcs.h"
void HotLiquid_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_HOT_LIQUID);
obj->control = HotLiquid_Control;
obj->semi_transparent = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void HotLiquid_Setup(void);

View file

@ -42,6 +42,12 @@ static void M_Consume(
g_InteractPosition = lara_item->pos;
}
void Keyhole_Setup(OBJECT *const obj)
{
obj->collision = Keyhole_Collision;
obj->save_flags = 1;
}
void __cdecl Keyhole_Collision(
const int16_t item_num, ITEM *const lara_item, COLL_INFO *const coll)
{

View file

@ -2,6 +2,8 @@
#include "global/types.h"
void Keyhole_Setup(OBJECT *obj);
void __cdecl Keyhole_Collision(
int16_t item_num, ITEM *lara_item, COLL_INFO *coll);

View file

@ -0,0 +1,12 @@
#include "game/objects/general/lara_alarm.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void LaraAlarm_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_LARA_ALARM);
obj->control = LaraAlarm_Control;
obj->draw_routine = Object_DrawDummyItem;
obj->save_flags = 1;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void LaraAlarm_Setup(void);

View file

@ -15,6 +15,18 @@ typedef enum {
LIFT_STATE_DOOR_OPEN = 1,
} LIFT_STATE;
void Lift_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_LIFT);
obj->initialise = Lift_Initialise;
obj->control = Lift_Control;
obj->ceiling = Lift_Ceiling;
obj->floor = Lift_Floor;
obj->save_position = 1;
obj->save_flags = 1;
obj->save_anim = 1;
}
void __cdecl Lift_Initialise(const int16_t item_num)
{
ITEM *const item = Item_Get(item_num);

View file

@ -7,6 +7,7 @@ typedef struct __PACKING {
int32_t wait_time;
} LIFT_INFO;
void Lift_Setup(void);
void __cdecl Lift_Initialise(int16_t item_num);
void __cdecl Lift_Control(int16_t item_num);
void __cdecl Lift_FloorCeiling(

View file

@ -174,6 +174,16 @@ static void M_DoUnderwater(const int16_t item_num, ITEM *const lara_item)
item->rot = old_rot;
}
void Pickup_Setup(OBJECT *const obj)
{
// TODO: change this to Pickup_Collision after we decompile
// both comparisons in ExtractSaveGameInfo() and GetCarriedItems()
obj->collision = (void *)0x00437E70;
obj->draw_routine = Object_DrawSpriteItem;
obj->save_position = 1;
obj->save_flags = 1;
}
void __cdecl Pickup_Collision(
const int16_t item_num, ITEM *const lara_item, COLL_INFO *const coll)
{

View file

@ -2,6 +2,8 @@
#include "global/types.h"
void Pickup_Setup(OBJECT *obj);
void __cdecl Pickup_Collision(
int16_t item_num, ITEM *lara_item, COLL_INFO *coll);

View file

@ -52,6 +52,16 @@ static void M_MarkDone(ITEM *const puzzle_hole_item)
}
}
void PuzzleHole_Setup(OBJECT *const obj, const bool done)
{
if (!done) {
// TODO: change this to PuzzleHole_Collision after we decompile
// the comparison in ExtractSaveGameInfo()
obj->collision = (void *)0x00438A80;
}
obj->save_flags = 1;
}
void __cdecl PuzzleHole_Collision(
const int16_t item_num, ITEM *const lara_item, COLL_INFO *const coll)
{

View file

@ -2,5 +2,7 @@
#include "global/types.h"
void PuzzleHole_Setup(OBJECT *obj, bool done);
void __cdecl PuzzleHole_Collision(
int16_t item_num, ITEM *lara_item, COLL_INFO *coll);

View file

@ -0,0 +1,13 @@
#include "game/objects/general/secret.h"
#include "game/objects/common.h"
#include "game/objects/general/pickup.h"
#include "global/funcs.h"
void Secret2_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_SECRET_2);
Pickup_Setup(obj);
// TODO: why is it so special?
obj->control = Secret_Control;
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void Secret2_Setup(void);

View file

@ -0,0 +1,15 @@
#include "game/objects/general/sphere_of_doom.h"
#include "global/funcs.h"
void SphereOfDoom_Setup(OBJECT *const obj, const bool transparent)
{
obj->collision = SphereOfDoom_Collision;
obj->control = SphereOfDoom_Control;
obj->draw_routine = SphereOfDoom_Draw;
obj->save_position = 1;
obj->save_flags = 1;
if (transparent) {
obj->semi_transparent = 1;
}
}

View file

@ -0,0 +1,5 @@
#pragma once
#include "global/types.h"
void SphereOfDoom_Setup(OBJECT *obj, bool transparent);

View file

@ -86,6 +86,14 @@ static void M_SwitchOff(ITEM *const switch_item, ITEM *const lara_item)
switch_item->goal_anim_state = SWITCH_STATE_ON;
}
void Switch_Setup(OBJECT *const obj, const bool underwater)
{
obj->control = Switch_Control;
obj->collision = underwater ? Switch_CollisionUW : Switch_Collision;
obj->save_flags = 1;
obj->save_anim = 1;
}
void __cdecl Switch_Collision(
const int16_t item_num, ITEM *const lara_item, COLL_INFO *const coll)
{

View file

@ -2,6 +2,8 @@
#include "global/types.h"
void Switch_Setup(OBJECT *obj, bool underwater);
void __cdecl Switch_Collision(
int16_t item_num, ITEM *lara_item, COLL_INFO *coll);

View file

@ -7,6 +7,15 @@ typedef enum {
TRAPDOOR_STATE_OPEN,
} TRAPDOOR_STATE;
void Trapdoor_Setup(OBJECT *const obj)
{
obj->control = Trapdoor_Control;
obj->ceiling = Trapdoor_Ceiling;
obj->floor = Trapdoor_Floor;
obj->save_flags = 1;
obj->save_anim = 1;
}
int32_t __cdecl Trapdoor_IsItemOnTop(
const ITEM *const item, const int32_t x, const int32_t z)
{

View file

@ -4,6 +4,8 @@
int32_t __cdecl Trapdoor_IsItemOnTop(const ITEM *item, int32_t x, int32_t z);
void Trapdoor_Setup(OBJECT *obj);
void __cdecl Trapdoor_Floor(
const ITEM *item, int32_t x, int32_t y, int32_t z, int32_t *out_height);
void __cdecl Trapdoor_Ceiling(

View file

@ -0,0 +1,24 @@
#include "game/objects/general/window.h"
#include "game/objects/common.h"
#include "global/funcs.h"
void Window1_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_WINDOW_1);
obj->initialise = Window_Initialise;
obj->collision = Object_Collision;
obj->control = Window_Control;
obj->save_flags = 1;
obj->save_anim = 1;
}
void Window2_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_WINDOW_2);
obj->initialise = Window_Initialise;
obj->collision = Object_Collision;
obj->control = SmashIce_Control;
obj->save_flags = 1;
obj->save_anim = 1;
}

View file

@ -0,0 +1,7 @@
#pragma once
#include "global/types.h"
void Window1_Setup(void);
void Window2_Setup(void);

View file

@ -27,7 +27,56 @@
#include "game/objects/creatures/xian_knight.h"
#include "game/objects/creatures/xian_spearman.h"
#include "game/objects/creatures/yeti.h"
#include "game/objects/effects/blood.h"
#include "game/objects/effects/body_part.h"
#include "game/objects/effects/bubbles.h"
#include "game/objects/effects/explosion.h"
#include "game/objects/effects/glow.h"
#include "game/objects/effects/gun_flash.h"
#include "game/objects/effects/missile_flame.h"
#include "game/objects/effects/missile_harpoon.h"
#include "game/objects/effects/missile_knife.h"
#include "game/objects/effects/ricochet.h"
#include "game/objects/effects/snow_sprite.h"
#include "game/objects/effects/splash.h"
#include "game/objects/effects/twinkle.h"
#include "game/objects/effects/water_sprite.h"
#include "game/objects/effects/waterfall.h"
#include "game/objects/general/alarm_sound.h"
#include "game/objects/general/bell.h"
#include "game/objects/general/big_bowl.h"
#include "game/objects/general/bird_tweeter.h"
#include "game/objects/general/bridge_flat.h"
#include "game/objects/general/bridge_tilt_1.h"
#include "game/objects/general/bridge_tilt_2.h"
#include "game/objects/general/camera_target.h"
#include "game/objects/general/clock_chimes.h"
#include "game/objects/general/cutscene_player.h"
#include "game/objects/general/detonator.h"
#include "game/objects/general/ding_dong.h"
#include "game/objects/general/door.h"
#include "game/objects/general/drawbridge.h"
#include "game/objects/general/earthquake.h"
#include "game/objects/general/final_cutscene.h"
#include "game/objects/general/final_level_counter.h"
#include "game/objects/general/flare_item.h"
#include "game/objects/general/gong_bonger.h"
#include "game/objects/general/grenade.h"
#include "game/objects/general/harpoon_bolt.h"
#include "game/objects/general/hot_liquid.h"
#include "game/objects/general/keyhole.h"
#include "game/objects/general/lara_alarm.h"
#include "game/objects/general/lift.h"
#include "game/objects/general/pickup.h"
#include "game/objects/general/puzzle_hole.h"
#include "game/objects/general/secret.h"
#include "game/objects/general/sphere_of_doom.h"
#include "game/objects/general/switch.h"
#include "game/objects/general/trapdoor.h"
#include "game/objects/general/window.h"
#include "game/objects/vehicles/boat.h"
#include "game/objects/vehicles/skidoo_armed.h"
#include "game/objects/vehicles/skidoo_fast.h"
#include "global/funcs.h"
#include "global/types.h"
#include "global/vars.h"
@ -101,9 +150,145 @@ void __cdecl Object_SetupBaddyObjects(void)
GiantYeti_Setup();
TRex_Setup();
Winston_Setup();
}
// TODO: move this to Object_SetupGeneralObjects
void __cdecl Object_SetupGeneralObjects(void)
{
Boat_Setup();
SkidooArmed_Setup();
SkidooFast_Setup();
// misc interactive objects
Bell_Setup();
BigBowl_Setup();
Detonator1_Setup();
Detonator2_Setup();
FlareItem_Setup();
Lift_Setup();
// misc non-interactive objects
AlarmSound_Setup();
BirdTweeter_Setup(Object_GetObject(O_BIRD_TWEETER_1));
BirdTweeter_Setup(Object_GetObject(O_BIRD_TWEETER_2));
CameraTarget_Setup();
ClockChimes_Setup();
DingDong_Setup();
Earthquake_Setup();
FinalCutscene_Setup();
FinalLevelCounter_Setup();
GongBonger_Setup();
HotLiquid_Setup();
LaraAlarm_Setup();
// projectiles
Grenade_Setup();
HarpoonBolt_Setup();
MissileFlame_Setup();
MissileHarpoon_Setup();
MissileKnife_Setup();
SphereOfDoom_Setup(Object_GetObject(O_SPHERE_OF_DOOM_1), true);
SphereOfDoom_Setup(Object_GetObject(O_SPHERE_OF_DOOM_2), true);
SphereOfDoom_Setup(Object_GetObject(O_SPHERE_OF_DOOM_3), false);
// effects
Blood_Setup();
BodyPart_Setup();
Bubbles_Setup();
Explosion_Setup();
Glow_Setup();
Splash_Setup();
Twinkle_Setup();
GunFlash_Setup();
Ricochet_Setup();
SnowSprite_Setup();
WaterSprite_Setup();
Waterfall_Setup();
// geometry objects
BridgeFlat_Setup();
BridgeTilt1_Setup();
BridgeTilt2_Setup();
Drawbridge_Setup();
Window1_Setup();
Window2_Setup();
// doors
Door_Setup(Object_GetObject(O_DOOR_TYPE_1));
Door_Setup(Object_GetObject(O_DOOR_TYPE_2));
Door_Setup(Object_GetObject(O_DOOR_TYPE_3));
Door_Setup(Object_GetObject(O_DOOR_TYPE_4));
Door_Setup(Object_GetObject(O_DOOR_TYPE_5));
Door_Setup(Object_GetObject(O_DOOR_TYPE_6));
Door_Setup(Object_GetObject(O_DOOR_TYPE_7));
Door_Setup(Object_GetObject(O_DOOR_TYPE_8));
Trapdoor_Setup(Object_GetObject(O_TRAPDOOR_TYPE_1));
Trapdoor_Setup(Object_GetObject(O_TRAPDOOR_TYPE_2));
// keys and puzzles
Keyhole_Setup(Object_GetObject(O_KEY_HOLE_1));
Keyhole_Setup(Object_GetObject(O_KEY_HOLE_2));
Keyhole_Setup(Object_GetObject(O_KEY_HOLE_3));
Keyhole_Setup(Object_GetObject(O_KEY_HOLE_4));
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_DONE_1), true);
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_DONE_2), true);
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_DONE_3), true);
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_DONE_4), true);
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_HOLE_1), false);
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_HOLE_2), false);
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_HOLE_3), false);
PuzzleHole_Setup(Object_GetObject(O_PUZZLE_HOLE_4), false);
// switches
Switch_Setup(Object_GetObject(O_SWITCH_TYPE_AIRLOCK), false);
Switch_Setup(Object_GetObject(O_SWITCH_TYPE_BUTTON), false);
Switch_Setup(Object_GetObject(O_SWITCH_TYPE_NORMAL), false);
Switch_Setup(Object_GetObject(O_SWITCH_TYPE_SMALL), false);
Switch_Setup(Object_GetObject(O_SWITCH_TYPE_UW), true);
// cutscene players
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_1));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_2));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_3));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_4));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_5));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_6));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_7));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_8));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_9));
CutscenePlayer_Setup(Object_GetObject(O_PLAYER_10));
// pickups
Pickup_Setup(Object_GetObject(O_FLARES_ITEM));
Pickup_Setup(Object_GetObject(O_GRENADE_AMMO_ITEM));
Pickup_Setup(Object_GetObject(O_GRENADE_ITEM));
Pickup_Setup(Object_GetObject(O_HARPOON_AMMO_ITEM));
Pickup_Setup(Object_GetObject(O_HARPOON_ITEM));
Pickup_Setup(Object_GetObject(O_KEY_ITEM_1));
Pickup_Setup(Object_GetObject(O_KEY_ITEM_2));
Pickup_Setup(Object_GetObject(O_KEY_ITEM_3));
Pickup_Setup(Object_GetObject(O_KEY_ITEM_4));
Pickup_Setup(Object_GetObject(O_LARGE_MEDIPACK_ITEM));
Pickup_Setup(Object_GetObject(O_M16_AMMO_ITEM));
Pickup_Setup(Object_GetObject(O_M16_ITEM));
Pickup_Setup(Object_GetObject(O_MAGNUM_AMMO_ITEM));
Pickup_Setup(Object_GetObject(O_MAGNUM_ITEM));
Pickup_Setup(Object_GetObject(O_PICKUP_ITEM_1));
Pickup_Setup(Object_GetObject(O_PICKUP_ITEM_2));
Pickup_Setup(Object_GetObject(O_PISTOL_AMMO_ITEM));
Pickup_Setup(Object_GetObject(O_PISTOL_ITEM));
Pickup_Setup(Object_GetObject(O_PUZZLE_ITEM_1));
Pickup_Setup(Object_GetObject(O_PUZZLE_ITEM_2));
Pickup_Setup(Object_GetObject(O_PUZZLE_ITEM_3));
Pickup_Setup(Object_GetObject(O_PUZZLE_ITEM_4));
Pickup_Setup(Object_GetObject(O_SECRET_1));
Pickup_Setup(Object_GetObject(O_SECRET_3));
Pickup_Setup(Object_GetObject(O_SHOTGUN_AMMO_ITEM));
Pickup_Setup(Object_GetObject(O_SHOTGUN_ITEM));
Pickup_Setup(Object_GetObject(O_SMALL_MEDIPACK_ITEM));
Pickup_Setup(Object_GetObject(O_UZI_AMMO_ITEM));
Pickup_Setup(Object_GetObject(O_UZI_ITEM));
Secret2_Setup();
}
void __cdecl Object_SetupAllObjects(void)

View file

@ -1,4 +1,5 @@
#pragma once
void __cdecl Object_SetupAllObjects(void);
void __cdecl Object_SetupGeneralObjects(void);
void __cdecl Object_SetupBaddyObjects(void);

View file

@ -78,6 +78,17 @@ void __cdecl Boat_Initialise(const int16_t item_num)
boat->data = boat_data;
}
void Boat_Setup(void)
{
OBJECT *const obj = Object_GetObject(O_BOAT);
obj->initialise = Boat_Initialise;
obj->control = Boat_Control;
obj->collision = Boat_Collision;
obj->save_position = 1;
obj->save_flags = 1;
obj->save_anim = 1;
}
int32_t __cdecl Boat_CheckGetOn(
const int16_t item_num, const COLL_INFO *const coll)
{

View file

@ -5,6 +5,7 @@
#include <stdint.h>
void __cdecl Boat_Initialise(int16_t item_num);
void Boat_Setup(void);
int32_t __cdecl Boat_CheckGetOn(int16_t item_num, const COLL_INFO *coll);
void __cdecl Boat_Collision(int16_t item_num, ITEM *lara, COLL_INFO *coll);
int32_t __cdecl Boat_TestWaterHeight(

Some files were not shown because too many files have changed in this diff Show more