Compare commits
2 Commits
3717bc50b9
...
45f75ce86f
| Author | SHA1 | Date | |
|---|---|---|---|
| 45f75ce86f | |||
| b402f5a747 |
@ -93,8 +93,6 @@ Frank Bartholomai
|
||||
|
||||
SPECIAL EDITION CONVERSION AND MAINTENANCE
|
||||
Eddoursul
|
||||
OverDev
|
||||
gavrant
|
||||
|
||||
TRANSLATION - ENGLISH VERSION
|
||||
Nicolas Lietzau
|
||||
@ -212,6 +210,9 @@ Ander "Kyku" Jimenez
|
||||
TRANSLATION - KOREAN VERSION
|
||||
dhrgusdlrns
|
||||
|
||||
TRANSLATION - CZECH VERSION
|
||||
Dogzey
|
||||
|
||||
PARTNERS
|
||||
2Day Productions Berlin
|
||||
Nevigo (Articy Draft)
|
||||
@ -608,6 +609,8 @@ gavrant
|
||||
duncanlarsen1
|
||||
|
||||
SPECIAL EDITION CONTRIBUTORS
|
||||
OverDev
|
||||
gavrant
|
||||
LoAndEvolve
|
||||
jdsmith2816
|
||||
H4wkeye
|
||||
@ -622,6 +625,8 @@ sitch
|
||||
Hortophyll
|
||||
Wildscribe
|
||||
TieflingGrimoire
|
||||
LevinLozenges
|
||||
Lirk
|
||||
|
||||
BUGTRACKER ADMINISTRATION
|
||||
Dennis Weich
|
||||
@ -647,12 +652,14 @@ NifSkope by NifTools
|
||||
NifMerge by Turulo
|
||||
ChunkMerge by skyfox69
|
||||
FNIS by Fore
|
||||
Sniff by zilav
|
||||
Unfuzer by greentea101
|
||||
UIExtensions by expired6978
|
||||
Flat Map Markers SSE, Stay At The System Page, Yes Im Sure by Ryan McKenzie
|
||||
powerofthree's Tweaks
|
||||
CommonLibSSE-NG and general reverse engineering by Ryan McKenzie, powerofthree, Charmed Baryon, alandtse, Qudix, Maxsu, doodlum, and others
|
||||
CommonLibSSE-GG - MIT-licensed fork of CommonLibSSE-NG, with RE by Ryan McKenzie, powerofthree, Charmed Baryon, alandtse, Qudix, Maxsu, doodlum, and others
|
||||
Crash Logger by Ryan McKenzie, alandtse, and others
|
||||
Widescreen Scale Removed by SkyHorizon
|
||||
Better Dialogue Controls by ecirbaf
|
||||
Unofficial Enderal Port (fs.dll) by Hishutup
|
||||
Shorter Grass by Fhaarkas
|
||||
|
||||
@ -24,10 +24,7 @@ Beware, spoilers ahead!
|
||||
- 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).
|
||||
- All localizations have been brought up to date.
|
||||
|
||||
Engine patches:
|
||||
- Automatically detects and warns about form type collisions when using incompatible Skyrim mods.
|
||||
- Included GOG Memory (VRAM) Leak Fix by DwemerEngineer.
|
||||
|
||||
Lirk:
|
||||
- Fixed several issues with weapon impact sounds.
|
||||
|
||||
@ -8,6 +8,5 @@ ForceBorderless = true
|
||||
AttachLightHitEffectCrashFix = true
|
||||
AutoScaleHeroMenu = true
|
||||
WarnFormTypeCollisions = true
|
||||
GogVramLeakFix = true
|
||||
MenuAspectRatioFix = true
|
||||
LoadScreenFrameFix = true
|
||||
|
||||
@ -15,7 +15,6 @@
|
||||
#include "Patches/AttachLightHitEffectCrash.h"
|
||||
#include "Patches/PluginsTxtPatch.h"
|
||||
#include "Patches/FormTypeCollisionDetector.h"
|
||||
#include "Patches/GogVramLeakFix.h"
|
||||
#include "Patches/ForceLanguage.h"
|
||||
#include "Patches/MenuAspectRatioFix.h"
|
||||
|
||||
@ -32,7 +31,6 @@ static std::map<std::string, bool> g_settings{
|
||||
{ "ForceBorderless", true },
|
||||
{ "AttachLightHitEffectCrashFix", true },
|
||||
{ "AutoScaleHeroMenu", true },
|
||||
{ "GogVramLeakFix", true },
|
||||
{ "MenuAspectRatioFix", true },
|
||||
{ "LoadScreenFrameFix", true }
|
||||
};
|
||||
@ -75,11 +73,6 @@ namespace {
|
||||
|
||||
if (message->type == MessagingInterface::kPostLoad) {
|
||||
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")) {
|
||||
logger::info("Installing light attach crash fix...");
|
||||
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.
|
||||
// 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.
|
||||
// Thanks Nukem and po3, via Widescreen Scale Removed by SkyHorizon (GPL-3.0).
|
||||
// Technique by Nukem and po3.
|
||||
template <class T, std::size_t BYTES>
|
||||
void hook_function_prologue(std::uintptr_t a_src)
|
||||
{
|
||||
|
||||
@ -1,36 +0,0 @@
|
||||
#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,8 +32,9 @@
|
||||
// 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.
|
||||
//
|
||||
// Based on Widescreen Scale Removed by SkyHorizon (GPL-3.0)
|
||||
// https://www.nexusmods.com/skyrimspecialedition/mods/136793
|
||||
// The mode-restoration approach follows Widescreen Scale Removed by SkyHorizon
|
||||
// (https://www.nexusmods.com/skyrimspecialedition/mods/136793). The table is re-derived from the
|
||||
// 1.6.640/1.6.1170 binaries (see CLAUDE.md for the method) and the implementation is original.
|
||||
namespace MenuAspectRatioFix
|
||||
{
|
||||
using ScaleModeType = RE::GFxMovieView::ScaleModeType;
|
||||
@ -85,6 +86,10 @@ namespace MenuAspectRatioFix
|
||||
{ "MagicMenu"sv, ScaleModeType::kNoBorder },
|
||||
{ "MessageBox"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 },
|
||||
{ "TrainingMenu"sv, ScaleModeType::kNoBorder },
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user