Skip to content

Experimental #74

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Mar 13, 2025
Merged

Experimental #74

merged 11 commits into from
Mar 13, 2025

Conversation

Archie-osu
Copy link
Collaborator

  • Added CInstance methods for both ISA and non-ISA uses
    • ToRValue
    • GetRefMember
    • GetMember
    • GetMemberCount
  • Added 3 interface functions
  • Remade RValue struct
    • Added conversion functions for int32, int64, C-style strings, UTF-8 strings, and YYObjectBase
    • RValue conversions are now handled directly by the engine - this means you kill the game if your code is shitty (no unexpected bugs later down the line)
    • Added support for direct creation of structs
    • Added member methods to RValue for conversion into C++ types (std::vector for arrays, std::map for structs)
    • Fixed arbitrary pointer types except void* initializing to VALUE_BOOL, causing unforeseen bugs.
    • Added support for initializing RValue arrays from a std::vector
    • Added bounds checking for RValue array accesses if the user chooses to use it
    • Added implicit conversions from RValue to native C types
    • Added explicit conversion from RValue to C++ types like std::string.
    • Added non-ISA methods to CInstance to allow direct member access
      • Refined existing methods such as GetMembers to be const-compatible
    • Replaced operator[] with GetMember and GetRefMember
    • Added a way to count the number of entries inside an instance (GetMemberCount)
    • Added an initializer to streamline accessing a CInstance object given an instance ID
  • Additional features
    • Unhooking is now done atomically, preventing race conditions when unloading in high-FPS games
    • YYToolkit now produces a log file in the game directory
    • Fixed HoloCure runner interface lookup failing
    • Fixed Coffee Story not working at all
    • Remade runner interface lookup, now works in all tested games, even ones that don't have any extensions.

Archie-osu and others added 11 commits October 8, 2024 21:38
- Added CInstance methods for both ISA and non-ISA uses
  - ToRValue
  - GetRefMember
  - GetMember
  - GetMemberCount
- Added GetInstanceMemberCount interface function
- Enabled freeing of RValues
- Implemented RValue pointer constructor
- Removed the ability for RValues to be constructed from RValue*
- Added a copy assignment operator, fixing crashes and memory leaks
- Turned TGameMakerObject into a concept
- Fixed issues with CInstance-related types not being recognized as TGameMakerObject with ISA off
- Added comments to constructors
- Updated ExamplePlugin to have the experimental headers
- Removed std::string and std::u8string overloads
  - Maps are now properly initialized again
  - Functionality seems to not be impacted, std::string_view is implicitely constructed from std::string
- Added overload for const char8_t*
- Removed initializer-list overloads in favor of vectors
- Inline-initialize members of RValues
  - Fixes frequent crashes during copying of uninitialized RValues due to operator= firing while an RValue is being constructed.
- Added a static FromInstanceID method to CInstance
- Fixed YYTK_VERSION_STRING not being a string
- Added a CallGameScript and CallGameScriptEx function. UNTESTED!
- ExamplePlugin is now a dumper for Fields of Mistria lmao
- YYTK now logs some traces into YYToolkit.log
- Added IsInstanceOfObject to SDK
- Fixed crashes when unloading on games with high FPS
- Improved hook performance
- Disabled optimization for YYTK temporarily
- Fixes HoloCure, suggested by @PippleCultist - thank you for your efforts!
- Revised the "new" way of finding the runner interface. Instead of breakpointing right before the call, we breakpoint the function prologue (which fixes games that have Extension_Main_Number == 0).
- Removed FOM-exclusive code from ExamplePlugin
- Fixed cast warning
- Disabled at some point in development of experimental
- Added in-code documentation for interface functions.
- Synced plugin headers to core.
@Archie-osu Archie-osu merged commit 5987122 into stable Mar 13, 2025
1 check passed
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.

1 participant