diff --git a/docs/progress.svg b/docs/progress.svg index fbf9830..9fa9e4a 100644 --- a/docs/progress.svg +++ b/docs/progress.svg @@ -69,10 +69,10 @@ Tomb2.exe progress according to the physical function order: -7.58% (91) · 90% (1080) · 0.67% (8) · 1.75% (21) +7.67% (92) · 89.92% (1079) · 0.67% (8) · 1.75% (21) - - + + @@ -493,7 +493,7 @@ void __cdecl Lara_State_Fallback(struct ITEM_INFO *item, struct COLL_INFO *coll); void __cdecl Lara_State_HangLeft(struct ITEM_INFO *item, struct COLL_INFO *coll); void __cdecl Lara_State_HangRight(struct ITEM_INFO *item, struct COLL_INFO *coll); -void __cdecl Lara_State_SlideBack(struct ITEM_INFO *item, struct COLL_INFO *coll); +void __cdecl Lara_State_SlideBack(struct ITEM_INFO *item, struct COLL_INFO *coll); void __cdecl Lara_State_PushBlock(struct ITEM_INFO *item, struct COLL_INFO *coll); void __cdecl Lara_State_PPReady(struct ITEM_INFO *item, struct COLL_INFO *coll); void __cdecl Lara_State_Pickup(struct ITEM_INFO *item, struct COLL_INFO *coll); @@ -1281,10 +1281,10 @@ Tomb2.exe progress according to the function sizes: -4.66% · 95.01% · 0.02% · 0.31% +4.67% · 95% · 0.02% · 0.31% - - + + @@ -2386,7 +2386,7 @@ int32_t __fastcall Math_SinImpl(int16_t angle); int32_t __cdecl GetDebouncedInput(int32_t input); bool __cdecl HWR_VertexBufferFull(void); -void __cdecl Lara_State_SlideBack(struct ITEM_INFO *item, struct COLL_INFO *coll); +void __cdecl Lara_State_SlideBack(struct ITEM_INFO *item, struct COLL_INFO *coll); void __cdecl draw_flare_meshes(void); void __cdecl undraw_flare_meshes(void); sub_444990 diff --git a/docs/progress.txt b/docs/progress.txt index 8c58b48..676c2f9 100644 --- a/docs/progress.txt +++ b/docs/progress.txt @@ -1506,7 +1506,7 @@ typedef enum LARA_GUN_STATE { 00428340 0000002C + void __cdecl Lara_State_Fallback(struct ITEM_INFO *item, struct COLL_INFO *coll); 00428370 00000035 + void __cdecl Lara_State_HangLeft(struct ITEM_INFO *item, struct COLL_INFO *coll); 004283B0 00000035 + void __cdecl Lara_State_HangRight(struct ITEM_INFO *item, struct COLL_INFO *coll); -004283F0 00000018 - void __cdecl Lara_State_SlideBack(struct ITEM_INFO *item, struct COLL_INFO *coll); +004283F0 00000018 + void __cdecl Lara_State_SlideBack(struct ITEM_INFO *item, struct COLL_INFO *coll); 00428410 00000030 - void __cdecl Lara_State_PushBlock(struct ITEM_INFO *item, struct COLL_INFO *coll); 00428440 00000027 - void __cdecl Lara_State_PPReady(struct ITEM_INFO *item, struct COLL_INFO *coll); 00428470 00000030 - void __cdecl Lara_State_Pickup(struct ITEM_INFO *item, struct COLL_INFO *coll); diff --git a/src/game/lara/lara_state.c b/src/game/lara/lara_state.c index 4e0988e..25a8979 100644 --- a/src/game/lara/lara_state.c +++ b/src/game/lara/lara_state.c @@ -516,3 +516,11 @@ void __cdecl Lara_State_HangRight( item->goal_anim_state = LS_HANG; } } + +void __cdecl Lara_State_SlideBack( + struct ITEM_INFO *item, struct COLL_INFO *coll) +{ + if ((g_Input & IN_JUMP) && !(g_Input & IN_FORWARD)) { + item->goal_anim_state = LS_BACK_JUMP; + } +} diff --git a/src/game/lara/lara_state.h b/src/game/lara/lara_state.h index bce3dcc..c0f03cc 100644 --- a/src/game/lara/lara_state.h +++ b/src/game/lara/lara_state.h @@ -45,3 +45,5 @@ void __cdecl Lara_State_HangLeft( struct ITEM_INFO *item, struct COLL_INFO *coll); void __cdecl Lara_State_HangRight( struct ITEM_INFO *item, struct COLL_INFO *coll); +void __cdecl Lara_State_SlideBack( + struct ITEM_INFO *item, struct COLL_INFO *coll); diff --git a/src/global/funcs.h b/src/global/funcs.h index 8786069..0ae8b4c 100644 --- a/src/global/funcs.h +++ b/src/global/funcs.h @@ -373,7 +373,6 @@ #define Lara_LookUpDown ((void __cdecl (*)(void))0x00427720) #define Lara_LookLeftRight ((void __cdecl (*)(void))0x00427790) #define Lara_ResetLook ((void __cdecl (*)(void))0x00427810) -#define Lara_State_SlideBack ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x004283F0) #define Lara_State_PushBlock ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x00428410) #define Lara_State_PPReady ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x00428440) #define Lara_State_Pickup ((void __cdecl (*)(struct ITEM_INFO *item, struct COLL_INFO *coll))0x00428470) diff --git a/src/inject_exec.c b/src/inject_exec.c index b559614..3435934 100644 --- a/src/inject_exec.c +++ b/src/inject_exec.c @@ -108,6 +108,7 @@ static void Inject_Lara_State(void) INJECT(1, 0x00428340, Lara_State_Fallback); INJECT(1, 0x00428370, Lara_State_HangLeft); INJECT(1, 0x004283B0, Lara_State_HangRight); + INJECT(1, 0x004283F0, Lara_State_SlideBack); } static void Inject_S_Audio_Sample(void)