mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
@@ -61,6 +61,7 @@ SpeedMultiInitial=100
|
||||
;A DX9 mode is required for any graphics related script extender functions to work (i.e. fullscreen shaders)
|
||||
;Modes 1, 2 and 3 are no longer supported
|
||||
;If using the hi-res patch by Mash, this option will always be read from the main ddraw.ini file
|
||||
;Note: When using an external DirectDraw wrapper (ddraw.dll file in <GameRoot>\wrapper\), DX9 mode will not be available
|
||||
Mode=0
|
||||
|
||||
;If using a DX9 mode, this changes the resolution
|
||||
|
||||
+2
-2
@@ -217,14 +217,14 @@ void Setting::init(const char* exeFileName, std::string &cmdline) {
|
||||
|
||||
// Read High Resolution config
|
||||
|
||||
int windowed = (sf::IniReader::GetInt("Main", "WINDOWED", 0, f2ResIni) != 0) ? 1 : 0;
|
||||
int windowed = (!sf::extWrapper && sf::IniReader::GetInt("Main", "WINDOWED", 0, f2ResIni) != 0) ? 1 : 0;
|
||||
if (windowed && sf::IniReader::GetInt("Main", "WINDOWED_FULLSCREEN", 0, f2ResIni)) {
|
||||
windowed += 1;
|
||||
SCR_WIDTH = GetSystemMetrics(SM_CXSCREEN);
|
||||
SCR_HEIGHT = GetSystemMetrics(SM_CYSCREEN);
|
||||
}
|
||||
|
||||
int gMode = sf::IniReader::GetInt("Main", "GRAPHICS_MODE", 2, f2ResIni);
|
||||
int gMode = sf::IniReader::GetInt("Main", "GRAPHICS_MODE", 0, f2ResIni);
|
||||
if (gMode < 0 || gMode > 2) gMode = 2;
|
||||
if (gMode <= 1) sf::Graphics::mode = 1 + windowed; // DD7: 1 or 2/3 (vanilla)
|
||||
if (gMode == 2) sf::Graphics::mode = 4 + windowed; // DX9: 4 or 5/6 (sfall)
|
||||
|
||||
@@ -1251,10 +1251,10 @@ void Graphics::init() {
|
||||
: IniReader::GetConfigInt("Graphics", "Mode", 0);
|
||||
if (gMode >= 4) Graphics::mode = gMode;
|
||||
|
||||
if (Graphics::mode < 0 || Graphics::mode > 6) {
|
||||
if (extWrapper || Graphics::mode < 0 || Graphics::mode > 6) {
|
||||
Graphics::mode = 0;
|
||||
}
|
||||
IsWindowedMode = (mode == 2 || mode == 3 || mode >= 5);
|
||||
Graphics::IsWindowedMode = (Graphics::mode == 2 || Graphics::mode == 3 || Graphics::mode >= 5);
|
||||
|
||||
if (Graphics::mode >= 4) {
|
||||
dlog("Applying DX9 graphics patch.", DL_INIT);
|
||||
@@ -1269,7 +1269,7 @@ void Graphics::init() {
|
||||
}
|
||||
FreeLibrary(h);
|
||||
|
||||
SafeWrite8(0x50FB6B, '2'); // Set call DirectDrawCreate2
|
||||
SafeWrite8(0x50FB6B, '2'); // Set call DirectDrawCreat2
|
||||
HookCall(0x44260C, game_init_hook);
|
||||
|
||||
MakeJump(fo::funcoffs::GNW95_SetPaletteEntries_ + 1, GNW95_SetPaletteEntries_replacement); // 0x4CB310
|
||||
|
||||
+39
-32
@@ -99,7 +99,9 @@ bool isDebug = false;
|
||||
|
||||
bool versionCHI = false;
|
||||
|
||||
char falloutConfigName[65];
|
||||
bool extWrapper = false;
|
||||
|
||||
static char falloutConfigName[65];
|
||||
|
||||
static void InitModules() {
|
||||
dlogr("In InitModules", DL_INIT);
|
||||
@@ -310,39 +312,44 @@ defaultIni:
|
||||
|
||||
static void LoadOriginalDll(DWORD fdwReason) {
|
||||
switch (fdwReason) {
|
||||
case DLL_PROCESS_ATTACH:
|
||||
case DLL_PROCESS_ATTACH:
|
||||
ddraw.dll = LoadLibraryA("wrapper\\ddraw.dll"); // external DirectDraw wrapper
|
||||
if (ddraw.dll) {
|
||||
sfall::extWrapper = true;
|
||||
} else {
|
||||
char path[MAX_PATH];
|
||||
CopyMemory(path + GetSystemDirectoryA(path , MAX_PATH - 10), "\\ddraw.dll", 11); // path to original dll
|
||||
CopyMemory(path + GetSystemDirectoryA(path, MAX_PATH - 10), "\\ddraw.dll", 11); // path to original dll
|
||||
ddraw.dll = LoadLibraryA(path);
|
||||
if (ddraw.dll) {
|
||||
ddraw.AcquireDDThreadLock = GetProcAddress(ddraw.dll, "AcquireDDThreadLock");
|
||||
ddraw.CheckFullscreen = GetProcAddress(ddraw.dll, "CheckFullscreen");
|
||||
ddraw.CompleteCreateSysmemSurface = GetProcAddress(ddraw.dll, "CompleteCreateSysmemSurface");
|
||||
ddraw.D3DParseUnknownCommand = GetProcAddress(ddraw.dll, "D3DParseUnknownCommand");
|
||||
ddraw.DDGetAttachedSurfaceLcl = GetProcAddress(ddraw.dll, "DDGetAttachedSurfaceLcl");
|
||||
ddraw.DDInternalLock = GetProcAddress(ddraw.dll, "DDInternalLock");
|
||||
ddraw.DDInternalUnlock = GetProcAddress(ddraw.dll, "DDInternalUnlock");
|
||||
ddraw.DSoundHelp = GetProcAddress(ddraw.dll, "DSoundHelp");
|
||||
ddraw.DirectDrawCreateClipper = GetProcAddress(ddraw.dll, "DirectDrawCreateClipper");
|
||||
ddraw.DirectDrawCreate = GetProcAddress(ddraw.dll, "DirectDrawCreate");
|
||||
ddraw.DirectDrawCreateEx = GetProcAddress(ddraw.dll, "DirectDrawCreateEx");
|
||||
ddraw.DirectDrawEnumerateA = GetProcAddress(ddraw.dll, "DirectDrawEnumerateA");
|
||||
ddraw.DirectDrawEnumerateExA = GetProcAddress(ddraw.dll, "DirectDrawEnumerateExA");
|
||||
ddraw.DirectDrawEnumerateExW = GetProcAddress(ddraw.dll, "DirectDrawEnumerateExW");
|
||||
ddraw.DirectDrawEnumerateW = GetProcAddress(ddraw.dll, "DirectDrawEnumerateW");
|
||||
ddraw.DllCanUnloadNow = GetProcAddress(ddraw.dll, "DllCanUnloadNow");
|
||||
ddraw.DllGetClassObject = GetProcAddress(ddraw.dll, "DllGetClassObject");
|
||||
ddraw.GetDDSurfaceLocal = GetProcAddress(ddraw.dll, "GetDDSurfaceLocal");
|
||||
ddraw.GetOLEThunkData = GetProcAddress(ddraw.dll, "GetOLEThunkData");
|
||||
ddraw.GetSurfaceFromDC = GetProcAddress(ddraw.dll, "GetSurfaceFromDC");
|
||||
ddraw.RegisterSpecialCase = GetProcAddress(ddraw.dll, "RegisterSpecialCase");
|
||||
ddraw.ReleaseDDThreadLock = GetProcAddress(ddraw.dll, "ReleaseDDThreadLock");
|
||||
ddraw.SetAppCompatData = GetProcAddress(ddraw.dll, "SetAppCompatData");
|
||||
}
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
if (ddraw.dll) FreeLibrary(ddraw.dll);
|
||||
break;
|
||||
}
|
||||
if (ddraw.dll) {
|
||||
ddraw.AcquireDDThreadLock = GetProcAddress(ddraw.dll, "AcquireDDThreadLock");
|
||||
ddraw.CheckFullscreen = GetProcAddress(ddraw.dll, "CheckFullscreen");
|
||||
ddraw.CompleteCreateSysmemSurface = GetProcAddress(ddraw.dll, "CompleteCreateSysmemSurface");
|
||||
ddraw.D3DParseUnknownCommand = GetProcAddress(ddraw.dll, "D3DParseUnknownCommand");
|
||||
ddraw.DDGetAttachedSurfaceLcl = GetProcAddress(ddraw.dll, "DDGetAttachedSurfaceLcl");
|
||||
ddraw.DDInternalLock = GetProcAddress(ddraw.dll, "DDInternalLock");
|
||||
ddraw.DDInternalUnlock = GetProcAddress(ddraw.dll, "DDInternalUnlock");
|
||||
ddraw.DSoundHelp = GetProcAddress(ddraw.dll, "DSoundHelp");
|
||||
ddraw.DirectDrawCreateClipper = GetProcAddress(ddraw.dll, "DirectDrawCreateClipper");
|
||||
ddraw.DirectDrawCreate = GetProcAddress(ddraw.dll, "DirectDrawCreate");
|
||||
ddraw.DirectDrawCreateEx = GetProcAddress(ddraw.dll, "DirectDrawCreateEx");
|
||||
ddraw.DirectDrawEnumerateA = GetProcAddress(ddraw.dll, "DirectDrawEnumerateA");
|
||||
ddraw.DirectDrawEnumerateExA = GetProcAddress(ddraw.dll, "DirectDrawEnumerateExA");
|
||||
ddraw.DirectDrawEnumerateExW = GetProcAddress(ddraw.dll, "DirectDrawEnumerateExW");
|
||||
ddraw.DirectDrawEnumerateW = GetProcAddress(ddraw.dll, "DirectDrawEnumerateW");
|
||||
ddraw.DllCanUnloadNow = GetProcAddress(ddraw.dll, "DllCanUnloadNow");
|
||||
ddraw.DllGetClassObject = GetProcAddress(ddraw.dll, "DllGetClassObject");
|
||||
ddraw.GetDDSurfaceLocal = GetProcAddress(ddraw.dll, "GetDDSurfaceLocal");
|
||||
ddraw.GetOLEThunkData = GetProcAddress(ddraw.dll, "GetOLEThunkData");
|
||||
ddraw.GetSurfaceFromDC = GetProcAddress(ddraw.dll, "GetSurfaceFromDC");
|
||||
ddraw.RegisterSpecialCase = GetProcAddress(ddraw.dll, "RegisterSpecialCase");
|
||||
ddraw.ReleaseDDThreadLock = GetProcAddress(ddraw.dll, "ReleaseDDThreadLock");
|
||||
ddraw.SetAppCompatData = GetProcAddress(ddraw.dll, "SetAppCompatData");
|
||||
}
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
if (ddraw.dll) FreeLibrary(ddraw.dll);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -83,7 +83,7 @@ namespace sfall
|
||||
|
||||
extern bool versionCHI;
|
||||
|
||||
extern char falloutConfigName[65];
|
||||
extern bool extWrapper;
|
||||
|
||||
__inline long GetIntHRPValue(DWORD addr) {
|
||||
return *reinterpret_cast<DWORD*>(HRP::Setting::GetAddress(addr));
|
||||
|
||||
Reference in New Issue
Block a user