426 Commits

Author SHA1 Message Date
Kawe Mazidjatari
d2fc2405c3 Add ability to whitelist return addresses from exception filter
Programmer could add and remove whitelisted addresses. If an exception occurs, the system checks the callstack up to 'MAX_IMI_SEARCH' frames (defined in CCrashHandler), and returns true if found (returning early with 'EXCEPTION_CONTINUE_SEARCH' so we use whatever exception handler is set for this particular case), false otherwise.
2022-12-27 23:08:59 +01:00
Kawe Mazidjatari
3f4884b20a Fix CrashMsg flag
'2' means that the generic "Apex crashed" message box gets displayed without any additional information regarding the module.
2022-12-27 14:23:54 +01:00
Kawe Mazidjatari
b48f028b5a Make FPU vector unsigned
Value must be unsigned to yield proper output.
2022-12-27 14:21:20 +01:00
Kawe Mazidjatari
57c71b8ee4 Log loaded module information (base and base+imageSize) 2022-12-27 14:12:46 +01:00
Kawe Mazidjatari
3f5102cc6f Detect possible return address in callstack
Also increased the number of frames to capture from 60 to 128, and skipped the last 2 frames.
2022-12-27 13:19:57 +01:00
Kawe Mazidjatari
7dfef9c9c8 CCrashHandler and logging improvements
* CCrashHandler now calls the crashmsg executable to display the error to the user.
* Logs are now placed into directories named to the current time to avoid overwriting them or having 2 instances of the game writing to the same logs.
2022-12-27 02:28:43 +01:00
Kawe Mazidjatari
5502dcb8f1 Add 'build_id' to crash log
Also performed light cleanup.
2022-12-26 23:35:41 +01:00
Kawe Mazidjatari
cd3a80479e Log system information to the crash file
Added:
* CPU brand identifier
* CPU clock speed
* GPU device string
* GPU device state flags
* RAM total (physical/virtual)
* RAM avail (physical/virtual)
2022-12-26 22:00:38 +01:00
Kawe Mazidjatari
23070bd8ce Reorder 'CCrashHandler' class and add descriptions to functions 2022-12-26 20:33:09 +01:00
Kawe Mazidjatari
b4383478d1 Initial refactor of the CCrashHandler class
* Fixed recursive call.
* Format file similarly to Respawn's.
* Reduced output code size.

TODO:
* Call crashmsg.exe.
* Add build and system information.
2022-12-26 20:11:37 +01:00
Rika
10c82e7e64
Model fixup (#91)
* fix header, flags, and add rest of major structs

* minor type swap

* bone flags because there are new ones

* forgor this

* Add compressed vector types.

* fix bitfield sizes

* Fix compilation.

Co-authored-by: Marvin D <41352111+IcePixelx@users.noreply.github.com>
Co-authored-by: rexx <67599507+r-ex@users.noreply.github.com>
2022-12-26 01:42:26 +01:00
Kawe Mazidjatari
9ec5b6aabd Improve formatting for FPU 2022-12-25 22:49:49 +01:00
Kawe Mazidjatari
0a9045f1c7 Fix typo in crash handler 2022-12-25 22:44:07 +01:00
Marvin D
c79f98e4f8 Remove comment on crashhandler. 2022-12-24 16:48:15 +01:00
Marvin D
f9f09bd02a Limit IMI search to 7. 2022-12-24 16:43:19 +01:00
Marvin D
e24b9b90a5 VEH Clean-up. 2022-12-24 16:41:47 +01:00
Marvin D
22506fa689 Fix VEH.
* Make sure IsMaterialInternal won't be inlined.
* Fix recurssive VEH throwing.
* Check if IsMaterialInternal caused exception and ignore it.
2022-12-24 16:40:04 +01:00
Marvin D
d1ec3aaf71 Disable VEH till fix. 2022-12-24 13:06:44 +01:00
Marvin D
8506851860 VEH clean up. 2022-12-23 14:06:31 +01:00
Marvin D
bd2cc9f4b3 EXCEPTION_EXECUTE_HANDLER -> EXCEPTION_CONTINUE_SEARCH 2022-12-23 03:19:43 +01:00
Marvin D
37a50c92b8 VectoredExceptionHandler init.
* Only gets compiled in for release builds.
* Attaches on gamesdk init, so should catch everything on dll setup also.
* Fake PDB parsing still needs to be done.
2022-12-23 02:56:40 +01:00
rexx
3c3e1c46df Add pak_listtypes command 2022-12-22 21:44:38 +00:00
Marvin D
01724cfaad vtable.cpp clean up 2022-12-21 15:55:52 +01:00
Marvin D
c071ce2217 Prevent constant ModuleSections_t allocation. 2022-12-20 23:38:45 +01:00
Marvin D
9994491551 RTech_RegisterAsset 2022-12-20 01:03:59 +01:00
Marvin D
185a7ad007 IMaterial::GetShaderGlue info 2022-12-14 20:53:27 +01:00
Marvin D
21f995a37b remove un-needed include 2022-12-09 01:17:23 +01:00
Marvin D
ef256618f6 CVTableHelper class for easier RE.
* THIS IS NOT SUPPOSED TO BE USED WITH SHIPPING CODE!
* This is used for a quick way to call virtual functions for reverse engineering and rebuilding big functions, upon successful rebuild, implement needed VTables accordingly.
2022-12-09 01:15:42 +01:00
Kawe Mazidjatari
ebf7bb5e0b Fix engine bug regarding forcing application borders
In Respawn's engine, the '-forceborder' command line parameter does the same thing as '-noborder'. '-forceborder' should remove the flags (nand) while '-noborder' should append the borderless flag. This code is an attempt to mitigate the problem. There was not enough bytes to assemble the nand operation for this code path without involving code caves or shifting.
2022-12-06 00:48:11 +01:00
Kawe Mazidjatari
119255b4ff Const correctness 2022-12-05 00:57:48 +01:00
Kawe Mazidjatari
1021a95068 Merge branch 'SignatureMap' into indev 2022-12-04 14:21:14 +01:00
Kawe Mazidjatari
e9e323f9d4 Add option to disable cache map
* Add '-nosmap' command line parameter to disable signature caching.
* Invalidate the cache map after initialization.
* Add const qualifiers where possible.
2022-12-04 14:16:12 +01:00
Kawe Mazidjatari
55b90781ee Remove experimental CRC implementation in LZHAM
This implementation was done to calculate buffer CRC on the go, as that was what the VPK file system uses for the file crc's. But it later turned out to be unnecessary, and was never reverted.
2022-12-04 01:33:10 +01:00
Marvin D
c3158b6937 Slight improvements.
CModule::GetSectionByName adjustments.
RTech::CreateDXTexture improvements.
2022-12-04 00:01:31 +01:00
Kawe Mazidjatari
10a0a41162 Rename to maintain consistency 2022-12-03 17:40:05 +01:00
Kawe Mazidjatari
e26679f199 Use 'Error' instead when SMap compression failed 2022-12-03 17:27:54 +01:00
Marvin D
e1caeb7eaf movetype and datamap_t fixes. 2022-12-03 15:42:06 +01:00
Marvin D
cb2bdfe2a2 Update networkvar.cpp 2022-12-03 03:10:20 +01:00
Marvin D
0e12551158 indent 2022-12-03 02:58:34 +01:00
Marvin D
c0c06a14b8 client networkable vars init. 2022-12-03 02:57:11 +01:00
Kawe Mazidjatari
a9e518e2e6 Fix PluginSDK compile errors 2022-12-03 00:08:48 +01:00
Kawe Mazidjatari
5695e3016c CIOStream: use stf::fstream instead 2022-12-02 22:31:42 +01:00
Kawe Mazidjatari
5903b40f96 Implement LZHAM compression for the signature cache map 2022-12-02 22:14:46 +01:00
Kawe Mazidjatari
b90d6f929c Finish Signature Cache Map implementation
* Fixed bug where the system still added entries after we are initialized (file has already been written to the disk).
* Moved loading logic to CSigCache class.
* Dedicated and Host/Client now have their own cache files.
2022-12-02 12:12:13 +01:00
Kawe Mazidjatari
81fbf9ded7 Finish signature cache map implementation in CModule 2022-12-02 11:10:53 +01:00
Kawe Mazidjatari
c3eba48472 Implement signature cache further into the CModule class
Init speeds have been reduced from 1.7 sec (average) to 0.06 sec (average)
2022-12-02 10:37:41 +01:00
Kawe Mazidjatari
783b3dbb5a Initial working implementation of the Signature Cache Map.
Init speeds have been reduced from 1.7 seconds (average) to 0.3 seconds (average)
2022-12-02 00:30:49 +01:00
Kawe Mazidjatari
5513057f53 Pass patterns by const string reference 2022-12-02 00:28:29 +01:00
Kawe Mazidjatari
053f284029 Compute the file size properly 2022-12-02 00:25:28 +01:00
Kawe Mazidjatari
30e360e3b7 Merge branch 'SignatureMap' into ByteMaskToString 2022-12-01 22:47:50 +01:00