From 38b473841fbe89838a865579af2041f4243b6b1b Mon Sep 17 00:00:00 2001 From: Marcin Kurczewski Date: Thu, 17 Oct 2024 21:40:45 +0200 Subject: [PATCH] tr2: port MovableBlock_Draw --- docs/tr2/progress.svg | 16 ++++++++-------- docs/tr2/progress.txt | 2 +- src/tr2/game/objects/general/movable_block.c | 9 +++++++++ src/tr2/game/objects/general/movable_block.h | 2 ++ src/tr2/global/funcs.h | 1 - src/tr2/inject_exec.c | 1 + 6 files changed, 21 insertions(+), 10 deletions(-) diff --git a/docs/tr2/progress.svg b/docs/tr2/progress.svg index 4c3ba5971..4d42732c4 100644 --- a/docs/tr2/progress.svg +++ b/docs/tr2/progress.svg @@ -69,10 +69,10 @@ Tomb2.exe progress according to the physical function order: -64.45% (785) · 33.09% (403) · 0% (0) · 2.46% (30) +64.53% (786) · 33% (402) · 0% (0) · 2.46% (30) - - + + @@ -689,7 +689,7 @@ int32_t __cdecl MovableBlock_TestPush(ITEM *item, int32_t block_height, uint16_t quadrant); int32_t __cdecl MovableBlock_TestPull(ITEM *item, int32_t block_height, uint16_t quadrant); void __cdecl Room_AlterFloorHeight(ITEM *item, int32_t height); -void __cdecl MovableBlock_Draw(const ITEM *item); +void __cdecl MovableBlock_Draw(const ITEM *item); void __cdecl Object_DrawUnclippedItem(const ITEM *item); void __cdecl EarthQuake(int16_t item_num); void __cdecl ControlCutShotgun(int16_t item_num); @@ -1298,10 +1298,10 @@ Tomb2.exe progress according to the function sizes: -69.86% · 29.81% · 0% · 0.33% +69.87% · 29.80% · 0% · 0.33% - - + + @@ -2369,7 +2369,7 @@ void __cdecl FreePalette(int32_t palette_idx); void __cdecl Matrix_Pop_I(void); void __cdecl Inv_Ring_MotionRotation(RING_INFO *ring, int16_t rotation, int16_t target); -void __cdecl MovableBlock_Draw(const ITEM *item); +void __cdecl MovableBlock_Draw(const ITEM *item); void __cdecl WinVidFreeWindow(void); bool __cdecl DInputCreate(void); bool __cdecl HWR_Init(void); diff --git a/docs/tr2/progress.txt b/docs/tr2/progress.txt index da6c20cb3..200e75e0b 100644 --- a/docs/tr2/progress.txt +++ b/docs/tr2/progress.txt @@ -3530,7 +3530,7 @@ typedef enum { 0x00433D20 0x0137 + int32_t __cdecl MovableBlock_TestPush(ITEM *item, int32_t block_height, uint16_t quadrant); 0x00433E70 0x0225 + int32_t __cdecl MovableBlock_TestPull(ITEM *item, int32_t block_height, uint16_t quadrant); 0x004340B0 0x00BB + void __cdecl Room_AlterFloorHeight(ITEM *item, int32_t height); -0x00434170 0x0022 - void __cdecl MovableBlock_Draw(const ITEM *item); +0x00434170 0x0022 + void __cdecl MovableBlock_Draw(const ITEM *item); 0x004341A0 0x006B - void __cdecl Object_DrawUnclippedItem(const ITEM *item); # game/objects.c diff --git a/src/tr2/game/objects/general/movable_block.c b/src/tr2/game/objects/general/movable_block.c index 5320f1084..63f5240be 100644 --- a/src/tr2/game/objects/general/movable_block.c +++ b/src/tr2/game/objects/general/movable_block.c @@ -319,3 +319,12 @@ void __cdecl MovableBlock_Collision( Lara_Animate(lara_item); } } + +void __cdecl MovableBlock_Draw(const ITEM *const item) +{ + if (item->status == IS_ACTIVE) { + Object_DrawUnclippedItem(item); + } else { + Object_DrawAnimatingItem(item); + } +} diff --git a/src/tr2/game/objects/general/movable_block.h b/src/tr2/game/objects/general/movable_block.h index 2358a94e9..b34791b0a 100644 --- a/src/tr2/game/objects/general/movable_block.h +++ b/src/tr2/game/objects/general/movable_block.h @@ -17,3 +17,5 @@ void __cdecl MovableBlock_Control(int16_t item_num); void __cdecl MovableBlock_Collision( int16_t item_num, ITEM *lara_item, COLL_INFO *coll); + +void __cdecl MovableBlock_Draw(const ITEM *item); diff --git a/src/tr2/global/funcs.h b/src/tr2/global/funcs.h index a84b9194f..378b8d1c8 100644 --- a/src/tr2/global/funcs.h +++ b/src/tr2/global/funcs.h @@ -100,7 +100,6 @@ #define ControlMissile ((void __cdecl (*)(int16_t fx_num))0x00432FE0) #define ShootAtLara ((void __cdecl (*)(FX *fx))0x004332B0) #define BodyPart_Control ((void __cdecl (*)(int16_t fx_num))0x004336F0) -#define MovableBlock_Draw ((void __cdecl (*)(const ITEM *item))0x00434170) #define Object_DrawUnclippedItem ((void __cdecl (*)(const ITEM *item))0x004341A0) #define EarthQuake ((void __cdecl (*)(int16_t item_num))0x00434210) #define ControlCutShotgun ((void __cdecl (*)(int16_t item_num))0x004342F0) diff --git a/src/tr2/inject_exec.c b/src/tr2/inject_exec.c index d1e67fe63..7eced70cb 100644 --- a/src/tr2/inject_exec.c +++ b/src/tr2/inject_exec.c @@ -976,6 +976,7 @@ static void M_Objects(const bool enable) INJECT(enable, 0x00433CD0, MovableBlock_TestDestination); INJECT(enable, 0x00433D20, MovableBlock_TestPush); INJECT(enable, 0x00433E70, MovableBlock_TestPull); + INJECT(enable, 0x00434170, MovableBlock_Draw); INJECT(enable, 0x00434400, FinalLevelCounter_Control); INJECT(enable, 0x00434800, GongBonger_Control); INJECT(enable, 0x004348C0, Zipline_Collision);