mirror of
https://github.com/FunkyFr3sh/cnc-ddraw.git
synced 2025-03-15 06:04:49 +01:00
move all ini settings to c_config
This commit is contained in:
parent
5ebda1fec7
commit
fa8cdbd0df
76
inc/config.h
76
inc/config.h
@ -14,7 +14,79 @@ typedef struct CNCDDRAWCONFIG
|
||||
char game_path[MAX_PATH];
|
||||
char process_file_name[MAX_PATH];
|
||||
char process_file_ext[MAX_PATH];
|
||||
|
||||
/* Optional settings */
|
||||
|
||||
BOOL fullscreen;
|
||||
BOOL windowed;
|
||||
BOOL maintas;
|
||||
BOOL boxing;
|
||||
int maxfps;
|
||||
BOOL vsync;
|
||||
BOOL adjmouse;
|
||||
char shader[MAX_PATH];
|
||||
char renderer[256];
|
||||
BOOL devmode;
|
||||
BOOL border;
|
||||
int save_settings;
|
||||
BOOL resizable;
|
||||
int d3d9_filter;
|
||||
BOOL vhack;
|
||||
char screenshot_dir[MAX_PATH];
|
||||
BOOL toggle_borderless;
|
||||
|
||||
/* Compatibility settings */
|
||||
|
||||
BOOL noactivateapp;
|
||||
int maxgameticks;
|
||||
BOOL nonexclusive;
|
||||
BOOL singlecpu;
|
||||
int resolutions;
|
||||
int fixchilds;
|
||||
BOOL hook_peekmessage;
|
||||
int minfps;
|
||||
DWORD minfps_tick_len;
|
||||
|
||||
/* Undocumented settings */
|
||||
|
||||
BOOL releasealt;
|
||||
BOOL fixnotresponding;
|
||||
int hook;
|
||||
int guard_lines;
|
||||
int max_resolutions;
|
||||
BOOL limit_bltfast;
|
||||
BOOL lock_surfaces;
|
||||
BOOL allow_wmactivate;
|
||||
BOOL flipclear;
|
||||
BOOL fixmousehook;
|
||||
BOOL rgb555;
|
||||
BOOL no_dinput_hook;
|
||||
int refresh_rate;
|
||||
int anti_aliased_fonts_min_size;
|
||||
int custom_width;
|
||||
int custom_height;
|
||||
int min_font_size;
|
||||
|
||||
/* Hotkeys */
|
||||
|
||||
struct
|
||||
{
|
||||
int toggle_fullscreen;
|
||||
int toggle_maximize;
|
||||
int unlock_cursor1;
|
||||
int unlock_cursor2;
|
||||
int screenshot;
|
||||
} hotkeys;
|
||||
|
||||
/* Game specific settings */
|
||||
|
||||
BOOL remove_menu;
|
||||
|
||||
BOOL armadahack;
|
||||
BOOL tshack;
|
||||
BOOL infantryhack;
|
||||
BOOL stronghold_hack;
|
||||
BOOL mgs_hack;
|
||||
|
||||
} CNCDDRAWCONFIG;
|
||||
|
||||
@ -23,8 +95,4 @@ extern CNCDDRAWCONFIG g_config;
|
||||
void cfg_load();
|
||||
void cfg_save();
|
||||
|
||||
BOOL cfg_get_bool(LPCSTR key, BOOL default_value);
|
||||
int cfg_get_int(LPCSTR key, int default_value);
|
||||
DWORD cfg_get_string(LPCSTR key, LPCSTR default_value, LPSTR out_string, DWORD out_size);
|
||||
|
||||
#endif
|
||||
|
60
inc/dd.h
60
inc/dd.h
@ -65,13 +65,11 @@ typedef struct CNCDDRAW
|
||||
DWORD width;
|
||||
DWORD height;
|
||||
DWORD bpp;
|
||||
BOOL windowed;
|
||||
BOOL border;
|
||||
BOOL boxing;
|
||||
|
||||
DEVMODE mode;
|
||||
struct IDirectDrawSurfaceImpl* primary;
|
||||
char title[128];
|
||||
char screenshot_dir[MAX_PATH];
|
||||
|
||||
CRITICAL_SECTION cs;
|
||||
|
||||
/* real export from system32\ddraw.dll */
|
||||
@ -81,9 +79,6 @@ typedef struct CNCDDRAW
|
||||
|
||||
struct
|
||||
{
|
||||
int maxfps;
|
||||
int minfps;
|
||||
DWORD minfps_tick_len;
|
||||
int width;
|
||||
int height;
|
||||
int opengl_y_align;
|
||||
@ -119,63 +114,20 @@ typedef struct CNCDDRAW
|
||||
RECT rc;
|
||||
} mouse;
|
||||
|
||||
struct
|
||||
{
|
||||
int toggle_fullscreen;
|
||||
int toggle_maximize;
|
||||
int unlock_cursor1;
|
||||
int unlock_cursor2;
|
||||
int screenshot;
|
||||
} hotkeys;
|
||||
|
||||
DWORD(WINAPI* renderer)(void);
|
||||
HWND hwnd;
|
||||
WNDPROC wndproc;
|
||||
struct { DWORD x; DWORD y; } cursor;
|
||||
BOOL adjmouse;
|
||||
BOOL devmode;
|
||||
BOOL vsync;
|
||||
BOOL vhack;
|
||||
int upscale_hack_width;
|
||||
int upscale_hack_height;
|
||||
BOOL isredalert;
|
||||
BOOL iscnc1;
|
||||
BOOL iskkndx;
|
||||
LONG upscale_hack_active;
|
||||
DWORD(WINAPI* renderer)(void);
|
||||
BOOL fullscreen;
|
||||
BOOL maintas;
|
||||
BOOL noactivateapp;
|
||||
char shader[MAX_PATH];
|
||||
BOOL wine;
|
||||
HCURSOR old_cursor;
|
||||
int show_cursor_count;
|
||||
BOOL allow_wmactivate;
|
||||
BOOL opengl_core;
|
||||
BOOL resizable;
|
||||
BOOL toggle_borderless;
|
||||
BOOL nonexclusive;
|
||||
int fixchilds;
|
||||
BOOL fixnotresponding;
|
||||
BOOL flipclear;
|
||||
BOOL lock_surfaces;
|
||||
int d3d9_filter;
|
||||
BOOL d3d9on12;
|
||||
int guard_lines;
|
||||
int resolutions;
|
||||
int max_resolutions;
|
||||
int refresh_rate;
|
||||
int custom_width;
|
||||
int custom_height;
|
||||
BOOL limit_bltfast;
|
||||
BOOL armadahack;
|
||||
BOOL tshack;
|
||||
BOOL infantryhack;
|
||||
BOOL stronghold_hack;
|
||||
BOOL mgs_hack;
|
||||
BOOL remove_menu;
|
||||
int maxgameticks;
|
||||
BOOL alt_key_down;
|
||||
BOOL releasealt;
|
||||
BOOL bnet_active;
|
||||
BOOL bnet_was_fullscreen;
|
||||
BOOL bnet_was_upscaled;
|
||||
@ -186,12 +138,12 @@ typedef struct CNCDDRAW
|
||||
BOOL child_window_exists;
|
||||
BOOL got_child_windows;
|
||||
DWORD last_set_window_pos_tick; /* WINE hack */
|
||||
BOOL show_driver_warning;
|
||||
SPEEDLIMITER ticks_limiter;
|
||||
SPEEDLIMITER flip_limiter;
|
||||
DWORD gui_thread_id;
|
||||
BOOL rgb555;
|
||||
BOOL hook_peekmessage;
|
||||
BOOL show_driver_warning;
|
||||
BOOL d3d9on12;
|
||||
BOOL opengl_core;
|
||||
|
||||
} CNCDDRAW;
|
||||
|
||||
|
@ -103,7 +103,6 @@ extern GETDISKFREESPACEAPROC real_GetDiskFreeSpaceA;
|
||||
extern COCREATEINSTANCEPROC real_CoCreateInstance;
|
||||
extern SETUNHANDLEDEXCEPTIONFILTERPROC real_SetUnhandledExceptionFilter;
|
||||
|
||||
extern int g_hook_method;
|
||||
extern BOOL g_hook_active;
|
||||
extern HOOKLIST g_hook_hooklist[];
|
||||
|
||||
|
228
src/config.c
228
src/config.c
@ -13,6 +13,9 @@
|
||||
|
||||
static void cfg_init();
|
||||
static void cfg_create_ini();
|
||||
static BOOL cfg_get_bool(LPCSTR key, BOOL default_value);
|
||||
static int cfg_get_int(LPCSTR key, int default_value);
|
||||
static DWORD cfg_get_string(LPCSTR key, LPCSTR default_value, LPSTR out_string, DWORD out_size);
|
||||
|
||||
CNCDDRAWCONFIG g_config =
|
||||
{ .window_rect = {.left = -32000, .top = -32000, .right = 0, .bottom = 0 }, .window_state = -1, .borderless_state = -1 };
|
||||
@ -21,171 +24,94 @@ void cfg_load()
|
||||
{
|
||||
cfg_init();
|
||||
|
||||
/* load settings from ini */
|
||||
g_ddraw->windowed = cfg_get_bool("windowed", FALSE);
|
||||
g_ddraw->fullscreen = cfg_get_bool("fullscreen", FALSE);
|
||||
g_ddraw->border = cfg_get_bool("border", TRUE);
|
||||
g_ddraw->boxing = cfg_get_bool("boxing", FALSE);
|
||||
g_ddraw->maintas = cfg_get_bool("maintas", FALSE);
|
||||
g_ddraw->adjmouse = cfg_get_bool("adjmouse", TRUE) || !cfg_get_bool("handlemouse", TRUE);
|
||||
g_ddraw->devmode = cfg_get_bool("devmode", FALSE);
|
||||
g_ddraw->vsync = cfg_get_bool("vsync", FALSE);
|
||||
g_ddraw->noactivateapp = cfg_get_bool("noactivateapp", FALSE);
|
||||
g_ddraw->vhack = cfg_get_bool("vhack", FALSE);
|
||||
g_ddraw->resizable = cfg_get_bool("resizable", TRUE);
|
||||
g_ddraw->toggle_borderless = cfg_get_bool("toggle_borderless", FALSE);
|
||||
g_ddraw->nonexclusive = cfg_get_bool("nonexclusive", FALSE);
|
||||
g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
|
||||
g_ddraw->flipclear = cfg_get_bool("flipclear", FALSE);
|
||||
g_ddraw->fixnotresponding = cfg_get_bool("fixnotresponding", FALSE);
|
||||
g_ddraw->lock_surfaces = cfg_get_bool("lock_surfaces", FALSE);
|
||||
g_ddraw->releasealt = cfg_get_bool("releasealt", FALSE);
|
||||
g_ddraw->d3d9_filter = cfg_get_int("d3d9_filter", FILTER_CUBIC);
|
||||
g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL);
|
||||
g_ddraw->allow_wmactivate = cfg_get_bool("allow_wmactivate", FALSE);
|
||||
g_ddraw->guard_lines = cfg_get_int("guard_lines", 200);
|
||||
g_ddraw->max_resolutions = cfg_get_int("max_resolutions", 0);
|
||||
g_ddraw->refresh_rate = cfg_get_int("refresh_rate", 0);
|
||||
g_ddraw->custom_width = cfg_get_int("custom_width", 0);
|
||||
g_ddraw->custom_height = cfg_get_int("custom_height", 0);
|
||||
g_ddraw->limit_bltfast = cfg_get_bool("limit_bltfast", FALSE);
|
||||
g_ddraw->rgb555 = cfg_get_bool("rgb555", FALSE);
|
||||
g_ddraw->hook_peekmessage = cfg_get_bool("hook_peekmessage", FALSE);
|
||||
g_ddraw->remove_menu = cfg_get_bool("remove_menu", FALSE);
|
||||
cfg_get_string("screenshotdir", ".\\Screenshots\\", g_ddraw->screenshot_dir, sizeof(g_ddraw->screenshot_dir));
|
||||
|
||||
|
||||
g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE);
|
||||
g_ddraw->tshack = cfg_get_bool("tshack", FALSE);
|
||||
g_ddraw->infantryhack = cfg_get_bool("infantryhack", FALSE);
|
||||
g_ddraw->stronghold_hack = cfg_get_bool("stronghold_hack", FALSE);
|
||||
g_ddraw->mgs_hack = cfg_get_bool("mgs_hack", FALSE);
|
||||
|
||||
if (cfg_get_bool("game_handles_close", FALSE) || g_ddraw->infantryhack)
|
||||
{
|
||||
GameHandlesClose = TRUE;
|
||||
}
|
||||
|
||||
g_ddraw->hotkeys.toggle_fullscreen = cfg_get_int("keytogglefullscreen", VK_RETURN);
|
||||
g_ddraw->hotkeys.toggle_maximize = cfg_get_int("keytogglemaximize", VK_NEXT);
|
||||
g_ddraw->hotkeys.unlock_cursor1 = cfg_get_int("keyunlockcursor1", VK_TAB);
|
||||
g_ddraw->hotkeys.unlock_cursor2 = cfg_get_int("keyunlockcursor2", VK_RCONTROL);
|
||||
g_ddraw->hotkeys.screenshot = cfg_get_int("keyscreenshot", VK_SNAPSHOT);
|
||||
/* Optional settings */
|
||||
|
||||
g_config.window_rect.right = cfg_get_int("width", 0);
|
||||
g_config.window_rect.bottom = cfg_get_int("height", 0);
|
||||
g_config.fullscreen = cfg_get_bool("fullscreen", FALSE);
|
||||
g_config.windowed = cfg_get_bool("windowed", FALSE);
|
||||
g_config.maintas = cfg_get_bool("maintas", FALSE);
|
||||
g_config.boxing = cfg_get_bool("boxing", FALSE);
|
||||
g_config.maxfps = cfg_get_int("maxfps", -1);
|
||||
g_config.vsync = cfg_get_bool("vsync", FALSE);
|
||||
g_config.adjmouse = cfg_get_bool("adjmouse", TRUE) || !cfg_get_bool("handlemouse", TRUE);
|
||||
cfg_get_string("shader", "Shaders\\cubic\\catmull-rom-bilinear.glsl", g_config.shader, sizeof(g_config.shader));
|
||||
g_config.window_rect.left = cfg_get_int("posX", -32000);
|
||||
g_config.window_rect.top = cfg_get_int("posY", -32000);
|
||||
|
||||
cfg_get_string("renderer", "auto", g_config.renderer, sizeof(g_config.renderer));
|
||||
g_config.devmode = cfg_get_bool("devmode", FALSE);
|
||||
g_config.border = cfg_get_bool("border", TRUE);
|
||||
g_config.save_settings = cfg_get_int("savesettings", 1);
|
||||
g_config.resizable = cfg_get_bool("resizable", TRUE);
|
||||
g_config.d3d9_filter = cfg_get_int("d3d9_filter", FILTER_CUBIC);
|
||||
g_config.vhack = cfg_get_bool("vhack", FALSE);
|
||||
cfg_get_string("screenshotdir", ".\\Screenshots\\", g_config.screenshot_dir, sizeof(g_config.screenshot_dir));
|
||||
g_config.toggle_borderless = cfg_get_bool("toggle_borderless", FALSE);
|
||||
|
||||
g_ddraw->render.maxfps = cfg_get_int("maxfps", -1);
|
||||
g_ddraw->render.minfps = cfg_get_int("minfps", 0);
|
||||
/* Compatibility settings */
|
||||
|
||||
if (g_ddraw->render.minfps > 1000)
|
||||
g_config.noactivateapp = cfg_get_bool("noactivateapp", FALSE);
|
||||
g_config.maxgameticks = cfg_get_int("maxgameticks", 0);
|
||||
g_config.nonexclusive = cfg_get_bool("nonexclusive", FALSE);
|
||||
g_config.singlecpu = cfg_get_bool("singlecpu", TRUE);
|
||||
g_config.resolutions = cfg_get_int("resolutions", RESLIST_NORMAL);
|
||||
g_config.fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
|
||||
g_config.hook_peekmessage = cfg_get_bool("hook_peekmessage", FALSE);
|
||||
|
||||
g_config.minfps = cfg_get_int("minfps", 0);
|
||||
|
||||
if (g_config.minfps > 1000)
|
||||
{
|
||||
g_ddraw->render.minfps = 1000;
|
||||
g_config.minfps = 1000;
|
||||
}
|
||||
|
||||
if (g_ddraw->render.minfps > 0)
|
||||
if (g_config.minfps > 0)
|
||||
{
|
||||
g_ddraw->render.minfps_tick_len = (DWORD)(1000.0f / g_ddraw->render.minfps);
|
||||
g_config.minfps_tick_len = (DWORD)(1000.0f / g_config.minfps);
|
||||
}
|
||||
|
||||
/* can't fully set it up here due to missing g_ddraw->mode.dmDisplayFrequency */
|
||||
g_fpsl.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||
/* Undocumented settings */
|
||||
|
||||
g_ddraw->maxgameticks = cfg_get_int("maxgameticks", 0);
|
||||
g_config.releasealt = cfg_get_bool("releasealt", FALSE);
|
||||
GameHandlesClose = cfg_get_bool("game_handles_close", FALSE);
|
||||
g_config.fixnotresponding = cfg_get_bool("fixnotresponding", FALSE);
|
||||
g_config.hook = cfg_get_int("hook", 4);
|
||||
g_config.guard_lines = cfg_get_int("guard_lines", 200);
|
||||
g_config.max_resolutions = cfg_get_int("max_resolutions", 0);
|
||||
g_config.limit_bltfast = cfg_get_bool("limit_bltfast", FALSE);
|
||||
g_config.lock_surfaces = cfg_get_bool("lock_surfaces", FALSE);
|
||||
g_config.allow_wmactivate = cfg_get_bool("allow_wmactivate", FALSE);
|
||||
g_config.flipclear = cfg_get_bool("flipclear", FALSE);
|
||||
g_config.fixmousehook = cfg_get_bool("fixmousehook", FALSE);
|
||||
g_config.rgb555 = cfg_get_bool("rgb555", FALSE);
|
||||
g_config.no_dinput_hook = cfg_get_bool("no_dinput_hook", FALSE);
|
||||
g_config.refresh_rate = cfg_get_int("refresh_rate", 0);
|
||||
g_config.anti_aliased_fonts_min_size = cfg_get_int("anti_aliased_fonts_min_size", 13);
|
||||
g_config.custom_width = cfg_get_int("custom_width", 0);
|
||||
g_config.custom_height = cfg_get_int("custom_height", 0);
|
||||
g_config.min_font_size = cfg_get_int("min_font_size", 0);
|
||||
|
||||
if (g_ddraw->maxgameticks > 0 && g_ddraw->maxgameticks <= 1000)
|
||||
/* Hotkeys */
|
||||
|
||||
g_config.hotkeys.toggle_fullscreen = cfg_get_int("keytogglefullscreen", VK_RETURN);
|
||||
g_config.hotkeys.toggle_maximize = cfg_get_int("keytogglemaximize", VK_NEXT);
|
||||
g_config.hotkeys.unlock_cursor1 = cfg_get_int("keyunlockcursor1", VK_TAB);
|
||||
g_config.hotkeys.unlock_cursor2 = cfg_get_int("keyunlockcursor2", VK_RCONTROL);
|
||||
g_config.hotkeys.screenshot = cfg_get_int("keyscreenshot", VK_SNAPSHOT);
|
||||
|
||||
/* Game specific settings */
|
||||
|
||||
g_config.remove_menu = cfg_get_bool("remove_menu", FALSE); /* Added for HoMM4 */
|
||||
|
||||
g_config.armadahack = cfg_get_bool("armadahack", FALSE);
|
||||
g_config.tshack = cfg_get_bool("tshack", FALSE);
|
||||
g_config.infantryhack = cfg_get_bool("infantryhack", FALSE);
|
||||
g_config.stronghold_hack = cfg_get_bool("stronghold_hack", FALSE);
|
||||
g_config.mgs_hack = cfg_get_bool("mgs_hack", FALSE);
|
||||
|
||||
if (g_config.infantryhack)
|
||||
{
|
||||
g_ddraw->ticks_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||
|
||||
float len = 1000.0f / g_ddraw->maxgameticks;
|
||||
g_ddraw->ticks_limiter.tick_length_ns = (LONGLONG)(len * 10000);
|
||||
g_ddraw->ticks_limiter.tick_length = (DWORD)(len + 0.5f);
|
||||
}
|
||||
|
||||
if (g_ddraw->maxgameticks >= 0 || g_ddraw->maxgameticks == -2)
|
||||
{
|
||||
/* always using 60 fps for flip... */
|
||||
g_ddraw->flip_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||
|
||||
float flip_len = 1000.0f / 60;
|
||||
g_ddraw->flip_limiter.tick_length_ns = (LONGLONG)(flip_len * 10000);
|
||||
g_ddraw->flip_limiter.tick_length = (DWORD)(flip_len + 0.5f);
|
||||
}
|
||||
|
||||
DWORD system_affinity;
|
||||
DWORD proc_affinity;
|
||||
HANDLE proc = GetCurrentProcess();
|
||||
|
||||
if (cfg_get_bool("singlecpu", TRUE))
|
||||
{
|
||||
SetProcessAffinityMask(proc, 1);
|
||||
}
|
||||
else if (GetProcessAffinityMask(proc, &proc_affinity, &system_affinity))
|
||||
{
|
||||
SetProcessAffinityMask(proc, system_affinity);
|
||||
}
|
||||
|
||||
if (GetProcessAffinityMask(proc, &proc_affinity, &system_affinity))
|
||||
{
|
||||
TRACE(" proc_affinity=%08X, system_affinity=%08X\n", proc_affinity, system_affinity);
|
||||
}
|
||||
|
||||
/* to do: read .glslp config file instead of the shader and apply the correct settings */
|
||||
cfg_get_string("shader", "Shaders\\cubic\\catmull-rom-bilinear.glsl", g_ddraw->shader, sizeof(g_ddraw->shader));
|
||||
|
||||
char renderer[256] = {0};
|
||||
cfg_get_string("renderer", "auto", renderer, sizeof(renderer));
|
||||
|
||||
TRACE(" Using %s renderer\n", renderer);
|
||||
|
||||
if (_strcmpi(renderer, "direct3d9on12") == 0)
|
||||
{
|
||||
g_ddraw->d3d9on12 = TRUE;
|
||||
}
|
||||
else if (_strcmpi(renderer, "openglcore") == 0)
|
||||
{
|
||||
g_ddraw->opengl_core = TRUE;
|
||||
}
|
||||
|
||||
if (tolower(renderer[0]) == 'd') /* direct3d9 or direct3d9on12*/
|
||||
{
|
||||
g_ddraw->renderer = d3d9_render_main;
|
||||
}
|
||||
else if (tolower(renderer[0]) == 's' || tolower(renderer[0]) == 'g') /* gdi */
|
||||
{
|
||||
g_ddraw->renderer = gdi_render_main;
|
||||
}
|
||||
else if (tolower(renderer[0]) == 'o') /* opengl or openglcore */
|
||||
{
|
||||
if (oglu_load_dll())
|
||||
{
|
||||
g_ddraw->renderer = ogl_render_main;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_ddraw->show_driver_warning = TRUE;
|
||||
g_ddraw->renderer = gdi_render_main;
|
||||
}
|
||||
}
|
||||
else /* auto */
|
||||
{
|
||||
if (!g_ddraw->wine && d3d9_is_available())
|
||||
{
|
||||
g_ddraw->renderer = d3d9_render_main;
|
||||
}
|
||||
else if (oglu_load_dll())
|
||||
{
|
||||
g_ddraw->renderer = ogl_render_main;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_ddraw->show_driver_warning = TRUE;
|
||||
g_ddraw->renderer = gdi_render_main;
|
||||
}
|
||||
GameHandlesClose = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1161,7 +1087,7 @@ static void cfg_init()
|
||||
}
|
||||
}
|
||||
|
||||
DWORD cfg_get_string(LPCSTR key, LPCSTR default_value, LPSTR out_string, DWORD out_size)
|
||||
static DWORD cfg_get_string(LPCSTR key, LPCSTR default_value, LPSTR out_string, DWORD out_size)
|
||||
{
|
||||
if (!g_config.ini_path[0])
|
||||
cfg_init();
|
||||
@ -1186,7 +1112,7 @@ DWORD cfg_get_string(LPCSTR key, LPCSTR default_value, LPSTR out_string, DWORD o
|
||||
return GetPrivateProfileStringA("ddraw", key, default_value, out_string, out_size, g_config.ini_path);
|
||||
}
|
||||
|
||||
BOOL cfg_get_bool(LPCSTR key, BOOL default_value)
|
||||
static BOOL cfg_get_bool(LPCSTR key, BOOL default_value)
|
||||
{
|
||||
char value[8];
|
||||
cfg_get_string(key, default_value ? "Yes" : "No", value, sizeof(value));
|
||||
@ -1194,7 +1120,7 @@ BOOL cfg_get_bool(LPCSTR key, BOOL default_value)
|
||||
return (_stricmp(value, "yes") == 0 || _stricmp(value, "true") == 0 || _stricmp(value, "1") == 0);
|
||||
}
|
||||
|
||||
int cfg_get_int(LPCSTR key, int default_value)
|
||||
static int cfg_get_int(LPCSTR key, int default_value)
|
||||
{
|
||||
char def_value[20];
|
||||
_snprintf(def_value, sizeof(def_value), "%d", default_value);
|
||||
|
225
src/dd.c
225
src/dd.c
@ -66,13 +66,13 @@ HRESULT dd_EnumDisplayModes(
|
||||
max_h = reg_m.dmPelsHeight;
|
||||
}
|
||||
|
||||
if (g_ddraw->stronghold_hack && max_w && (max_w % 8))
|
||||
if (g_config.stronghold_hack && max_w && (max_w % 8))
|
||||
{
|
||||
while (--max_w % 8);
|
||||
}
|
||||
|
||||
BOOL rlf = g_ddraw->resolutions == RESLIST_FULL;
|
||||
BOOL rlm = g_ddraw->resolutions == RESLIST_MINI;
|
||||
BOOL rlf = g_config.resolutions == RESLIST_FULL;
|
||||
BOOL rlm = g_config.resolutions == RESLIST_MINI;
|
||||
|
||||
SIZE resolutions[] =
|
||||
{
|
||||
@ -107,7 +107,7 @@ HRESULT dd_EnumDisplayModes(
|
||||
{ rlf ? 1720 : 0, rlf ? 720 : 0 },
|
||||
{ rlf ? 2560 : 0, rlf ? 1080 : 0 },
|
||||
/* Inject custom resolution */
|
||||
{ g_ddraw->custom_width, g_ddraw->custom_height },
|
||||
{ g_config.custom_width, g_config.custom_height },
|
||||
{ max_w, max_h },
|
||||
};
|
||||
|
||||
@ -120,7 +120,7 @@ HRESULT dd_EnumDisplayModes(
|
||||
}
|
||||
}
|
||||
|
||||
if ((g_ddraw->bpp && g_ddraw->resolutions == RESLIST_NORMAL) || g_ddraw->resolutions == RESLIST_FULL)
|
||||
if ((g_ddraw->bpp && g_config.resolutions == RESLIST_NORMAL) || g_config.resolutions == RESLIST_FULL)
|
||||
{
|
||||
TRACE(" g_ddraw->bpp=%u\n", g_ddraw->bpp);
|
||||
|
||||
@ -174,15 +174,15 @@ HRESULT dd_EnumDisplayModes(
|
||||
flags == m.dmDisplayFlags &&
|
||||
fixed_output == m.dmDisplayFixedOutput)
|
||||
{
|
||||
if (g_ddraw->stronghold_hack && m.dmPelsWidth && (m.dmPelsWidth % 8))
|
||||
if (g_config.stronghold_hack && m.dmPelsWidth && (m.dmPelsWidth % 8))
|
||||
{
|
||||
while (--m.dmPelsWidth % 8);
|
||||
}
|
||||
|
||||
if (i == 0 && g_ddraw->custom_width && g_ddraw->custom_height)
|
||||
if (i == 0 && g_config.custom_width && g_config.custom_height)
|
||||
{
|
||||
m.dmPelsWidth = g_ddraw->custom_width;
|
||||
m.dmPelsHeight = g_ddraw->custom_height;
|
||||
m.dmPelsWidth = g_config.custom_width;
|
||||
m.dmPelsHeight = g_config.custom_height;
|
||||
}
|
||||
|
||||
TRACE(
|
||||
@ -208,9 +208,9 @@ HRESULT dd_EnumDisplayModes(
|
||||
|
||||
if (s.ddpfPixelFormat.dwRGBBitCount == bpp_filter || !bpp_filter)
|
||||
{
|
||||
if (g_ddraw->bpp == 8 || g_ddraw->resolutions == RESLIST_FULL)
|
||||
if (g_ddraw->bpp == 8 || g_config.resolutions == RESLIST_FULL)
|
||||
{
|
||||
if (g_ddraw->max_resolutions && res_count++ >= g_ddraw->max_resolutions)
|
||||
if (g_config.max_resolutions && res_count++ >= g_config.max_resolutions)
|
||||
{
|
||||
TRACE(" resolution limit reached, stopping\n");
|
||||
return DD_OK;
|
||||
@ -233,9 +233,9 @@ HRESULT dd_EnumDisplayModes(
|
||||
|
||||
if (s.ddpfPixelFormat.dwRGBBitCount == bpp_filter || !bpp_filter)
|
||||
{
|
||||
if (g_ddraw->bpp == 16 || g_ddraw->resolutions == RESLIST_FULL)
|
||||
if (g_ddraw->bpp == 16 || g_config.resolutions == RESLIST_FULL)
|
||||
{
|
||||
if (g_ddraw->max_resolutions && res_count++ >= g_ddraw->max_resolutions)
|
||||
if (g_config.max_resolutions && res_count++ >= g_config.max_resolutions)
|
||||
{
|
||||
TRACE(" resolution limit reached, stopping\n");
|
||||
return DD_OK;
|
||||
@ -258,9 +258,9 @@ HRESULT dd_EnumDisplayModes(
|
||||
|
||||
if (s.ddpfPixelFormat.dwRGBBitCount == bpp_filter || !bpp_filter)
|
||||
{
|
||||
if (g_ddraw->bpp == 32 || g_ddraw->resolutions == RESLIST_FULL)
|
||||
if (g_ddraw->bpp == 32 || g_config.resolutions == RESLIST_FULL)
|
||||
{
|
||||
if (g_ddraw->max_resolutions && res_count++ >= g_ddraw->max_resolutions)
|
||||
if (g_config.max_resolutions && res_count++ >= g_config.max_resolutions)
|
||||
{
|
||||
TRACE(" resolution limit reached, stopping\n");
|
||||
return DD_OK;
|
||||
@ -290,14 +290,14 @@ HRESULT dd_EnumDisplayModes(
|
||||
}
|
||||
}
|
||||
|
||||
if (!g_ddraw->bpp || g_ddraw->resolutions != RESLIST_NORMAL)
|
||||
if (!g_ddraw->bpp || g_config.resolutions != RESLIST_NORMAL)
|
||||
{
|
||||
for (i = 0; i < sizeof(resolutions) / sizeof(resolutions[0]); i++)
|
||||
{
|
||||
if (!resolutions[i].cx || !resolutions[i].cy)
|
||||
continue;
|
||||
|
||||
if (!(resolutions[i].cx == g_ddraw->custom_width && resolutions[i].cy == g_ddraw->custom_height) &&
|
||||
if (!(resolutions[i].cx == g_config.custom_width && resolutions[i].cy == g_config.custom_height) &&
|
||||
((max_w && resolutions[i].cx > max_w) || (max_h && resolutions[i].cy > max_h)))
|
||||
{
|
||||
DEVMODE m;
|
||||
@ -327,7 +327,7 @@ HRESULT dd_EnumDisplayModes(
|
||||
|
||||
if (s.ddpfPixelFormat.dwRGBBitCount == bpp_filter || !bpp_filter)
|
||||
{
|
||||
if (g_ddraw->max_resolutions && res_count++ >= g_ddraw->max_resolutions)
|
||||
if (g_config.max_resolutions && res_count++ >= g_config.max_resolutions)
|
||||
{
|
||||
TRACE(" resolution limit reached, stopping\n");
|
||||
return DD_OK;
|
||||
@ -349,7 +349,7 @@ HRESULT dd_EnumDisplayModes(
|
||||
|
||||
if (s.ddpfPixelFormat.dwRGBBitCount == bpp_filter || !bpp_filter)
|
||||
{
|
||||
if (g_ddraw->max_resolutions && res_count++ >= g_ddraw->max_resolutions)
|
||||
if (g_config.max_resolutions && res_count++ >= g_config.max_resolutions)
|
||||
{
|
||||
TRACE(" resolution limit reached, stopping\n");
|
||||
return DD_OK;
|
||||
@ -362,7 +362,7 @@ HRESULT dd_EnumDisplayModes(
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw->resolutions == RESLIST_MINI)
|
||||
if (g_config.resolutions == RESLIST_MINI)
|
||||
continue;
|
||||
|
||||
s.ddpfPixelFormat.dwFlags = DDPF_RGB;
|
||||
@ -374,7 +374,7 @@ HRESULT dd_EnumDisplayModes(
|
||||
|
||||
if (s.ddpfPixelFormat.dwRGBBitCount == bpp_filter || !bpp_filter)
|
||||
{
|
||||
if (g_ddraw->max_resolutions && res_count++ >= g_ddraw->max_resolutions)
|
||||
if (g_config.max_resolutions && res_count++ >= g_config.max_resolutions)
|
||||
{
|
||||
TRACE(" resolution limit reached, stopping\n");
|
||||
return DD_OK;
|
||||
@ -531,9 +531,9 @@ HRESULT dd_RestoreDisplayMode()
|
||||
}
|
||||
}
|
||||
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
{
|
||||
if (g_ddraw->renderer == d3d9_render_main && !g_ddraw->nonexclusive)
|
||||
if (g_ddraw->renderer == d3d9_render_main && !g_config.nonexclusive)
|
||||
{
|
||||
if (!d3d9_reset(TRUE))
|
||||
d3d9_release();
|
||||
@ -552,7 +552,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
if (dwBPP != 8 && dwBPP != 16 && dwBPP != 32)
|
||||
return DDERR_INVALIDMODE;
|
||||
|
||||
if (g_ddraw->mgs_hack && dwHeight == 480) dwHeight -= 32; /* Remove black bar in Metal Gear Solid */
|
||||
if (g_config.mgs_hack && dwHeight == 480) dwHeight -= 32; /* Remove black bar in Metal Gear Solid */
|
||||
|
||||
if (g_ddraw->render.thread)
|
||||
{
|
||||
@ -583,7 +583,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
|
||||
if (!g_ddraw->mode.dmPelsWidth || !g_ddraw->mode.dmPelsHeight)
|
||||
{
|
||||
g_ddraw->fullscreen = FALSE;
|
||||
g_config.fullscreen = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -592,7 +592,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->render.height = g_config.window_rect.bottom;
|
||||
|
||||
/* temporary fix: center window for games that keep changing their resolution */
|
||||
if ((g_ddraw->width || g_ddraw->infantryhack) &&
|
||||
if ((g_ddraw->width || g_config.infantryhack) &&
|
||||
(g_ddraw->width != dwWidth || g_ddraw->height != dwHeight) &&
|
||||
(dwWidth > g_config.window_rect.right || dwHeight > g_config.window_rect.bottom))
|
||||
{
|
||||
@ -607,15 +607,15 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
InterlockedExchange((LONG*)&g_ddraw->cursor.x, dwWidth / 2);
|
||||
InterlockedExchange((LONG*)&g_ddraw->cursor.y, dwHeight / 2);
|
||||
|
||||
BOOL border = g_ddraw->border;
|
||||
BOOL border = g_config.border;
|
||||
BOOL nonexclusive = FALSE;
|
||||
|
||||
if (g_ddraw->fullscreen)
|
||||
if (g_config.fullscreen)
|
||||
{
|
||||
g_ddraw->render.width = g_ddraw->mode.dmPelsWidth;
|
||||
g_ddraw->render.height = g_ddraw->mode.dmPelsHeight;
|
||||
|
||||
if (g_ddraw->windowed) /* windowed-fullscreen aka borderless */
|
||||
if (g_config.windowed) /* windowed-fullscreen aka borderless */
|
||||
{
|
||||
border = FALSE;
|
||||
|
||||
@ -645,14 +645,14 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
memset(&g_ddraw->render.mode, 0, sizeof(DEVMODE));
|
||||
g_ddraw->render.mode.dmSize = sizeof(DEVMODE);
|
||||
|
||||
if (g_ddraw->refresh_rate)
|
||||
if (g_config.refresh_rate)
|
||||
{
|
||||
g_ddraw->render.mode.dmFields |= DM_DISPLAYFREQUENCY;
|
||||
g_ddraw->render.mode.dmDisplayFrequency = g_ddraw->refresh_rate;
|
||||
g_ddraw->render.mode.dmDisplayFrequency = g_config.refresh_rate;
|
||||
|
||||
if (ChangeDisplaySettings(&g_ddraw->render.mode, CDS_TEST) != DISP_CHANGE_SUCCESSFUL)
|
||||
{
|
||||
g_ddraw->refresh_rate = 0;
|
||||
g_config.refresh_rate = 0;
|
||||
|
||||
g_ddraw->render.mode.dmFields = 0;
|
||||
g_ddraw->render.mode.dmDisplayFrequency = 0;
|
||||
@ -663,7 +663,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->render.mode.dmPelsWidth = g_ddraw->render.width;
|
||||
g_ddraw->render.mode.dmPelsHeight = g_ddraw->render.height;
|
||||
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
{
|
||||
/* Making sure the chosen resolution is valid */
|
||||
if (ChangeDisplaySettings(&g_ddraw->render.mode, CDS_TEST) != DISP_CHANGE_SUCCESSFUL)
|
||||
@ -724,7 +724,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->height > g_ddraw->mode.dmPelsHeight)
|
||||
{
|
||||
/* Downscaling requires adjmouse to be enabled */
|
||||
g_ddraw->adjmouse = TRUE;
|
||||
g_config.adjmouse = TRUE;
|
||||
}
|
||||
|
||||
/* try current display settings */
|
||||
@ -739,8 +739,8 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
/* everything failed, use borderless mode instead */
|
||||
ChangeDisplaySettings(NULL, 0);
|
||||
|
||||
g_ddraw->windowed = TRUE;
|
||||
g_ddraw->fullscreen = TRUE;
|
||||
g_config.windowed = TRUE;
|
||||
g_config.fullscreen = TRUE;
|
||||
border = FALSE;
|
||||
|
||||
/* prevent OpenGL from going automatically into fullscreen exclusive mode */
|
||||
@ -755,13 +755,13 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
}
|
||||
|
||||
/* Support downscaling in borderless mode */
|
||||
if (g_ddraw->windowed && g_ddraw->fullscreen)
|
||||
if (g_config.windowed && g_config.fullscreen)
|
||||
{
|
||||
if (g_ddraw->width > g_ddraw->mode.dmPelsWidth ||
|
||||
g_ddraw->height > g_ddraw->mode.dmPelsHeight)
|
||||
{
|
||||
/* Downscaling requires adjmouse to be enabled */
|
||||
g_ddraw->adjmouse = TRUE;
|
||||
g_config.adjmouse = TRUE;
|
||||
|
||||
g_ddraw->render.width = g_ddraw->mode.dmPelsWidth;
|
||||
g_ddraw->render.height = g_ddraw->mode.dmPelsHeight;
|
||||
@ -776,7 +776,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->render.viewport.x = 0;
|
||||
g_ddraw->render.viewport.y = 0;
|
||||
|
||||
if (g_ddraw->boxing)
|
||||
if (g_config.boxing)
|
||||
{
|
||||
g_ddraw->render.viewport.width = g_ddraw->width;
|
||||
g_ddraw->render.viewport.height = g_ddraw->height;
|
||||
@ -794,7 +794,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->render.viewport.y = g_ddraw->render.height / 2 - g_ddraw->render.viewport.height / 2;
|
||||
g_ddraw->render.viewport.x = g_ddraw->render.width / 2 - g_ddraw->render.viewport.width / 2;
|
||||
}
|
||||
else if (g_ddraw->maintas)
|
||||
else if (g_config.maintas)
|
||||
{
|
||||
g_ddraw->render.viewport.width = g_ddraw->render.width;
|
||||
g_ddraw->render.viewport.height =
|
||||
@ -830,13 +830,13 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->mouse.rc.right = g_ddraw->width + g_ddraw->mouse.x_adjust;
|
||||
g_ddraw->mouse.rc.bottom = g_ddraw->height + g_ddraw->mouse.y_adjust;
|
||||
|
||||
if (g_ddraw->adjmouse)
|
||||
if (g_config.adjmouse)
|
||||
{
|
||||
g_ddraw->mouse.rc.right = g_ddraw->render.viewport.width + g_ddraw->mouse.x_adjust;
|
||||
g_ddraw->mouse.rc.bottom = g_ddraw->render.viewport.height + g_ddraw->mouse.y_adjust;
|
||||
}
|
||||
|
||||
if (nonexclusive || (g_ddraw->nonexclusive && !g_ddraw->windowed && g_ddraw->renderer == ogl_render_main))
|
||||
if (nonexclusive || (g_config.nonexclusive && !g_config.windowed && g_ddraw->renderer == ogl_render_main))
|
||||
{
|
||||
g_ddraw->render.height++;
|
||||
g_ddraw->render.opengl_y_align = 1;
|
||||
@ -846,9 +846,9 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->render.opengl_y_align = 0;
|
||||
}
|
||||
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
if (g_ddraw->remove_menu && GetMenu(g_ddraw->hwnd))
|
||||
if (g_config.remove_menu && GetMenu(g_ddraw->hwnd))
|
||||
SetMenu(g_ddraw->hwnd, NULL);
|
||||
|
||||
if (!g_ddraw->wine)
|
||||
@ -898,7 +898,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
int x = (g_config.window_rect.left != -32000) ? g_config.window_rect.left : (cy / 2) - (g_ddraw->render.width / 2);
|
||||
int y = (g_config.window_rect.top != -32000) ? g_config.window_rect.top : (cx / 2) - (g_ddraw->render.height / 2);
|
||||
|
||||
if (g_ddraw->fullscreen)
|
||||
if (g_config.fullscreen)
|
||||
{
|
||||
x = y = 0;
|
||||
}
|
||||
@ -942,7 +942,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
}
|
||||
}
|
||||
|
||||
if (lock_mouse || (g_ddraw->fullscreen && real_GetForegroundWindow() == g_ddraw->hwnd))
|
||||
if (lock_mouse || (g_config.fullscreen && real_GetForegroundWindow() == g_ddraw->hwnd))
|
||||
mouse_lock();
|
||||
}
|
||||
else
|
||||
@ -975,7 +975,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
|
||||
if (g_ddraw->renderer == d3d9_render_main)
|
||||
{
|
||||
if (g_ddraw->nonexclusive)
|
||||
if (g_config.nonexclusive)
|
||||
{
|
||||
if (util_is_minimized(g_ddraw->hwnd))
|
||||
real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
|
||||
@ -1002,12 +1002,12 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
}
|
||||
}
|
||||
|
||||
if ((!d3d9_active || g_ddraw->nonexclusive) &&
|
||||
if ((!d3d9_active || g_config.nonexclusive) &&
|
||||
ChangeDisplaySettings(&g_ddraw->render.mode, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL)
|
||||
{
|
||||
g_ddraw->render.run = FALSE;
|
||||
g_ddraw->windowed = TRUE;
|
||||
g_ddraw->fullscreen = TRUE;
|
||||
g_config.windowed = TRUE;
|
||||
g_config.fullscreen = TRUE;
|
||||
return dd_SetDisplayMode(dwWidth, dwHeight, dwBPP, dwFlags);
|
||||
}
|
||||
|
||||
@ -1031,7 +1031,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
g_ddraw->render.height,
|
||||
swp_flags);
|
||||
|
||||
if (d3d9_active && g_ddraw->nonexclusive)
|
||||
if (d3d9_active && g_config.nonexclusive)
|
||||
d3d9_reset(TRUE);
|
||||
|
||||
g_ddraw->last_set_window_pos_tick = timeGetTime();
|
||||
@ -1056,7 +1056,7 @@ HRESULT dd_SetDisplayMode(DWORD dwWidth, DWORD dwHeight, DWORD dwBPP, DWORD dwFl
|
||||
SetThreadPriority(g_ddraw->render.thread, THREAD_PRIORITY_ABOVE_NORMAL);
|
||||
}
|
||||
|
||||
if ((dwFlags & SDM_MODE_SET_BY_GAME) && !g_ddraw->infantryhack)
|
||||
if ((dwFlags & SDM_MODE_SET_BY_GAME) && !g_config.infantryhack)
|
||||
{
|
||||
real_SendMessageA(g_ddraw->hwnd, WM_SIZE_DDRAW, 0, MAKELPARAM(g_ddraw->width, g_ddraw->height));
|
||||
real_SendMessageA(g_ddraw->hwnd, WM_MOVE_DDRAW, 0, MAKELPARAM(0, 0));
|
||||
@ -1106,7 +1106,7 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
|
||||
SetPixelFormat(g_ddraw->render.hdc, ChoosePixelFormat(g_ddraw->render.hdc, &pfd), &pfd);
|
||||
}
|
||||
|
||||
if (!g_ddraw->devmode)
|
||||
if (!g_config.devmode)
|
||||
{
|
||||
HCURSOR cursor = real_SetCursor(LoadCursor(NULL, IDC_ARROW));
|
||||
|
||||
@ -1119,13 +1119,13 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
|
||||
real_ShowCursor(FALSE);
|
||||
|
||||
/* Make sure the cursor is visible in windowed mode initially */
|
||||
if (g_ddraw->windowed && !g_ddraw->fullscreen && !g_ddraw->devmode && cursor_count < 0)
|
||||
if (g_config.windowed && !g_config.fullscreen && !g_config.devmode && cursor_count < 0)
|
||||
{
|
||||
while (real_ShowCursor(TRUE) < 0);
|
||||
}
|
||||
|
||||
/* Starcraft locks the cursor before ddraw.dll was loaded */
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
real_ClipCursor(NULL);
|
||||
}
|
||||
@ -1147,31 +1147,31 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
|
||||
g_ddraw->upscale_hack_height = 400;
|
||||
}
|
||||
|
||||
if (g_ddraw->vhack && !g_ddraw->isredalert && !g_ddraw->iscnc1 && !g_ddraw->iskkndx)
|
||||
if (g_config.vhack && !g_ddraw->isredalert && !g_ddraw->iscnc1 && !g_ddraw->iskkndx)
|
||||
{
|
||||
g_ddraw->vhack = 0;
|
||||
g_config.vhack = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Infantry Online Zone List Window */
|
||||
if (g_ddraw->infantryhack)
|
||||
if (g_config.infantryhack)
|
||||
{
|
||||
static BOOL windowed, fullscreen;
|
||||
|
||||
if (dwFlags & DDSCL_FULLSCREEN)
|
||||
{
|
||||
g_ddraw->windowed = windowed;
|
||||
g_ddraw->fullscreen = fullscreen;
|
||||
g_config.windowed = windowed;
|
||||
g_config.fullscreen = fullscreen;
|
||||
}
|
||||
else if (dwFlags & DDSCL_NOWINDOWCHANGES)
|
||||
{
|
||||
windowed = g_ddraw->windowed;
|
||||
fullscreen = g_ddraw->fullscreen;
|
||||
windowed = g_config.windowed;
|
||||
fullscreen = g_config.fullscreen;
|
||||
|
||||
if (GetMenu(g_ddraw->hwnd) != NULL)
|
||||
{
|
||||
g_ddraw->windowed = TRUE;
|
||||
g_ddraw->fullscreen = FALSE;
|
||||
g_config.windowed = TRUE;
|
||||
g_config.fullscreen = FALSE;
|
||||
}
|
||||
|
||||
dd_SetDisplayMode(640, 480, 16, SDM_MODE_SET_BY_GAME);
|
||||
@ -1183,9 +1183,9 @@ HRESULT dd_SetCooperativeLevel(HWND hwnd, DWORD dwFlags)
|
||||
|
||||
HRESULT dd_WaitForVerticalBlank(DWORD dwFlags, HANDLE hEvent)
|
||||
{
|
||||
if (g_ddraw->maxgameticks == -2)
|
||||
if (g_config.maxgameticks == -2)
|
||||
{
|
||||
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(g_ddraw->render.maxfps >= 0 && !g_ddraw->vsync))
|
||||
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(g_config.maxfps >= 0 && !g_config.vsync))
|
||||
return DD_OK;
|
||||
}
|
||||
|
||||
@ -1267,9 +1267,9 @@ ULONG dd_Release()
|
||||
}
|
||||
}
|
||||
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
{
|
||||
if (g_ddraw->renderer == d3d9_render_main && !g_ddraw->nonexclusive)
|
||||
if (g_ddraw->renderer == d3d9_render_main && !g_config.nonexclusive)
|
||||
{
|
||||
if (!d3d9_reset(TRUE))
|
||||
d3d9_release();
|
||||
@ -1378,7 +1378,94 @@ HRESULT dd_CreateEx(GUID* lpGuid, LPVOID* lplpDD, REFIID iid, IUnknown* pUnkOute
|
||||
g_ddraw->wine = real_GetProcAddress(GetModuleHandleA("ntdll.dll"), "wine_get_version") != 0;
|
||||
g_blt_use_avx = util_is_avx_supported();
|
||||
|
||||
cfg_load();
|
||||
/* can't fully set it up here due to missing g_ddraw->mode.dmDisplayFrequency */
|
||||
g_fpsl.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||
|
||||
if (g_config.maxgameticks > 0 && g_config.maxgameticks <= 1000)
|
||||
{
|
||||
g_ddraw->ticks_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||
|
||||
float len = 1000.0f / g_config.maxgameticks;
|
||||
g_ddraw->ticks_limiter.tick_length_ns = (LONGLONG)(len * 10000);
|
||||
g_ddraw->ticks_limiter.tick_length = (DWORD)(len + 0.5f);
|
||||
}
|
||||
|
||||
if (g_config.maxgameticks >= 0 || g_config.maxgameticks == -2)
|
||||
{
|
||||
/* always using 60 fps for flip... */
|
||||
g_ddraw->flip_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
||||
|
||||
float flip_len = 1000.0f / 60;
|
||||
g_ddraw->flip_limiter.tick_length_ns = (LONGLONG)(flip_len * 10000);
|
||||
g_ddraw->flip_limiter.tick_length = (DWORD)(flip_len + 0.5f);
|
||||
}
|
||||
|
||||
|
||||
DWORD system_affinity;
|
||||
DWORD proc_affinity;
|
||||
HANDLE proc = GetCurrentProcess();
|
||||
|
||||
if (g_config.singlecpu)
|
||||
{
|
||||
SetProcessAffinityMask(proc, 1);
|
||||
}
|
||||
else if (GetProcessAffinityMask(proc, &proc_affinity, &system_affinity))
|
||||
{
|
||||
SetProcessAffinityMask(proc, system_affinity);
|
||||
}
|
||||
|
||||
if (GetProcessAffinityMask(proc, &proc_affinity, &system_affinity))
|
||||
{
|
||||
TRACE(" proc_affinity=%08X, system_affinity=%08X\n", proc_affinity, system_affinity);
|
||||
}
|
||||
|
||||
|
||||
if (_strcmpi(g_config.renderer, "direct3d9on12") == 0)
|
||||
{
|
||||
g_ddraw->d3d9on12 = TRUE;
|
||||
}
|
||||
else if (_strcmpi(g_config.renderer, "openglcore") == 0)
|
||||
{
|
||||
g_ddraw->opengl_core = TRUE;
|
||||
}
|
||||
|
||||
if (tolower(g_config.renderer[0]) == 'd') /* direct3d9 or direct3d9on12*/
|
||||
{
|
||||
g_ddraw->renderer = d3d9_render_main;
|
||||
}
|
||||
else if (tolower(g_config.renderer[0]) == 's' || tolower(g_config.renderer[0]) == 'g') /* gdi */
|
||||
{
|
||||
g_ddraw->renderer = gdi_render_main;
|
||||
}
|
||||
else if (tolower(g_config.renderer[0]) == 'o') /* opengl or openglcore */
|
||||
{
|
||||
if (oglu_load_dll())
|
||||
{
|
||||
g_ddraw->renderer = ogl_render_main;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_ddraw->show_driver_warning = TRUE;
|
||||
g_ddraw->renderer = gdi_render_main;
|
||||
}
|
||||
}
|
||||
else /* auto */
|
||||
{
|
||||
if (!g_ddraw->wine && d3d9_is_available())
|
||||
{
|
||||
g_ddraw->renderer = d3d9_render_main;
|
||||
}
|
||||
else if (oglu_load_dll())
|
||||
{
|
||||
g_ddraw->renderer = ogl_render_main;
|
||||
}
|
||||
else
|
||||
{
|
||||
g_ddraw->show_driver_warning = TRUE;
|
||||
g_ddraw->renderer = gdi_render_main;
|
||||
}
|
||||
}
|
||||
|
||||
g_ddraw->ref--;
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "debug.h"
|
||||
#include "utils.h"
|
||||
#include "blt.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
LONG g_dds_gdi_handles;
|
||||
@ -647,7 +648,7 @@ HRESULT dds_BltFast(
|
||||
{
|
||||
ReleaseSemaphore(g_ddraw->render.sem, 1, NULL);
|
||||
|
||||
if (g_ddraw->limit_bltfast && g_ddraw->ticks_limiter.tick_length > 0)
|
||||
if (g_config.limit_bltfast && g_ddraw->ticks_limiter.tick_length > 0)
|
||||
{
|
||||
g_ddraw->ticks_limiter.use_blt_or_flip = TRUE;
|
||||
util_limit_game_ticks();
|
||||
@ -761,7 +762,7 @@ HRESULT dds_Flip(IDirectDrawSurfaceImpl* This, IDirectDrawSurfaceImpl* lpDDSurfa
|
||||
InterlockedExchangePointer(&backbuffer->hdc, dc);
|
||||
InterlockedExchangePointer(&backbuffer->mapping, map);
|
||||
|
||||
if (g_ddraw->flipclear)
|
||||
if (g_config.flipclear)
|
||||
{
|
||||
blt_clear(buf, 0, backbuffer->size);
|
||||
}
|
||||
@ -782,7 +783,7 @@ HRESULT dds_Flip(IDirectDrawSurfaceImpl* This, IDirectDrawSurfaceImpl* lpDDSurfa
|
||||
ReleaseSemaphore(g_ddraw->render.sem, 1, NULL);
|
||||
SwitchToThread();
|
||||
|
||||
if ((g_ddraw->maxgameticks == 0 && (dwFlags & DDFLIP_WAIT)) || g_ddraw->maxgameticks == -2)
|
||||
if ((g_config.maxgameticks == 0 && (dwFlags & DDFLIP_WAIT)) || g_config.maxgameticks == -2)
|
||||
{
|
||||
dd_WaitForVerticalBlank(DDWAITVB_BLOCKEND, NULL);
|
||||
}
|
||||
@ -949,12 +950,12 @@ HRESULT dds_Lock(
|
||||
DWORD dwFlags,
|
||||
HANDLE hEvent)
|
||||
{
|
||||
if (g_ddraw && g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
EnterCriticalSection(&This->cs);
|
||||
|
||||
dbg_dump_dds_lock_flags(dwFlags);
|
||||
|
||||
if (g_ddraw && g_ddraw->fixnotresponding && !g_ddraw->wine)
|
||||
if (g_ddraw && g_config.fixnotresponding && !g_ddraw->wine)
|
||||
{
|
||||
MSG msg; /* workaround for "Not Responding" window problem */
|
||||
real_PeekMessageA(&msg, g_ddraw->hwnd, 0, 0, PM_NOREMOVE);
|
||||
@ -1126,7 +1127,7 @@ HRESULT dds_Unlock(IDirectDrawSurfaceImpl* This, LPRECT lpRect)
|
||||
}
|
||||
|
||||
/* Hack for Star Trek Armada */
|
||||
hwnd = g_ddraw && g_ddraw->armadahack ? FindWindowEx(HWND_DESKTOP, NULL, "#32770", NULL) : NULL;
|
||||
hwnd = g_ddraw && g_config.armadahack ? FindWindowEx(HWND_DESKTOP, NULL, "#32770", NULL) : NULL;
|
||||
|
||||
if (hwnd && (This->caps & DDSCAPS_PRIMARYSURFACE))
|
||||
{
|
||||
@ -1180,7 +1181,7 @@ HRESULT dds_Unlock(IDirectDrawSurfaceImpl* This, LPRECT lpRect)
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw && g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
LeaveCriticalSection(&This->cs);
|
||||
|
||||
return DD_OK;
|
||||
@ -1364,7 +1365,7 @@ HRESULT dd_CreateSurface(
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!(dst_surface->caps & DDSCAPS_SYSTEMMEMORY) || g_ddraw->tshack)
|
||||
if (!(dst_surface->caps & DDSCAPS_SYSTEMMEMORY) || g_config.tshack)
|
||||
{
|
||||
dst_surface->caps |= DDSCAPS_VIDEOMEMORY;
|
||||
}
|
||||
@ -1390,12 +1391,12 @@ HRESULT dd_CreateSurface(
|
||||
DWORD aligned_width = dst_surface->pitch / dst_surface->bytes_pp;
|
||||
|
||||
DWORD bmi_size = sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD) * 256;
|
||||
DWORD bmp_size = dst_surface->pitch * (dst_surface->height + g_ddraw->guard_lines);
|
||||
DWORD bmp_size = dst_surface->pitch * (dst_surface->height + g_config.guard_lines);
|
||||
|
||||
dst_surface->bmi = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, bmi_size);
|
||||
dst_surface->bmi->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
dst_surface->bmi->bmiHeader.biWidth = aligned_width;
|
||||
dst_surface->bmi->bmiHeader.biHeight = -((int)dst_surface->height + g_ddraw->guard_lines);
|
||||
dst_surface->bmi->bmiHeader.biHeight = -((int)dst_surface->height + g_config.guard_lines);
|
||||
dst_surface->bmi->bmiHeader.biPlanes = 1;
|
||||
dst_surface->bmi->bmiHeader.biBitCount = dst_surface->bpp;
|
||||
dst_surface->bmi->bmiHeader.biCompression = dst_surface->bpp == 8 ? BI_RGB : BI_BITFIELDS;
|
||||
@ -1420,7 +1421,7 @@ HRESULT dd_CreateSurface(
|
||||
dst_surface->bmi->bmiColors[i].rgbReserved = 0;
|
||||
}
|
||||
}
|
||||
else if (dst_surface->bpp == 16 && g_ddraw->rgb555)
|
||||
else if (dst_surface->bpp == 16 && g_config.rgb555)
|
||||
{
|
||||
((DWORD*)dst_surface->bmi->bmiColors)[0] = 0x7C00;
|
||||
((DWORD*)dst_surface->bmi->bmiColors)[1] = 0x03E0;
|
||||
|
@ -47,7 +47,7 @@ static HRESULT WINAPI fake_did_SetCooperativeLevel(IDirectInputDeviceA* This, HW
|
||||
|
||||
if (This == g_mouse_device && g_ddraw && (dwFlags & DISCL_EXCLUSIVE))
|
||||
{
|
||||
if (g_mouse_locked || g_ddraw->devmode)
|
||||
if (g_mouse_locked || g_config.devmode)
|
||||
{
|
||||
while (real_ShowCursor(FALSE) >= 0);
|
||||
}
|
||||
@ -202,7 +202,7 @@ HRESULT WINAPI fake_DirectInputCreateA(
|
||||
|
||||
HRESULT result = real_DirectInputCreateA(hinst, dwVersion, lplpDirectInput, punkOuter);
|
||||
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !cfg_get_bool("no_dinput_hook", FALSE))
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !g_config.no_dinput_hook)
|
||||
{
|
||||
real_di_CreateDevice =
|
||||
(DICREATEDEVICEPROC)hook_func((PROC*)&(*lplpDirectInput)->lpVtbl->CreateDevice, (PROC)fake_di_CreateDevice);
|
||||
@ -238,7 +238,7 @@ HRESULT WINAPI fake_DirectInputCreateW(
|
||||
|
||||
HRESULT result = real_DirectInputCreateW(hinst, dwVersion, lplpDirectInput, punkOuter);
|
||||
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !cfg_get_bool("no_dinput_hook", FALSE))
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !g_config.no_dinput_hook)
|
||||
{
|
||||
real_di_CreateDevice =
|
||||
(DICREATEDEVICEPROC)hook_func((PROC*)&(*lplpDirectInput)->lpVtbl->CreateDevice, (PROC)fake_di_CreateDevice);
|
||||
@ -275,7 +275,7 @@ HRESULT WINAPI fake_DirectInputCreateEx(
|
||||
|
||||
HRESULT result = real_DirectInputCreateEx(hinst, dwVersion, riidltf, ppvOut, punkOuter);
|
||||
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !cfg_get_bool("no_dinput_hook", FALSE))
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !g_config.no_dinput_hook)
|
||||
{
|
||||
real_di_CreateDevice =
|
||||
(DICREATEDEVICEPROC)hook_func((PROC*)&(*ppvOut)->lpVtbl->CreateDevice, (PROC)fake_di_CreateDevice);
|
||||
@ -285,7 +285,7 @@ HRESULT WINAPI fake_DirectInputCreateEx(
|
||||
!real_di_CreateDeviceEx &&
|
||||
riidltf &&
|
||||
(IsEqualGUID(&IID_IDirectInput7A, riidltf) || IsEqualGUID(&IID_IDirectInput7W, riidltf))
|
||||
&& !cfg_get_bool("no_dinput_hook", FALSE))
|
||||
&& !g_config.no_dinput_hook)
|
||||
{
|
||||
real_di_CreateDeviceEx =
|
||||
(DICREATEDEVICEEXPROC)hook_func((PROC*)&(*ppvOut)->lpVtbl->CreateDeviceEx, (PROC)fake_di_CreateDeviceEx);
|
||||
@ -322,7 +322,7 @@ HRESULT WINAPI fake_DirectInput8Create(
|
||||
|
||||
HRESULT result = real_DirectInput8Create(hinst, dwVersion, riidltf, ppvOut, punkOuter);
|
||||
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !cfg_get_bool("no_dinput_hook", FALSE))
|
||||
if (SUCCEEDED(result) && !real_di_CreateDevice && !g_config.no_dinput_hook)
|
||||
{
|
||||
real_di_CreateDevice =
|
||||
(DICREATEDEVICEPROC)hook_func((PROC*)&(*ppvOut)->lpVtbl->CreateDevice, (PROC)fake_di_CreateDevice);
|
||||
|
@ -104,6 +104,8 @@ BOOL WINAPI DllMain(HANDLE hDll, DWORD dwReason, LPVOID lpReserved)
|
||||
set_aware();
|
||||
}
|
||||
|
||||
cfg_load();
|
||||
|
||||
timeBeginPeriod(1);
|
||||
hook_init(TRUE);
|
||||
break;
|
||||
|
@ -3,17 +3,18 @@
|
||||
#include "dd.h"
|
||||
#include "debug.h"
|
||||
#include "hook.h"
|
||||
#include "config.h"
|
||||
|
||||
FPSLIMITER g_fpsl;
|
||||
|
||||
void fpsl_init()
|
||||
{
|
||||
int max_fps = g_ddraw->render.maxfps;
|
||||
int max_fps = g_config.maxfps;
|
||||
|
||||
g_fpsl.tick_length_ns = 0;
|
||||
g_fpsl.tick_length = 0;
|
||||
|
||||
if (max_fps < 0 || g_ddraw->vsync)
|
||||
if (max_fps < 0 || g_config.vsync)
|
||||
max_fps = g_ddraw->mode.dmDisplayFrequency;
|
||||
|
||||
if (max_fps > 1000)
|
||||
@ -124,7 +125,7 @@ void fpsl_frame_start()
|
||||
|
||||
void fpsl_frame_end()
|
||||
{
|
||||
if (g_ddraw->render.maxfps < 0 || g_ddraw->vsync)
|
||||
if (g_config.maxfps < 0 || g_config.vsync)
|
||||
{
|
||||
if (fpsl_dwm_flush() || fpsl_wait_for_vblank(TRUE))
|
||||
return;
|
||||
@ -134,7 +135,7 @@ void fpsl_frame_end()
|
||||
{
|
||||
if (g_fpsl.htimer)
|
||||
{
|
||||
if (g_ddraw->vsync)
|
||||
if (g_config.vsync)
|
||||
{
|
||||
WaitForSingleObject(g_fpsl.htimer, g_fpsl.tick_length * 2);
|
||||
LARGE_INTEGER due_time = { .QuadPart = -g_fpsl.tick_length_ns };
|
||||
|
21
src/hook.c
21
src/hook.c
@ -15,7 +15,6 @@
|
||||
#endif
|
||||
|
||||
BOOL g_hook_active;
|
||||
int g_hook_method = 4;
|
||||
|
||||
GETCURSORPOSPROC real_GetCursorPos = GetCursorPos;
|
||||
CLIPCURSORPROC real_ClipCursor = ClipCursor;
|
||||
@ -410,7 +409,7 @@ BOOL hook_got_ddraw_import()
|
||||
void hook_create(HOOKLIST* hooks, BOOL initial_hook)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
if ((g_hook_method == 2) && initial_hook)
|
||||
if ((g_config.hook == 2) && initial_hook)
|
||||
{
|
||||
for (int i = 0; hooks[i].module_name[0]; i++)
|
||||
{
|
||||
@ -428,7 +427,7 @@ void hook_create(HOOKLIST* hooks, BOOL initial_hook)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (g_hook_method == 3 || g_hook_method == 4)
|
||||
if (g_config.hook == 3 || g_config.hook == 4)
|
||||
{
|
||||
char game_exe_path[MAX_PATH] = { 0 };
|
||||
char game_dir[MAX_PATH] = { 0 };
|
||||
@ -486,7 +485,7 @@ void hook_create(HOOKLIST* hooks, BOOL initial_hook)
|
||||
}
|
||||
}
|
||||
|
||||
if (g_hook_method == 1)
|
||||
if (g_config.hook == 1)
|
||||
{
|
||||
hook_patch_iat_list(GetModuleHandle(NULL), FALSE, hooks);
|
||||
}
|
||||
@ -495,7 +494,7 @@ void hook_create(HOOKLIST* hooks, BOOL initial_hook)
|
||||
void hook_revert(HOOKLIST* hooks)
|
||||
{
|
||||
#ifdef _MSC_VER
|
||||
if (g_hook_method == 2)
|
||||
if (g_config.hook == 2)
|
||||
{
|
||||
for (int i = 0; hooks[i].module_name[0]; i++)
|
||||
{
|
||||
@ -513,7 +512,7 @@ void hook_revert(HOOKLIST* hooks)
|
||||
}
|
||||
#endif
|
||||
|
||||
if (g_hook_method == 3 || g_hook_method == 4)
|
||||
if (g_config.hook == 3 || g_config.hook == 4)
|
||||
{
|
||||
char game_exe_path[MAX_PATH] = { 0 };
|
||||
char game_dir[MAX_PATH] = { 0 };
|
||||
@ -560,7 +559,7 @@ void hook_revert(HOOKLIST* hooks)
|
||||
}
|
||||
}
|
||||
|
||||
if (g_hook_method == 1)
|
||||
if (g_config.hook == 1)
|
||||
{
|
||||
hook_patch_iat_list(GetModuleHandle(NULL), TRUE, hooks);
|
||||
}
|
||||
@ -570,16 +569,14 @@ void hook_init(BOOL initial_hook)
|
||||
{
|
||||
if (initial_hook)
|
||||
{
|
||||
g_hook_method = cfg_get_int("hook", 4);
|
||||
|
||||
if (g_hook_method == 4 && hook_got_ddraw_import())
|
||||
if (g_config.hook == 4 && hook_got_ddraw_import())
|
||||
{
|
||||
/* Switch to 3 if we can be sure that ddraw.dll will not be unloaded from the process */
|
||||
g_hook_method = 3;
|
||||
g_config.hook = 3;
|
||||
}
|
||||
}
|
||||
|
||||
if (!g_hook_active || g_hook_method == 3 || g_hook_method == 4)
|
||||
if (!g_hook_active || g_config.hook == 3 || g_config.hook == 4)
|
||||
{
|
||||
#if defined(_DEBUG) && defined(_MSC_VER)
|
||||
if (initial_hook)
|
||||
|
11
src/mouse.c
11
src/mouse.c
@ -4,6 +4,7 @@
|
||||
#include "dd.h"
|
||||
#include "hook.h"
|
||||
#include "utils.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
BOOL g_mouse_locked;
|
||||
@ -12,7 +13,7 @@ HOOKPROC g_mouse_proc;
|
||||
|
||||
void mouse_lock()
|
||||
{
|
||||
if (g_ddraw->devmode || g_ddraw->bnet_active || !g_ddraw->hwnd)
|
||||
if (g_config.devmode || g_ddraw->bnet_active || !g_ddraw->hwnd)
|
||||
return;
|
||||
|
||||
if (g_hook_active && !g_mouse_locked && !util_is_minimized(g_ddraw->hwnd))
|
||||
@ -41,8 +42,8 @@ void mouse_lock()
|
||||
int cur_y = InterlockedExchangeAdd((LONG*)&g_ddraw->cursor.y, 0);
|
||||
|
||||
real_SetCursorPos(
|
||||
g_ddraw->adjmouse ? (int)(rc.left + (cur_x * g_ddraw->mouse.scale_x)) : rc.left + cur_x,
|
||||
g_ddraw->adjmouse ? (int)(rc.top + (cur_y * g_ddraw->mouse.scale_y)) : rc.top + cur_y);
|
||||
g_config.adjmouse ? (int)(rc.left + (cur_x * g_ddraw->mouse.scale_x)) : rc.left + cur_x,
|
||||
g_config.adjmouse ? (int)(rc.top + (cur_y * g_ddraw->mouse.scale_y)) : rc.top + cur_y);
|
||||
|
||||
CopyRect(&rc, &g_ddraw->mouse.rc);
|
||||
real_MapWindowPoints(g_ddraw->hwnd, HWND_DESKTOP, (LPPOINT)&rc, 2);
|
||||
@ -54,7 +55,7 @@ void mouse_lock()
|
||||
|
||||
void mouse_unlock()
|
||||
{
|
||||
if (g_ddraw->devmode || !g_hook_active || !g_ddraw->hwnd)
|
||||
if (g_config.devmode || !g_hook_active || !g_ddraw->hwnd)
|
||||
return;
|
||||
|
||||
if (g_mouse_locked)
|
||||
@ -87,7 +88,7 @@ LRESULT CALLBACK mouse_hook_proc(int Code, WPARAM wParam, LPARAM lParam)
|
||||
if (!g_ddraw)
|
||||
return g_mouse_proc(Code, wParam, lParam);
|
||||
|
||||
if (Code < 0 || (!g_ddraw->devmode && !g_mouse_locked))
|
||||
if (Code < 0 || (!g_config.devmode && !g_mouse_locked))
|
||||
return CallNextHookEx(g_mouse_hook, Code, wParam, lParam);
|
||||
|
||||
fake_GetCursorPos(&((MOUSEHOOKSTRUCT*)lParam)->pt);
|
||||
|
@ -12,6 +12,7 @@
|
||||
#include "debug.h"
|
||||
#include "D3d9types.h"
|
||||
#include "hook.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
static BOOL d3d9_create_resources();
|
||||
@ -38,7 +39,7 @@ BOOL d3d9_is_available()
|
||||
|
||||
BOOL d3d9_create()
|
||||
{
|
||||
if (g_d3d9.hwnd == g_ddraw->hwnd && d3d9_create_resources() && d3d9_reset(g_ddraw->windowed))
|
||||
if (g_d3d9.hwnd == g_ddraw->hwnd && d3d9_create_resources() && d3d9_reset(g_config.windowed))
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
@ -109,13 +110,13 @@ BOOL d3d9_create()
|
||||
|
||||
memset(&g_d3d9.params, 0, sizeof(g_d3d9.params));
|
||||
|
||||
g_d3d9.params.Windowed = g_ddraw->windowed || g_ddraw->nonexclusive;
|
||||
g_d3d9.params.Windowed = g_config.windowed || g_config.nonexclusive;
|
||||
g_d3d9.params.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
g_d3d9.params.hDeviceWindow = g_ddraw->hwnd;
|
||||
g_d3d9.params.PresentationInterval = g_ddraw->vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||
g_d3d9.params.PresentationInterval = g_config.vsync ? D3DPRESENT_INTERVAL_ONE : D3DPRESENT_INTERVAL_IMMEDIATE;
|
||||
g_d3d9.params.BackBufferWidth = g_d3d9.params.Windowed ? 0 : g_ddraw->render.width;
|
||||
g_d3d9.params.BackBufferHeight = g_d3d9.params.Windowed ? 0 : g_ddraw->render.height;
|
||||
g_d3d9.params.FullScreen_RefreshRateInHz = g_d3d9.params.Windowed ? 0 : g_ddraw->refresh_rate;
|
||||
g_d3d9.params.FullScreen_RefreshRateInHz = g_d3d9.params.Windowed ? 0 : g_config.refresh_rate;
|
||||
g_d3d9.params.BackBufferFormat = g_ddraw->mode.dmBitsPerPel == 16 ? D3DFMT_R5G6B5 : D3DFMT_X8R8G8B8;
|
||||
g_d3d9.params.BackBufferCount = 1;
|
||||
|
||||
@ -150,7 +151,7 @@ BOOL d3d9_on_device_lost()
|
||||
{
|
||||
if (g_d3d9.device && IDirect3DDevice9_TestCooperativeLevel(g_d3d9.device) == D3DERR_DEVICENOTRESET)
|
||||
{
|
||||
return d3d9_reset(g_ddraw->windowed);
|
||||
return d3d9_reset(g_config.windowed);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
@ -158,10 +159,10 @@ BOOL d3d9_on_device_lost()
|
||||
|
||||
BOOL d3d9_reset(BOOL windowed)
|
||||
{
|
||||
g_d3d9.params.Windowed = windowed || g_ddraw->nonexclusive;
|
||||
g_d3d9.params.Windowed = windowed || g_config.nonexclusive;
|
||||
g_d3d9.params.BackBufferWidth = g_d3d9.params.Windowed ? 0 : g_ddraw->render.width;
|
||||
g_d3d9.params.BackBufferHeight = g_d3d9.params.Windowed ? 0 : g_ddraw->render.height;
|
||||
g_d3d9.params.FullScreen_RefreshRateInHz = g_d3d9.params.Windowed ? 0 : g_ddraw->refresh_rate;
|
||||
g_d3d9.params.FullScreen_RefreshRateInHz = g_d3d9.params.Windowed ? 0 : g_config.refresh_rate;
|
||||
g_d3d9.params.BackBufferFormat = g_ddraw->mode.dmBitsPerPel == 16 ? D3DFMT_R5G6B5 : D3DFMT_X8R8G8B8;
|
||||
|
||||
if (g_d3d9.device && SUCCEEDED(IDirect3DDevice9_Reset(g_d3d9.device, &g_d3d9.params)))
|
||||
@ -281,7 +282,7 @@ static BOOL d3d9_create_resources()
|
||||
g_d3d9.tex_height,
|
||||
1,
|
||||
0,
|
||||
g_ddraw->bpp == 16 ? (g_ddraw->rgb555 ? D3DFMT_X1R5G5B5 : D3DFMT_R5G6B5) : g_ddraw->bpp == 32 ? D3DFMT_X8R8G8B8 : D3DFMT_L8,
|
||||
g_ddraw->bpp == 16 ? (g_config.rgb555 ? D3DFMT_X1R5G5B5 : D3DFMT_R5G6B5) : g_ddraw->bpp == 32 ? D3DFMT_X8R8G8B8 : D3DFMT_L8,
|
||||
D3DPOOL_MANAGED,
|
||||
&g_d3d9.surface_tex[i],
|
||||
0));
|
||||
@ -318,7 +319,7 @@ static BOOL d3d9_create_resources()
|
||||
}
|
||||
else
|
||||
{
|
||||
if (g_ddraw->d3d9_filter == FILTER_LANCZOS)
|
||||
if (g_config.d3d9_filter == FILTER_LANCZOS)
|
||||
{
|
||||
BOOL error = FAILED(
|
||||
IDirect3DDevice9_CreatePixelShader(
|
||||
@ -328,11 +329,11 @@ static BOOL d3d9_create_resources()
|
||||
|
||||
if (error || !g_d3d9.pixel_shader_upscale)
|
||||
{
|
||||
g_ddraw->d3d9_filter = FILTER_CUBIC;
|
||||
g_config.d3d9_filter = FILTER_CUBIC;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw->d3d9_filter == FILTER_CUBIC)
|
||||
if (g_config.d3d9_filter == FILTER_CUBIC)
|
||||
{
|
||||
IDirect3DDevice9_CreatePixelShader(
|
||||
g_d3d9.device,
|
||||
@ -357,7 +358,7 @@ static BOOL d3d9_set_states()
|
||||
err = err || FAILED(IDirect3DDevice9_SetTexture(g_d3d9.device, 1, (IDirect3DBaseTexture9*)g_d3d9.palette_tex[0]));
|
||||
|
||||
BOOL bilinear =
|
||||
g_ddraw->d3d9_filter &&
|
||||
g_config.d3d9_filter &&
|
||||
g_d3d9.pixel_shader_upscale &&
|
||||
(g_ddraw->render.viewport.width != g_ddraw->width || g_ddraw->render.viewport.height != g_ddraw->height);
|
||||
|
||||
@ -374,9 +375,9 @@ static BOOL d3d9_set_states()
|
||||
}
|
||||
else
|
||||
{
|
||||
if (g_ddraw->d3d9_filter)
|
||||
if (g_config.d3d9_filter)
|
||||
{
|
||||
if (g_ddraw->d3d9_filter == FILTER_LANCZOS &&
|
||||
if (g_config.d3d9_filter == FILTER_LANCZOS &&
|
||||
g_d3d9.pixel_shader_upscale &&
|
||||
(g_ddraw->render.viewport.width != g_ddraw->width ||
|
||||
g_ddraw->render.viewport.height != g_ddraw->height) &&
|
||||
@ -388,7 +389,7 @@ static BOOL d3d9_set_states()
|
||||
else if (
|
||||
SUCCEEDED(IDirect3DDevice9_SetSamplerState(g_d3d9.device, 0, D3DSAMP_MAGFILTER, D3DTEXF_LINEAR)) &&
|
||||
SUCCEEDED(IDirect3DDevice9_SetSamplerState(g_d3d9.device, 0, D3DSAMP_MINFILTER, D3DTEXF_LINEAR)) &&
|
||||
g_ddraw->d3d9_filter == FILTER_CUBIC &&
|
||||
g_config.d3d9_filter == FILTER_CUBIC &&
|
||||
g_d3d9.pixel_shader_upscale &&
|
||||
(g_ddraw->render.viewport.width != g_ddraw->width ||
|
||||
g_ddraw->render.viewport.height != g_ddraw->height) &&
|
||||
@ -453,10 +454,10 @@ DWORD WINAPI d3d9_render_main(void)
|
||||
|
||||
BOOL needs_update = FALSE;
|
||||
|
||||
DWORD timeout = g_ddraw->render.minfps > 0 ? g_ddraw->render.minfps_tick_len : INFINITE;
|
||||
DWORD timeout = g_config.minfps > 0 ? g_config.minfps_tick_len : INFINITE;
|
||||
|
||||
while (g_ddraw->render.run &&
|
||||
(g_ddraw->render.minfps < 0 || WaitForSingleObject(g_ddraw->render.sem, timeout) != WAIT_FAILED))
|
||||
(g_config.minfps < 0 || WaitForSingleObject(g_ddraw->render.sem, timeout) != WAIT_FAILED))
|
||||
{
|
||||
#if _DEBUG
|
||||
dbg_draw_frame_info_start();
|
||||
@ -474,10 +475,10 @@ DWORD WINAPI d3d9_render_main(void)
|
||||
g_ddraw->primary->height == g_ddraw->height &&
|
||||
(g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
|
||||
{
|
||||
if (g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
EnterCriticalSection(&g_ddraw->primary->cs);
|
||||
|
||||
if (g_ddraw->vhack)
|
||||
if (g_config.vhack)
|
||||
{
|
||||
if (util_detect_low_res_screen())
|
||||
{
|
||||
@ -493,7 +494,7 @@ DWORD WINAPI d3d9_render_main(void)
|
||||
|
||||
D3DLOCKED_RECT lock_rc;
|
||||
|
||||
if (InterlockedExchange(&g_ddraw->render.surface_updated, FALSE) || g_ddraw->render.minfps == -2)
|
||||
if (InterlockedExchange(&g_ddraw->render.surface_updated, FALSE) || g_config.minfps == -2)
|
||||
{
|
||||
if (++tex_index >= D3D9_TEXTURE_COUNT)
|
||||
tex_index = 0;
|
||||
@ -521,7 +522,7 @@ DWORD WINAPI d3d9_render_main(void)
|
||||
}
|
||||
|
||||
if (g_ddraw->bpp == 8 &&
|
||||
(InterlockedExchange(&g_ddraw->render.palette_updated, FALSE) || g_ddraw->render.minfps == -2))
|
||||
(InterlockedExchange(&g_ddraw->render.palette_updated, FALSE) || g_config.minfps == -2))
|
||||
{
|
||||
if (++pal_index >= D3D9_TEXTURE_COUNT)
|
||||
pal_index = 0;
|
||||
@ -537,7 +538,7 @@ DWORD WINAPI d3d9_render_main(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw->fixchilds)
|
||||
if (g_config.fixchilds)
|
||||
{
|
||||
g_ddraw->child_window_exists = FALSE;
|
||||
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
||||
@ -559,7 +560,7 @@ DWORD WINAPI d3d9_render_main(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
LeaveCriticalSection(&g_ddraw->primary->cs);
|
||||
}
|
||||
|
||||
@ -595,7 +596,7 @@ DWORD WINAPI d3d9_render_main(void)
|
||||
fpsl_frame_end();
|
||||
}
|
||||
|
||||
if (g_ddraw->vhack)
|
||||
if (g_config.vhack)
|
||||
InterlockedExchange(&g_ddraw->upscale_hack_active, FALSE);
|
||||
|
||||
return 0;
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include "wndproc.h"
|
||||
#include "hook.h"
|
||||
#include "debug.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
DWORD WINAPI gdi_render_main(void)
|
||||
@ -23,7 +24,7 @@ DWORD WINAPI gdi_render_main(void)
|
||||
|
||||
warning_end_tick = timeGetTime() + (15 * 1000);
|
||||
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
PostMessage(g_ddraw->hwnd, WM_AUTORENDERER, 0, 0);
|
||||
|
||||
_snprintf(
|
||||
@ -37,10 +38,10 @@ DWORD WINAPI gdi_render_main(void)
|
||||
|
||||
fpsl_init();
|
||||
|
||||
DWORD timeout = g_ddraw->render.minfps > 0 ? g_ddraw->render.minfps_tick_len : INFINITE;
|
||||
DWORD timeout = g_config.minfps > 0 ? g_config.minfps_tick_len : INFINITE;
|
||||
|
||||
while (g_ddraw->render.run &&
|
||||
(g_ddraw->render.minfps < 0 || WaitForSingleObject(g_ddraw->render.sem, timeout) != WAIT_FAILED))
|
||||
(g_config.minfps < 0 || WaitForSingleObject(g_ddraw->render.sem, timeout) != WAIT_FAILED))
|
||||
{
|
||||
#if _DEBUG
|
||||
dbg_draw_frame_info_start();
|
||||
@ -56,7 +57,7 @@ DWORD WINAPI gdi_render_main(void)
|
||||
g_ddraw->primary->height == g_ddraw->height &&
|
||||
(g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
|
||||
{
|
||||
if (g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
EnterCriticalSection(&g_ddraw->primary->cs);
|
||||
|
||||
if (warning_end_tick)
|
||||
@ -75,12 +76,12 @@ DWORD WINAPI gdi_render_main(void)
|
||||
}
|
||||
}
|
||||
|
||||
BOOL upscale_hack = g_ddraw->vhack && util_detect_low_res_screen();
|
||||
BOOL upscale_hack = g_config.vhack && util_detect_low_res_screen();
|
||||
|
||||
if (g_ddraw->vhack)
|
||||
if (g_config.vhack)
|
||||
InterlockedExchange(&g_ddraw->upscale_hack_active, upscale_hack);
|
||||
|
||||
if (g_ddraw->fixchilds)
|
||||
if (g_config.fixchilds)
|
||||
{
|
||||
g_ddraw->child_window_exists = FALSE;
|
||||
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
||||
@ -154,7 +155,7 @@ DWORD WINAPI gdi_render_main(void)
|
||||
DIB_RGB_COLORS);
|
||||
}
|
||||
|
||||
if (g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
LeaveCriticalSection(&g_ddraw->primary->cs);
|
||||
}
|
||||
|
||||
|
@ -45,7 +45,7 @@ DWORD WINAPI ogl_render_main(void)
|
||||
g_ogl.context = ogl_create_core_context(g_ddraw->render.hdc);
|
||||
|
||||
if (oglu_ext_exists("WGL_EXT_swap_control", g_ddraw->render.hdc) && wglSwapIntervalEXT)
|
||||
wglSwapIntervalEXT(g_ddraw->vsync ? 1 : 0);
|
||||
wglSwapIntervalEXT(g_config.vsync ? 1 : 0);
|
||||
|
||||
fpsl_init();
|
||||
ogl_build_programs();
|
||||
@ -141,7 +141,7 @@ static void ogl_build_programs()
|
||||
{
|
||||
g_ogl.main_program = oglu_build_program(PASSTHROUGH_VERT_SHADER, PALETTE_FRAG_SHADER, core_profile);
|
||||
}
|
||||
else if (g_ddraw->bpp == 16 && g_ddraw->rgb555)
|
||||
else if (g_ddraw->bpp == 16 && g_config.rgb555)
|
||||
{
|
||||
g_ogl.main_program = oglu_build_program(PASSTHROUGH_VERT_SHADER, RGB555_FRAG_SHADER, core_profile);
|
||||
}
|
||||
@ -156,20 +156,20 @@ static void ogl_build_programs()
|
||||
{
|
||||
char shader_path[MAX_PATH] = { 0 };
|
||||
|
||||
strncpy(shader_path, g_ddraw->shader, sizeof(shader_path) - 1);
|
||||
strncpy(shader_path, g_config.shader, sizeof(shader_path) - 1);
|
||||
|
||||
if (GetFileAttributes(shader_path) == INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
_snprintf(shader_path, sizeof(shader_path) - 1, "%s%s", g_config.game_path, g_ddraw->shader);
|
||||
_snprintf(shader_path, sizeof(shader_path) - 1, "%s%s", g_config.game_path, g_config.shader);
|
||||
}
|
||||
|
||||
/* detect common upscaling shaders and disable them if no upscaling is required */
|
||||
|
||||
BOOL is_upscaler =
|
||||
strstr(g_ddraw->shader, "catmull-rom-bilinear.glsl") != NULL ||
|
||||
strstr(g_ddraw->shader, "lanczos2-sharp.glsl") != NULL ||
|
||||
strstr(g_ddraw->shader, "xbr-lv2-noblend.glsl") != NULL ||
|
||||
strstr(g_ddraw->shader, "xbrz-freescale.glsl") != NULL;
|
||||
strstr(g_config.shader, "catmull-rom-bilinear.glsl") != NULL ||
|
||||
strstr(g_config.shader, "lanczos2-sharp.glsl") != NULL ||
|
||||
strstr(g_config.shader, "xbr-lv2-noblend.glsl") != NULL ||
|
||||
strstr(g_config.shader, "xbrz-freescale.glsl") != NULL;
|
||||
|
||||
if (!is_upscaler ||
|
||||
g_ddraw->render.viewport.width != g_ddraw->width ||
|
||||
@ -183,19 +183,19 @@ static void ogl_build_programs()
|
||||
{
|
||||
g_ogl.scale_program =
|
||||
oglu_build_program(
|
||||
_stricmp(g_ddraw->shader, "xBR-lv2") == 0 ? XBR_LV2_VERT_SHADER :
|
||||
_stricmp(g_config.shader, "xBR-lv2") == 0 ? XBR_LV2_VERT_SHADER :
|
||||
PASSTHROUGH_VERT_SHADER,
|
||||
_stricmp(g_ddraw->shader, "Nearest neighbor") == 0 ? PASSTHROUGH_FRAG_SHADER :
|
||||
_stricmp(g_ddraw->shader, "Bilinear") == 0 ? PASSTHROUGH_FRAG_SHADER :
|
||||
_stricmp(g_ddraw->shader, "Lanczos") == 0 ? LANCZOS2_FRAG_SHADER :
|
||||
_stricmp(g_ddraw->shader, "xBR-lv2") == 0 ? XBR_LV2_FRAG_SHADER :
|
||||
_stricmp(g_config.shader, "Nearest neighbor") == 0 ? PASSTHROUGH_FRAG_SHADER :
|
||||
_stricmp(g_config.shader, "Bilinear") == 0 ? PASSTHROUGH_FRAG_SHADER :
|
||||
_stricmp(g_config.shader, "Lanczos") == 0 ? LANCZOS2_FRAG_SHADER :
|
||||
_stricmp(g_config.shader, "xBR-lv2") == 0 ? XBR_LV2_FRAG_SHADER :
|
||||
CATMULL_ROM_FRAG_SHADER,
|
||||
core_profile);
|
||||
|
||||
bilinear =
|
||||
_stricmp(g_ddraw->shader, "Nearest neighbor") != 0 &&
|
||||
_stricmp(g_ddraw->shader, "Lanczos") != 0 &&
|
||||
_stricmp(g_ddraw->shader, "xBR-lv2") != 0;
|
||||
_stricmp(g_config.shader, "Nearest neighbor") != 0 &&
|
||||
_stricmp(g_config.shader, "Lanczos") != 0 &&
|
||||
_stricmp(g_config.shader, "xBR-lv2") != 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -204,7 +204,7 @@ static void ogl_build_programs()
|
||||
g_oglu_got_version3 = FALSE;
|
||||
}
|
||||
|
||||
g_ogl.filter_bilinear = strstr(g_ddraw->shader, "bilinear.glsl") != NULL || bilinear;
|
||||
g_ogl.filter_bilinear = strstr(g_config.shader, "bilinear.glsl") != NULL || bilinear;
|
||||
}
|
||||
|
||||
if (g_oglu_got_version2 && !g_ogl.main_program)
|
||||
@ -259,7 +259,7 @@ static void ogl_create_textures(int width, int height)
|
||||
g_ogl.surface_type = GL_UNSIGNED_BYTE,
|
||||
0);
|
||||
}
|
||||
else if (g_ddraw->bpp == 16 && g_ddraw->rgb555)
|
||||
else if (g_ddraw->bpp == 16 && g_config.rgb555)
|
||||
{
|
||||
if (g_oglu_got_version3)
|
||||
{
|
||||
@ -662,10 +662,10 @@ static void ogl_render()
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
}
|
||||
|
||||
DWORD timeout = g_ddraw->render.minfps > 0 ? g_ddraw->render.minfps_tick_len : INFINITE;
|
||||
DWORD timeout = g_config.minfps > 0 ? g_config.minfps_tick_len : INFINITE;
|
||||
|
||||
while (g_ogl.use_opengl && g_ddraw->render.run &&
|
||||
(g_ddraw->render.minfps < 0 || WaitForSingleObject(g_ddraw->render.sem, timeout) != WAIT_FAILED))
|
||||
(g_config.minfps < 0 || WaitForSingleObject(g_ddraw->render.sem, timeout) != WAIT_FAILED))
|
||||
{
|
||||
#if _DEBUG
|
||||
dbg_draw_frame_info_start();
|
||||
@ -688,10 +688,10 @@ static void ogl_render()
|
||||
g_ddraw->primary->height == g_ddraw->height &&
|
||||
(g_ddraw->bpp == 16 || g_ddraw->bpp == 32 || g_ddraw->primary->palette))
|
||||
{
|
||||
if (g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
EnterCriticalSection(&g_ddraw->primary->cs);
|
||||
|
||||
if (g_ddraw->vhack)
|
||||
if (g_config.vhack)
|
||||
{
|
||||
if (util_detect_low_res_screen())
|
||||
{
|
||||
@ -709,7 +709,7 @@ static void ogl_render()
|
||||
}
|
||||
|
||||
if (g_ddraw->bpp == 8 &&
|
||||
(InterlockedExchange(&g_ddraw->render.palette_updated, FALSE) || g_ddraw->render.minfps == -2))
|
||||
(InterlockedExchange(&g_ddraw->render.palette_updated, FALSE) || g_config.minfps == -2))
|
||||
{
|
||||
if (++pal_index >= TEXTURE_COUNT)
|
||||
pal_index = 0;
|
||||
@ -728,7 +728,7 @@ static void ogl_render()
|
||||
g_ddraw->primary->palette->data_bgr);
|
||||
}
|
||||
|
||||
if (InterlockedExchange(&g_ddraw->render.surface_updated, FALSE) || g_ddraw->render.minfps == -2)
|
||||
if (InterlockedExchange(&g_ddraw->render.surface_updated, FALSE) || g_config.minfps == -2)
|
||||
{
|
||||
if (++tex_index >= TEXTURE_COUNT)
|
||||
tex_index = 0;
|
||||
@ -767,7 +767,7 @@ static void ogl_render()
|
||||
g_ogl.use_opengl = FALSE;
|
||||
}
|
||||
|
||||
if (g_ddraw->fixchilds)
|
||||
if (g_config.fixchilds)
|
||||
{
|
||||
g_ddraw->child_window_exists = FALSE;
|
||||
EnumChildWindows(g_ddraw->hwnd, util_enum_child_proc, (LPARAM)g_ddraw->primary);
|
||||
@ -797,7 +797,7 @@ static void ogl_render()
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw->lock_surfaces)
|
||||
if (g_config.lock_surfaces)
|
||||
LeaveCriticalSection(&g_ddraw->primary->cs);
|
||||
}
|
||||
|
||||
@ -928,7 +928,7 @@ static void ogl_render()
|
||||
fpsl_frame_end();
|
||||
}
|
||||
|
||||
if (g_ddraw->vhack)
|
||||
if (g_config.vhack)
|
||||
InterlockedExchange(&g_ddraw->upscale_hack_active, FALSE);
|
||||
}
|
||||
|
||||
|
@ -7,6 +7,7 @@
|
||||
#include "ddsurface.h"
|
||||
#include "lodepng.h"
|
||||
#include "blt.h"
|
||||
#include "config.h"
|
||||
|
||||
|
||||
static BOOL ss_screenshot_8bit(char* filename, IDirectDrawSurfaceImpl* src)
|
||||
@ -58,7 +59,7 @@ static BOOL ss_screenshot_16bit(char* filename, IDirectDrawSurfaceImpl* src)
|
||||
|
||||
if (buf)
|
||||
{
|
||||
if (g_ddraw->rgb555)
|
||||
if (g_config.rgb555)
|
||||
{
|
||||
blt_rgb555_to_rgba8888(
|
||||
buf,
|
||||
@ -146,10 +147,10 @@ BOOL ss_take_screenshot(IDirectDrawSurfaceImpl* src)
|
||||
}
|
||||
}
|
||||
|
||||
CreateDirectoryA(g_ddraw->screenshot_dir, NULL);
|
||||
CreateDirectoryA(g_config.screenshot_dir, NULL);
|
||||
|
||||
strftime(str_time, sizeof(str_time), "%Y-%m-%d-%H_%M_%S", localtime(&t));
|
||||
_snprintf(filename, sizeof(filename), "%s%s-%s.png", g_ddraw->screenshot_dir, title, str_time);
|
||||
_snprintf(filename, sizeof(filename), "%s%s-%s.png", g_config.screenshot_dir, title, str_time);
|
||||
|
||||
if (src->bpp == 8 && src->palette)
|
||||
{
|
||||
|
28
src/utils.c
28
src/utils.c
@ -271,7 +271,7 @@ void util_toggle_maximize()
|
||||
|
||||
AdjustWindowRectEx(&dst_rc, style, got_menu, exstyle);
|
||||
}
|
||||
else if (g_ddraw->boxing)
|
||||
else if (g_config.boxing)
|
||||
{
|
||||
dst_rc.left = 0;
|
||||
dst_rc.top = 0;
|
||||
@ -290,7 +290,7 @@ void util_toggle_maximize()
|
||||
|
||||
AdjustWindowRectEx(&dst_rc, style, got_menu, exstyle);
|
||||
}
|
||||
else if (g_ddraw->maintas)
|
||||
else if (g_config.maintas)
|
||||
{
|
||||
util_unadjust_window_rect(&dst_rc, style, got_menu, exstyle);
|
||||
|
||||
@ -334,13 +334,13 @@ void util_toggle_fullscreen()
|
||||
if (g_ddraw->bnet_active)
|
||||
return;
|
||||
|
||||
if (g_ddraw->toggle_borderless && g_ddraw->windowed)
|
||||
if (g_config.toggle_borderless && g_config.windowed)
|
||||
{
|
||||
if (!g_ddraw->fullscreen)
|
||||
if (!g_config.fullscreen)
|
||||
{
|
||||
mouse_unlock();
|
||||
|
||||
g_config.borderless_state = g_ddraw->fullscreen = TRUE;
|
||||
g_config.borderless_state = g_config.fullscreen = TRUE;
|
||||
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, 0);
|
||||
|
||||
mouse_lock();
|
||||
@ -349,7 +349,7 @@ void util_toggle_fullscreen()
|
||||
{
|
||||
mouse_unlock();
|
||||
|
||||
g_config.borderless_state = g_ddraw->fullscreen = FALSE;
|
||||
g_config.borderless_state = g_config.fullscreen = FALSE;
|
||||
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, 0);
|
||||
|
||||
//mouse_lock();
|
||||
@ -357,11 +357,11 @@ void util_toggle_fullscreen()
|
||||
}
|
||||
else
|
||||
{
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
mouse_unlock();
|
||||
|
||||
g_config.window_state = g_ddraw->windowed = FALSE;
|
||||
g_config.window_state = g_config.windowed = FALSE;
|
||||
dd_SetDisplayMode(g_ddraw->width, g_ddraw->height, g_ddraw->bpp, SDM_LEAVE_WINDOWED);
|
||||
util_update_bnet_pos(0, 0);
|
||||
|
||||
@ -370,11 +370,11 @@ void util_toggle_fullscreen()
|
||||
else
|
||||
{
|
||||
mouse_unlock();
|
||||
g_config.window_state = g_ddraw->windowed = TRUE;
|
||||
g_config.window_state = g_config.windowed = TRUE;
|
||||
|
||||
if (g_ddraw->renderer == d3d9_render_main && !g_ddraw->nonexclusive)
|
||||
if (g_ddraw->renderer == d3d9_render_main && !g_config.nonexclusive)
|
||||
{
|
||||
d3d9_reset(g_ddraw->windowed);
|
||||
d3d9_reset(g_config.windowed);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -418,7 +418,7 @@ BOOL util_unadjust_window_rect(LPRECT prc, DWORD dwStyle, BOOL fMenu, DWORD dwEx
|
||||
|
||||
void util_set_window_rect(int x, int y, int width, int height, UINT flags)
|
||||
{
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
if (g_ddraw->render.thread)
|
||||
{
|
||||
@ -470,7 +470,7 @@ BOOL CALLBACK util_enum_child_proc(HWND hwnd, LPARAM lparam)
|
||||
|
||||
//TRACE_EXT(" AVIWINDOW class=%s\n", class_name);
|
||||
|
||||
if (g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE ||
|
||||
if (g_config.fixchilds == FIX_CHILDS_DETECT_HIDE ||
|
||||
strcmp(class_name, "VideoRenderer") == 0 ||
|
||||
strcmp(class_name, "AVIWnd32") == 0 ||
|
||||
strcmp(class_name, "MCIWndClass") == 0)
|
||||
@ -496,7 +496,7 @@ BOOL CALLBACK util_enum_child_proc(HWND hwnd, LPARAM lparam)
|
||||
{
|
||||
g_ddraw->got_child_windows = g_ddraw->child_window_exists = TRUE;
|
||||
|
||||
if (g_ddraw->fixchilds == FIX_CHILDS_DETECT_PAINT)
|
||||
if (g_config.fixchilds == FIX_CHILDS_DETECT_PAINT)
|
||||
{
|
||||
HDC dst_dc = GetDC(hwnd);
|
||||
HDC src_dc;
|
||||
|
@ -31,13 +31,13 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint)
|
||||
realpt.x = pt.x;
|
||||
realpt.y = pt.y;
|
||||
|
||||
if (g_mouse_locked && (!g_ddraw->windowed || real_ScreenToClient(g_ddraw->hwnd, &pt)))
|
||||
if (g_mouse_locked && (!g_config.windowed || real_ScreenToClient(g_ddraw->hwnd, &pt)))
|
||||
{
|
||||
/* fallback solution for possible ClipCursor failure */
|
||||
int diffx = 0, diffy = 0;
|
||||
|
||||
int max_width = g_ddraw->adjmouse ? g_ddraw->render.viewport.width : g_ddraw->width;
|
||||
int max_height = g_ddraw->adjmouse ? g_ddraw->render.viewport.height : g_ddraw->height;
|
||||
int max_width = g_config.adjmouse ? g_ddraw->render.viewport.width : g_ddraw->width;
|
||||
int max_height = g_config.adjmouse ? g_ddraw->render.viewport.height : g_ddraw->height;
|
||||
|
||||
pt.x -= g_ddraw->mouse.x_adjust;
|
||||
pt.y -= g_ddraw->mouse.y_adjust;
|
||||
@ -72,7 +72,7 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint)
|
||||
int x = 0;
|
||||
int y = 0;
|
||||
|
||||
if (g_ddraw->adjmouse)
|
||||
if (g_config.adjmouse)
|
||||
{
|
||||
x = min((DWORD)(roundf(pt.x * g_ddraw->mouse.unscale_x)), g_ddraw->width - 1);
|
||||
y = min((DWORD)(roundf(pt.y * g_ddraw->mouse.unscale_y)), g_ddraw->height - 1);
|
||||
@ -83,7 +83,7 @@ BOOL WINAPI fake_GetCursorPos(LPPOINT lpPoint)
|
||||
y = min(pt.y, g_ddraw->height - 1);
|
||||
}
|
||||
|
||||
if (g_ddraw->vhack && InterlockedExchangeAdd(&g_ddraw->upscale_hack_active, 0))
|
||||
if (g_config.vhack && InterlockedExchangeAdd(&g_ddraw->upscale_hack_active, 0))
|
||||
{
|
||||
diffx = 0;
|
||||
diffy = 0;
|
||||
@ -149,7 +149,7 @@ BOOL WINAPI fake_ClipCursor(const RECT* lpRect)
|
||||
if (lpRect)
|
||||
CopyRect(&dst_rc, lpRect);
|
||||
|
||||
if (g_ddraw->adjmouse)
|
||||
if (g_config.adjmouse)
|
||||
{
|
||||
dst_rc.left = (LONG)(roundf(dst_rc.left * g_ddraw->render.scale_w));
|
||||
dst_rc.top = (LONG)(roundf(dst_rc.top * g_ddraw->render.scale_h));
|
||||
@ -157,8 +157,8 @@ BOOL WINAPI fake_ClipCursor(const RECT* lpRect)
|
||||
dst_rc.right = (LONG)(roundf(dst_rc.right * g_ddraw->render.scale_w));
|
||||
}
|
||||
|
||||
int max_width = g_ddraw->adjmouse ? g_ddraw->render.viewport.width : g_ddraw->width;
|
||||
int max_height = g_ddraw->adjmouse ? g_ddraw->render.viewport.height : g_ddraw->height;
|
||||
int max_width = g_config.adjmouse ? g_ddraw->render.viewport.width : g_ddraw->width;
|
||||
int max_height = g_config.adjmouse ? g_ddraw->render.viewport.height : g_ddraw->height;
|
||||
|
||||
dst_rc.bottom = min(dst_rc.bottom, max_height);
|
||||
dst_rc.right = min(dst_rc.right, max_width);
|
||||
@ -185,7 +185,7 @@ int WINAPI fake_ShowCursor(BOOL bShow)
|
||||
{
|
||||
if (g_ddraw && g_ddraw->hwnd)
|
||||
{
|
||||
if (g_mouse_locked || g_ddraw->devmode)
|
||||
if (g_mouse_locked || g_config.devmode)
|
||||
{
|
||||
int count = real_ShowCursor(bShow);
|
||||
InterlockedExchange((LONG*)&g_ddraw->show_cursor_count, count);
|
||||
@ -208,7 +208,7 @@ HCURSOR WINAPI fake_SetCursor(HCURSOR hCursor)
|
||||
{
|
||||
HCURSOR cursor = (HCURSOR)InterlockedExchange((LONG*)&g_ddraw->old_cursor, (LONG)hCursor);
|
||||
|
||||
if (!g_mouse_locked && !g_ddraw->devmode)
|
||||
if (!g_mouse_locked && !g_config.devmode)
|
||||
return cursor;
|
||||
}
|
||||
|
||||
@ -220,7 +220,7 @@ BOOL WINAPI fake_GetWindowRect(HWND hWnd, LPRECT lpRect)
|
||||
if (lpRect &&
|
||||
g_ddraw &&
|
||||
g_ddraw->hwnd &&
|
||||
(g_hook_method != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
(g_config.hook != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
{
|
||||
if (g_ddraw->hwnd == hWnd)
|
||||
{
|
||||
@ -252,7 +252,7 @@ BOOL WINAPI fake_GetClientRect(HWND hWnd, LPRECT lpRect)
|
||||
if (lpRect &&
|
||||
g_ddraw &&
|
||||
g_ddraw->hwnd == hWnd &&
|
||||
(g_hook_method != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
(g_config.hook != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
{
|
||||
lpRect->bottom = g_ddraw->height;
|
||||
lpRect->left = 0;
|
||||
@ -292,12 +292,12 @@ BOOL WINAPI fake_SetCursorPos(int X, int Y)
|
||||
if (!g_ddraw || !g_ddraw->hwnd || !g_ddraw->width)
|
||||
return real_SetCursorPos(X, Y);
|
||||
|
||||
if (!g_mouse_locked && !g_ddraw->devmode)
|
||||
if (!g_mouse_locked && !g_config.devmode)
|
||||
return TRUE;
|
||||
|
||||
POINT pt = { X, Y };
|
||||
|
||||
if (g_ddraw->adjmouse)
|
||||
if (g_config.adjmouse)
|
||||
{
|
||||
pt.x = (LONG)(roundf(pt.x * g_ddraw->mouse.scale_x));
|
||||
pt.y = (LONG)(roundf(pt.y * g_ddraw->mouse.scale_y));
|
||||
@ -426,7 +426,7 @@ LRESULT WINAPI fake_SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lPar
|
||||
int x = GET_X_LPARAM(lParam);
|
||||
int y = GET_Y_LPARAM(lParam);
|
||||
|
||||
if (g_ddraw->adjmouse)
|
||||
if (g_config.adjmouse)
|
||||
{
|
||||
x = (int)(roundf(x * g_ddraw->mouse.scale_x));
|
||||
y = (int)(roundf(y * g_ddraw->mouse.scale_y));
|
||||
@ -435,7 +435,7 @@ LRESULT WINAPI fake_SendMessageA(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lPar
|
||||
lParam = MAKELPARAM(x + g_ddraw->mouse.x_adjust, y + g_ddraw->mouse.y_adjust);
|
||||
}
|
||||
|
||||
if (g_ddraw->hwnd == hWnd && Msg == WM_SIZE && g_hook_method != 2)
|
||||
if (g_ddraw->hwnd == hWnd && Msg == WM_SIZE && g_config.hook != 2)
|
||||
{
|
||||
Msg = WM_SIZE_DDRAW;
|
||||
}
|
||||
@ -538,7 +538,7 @@ BOOL WINAPI fake_ShowWindow(HWND hWnd, int nCmdShow)
|
||||
if (nCmdShow == SW_MAXIMIZE)
|
||||
nCmdShow = SW_NORMAL;
|
||||
|
||||
if (nCmdShow == SW_MINIMIZE && g_hook_method != 2)
|
||||
if (nCmdShow == SW_MINIMIZE && g_config.hook != 2)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -547,7 +547,7 @@ BOOL WINAPI fake_ShowWindow(HWND hWnd, int nCmdShow)
|
||||
|
||||
HWND WINAPI fake_GetTopWindow(HWND hWnd)
|
||||
{
|
||||
if (g_ddraw && g_ddraw->windowed && g_ddraw->hwnd && !hWnd)
|
||||
if (g_ddraw && g_config.windowed && g_ddraw->hwnd && !hWnd)
|
||||
{
|
||||
return g_ddraw->hwnd;
|
||||
}
|
||||
@ -557,7 +557,7 @@ HWND WINAPI fake_GetTopWindow(HWND hWnd)
|
||||
|
||||
HWND WINAPI fake_GetForegroundWindow()
|
||||
{
|
||||
if (g_ddraw && g_ddraw->windowed && g_ddraw->hwnd)
|
||||
if (g_ddraw && g_config.windowed && g_ddraw->hwnd)
|
||||
{
|
||||
return g_ddraw->hwnd;
|
||||
}
|
||||
@ -584,7 +584,7 @@ HHOOK WINAPI fake_SetWindowsHookExA(int idHook, HOOKPROC lpfn, HINSTANCE hmod, D
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (idHook == WH_MOUSE && lpfn && !hmod && !g_mouse_hook && cfg_get_bool("fixmousehook", FALSE))
|
||||
if (idHook == WH_MOUSE && lpfn && !hmod && !g_mouse_hook && g_config.fixmousehook)
|
||||
{
|
||||
g_mouse_proc = lpfn;
|
||||
return g_mouse_hook = real_SetWindowsHookExA(idHook, mouse_hook_proc, hmod, dwThreadId);
|
||||
@ -597,7 +597,7 @@ BOOL WINAPI fake_PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT w
|
||||
{
|
||||
BOOL result = real_PeekMessageA(lpMsg, hWnd, wMsgFilterMin, wMsgFilterMax, wRemoveMsg);
|
||||
|
||||
if (result && g_ddraw && g_ddraw->width && g_ddraw->hook_peekmessage)
|
||||
if (result && g_ddraw && g_ddraw->width && g_config.hook_peekmessage)
|
||||
{
|
||||
switch (lpMsg->message)
|
||||
{
|
||||
@ -605,7 +605,7 @@ BOOL WINAPI fake_PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT w
|
||||
case WM_RBUTTONUP:
|
||||
case WM_MBUTTONUP:
|
||||
{
|
||||
if (!g_ddraw->devmode && !g_mouse_locked)
|
||||
if (!g_config.devmode && !g_mouse_locked)
|
||||
{
|
||||
int x = GET_X_LPARAM(lpMsg->lParam);
|
||||
int y = GET_Y_LPARAM(lpMsg->lParam);
|
||||
@ -646,7 +646,7 @@ BOOL WINAPI fake_PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT w
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
if (!g_ddraw->devmode && !g_mouse_locked)
|
||||
if (!g_config.devmode && !g_mouse_locked)
|
||||
{
|
||||
// Does not work with 'New Robinson'
|
||||
//return FALSE;
|
||||
@ -655,9 +655,9 @@ BOOL WINAPI fake_PeekMessageA(LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT w
|
||||
int x = max(GET_X_LPARAM(lpMsg->lParam) - g_ddraw->mouse.x_adjust, 0);
|
||||
int y = max(GET_Y_LPARAM(lpMsg->lParam) - g_ddraw->mouse.y_adjust, 0);
|
||||
|
||||
if (g_ddraw->adjmouse)
|
||||
if (g_config.adjmouse)
|
||||
{
|
||||
if (g_ddraw->vhack && !g_ddraw->devmode)
|
||||
if (g_config.vhack && !g_config.devmode)
|
||||
{
|
||||
POINT pt = { 0, 0 };
|
||||
fake_GetCursorPos(&pt);
|
||||
@ -695,7 +695,7 @@ int WINAPI fake_GetDeviceCaps(HDC hdc, int index)
|
||||
if (g_ddraw &&
|
||||
g_ddraw->bpp &&
|
||||
index == BITSPIXEL &&
|
||||
(g_hook_method != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
(g_config.hook != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
{
|
||||
return g_ddraw->bpp;
|
||||
}
|
||||
@ -703,7 +703,7 @@ int WINAPI fake_GetDeviceCaps(HDC hdc, int index)
|
||||
if (g_ddraw &&
|
||||
g_ddraw->bpp == 8 &&
|
||||
index == RASTERCAPS &&
|
||||
(g_hook_method != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
(g_config.hook != 2 || g_ddraw->renderer == gdi_render_main))
|
||||
{
|
||||
return RC_PALETTE | real_GetDeviceCaps(hdc, index);
|
||||
}
|
||||
@ -735,8 +735,8 @@ BOOL WINAPI fake_StretchBlt(
|
||||
|
||||
if (g_ddraw && g_ddraw->hwnd &&
|
||||
(hwnd == g_ddraw->hwnd ||
|
||||
(g_ddraw->fixchilds && IsChild(g_ddraw->hwnd, hwnd) &&
|
||||
(g_ddraw->fixchilds == FIX_CHILDS_DETECT_HIDE ||
|
||||
(g_config.fixchilds && IsChild(g_ddraw->hwnd, hwnd) &&
|
||||
(g_config.fixchilds == FIX_CHILDS_DETECT_HIDE ||
|
||||
strcmp(class_name, "AVIWnd32") == 0 ||
|
||||
strcmp(class_name, "MCIWndClass") == 0))))
|
||||
{
|
||||
@ -910,15 +910,14 @@ HFONT WINAPI fake_CreateFontIndirectA(CONST LOGFONTA* lplf)
|
||||
LOGFONTA lf;
|
||||
memcpy(&lf, lplf, sizeof(lf));
|
||||
|
||||
int minFontSize = cfg_get_int("min_font_size", 0);
|
||||
if (lf.lfHeight < 0) {
|
||||
lf.lfHeight = min(-minFontSize, lf.lfHeight);
|
||||
lf.lfHeight = min(-g_config.min_font_size, lf.lfHeight);
|
||||
}
|
||||
else {
|
||||
lf.lfHeight = max(minFontSize, lf.lfHeight);
|
||||
lf.lfHeight = max(g_config.min_font_size, lf.lfHeight);
|
||||
}
|
||||
|
||||
if (cfg_get_int("anti_aliased_fonts_min_size", 13) > abs(lf.lfHeight))
|
||||
if (g_config.anti_aliased_fonts_min_size > abs(lf.lfHeight))
|
||||
lf.lfQuality = NONANTIALIASED_QUALITY;
|
||||
|
||||
return real_CreateFontIndirectA(&lf);
|
||||
@ -940,15 +939,14 @@ HFONT WINAPI fake_CreateFontA(
|
||||
DWORD fdwPitchAndFamily,
|
||||
LPCTSTR lpszFace)
|
||||
{
|
||||
int minFontSize = cfg_get_int("min_font_size", 0);
|
||||
if (nHeight < 0) {
|
||||
nHeight = min(-minFontSize, nHeight);
|
||||
nHeight = min(-g_config.min_font_size, nHeight);
|
||||
}
|
||||
else {
|
||||
nHeight = max(minFontSize, nHeight);
|
||||
nHeight = max(g_config.min_font_size, nHeight);
|
||||
}
|
||||
|
||||
if (cfg_get_int("anti_aliased_fonts_min_size", 13) > abs(nHeight))
|
||||
if (g_config.anti_aliased_fonts_min_size > abs(nHeight))
|
||||
fdwQuality = NONANTIALIASED_QUALITY;
|
||||
|
||||
return
|
||||
@ -1077,7 +1075,7 @@ FARPROC WINAPI fake_GetProcAddress(HMODULE hModule, LPCSTR lpProcName)
|
||||
|
||||
FARPROC proc = real_GetProcAddress(hModule, lpProcName);
|
||||
|
||||
if (g_hook_method != 3 || !hModule || !HIWORD(lpProcName))
|
||||
if (g_config.hook != 3 || !hModule || !HIWORD(lpProcName))
|
||||
return proc;
|
||||
|
||||
for (int i = 0; g_hook_hooklist[i].module_name[0]; i++)
|
||||
@ -1153,7 +1151,7 @@ BOOL WINAPI fake_DestroyWindow(HWND hWnd)
|
||||
SetFocus(g_ddraw->hwnd);
|
||||
mouse_lock();
|
||||
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
g_ddraw->bnet_pos.x = g_ddraw->bnet_pos.y = 0;
|
||||
real_ClientToScreen(g_ddraw->hwnd, &g_ddraw->bnet_pos);
|
||||
@ -1176,11 +1174,11 @@ BOOL WINAPI fake_DestroyWindow(HWND hWnd)
|
||||
flags);
|
||||
}
|
||||
|
||||
g_ddraw->fullscreen = g_ddraw->bnet_was_upscaled;
|
||||
g_config.fullscreen = g_ddraw->bnet_was_upscaled;
|
||||
|
||||
SetTimer(g_ddraw->hwnd, IDT_TIMER_LEAVE_BNET, 1000, (TIMERPROC)NULL);
|
||||
|
||||
g_ddraw->resizable = TRUE;
|
||||
g_config.resizable = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1220,10 +1218,10 @@ HWND WINAPI fake_CreateWindowExA(
|
||||
{
|
||||
if (!g_ddraw->bnet_active)
|
||||
{
|
||||
g_ddraw->bnet_was_upscaled = g_ddraw->fullscreen;
|
||||
g_ddraw->fullscreen = FALSE;
|
||||
g_ddraw->bnet_was_upscaled = g_config.fullscreen;
|
||||
g_config.fullscreen = FALSE;
|
||||
|
||||
if (!g_ddraw->windowed && !g_ddraw->bnet_was_fullscreen)
|
||||
if (!g_config.windowed && !g_ddraw->bnet_was_fullscreen)
|
||||
{
|
||||
int ws = g_config.window_state;
|
||||
util_toggle_fullscreen();
|
||||
@ -1246,7 +1244,7 @@ HWND WINAPI fake_CreateWindowExA(
|
||||
int dst_height = g_config.window_rect.bottom ? g_ddraw->height : 0;
|
||||
|
||||
util_set_window_rect(x, y, dst_width, dst_height, flags);
|
||||
g_ddraw->resizable = FALSE;
|
||||
g_config.resizable = FALSE;
|
||||
|
||||
g_ddraw->bnet_active = TRUE;
|
||||
mouse_unlock();
|
||||
|
100
src/wndproc.c
100
src/wndproc.c
@ -54,7 +54,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
{
|
||||
MINMAXINFO* mmi = (MINMAXINFO*)lParam;
|
||||
|
||||
if (g_ddraw->windowed && g_ddraw->width)
|
||||
if (g_config.windowed && g_ddraw->width)
|
||||
{
|
||||
RECT rc = { 0, 0, g_ddraw->render.width, g_ddraw->render.height };
|
||||
|
||||
@ -90,7 +90,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_NCACTIVATE:
|
||||
{
|
||||
if (g_ddraw->noactivateapp)
|
||||
if (g_config.noactivateapp)
|
||||
{
|
||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
}
|
||||
@ -101,7 +101,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
{
|
||||
LRESULT result = DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
|
||||
if (!g_ddraw->resizable)
|
||||
if (!g_config.resizable)
|
||||
{
|
||||
switch (result)
|
||||
{
|
||||
@ -146,7 +146,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
case HTTOPRIGHT:
|
||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
case HTCLIENT:
|
||||
if (!g_mouse_locked && !g_ddraw->devmode)
|
||||
if (!g_mouse_locked && !g_config.devmode)
|
||||
{
|
||||
real_SetCursor(LoadCursor(NULL, IDC_ARROW));
|
||||
return TRUE;
|
||||
@ -176,11 +176,11 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_D3D9DEVICELOST:
|
||||
{
|
||||
if (((!g_ddraw->windowed && !g_ddraw->nonexclusive) || !util_is_minimized(g_ddraw->hwnd)) &&
|
||||
if (((!g_config.windowed && !g_config.nonexclusive) || !util_is_minimized(g_ddraw->hwnd)) &&
|
||||
g_ddraw->renderer == d3d9_render_main &&
|
||||
d3d9_on_device_lost())
|
||||
{
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
mouse_lock();
|
||||
}
|
||||
return 0;
|
||||
@ -193,7 +193,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
{
|
||||
KillTimer(g_ddraw->hwnd, IDT_TIMER_LEAVE_BNET);
|
||||
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
g_ddraw->bnet_was_fullscreen = FALSE;
|
||||
|
||||
if (!g_ddraw->bnet_active)
|
||||
@ -229,7 +229,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
*/
|
||||
|
||||
if (g_ddraw->wine &&
|
||||
!g_ddraw->windowed &&
|
||||
!g_config.windowed &&
|
||||
(pos->x > 0 || pos->y > 0) &&
|
||||
g_ddraw->last_set_window_pos_tick + 500 < timeGetTime())
|
||||
{
|
||||
@ -240,7 +240,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_WINEFULLSCREEN:
|
||||
{
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
{
|
||||
g_ddraw->last_set_window_pos_tick = timeGetTime();
|
||||
|
||||
@ -266,7 +266,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_ENTERSIZEMOVE:
|
||||
{
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
in_size_move = TRUE;
|
||||
}
|
||||
@ -274,7 +274,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_EXITSIZEMOVE:
|
||||
{
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
in_size_move = FALSE;
|
||||
|
||||
@ -287,7 +287,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
{
|
||||
RECT* windowrc = (RECT*)lParam;
|
||||
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
if (in_size_move)
|
||||
{
|
||||
@ -305,7 +305,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
RECT clientrc = { 0 };
|
||||
|
||||
/* maintain aspect ratio */
|
||||
if (g_ddraw->maintas &&
|
||||
if (g_config.maintas &&
|
||||
CopyRect(&clientrc, windowrc) &&
|
||||
util_unadjust_window_rect(
|
||||
&clientrc,
|
||||
@ -419,7 +419,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_SIZE:
|
||||
{
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
if (wParam == SIZE_RESTORED)
|
||||
{
|
||||
@ -450,7 +450,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_MOVE:
|
||||
{
|
||||
if (g_ddraw->windowed)
|
||||
if (g_config.windowed)
|
||||
{
|
||||
int x = (int)(short)LOWORD(lParam);
|
||||
int y = (int)(short)HIWORD(lParam);
|
||||
@ -460,7 +460,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
util_update_bnet_pos(x, y);
|
||||
}
|
||||
|
||||
if (in_size_move || (g_ddraw->wine && !g_ddraw->fullscreen && g_ddraw->render.thread))
|
||||
if (in_size_move || (g_ddraw->wine && !g_config.fullscreen && g_ddraw->render.thread))
|
||||
{
|
||||
if (x != -32000)
|
||||
g_config.window_rect.left = x; /* -32000 = Exit/Minimize */
|
||||
@ -502,7 +502,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
|
||||
if (wParam == SC_MAXIMIZE)
|
||||
{
|
||||
if (g_ddraw->resizable)
|
||||
if (g_config.resizable)
|
||||
{
|
||||
util_toggle_maximize();
|
||||
}
|
||||
@ -562,7 +562,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
|
||||
//if (g_ddraw->windowed || g_ddraw->noactivateapp)
|
||||
|
||||
if (!g_ddraw->allow_wmactivate)
|
||||
if (!g_config.allow_wmactivate)
|
||||
return 0;
|
||||
|
||||
break;
|
||||
@ -571,16 +571,16 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
{
|
||||
if (wParam)
|
||||
{
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
{
|
||||
if (g_ddraw->renderer != d3d9_render_main || g_ddraw->nonexclusive)
|
||||
if (g_ddraw->renderer != d3d9_render_main || g_config.nonexclusive)
|
||||
{
|
||||
ChangeDisplaySettings(&g_ddraw->render.mode, CDS_FULLSCREEN);
|
||||
real_ShowWindow(g_ddraw->hwnd, SW_RESTORE);
|
||||
mouse_lock();
|
||||
}
|
||||
}
|
||||
else if (g_ddraw->fullscreen && real_GetForegroundWindow() == g_ddraw->hwnd)
|
||||
else if (g_config.fullscreen && real_GetForegroundWindow() == g_ddraw->hwnd)
|
||||
{
|
||||
mouse_lock();
|
||||
}
|
||||
@ -589,7 +589,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
else
|
||||
{
|
||||
if (!g_ddraw->windowed && !g_mouse_locked && g_ddraw->noactivateapp && !g_ddraw->devmode)
|
||||
if (!g_config.windowed && !g_mouse_locked && g_config.noactivateapp && !g_config.devmode)
|
||||
return 0;
|
||||
|
||||
mouse_unlock();
|
||||
@ -597,9 +597,9 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
if (g_ddraw->wine && g_ddraw->last_set_window_pos_tick + 500 > timeGetTime())
|
||||
return 0;
|
||||
|
||||
if (!g_ddraw->windowed)
|
||||
if (!g_config.windowed)
|
||||
{
|
||||
if (g_ddraw->renderer != d3d9_render_main || g_ddraw->nonexclusive)
|
||||
if (g_ddraw->renderer != d3d9_render_main || g_config.nonexclusive)
|
||||
{
|
||||
real_ShowWindow(g_ddraw->hwnd, SW_MINIMIZE);
|
||||
ChangeDisplaySettings(NULL, g_ddraw->bnet_active ? CDS_FULLSCREEN : 0);
|
||||
@ -607,7 +607,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
}
|
||||
|
||||
if (wParam && g_ddraw->releasealt)
|
||||
if (wParam && g_config.releasealt)
|
||||
{
|
||||
INPUT ip;
|
||||
memset(&ip, 0, sizeof(ip));
|
||||
@ -626,18 +626,18 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw->windowed || g_ddraw->noactivateapp)
|
||||
if (g_config.windowed || g_config.noactivateapp)
|
||||
{
|
||||
/* let it pass through once (tiberian sun) */
|
||||
static BOOL one_time;
|
||||
|
||||
if (wParam && !one_time && g_ddraw->tshack)
|
||||
if (wParam && !one_time && g_config.tshack)
|
||||
{
|
||||
one_time = TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
if (wParam && g_ddraw->alt_key_down && !g_ddraw->releasealt)
|
||||
if (wParam && g_ddraw->alt_key_down && !g_config.releasealt)
|
||||
PostMessageA(g_ddraw->hwnd, WM_SYSKEYUP, VK_MENU, 0);
|
||||
|
||||
return 0;
|
||||
@ -654,7 +654,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_NCLBUTTONDBLCLK:
|
||||
{
|
||||
if (g_ddraw->resizable)
|
||||
if (g_config.resizable)
|
||||
{
|
||||
util_toggle_maximize();
|
||||
}
|
||||
@ -666,9 +666,9 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
BOOL context_code = (lParam & (1 << 29)) != 0;
|
||||
BOOL key_state = (lParam & (1 << 30)) != 0;
|
||||
|
||||
if (g_ddraw->hotkeys.toggle_fullscreen &&
|
||||
wParam == g_ddraw->hotkeys.toggle_fullscreen &&
|
||||
(!g_ddraw->fullscreen || (g_ddraw->windowed && g_ddraw->toggle_borderless)) &&
|
||||
if (g_config.hotkeys.toggle_fullscreen &&
|
||||
wParam == g_config.hotkeys.toggle_fullscreen &&
|
||||
(!g_config.fullscreen || (g_config.windowed && g_config.toggle_borderless)) &&
|
||||
context_code &&
|
||||
!key_state)
|
||||
{
|
||||
@ -676,11 +676,11 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (g_ddraw->hotkeys.toggle_maximize &&
|
||||
wParam == g_ddraw->hotkeys.toggle_maximize &&
|
||||
g_ddraw->resizable &&
|
||||
g_ddraw->windowed &&
|
||||
!g_ddraw->fullscreen)
|
||||
if (g_config.hotkeys.toggle_maximize &&
|
||||
wParam == g_config.hotkeys.toggle_maximize &&
|
||||
g_config.resizable &&
|
||||
g_config.windowed &&
|
||||
!g_config.fullscreen)
|
||||
{
|
||||
util_toggle_maximize();
|
||||
return 0;
|
||||
@ -700,7 +700,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
g_ddraw->alt_key_down = FALSE;
|
||||
}
|
||||
|
||||
if (wParam == VK_TAB || (g_ddraw->hotkeys.toggle_fullscreen && wParam == g_ddraw->hotkeys.toggle_fullscreen))
|
||||
if (wParam == VK_TAB || (g_config.hotkeys.toggle_fullscreen && wParam == g_config.hotkeys.toggle_fullscreen))
|
||||
{
|
||||
return DefWindowProc(hWnd, uMsg, wParam, lParam);
|
||||
}
|
||||
@ -709,20 +709,20 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_KEYDOWN:
|
||||
{
|
||||
if (g_ddraw->hotkeys.unlock_cursor1 &&
|
||||
(wParam == VK_CONTROL || wParam == g_ddraw->hotkeys.unlock_cursor1))
|
||||
if (g_config.hotkeys.unlock_cursor1 &&
|
||||
(wParam == VK_CONTROL || wParam == g_config.hotkeys.unlock_cursor1))
|
||||
{
|
||||
if (GetAsyncKeyState(VK_CONTROL) & 0x8000 && GetAsyncKeyState(g_ddraw->hotkeys.unlock_cursor1) & 0x8000)
|
||||
if (GetAsyncKeyState(VK_CONTROL) & 0x8000 && GetAsyncKeyState(g_config.hotkeys.unlock_cursor1) & 0x8000)
|
||||
{
|
||||
mouse_unlock();
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (g_ddraw->hotkeys.unlock_cursor2 &&
|
||||
(wParam == g_ddraw->hotkeys.unlock_cursor2 || wParam == VK_MENU || wParam == VK_CONTROL))
|
||||
if (g_config.hotkeys.unlock_cursor2 &&
|
||||
(wParam == g_config.hotkeys.unlock_cursor2 || wParam == VK_MENU || wParam == VK_CONTROL))
|
||||
{
|
||||
if ((GetAsyncKeyState(VK_RMENU) & 0x8000) && GetAsyncKeyState(g_ddraw->hotkeys.unlock_cursor2) & 0x8000)
|
||||
if ((GetAsyncKeyState(VK_RMENU) & 0x8000) && GetAsyncKeyState(g_config.hotkeys.unlock_cursor2) & 0x8000)
|
||||
{
|
||||
mouse_unlock();
|
||||
return 0;
|
||||
@ -733,7 +733,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
}
|
||||
case WM_KEYUP:
|
||||
{
|
||||
if (g_ddraw->hotkeys.screenshot && wParam == g_ddraw->hotkeys.screenshot)
|
||||
if (g_config.hotkeys.screenshot && wParam == g_config.hotkeys.screenshot)
|
||||
ss_take_screenshot(g_ddraw->primary);
|
||||
|
||||
break;
|
||||
@ -743,7 +743,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
case WM_RBUTTONUP:
|
||||
case WM_MBUTTONUP:
|
||||
{
|
||||
if (!g_ddraw->devmode && !g_mouse_locked)
|
||||
if (!g_config.devmode && !g_mouse_locked)
|
||||
{
|
||||
int x = GET_X_LPARAM(lParam);
|
||||
int y = GET_Y_LPARAM(lParam);
|
||||
@ -784,7 +784,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
case WM_MBUTTONDOWN:
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
if (!g_ddraw->devmode && !g_mouse_locked)
|
||||
if (!g_config.devmode && !g_mouse_locked)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
@ -792,9 +792,9 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
int x = max(GET_X_LPARAM(lParam) - g_ddraw->mouse.x_adjust, 0);
|
||||
int y = max(GET_Y_LPARAM(lParam) - g_ddraw->mouse.y_adjust, 0);
|
||||
|
||||
if (g_ddraw->adjmouse)
|
||||
if (g_config.adjmouse)
|
||||
{
|
||||
if (g_ddraw->vhack && !g_ddraw->devmode)
|
||||
if (g_config.vhack && !g_config.devmode)
|
||||
{
|
||||
POINT pt = { 0, 0 };
|
||||
fake_GetCursorPos(&pt);
|
||||
@ -831,7 +831,7 @@ LRESULT CALLBACK fake_WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam
|
||||
case WM_RBUTTONDOWN:
|
||||
case WM_XBUTTONDOWN:
|
||||
{
|
||||
if (!g_ddraw->devmode && !g_mouse_locked)
|
||||
if (!g_config.devmode && !g_mouse_locked)
|
||||
{
|
||||
int x = (DWORD)((GET_X_LPARAM(lParam) - g_ddraw->render.viewport.x) * g_ddraw->mouse.unscale_x);
|
||||
int y = (DWORD)((GET_Y_LPARAM(lParam) - g_ddraw->render.viewport.y) * g_ddraw->mouse.unscale_y);
|
||||
|
Loading…
x
Reference in New Issue
Block a user