diff --git a/docs/progress.svg b/docs/progress.svg index 3fde7ad..a0d0378 100644 --- a/docs/progress.svg +++ b/docs/progress.svg @@ -69,10 +69,10 @@ Tomb2.exe progress according to the physical function order: -58.62% (714) · 38.92% (474) · 0% (0) · 2.46% (30) +58.70% (715) · 38.83% (473) · 0% (0) · 2.46% (30) - - + + @@ -446,7 +446,7 @@ void __cdecl Requester_SetHeading(REQUEST_INFO *req, char *text1, uint32_t flags1, char *text2, uint32_t flags2); void __cdecl Requster_RemoveAllItems(REQUEST_INFO *req); void __cdecl Requester_ChangeItem(REQUEST_INFO *req, int32_t item, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); -void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); +void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); void __cdecl Requester_SetSize(REQUEST_INFO *req, int32_t maxlines, int32_t ypos); int32_t __cdecl AddAssaultTime(uint32_t time); void __cdecl ShowGymStatsText(char *time_str, int32_t type); @@ -1298,10 +1298,10 @@ Tomb2.exe progress according to the function sizes: -63.02% · 36.65% · 0% · 0.33% +63.07% · 36.60% · 0% · 0.33% - - + + @@ -1803,7 +1803,7 @@ DWORD __cdecl CompPCX(BYTE *bitmap, DWORD width, DWORD height, RGB_888 *palette, BYTE **pcx_data); void __cdecl SyncSurfacePalettes(void *src_data, int32_t width, int32_t height, int32_t src_pitch, RGB_888 *src_palette, void *dst_data, int32_t dst_pitch, RGB_888 *dst_palette, bool preserve_sys_palette); int32_t __cdecl Lara_TestEdgeCatch(ITEM_INFO *item, COLL_INFO *coll, int32_t *edge); -void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); +void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); void __cdecl SpiderLeap(int16_t item_num, int16_t angle); bool __cdecl Matrix_TranslateRel(int32_t x, int32_t y, int32_t z); int32_t __cdecl Item_GetAnimChange(ITEM_INFO *item, const ANIM_STRUCT *anim); diff --git a/docs/progress.txt b/docs/progress.txt index 2b21599..327de48 100644 --- a/docs/progress.txt +++ b/docs/progress.txt @@ -3246,7 +3246,7 @@ typedef enum { 0x00426030 0x00AA + void __cdecl Requester_SetHeading(REQUEST_INFO *req, char *text1, uint32_t flags1, char *text2, uint32_t flags2); 0x004260E0 0x0013 - void __cdecl Requster_RemoveAllItems(REQUEST_INFO *req); 0x00426100 0x00C0 + void __cdecl Requester_ChangeItem(REQUEST_INFO *req, int32_t item, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); -0x004261C0 0x00AC - void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); +0x004261C0 0x00AC + void __cdecl Requester_AddItem(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); 0x00426270 0x0039 - void __cdecl Requester_SetSize(REQUEST_INFO *req, int32_t maxlines, int32_t ypos); 0x004262B0 0x0081 -R int32_t __cdecl AddAssaultTime(uint32_t time); 0x00426340 0x01D6 +R void __cdecl ShowGymStatsText(char *time_str, int32_t type); diff --git a/src/game/requester.c b/src/game/requester.c index b760180..32e05ac 100644 --- a/src/game/requester.c +++ b/src/game/requester.c @@ -153,3 +153,31 @@ void __cdecl Requester_ChangeItem( req->pitem_flags2[item] = 0; } } + +void __cdecl Requester_AddItem( + REQUEST_INFO *const req, const char *const text1, const uint32_t flags1, + const char *const text2, const uint32_t flags2) +{ + req->pitem_flags1 = g_RequesterFlags1; + req->pitem_flags2 = g_RequesterFlags2; + + if (text1 != NULL) { + strcpy( + &req->pitem_strings1[req->items_count * req->item_string_len], + text1); + req->pitem_flags1[req->items_count] = flags1 | REQ_USE; + } else { + g_RequesterFlags1[req->items_count] = 0; + } + + if (text2 != NULL) { + strcpy( + &req->pitem_strings2[req->items_count * req->item_string_len], + text2); + req->pitem_flags2[req->items_count] = flags2 | REQ_USE; + } else { + req->pitem_flags2[req->items_count] = 0; + } + + req->items_count++; +} diff --git a/src/game/requester.h b/src/game/requester.h index 5a9d8c0..ecae1d6 100644 --- a/src/game/requester.h +++ b/src/game/requester.h @@ -13,3 +13,6 @@ void __cdecl Requester_SetHeading( void __cdecl Requester_ChangeItem( REQUEST_INFO *req, int32_t item, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2); +void __cdecl Requester_AddItem( + REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, + uint32_t flags2); diff --git a/src/global/funcs.h b/src/global/funcs.h index 09cd039..499ba16 100644 --- a/src/global/funcs.h +++ b/src/global/funcs.h @@ -122,7 +122,6 @@ #define Inv_Ring_MotionItemDeselect ((void __cdecl (*)(RING_INFO *ring, INVENTORY_ITEM *inv_item))0x00425530) #define Requester_Display ((int32_t __cdecl (*)(REQUEST_INFO *req, int32_t des, int32_t backgrounds))0x004257C0) #define Requster_RemoveAllItems ((void __cdecl (*)(REQUEST_INFO *req))0x004260E0) -#define Requester_AddItem ((void __cdecl (*)(REQUEST_INFO *req, const char *text1, uint32_t flags1, const char *text2, uint32_t flags2))0x004261C0) #define Requester_SetSize ((void __cdecl (*)(REQUEST_INFO *req, int32_t maxlines, int32_t ypos))0x00426270) #define AddAssaultTime ((int32_t __cdecl (*)(uint32_t time))0x004262B0) #define HarpoonBolt_Control ((void __cdecl (*)(int16_t item_num))0x0042C0F0) diff --git a/src/inject_exec.c b/src/inject_exec.c index d51f2a8..f823ef5 100644 --- a/src/inject_exec.c +++ b/src/inject_exec.c @@ -366,6 +366,7 @@ static void Inject_Requester(const bool enable) INJECT(enable, 0x00425760, Requester_Item_RightAlign); INJECT(enable, 0x00426030, Requester_SetHeading); INJECT(enable, 0x00426100, Requester_ChangeItem); + INJECT(enable, 0x004261C0, Requester_AddItem); } static void Inject_Option(const bool enable)