mirror of
https://github.com/Dingo-Shenanigans/ReSkate.git
synced 2026-10-23 08:45:53 +02:00
51 lines
2.7 KiB
C++
51 lines
2.7 KiB
C++
#pragma once
|
|
#include "Engine/Game/Build/fingerprint.h"
|
|
|
|
namespace dingosdk::game::build::v20260929::offboard_flight {
|
|
// Supported executable. Offboard owns these embedded substates
|
|
// (constructor RVA 480fd40), selected through +48 and updated through vtable+18.
|
|
// Ground/Slide add context+910 to velocity XYZ at +10; Falling adds gravity*dt
|
|
// to the same velocity. The motion target override alone cannot stop that sum.
|
|
// Constructor caller: RDX=core+3c0 (context), R8=core+430 (board wrapper),
|
|
// R9=core+438 (rig wrapper). Constructor stores R8 at parent+10, R9 at +18.
|
|
inline constexpr std::array<Fingerprint, 2> offboard_owner_contracts{{
|
|
{0x47bf916, {
|
|
0x4c,0x8b,0x8b,0x38,0x04,0x00,0x00,0x48,0x8d,0x4c,0x24,0x50,0x4c,0x8b,0x83,0x30,
|
|
0x04,0x00,0x00,0x48,0x8b,0x93,0xc0,0x03,0x00,0x00,0x48,0x89,0x4c,0x24,0x20,0x48}},
|
|
{0x48108e9, {
|
|
0x4c,0x89,0x41,0x10,0x4c,0x89,0x49,0x18,0x48,0x8b,0x42,0x08,0x48,0x89,0x41,0x20,
|
|
0x48,0x8b,0x02,0x48,0x89,0x41,0x28,0x48,0x8b,0x42,0x10,0x48,0x89,0x41,0x30,0x48}},
|
|
}};
|
|
struct OffboardFlightState {
|
|
std::uintptr_t offset, vtable_rva, update_rva;
|
|
Fingerprint velocity_write;
|
|
};
|
|
inline constexpr std::array<OffboardFlightState, 3> offboard_flight_states{{
|
|
// FollowGround
|
|
{0x60, 0x65e8c20, 0x48318a0, {0x4832134, {
|
|
0x48,0x8b,0x43,0x08,0xc5,0xf8,0x10,0x80,0x10,0x09,0x00,0x00,0xc5,0xf8,0x58,0x4f,
|
|
0x10,0xc5,0xf8,0x11,0x4f,0x10,0x48,0x89,0xb3,0x48,0x0d,0x00,0x00,0xc7,0x83,0x50}}},
|
|
// FollowGroundSlide
|
|
{0x1c0, 0x65e8c80, 0x4832530, {0x4832a6b, {
|
|
0x43,0x08,0xc5,0xf8,0x10,0x80,0x10,0x09,0x00,0x00,0xc5,0xf8,0x58,0x4f,0x10,0xc5,
|
|
0xf8,0x11,0x4f,0x10,0x48,0x89,0xb3,0x48,0x0d,0x00,0x00,0xc7,0x83,0x50,0x0d,0x00}}},
|
|
// Falling
|
|
{0x5b0, 0x65e8da0, 0x4820860, {0x4820c6c, {
|
|
0xc5,0xf0,0x59,0xd0,0xc5,0xfa,0x10,0x0e,0xc4,0xe3,0x71,0x21,0x4f,0x14,0x10,0xc4,
|
|
0xe3,0x71,0x21,0x4f,0x18,0x20,0xc5,0xe8,0x58,0xc1,0xc5,0xf8,0x11,0x06,0x4c,0x8b}}},
|
|
}};
|
|
inline constexpr std::uintptr_t offboard_flight_vtable = 0x65e8f40;
|
|
// FollowRagdoll / FollowAnimatedRagdoll / FollowSimulatedRagdoll also keep
|
|
// world velocity at +10. Their shared update derives it from displacement
|
|
// (RVA 48380DE), including Y at +14. Boosts must update this cached velocity
|
|
// as well as the skeleton bodies when diving or gliding.
|
|
inline constexpr std::array<std::array<std::uintptr_t, 3>, 3> offboard_ragdoll_states{{
|
|
{0x720, 0x65e8df8, 0x4832c80},
|
|
{0x8e0, 0x65e8e60, 0x4830a70},
|
|
{0xaa0, 0x65e8ed0, 0x48332f0},
|
|
}};
|
|
inline constexpr Fingerprint ragdoll_velocity_write{0x48380de, {
|
|
0xc4,0xe2,0x79,0x18,0x80,0xec,0x17,0x00,0x00,0xc5,0xe8,0x5e,0xc8,0xc5,0xf8,0x11,
|
|
0x4f,0x10,0xc5,0xf8,0x10,0x43,0x30,0xc5,0xf8,0x11,0x87,0x60,0x01,0x00,0x00,0x4c}};
|
|
}
|