2018-10-25 07:03:01 +02:00
|
|
|
#include <windows.h>
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <d3d9.h>
|
2021-02-02 18:15:25 +01:00
|
|
|
#include "fps_limiter.h"
|
2020-10-13 09:20:52 +02:00
|
|
|
#include "config.h"
|
|
|
|
#include "dd.h"
|
2018-10-25 07:03:01 +02:00
|
|
|
#include "render_d3d9.h"
|
2020-10-13 09:20:52 +02:00
|
|
|
#include "render_gdi.h"
|
|
|
|
#include "render_ogl.h"
|
2019-04-06 05:35:23 +02:00
|
|
|
#include "hook.h"
|
2020-10-13 09:20:52 +02:00
|
|
|
#include "debug.h"
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2021-09-16 03:11:47 +02:00
|
|
|
static void cfg_init();
|
2020-10-13 09:20:52 +02:00
|
|
|
static void cfg_create_ini();
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2021-06-11 20:30:43 +02:00
|
|
|
CNCDDRAWCONFIG g_config =
|
|
|
|
{ .window_rect = {.left = -32000, .top = -32000, .right = 0, .bottom = 0 }, .window_state = -1 };
|
2020-10-13 09:20:52 +02:00
|
|
|
|
|
|
|
void cfg_load()
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
|
|
|
char tmp[256];
|
2021-09-09 21:32:54 +02:00
|
|
|
|
2021-09-16 03:11:47 +02:00
|
|
|
cfg_init();
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2021-06-11 20:30:43 +02:00
|
|
|
/* load settings from ini */
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->windowed = cfg_get_bool("windowed", 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);
|
2021-06-17 04:12:05 +02:00
|
|
|
g_ddraw->adjmouse = cfg_get_bool("adjmouse", TRUE) || !cfg_get_bool("handlemouse", TRUE);
|
2020-10-13 09:20:52 +02:00
|
|
|
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->accurate_timers = cfg_get_bool("accuratetimers", FALSE);
|
|
|
|
g_ddraw->resizable = cfg_get_bool("resizable", TRUE);
|
|
|
|
g_ddraw->nonexclusive = cfg_get_bool("nonexclusive", FALSE);
|
2021-05-23 06:16:58 +02:00
|
|
|
g_ddraw->fixpitch = cfg_get_bool("fixpitch", FALSE);
|
2021-08-10 14:12:06 +02:00
|
|
|
g_ddraw->fixchilds = cfg_get_int("fixchilds", FIX_CHILDS_DETECT_PAINT);
|
2021-06-02 14:29:25 +02:00
|
|
|
g_ddraw->fixwndprochook = cfg_get_bool("fixwndprochook", FALSE);
|
2021-12-17 02:41:02 +01:00
|
|
|
g_ddraw->novidmem = cfg_get_bool("novidmem", FALSE);
|
2021-08-18 16:25:29 +02:00
|
|
|
g_ddraw->fixnotresponding = cfg_get_bool("fixnotresponding", FALSE);
|
2021-09-19 04:24:22 +02:00
|
|
|
g_ddraw->locktopleft = cfg_get_bool("locktopleft", FALSE);
|
2021-09-16 01:57:44 +02:00
|
|
|
g_ddraw->releasealt = cfg_get_bool("releasealt", FALSE);
|
2021-01-17 22:49:42 +01:00
|
|
|
g_ddraw->d3d9linear = cfg_get_bool("d3d9linear", TRUE);
|
2021-06-07 02:59:21 +02:00
|
|
|
g_ddraw->gdilinear = cfg_get_bool("gdilinear", FALSE);
|
2021-06-10 03:48:26 +02:00
|
|
|
g_ddraw->resolutions = cfg_get_int("resolutions", RESLIST_NORMAL);
|
2021-12-18 04:59:25 +01:00
|
|
|
g_ddraw->fpupreserve = cfg_get_bool("fpupreserve", FALSE);
|
2021-12-17 03:16:08 +01:00
|
|
|
cfg_get_string("screenshotdir", ".\\Screenshots\\", g_ddraw->screenshot_dir, sizeof(g_ddraw->screenshot_dir));
|
2020-10-13 09:20:52 +02:00
|
|
|
|
2021-09-19 04:24:22 +02:00
|
|
|
if (g_ddraw->locktopleft)
|
|
|
|
g_ddraw->adjmouse = FALSE;
|
|
|
|
|
2021-06-09 07:24:17 +02:00
|
|
|
g_ddraw->armadahack = cfg_get_bool("armadahack", FALSE);
|
2021-06-18 12:18:35 +02:00
|
|
|
g_ddraw->tshack = cfg_get_bool("tshack", FALSE);
|
2022-02-05 04:03:00 +01:00
|
|
|
g_ddraw->infantryhack = cfg_get_bool("infantryhack", FALSE);
|
2021-06-09 07:24:17 +02:00
|
|
|
|
2021-09-29 12:55:20 +02:00
|
|
|
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);
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
g_config.window_rect.right = cfg_get_int("width", 0);
|
|
|
|
g_config.window_rect.bottom = cfg_get_int("height", 0);
|
|
|
|
g_config.window_rect.left = cfg_get_int("posX", -32000);
|
|
|
|
g_config.window_rect.top = cfg_get_int("posY", -32000);
|
|
|
|
|
2021-01-17 07:43:25 +01:00
|
|
|
g_config.save_settings = cfg_get_int("savesettings", 1);
|
2020-09-30 10:14:30 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
g_hook_method = cfg_get_int("hook", 4);
|
2021-08-11 15:50:57 +02:00
|
|
|
g_hook_dinput = cfg_get_bool("dinputhook", FALSE);
|
2021-06-11 20:30:43 +02:00
|
|
|
|
2021-02-18 11:14:26 +01:00
|
|
|
g_ddraw->render.maxfps = cfg_get_int("maxfps", -1);
|
2020-10-18 02:40:45 +02:00
|
|
|
g_ddraw->render.minfps = cfg_get_int("minfps", 0);
|
2018-12-10 04:24:30 +01:00
|
|
|
|
2020-10-18 02:40:45 +02:00
|
|
|
if (g_ddraw->render.minfps > 1000)
|
|
|
|
{
|
|
|
|
g_ddraw->render.minfps = 1000;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (g_ddraw->render.minfps > 0)
|
|
|
|
{
|
2021-05-10 04:00:45 +02:00
|
|
|
g_ddraw->render.minfps_tick_len = (DWORD)(1000.0f / g_ddraw->render.minfps);
|
2020-10-18 02:40:45 +02:00
|
|
|
}
|
2020-01-23 08:58:22 +01:00
|
|
|
|
2021-06-11 20:30:43 +02:00
|
|
|
/* can't fully set it up here due to missing g_ddraw->mode.dmDisplayFrequency */
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_ddraw->accurate_timers || g_ddraw->vsync)
|
2021-02-02 18:15:25 +01:00
|
|
|
g_fpsl.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
2018-11-29 21:26:43 +01:00
|
|
|
|
2021-02-19 03:24:11 +01:00
|
|
|
g_ddraw->maxgameticks = cfg_get_int("maxgameticks", 0);
|
2020-10-13 11:29:52 +02:00
|
|
|
|
2021-02-19 03:24:11 +01:00
|
|
|
if (g_ddraw->maxgameticks > 0 && g_ddraw->maxgameticks <= 1000)
|
2018-11-29 17:45:10 +01:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_ddraw->accurate_timers)
|
|
|
|
g_ddraw->ticks_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
2018-11-30 04:07:43 +01:00
|
|
|
|
2021-02-19 03:24:11 +01:00
|
|
|
float len = 1000.0f / g_ddraw->maxgameticks;
|
2021-05-10 04:00:45 +02:00
|
|
|
g_ddraw->ticks_limiter.tick_length_ns = (LONGLONG)(len * 10000);
|
|
|
|
g_ddraw->ticks_limiter.tick_length = (DWORD)(len + 0.5f);
|
2018-11-29 17:45:10 +01:00
|
|
|
}
|
|
|
|
|
2021-02-19 03:24:11 +01:00
|
|
|
if (g_ddraw->maxgameticks >= 0 || g_ddraw->maxgameticks == -2)
|
2020-10-06 04:28:18 +02:00
|
|
|
{
|
2021-06-11 20:30:43 +02:00
|
|
|
/* always using 60 fps for flip... */
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_ddraw->accurate_timers)
|
|
|
|
g_ddraw->flip_limiter.htimer = CreateWaitableTimer(NULL, TRUE, NULL);
|
2018-10-31 11:48:41 +01:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
float flip_len = 1000.0f / 60;
|
2021-05-10 04:00:45 +02:00
|
|
|
g_ddraw->flip_limiter.tick_length_ns = (LONGLONG)(flip_len * 10000);
|
|
|
|
g_ddraw->flip_limiter.tick_length = (DWORD)(flip_len + 0.5f);
|
2020-10-06 04:28:18 +02:00
|
|
|
}
|
2018-11-30 04:07:43 +01:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if ((g_ddraw->fullscreen = cfg_get_bool("fullscreen", FALSE)))
|
2020-10-13 11:29:52 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_config.window_rect.left = g_config.window_rect.top = -32000;
|
2020-10-13 11:29:52 +02:00
|
|
|
}
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (cfg_get_bool("singlecpu", TRUE))
|
2018-12-10 03:42:30 +01:00
|
|
|
{
|
2018-10-25 07:03:01 +02:00
|
|
|
SetProcessAffinityMask(GetCurrentProcess(), 1);
|
2018-12-10 03:42:30 +01:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
DWORD system_affinity;
|
|
|
|
DWORD proc_affinity;
|
2018-12-10 03:42:30 +01:00
|
|
|
HANDLE proc = GetCurrentProcess();
|
2020-10-13 21:58:04 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (GetProcessAffinityMask(proc, &proc_affinity, &system_affinity))
|
|
|
|
SetProcessAffinityMask(proc, system_affinity);
|
2018-12-10 03:42:30 +01:00
|
|
|
}
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->render.bpp = cfg_get_int("bpp", 0);
|
|
|
|
|
|
|
|
if (g_ddraw->render.bpp != 16 && g_ddraw->render.bpp != 24 && g_ddraw->render.bpp != 32)
|
2020-10-13 11:29:52 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->render.bpp = 0;
|
2020-10-13 11:29:52 +02:00
|
|
|
}
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2021-06-11 20:30:43 +02:00
|
|
|
/* to do: read .glslp config file instead of the shader and apply the correct settings */
|
2020-10-13 09:20:52 +02:00
|
|
|
cfg_get_string("shader", "", g_ddraw->shader, sizeof(g_ddraw->shader));
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
cfg_get_string("renderer", "auto", tmp, sizeof(tmp));
|
2021-06-11 20:30:43 +02:00
|
|
|
TRACE(" Using %s renderer\n", tmp);
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2021-06-11 20:30:43 +02:00
|
|
|
if (tolower(tmp[0]) == 's' || tolower(tmp[0]) == 'g') /* gdi */
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->renderer = gdi_render_main;
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
2021-06-11 20:30:43 +02:00
|
|
|
else if (tolower(tmp[0]) == 'd') /* direct3d9 */
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->renderer = d3d9_render_main;
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
2021-06-11 20:30:43 +02:00
|
|
|
else if (tolower(tmp[0]) == 'o') /* opengl */
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
if (oglu_load_dll())
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->renderer = ogl_render_main;
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->show_driver_warning = TRUE;
|
|
|
|
g_ddraw->renderer = gdi_render_main;
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
|
|
|
}
|
2021-06-11 20:30:43 +02:00
|
|
|
else /* auto */
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
if (!g_ddraw->wine && d3d9_is_available())
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->renderer = d3d9_render_main;
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
2020-10-13 09:20:52 +02:00
|
|
|
else if (oglu_load_dll())
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->renderer = ogl_render_main;
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
g_ddraw->show_driver_warning = TRUE;
|
|
|
|
g_ddraw->renderer = gdi_render_main;
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
void cfg_save()
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
if (!g_config.save_settings)
|
2020-09-30 10:14:30 +02:00
|
|
|
return;
|
|
|
|
|
2018-10-25 07:03:01 +02:00
|
|
|
char buf[16];
|
2021-06-11 20:30:43 +02:00
|
|
|
char* section = g_config.save_settings == 1 ? "ddraw" : g_config.process_file_name;
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_config.window_rect.right)
|
2018-10-25 09:31:40 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
sprintf(buf, "%ld", g_config.window_rect.right);
|
|
|
|
WritePrivateProfileString(section, "width", buf, g_config.ini_path);
|
2018-10-27 16:44:09 +02:00
|
|
|
}
|
2021-06-11 20:30:43 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_config.window_rect.bottom)
|
2018-10-27 16:44:09 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
sprintf(buf, "%ld", g_config.window_rect.bottom);
|
|
|
|
WritePrivateProfileString(section, "height", buf, g_config.ini_path);
|
2018-10-27 16:44:09 +02:00
|
|
|
}
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_config.window_rect.left != -32000)
|
2018-10-27 16:44:09 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
sprintf(buf, "%ld", g_config.window_rect.left);
|
|
|
|
WritePrivateProfileString(section, "posX", buf, g_config.ini_path);
|
2018-10-25 09:31:40 +02:00
|
|
|
}
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_config.window_rect.top != -32000)
|
2018-10-25 09:31:40 +02:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
sprintf(buf, "%ld", g_config.window_rect.top);
|
|
|
|
WritePrivateProfileString(section, "posY", buf, g_config.ini_path);
|
2018-11-07 23:28:19 +01:00
|
|
|
}
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (g_config.window_state != -1)
|
2018-11-07 23:28:19 +01:00
|
|
|
{
|
2020-10-13 09:20:52 +02:00
|
|
|
WritePrivateProfileString(section, "windowed", g_config.window_state ? "true" : "false", g_config.ini_path);
|
2018-10-25 09:31:40 +02:00
|
|
|
}
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
static void cfg_create_ini()
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2021-06-11 20:30:43 +02:00
|
|
|
FILE* fh = fopen(g_config.ini_path, "w");
|
2018-10-25 07:03:01 +02:00
|
|
|
if (fh)
|
|
|
|
{
|
|
|
|
fputs(
|
2018-11-12 01:29:51 +01:00
|
|
|
"; cnc-ddraw - https://github.com/CnCNet/cnc-ddraw - https://cncnet.org\n"
|
|
|
|
"\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"[ddraw]\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; ### Optional settings ###\n"
|
|
|
|
"; Use the following settings to adjust the look and feel to your liking\n"
|
|
|
|
"\n"
|
|
|
|
"\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Stretch to custom resolution, 0 = defaults to the size game requests\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"width=0\n"
|
|
|
|
"height=0\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; Override the width/height settings shown above and always stretch to fullscreen\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Note: Can be combined with 'windowed=true' to get windowed-fullscreen aka borderless mode\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"fullscreen=false\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"; Run in windowed mode rather than going fullscreen\n"
|
|
|
|
"windowed=false\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"; Maintain aspect ratio\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"maintas=false\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"; Windowboxing / Integer Scaling\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"boxing=false\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-11-20 13:52:19 +01:00
|
|
|
"; Real rendering rate, -1 = screen rate, 0 = unlimited, n = cap\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; Note: Does not have an impact on the game speed, to limit your game speed use 'maxgameticks='\n"
|
2021-02-18 11:14:26 +01:00
|
|
|
"maxfps=-1\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; Vertical synchronization, enable if you get tearing - (Requires 'renderer=auto/opengl/direct3d9')\n"
|
2020-10-06 21:08:29 +02:00
|
|
|
"; Note: vsync=true can fix tearing but it will cause input lag\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"vsync=false\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"; Automatic mouse sensitivity scaling\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Note: Only works if stretching is enabled. Sensitivity will be adjusted according to the size of the window\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; Preliminary libretro shader support - (Requires 'renderer=opengl') https://github.com/libretro/glsl-shaders\n"
|
2020-10-06 21:08:29 +02:00
|
|
|
"; 2x scaling example: https://imgur.com/a/kxsM1oY - 4x scaling example: https://imgur.com/a/wjrhpFV\n"
|
2021-01-17 22:45:44 +01:00
|
|
|
"shader=Shaders\\interpolation\\bilinear.glsl\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"; Window position, -32000 = center to screen\n"
|
|
|
|
"posX=-32000\n"
|
|
|
|
"posY=-32000\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; Renderer, possible values: auto, opengl, gdi, direct3d9 (auto = try direct3d9/opengl, fallback = gdi)\n"
|
|
|
|
"renderer=auto\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
|
|
|
"; Developer mode (don't lock the cursor)\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
"devmode=false\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; Show window borders in windowed mode\n"
|
|
|
|
"border=true\n"
|
|
|
|
"\n"
|
2020-09-30 10:14:30 +02:00
|
|
|
"; Save window position/size/state on game exit and restore it automatically on next game start\n"
|
|
|
|
"; Possible values: 0 = disabled, 1 = save to global 'ddraw' section, 2 = save to game specific section\n"
|
2021-01-17 07:43:25 +01:00
|
|
|
"savesettings=1\n"
|
2020-09-30 10:14:30 +02:00
|
|
|
"\n"
|
2021-06-05 02:51:24 +02:00
|
|
|
"; Should the window be resizable by the user in windowed mode?\n"
|
2021-06-05 02:50:23 +02:00
|
|
|
"resizable=true\n"
|
2020-10-06 20:43:40 +02:00
|
|
|
"\n"
|
2021-08-10 14:12:06 +02:00
|
|
|
"; Enable linear (D3DTEXF_LINEAR) upscaling filter for the direct3d9 renderer\n"
|
2021-01-17 22:49:42 +01:00
|
|
|
"d3d9linear=true\n"
|
|
|
|
"\n"
|
2021-05-15 00:41:50 +02:00
|
|
|
"; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1 and KKND Xtreme)\n"
|
|
|
|
"vhack=false\n"
|
|
|
|
"\n"
|
2021-09-29 13:12:23 +02:00
|
|
|
"; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian, hungarian, french\n"
|
2021-08-04 15:53:58 +02:00
|
|
|
"configlang=auto\n"
|
|
|
|
"\n"
|
2021-12-17 03:16:08 +01:00
|
|
|
"; Where should screenshots be saved\n"
|
|
|
|
"screenshotdir=.\\Screenshots\\\n"
|
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; ### Compatibility settings ###\n"
|
|
|
|
"; Use the following settings in case there are any issues with the game\n"
|
|
|
|
"\n"
|
|
|
|
"\n"
|
2020-10-14 10:58:59 +02:00
|
|
|
"; Hide WM_ACTIVATEAPP and WM_NCACTIVATE messages to prevent problems on alt+tab\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"noactivateapp=false\n"
|
|
|
|
"\n"
|
2021-02-19 03:24:11 +01:00
|
|
|
"; Max game ticks per second, possible values: -1 = disabled, -2 = refresh rate, 0 = emulate 60hz vblank, 1-1000 = custom game speed\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; Note: Can be used to slow down a too fast running game, fix flickering or too fast animations\n"
|
2020-10-06 21:08:29 +02:00
|
|
|
"; Note: Usually one of the following values will work: 60 / 30 / 25 / 20 / 15 (lower value = slower game speed)\n"
|
2018-10-31 11:48:41 +01:00
|
|
|
"maxgameticks=0\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
2020-09-22 07:08:14 +02:00
|
|
|
"; Windows API Hooking, Possible values: 0 = disabled, 1 = IAT Hooking, 2 = Microsoft Detours, 3 = IAT+Detours Hooking (All Modules), 4 = IAT Hooking (All Modules)\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"; Note: Change this value if windowed mode or upscaling isn't working properly\n"
|
2021-05-15 06:33:29 +02:00
|
|
|
"; Note: 'hook=2' will usually work for problematic games, but 'hook=2' should be combined with renderer=gdi\n"
|
2020-09-23 04:47:13 +02:00
|
|
|
"hook=4\n"
|
2019-03-20 05:07:28 +01:00
|
|
|
"\n"
|
2021-05-29 15:29:57 +02:00
|
|
|
"; Force minimum FPS, possible values: 0 = disabled, -1 = use 'maxfps=' value, -2 = same as -1 but force full redraw, 1-1000 = custom FPS\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"; Note: Set this to a low value such as 5 or 10 if some parts of the game are not being displayed (e.g. menus or loading screens)\n"
|
|
|
|
"minfps=0\n"
|
2020-01-23 08:58:22 +01:00
|
|
|
"\n"
|
2020-10-21 16:21:15 +02:00
|
|
|
"; Disable fullscreen-exclusive mode for the direct3d9/opengl renderers\n"
|
2020-10-06 20:43:40 +02:00
|
|
|
"; Note: Can be used in case some GUI elements like buttons/textboxes/videos/etc.. are invisible\n"
|
|
|
|
"nonexclusive=false\n"
|
|
|
|
"\n"
|
2021-05-23 06:16:58 +02:00
|
|
|
"; Fixes issues where the pitch of a surface is not a multiple of 4\n"
|
|
|
|
"; Note: Enable this if some parts of the screen are being displayed diagonally\n"
|
|
|
|
"fixpitch=false\n"
|
|
|
|
"\n"
|
2020-09-27 05:13:15 +02:00
|
|
|
"; Force CPU0 affinity, avoids crashes/freezing, *might* have a performance impact\n"
|
|
|
|
"singlecpu=true\n"
|
|
|
|
"\n"
|
2021-08-04 16:17:28 +02:00
|
|
|
"; Available resolutions, possible values: 0 = Small list, 1 = Very small list, 2 = Full list\n"
|
|
|
|
"; Note: Set this to 2 if your chosen resolution is not working, set to 1 if the game is crashing\n"
|
|
|
|
"resolutions=0\n"
|
|
|
|
"\n"
|
2021-08-10 16:45:40 +02:00
|
|
|
"; Child window handling, possible values: 0 = Disabled, 1 = Display top left, 2 = Display top left + repaint, 3 = Hide\n"
|
2021-08-10 14:12:06 +02:00
|
|
|
"; Note: Disables upscaling if a child window was detected\n"
|
|
|
|
"fixchilds=2\n"
|
|
|
|
"\n"
|
2021-12-18 04:59:25 +01:00
|
|
|
"; Set the precision for Direct3D9 floating-point calculations to the precision used by the calling thread\n"
|
|
|
|
"; Note: Enable this if there are desyncs in online games\n"
|
|
|
|
"fpupreserve=false\n"
|
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"\n"
|
|
|
|
"\n"
|
2021-09-29 12:55:20 +02:00
|
|
|
"; ### Hotkeys ###\n"
|
|
|
|
"; Use the following settings to configure your hotkeys, 0x00 = disabled\n"
|
|
|
|
"; Virtual-Key Codes: https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes\n"
|
|
|
|
"\n"
|
|
|
|
"\n"
|
2021-09-29 13:12:23 +02:00
|
|
|
"; Switch between windowed and fullscreen mode = [Alt] + ???\n"
|
2021-09-29 12:55:20 +02:00
|
|
|
"keytogglefullscreen=0x0D\n"
|
|
|
|
"\n"
|
2021-09-29 13:12:23 +02:00
|
|
|
"; Maximize window without frame = [Alt] + ???\n"
|
2021-09-29 12:55:20 +02:00
|
|
|
"keytogglemaximize=0x22\n"
|
|
|
|
"\n"
|
2021-09-29 13:12:23 +02:00
|
|
|
"; Unlock cursor 1 = [Ctrl] + ???\n"
|
2021-09-29 12:55:20 +02:00
|
|
|
"keyunlockcursor1=0x09\n"
|
|
|
|
"\n"
|
2021-09-29 13:12:23 +02:00
|
|
|
"; Unlock cursor 2 = [Right Alt] + ???\n"
|
2021-09-29 12:55:20 +02:00
|
|
|
"keyunlockcursor2=0xA3\n"
|
|
|
|
"\n"
|
|
|
|
"; Screenshot\n"
|
|
|
|
"keyscreenshot=0x2C\n"
|
|
|
|
"\n"
|
|
|
|
"\n"
|
|
|
|
"\n"
|
2018-12-10 12:07:43 +01:00
|
|
|
"; ### Game specific settings ###\n"
|
|
|
|
"; The following settings override all settings shown above, section name = executable name\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Atomic Bomberman\n"
|
|
|
|
"[BM]\n"
|
|
|
|
"maxgameticks=60\n"
|
2018-11-14 09:12:56 +01:00
|
|
|
"\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Age of Empires\n"
|
2018-10-29 05:47:01 +01:00
|
|
|
"[empires]\n"
|
2021-06-06 03:01:33 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2021-05-29 10:51:05 +02:00
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-10 03:50:07 +02:00
|
|
|
"resolutions=2\n"
|
2018-10-29 05:47:01 +01:00
|
|
|
"\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Age of Empires: The Rise of Rome\n"
|
2018-10-29 05:47:01 +01:00
|
|
|
"[empiresx]\n"
|
2021-06-06 03:01:33 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2021-05-29 10:51:05 +02:00
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-10 03:50:07 +02:00
|
|
|
"resolutions=2\n"
|
2018-10-29 05:47:01 +01:00
|
|
|
"\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Age of Empires II\n"
|
2018-10-26 05:27:10 +02:00
|
|
|
"[EMPIRES2]\n"
|
2021-06-06 03:01:33 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2021-05-29 10:51:05 +02:00
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2018-10-26 05:27:10 +02:00
|
|
|
"\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Age of Empires II: The Conquerors\n"
|
2018-10-26 06:06:09 +02:00
|
|
|
"[age2_x1]\n"
|
2021-06-06 03:01:33 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2021-05-29 10:51:05 +02:00
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2018-10-26 06:06:09 +02:00
|
|
|
"\n"
|
2021-06-04 15:36:50 +02:00
|
|
|
"; American Conquest\n"
|
|
|
|
"[DMCR]\n"
|
|
|
|
"minfps=-2\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Age of Wonders\n"
|
|
|
|
"[AoWSM]\n"
|
|
|
|
"windowed=true\n"
|
|
|
|
"fullscreen=false\n"
|
|
|
|
"renderer=gdi\n"
|
|
|
|
"hook=2\n"
|
|
|
|
"\n"
|
|
|
|
"; Age of Wonders 2\n"
|
|
|
|
"[AoW2]\n"
|
|
|
|
"windowed=true\n"
|
|
|
|
"fullscreen=false\n"
|
|
|
|
"renderer=gdi\n"
|
|
|
|
"hook=2\n"
|
|
|
|
"\n"
|
|
|
|
"; Anstoss 3\n"
|
|
|
|
"[anstoss3]\n"
|
|
|
|
"renderer=gdi\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Anno 1602\n"
|
|
|
|
"[1602]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2018-10-30 19:38:32 +01:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Alien Nations\n"
|
|
|
|
"[AN]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
2021-08-08 22:56:04 +02:00
|
|
|
"; Amerzone\n"
|
|
|
|
"[AMERZONE]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Atlantis\n"
|
|
|
|
"[ATLANTIS]\n"
|
2021-08-08 23:03:35 +02:00
|
|
|
"renderer=opengl\n"
|
2018-10-31 11:48:41 +01:00
|
|
|
"maxgameticks=60\n"
|
2018-10-31 00:33:21 +01:00
|
|
|
"\n"
|
2022-02-04 05:11:15 +01:00
|
|
|
"; Airline Tycoon Deluxe\n"
|
|
|
|
"[AT]\n"
|
|
|
|
"fixchilds=0\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Blade & Sword\n"
|
|
|
|
"[comeon]\n"
|
2021-08-10 16:45:40 +02:00
|
|
|
"fixchilds=3\n"
|
2021-05-29 10:51:05 +02:00
|
|
|
"fixpitch=true\n"
|
2018-11-01 20:09:42 +01:00
|
|
|
"\n"
|
2021-06-06 03:01:33 +02:00
|
|
|
"; Blood II - The Chosen / Shogo - Mobile Armor Division\n"
|
|
|
|
"[Client]\n"
|
|
|
|
"checkfile=.\\SOUND.REZ\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"\n"
|
2021-07-27 17:21:29 +02:00
|
|
|
"; Casino Empire\n"
|
|
|
|
"[CasinoEmpire]\n"
|
2021-07-30 16:11:29 +02:00
|
|
|
"hook=2\n"
|
2021-07-27 17:21:29 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Carmageddon\n"
|
|
|
|
"[CARMA95]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"\n"
|
|
|
|
"; Carmageddon\n"
|
|
|
|
"[CARM95]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"noactivateapp=true\n"
|
2018-11-01 20:09:42 +01:00
|
|
|
"\n"
|
2018-11-12 01:29:51 +01:00
|
|
|
"; Carmageddon 2\n"
|
2018-11-02 02:21:16 +01:00
|
|
|
"[Carma2_SW]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"\n"
|
2021-06-18 03:51:12 +02:00
|
|
|
"; Captain Claw\n"
|
|
|
|
"[claw]\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"\n"
|
2022-02-25 00:18:02 +01:00
|
|
|
"; Command & Conquer: Sole Survivor\n"
|
|
|
|
"[SOLE]\n"
|
|
|
|
"maxgameticks=120\n"
|
|
|
|
"maxfps=60\n"
|
|
|
|
"minfps=-1\n"
|
|
|
|
"\n"
|
|
|
|
"; Command & Conquer: Sole Survivor\n"
|
|
|
|
"[SoleSurvivor]\n"
|
|
|
|
"maxgameticks=120\n"
|
|
|
|
"maxfps=60\n"
|
|
|
|
"minfps=-1\n"
|
|
|
|
"\n"
|
2021-06-04 15:36:50 +02:00
|
|
|
"; Command & Conquer Gold - CnCNet\n"
|
|
|
|
"[cnc95]\n"
|
|
|
|
"maxfps=125\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Command & Conquer Gold\n"
|
|
|
|
"[C&C95]\n"
|
|
|
|
"maxgameticks=120\n"
|
|
|
|
"maxfps=60\n"
|
|
|
|
"minfps=-1\n"
|
2021-06-21 01:45:52 +02:00
|
|
|
"\n"
|
|
|
|
"; Command & Conquer: Red Alert - CnCNet\n"
|
|
|
|
"[ra95-spawn]\n"
|
|
|
|
"maxfps=125\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Command & Conquer: Red Alert\n"
|
|
|
|
"[ra95]\n"
|
|
|
|
"maxgameticks=120\n"
|
|
|
|
"maxfps=60\n"
|
|
|
|
"minfps=-1\n"
|
2021-06-21 01:45:52 +02:00
|
|
|
"\n"
|
|
|
|
"; Command & Conquer: Red Alert\n"
|
|
|
|
"[ra95_Mod-Launcher]\n"
|
|
|
|
"maxgameticks=120\n"
|
|
|
|
"maxfps=60\n"
|
|
|
|
"minfps=-1\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Command & Conquer: Red Alert\n"
|
|
|
|
"[ra95p]\n"
|
|
|
|
"maxfps=60\n"
|
|
|
|
"minfps=-1\n"
|
2018-11-09 20:39:45 +01:00
|
|
|
"\n"
|
2019-04-03 03:13:39 +02:00
|
|
|
"; Command & Conquer: Tiberian Sun / Command & Conquer: Red Alert 2\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"[game]\n"
|
2019-04-03 03:13:39 +02:00
|
|
|
"checkfile=.\\blowfish.dll\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2018-11-16 07:56:32 +01:00
|
|
|
"noactivateapp=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2018-11-30 02:55:51 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"\n"
|
2019-01-28 20:25:45 +01:00
|
|
|
"; Command & Conquer: Tiberian Sun Demo\n"
|
|
|
|
"[SUN]\n"
|
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2019-01-28 20:25:45 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2019-01-28 20:25:45 +01:00
|
|
|
"\n"
|
2019-01-28 20:40:20 +01:00
|
|
|
"; Command & Conquer: Tiberian Sun - CnCNet\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"[ts-spawn]\n"
|
2018-11-16 07:56:32 +01:00
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2018-11-30 02:55:51 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"\n"
|
2019-01-28 20:32:58 +01:00
|
|
|
"; Command & Conquer: Red Alert 2 - XWIS\n"
|
|
|
|
"[ra2]\n"
|
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2019-01-28 20:32:58 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2019-01-28 20:32:58 +01:00
|
|
|
"\n"
|
|
|
|
"; Command & Conquer: Red Alert 2 - XWIS\n"
|
|
|
|
"[Red Alert 2]\n"
|
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2019-01-28 20:32:58 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2019-01-28 20:32:58 +01:00
|
|
|
"\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"; Command & Conquer: Red Alert 2: Yuri's Revenge\n"
|
|
|
|
"[gamemd]\n"
|
2018-11-16 07:56:32 +01:00
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2018-11-30 02:55:51 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"\n"
|
2020-01-22 07:23:27 +01:00
|
|
|
"; Command & Conquer: Red Alert 2: Yuri's Revenge - ?ModExe?\n"
|
|
|
|
"[ra2md]\n"
|
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2020-01-22 07:23:27 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2020-01-22 07:23:27 +01:00
|
|
|
"\n"
|
2019-01-28 20:40:20 +01:00
|
|
|
"; Command & Conquer: Red Alert 2: Yuri's Revenge - CnCNet\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"[gamemd-spawn]\n"
|
2018-11-16 07:56:32 +01:00
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2018-11-30 02:55:51 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2018-11-15 10:47:18 +01:00
|
|
|
"\n"
|
2019-01-28 20:40:20 +01:00
|
|
|
"; Command & Conquer: Red Alert 2: Yuri's Revenge - XWIS\n"
|
|
|
|
"[Yuri's Revenge]\n"
|
|
|
|
"noactivateapp=true\n"
|
2021-06-18 12:18:35 +02:00
|
|
|
"tshack=true\n"
|
2019-01-28 20:40:20 +01:00
|
|
|
"maxfps=60\n"
|
2020-10-18 02:40:45 +02:00
|
|
|
"minfps=-1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2019-01-28 20:40:20 +01:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Caesar III\n"
|
|
|
|
"[c3]\n"
|
2021-06-06 03:01:33 +02:00
|
|
|
"nonexclusive=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Chris Sawyer's Locomotion\n"
|
|
|
|
"[LOCO]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Cultures 2\n"
|
|
|
|
"[Cultures2]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Cultures 2 MP\n"
|
|
|
|
"[Cultures2MP]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Close Combat 2: A Bridge Too Far\n"
|
|
|
|
"[cc2]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"fixpitch=true\n"
|
2020-10-06 20:48:43 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2020-10-02 22:33:07 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Close Combat 3: The Russian Front\n"
|
|
|
|
"[cc3]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"fixpitch=true\n"
|
2020-10-06 20:45:20 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2020-09-23 04:37:28 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Close Combat 4: The Battle of the Bulge\n"
|
|
|
|
"[cc4]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"fixpitch=true\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2020-09-24 10:29:18 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Close Combat 5: Invasion: Normandy\n"
|
|
|
|
"[cc5]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"fixpitch=true\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2020-09-24 10:29:18 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Commandos\n"
|
|
|
|
"[Comandos]\n"
|
|
|
|
"fixpitch=true\n"
|
|
|
|
"\n"
|
|
|
|
"; Call To Power 2\n"
|
|
|
|
"[ctp2]\n"
|
2021-06-18 06:11:13 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Corsairs Gold\n"
|
|
|
|
"[corsairs]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2020-09-24 10:29:18 +02:00
|
|
|
"renderer=gdi\n"
|
|
|
|
"hook=2\n"
|
|
|
|
"\n"
|
2021-12-18 04:59:25 +01:00
|
|
|
"; Dune 2000\n"
|
|
|
|
"[dune2000]\n"
|
2022-02-04 06:05:39 +01:00
|
|
|
"fpupreserve=true\n"
|
2021-12-18 04:59:25 +01:00
|
|
|
"\n"
|
|
|
|
"; Dune 2000 - CnCNet\n"
|
|
|
|
"[dune2000-spawn]\n"
|
2022-02-04 06:05:39 +01:00
|
|
|
"fpupreserve=true\n"
|
2021-12-18 04:59:25 +01:00
|
|
|
"\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"; Dragon Throne: Battle of Red Cliffs\n"
|
|
|
|
"[AdSanguo]\n"
|
|
|
|
"maxgameticks=60\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Dark Reign: The Future of War\n"
|
|
|
|
"[DKReign]\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"renderer=opengl\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"maxgameticks=60\n"
|
|
|
|
"\n"
|
2020-10-15 08:09:13 +02:00
|
|
|
"; Dungeon Keeper 2\n"
|
|
|
|
"[DKII]\n"
|
|
|
|
"maxgameticks=60\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"\n"
|
2021-06-18 06:06:11 +02:00
|
|
|
"; Deadlock 2\n"
|
|
|
|
"[DEADLOCK]\n"
|
2021-08-10 14:12:06 +02:00
|
|
|
"fixchilds=0\n"
|
2021-06-18 06:06:11 +02:00
|
|
|
"adjmouse=false\n"
|
2021-06-18 06:11:13 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2021-06-18 06:06:11 +02:00
|
|
|
"\n"
|
2021-07-02 20:49:23 +02:00
|
|
|
"; Eggsucker\n"
|
|
|
|
"[eggsucker]\n"
|
|
|
|
"fixpitch=true\n"
|
|
|
|
"\n"
|
2021-08-18 16:25:45 +02:00
|
|
|
"; Economic War\n"
|
|
|
|
"[EcoW]\n"
|
|
|
|
"maxgameticks=60\n"
|
|
|
|
"fixnotresponding=true\n"
|
|
|
|
"\n"
|
2021-06-09 01:59:47 +02:00
|
|
|
"; Future Cop - L.A.P.D.\n"
|
|
|
|
"[FCopLAPD]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-08-11 01:36:31 +02:00
|
|
|
"fixchilds=3\n"
|
2021-06-09 01:59:47 +02:00
|
|
|
"\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"; G-Police\n"
|
|
|
|
"[GPOLICE]\n"
|
|
|
|
"maxgameticks=60\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Gangsters: Organized Crime\n"
|
|
|
|
"[gangsters]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2020-10-22 21:40:46 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Grand Theft Auto\n"
|
|
|
|
"[Grand Theft Auto]\n"
|
|
|
|
"fixwndprochook=true\n"
|
|
|
|
"singlecpu=false\n"
|
2020-10-22 22:20:19 +02:00
|
|
|
"\n"
|
2021-06-04 15:36:50 +02:00
|
|
|
"; Grand Theft Auto: London 1969\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"[gta_uk]\n"
|
|
|
|
"fixwndprochook=true\n"
|
|
|
|
"singlecpu=false\n"
|
2020-10-22 22:20:19 +02:00
|
|
|
"\n"
|
2021-06-04 15:36:50 +02:00
|
|
|
"; Grand Theft Auto: London 1961\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"[Gta_61]\n"
|
|
|
|
"fixwndprochook=true\n"
|
|
|
|
"singlecpu=false\n"
|
2020-10-23 18:06:35 +02:00
|
|
|
"\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"; Heroes of Might and Magic II: The Succession Wars\n"
|
|
|
|
"[HEROES2W]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Hard Truck: Road to Victory\n"
|
|
|
|
"[htruck]\n"
|
|
|
|
"maxgameticks=25\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"noactivateapp=true\n"
|
2020-10-23 18:06:35 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Invictus\n"
|
|
|
|
"[Invictus]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 23:20:05 +02:00
|
|
|
"fixwndprochook=true\n"
|
|
|
|
"renderer=opengl\n"
|
2021-04-02 00:24:22 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Interstate 76\n"
|
|
|
|
"[i76]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-05-02 16:21:06 +02:00
|
|
|
"renderer=opengl\n"
|
2021-05-04 22:49:22 +02:00
|
|
|
"\n"
|
2022-02-05 04:03:00 +01:00
|
|
|
"; Infantry Online\n"
|
|
|
|
"[infantry]\n"
|
|
|
|
"devmode=true\n"
|
|
|
|
"resolutions=2\n"
|
|
|
|
"infantryhack=true\n"
|
|
|
|
"\n"
|
2021-06-02 01:52:45 +02:00
|
|
|
"; Jagged Alliance 2\n"
|
2021-05-05 17:47:35 +02:00
|
|
|
"[ja2]\n"
|
2021-09-09 03:49:54 +02:00
|
|
|
"fixmousehook=true\n"
|
2021-09-09 04:04:37 +02:00
|
|
|
"noactivateapp=true\n"
|
2021-09-16 01:57:44 +02:00
|
|
|
"releasealt=true\n"
|
2021-12-17 02:41:02 +01:00
|
|
|
"novidmem=true\n"
|
2021-09-09 03:49:54 +02:00
|
|
|
"\n"
|
|
|
|
"; Jagged Alliance 2: Wildfire\n"
|
|
|
|
"[WF6]\n"
|
|
|
|
"fixmousehook=true\n"
|
2021-09-09 04:04:37 +02:00
|
|
|
"noactivateapp=true\n"
|
2021-09-16 01:57:44 +02:00
|
|
|
"releasealt=true\n"
|
2021-12-17 02:41:02 +01:00
|
|
|
"novidmem=true\n"
|
2021-09-09 03:49:54 +02:00
|
|
|
"\n"
|
|
|
|
"; Jagged Alliance 2 - UC mod\n"
|
|
|
|
"[JA2_UC]\n"
|
|
|
|
"fixmousehook=true\n"
|
2021-09-09 04:04:37 +02:00
|
|
|
"noactivateapp=true\n"
|
2022-01-30 13:08:33 +01:00
|
|
|
"releasealt=true\n"
|
|
|
|
"novidmem=true\n"
|
|
|
|
"\n"
|
|
|
|
"; Jagged Alliance 2 - Vengeance Reloaded mod\n"
|
|
|
|
"[JA2_Vengeance]\n"
|
|
|
|
"fixmousehook=true\n"
|
|
|
|
"noactivateapp=true\n"
|
2021-09-16 01:57:44 +02:00
|
|
|
"releasealt=true\n"
|
2021-12-17 02:41:02 +01:00
|
|
|
"novidmem=true\n"
|
2021-05-05 17:47:35 +02:00
|
|
|
"\n"
|
2021-06-06 19:02:51 +02:00
|
|
|
"; Kings Quest 8\n"
|
|
|
|
"[Mask]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"\n"
|
2021-06-04 04:42:28 +02:00
|
|
|
"; Konung\n"
|
|
|
|
"[konung]\n"
|
2021-08-10 18:03:58 +02:00
|
|
|
"fixchilds=0\n"
|
2021-06-04 04:42:28 +02:00
|
|
|
"\n"
|
|
|
|
"; Konung 2\n"
|
|
|
|
"[Konung2]\n"
|
2021-08-10 18:03:58 +02:00
|
|
|
"fixchilds=0\n"
|
2021-06-04 04:42:28 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; KKND Xtreme (With high resolution patch)\n"
|
|
|
|
"[KKNDgame]\n"
|
|
|
|
"vhack=true\n"
|
|
|
|
"\n"
|
|
|
|
"; KKND2: Krossfire\n"
|
|
|
|
"[KKND2]\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"renderer=gdi\n"
|
|
|
|
"hook=2\n"
|
|
|
|
"\n"
|
2021-09-19 04:28:45 +02:00
|
|
|
"; Lionheart\n"
|
|
|
|
"[Lionheart]\n"
|
|
|
|
"locktopleft=true\n"
|
|
|
|
"\n"
|
2021-06-08 05:47:30 +02:00
|
|
|
"; Majesty Gold\n"
|
|
|
|
"[Majesty]\n"
|
|
|
|
"minfps=-2\n"
|
|
|
|
"\n"
|
|
|
|
"; Majesty Gold HD\n"
|
|
|
|
"[MajestyHD]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-08 05:47:30 +02:00
|
|
|
"\n"
|
|
|
|
"; Majesty Gold HD\n"
|
|
|
|
"[MajestyHD - Old]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-08 05:47:30 +02:00
|
|
|
"\n"
|
2021-08-08 21:16:26 +02:00
|
|
|
"; Mech Warrior 3\n"
|
|
|
|
"[Mech3]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
|
|
|
"\n"
|
2021-05-11 22:14:34 +02:00
|
|
|
"; Moorhuhn\n"
|
|
|
|
"[Moorhuhn]\n"
|
2021-05-15 07:17:35 +02:00
|
|
|
"renderer=opengl\n"
|
2021-08-11 14:07:47 +02:00
|
|
|
"dinputhook=true\n"
|
2021-05-11 22:14:34 +02:00
|
|
|
"\n"
|
2021-05-11 21:53:12 +02:00
|
|
|
"; Moorhuhn 2\n"
|
|
|
|
"[Moorhuhn2]\n"
|
2021-08-11 14:07:47 +02:00
|
|
|
"dinputhook=true\n"
|
2021-05-11 21:53:12 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Outlaws\n"
|
|
|
|
"[olwin]\n"
|
2021-05-15 06:33:29 +02:00
|
|
|
"noactivateapp=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"maxgameticks=60\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-05-15 06:33:29 +02:00
|
|
|
"renderer=gdi\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Pharaoh\n"
|
|
|
|
"[Pharaoh]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-05-23 15:49:03 +02:00
|
|
|
"\n"
|
2021-06-06 19:02:51 +02:00
|
|
|
"; Pacific General\n"
|
|
|
|
"[PACGEN]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Pax Imperia\n"
|
|
|
|
"[Pax Imperia]\n"
|
2021-05-24 09:48:11 +02:00
|
|
|
"renderer=opengl\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"nonexclusive=true\n"
|
2021-05-24 09:48:11 +02:00
|
|
|
"\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"; Railroad Tycoon II\n"
|
|
|
|
"[RT2]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"\n"
|
|
|
|
"; ROAD RASH\n"
|
|
|
|
"[RoadRash]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"\n"
|
2021-08-08 22:39:32 +02:00
|
|
|
"; Septerra Core\n"
|
|
|
|
"[septerra]\n"
|
|
|
|
"hook=2\n"
|
|
|
|
"\n"
|
2021-08-03 14:12:39 +02:00
|
|
|
"; Settlers 3\n"
|
|
|
|
"[s3]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
|
|
|
"\n"
|
2021-06-09 06:03:06 +02:00
|
|
|
"; Star Trek - Armada\n"
|
|
|
|
"[Armada]\n"
|
2021-06-09 07:24:17 +02:00
|
|
|
"armadahack=true\n"
|
2021-06-09 06:03:06 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2021-06-09 06:03:06 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Star Wars: Galactic Battlegrounds\n"
|
|
|
|
"[battlegrounds]\n"
|
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-05-24 10:20:12 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Star Wars: Galactic Battlegrounds: Clone Campaigns\n"
|
|
|
|
"[battlegrounds_x1]\n"
|
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-05-28 20:48:52 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Stronghold Crusader HD\n"
|
|
|
|
"[Stronghold Crusader]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
2021-09-19 04:24:22 +02:00
|
|
|
"; Space Rangers\n"
|
|
|
|
"[Rangers]\n"
|
|
|
|
"locktopleft=true\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Stronghold Crusader Extreme HD\n"
|
|
|
|
"[Stronghold_Crusader_Extreme]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Stronghold HD\n"
|
|
|
|
"[Stronghold]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Steel Panthers: World At War\n"
|
|
|
|
"[MECH]\n"
|
2021-05-29 09:59:02 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"\n"
|
2021-08-04 17:17:22 +02:00
|
|
|
"; Sim City 3000\n"
|
|
|
|
"[SC3]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"minfps=-2\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Shadow Watch\n"
|
|
|
|
"[sw]\n"
|
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"; Shadow Flare\n"
|
|
|
|
"[ShadowFlare]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"nonexclusive=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2021-06-15 09:40:55 +02:00
|
|
|
"\n"
|
|
|
|
"; Three Kingdoms: Fate of the Dragon\n"
|
|
|
|
"[sanguo]\n"
|
|
|
|
"maxgameticks=60\n"
|
|
|
|
"noactivateapp=true\n"
|
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Twisted Metal\n"
|
|
|
|
"[TWISTED]\n"
|
2021-06-02 14:29:44 +02:00
|
|
|
"renderer=opengl\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"nonexclusive=true\n"
|
|
|
|
"maxgameticks=25\n"
|
|
|
|
"minfps=5\n"
|
2021-06-02 14:29:44 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Twisted Metal 2\n"
|
|
|
|
"[Tm2]\n"
|
2021-06-03 20:39:29 +02:00
|
|
|
"renderer=opengl\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"nonexclusive=true\n"
|
|
|
|
"maxgameticks=60\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-08-10 14:12:06 +02:00
|
|
|
"fixchilds=1\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"maintas=false\n"
|
|
|
|
"boxing=false\n"
|
2021-06-03 20:39:29 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Tzar: The Burden of the Crown\n"
|
|
|
|
"; Note: Must set 'DIRECTXDEVICE=0' in 'Tzar.ini'\n"
|
|
|
|
"[Tzar]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Uprising\n"
|
|
|
|
"[uprising]\n"
|
|
|
|
"renderer=opengl\n"
|
|
|
|
"fixpitch=true\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Uprising 2\n"
|
|
|
|
"[Uprising 2]\n"
|
2021-06-06 19:11:18 +02:00
|
|
|
"renderer=opengl\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
2021-06-06 19:02:51 +02:00
|
|
|
"; Warlords 3\n"
|
|
|
|
"[Darklord]\n"
|
|
|
|
"renderer=gdi\n"
|
|
|
|
"\n"
|
2021-09-09 03:55:10 +02:00
|
|
|
"; Wizardry 8\n"
|
|
|
|
"[Wiz8]\n"
|
|
|
|
"fixmousehook=true\n"
|
2021-09-09 04:04:37 +02:00
|
|
|
"noactivateapp=true\n"
|
2021-09-16 01:57:44 +02:00
|
|
|
"releasealt=true\n"
|
2021-12-17 02:41:02 +01:00
|
|
|
"novidmem=true\n"
|
2021-09-16 01:57:44 +02:00
|
|
|
"\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"; Worms Armageddon\n"
|
|
|
|
"[WA]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-05 02:50:39 +02:00
|
|
|
"width=0\n"
|
|
|
|
"height=0\n"
|
|
|
|
"resizable=false\n"
|
2021-06-04 02:01:47 +02:00
|
|
|
"\n"
|
|
|
|
"; Wizards and Warriors\n"
|
|
|
|
"[deep6]\n"
|
|
|
|
"renderer=gdi\n"
|
|
|
|
"hook=2\n"
|
|
|
|
"\n"
|
|
|
|
"; War Wind\n"
|
|
|
|
"[WW]\n"
|
2021-06-03 20:39:29 +02:00
|
|
|
"renderer=opengl\n"
|
|
|
|
"\n"
|
2021-06-06 05:32:04 +02:00
|
|
|
"; Zeus and Poseidon\n"
|
|
|
|
"[Zeus]\n"
|
2021-06-16 05:57:19 +02:00
|
|
|
"adjmouse=true\n"
|
2021-06-06 05:32:04 +02:00
|
|
|
"\n"
|
2018-10-25 07:03:01 +02:00
|
|
|
|
|
|
|
, fh);
|
|
|
|
fclose(fh);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-09-16 03:11:47 +02:00
|
|
|
static void cfg_init()
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2021-09-16 02:25:22 +02:00
|
|
|
/* get process filename and directory */
|
|
|
|
if (GetModuleFileNameA(NULL, g_config.game_path, sizeof(g_config.game_path) - 1) > 0)
|
|
|
|
{
|
|
|
|
_splitpath(g_config.game_path, NULL, NULL, g_config.process_file_name, NULL);
|
|
|
|
|
|
|
|
char* end = strstr(g_config.game_path, g_config.process_file_name);
|
|
|
|
|
|
|
|
if (end)
|
|
|
|
{
|
|
|
|
*end = 0;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
g_config.game_path[0] = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* set up settings ini */
|
|
|
|
strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1);
|
2021-09-16 03:11:47 +02:00
|
|
|
|
|
|
|
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
|
|
|
|
cfg_create_ini();
|
2021-09-16 02:25:22 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
DWORD cfg_get_string(LPCSTR key, LPCSTR default_value, LPSTR out_string, DWORD out_size)
|
|
|
|
{
|
|
|
|
if (!g_config.ini_path[0])
|
2021-09-16 03:11:47 +02:00
|
|
|
cfg_init();
|
2021-09-16 02:25:22 +02:00
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
DWORD s = GetPrivateProfileStringA(
|
2020-10-13 11:29:52 +02:00
|
|
|
g_config.process_file_name, key, "", out_string, out_size, g_config.ini_path);
|
2020-10-13 09:20:52 +02:00
|
|
|
|
2018-10-25 07:03:01 +02:00
|
|
|
if (s > 0)
|
2019-04-03 03:13:39 +02:00
|
|
|
{
|
|
|
|
char buf[MAX_PATH] = { 0 };
|
|
|
|
|
2020-10-13 09:20:52 +02:00
|
|
|
if (GetPrivateProfileStringA(
|
|
|
|
g_config.process_file_name, "checkfile", "", buf, sizeof(buf), g_config.ini_path) > 0)
|
2019-04-03 03:13:39 +02:00
|
|
|
{
|
|
|
|
if (GetFileAttributes(buf) != INVALID_FILE_ATTRIBUTES)
|
|
|
|
return s;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return s;
|
|
|
|
}
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2020-10-13 11:29:52 +02:00
|
|
|
return GetPrivateProfileStringA("ddraw", key, default_value, out_string, out_size, g_config.ini_path);
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
|
|
|
|
2021-09-16 02:25:22 +02:00
|
|
|
BOOL cfg_get_bool(LPCSTR key, BOOL default_value)
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2019-01-28 21:11:34 +01:00
|
|
|
char value[8];
|
2020-10-13 11:29:52 +02:00
|
|
|
cfg_get_string(key, default_value ? "Yes" : "No", value, sizeof(value));
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2019-01-28 21:11:34 +01:00
|
|
|
return (_stricmp(value, "yes") == 0 || _stricmp(value, "true") == 0 || _stricmp(value, "1") == 0);
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|
|
|
|
|
2021-09-16 02:25:22 +02:00
|
|
|
int cfg_get_int(LPCSTR key, int default_value)
|
2018-10-25 07:03:01 +02:00
|
|
|
{
|
2021-09-29 12:55:20 +02:00
|
|
|
char def_value[20];
|
2020-10-13 11:29:52 +02:00
|
|
|
_snprintf(def_value, sizeof(def_value), "%d", default_value);
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2021-09-29 12:55:20 +02:00
|
|
|
char value[20];
|
2020-10-13 09:20:52 +02:00
|
|
|
cfg_get_string(key, def_value, value, sizeof(value));
|
2018-10-25 07:03:01 +02:00
|
|
|
|
2021-09-29 12:55:20 +02:00
|
|
|
if (strstr(value, "0x"))
|
|
|
|
{
|
|
|
|
return (int)strtol(value, NULL, 0);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return atoi(value);
|
|
|
|
}
|
2018-10-25 07:03:01 +02:00
|
|
|
}
|