Compare commits
No commits in common. "45f75ce86fe4d6d3225a8c1a3e02667762d3eeb6" and "3717bc50b95fb3255b87fa381d68cc68fda1e6cd" have entirely different histories.
45f75ce86f
...
3717bc50b9
@ -93,6 +93,8 @@ Frank Bartholomai
|
|||||||
|
|
||||||
SPECIAL EDITION CONVERSION AND MAINTENANCE
|
SPECIAL EDITION CONVERSION AND MAINTENANCE
|
||||||
Eddoursul
|
Eddoursul
|
||||||
|
OverDev
|
||||||
|
gavrant
|
||||||
|
|
||||||
TRANSLATION - ENGLISH VERSION
|
TRANSLATION - ENGLISH VERSION
|
||||||
Nicolas Lietzau
|
Nicolas Lietzau
|
||||||
@ -210,9 +212,6 @@ Ander "Kyku" Jimenez
|
|||||||
TRANSLATION - KOREAN VERSION
|
TRANSLATION - KOREAN VERSION
|
||||||
dhrgusdlrns
|
dhrgusdlrns
|
||||||
|
|
||||||
TRANSLATION - CZECH VERSION
|
|
||||||
Dogzey
|
|
||||||
|
|
||||||
PARTNERS
|
PARTNERS
|
||||||
2Day Productions Berlin
|
2Day Productions Berlin
|
||||||
Nevigo (Articy Draft)
|
Nevigo (Articy Draft)
|
||||||
@ -609,8 +608,6 @@ gavrant
|
|||||||
duncanlarsen1
|
duncanlarsen1
|
||||||
|
|
||||||
SPECIAL EDITION CONTRIBUTORS
|
SPECIAL EDITION CONTRIBUTORS
|
||||||
OverDev
|
|
||||||
gavrant
|
|
||||||
LoAndEvolve
|
LoAndEvolve
|
||||||
jdsmith2816
|
jdsmith2816
|
||||||
H4wkeye
|
H4wkeye
|
||||||
@ -625,8 +622,6 @@ sitch
|
|||||||
Hortophyll
|
Hortophyll
|
||||||
Wildscribe
|
Wildscribe
|
||||||
TieflingGrimoire
|
TieflingGrimoire
|
||||||
LevinLozenges
|
|
||||||
Lirk
|
|
||||||
|
|
||||||
BUGTRACKER ADMINISTRATION
|
BUGTRACKER ADMINISTRATION
|
||||||
Dennis Weich
|
Dennis Weich
|
||||||
@ -652,14 +647,12 @@ NifSkope by NifTools
|
|||||||
NifMerge by Turulo
|
NifMerge by Turulo
|
||||||
ChunkMerge by skyfox69
|
ChunkMerge by skyfox69
|
||||||
FNIS by Fore
|
FNIS by Fore
|
||||||
Sniff by zilav
|
|
||||||
Unfuzer by greentea101
|
Unfuzer by greentea101
|
||||||
UIExtensions by expired6978
|
UIExtensions by expired6978
|
||||||
Flat Map Markers SSE, Stay At The System Page, Yes Im Sure by Ryan McKenzie
|
Flat Map Markers SSE, Stay At The System Page, Yes Im Sure by Ryan McKenzie
|
||||||
powerofthree's Tweaks
|
powerofthree's Tweaks
|
||||||
CommonLibSSE-GG - MIT-licensed fork of CommonLibSSE-NG, with RE by Ryan McKenzie, powerofthree, Charmed Baryon, alandtse, Qudix, Maxsu, doodlum, and others
|
CommonLibSSE-NG and general reverse engineering by Ryan McKenzie, powerofthree, Charmed Baryon, alandtse, Qudix, Maxsu, doodlum, and others
|
||||||
Crash Logger by Ryan McKenzie, alandtse, and others
|
Crash Logger by Ryan McKenzie, alandtse, and others
|
||||||
Widescreen Scale Removed by SkyHorizon
|
|
||||||
Better Dialogue Controls by ecirbaf
|
Better Dialogue Controls by ecirbaf
|
||||||
Unofficial Enderal Port (fs.dll) by Hishutup
|
Unofficial Enderal Port (fs.dll) by Hishutup
|
||||||
Shorter Grass by Fhaarkas
|
Shorter Grass by Fhaarkas
|
||||||
|
|||||||
@ -24,7 +24,10 @@ Beware, spoilers ahead!
|
|||||||
- Removed the Blueprint keyword from the Dreamflower Elixir Recipe to avoid sorting it into the blueprint storage (reported by Fubz).
|
- Removed the Blueprint keyword from the Dreamflower Elixir Recipe to avoid sorting it into the blueprint storage (reported by Fubz).
|
||||||
- Fixed an exploit allowing to collect more gold from containers (reported by LevinLozenges).
|
- Fixed an exploit allowing to collect more gold from containers (reported by LevinLozenges).
|
||||||
- All localizations have been brought up to date.
|
- All localizations have been brought up to date.
|
||||||
|
|
||||||
|
Engine patches:
|
||||||
- Automatically detects and warns about form type collisions when using incompatible Skyrim mods.
|
- Automatically detects and warns about form type collisions when using incompatible Skyrim mods.
|
||||||
|
- Included GOG Memory (VRAM) Leak Fix by DwemerEngineer.
|
||||||
|
|
||||||
Lirk:
|
Lirk:
|
||||||
- Fixed several issues with weapon impact sounds.
|
- Fixed several issues with weapon impact sounds.
|
||||||
|
|||||||
@ -8,5 +8,6 @@ ForceBorderless = true
|
|||||||
AttachLightHitEffectCrashFix = true
|
AttachLightHitEffectCrashFix = true
|
||||||
AutoScaleHeroMenu = true
|
AutoScaleHeroMenu = true
|
||||||
WarnFormTypeCollisions = true
|
WarnFormTypeCollisions = true
|
||||||
|
GogVramLeakFix = true
|
||||||
MenuAspectRatioFix = true
|
MenuAspectRatioFix = true
|
||||||
LoadScreenFrameFix = true
|
LoadScreenFrameFix = true
|
||||||
|
|||||||
@ -15,6 +15,7 @@
|
|||||||
#include "Patches/AttachLightHitEffectCrash.h"
|
#include "Patches/AttachLightHitEffectCrash.h"
|
||||||
#include "Patches/PluginsTxtPatch.h"
|
#include "Patches/PluginsTxtPatch.h"
|
||||||
#include "Patches/FormTypeCollisionDetector.h"
|
#include "Patches/FormTypeCollisionDetector.h"
|
||||||
|
#include "Patches/GogVramLeakFix.h"
|
||||||
#include "Patches/ForceLanguage.h"
|
#include "Patches/ForceLanguage.h"
|
||||||
#include "Patches/MenuAspectRatioFix.h"
|
#include "Patches/MenuAspectRatioFix.h"
|
||||||
|
|
||||||
@ -31,6 +32,7 @@ static std::map<std::string, bool> g_settings{
|
|||||||
{ "ForceBorderless", true },
|
{ "ForceBorderless", true },
|
||||||
{ "AttachLightHitEffectCrashFix", true },
|
{ "AttachLightHitEffectCrashFix", true },
|
||||||
{ "AutoScaleHeroMenu", true },
|
{ "AutoScaleHeroMenu", true },
|
||||||
|
{ "GogVramLeakFix", true },
|
||||||
{ "MenuAspectRatioFix", true },
|
{ "MenuAspectRatioFix", true },
|
||||||
{ "LoadScreenFrameFix", true }
|
{ "LoadScreenFrameFix", true }
|
||||||
};
|
};
|
||||||
@ -73,6 +75,11 @@ namespace {
|
|||||||
|
|
||||||
if (message->type == MessagingInterface::kPostLoad) {
|
if (message->type == MessagingInterface::kPostLoad) {
|
||||||
if (!REL::Module::IsVR()) {
|
if (!REL::Module::IsVR()) {
|
||||||
|
if (g_settings.at("GogVramLeakFix") && REL::Module::get().version() == REL::Version(1, 6, 1179, 0) && !GetLoadInterface()->GetPluginInfo("GOG-Leak-Fix")) {
|
||||||
|
logger::info("Installing GOG VRAM leak fix...");
|
||||||
|
GogVramLeakFix::Install();
|
||||||
|
}
|
||||||
|
|
||||||
if (g_settings.at("AttachLightHitEffectCrashFix")) {
|
if (g_settings.at("AttachLightHitEffectCrashFix")) {
|
||||||
logger::info("Installing light attach crash fix...");
|
logger::info("Installing light attach crash fix...");
|
||||||
AttachLightHitEffectCrash::Install();
|
AttachLightHitEffectCrash::Install();
|
||||||
|
|||||||
@ -42,7 +42,7 @@ namespace SKSE::stl
|
|||||||
// a jump back into the original, so T::func is a callable stand-in for the untouched function.
|
// a jump back into the original, so T::func is a callable stand-in for the untouched function.
|
||||||
// BYTES must cover complete, position-independent instructions and be at least 5.
|
// BYTES must cover complete, position-independent instructions and be at least 5.
|
||||||
// Costs 14 bytes of trampoline for the branch island plus BYTES + 14 for the stub.
|
// Costs 14 bytes of trampoline for the branch island plus BYTES + 14 for the stub.
|
||||||
// Technique by Nukem and po3.
|
// Thanks Nukem and po3, via Widescreen Scale Removed by SkyHorizon (GPL-3.0).
|
||||||
template <class T, std::size_t BYTES>
|
template <class T, std::size_t BYTES>
|
||||||
void hook_function_prologue(std::uintptr_t a_src)
|
void hook_function_prologue(std::uintptr_t a_src)
|
||||||
{
|
{
|
||||||
|
|||||||
36
source/Enderal DLL/src/Patches/GogVramLeakFix.h
Normal file
36
source/Enderal DLL/src/Patches/GogVramLeakFix.h
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
// Fix GOG VRAM leak by properly releasing Direct3D texture resources
|
||||||
|
// Based on https://github.com/SaneEngineer/GOG-Leak-Fix
|
||||||
|
namespace GogVramLeakFix
|
||||||
|
{
|
||||||
|
struct ReplaceRelease
|
||||||
|
{
|
||||||
|
static void thunk(RE::BSGraphics::Renderer* a_renderer, RE::BSGraphics::Texture* a_texture)
|
||||||
|
{
|
||||||
|
if (_InterlockedExchangeAdd(&a_texture->refCount, 0xFFFFFFFF) == 1) {
|
||||||
|
if (a_texture->resourceView) {
|
||||||
|
a_texture->resourceView->Release();
|
||||||
|
}
|
||||||
|
if (a_texture->texture) {
|
||||||
|
a_texture->texture->Release();
|
||||||
|
}
|
||||||
|
if (a_texture->UAV) {
|
||||||
|
a_texture->UAV->Release();
|
||||||
|
}
|
||||||
|
|
||||||
|
REL::Relocation<void(void*, int)> NiMemFree{ REL::RelocationID(102158, 109588) };
|
||||||
|
NiMemFree(a_texture, 0x28);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline REL::Relocation<decltype(thunk)> func;
|
||||||
|
};
|
||||||
|
|
||||||
|
void Install()
|
||||||
|
{
|
||||||
|
SKSE::AllocTrampoline(14);
|
||||||
|
SKSE::stl::write_thunk_jump<ReplaceRelease>(REL::RelocationID(75527, 77322).address());
|
||||||
|
logger::info("Initialized GOG VRAM Leak Fix");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -32,9 +32,8 @@
|
|||||||
// entries both halves of the patch collapse into the clamp: the caller already passes kNoBorder,
|
// entries both halves of the patch collapse into the clamp: the caller already passes kNoBorder,
|
||||||
// so restoring the table mode is a no-op on every runtime.
|
// so restoring the table mode is a no-op on every runtime.
|
||||||
//
|
//
|
||||||
// The mode-restoration approach follows Widescreen Scale Removed by SkyHorizon
|
// Based on Widescreen Scale Removed by SkyHorizon (GPL-3.0)
|
||||||
// (https://www.nexusmods.com/skyrimspecialedition/mods/136793). The table is re-derived from the
|
// https://www.nexusmods.com/skyrimspecialedition/mods/136793
|
||||||
// 1.6.640/1.6.1170 binaries (see CLAUDE.md for the method) and the implementation is original.
|
|
||||||
namespace MenuAspectRatioFix
|
namespace MenuAspectRatioFix
|
||||||
{
|
{
|
||||||
using ScaleModeType = RE::GFxMovieView::ScaleModeType;
|
using ScaleModeType = RE::GFxMovieView::ScaleModeType;
|
||||||
@ -86,10 +85,6 @@ namespace MenuAspectRatioFix
|
|||||||
{ "MagicMenu"sv, ScaleModeType::kNoBorder },
|
{ "MagicMenu"sv, ScaleModeType::kNoBorder },
|
||||||
{ "MessageBox"sv, ScaleModeType::kNoBorder },
|
{ "MessageBox"sv, ScaleModeType::kNoBorder },
|
||||||
{ "RaceSex_menu"sv, ScaleModeType::kNoBorder },
|
{ "RaceSex_menu"sv, ScaleModeType::kNoBorder },
|
||||||
|
|
||||||
// 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
|
|
||||||
// to 1.6.640, kExactFit from 1.6.1130 (checked 1.5.97, 1.6.640, 1.6.117x, 1.7.99).
|
|
||||||
{ "StatsMenu"sv, ScaleModeType::kNoBorder },
|
{ "StatsMenu"sv, ScaleModeType::kNoBorder },
|
||||||
{ "TrainingMenu"sv, ScaleModeType::kNoBorder },
|
{ "TrainingMenu"sv, ScaleModeType::kNoBorder },
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user