mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Removed the pop-up message box about not finding the original ddraw.dll, now the error is reported in the log file.
Added a note about setting a custom background for the character screen to the hero appearance mod.
This commit is contained in:
@@ -357,6 +357,7 @@ ProcessorIdle=-1
|
||||
LoadProtoMaxLimit=-1
|
||||
|
||||
;Set to 1 if using the hero appearance mod
|
||||
;You can add AppChCrt.frm and AppChEdt.frm files to art/intrface/ to set a custom background for the character screen
|
||||
EnableHeroAppearanceMod=0
|
||||
|
||||
;Set to 1 to skip the 3 opening movies
|
||||
|
||||
@@ -138,11 +138,7 @@ void SetPageNum() {
|
||||
if (NewTick - OldTick > 166) { // time to draw
|
||||
OldTick = NewTick;
|
||||
|
||||
if (blip == '_') {
|
||||
blip = ' ';
|
||||
} else {
|
||||
blip = '_';
|
||||
}
|
||||
blip = (blip == '_') ? ' ' : '_';
|
||||
|
||||
sprintf_s(TempText, 32, "#%d%c", tempPageOffset / 10 + 1, '_');
|
||||
if (tempPageOffset == -1) {
|
||||
|
||||
+32
-32
@@ -76,6 +76,8 @@
|
||||
|
||||
#include "main.h"
|
||||
|
||||
ddrawDll ddraw;
|
||||
|
||||
namespace sfall
|
||||
{
|
||||
|
||||
@@ -208,6 +210,7 @@ inline void SfallInit() {
|
||||
isDebug = (GetPrivateProfileIntA("Debugging", "Enable", 0, ::sfall::ddrawIni) != 0);
|
||||
if (isDebug) {
|
||||
LoggingInit();
|
||||
if (!ddraw.dll) dlog("Error: Cannot load the original ddraw.dll library.\n", DL_MAIN);
|
||||
}
|
||||
|
||||
char filepath[MAX_PATH];
|
||||
@@ -220,8 +223,8 @@ inline void SfallInit() {
|
||||
typedef int (_stdcall *chk64bitproc)(HANDLE, int*);
|
||||
HMODULE h = LoadLibrary("Kernel32.dll");
|
||||
chk64bitproc proc = (chk64bitproc)GetProcAddress(h, "IsWow64Process");
|
||||
if(proc) proc(GetCurrentProcess(), &is64bit);
|
||||
else is64bit=0;
|
||||
if (proc) proc(GetCurrentProcess(), &is64bit);
|
||||
else is64bit = 0;
|
||||
FreeLibrary(h);
|
||||
|
||||
CompatModeCheck(HKEY_CURRENT_USER, filepath, is64bit?KEY_WOW64_64KEY:0);
|
||||
@@ -257,7 +260,8 @@ inline void SfallInit() {
|
||||
strcpy_s(ini, ".\\");
|
||||
strcat_s(ini, cmdline);
|
||||
HANDLE h = CreateFileA(cmdline, GENERIC_READ, 0, 0, OPEN_EXISTING, 0, 0);
|
||||
if (h != INVALID_HANDLE_VALUE) CloseHandle(h);
|
||||
if (h != INVALID_HANDLE_VALUE)
|
||||
CloseHandle(h);
|
||||
else {
|
||||
MessageBox(0, "You gave a command line argument to fallout, but it couldn't be matched to a file\n" \
|
||||
"Using default ddraw.ini instead", "Warning", MB_TASKMODAL);
|
||||
@@ -274,43 +278,39 @@ inline void SfallInit() {
|
||||
|
||||
}
|
||||
|
||||
ddrawDll ddraw;
|
||||
static bool LoadOriginalDll(DWORD dwReason) {
|
||||
switch (dwReason) {
|
||||
case DLL_PROCESS_ATTACH:
|
||||
char path[MAX_PATH];
|
||||
CopyMemory(path + GetSystemDirectoryA(path , MAX_PATH - 10), "\\ddraw.dll", 11); // path to original dll
|
||||
ddraw.dll = LoadLibrary(path);
|
||||
if (!ddraw.dll || ddraw.dll == INVALID_HANDLE_VALUE) {
|
||||
MessageBox(0, "Cannot load the original ddraw.dll library.", "sfall", MB_ICONERROR);
|
||||
ExitProcess(-1);
|
||||
break;
|
||||
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.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");
|
||||
return true;
|
||||
case DLL_PROCESS_DETACH:
|
||||
FreeLibrary(ddraw.dll);
|
||||
if (ddraw.dll) FreeLibrary(ddraw.dll);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user