port Text_Init

This commit is contained in:
Marcin Kurczewski 2023-11-03 23:01:22 +01:00
parent 1464da4ca8
commit 7c8e6f27db
No known key found for this signature in database
GPG Key ID: CC65E6FD28CAE42A
9 changed files with 176 additions and 122 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">22.67% (272)</tspan> · <tspan class="known">74.83% (898)</tspan> · <tspan class="todo">0.67% (8)</tspan> · <tspan class="unused">1.83% (22)</tspan></tspan></text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">22.75% (273)</tspan> · <tspan class="known">74.75% (897)</tspan> · <tspan class="todo">0.67% (8)</tspan> · <tspan class="unused">1.83% (22)</tspan></tspan></text>
<g transform="translate(0 20)">
<rect width="169.32" height="6" x="0" y="0" class="decompiled"/>
<rect width="559" height="6" x="169.32" y="0" class="known"/>
<rect width="169.94" height="6" x="0" y="0" class="decompiled"/>
<rect width="558.38" height="6" x="169.94" y="0" class="known"/>
<rect width="4.98" height="6" x="728.32" y="0" class="todo"/>
<rect width="13.70" height="6" x="733.30" y="0" class="unused"/>
</g>
@ -801,27 +801,27 @@
<rect width="12" height="12" x="315" y="210" class="known"><title>void __cdecl SpiderLeap(int16_t item_num, int16_t angle);</title></rect>
<rect width="12" height="12" x="330" y="210" class="known"><title>void __cdecl SpiderControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="345" y="210" class="known"><title>void __cdecl BigSpiderControl(int16_t item_num);</title></rect>
<rect width="12" height="12" x="360" y="210" class="known"><title>void __cdecl T_InitPrint(void);</title></rect>
<rect width="12" height="12" x="375" y="210" class="known"><title>TEXTSTRING *__cdecl T_Print(int32_t xpos, int32_t ypos, int32_t zpos, char *string);</title></rect>
<rect width="12" height="12" x="390" y="210" class="known"><title>void __cdecl T_ChangeText(struct TEXTSTRING *textstring, char *string);</title></rect>
<rect width="12" height="12" x="405" y="210" class="known"><title>void __cdecl T_SetScale(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scaleV);</title></rect>
<rect width="12" height="12" x="420" y="210" class="known"><title>void __cdecl T_FlashText(struct TEXTSTRING *textstring, int16_t enable, int16_t rate);</title></rect>
<rect width="12" height="12" x="435" y="210" class="known"><title>void __cdecl T_AddBackground(struct TEXTSTRING *textstring, int16_t xsize, int16_t ysize, int16_t xoff, int16_t yoff, int16_t zoff, int16_t colour, uint16_t *gourptr, uint16_t flags);</title></rect>
<rect width="12" height="12" x="450" y="210" class="known"><title>void __cdecl T_RemoveBackground(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="465" y="210" class="known"><title>void __cdecl T_AddOutline(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gourptr, uint16_t flags);</title></rect>
<rect width="12" height="12" x="480" y="210" class="known"><title>void __cdecl T_RemoveOutline(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="495" y="210" class="known"><title>void __cdecl T_CentreH(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="510" y="210" class="known"><title>void __cdecl T_CentreV(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="525" y="210" class="known"><title>void __cdecl T_RightAlign(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="540" y="210" class="known"><title>void __cdecl T_BottomAlign(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="555" y="210" class="known"><title>int32_t __cdecl T_GetTextWidth(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="570" y="210" class="known"><title>int32_t __cdecl T_RemovePrint(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="585" y="210" class="known"><title>int16_t __cdecl T_GetStringLen(char *string);</title></rect>
<rect width="12" height="12" x="600" y="210" class="known"><title>void __cdecl T_DrawText(void);</title></rect>
<rect width="12" height="12" x="615" y="210" class="known"><title>void __cdecl T_draw_border(int32_t xpos, int32_t ypos, int32_t zpos, int32_t width, int32_t height);</title></rect>
<rect width="12" height="12" x="630" y="210" class="known"><title>void __cdecl T_DrawThisText(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="645" y="210" class="known"><title>uint32_t __cdecl GetTextScaleH(uint32_t scale_h);</title></rect>
<rect width="12" height="12" x="660" y="210" class="known"><title>uint32_t __cdecl GetTextScaleV(uint32_t scale_v);</title></rect>
<rect width="12" height="12" x="360" y="210" class="decompiled"><title>void __cdecl Text_Init(void);</title></rect>
<rect width="12" height="12" x="375" y="210" class="known"><title>TEXTSTRING *__cdecl Text_Create(int32_t x, int32_t y, int32_t z, const char *string);</title></rect>
<rect width="12" height="12" x="390" y="210" class="known"><title>void __cdecl Text_ChangeText(struct TEXTSTRING *textstring, const char *string);</title></rect>
<rect width="12" height="12" x="405" y="210" class="known"><title>void __cdecl Text_SetScale(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scale_v);</title></rect>
<rect width="12" height="12" x="420" y="210" class="known"><title>void __cdecl Text_Flash(struct TEXTSTRING *textstring, int16_t enable, int16_t rate);</title></rect>
<rect width="12" height="12" x="435" y="210" class="known"><title>void __cdecl Text_AddBackground(struct TEXTSTRING *textstring, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t colour, uint16_t *gour_ptr, uint16_t flags);</title></rect>
<rect width="12" height="12" x="450" y="210" class="known"><title>void __cdecl Text_RemoveBackground(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="465" y="210" class="known"><title>void __cdecl Text_AddOutline(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gour_ptr, uint16_t flags);</title></rect>
<rect width="12" height="12" x="480" y="210" class="known"><title>void __cdecl Text_RemoveOutline(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="495" y="210" class="known"><title>void __cdecl Text_CentreH(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="510" y="210" class="known"><title>void __cdecl Text_CentreV(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="525" y="210" class="known"><title>void __cdecl Text_AlignRight(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="540" y="210" class="known"><title>void __cdecl Text_AlignBottom(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="12" height="12" x="555" y="210" class="known"><title>int32_t __cdecl Text_GetWidth(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="570" y="210" class="known"><title>int32_t __cdecl Text_Remove(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="585" y="210" class="known"><title>int16_t __cdecl Text_GetStringLength(const char *string);</title></rect>
<rect width="12" height="12" x="600" y="210" class="known"><title>void __cdecl Text_Draw(void);</title></rect>
<rect width="12" height="12" x="615" y="210" class="known"><title>void __cdecl Text_DrawBorder(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height);</title></rect>
<rect width="12" height="12" x="630" y="210" class="known"><title>void __cdecl T_DrawText(struct TEXTSTRING *textstring);</title></rect>
<rect width="12" height="12" x="645" y="210" class="known"><title>uint32_t __cdecl Text_GetScaleH(uint32_t scale_h);</title></rect>
<rect width="12" height="12" x="660" y="210" class="known"><title>uint32_t __cdecl Text_GetScaleV(uint32_t scale_v);</title></rect>
<rect width="12" height="12" x="675" y="210" class="known"><title>void __cdecl MineControl(int16_t mine_num);</title></rect>
<rect width="12" height="12" x="690" y="210" class="known"><title>void __cdecl ControlSpikeWall(int16_t item_num);</title></rect>
<rect width="12" height="12" x="705" y="210" class="known"><title>void __cdecl ControlCeilingSpikes(int16_t item_num);</title></rect>
@ -944,7 +944,7 @@
<rect width="12" height="12" x="210" y="255" class="known"><title>bool __cdecl DInputCreate(void);</title></rect>
<rect width="12" height="12" x="225" y="255" class="known"><title>void __cdecl DInputRelease(void);</title></rect>
<rect width="12" height="12" x="240" y="255" class="known"><title>void __cdecl WinInReadKeyboard(LPVOID lpInputData);</title></rect>
<rect width="12" height="12" x="255" y="255" class="known"><title>DWORD __cdecl WinInReadJoystick(int32_t *xPos, int32_t *yPos);</title></rect>
<rect width="12" height="12" x="255" y="255" class="known"><title>DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);</title></rect>
<rect width="12" height="12" x="270" y="255" class="todo"><title>sub_4473A0</title></rect>
<rect width="12" height="12" x="285" y="255" class="known"><title>bool __cdecl WinInputInit(void);</title></rect>
<rect width="12" height="12" x="300" y="255" class="known"><title>bool __cdecl DInputEnumDevices(JOYSTICK_LIST *joystickList);</title></rect>
@ -1281,10 +1281,10 @@
</g>
<g transform="translate(0 531)">
<text x="0" y="7.50">Tomb2.exe progress according to the function sizes:</text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">20.28%</tspan> · <tspan class="known">79.39%</tspan> · <tspan class="todo">0.02%</tspan> · <tspan class="unused">0.31%</tspan></tspan></text>
<text class="todo" style="font-size: 12px; " x="747" y="9"><tspan text-anchor="end"><tspan class="decompiled">20.29%</tspan> · <tspan class="known">79.38%</tspan> · <tspan class="todo">0.02%</tspan> · <tspan class="unused">0.31%</tspan></tspan></text>
<g transform="translate(0 20)">
<rect width="151.47" height="6" x="0" y="0" class="decompiled"/>
<rect width="593.07" height="6" x="151.47" y="0" class="known"/>
<rect width="151.56" height="6" x="0" y="0" class="decompiled"/>
<rect width="592.97" height="6" x="151.56" y="0" class="known"/>
<rect width="0.13" height="6" x="744.53" y="0" class="todo"/>
<rect width="2.33" height="6" x="744.67" y="0" class="unused"/>
</g>
@ -1356,7 +1356,7 @@
<rect width="25.71" height="24.71" x="234.83" y="171.67" class="known"><title>void __cdecl InitialiseDoor(int16_t item_num);</title></rect>
<rect width="25.71" height="24.42" x="234.83" y="199.38" class="known"><title>int32_t __cdecl Collide_CollideStaticObjects(struct COLL_INFO *coll, int32_t x, int32_t y, int32_t z, int16_t room_num, int32_t hite);</title></rect>
<rect width="25.71" height="24.42" x="234.83" y="226.80" class="known"><title>void __cdecl Room_Clip(struct ROOM_INFO *r);</title></rect>
<rect width="25.71" height="24.42" x="234.83" y="254.23" class="known"><title>void __cdecl T_DrawThisText(struct TEXTSTRING *textstring);</title></rect>
<rect width="25.71" height="24.42" x="234.83" y="254.23" class="known"><title>void __cdecl T_DrawText(struct TEXTSTRING *textstring);</title></rect>
<rect width="25.71" height="24.40" x="234.83" y="281.65" class="decompiled"><title>const int16_t *__cdecl Output_InsertObjectG4(const int16_t *obj_ptr, int32_t num, enum SORT_TYPE sort_type);</title></rect>
<rect width="25.71" height="24.20" x="234.83" y="309.05" class="known"><title>void __cdecl Worker1Control(int16_t item_num);</title></rect>
<rect width="25.71" height="23.75" x="234.83" y="336.25" class="known"><title>void __cdecl WarriorControl(int16_t item_num);</title></rect>
@ -1523,7 +1523,7 @@
<rect width="14.46" height="15.44" x="427.43" y="77.13" class="known"><title>void __cdecl PropellerControl(int16_t item_num);</title></rect>
<rect width="14.46" height="15.35" x="427.43" y="95.58" class="decompiled"><title>void __cdecl Camera_Combat(const struct ITEM_INFO *item);</title></rect>
<rect width="14.46" height="15.26" x="427.43" y="113.93" class="known"><title>void __cdecl PistolHandler(int32_t weapon_type);</title></rect>
<rect width="14.46" height="15.12" x="427.43" y="132.18" class="known"><title>void __cdecl T_draw_border(int32_t xpos, int32_t ypos, int32_t zpos, int32_t width, int32_t height);</title></rect>
<rect width="14.46" height="15.12" x="427.43" y="132.18" class="known"><title>void __cdecl Text_DrawBorder(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height);</title></rect>
<rect width="14.46" height="15.07" x="427.43" y="150.31" class="known"><title>BOOL __cdecl LoadTexturePages(HANDLE hFile);</title></rect>
<rect width="14.46" height="15.07" x="427.43" y="168.38" class="known"><title>BOOL __cdecl LoadDepthQ(HANDLE hFile);</title></rect>
<rect width="14.46" height="15.03" x="427.43" y="186.45" class="known"><title>int32_t __cdecl Boat_UserControl(struct ITEM_INFO *boat);</title></rect>
@ -1633,12 +1633,12 @@
<rect width="11.39" height="11.88" x="579.45" y="90.80" class="known"><title>void __cdecl InitColours(void);</title></rect>
<rect width="11.39" height="11.88" x="593.85" y="90.80" class="known"><title>void __cdecl Pendulum(int16_t item_num);</title></rect>
<rect width="11.34" height="11.88" x="608.24" y="90.80" class="known"><title>void __cdecl KillerStatueControl(int16_t item_num);</title></rect>
<rect width="11.23" height="11.88" x="622.58" y="90.80" class="known"><title>int32_t __cdecl T_GetTextWidth(struct TEXTSTRING *textstring);</title></rect>
<rect width="11.23" height="11.88" x="622.58" y="90.80" class="known"><title>int32_t __cdecl Text_GetWidth(struct TEXTSTRING *textstring);</title></rect>
<rect width="11.18" height="11.88" x="636.81" y="90.80" class="known"><title>int32_t __cdecl Diver_GetWaterSurface(int32_t x, int32_t y, int32_t z, int16_t room_num);</title></rect>
<rect width="11.18" height="11.88" x="650.98" y="90.80" class="known"><title>void __cdecl InitialiseSlot(int16_t item_num, int32_t slot);</title></rect>
<rect width="11.18" height="11.88" x="665.16" y="90.80" class="known"><title>int32_t __cdecl SkidooCheckGetOffOK(int32_t direction);</title></rect>
<rect width="11.18" height="11.88" x="679.34" y="90.80" class="known"><title>INT_PTR __stdcall SE_ControlsDlgProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);</title></rect>
<rect width="11.12" height="11.88" x="693.51" y="90.80" class="known"><title>TEXTSTRING *__cdecl T_Print(int32_t xpos, int32_t ypos, int32_t zpos, char *string);</title></rect>
<rect width="11.12" height="11.88" x="693.51" y="90.80" class="known"><title>TEXTSTRING *__cdecl Text_Create(int32_t x, int32_t y, int32_t z, const char *string);</title></rect>
<rect width="11.12" height="11.88" x="707.63" y="90.80" class="known"><title>void __cdecl FallingBlock(int16_t item_num);</title></rect>
<rect width="11.12" height="11.88" x="721.76" y="90.80" class="known"><title>void __cdecl FmvBackToGame(void);</title></rect>
<rect width="11.12" height="11.88" x="735.88" y="90.80" class="known"><title>void __cdecl S_DisplayPicture(LPCTSTR fileName, BOOL isTitle);</title></rect>
@ -1662,7 +1662,7 @@
<rect width="11.08" height="10.90" x="492.29" y="349.10" class="decompiled"><title>void __cdecl Output_InsertPolygons(const int16_t *obj_ptr, int32_t clip);</title></rect>
<rect width="10.91" height="11.07" x="506.36" y="105.68" class="known"><title>void __cdecl ControlBubble1(int16_t fx_num);</title></rect>
<rect width="10.91" height="11.07" x="520.27" y="105.68" class="known"><title>void __cdecl Lara_SurfaceCollision(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="10.91" height="11.07" x="534.18" y="105.68" class="known"><title>DWORD __cdecl WinInReadJoystick(int32_t *xPos, int32_t *yPos);</title></rect>
<rect width="10.91" height="11.07" x="534.18" y="105.68" class="known"><title>DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);</title></rect>
<rect width="10.85" height="11.07" x="548.08" y="105.68" class="known"><title>int32_t __cdecl Box_StalkBox(struct ITEM_INFO *item, struct ITEM_INFO *enemy, int16_t box_num);</title></rect>
<rect width="10.85" height="11.07" x="561.94" y="105.68" class="known"><title>void __cdecl FireShotgun(void);</title></rect>
<rect width="10.74" height="11.07" x="575.79" y="105.68" class="known"><title>void __cdecl SphereOfDoom(int16_t item_num);</title></rect>
@ -1867,7 +1867,7 @@
<rect width="7.69" height="7.62" x="566.99" y="289.17" class="known"><title>void __cdecl DetonatorControl(int16_t item_num);</title></rect>
<rect width="7.69" height="7.55" x="566.99" y="299.79" class="known"><title>const int16_t *__cdecl Output_InsertObjectGT4_Sorted(const int16_t *obj_ptr, int32_t num, enum SORT_TYPE sort_type);</title></rect>
<rect width="7.69" height="7.55" x="566.99" y="310.34" class="known"><title>int32_t __cdecl ItemNearLara(struct PHD_3DPOS *pos, int32_t distance);</title></rect>
<rect width="7.69" height="7.55" x="566.99" y="320.89" class="known"><title>void __cdecl T_AddBackground(struct TEXTSTRING *textstring, int16_t xsize, int16_t ysize, int16_t xoff, int16_t yoff, int16_t zoff, int16_t colour, uint16_t *gourptr, uint16_t flags);</title></rect>
<rect width="7.69" height="7.55" x="566.99" y="320.89" class="known"><title>void __cdecl Text_AddBackground(struct TEXTSTRING *textstring, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t colour, uint16_t *gour_ptr, uint16_t flags);</title></rect>
<rect width="7.69" height="7.55" x="566.99" y="331.43" class="unused"><title>sub_444B20</title></rect>
<rect width="7.69" height="7.55" x="566.99" y="341.98" class="known"><title>bool __cdecl WinVidGetDisplayMode(DISPLAY_MODE *dispMode);</title></rect>
<rect width="7.69" height="7.47" x="566.99" y="352.53" class="known"><title>int32_t __cdecl Box_BadFloor(int32_t x, int32_t y, int32_t z, int32_t box_height, int32_t next_height, int16_t room_num, struct LOT_INFO *lot);</title></rect>
@ -2176,7 +2176,7 @@
<rect width="3.91" height="3.64" x="654.81" y="343.08" class="known"><title>int16_t __cdecl CreateItem(void);</title></rect>
<rect width="3.91" height="3.64" x="654.81" y="349.72" class="decompiled"><title>void __cdecl Lara_State_SwitchOn(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="3.91" height="3.64" x="654.81" y="356.36" class="known"><title>void __cdecl SwitchControl(int16_t item_num);</title></rect>
<rect width="3.88" height="3.67" x="661.72" y="268.30" class="known"><title>uint32_t __cdecl GetTextScaleV(uint32_t scale_v);</title></rect>
<rect width="3.88" height="3.67" x="661.72" y="268.30" class="known"><title>uint32_t __cdecl Text_GetScaleV(uint32_t scale_v);</title></rect>
<rect width="3.88" height="3.67" x="668.60" y="268.30" class="unused"><title>sub_447170</title></rect>
<rect width="3.88" height="3.67" x="675.49" y="268.30" class="known"><title>void __cdecl TempVideoRemove(void);</title></rect>
<rect width="3.88" height="3.67" x="682.37" y="268.30" class="unused"><title>sub_447B40</title></rect>
@ -2189,8 +2189,8 @@
<rect width="3.64" height="3.67" x="730.07" y="268.30" class="known"><title>void __cdecl Item_ShiftCol(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="3.64" height="3.67" x="736.72" y="268.30" class="known"><title>int32_t __cdecl Game_DrawCinematic(void);</title></rect>
<rect width="3.64" height="3.67" x="743.36" y="268.30" class="known"><title>int32_t __cdecl Game_Draw(void);</title></rect>
<rect width="3.47" height="3.84" x="661.72" y="274.97" class="known"><title>void __cdecl T_ChangeText(struct TEXTSTRING *textstring, char *string);</title></rect>
<rect width="3.47" height="3.84" x="661.72" y="281.80" class="known"><title>uint32_t __cdecl GetTextScaleH(uint32_t scale_h);</title></rect>
<rect width="3.47" height="3.84" x="661.72" y="274.97" class="known"><title>void __cdecl Text_ChangeText(struct TEXTSTRING *textstring, const char *string);</title></rect>
<rect width="3.47" height="3.84" x="661.72" y="281.80" class="known"><title>uint32_t __cdecl Text_GetScaleH(uint32_t scale_h);</title></rect>
<rect width="3.47" height="3.84" x="661.72" y="288.64" class="known"><title>bool __cdecl D3DIsSupported(LPD3DDEVICEDESC desc);</title></rect>
<rect width="3.47" height="3.84" x="661.72" y="295.48" class="known"><title>void __cdecl S_InitialiseScreen(GF_LEVEL_TYPE levelType);</title></rect>
<rect width="3.47" height="3.84" x="661.72" y="302.32" class="known"><title>LONG __cdecl SetRegistryBinaryValue(LPCTSTR lpValueName, LPBYTE value, DWORD valueSize);</title></rect>
@ -2278,13 +2278,13 @@
<rect width="2.75" height="3.16" x="692.84" y="294.35" class="decompiled"><title>void __cdecl Lara_State_Fallback(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="2.75" height="3.16" x="698.60" y="294.35" class="known"><title>void __cdecl InitialiseMovingBlock(int16_t item_num);</title></rect>
<rect width="2.75" height="3.16" x="704.35" y="294.35" class="known"><title>void __cdecl DrawBridgeCollision(int16_t item_num, struct ITEM_INFO *laraitem, struct COLL_INFO *coll);</title></rect>
<rect width="2.75" height="3.16" x="710.11" y="294.35" class="known"><title>void __cdecl T_InitPrint(void);</title></rect>
<rect width="2.75" height="3.16" x="710.11" y="294.35" class="decompiled"><title>void __cdecl Text_Init(void);</title></rect>
<rect width="2.75" height="3.16" x="715.86" y="294.35" class="decompiled"><title>void __cdecl S_Audio_Sample_AdjustTrackVolumeAndPan(int32_t track_id, int32_t volume, int32_t pan);</title></rect>
<rect width="2.75" height="3.16" x="721.62" y="294.35" class="known"><title>LPTSTR __cdecl UT_FindArg(LPCTSTR str);</title></rect>
<rect width="2.75" height="3.16" x="727.37" y="294.35" class="decompiled"><title>uint32_t __fastcall Math_Sqrt(uint32_t n);</title></rect>
<rect width="2.62" height="3.16" x="733.13" y="294.35" class="decompiled"><title>void __cdecl Lara_State_Slide(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="2.62" height="3.16" x="738.75" y="294.35" class="known"><title>void __cdecl undraw_shotgun_meshes(int32_t weapon_type);</title></rect>
<rect width="2.62" height="3.16" x="744.38" y="294.35" class="known"><title>void __cdecl T_FlashText(struct TEXTSTRING *textstring, int16_t enable, int16_t rate);</title></rect>
<rect width="2.62" height="3.16" x="744.38" y="294.35" class="known"><title>void __cdecl Text_Flash(struct TEXTSTRING *textstring, int16_t enable, int16_t rate);</title></rect>
<rect width="2.94" height="2.83" x="687.09" y="300.51" class="known"><title>DWORD __cdecl GetZBufferDepth(void);</title></rect>
<rect width="2.94" height="2.83" x="687.09" y="306.34" class="known"><title>void __cdecl HWR_ResetColorKey(void);</title></rect>
<rect width="2.94" height="2.69" x="687.09" y="312.17" class="known"><title>void __cdecl Output_InsertPolygons_I(int16_t *ptr, int32_t clip);</title></rect>
@ -2293,7 +2293,7 @@
<rect width="2.94" height="2.69" x="687.09" y="329.25" class="known"><title>void __cdecl S_UnloadLevelFile(void);</title></rect>
<rect width="2.94" height="2.69" x="687.09" y="334.94" class="decompiled"><title>int32_t __cdecl S_Audio_Sample_CalculateSampleVolume(int32_t volume);</title></rect>
<rect width="2.94" height="2.69" x="687.09" y="340.63" class="known"><title>LONG __cdecl SetRegistryBoolValue(LPCTSTR lpValueName, bool value);</title></rect>
<rect width="2.94" height="2.56" x="687.09" y="346.33" class="known"><title>void __cdecl T_AddOutline(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gourptr, uint16_t flags);</title></rect>
<rect width="2.94" height="2.56" x="687.09" y="346.33" class="known"><title>void __cdecl Text_AddOutline(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gour_ptr, uint16_t flags);</title></rect>
<rect width="2.94" height="2.56" x="687.09" y="351.88" class="known"><title>void __cdecl DInputKeyboardRelease(void);</title></rect>
<rect width="2.94" height="2.56" x="687.09" y="357.44" class="known"><title>void __cdecl HWR_ResetTexSource(void);</title></rect>
<rect width="2.86" height="2.50" x="693.03" y="300.51" class="known"><title>void __cdecl MakeAmmoString(char *string);</title></rect>
@ -2301,7 +2301,7 @@
<rect width="2.71" height="2.50" x="704.74" y="300.51" class="decompiled"><title>void __cdecl Matrix_Push_I(void);</title></rect>
<rect width="2.71" height="2.50" x="710.46" y="300.51" class="decompiled"><title>void __cdecl Lara_State_PPReady(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="2.71" height="2.50" x="716.17" y="300.51" class="known"><title>void __cdecl InitialiseLevelFlags(void);</title></rect>
<rect width="2.71" height="2.50" x="721.88" y="300.51" class="known"><title>void __cdecl T_DrawText(void);</title></rect>
<rect width="2.71" height="2.50" x="721.88" y="300.51" class="known"><title>void __cdecl Text_Draw(void);</title></rect>
<rect width="2.71" height="2.50" x="727.59" y="300.51" class="known"><title>void __cdecl S_FadeOutInventory(BOOL isFade);</title></rect>
<rect width="2.57" height="2.50" x="733.30" y="300.51" class="known"><title>void __cdecl Inv_RingMotionRadius(struct RING_INFO *ring, int16_t target);</title></rect>
<rect width="2.57" height="2.50" x="738.87" y="300.51" class="known"><title>LPCTSTR __cdecl GetFullPath(LPCTSTR fileName);</title></rect>
@ -2310,7 +2310,7 @@
<rect width="2.84" height="2.24" x="698.86" y="306.01" class="known"><title>void __cdecl FreeTexturePages(void);</title></rect>
<rect width="2.84" height="2.24" x="704.70" y="306.01" class="known"><title>void __cdecl SE_PassMessageToImage(HWND hWnd, UINT uMsg, WPARAM wParam);</title></rect>
<rect width="2.68" height="2.24" x="710.53" y="306.01" class="known"><title>void __cdecl Inv_RingMotionCameraPos(struct RING_INFO *ring, int16_t target);</title></rect>
<rect width="2.68" height="2.24" x="716.22" y="306.01" class="known"><title>int32_t __cdecl T_RemovePrint(struct TEXTSTRING *textstring);</title></rect>
<rect width="2.68" height="2.24" x="716.22" y="306.01" class="known"><title>int32_t __cdecl Text_Remove(struct TEXTSTRING *textstring);</title></rect>
<rect width="2.68" height="2.24" x="721.90" y="306.01" class="known"><title>HRESULT __cdecl WinVidBufferUnlock(LPDDS surface, LPDDSDESC desc);</title></rect>
<rect width="2.68" height="2.24" x="727.58" y="306.01" class="known"><title>LPDIRECT3DTEXTURE2 __cdecl Create3DTexture(LPDDS surface);</title></rect>
<rect width="2.68" height="2.24" x="733.26" y="306.01" class="known"><title>HRESULT __cdecl EnumerateTextureFormats(void);</title></rect>
@ -2318,7 +2318,7 @@
<rect width="2.53" height="2.24" x="744.47" y="306.01" class="known"><title>void __cdecl AssaultStart(struct ITEM_INFO *item);</title></rect>
<rect width="2.52" height="2.25" x="693.03" y="311.25" class="known"><title>void __cdecl RemoveInventoryText(void);</title></rect>
<rect width="2.52" height="2.25" x="693.03" y="316.50" class="known"><title>void __cdecl Sound_Shutdown(void);</title></rect>
<rect width="2.52" height="2.25" x="693.03" y="321.75" class="known"><title>int16_t __cdecl T_GetStringLen(char *string);</title></rect>
<rect width="2.52" height="2.25" x="693.03" y="321.75" class="known"><title>int16_t __cdecl Text_GetStringLength(const char *string);</title></rect>
<rect width="2.52" height="2.25" x="693.03" y="326.99" class="known"><title>bool __cdecl DInputEnumDevices(JOYSTICK_LIST *joystickList);</title></rect>
<rect width="2.52" height="2.25" x="693.03" y="332.24" class="known"><title>void __cdecl HWR_TexSource(HWR_TEXHANDLE texSource);</title></rect>
<rect width="2.52" height="2.10" x="693.03" y="337.49" class="known"><title>void __cdecl RubbleFX(struct ITEM_INFO *item);</title></rect>
@ -2353,10 +2353,10 @@
<rect width="2.05" height="1.78" x="729.79" y="316.68" class="decompiled"><title>void __cdecl Lara_Col_Slide(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="2.05" height="1.78" x="734.85" y="316.68" class="decompiled"><title>void __cdecl Lara_State_ClimbEnd(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="2.05" height="1.78" x="739.90" y="316.68" class="decompiled"><title>void __cdecl Lara_Col_SurfTread(struct ITEM_INFO *item, struct COLL_INFO *coll);</title></rect>
<rect width="2.05" height="1.78" x="744.95" y="316.68" class="known"><title>void __cdecl T_CentreH(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="321.46" class="known"><title>void __cdecl T_CentreV(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="326.68" class="known"><title>void __cdecl T_RightAlign(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="331.89" class="known"><title>void __cdecl T_BottomAlign(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="2.05" height="1.78" x="744.95" y="316.68" class="known"><title>void __cdecl Text_CentreH(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="321.46" class="known"><title>void __cdecl Text_CentreV(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="326.68" class="known"><title>void __cdecl Text_AlignRight(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="331.89" class="known"><title>void __cdecl Text_AlignBottom(struct TEXTSTRING *textstring, int16_t enable);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="337.10" class="known"><title>int32_t __cdecl Random_GetControl(void);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="342.32" class="known"><title>int32_t __cdecl GetRandomDraw(void);</title></rect>
<rect width="1.63" height="2.21" x="703.70" y="347.53" class="known"><title>LONG __cdecl SetRegistryDwordValue(LPCTSTR lpValueName, DWORD value);</title></rect>
@ -2398,7 +2398,7 @@
<rect width="1.72" height="1.09" x="722.45" y="330.47" class="known"><title>BOOL __cdecl S_LoadLevelFile(LPCTSTR fileName, int32_t levelID, GF_LEVEL_TYPE levelType);</title></rect>
<rect width="1.72" height="1.09" x="727.17" y="330.47" class="known"><title>int32_t __cdecl UT_MessageBox(LPCTSTR lpText, HWND hWnd);</title></rect>
<rect width="1.53" height="1.09" x="731.90" y="330.47" class="known"><title>void __cdecl AssaultReset(struct ITEM_INFO *item);</title></rect>
<rect width="1.53" height="1.09" x="736.42" y="330.47" class="known"><title>void __cdecl T_SetScale(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scaleV);</title></rect>
<rect width="1.53" height="1.09" x="736.42" y="330.47" class="known"><title>void __cdecl Text_SetScale(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scale_v);</title></rect>
<rect width="1.53" height="1.09" x="740.95" y="330.47" class="known"><title>void __cdecl WinInRunControlPanel(HWND hWnd);</title></rect>
<rect width="1.53" height="1.09" x="745.47" y="330.47" class="todo"><title>sub_44E860</title></rect>
<rect width="1.39" height="1.22" x="717.73" y="334.56" class="known"><title>void __cdecl SE_GraphicsAdapterSet(HWND hwndDlg, DISPLAY_ADAPTER_NODE *adapter);</title></rect>
@ -2436,8 +2436,8 @@
<rect width="0.45" height="0.96" x="733.14" y="342.47" class="known"><title>HWND __cdecl WinVidFindGameWindow(void);</title></rect>
<rect width="0.45" height="0.96" x="736.60" y="342.47" class="known"><title>void __cdecl GameBuf_Shutdown(void);</title></rect>
<rect width="0.45" height="0.96" x="740.05" y="342.47" class="known"><title>HWND __cdecl SE_FindSetupDialog(void);</title></rect>
<rect width="0.25" height="0.96" x="743.50" y="342.47" class="known"><title>void __cdecl T_RemoveBackground(struct TEXTSTRING *textstring);</title></rect>
<rect width="0.25" height="0.96" x="746.75" y="342.47" class="known"><title>void __cdecl T_RemoveOutline(struct TEXTSTRING *textstring);</title></rect>
<rect width="0.25" height="0.96" x="743.50" y="342.47" class="known"><title>void __cdecl Text_RemoveBackground(struct TEXTSTRING *textstring);</title></rect>
<rect width="0.25" height="0.96" x="746.75" y="342.47" class="known"><title>void __cdecl Text_RemoveOutline(struct TEXTSTRING *textstring);</title></rect>
<rect width="0.74" height="0.44" x="729.49" y="346.44" class="todo"><title>sub_44E880</title></rect>
<rect width="0.74" height="0.44" x="729.49" y="349.88" class="known"><title>void __cdecl ScreenPartialDump(void);</title></rect>
<rect width="0.74" height="0.23" x="729.49" y="353.32" class="known"><title>void __cdecl WinInFinish(void);</title></rect>

Before

Width:  |  Height:  |  Size: 360 KiB

After

Width:  |  Height:  |  Size: 361 KiB

View File

@ -257,28 +257,40 @@ typedef struct __unaligned SPHERE {
} SPHERE;
typedef struct __unaligned TEXTSTRING {
uint32_t flags;
union {
uint32_t all;
} flags;
uint16_t text_flags;
uint16_t bgnd_flags;
uint16_t outl_flags;
int16_t xpos;
int16_t ypos;
int16_t zpos;
struct {
int16_t x;
int16_t y;
int16_t z;
} pos;
int16_t letter_spacing;
int16_t word_spacing;
int16_t flash_rate;
int16_t flash_count;
struct {
int16_t rate;
int16_t count;
} flash;
int16_t bgnd_colour;
uint16_t *bgnd_gour;
int16_t outl_colour;
uint16_t *outl_gour;
int16_t bgnd_size_x;
int16_t bgnd_size_y;
int16_t bgnd_off_x;
int16_t bgnd_off_y;
int16_t bgnd_off_z;
int32_t scale_h;
int32_t scale_v;
struct {
int16_t x;
int16_t y;
} bgnd_size;
struct {
int16_t x;
int16_t y;
int16_t z;
} bgnd_off;
struct {
int32_t h;
int32_t v;
} scale;
char *string;
} TEXTSTRING;
@ -1963,27 +1975,27 @@ typedef enum LARA_MESH {
00440290 000001A5 -R void __cdecl BigSpiderControl(int16_t item_num);
# game/text.c
00440450 0000002C -R void __cdecl T_InitPrint(void);
00440480 00000105 -R TEXTSTRING *__cdecl T_Print(int32_t xpos, int32_t ypos, int32_t zpos, char *string);
00440590 00000037 -R void __cdecl T_ChangeText(struct TEXTSTRING *textstring, char *string);
004405D0 00000017 -R void __cdecl T_SetScale(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scaleV);
004405F0 0000002B -R void __cdecl T_FlashText(struct TEXTSTRING *textstring, int16_t enable, int16_t rate);
00440620 0000008C -R void __cdecl T_AddBackground(struct TEXTSTRING *textstring, int16_t xsize, int16_t ysize, int16_t xoff, int16_t yoff, int16_t zoff, int16_t colour, uint16_t *gourptr, uint16_t flags);
004406B0 00000010 -R void __cdecl T_RemoveBackground(struct TEXTSTRING *textstring);
004406C0 00000029 -R void __cdecl T_AddOutline(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gourptr, uint16_t flags);
004406F0 00000010 -R void __cdecl T_RemoveOutline(struct TEXTSTRING *textstring);
00440700 0000001E -R void __cdecl T_CentreH(struct TEXTSTRING *textstring, int16_t enable);
00440720 0000001E -R void __cdecl T_CentreV(struct TEXTSTRING *textstring, int16_t enable);
00440740 0000001E -R void __cdecl T_RightAlign(struct TEXTSTRING *textstring, int16_t enable);
00440760 0000001E -R void __cdecl T_BottomAlign(struct TEXTSTRING *textstring, int16_t enable);
00440780 00000107 -R int32_t __cdecl T_GetTextWidth(struct TEXTSTRING *textstring);
00440890 00000025 -R int32_t __cdecl T_RemovePrint(struct TEXTSTRING *textstring);
004408C0 00000024 -R int16_t __cdecl T_GetStringLen(char *string);
004408F0 00000027 -R void __cdecl T_DrawText(void);
00440920 00000189 -R void __cdecl T_draw_border(int32_t xpos, int32_t ypos, int32_t zpos, int32_t width, int32_t height);
00440AB0 000003D2 -R void __cdecl T_DrawThisText(struct TEXTSTRING *textstring);
00440E90 00000037 -R uint32_t __cdecl GetTextScaleH(uint32_t scale_h);
00440ED0 00000039 -R uint32_t __cdecl GetTextScaleV(uint32_t scale_v);
00440450 0000002C + void __cdecl Text_Init(void);
00440480 00000105 - TEXTSTRING *__cdecl Text_Create(int32_t x, int32_t y, int32_t z, const char *string);
00440590 00000037 - void __cdecl Text_ChangeText(struct TEXTSTRING *textstring, const char *string);
004405D0 00000017 - void __cdecl Text_SetScale(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scale_v);
004405F0 0000002B - void __cdecl Text_Flash(struct TEXTSTRING *textstring, int16_t enable, int16_t rate);
00440620 0000008C - void __cdecl Text_AddBackground(struct TEXTSTRING *textstring, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t colour, uint16_t *gour_ptr, uint16_t flags);
004406B0 00000010 - void __cdecl Text_RemoveBackground(struct TEXTSTRING *textstring);
004406C0 00000029 - void __cdecl Text_AddOutline(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gour_ptr, uint16_t flags);
004406F0 00000010 - void __cdecl Text_RemoveOutline(struct TEXTSTRING *textstring);
00440700 0000001E - void __cdecl Text_CentreH(struct TEXTSTRING *textstring, int16_t enable);
00440720 0000001E - void __cdecl Text_CentreV(struct TEXTSTRING *textstring, int16_t enable);
00440740 0000001E - void __cdecl Text_AlignRight(struct TEXTSTRING *textstring, int16_t enable);
00440760 0000001E - void __cdecl Text_AlignBottom(struct TEXTSTRING *textstring, int16_t enable);
00440780 00000107 - int32_t __cdecl Text_GetWidth(struct TEXTSTRING *textstring);
00440890 00000025 - int32_t __cdecl Text_Remove(struct TEXTSTRING *textstring);
004408C0 00000024 -R int16_t __cdecl Text_GetStringLength(const char *string);
004408F0 00000027 - void __cdecl Text_Draw(void);
00440920 00000189 - void __cdecl Text_DrawBorder(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height);
00440AB0 000003D2 - void __cdecl T_DrawText(struct TEXTSTRING *textstring);
00440E90 00000037 -R uint32_t __cdecl Text_GetScaleH(uint32_t scale_h);
00440ED0 00000039 -R uint32_t __cdecl Text_GetScaleV(uint32_t scale_v);
# game/traps.c
00440F10 000001F4 -R void __cdecl MineControl(int16_t mine_num);
@ -2111,7 +2123,7 @@ typedef enum LARA_MESH {
004471F0 00000022 -R bool __cdecl DInputCreate(void);
00447220 0000001A -R void __cdecl DInputRelease(void);
00447240 0000005A -R void __cdecl WinInReadKeyboard(LPVOID lpInputData);
004472A0 000000F3 -R DWORD __cdecl WinInReadJoystick(int32_t *xPos, int32_t *yPos);
004472A0 000000F3 -R DWORD __cdecl WinInReadJoystick(int32_t *x, int32_t *y);
004473A0 00000005 -R sub_4473A0
004473B0 0000007F -R bool __cdecl WinInputInit(void);
00447430 00000024 -R bool __cdecl DInputEnumDevices(JOYSTICK_LIST *joystickList);
@ -2539,6 +2551,7 @@ typedef enum LARA_MESH {
004D7380 - PALETTEENTRY g_GamePalette16[256];
004D7780 - int32_t g_CineFrameCurrent;
004D778C - int32_t g_IsChunkyCamera;
004D77A0 - int32_t g_LOSNumRooms = 0;
004D7C80 - int32_t g_SoundTrackIds[128];
004D7F10 - HWND g_GameWindowHandle;
004D8378 - uint8_t g_IsGameToExit;
@ -2566,6 +2579,7 @@ typedef enum LARA_MESH {
0051BDA8 - int32_t g_MasterVolume;
0051BDAC - MCIDEVICEID g_MciDeviceID;
0051BDB0 - int32_t g_CD_LoopTrack;
0051C820 - struct TEXTSTRING g_TextstringTable[64];
0051E6C4 - int32_t g_SoundIsActive;
005206E0 - struct LARA_INFO g_Lara;
005207BC - struct ITEM_INFO *g_LaraItem;
@ -2581,6 +2595,7 @@ typedef enum LARA_MESH {
0052618C - struct ROOM_INFO *g_Rooms;
00526240 - int32_t g_FlipStatus;
00526288 - int16_t *g_TriggerIndex;
005262A0 - int32_t g_LOSRooms[20];
005262F0 - struct ITEM_INFO *g_Items;
005262F6 - int16_t g_NumCineFrames;
005262F8 - CINE_FRAME *g_CineData = NULL;
@ -2588,5 +2603,4 @@ typedef enum LARA_MESH {
00526314 - int16_t g_CineFrameIdx;
00526320 - struct CAMERA_INFO g_Camera;
005263CC - struct BOX_INFO *g_Boxes;
004D77A0 - int32_t g_LOSNumRooms = 0;
005262A0 - int32_t g_LOSRooms[20];
0051D6A0 - int16_t g_TextstringCount = 0;

View File

@ -89,6 +89,7 @@ dll_sources = [
'src/game/output.c',
'src/game/shell.c',
'src/game/sound.c',
'src/game/text.c',
'src/inject_exec.c',
'src/inject_util.c',
'src/lib/winmm.c',

15
src/game/text.c Normal file
View File

@ -0,0 +1,15 @@
#include "game/text.h"
#include "global/funcs.h"
#include "global/vars.h"
#define TEXT_MAX_STRINGS 64
void __cdecl Text_Init(void)
{
DisplayModeInfo(0);
for (int i = 0; i < TEXT_MAX_STRINGS; i++) {
g_TextstringTable[i].flags.all = 0;
}
g_TextstringCount = 0;
}

3
src/game/text.h Normal file
View File

@ -0,0 +1,3 @@
#pragma once
void __cdecl Text_Init(void);

View File

@ -507,27 +507,26 @@
#define SpiderLeap ((void __cdecl (*)(int16_t item_num, int16_t angle))0x0043FFC0)
#define SpiderControl ((void __cdecl (*)(int16_t item_num))0x00440070)
#define BigSpiderControl ((void __cdecl (*)(int16_t item_num))0x00440290)
#define T_InitPrint ((void __cdecl (*)(void))0x00440450)
#define T_Print ((TEXTSTRING *__cdecl (*)(int32_t xpos, int32_t ypos, int32_t zpos, char *string))0x00440480)
#define T_ChangeText ((void __cdecl (*)(struct TEXTSTRING *textstring, char *string))0x00440590)
#define T_SetScale ((void __cdecl (*)(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scaleV))0x004405D0)
#define T_FlashText ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable, int16_t rate))0x004405F0)
#define T_AddBackground ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t xsize, int16_t ysize, int16_t xoff, int16_t yoff, int16_t zoff, int16_t colour, uint16_t *gourptr, uint16_t flags))0x00440620)
#define T_RemoveBackground ((void __cdecl (*)(struct TEXTSTRING *textstring))0x004406B0)
#define T_AddOutline ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gourptr, uint16_t flags))0x004406C0)
#define T_RemoveOutline ((void __cdecl (*)(struct TEXTSTRING *textstring))0x004406F0)
#define T_CentreH ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440700)
#define T_CentreV ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440720)
#define T_RightAlign ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440740)
#define T_BottomAlign ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440760)
#define T_GetTextWidth ((int32_t __cdecl (*)(struct TEXTSTRING *textstring))0x00440780)
#define T_RemovePrint ((int32_t __cdecl (*)(struct TEXTSTRING *textstring))0x00440890)
#define T_GetStringLen ((int16_t __cdecl (*)(char *string))0x004408C0)
#define T_DrawText ((void __cdecl (*)(void))0x004408F0)
#define T_draw_border ((void __cdecl (*)(int32_t xpos, int32_t ypos, int32_t zpos, int32_t width, int32_t height))0x00440920)
#define T_DrawThisText ((void __cdecl (*)(struct TEXTSTRING *textstring))0x00440AB0)
#define GetTextScaleH ((uint32_t __cdecl (*)(uint32_t scale_h))0x00440E90)
#define GetTextScaleV ((uint32_t __cdecl (*)(uint32_t scale_v))0x00440ED0)
#define Text_Create ((TEXTSTRING *__cdecl (*)(int32_t x, int32_t y, int32_t z, const char *string))0x00440480)
#define Text_ChangeText ((void __cdecl (*)(struct TEXTSTRING *textstring, const char *string))0x00440590)
#define Text_SetScale ((void __cdecl (*)(struct TEXTSTRING *textstring, int32_t scale_h, int32_t scale_v))0x004405D0)
#define Text_Flash ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable, int16_t rate))0x004405F0)
#define Text_AddBackground ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t x_size, int16_t y_size, int16_t x_off, int16_t y_off, int16_t z_off, int16_t colour, uint16_t *gour_ptr, uint16_t flags))0x00440620)
#define Text_RemoveBackground ((void __cdecl (*)(struct TEXTSTRING *textstring))0x004406B0)
#define Text_AddOutline ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable, int16_t colour, uint16_t *gour_ptr, uint16_t flags))0x004406C0)
#define Text_RemoveOutline ((void __cdecl (*)(struct TEXTSTRING *textstring))0x004406F0)
#define Text_CentreH ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440700)
#define Text_CentreV ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440720)
#define Text_AlignRight ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440740)
#define Text_AlignBottom ((void __cdecl (*)(struct TEXTSTRING *textstring, int16_t enable))0x00440760)
#define Text_GetWidth ((int32_t __cdecl (*)(struct TEXTSTRING *textstring))0x00440780)
#define Text_Remove ((int32_t __cdecl (*)(struct TEXTSTRING *textstring))0x00440890)
#define Text_GetStringLength ((int16_t __cdecl (*)(const char *string))0x004408C0)
#define Text_Draw ((void __cdecl (*)(void))0x004408F0)
#define Text_DrawBorder ((void __cdecl (*)(int32_t x, int32_t y, int32_t z, int32_t width, int32_t height))0x00440920)
#define T_DrawText ((void __cdecl (*)(struct TEXTSTRING *textstring))0x00440AB0)
#define Text_GetScaleH ((uint32_t __cdecl (*)(uint32_t scale_h))0x00440E90)
#define Text_GetScaleV ((uint32_t __cdecl (*)(uint32_t scale_v))0x00440ED0)
#define MineControl ((void __cdecl (*)(int16_t mine_num))0x00440F10)
#define ControlSpikeWall ((void __cdecl (*)(int16_t item_num))0x00441110)
#define ControlCeilingSpikes ((void __cdecl (*)(int16_t item_num))0x00441250)
@ -634,7 +633,7 @@
#define DInputCreate ((bool __cdecl (*)(void))0x004471F0)
#define DInputRelease ((void __cdecl (*)(void))0x00447220)
#define WinInReadKeyboard ((void __cdecl (*)(LPVOID lpInputData))0x00447240)
#define WinInReadJoystick ((DWORD __cdecl (*)(int32_t *xPos, int32_t *yPos))0x004472A0)
#define WinInReadJoystick ((DWORD __cdecl (*)(int32_t *x, int32_t *y))0x004472A0)
#define WinInputInit ((bool __cdecl (*)(void))0x004473B0)
#define DInputEnumDevices ((bool __cdecl (*)(JOYSTICK_LIST *joystickList))0x00447430)
#define DInputEnumDevicesCallback ((BOOL __stdcall (*)(LPCDIDEVICEINSTANCE lpddi, LPVOID pvRef))0x00447460)

View File

@ -267,28 +267,40 @@ typedef struct SPHERE {
} SPHERE;
typedef struct TEXTSTRING {
uint32_t flags;
union {
uint32_t all;
} flags;
uint16_t text_flags;
uint16_t bgnd_flags;
uint16_t outl_flags;
int16_t xpos;
int16_t ypos;
int16_t zpos;
struct {
int16_t x;
int16_t y;
int16_t z;
} pos;
int16_t letter_spacing;
int16_t word_spacing;
int16_t flash_rate;
int16_t flash_count;
struct {
int16_t rate;
int16_t count;
} flash;
int16_t bgnd_colour;
uint16_t *bgnd_gour;
int16_t outl_colour;
uint16_t *outl_gour;
int16_t bgnd_size_x;
int16_t bgnd_size_y;
int16_t bgnd_off_x;
int16_t bgnd_off_y;
int16_t bgnd_off_z;
int32_t scale_h;
int32_t scale_v;
struct {
int16_t x;
int16_t y;
} bgnd_size;
struct {
int16_t x;
int16_t y;
int16_t z;
} bgnd_off;
struct {
int32_t h;
int32_t v;
} scale;
char *string;
} TEXTSTRING;

View File

@ -119,6 +119,8 @@
#define g_MasterVolume (*(int32_t*)0x0051BDA8)
#define g_MciDeviceID (*(MCIDEVICEID*)0x0051BDAC)
#define g_CD_LoopTrack (*(int32_t*)0x0051BDB0)
#define g_TextstringTable (*(struct TEXTSTRING(*)[64])0x0051C820)
#define g_TextstringCount (*(int16_t*)0x0051D6A0) // = 0
#define g_SoundIsActive (*(int32_t*)0x0051E6C4)
#define g_Lara (*(struct LARA_INFO*)0x005206E0)
#define g_LaraItem (*(struct ITEM_INFO **)0x005207BC)

View File

@ -12,6 +12,7 @@
#include "game/output.h"
#include "game/shell.h"
#include "game/sound.h"
#include "game/text.h"
#include "inject_util.h"
#include "specific/s_audio_sample.h"
#include "specific/s_flagged_string.h"
@ -20,6 +21,7 @@ static void Inject_Camera(void);
static void Inject_Math(void);
static void Inject_Matrix(void);
static void Inject_Shell(void);
static void Inject_Text(void);
static void Inject_Output(void);
static void Inject_Music(void);
static void Inject_Sound(void);
@ -91,6 +93,11 @@ static void Inject_Shell(void)
INJECT(1, 0x0044E890, Shell_ExitSystem);
}
static void Inject_Text(void)
{
INJECT(1, 0x00440450, Text_Init);
}
static void Inject_Output(void)
{
INJECT(1, 0x004019E0, Output_InsertPolygons);
@ -355,6 +362,7 @@ void Inject_Exec(void)
Inject_Math();
Inject_Matrix();
Inject_Shell();
Inject_Text();
Inject_Output();
Inject_Music();
Inject_Sound();