59 Commits

Author SHA1 Message Date
Kawe Mazidjatari
a4a2f34c10 /W4: Fix signed/unsigned mismatch
This commit fixes warnings and bugs caused by signed/unsigned mismatch.
2023-04-02 12:09:43 +02:00
Kawe Mazidjatari
b648378574 Turn 'TxtrAssetToDxgiFormat' into constant table
Turned into an actual constant.
2023-04-02 01:40:28 +02:00
Kawe Mazidjatari
ef0e64b639 Revert back to old RTech::Decompress implementation and monolithic lookup table
Reverted as the new implementation wouldn't work properly on clang-cl (crashed on several pak files), and only worked on msvc when suppressing compiler warnings. The original implementation (raw copy/paste assembly) works perfectly on both compiler with no warning suppressors.
2023-04-02 01:22:11 +02:00
Kawe Mazidjatari
7a521d1d27 Turn static map into jump table
Slightly increase performance and reduce overhead during texture creation.
2023-04-01 11:27:53 +02:00
Kawe Mazidjatari
5762f767b5 Make RTech code compatible with older compilers
Make it compatible with older versions of the Visual Studio 2017 compiler.
2023-03-20 00:05:04 +01:00
Kawe Mazidjatari
cae5037324 Initial fix for older game builds
SDK compiles and works for the S1 game now, still needs to be debugged further.
2023-03-01 00:09:38 +01:00
Kawe Mazidjatari
e12de45eaa Light RTech code cleanup
Use dedicated function for returning pak status as string instead of std::map. reduced compiled code size by 10kb.
2023-02-26 19:43:02 +01:00
Kawe Mazidjatari
c17913bfe9 Light cleanup of pak load api var names
* Rename some pakload api vars.
* Removed 2 duplicate pointers from (g_ClientState_Shifted and g_pakLoadJobID).
* Removed unnecessary signonstate check in 'Mod_ProcessPakQueue' for dedicated.
2023-01-31 16:09:30 +01:00
Kawe Mazidjatari
a618990937 Detour code refactor
This change was planned for a long time. This moves all REGISTER calls to a single translation unit, this is required as we currently added a very dirty workaround for not registering duplicates by checking if VFTable pointer was already present in the vector... Registering from single translation unit prevents duplicate instances that gets created if header is included by more cpp files.
Reworking this reduced 100kb+ of compiled code. This commit also reworked the way functions/variables/constant gets logged with their addresses; the new code formats them on the fly, and allows for resize at any time. Formatting is no longer required by programmer.

TODO: currently there are some compile errors for dedicated and client dll's. These will be resolved very soon as they need to be properly worked out still (server & client only stuff needs to be properly split). Use the 'main' (stable) branch for the time being if you need to compile these dll's.
2023-01-25 02:26:52 +01:00
Marvin D
6177c1ebe7 Fix deadlock detection when processing relations 2022-12-22 16:48:47 +01:00
Marvin D
c3158b6937 Slight improvements.
CModule::GetSectionByName adjustments.
RTech::CreateDXTexture improvements.
2022-12-04 00:01:31 +01:00
Kawe Mazidjatari
9e7495e407 Added new logger types (AudioSystem & VideoSystem)
These loggers are to be used for hooking and logging Miles Audio and Bink Video systems.
2022-11-27 10:19:23 +01:00
Kawe Mazidjatari
8373cc70ca Rename/improve RPak structure fields
* Renamed for consistency.
* Added new structures for known fields.
2022-11-25 23:01:59 +01:00
Kawe Mazidjatari
75b5148e65 Light changes for RTech::PakProcessGuidRelationsForAsset
* Use Warning() for deadlock detection debug log.
* Use const qualifiers where possible.
* Cache rtech_debug->GetBool().
* Renamed 'RPakAssetEntry' to 'RPakAssetEntry_t'.
* Renamed 'RPakDescriptor' to 'RPakDescriptor_t'.
2022-11-01 00:44:09 +01:00
Marvin D
3ea5ec1d5e Move deadlock check. 2022-10-30 23:05:37 +01:00
Marvin D
6e42f18ed9 PakProcessGuidRelationsForAsset rebuilt
Some unknown fields are still present.
Structs and some naming credits to @r-ex
2022-10-30 20:17:50 +01:00
Kawe Mazidjatari
47beb282f2 RTech cleanup and improvements
* Combined members of TextureHeader_t and RTechTextureInfo_t.
* Renamed 's_pRTechBytesPerPixel' to 's_pBytesPerPixel' and declared const.
* Renamed 'dxgiToRPakFormat' to 's_DxgiToTxtrTable' and declared const.
* Renamed 'rpakToDxgiFormat' to 's_TxtrToDxgiTable' and declared const.
* Moved 'g_DxgiToTxtrTable' and 'g_TxtrToDxgiTable' to 'texture.g.h'.
* Moved 's_pBytesPerPixel' to 'texture.g.h'.
* Fixed defect where we used the [] operator on a std::map that should be const (s_TxtrToDxgiTable), replaced with the const version of std::map::at.
2022-10-13 21:59:06 +02:00
Kawe Mazidjatari
3d6d6644bd Logging bug fix and error handling improvements
* Replaced the boolean 'fatal' parameter with a error code parameter, anything non-null will prompt a message (fatal) and terminate the process with given error code.
* Fixed bug where the global ostreamsink for spdlog did NOT get cleared in 'SQVM_PrintFunc' when cvar 'sq_showvmoutput' was < 3. Moved to global scope.
* Added error message for when detouring the process has failed, with the error code.
* Only call 'Plat_GetProcessUpTime()' once per log, (improves performance and fixes bug where the error message box would show a different time stamp than what is logged into the console or file).
* All TIER0 loggers only log to notify and console when the SDK engine has fully initialized and detoured all functions.
2022-09-14 00:39:38 +02:00
Kawe Mazidjatari
34a06147d7 Fix spelling errors
Overall spelling improvements and cleanup..
2022-09-09 19:47:31 +02:00
Kawe Mazidjatari
23e85cae37 Use type alias for all pak handle variables
* Use type alias 'RPakHandle_t'.
* Improved debug/exception messages.
2022-08-29 17:00:50 +02:00
Kawe Mazidjatari
ca0172ed1f Add cvar for RTech debugging and removed dev flag from 'launchplaylist' 2022-08-22 21:15:46 +02:00
Marvin D
5f73413286 different print for OpenFile 2022-08-22 19:03:33 +02:00
Marvin D
3a8647b6f4 Load .starpak from /Win32/ support
* S3< not tested.
2022-08-22 14:43:06 +02:00
Kawe Mazidjatari
2010e11310 Add 'fatal' functionality to Error()
When fatal is set, the function will show a error dialogue, which will halt the process and close when the message is dismissed. Else we will end up in a crash.
2022-08-22 12:42:41 +02:00
Kawe Mazidjatari
5bc798fe97 Merge 'Sys_LoadAssetHelper' with 'RTech::OpenFile' and rehook.
Removed clashing hook and merged logic into RTech::OpenFile, and re-enabled hook.
2022-08-18 12:34:33 +02:00
Kawe Mazidjatari
5548a74d59 Major cleanup (see description)
* Fix all compiler error for GameSDK on S0 and S1.
* Remove some unused patterns and globals (launch performance gains of 100ms).
* Remove most duplicate patterns.
* Relocate globals from engine to a more appropriate location.
* Renamed some unknown vars to a more appropriate name (most of these where obtained a while back, but as we reversed more parts of the engine, some of these vars become known).
* Renamed some vars to fit the naming convention used in the SDK.
* Fixed pattern debug logging using the wrong pointer, thus displaying the wrong address.
2022-08-18 02:15:23 +02:00
Kawe Mazidjatari
8bf6dac3d8 Code improvements
* Use GetVirtualMethodTable for VFTable pointers.
* Pack CClientState to 4 bytes (this aligns it properly in memory).
* Use CClientState members directly for setting m_bRestrictServerCommands/m_bRestrictClientCommands.
2022-08-15 22:29:16 +02:00
Kawe Mazidjatari
88b3336758 Many small code improvements and optimizations
* Use c++ methods as much as possible.
* Use enum types for accessing NavMesh objects from array.
* Use size_t for for loops when testing against size types.
* Don't compute strlen twice of more on the same string.
* Don't use unnecessary c string casts if there is a method with a std::string overload.
* Don't create string objects from string pointers if we could use them directly.
* Don't initialize RCON password twice on each change, and don't set if the new password equals the old.
2022-08-11 11:07:45 +02:00
Kawe Mazidjatari
0c583d7522 Temporary fix for rpaks not loading from override dir 2022-08-06 22:17:47 +02:00
PixieCore
946da4b2cc Fix variable names in RTech::OpenFile 2022-08-06 00:20:49 +02:00
PixieCore
1cd0ae5c87 General code cleanup, Rebuild and hooked RTech::OpenFile
* RTech std namespace removal
* RTech::OpenFile Rebuild.
* FileHandleTracker_t fully reversed, grabbing m_FileHandles from memory now.
* RTech::FindFreeSlotInFiles needs more research.
*
2022-08-06 00:16:11 +02:00
rexx
2e3b4205c0 remove streamoverlay hook 2022-07-21 17:05:19 +01:00
rexx
cb4e422724 reimplement stream overlay drawing 2022-07-20 22:50:55 +01:00
PixieCore
8aa71d6676 RTech::CreateDXTexture cleanup. 2022-07-20 14:54:59 +02:00
PixieCore
f57da25341 RTech changes.
* Added RPakAssetBinding_t.
* Added RPakUnknownStruct_t
* PatternScan the global RPakUnknownStruct_t.
* Renamed Members of CMaterialGlue
* RTechTextureInfo_t now has another unknown member named.
2022-07-20 11:27:42 +02:00
PixieCore
2be140f09d Update rtech_utils.cpp 2022-07-10 13:24:48 +02:00
PixieCore
afc312d86d Removed s_pBitsPerPixelWord and implemented it properly. 2022-07-10 13:11:48 +02:00
PixieCore
0eec5c6361 Updated RTech.
* Further cleanup of RTech::CreateDXTexture.
* New field in RTechTextureInfo_t which counts the total streamed mips.
* Added a few comments.
2022-07-09 10:41:02 +02:00
Kawe Mazidjatari
59eeec656a Guard RTech::CreateDXTexture out for S0/S1 2022-07-08 23:50:38 +02:00
rexx
d64079fd6b enable CreateDXTexture hook 2022-07-08 22:33:43 +01:00
PixieCore
931670e0ac Moved dxgiFormat further down. 2022-07-08 23:19:53 +02:00
PixieCore
d51ceddf38 RTech::CreateDXTexture cleanup.
* Separated RPakTextureHeader_t and made an RTech version.
* Fixed up RTechTextureInfo_t struct.
* Still needs testing with 4K textures.
2022-07-08 23:18:15 +02:00
PixieCore
ff7ae51718 RTech::CreateDXTexture works now.
* Will clean up the function next.
2022-07-08 20:31:27 +02:00
PixieCore
1b2c0cecd0 CShaderGlue changes and RTech implementation.
* Added RTech::LoadShaderSet for the asset load routine
* Grabbing CShaderGlue::SetupShader and CShaderGlue::m_pVTable dynamically now
* Everything verified for every season, cross-compatible!
2022-07-04 22:52:10 +02:00
IcePixelx
f1395c0bad
Little cleanup, branch to test changes when at home. (#69)
* Little cleanup, branch to test changes when at home.

* Remove non-used variables
2022-06-23 18:03:53 +02:00
PixieCore
0e4c126823 Revert NULL passing into second arg (was for testing) 2022-06-22 14:06:53 +02:00
PixieCore
62ac2c03ff RTech::CreateDXTexture fix for CreateShaderResourceView 2022-06-22 14:03:41 +02:00
PixieCore
8bf08af7b9 Start of RTech::CreateDXTexture rebuild.
* Currently crashes due to stack corruption.
2022-06-19 18:07:43 +02:00
Kawe Mazidjatari
e110aa5832 RTech decompress cleanup
Cast to proper types
2022-06-17 18:42:13 +02:00
Kawe Mazidjatari
4b72afb74f Light refactor for logging
Moved logging functions to dbg.h (tier0) and export them from the dll.
Added additional functions for checking bad pointers (debug only!).
Reduced output code size.
2022-05-25 14:18:29 +02:00