Added support for SSE 1.7.104
This commit is contained in:
parent
9658c9b1f5
commit
874b5faf2e
@ -7,7 +7,7 @@ Beware, spoilers ahead!
|
|||||||
|
|
||||||
|
|
||||||
2.1.4.3 (TBD)
|
2.1.4.3 (TBD)
|
||||||
- Added compatibility with Skyrim SE 1.7.99.
|
- Added compatibility with Skyrim SE 1.7.104.
|
||||||
- Added Czech localization by Dogzey.
|
- Added Czech localization by Dogzey.
|
||||||
- Added widescreen support.
|
- Added widescreen support.
|
||||||
- Added SkyUI 6.0 support.
|
- Added SkyUI 6.0 support.
|
||||||
|
|||||||
@ -136,7 +136,7 @@ FetchContent_Declare(
|
|||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(xbyak)
|
FetchContent_MakeAvailable(xbyak)
|
||||||
|
|
||||||
# CommonLibSSE-GG - MIT fork of CommonLibSSE-NG with native 1.7.99 support,
|
# CommonLibSSE-GG - MIT fork of CommonLibSSE-NG with native 1.7.99 and 1.7.104 support,
|
||||||
# pinned commit (SE + AE + VR runtime support).
|
# pinned commit (SE + AE + VR runtime support).
|
||||||
set(SKSE_SUPPORT_XBYAK ON CACHE BOOL " " FORCE)
|
set(SKSE_SUPPORT_XBYAK ON CACHE BOOL " " FORCE)
|
||||||
set(ENABLE_SKYRIM_SE ON CACHE BOOL " " FORCE)
|
set(ENABLE_SKYRIM_SE ON CACHE BOOL " " FORCE)
|
||||||
@ -147,7 +147,7 @@ message(STATUS "Fetching CommonLibSSE-GG...")
|
|||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
CommonLibSSE
|
CommonLibSSE
|
||||||
GIT_REPOSITORY https://github.com/eddoursul/CommonLibSSE-GG
|
GIT_REPOSITORY https://github.com/eddoursul/CommonLibSSE-GG
|
||||||
GIT_TAG f017308b341889af9b518aae6966b19db98e16bc
|
GIT_TAG 3aa704ee2de9fdba3a2e77cc08e3d3ed8ea6e00f
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(CommonLibSSE)
|
FetchContent_MakeAvailable(CommonLibSSE)
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,7 @@ namespace AchievementFix
|
|||||||
if (REL::Module::IsVR()) {
|
if (REL::Module::IsVR()) {
|
||||||
target = REL::Offset(0x17FB90);
|
target = REL::Offset(0x17FB90);
|
||||||
} else if (REL::Module::get().version() >= REL::Version(1, 6, 1130, 0)) {
|
} else if (REL::Module::get().version() >= REL::Version(1, 6, 1130, 0)) {
|
||||||
// Checked: 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
target = REL::ID(441528);
|
target = REL::ID(441528);
|
||||||
} else {
|
} else {
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659
|
// Checked: 1.5.97, 1.6.640, 1.6.659
|
||||||
|
|||||||
@ -35,7 +35,7 @@ namespace BinkInterruptPatch
|
|||||||
|
|
||||||
void Install()
|
void Install()
|
||||||
{
|
{
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<std::uintptr_t> target{ REL::RelocationID(87890, 90259), REL::Relocate(0x22, 0x21) };
|
REL::Relocation<std::uintptr_t> target{ REL::RelocationID(87890, 90259), REL::Relocate(0x22, 0x21) };
|
||||||
SKSE::AllocTrampoline(14);
|
SKSE::AllocTrampoline(14);
|
||||||
BinkListener::func = SKSE::GetTrampoline().write_call<5>(target.address(), BinkListener::thunk);
|
BinkListener::func = SKSE::GetTrampoline().write_call<5>(target.address(), BinkListener::thunk);
|
||||||
|
|||||||
@ -121,7 +121,7 @@ private:
|
|||||||
void static OpenJournal(bool a_bool)
|
void static OpenJournal(bool a_bool)
|
||||||
{
|
{
|
||||||
using func_t = decltype(&OpenJournal);
|
using func_t = decltype(&OpenJournal);
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<func_t> func{ REL::VariantID(52428, 53327, 0x92F0F0) };
|
REL::Relocation<func_t> func{ REL::VariantID(52428, 53327, 0x92F0F0) };
|
||||||
func(a_bool);
|
func(a_bool);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -12,7 +12,7 @@ namespace FlatMapMarkers
|
|||||||
|
|
||||||
inline void Install()
|
inline void Install()
|
||||||
{
|
{
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<std::uintptr_t> offset{ REL::RelocationID(52224, 53111), REL::Relocate(0x22F, 0x21F) };
|
REL::Relocation<std::uintptr_t> offset{ REL::RelocationID(52224, 53111), REL::Relocate(0x22F, 0x21F) };
|
||||||
SKSE::AllocTrampoline(14);
|
SKSE::AllocTrampoline(14);
|
||||||
SKSE::GetTrampoline().write_call<5>(offset.address(), &Hook_WorldPtToScreenPt3);
|
SKSE::GetTrampoline().write_call<5>(offset.address(), &Hook_WorldPtToScreenPt3);
|
||||||
|
|||||||
@ -19,7 +19,7 @@ namespace ForceBorderless
|
|||||||
auto version = REL::Module::get().version();
|
auto version = REL::Module::get().version();
|
||||||
std::uintptr_t target = 0;
|
std::uintptr_t target = 0;
|
||||||
|
|
||||||
// Checked: 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
if (version >= REL::Version(1, 6, 1130, 0)) {
|
if (version >= REL::Version(1, 6, 1130, 0)) {
|
||||||
target = REL::Relocation<std::uintptr_t>{ REL::ID(36547), 0xBEA }.address();
|
target = REL::Relocation<std::uintptr_t>{ REL::ID(36547), 0xBEA }.address();
|
||||||
|
|
||||||
|
|||||||
@ -38,7 +38,7 @@ void HeroMenuPatch::Install(bool aAutoScaleHeroMenu)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Patch the Quick Stats hotkey to open the menu
|
// Patch the Quick Stats hotkey to open the menu
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<std::uintptr_t> target{ REL::RelocationID(51400, 52249), REL::Relocate(0x41E, 0x421) };
|
REL::Relocation<std::uintptr_t> target{ REL::RelocationID(51400, 52249), REL::Relocate(0x41E, 0x421) };
|
||||||
REL::safe_fill(target.address(), REL::NOP, 45);
|
REL::safe_fill(target.address(), REL::NOP, 45);
|
||||||
|
|
||||||
|
|||||||
@ -21,7 +21,7 @@ namespace MapMarkerPlacement
|
|||||||
void InstallPlacementDiscoveredFix()
|
void InstallPlacementDiscoveredFix()
|
||||||
{
|
{
|
||||||
// Place a marker, if a location has been discovered and fast travel is disabled
|
// Place a marker, if a location has been discovered and fast travel is disabled
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<std::uintptr_t> target{ REL::RelocationID(52208, 53095), REL::Relocate(0x2C5, 0x328, 0x358) };
|
REL::Relocation<std::uintptr_t> target{ REL::RelocationID(52208, 53095), REL::Relocate(0x2C5, 0x328, 0x358) };
|
||||||
SKSE::AllocTrampoline(14);
|
SKSE::AllocTrampoline(14);
|
||||||
IsFastTravelEnabled::func = SKSE::GetTrampoline().write_call<5>(target.address(), IsFastTravelEnabled::thunk);
|
IsFastTravelEnabled::func = SKSE::GetTrampoline().write_call<5>(target.address(), IsFastTravelEnabled::thunk);
|
||||||
@ -32,7 +32,7 @@ namespace MapMarkerPlacement
|
|||||||
void InstallPlacementUndiscoveredFix()
|
void InstallPlacementUndiscoveredFix()
|
||||||
{
|
{
|
||||||
// Place a marker without asking, if a location isn't discovered yet
|
// Place a marker without asking, if a location isn't discovered yet
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<std::uintptr_t> target2{ REL::RelocationID(52208, 53095), REL::Relocate(0x17A, 0x183) };
|
REL::Relocation<std::uintptr_t> target2{ REL::RelocationID(52208, 53095), REL::Relocate(0x17A, 0x183) };
|
||||||
std::uint8_t code[] = { 0xB0, 0x01, REL::NOP, REL::NOP, REL::NOP }; // mov al,0x1
|
std::uint8_t code[] = { 0xB0, 0x01, REL::NOP, REL::NOP, REL::NOP }; // mov al,0x1
|
||||||
REL::safe_write(target2.address(), code, sizeof(code));
|
REL::safe_write(target2.address(), code, sizeof(code));
|
||||||
|
|||||||
@ -89,7 +89,7 @@ namespace MenuAspectRatioFix
|
|||||||
|
|
||||||
// The one menu with no direct LoadMovie call site: its ctor queues a task through the
|
// The one menu with no direct LoadMovie call site: its ctor queues a task through the
|
||||||
// deferred-load wrapper, and the task's Run() calls the hooked LoadMovie. kNoBorder up
|
// deferred-load wrapper, and the task's Run() calls the hooked LoadMovie. kNoBorder up
|
||||||
// to 1.6.640, kExactFit from 1.6.1130 (checked 1.5.97, 1.6.640, 1.6.117x, 1.7.99).
|
// to 1.6.640, kExactFit from 1.6.1130 (checked 1.5.97, 1.6.640, 1.6.117x, 1.7.99, 1.7.104).
|
||||||
{ "StatsMenu"sv, ScaleModeType::kNoBorder },
|
{ "StatsMenu"sv, ScaleModeType::kNoBorder },
|
||||||
{ "TrainingMenu"sv, ScaleModeType::kNoBorder },
|
{ "TrainingMenu"sv, ScaleModeType::kNoBorder },
|
||||||
|
|
||||||
@ -210,7 +210,7 @@ namespace MenuAspectRatioFix
|
|||||||
{
|
{
|
||||||
g_restoreScaleModes = REL::Module::get().version() >= REL::Version(1, 6, 1130, 0);
|
g_restoreScaleModes = REL::Module::get().version() >= REL::Version(1, 6, 1130, 0);
|
||||||
|
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
const auto target = REL::RelocationID(80302, 82325).address();
|
const auto target = REL::RelocationID(80302, 82325).address();
|
||||||
|
|
||||||
// mov rax,rsp followed by one argument spill - 7 bytes of position-independent code, which
|
// mov rax,rsp followed by one argument spill - 7 bytes of position-independent code, which
|
||||||
|
|||||||
@ -11,7 +11,7 @@ private:
|
|||||||
static void OpenMenu(RE::IMenu* tweenMenu, std::int32_t index)
|
static void OpenMenu(RE::IMenu* tweenMenu, std::int32_t index)
|
||||||
{
|
{
|
||||||
using func_t = decltype(&OpenMenu);
|
using func_t = decltype(&OpenMenu);
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<func_t> func{ REL::VariantID(51845, 52718, 0x8FE7E0) };
|
REL::Relocation<func_t> func{ REL::VariantID(51845, 52718, 0x8FE7E0) };
|
||||||
return func(tweenMenu, index);
|
return func(tweenMenu, index);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -253,7 +253,7 @@ inline void CloseTweenMenu()
|
|||||||
{
|
{
|
||||||
if (RE::UI::GetSingleton()->IsMenuOpen(RE::TweenMenu::MENU_NAME)) {
|
if (RE::UI::GetSingleton()->IsMenuOpen(RE::TweenMenu::MENU_NAME)) {
|
||||||
using func_t = decltype(&CloseTweenMenu);
|
using func_t = decltype(&CloseTweenMenu);
|
||||||
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99
|
// Checked: 1.5.97, 1.6.640, 1.6.659, 1.6.1130, 1.6.1170, 1.6.1179, 1.7.99, 1.7.104
|
||||||
REL::Relocation<func_t> func{ REL::VariantID(51839, 52711, 0x8FE180) };
|
REL::Relocation<func_t> func{ REL::VariantID(51839, 52711, 0x8FE180) };
|
||||||
func();
|
func();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -129,7 +129,7 @@ FetchContent_Declare(
|
|||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(spdlog)
|
FetchContent_MakeAvailable(spdlog)
|
||||||
|
|
||||||
# CommonLibSSE-GG - MIT fork of CommonLibSSE-NG with native 1.7.99 support,
|
# CommonLibSSE-GG - MIT fork of CommonLibSSE-NG with native 1.7.99 and 1.7.104 support,
|
||||||
# pinned commit (SE + AE + VR runtime support).
|
# pinned commit (SE + AE + VR runtime support).
|
||||||
# No engine patches here, so xbyak trampoline support stays off (FORCE flips
|
# No engine patches here, so xbyak trampoline support stays off (FORCE flips
|
||||||
# the stale ON left in caches configured before xbyak was dropped).
|
# the stale ON left in caches configured before xbyak was dropped).
|
||||||
@ -142,7 +142,7 @@ message(STATUS "Fetching CommonLibSSE-GG...")
|
|||||||
FetchContent_Declare(
|
FetchContent_Declare(
|
||||||
CommonLibSSE
|
CommonLibSSE
|
||||||
GIT_REPOSITORY https://github.com/eddoursul/CommonLibSSE-GG
|
GIT_REPOSITORY https://github.com/eddoursul/CommonLibSSE-GG
|
||||||
GIT_TAG f017308b341889af9b518aae6966b19db98e16bc
|
GIT_TAG 3aa704ee2de9fdba3a2e77cc08e3d3ed8ea6e00f
|
||||||
)
|
)
|
||||||
FetchContent_MakeAvailable(CommonLibSSE)
|
FetchContent_MakeAvailable(CommonLibSSE)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user