Skip to content

Conversation

@Archie-osu
Copy link
Collaborator

@Archie-osu Archie-osu commented May 12, 2025

The Ultimate Update.
Requires Aurie v2.

  • Remove Print* functions (moved to Aurie)
  • Remove console management functions (moved to Aurie)
  • Remove undocumented functions from module interface
  • Move object initializer code to an interface instead of shared headers
  • Refactor Module Internals
    • Move away from YYTK::TargettedInstruction
    • Use ZydisDecoder instead of ZydisDisassembleInstruction
    • Decouple functions from interface
    • Remove duplicate code, extract into standalone functions
  • Bugfixes
    • Use variable_struct_get_hash inside GetVariableSlot if possible
    • Use PpGetCurrentArchitecture instead of pointer size comparison
    • Fix x86 RI lookup MOV duplicates
    • Fix YYToolkit fails to look up rooms in 2024.2+ VM #67
    • Check if runner interface MOV instructions reference target register
  • Use UNWIND_INFO and make stack tracing available via interface

Archie-osu and others added 15 commits March 27, 2025 20:19
* Add a donation clause

I'm a poor student, I'm sorry :(

* Added Version RC Files

Added version files to YYToolkit.

* Add stacktraces, fix enumeration being broken

- Added stacktrace dumping for when a game crashes
- Extended logs to maximum of 4096 characters
- Fixed YkExtractFunctionEntry crashing when attempting to get an invalid function
- Fixed GetInstanceMember failing on variables named the same as built-ins

* Fix docs on CallGameScript

* DMA for RValues

- Add GetMember, GetRefMember, GetMemberCount for RValue, to prevent pointers being restricted to ToMap()

* Update version file

---------

Co-authored-by: AnnaNomoly <annanomoly@outlook.com>
- Bring in Aurie v2 headers
- Remove Print\* functions from module interface
- Remove console management functions
- Replace Cm\* functions with their DbgPrint\* counterparts where applicable
- Merged YYTK v5 draft
- ExamplePlugin has temporarily changed to Time of Mistria
- Updated Aurie headers
- Split module interface into multiple cpp files
- Added private interface to gain control over GM struct operations
- Fixed #76
- Fixed #65 maybe?
- Reworked interface (DbgPrintEx from Aurie, renamed to ZeusMain)
- Removed dead code (TargettedInstruction)
- Cleaned up RValue => CInstance relationship
- Broke all x86 builds rn
Brought in x86 handlers from v4.
Functionality has not been changed.

Fixed warnings when compiling on x86 due to size mismatches.
Added some nice-to-have functions for RValues to incentivize not accessing members directly.

- Removed internal debugger wait
- Added IsUndefined to RValue
- Added IsStruct to RValue
- Added IsNumberConvertible to RValue
- Added IsString to RValue
- Added IsArray to RValue
- Added ContainsValue to CInstance
- Fix returning address of local variables
- Add GetMethodParameterCount
- Removed unused variables
- Fixed DmGetSectionBounds not respecting the SectionName argument
- Removed overshadowed D3D11 counter
- Added the ``RV_GetObjectSpecificKind`` and ``YkSetRuntimeFlags`` methods to the private interface
- Added a way to find g_fSuppressErrors for debugging
- Removed confusing log message in GetInstanceMember
- Disabled callback invocation until interface is ready
- Updated ExamplePlugin to current headers
- Enabled optimization
- RValue indexers no longer "make up" variables when passed with a non-existent name. This aligns it with the documentation, which has been wrong all this time seemingly.
- Optimized YYError calls from ~1 second to ~300 microseconds
  - The symbol table is built on YYTK init
  - Switched from using std::map to a vector for faster building without extra allocations
- Added engine stacktracing for YYError
- Fixed warning on casting from int64_t to size_t
- Updated Aurie headers
- Fixed like 5 warnings
- Prevent unnecessary copying of iterator
- Added RV_ContainsNestedValue to the private interface to prevent error printing when ContainsValue is used to check for a variable's existence
- Fixes function array lookup and YYObjectBase::Add lookup on 2024.14 x64
- Fix error when attempting to check for a non-existent variable
- Updated Aurie headers to v2.0.2
  - Enabled function caching
  - Added MmEnableHook / MmDisableHook, MmGetRegistersForHook
  - Removed nonexistent functions
- Added a three-stage init format
  - Enables intercepting globalscripts
- Added detailed message for when a PI function is called before it's init to aid in debugging
- Marked a few functions in PI as safe to call before init¨
- Fixed Code_Execute pattern on 2024.14+ VM
- Fixed bug that prevented RValue array accesses under VM
- Fixed 2024.2+ room accesses #67
- Added callback as per @PippleCultist request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

YYToolkit fails to look up rooms in 2024.2+ VM

2 participants