mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-27 22:07:07 +01:00
From the first 6k Sentry reports of 55a7342 (2026-10-24), whose top sites were all new since 2.1.1:
- Trainer: scale_underflip_bands wrote the underflip rate bands' MinScale and MaxScale every tick on
every copy it had ever found, checking only that the address was readable. A level's copies go back
to the game's heap with it, so 1.0 and 0.6 landed in the upper half of whatever the game made there
next (Skate.exe+0x157f930, +0x12a1549, +0x10084de, +0x11ef49e, +0x3db81ea, +0x12c21ca: about a
third of the crashes, every dump with a pointer whose high dword is one of those floats). A copy is
now written only while it still is that band and holds the game's band or the last one written;
any other is forgotten.
- Throwdowns: models the page released were destroyed 3 s later by the menu tick, which does not run
while a level loads, so the game's own flush of the unloaded level's types destroyed them after
their assets were freed (Skate.exe+0x3dc5eaa, 18%). Before a level unload they are destroyed at
once, as the native menu's own are.
- Textures: the guard's "default for the id" is the entry itself, so for a dead entry resolve gave a
null texture, and the texture view cache asked it for its key (Skate.exe+0x3e6ddc1, 17%, every
report with TheVlixOne-Nike_Pack). A stub at the cache insert hands back the empty view the cache
already built when the texture is null; the guard is on only when that patch applies.
- Physics: the wake guard widens every pass because ReSkate raises the owner pool to 160000; its log
line now says so once instead of claiming a prevented crash thousands of times a session.
Built; not yet checked in the game.
17 lines
835 B
C++
17 lines
835 B
C++
#pragma once
|
|
#include <cstdint>
|
|
namespace dingosdk::multiplayer {
|
|
void tick_native_throwdown_menu(std::uintptr_t base, bool loading, bool in_menu) noexcept;
|
|
bool release_native_throwdown_menu(std::uintptr_t base, bool before_unload) noexcept;
|
|
bool native_throwdown_setup_open() noexcept;
|
|
bool native_throwdown_hud_ready() noexcept;
|
|
bool native_throwdown_match_panel_open() noexcept;
|
|
bool native_throwdown_gameplay_input_allowed() noexcept;
|
|
bool native_throwdown_match_active() noexcept;
|
|
// Prepare an owned request at native page publication or its client/UI tick.
|
|
// Presentation is independent of the native flow's camera/input confirmation.
|
|
void prepare_native_throwdown_match_panel() noexcept;
|
|
void observe_native_custom_join_details(std::uintptr_t vm) noexcept;
|
|
void observe_native_flag_interaction(std::uintptr_t vm) noexcept;
|
|
}
|