1
0
mirror of https://github.com/FunkyFr3sh/cnc-ddraw.git synced 2025-03-26 10:29:23 +01:00
cnc-ddraw/src/config.c

2056 lines
67 KiB
C
Raw Normal View History

#include <windows.h>
#include <stdio.h>
#include <d3d9.h>
#include "fps_limiter.h"
2020-10-13 09:20:52 +02:00
#include "config.h"
#include "dd.h"
#include "render_d3d9.h"
2020-10-13 09:20:52 +02:00
#include "render_gdi.h"
#include "render_ogl.h"
#include "hook.h"
2020-10-13 09:20:52 +02:00
#include "debug.h"
#include "dllmain.h"
2023-10-14 12:41:52 +02:00
#include "ini.h"
2024-05-06 01:23:59 +02:00
#include "versionhelpers.h"
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();
2023-09-22 00:38:42 +02:00
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);
static DWORD cfg_get_game_section(LPSTR buf, DWORD size);
2023-09-22 01:47:00 +02:00
#define GET_INT(a,b,c) a = cfg_get_int(b, c); TRACE("%s=%d\n", b, a)
#define GET_BOOL(a,b,c) a = cfg_get_bool(b, c); TRACE("%s=%s\n", b, a ? "true" : "false")
#define GET_STRING(a,b,c,d) cfg_get_string(a, b, c, d); TRACE("%s=%s\n", a, c)
2021-06-11 20:30:43 +02:00
CNCDDRAWCONFIG g_config =
{ .window_rect = {.left = -32000, .top = -32000, .right = 0, .bottom = 0 }, .window_state = -1, .upscaled_state = -1 };
2020-10-13 09:20:52 +02:00
void cfg_load()
{
2021-09-16 03:11:47 +02:00
cfg_init();
2024-02-03 21:44:15 +01:00
/* Optional settings */
2021-09-29 12:55:20 +02:00
2023-09-22 01:47:00 +02:00
GET_INT(g_config.window_rect.right, "width", 0);
GET_INT(g_config.window_rect.bottom, "height", 0);
GET_BOOL(g_config.fullscreen, "fullscreen", FALSE);
GET_BOOL(g_config.windowed, "windowed", FALSE);
GET_BOOL(g_config.maintas, "maintas", FALSE);
GET_STRING("aspect_ratio", "", g_config.aspect_ratio, sizeof(g_config.aspect_ratio));
2024-08-16 07:51:05 +02:00
GET_BOOL(g_config.boxing, "boxing", FALSE);
2023-09-22 01:47:00 +02:00
GET_INT(g_config.maxfps, "maxfps", -1);
GET_BOOL(g_config.vsync, "vsync", FALSE);
GET_BOOL(g_config.adjmouse, "adjmouse", TRUE);
2024-02-08 22:54:16 +01:00
GET_STRING("shader", "Shaders\\interpolation\\catmull-rom-bilinear.glsl", g_config.shader, sizeof(g_config.shader));
2023-09-22 01:47:00 +02:00
GET_INT(g_config.window_rect.left, "posX", -32000);
GET_INT(g_config.window_rect.top, "posY", -32000);
GET_STRING("renderer", "auto", g_config.renderer, sizeof(g_config.renderer));
GET_BOOL(g_config.devmode, "devmode", FALSE);
GET_BOOL(g_config.border, "border", TRUE);
2023-09-22 02:08:26 +02:00
GET_INT(g_config.save_settings, "savesettings", 1);
2023-09-22 01:47:00 +02:00
GET_BOOL(g_config.resizable, "resizable", TRUE);
GET_INT(g_config.d3d9_filter, "d3d9_filter", FILTER_CUBIC);
2024-09-12 17:02:11 +02:00
GET_INT(g_config.anti_aliased_fonts_min_size, "anti_aliased_fonts_min_size", 13);
GET_INT(g_config.min_font_size, "min_font_size", 0);
2024-09-26 19:55:06 +02:00
GET_INT(g_config.center_window, "center_window", CENTER_WINDOW_AUTO);
GET_STRING("inject_resolution", "", g_config.inject_resolution, sizeof(g_config.inject_resolution));
2023-09-22 01:47:00 +02:00
GET_BOOL(g_config.vhack, "vhack", FALSE);
GET_STRING("screenshotdir", ".\\Screenshots\\", g_config.screenshot_dir, sizeof(g_config.screenshot_dir));
GET_BOOL(g_config.toggle_borderless, "toggle_borderless", FALSE);
GET_BOOL(g_config.toggle_upscaled, "toggle_upscaled", FALSE);
2020-09-30 10:14:30 +02:00
2023-09-22 00:38:42 +02:00
/* Compatibility settings */
2018-12-10 04:24:30 +01:00
2023-09-22 01:47:00 +02:00
GET_BOOL(g_config.noactivateapp, "noactivateapp", FALSE);
GET_INT(g_config.maxgameticks, "maxgameticks", 0);
GET_INT(g_config.limiter_type, "limiter_type", LIMIT_AUTO);
2023-09-23 17:48:06 +02:00
GET_INT(g_config.minfps, "minfps", 0);
2024-07-28 23:17:16 +02:00
GET_BOOL(g_config.nonexclusive, "nonexclusive", TRUE);
2023-09-22 01:47:00 +02:00
GET_BOOL(g_config.singlecpu, "singlecpu", TRUE);
GET_INT(g_config.resolutions, "resolutions", RESLIST_NORMAL);
GET_INT(g_config.fixchilds, "fixchilds", FIX_CHILDS_DETECT_PAINT);
GET_BOOL(g_config.hook_peekmessage, "hook_peekmessage", FALSE);
2020-10-18 02:40:45 +02:00
2023-09-22 00:38:42 +02:00
/* Undocumented settings */
2023-08-19 23:14:34 +02:00
2024-09-12 18:11:08 +02:00
GET_BOOL(g_config.fix_alt_key_stuck, "fix_alt_key_stuck", FALSE);
2023-09-22 01:47:00 +02:00
GET_BOOL(GameHandlesClose, "game_handles_close", FALSE);
2024-09-12 18:11:08 +02:00
GET_BOOL(g_config.fix_not_responding, "fix_not_responding", FALSE);
GET_BOOL(g_config.no_compat_warning, "no_compat_warning", FALSE);
2023-09-22 01:47:00 +02:00
GET_INT(g_config.guard_lines, "guard_lines", 200);
GET_INT(g_config.max_resolutions, "max_resolutions", 0);
GET_BOOL(g_config.lock_surfaces, "lock_surfaces", FALSE);
GET_BOOL(g_config.flipclear, "flipclear", FALSE);
GET_BOOL(g_config.rgb555, "rgb555", FALSE);
GET_BOOL(g_config.no_dinput_hook, "no_dinput_hook", FALSE);
GET_BOOL(g_config.center_cursor_fix, "center_cursor_fix", FALSE);
GET_STRING("fake_mode", "", g_config.fake_mode, sizeof(g_config.fake_mode));
2024-05-29 06:16:57 +02:00
GET_BOOL(g_config.lock_mouse_top_left, "lock_mouse_top_left", FALSE);
2024-09-12 18:11:08 +02:00
GET_STRING("win_version", "", g_config.win_version, sizeof(g_config.win_version));
GET_INT(g_config.hook, "hook", 4);
GET_BOOL(g_config.limit_gdi_handles, "limit_gdi_handles", FALSE);
2024-08-20 09:55:27 +02:00
GET_BOOL(g_config.remove_menu, "remove_menu", FALSE);
2024-09-12 18:11:08 +02:00
GET_INT(g_config.refresh_rate, "refresh_rate", 0);
2023-09-22 00:38:42 +02:00
/* Hotkeys */
2023-09-22 01:47:00 +02:00
GET_INT(g_config.hotkeys.toggle_fullscreen, "keytogglefullscreen", VK_RETURN);
GET_INT(g_config.hotkeys.toggle_fullscreen2, "keytogglefullscreen2", 0);
2023-09-22 01:47:00 +02:00
GET_INT(g_config.hotkeys.toggle_maximize, "keytogglemaximize", VK_NEXT);
GET_INT(g_config.hotkeys.toggle_maximize2, "keytogglemaximize2", 0);
2023-09-22 01:47:00 +02:00
GET_INT(g_config.hotkeys.unlock_cursor1, "keyunlockcursor1", VK_TAB);
GET_INT(g_config.hotkeys.unlock_cursor2, "keyunlockcursor2", VK_RCONTROL);
GET_INT(g_config.hotkeys.screenshot, "keyscreenshot", VK_SNAPSHOT);
2023-09-22 00:38:42 +02:00
/* Game specific settings */
2023-09-22 01:47:00 +02:00
GET_BOOL(g_config.armadahack, "armadahack", FALSE);
GET_BOOL(g_config.tshack, "tshack", FALSE);
GET_BOOL(g_config.infantryhack, "infantryhack", FALSE);
GET_BOOL(g_config.stronghold_hack, "stronghold_hack", FALSE);
GET_BOOL(g_config.mgs_hack, "mgs_hack", FALSE);
2024-05-31 04:55:55 +02:00
GET_BOOL(g_config.tlc_hack, "tlc_hack", FALSE);
2024-07-03 04:25:23 +02:00
GET_BOOL(g_config.carma95_hack, "carma95_hack", FALSE);
2024-09-12 18:11:08 +02:00
GET_BOOL(g_config.sirtech_hack, "sirtech_hack", FALSE);
2024-09-19 17:58:35 +02:00
GET_BOOL(g_config.flightsim98_hack, "flightsim98_hack", FALSE);
2023-09-23 17:48:06 +02:00
GameHandlesClose = GameHandlesClose || g_config.infantryhack;
2023-10-17 18:13:35 +02:00
2024-05-29 06:16:57 +02:00
if (g_config.lock_mouse_top_left)
g_config.adjmouse = FALSE;
if (g_config.aspect_ratio[0])
g_config.maintas = TRUE;
2023-10-17 18:13:35 +02:00
ini_free(&g_config.ini);
}
2020-10-13 09:20:52 +02:00
void cfg_save()
{
2020-10-13 09:20:52 +02:00
if (!g_config.save_settings)
2020-09-30 10:14:30 +02:00
return;
2024-10-03 04:52:23 +02:00
/* Do not save settings while macOS maximize is active */
if (IsMacOS() && !g_config.window_rect.left && !g_config.window_rect.top)
return;
char buf[16];
2021-06-11 20:30:43 +02:00
char* section = g_config.save_settings == 1 ? "ddraw" : g_config.process_file_name;
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
}
2023-07-03 05:13:47 +02:00
if (g_config.upscaled_state != -1)
2023-07-03 05:13:47 +02:00
{
WritePrivateProfileString(section, "fullscreen", g_config.upscaled_state ? "true" : "false", g_config.ini_path);
2023-07-03 05:13:47 +02:00
}
}
2020-10-13 09:20:52 +02:00
static void cfg_create_ini()
{
2021-06-11 20:30:43 +02:00
FILE* fh = fopen(g_config.ini_path, "w");
if (fh)
{
fputs(
2022-10-05 15:59:43 +02:00
"; cnc-ddraw - https://github.com/FunkyFr3sh/cnc-ddraw\n"
"\n"
"[ddraw]\n"
"; ### Optional settings ###\n"
"; Use the following settings to adjust the look and feel to your liking\n"
"\n"
"\n"
"; Stretch to custom resolution, 0 = defaults to the size game requests\n"
"width=0\n"
"height=0\n"
"\n"
"; Override the width/height settings shown above and always stretch to fullscreen\n"
"; Note: Can be combined with 'windowed=true' to get windowed-fullscreen aka borderless mode\n"
"fullscreen=false\n"
"\n"
"; Run in windowed mode rather than going fullscreen\n"
"windowed=false\n"
"\n"
2021-06-16 05:57:19 +02:00
"; Maintain aspect ratio\n"
"maintas=false\n"
"\n"
2024-08-16 07:51:05 +02:00
"; Use custom aspect ratio - Example values: 4:3, 16:10, 16:9, 21:9\n"
"aspect_ratio=\n"
"\n"
2021-06-16 05:57:19 +02:00
"; Windowboxing / Integer Scaling\n"
"boxing=false\n"
"\n"
"; Real rendering rate, -1 = screen rate, 0 = unlimited, n = cap\n"
"; 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"
"\n"
"; 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"
"vsync=false\n"
"\n"
2021-06-16 05:57:19 +02:00
"; Automatic mouse sensitivity scaling\n"
"; 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"
"\n"
"; 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"
"; You can specify a full path to a .glsl shader file here or use one of the values listed below\n"
2023-08-29 18:24:32 +02:00
"; Possible values: Nearest neighbor, Bilinear, Bicubic, Lanczos, xBR-lv2\n"
2024-02-08 22:54:16 +01:00
"shader=Shaders\\interpolation\\catmull-rom-bilinear.glsl\n"
"\n"
"; Window position, -32000 = center to screen\n"
"posX=-32000\n"
"posY=-32000\n"
"\n"
"; Renderer, possible values: auto, opengl, openglcore, gdi, direct3d9, direct3d9on12 (auto = try direct3d9/opengl, fallback = gdi)\n"
"renderer=auto\n"
"\n"
"; Developer mode (don't lock the cursor)\n"
"devmode=false\n"
"\n"
"; 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"
"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"
"\n"
"; Upscaling filter for the direct3d9* renderers\n"
2023-08-23 16:44:14 +02:00
"; Possible values: 0 = nearest-neighbor, 1 = bilinear, 2 = bicubic, 3 = lanczos (bicubic/lanczos only support 16/32bit color depth games)\n"
2023-07-04 20:13:49 +02:00
"d3d9_filter=2\n"
"\n"
2024-09-09 19:09:40 +02:00
"; Disable font smoothing for fonts that are smaller than size X\n"
"anti_aliased_fonts_min_size=13\n"
"\n"
"; Raise the size of small fonts to X\n"
"min_font_size=0\n"
"\n"
2024-09-26 19:55:06 +02:00
"; Center window to screen when game changes the display resolution\n"
"; Possible values: 0 = never center, 1 = automatic, 2 = always center\n"
"center_window=1\n"
"\n"
"; Inject a custom display resolution into the in-game resolution list - Example values: 960x540, 3840x2160\n"
"; Note: This setting can used for downscaling as well, you can insert resolutions higher than your monitor supports\n"
"inject_resolution=\n"
"\n"
"; Enable upscale hack for high resolution patches (Supports C&C1, Red Alert 1, Worms 2 and KKND Xtreme)\n"
"vhack=false\n"
"\n"
"; Where should screenshots be saved\n"
"screenshotdir=.\\Screenshots\\\n"
"\n"
2023-07-03 05:13:47 +02:00
"; Switch between windowed/borderless modes with alt+enter rather than windowed/fullscreen modes\n"
"toggle_borderless=false\n"
"\n"
"; Switch between windowed/fullscreen upscaled modes with alt+enter rather than windowed/fullscreen modes\n"
"toggle_upscaled=false\n"
"\n"
"\n"
"\n"
"; ### Compatibility settings ###\n"
"; Use the following settings in case there are any issues with the game\n"
"\n"
"\n"
"; Hide WM_ACTIVATEAPP and WM_NCACTIVATE messages to prevent problems on alt+tab\n"
"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"
"; 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"
"maxgameticks=0\n"
"\n"
"; Method that should be used to limit game ticks (maxgameticks=): 0 = Automatic, 1 = TestCooperativeLevel, 2 = BltFast, 3 = Unlock, 4 = PeekMessage\n"
"limiter_type=0\n"
"\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"
"; Disable fullscreen-exclusive mode for the direct3d9*/opengl* renderers\n"
"; Note: Can be used in case some GUI elements like buttons/textboxes/videos/etc.. are invisible\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=true\n"
"\n"
2020-09-27 05:13:15 +02:00
"; Force CPU0 affinity, avoids crashes/freezing, *might* have a performance impact\n"
2023-08-13 20:35:36 +02:00
"; Note: Disable this if the game is not running smooth or there are sound issues\n"
2020-09-27 05:13:15 +02:00
"singlecpu=true\n"
"\n"
"; Available display resolutions, possible values: 0 = Small list, 1 = Very small list, 2 = Full list\n"
2023-08-11 19:05:11 +02:00
"; Note: Set this to 2 if your chosen resolution is not working or does not show up in the list\n"
2023-08-13 20:35:36 +02:00
"; Note: Set this to 1 if the game is crashing on startup\n"
2021-08-04 16:17:28 +02:00
"resolutions=0\n"
"\n"
"; Child window handling, possible values: 0 = Disabled, 1 = Display top left, 2 = Display top left + repaint, 3 = Hide, 4 = Display top left + hide\n"
2023-08-11 18:00:35 +02:00
"; Note: Disables upscaling if a child window was detected (to ensure the game is fully playable, may look weird though)\n"
2021-08-10 14:12:06 +02:00
"fixchilds=2\n"
"\n"
2024-09-12 17:48:51 +02:00
"; Enable the following setting if your cursor doesn't lock to the window or it doesn't work properly when upscaling is enabled\n"
"hook_peekmessage=false\n"
"\n"
2023-08-11 18:00:35 +02:00
"\n"
2024-09-12 18:11:08 +02:00
"; Undocumented compatibility settings - These will probably not solve your problem, you should rather focus on the settings above\n"
"fix_alt_key_stuck=false\n"
2023-08-11 18:00:35 +02:00
"game_handles_close=false\n"
2024-09-12 18:11:08 +02:00
"fix_not_responding=false\n"
"no_compat_warning=false\n"
"guard_lines=200\n"
"max_resolutions=0\n"
2022-09-17 13:46:45 +02:00
"lock_surfaces=false\n"
2022-09-13 07:41:01 +02:00
"flipclear=false\n"
2023-02-16 16:24:43 -08:00
"rgb555=false\n"
2023-07-28 13:53:57 +02:00
"no_dinput_hook=false\n"
"center_cursor_fix=false\n"
";fake_mode=640x480x32\n"
2024-05-29 06:16:57 +02:00
"lock_mouse_top_left=false\n"
";win_version=95\n"
2024-09-12 18:11:08 +02:00
"hook=4\n"
"limit_gdi_handles=false\n"
2024-09-12 18:11:08 +02:00
"remove_menu=false\n"
"refresh_rate=0\n"
"\n"
"\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"
"; Switch between windowed and fullscreen mode (single key) = ???\n"
"keytogglefullscreen2=0x00\n"
"\n"
2023-07-31 12:12:33 +02:00
"; Maximize window = [Alt] + ???\n"
2021-09-29 12:55:20 +02:00
"keytogglemaximize=0x22\n"
"\n"
"; Maximize window (single key) = ???\n"
"keytogglemaximize2=0x00\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"
"; ### Config program settings ###\n"
"; The following settings are for cnc-ddraw config.exe\n"
2023-08-21 12:34:45 +02:00
"\n"
"\n"
"; cnc-ddraw config program language, possible values: auto, english, chinese, german, spanish, russian, hungarian, french, italian, vietnamese\n"
"configlang=auto\n"
"\n"
"; cnc-ddraw config program theme, possible values: Windows10, Cobalt XEMedia\n"
"configtheme=Windows10\n"
"\n"
2023-08-21 12:34:45 +02:00
"; Hide the 'Compatibility Settings' tab in cnc-ddraw config\n"
"hide_compat_tab=false\n"
"\n"
"; Allow the users to 'Restore default settings' via cnc-ddraw config\n"
"allow_reset=true\n"
"\n"
"\n"
"\n"
"; ### Game specific settings ###\n"
"; The following settings override all settings shown above, section name = executable name\n"
"\n"
"\n"
2024-12-14 02:01:38 +01:00
"; 7th Legion\n"
"[legion]\n"
"maxgameticks=25\n"
"\n"
2022-09-05 09:08:59 +02:00
"; Atrox\n"
"[Atrox]\n"
2024-06-02 08:19:12 +02:00
"nonexclusive=true\n"
2022-09-05 09:08:59 +02:00
"\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"
"; Age of Empires\n"
"[empires]\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-10 03:50:07 +02:00
"resolutions=2\n"
"\n"
"; Age of Empires: The Rise of Rome\n"
"[empiresx]\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-10 03:50:07 +02:00
"resolutions=2\n"
"\n"
"; Age of Empires: The Rise of Rome (RockNRor patch)\n"
"[EmpiresX_RockNRor]\n"
"nonexclusive=true\n"
"adjmouse=true\n"
"resolutions=2\n"
"\n"
"; Age of Empires II\n"
"[EMPIRES2]\n"
2021-06-06 03:01:33 +02:00
"nonexclusive=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
"\n"
"; Age of Empires II: The Conquerors\n"
"[age2_x1]\n"
2021-06-06 03:01:33 +02:00
"nonexclusive=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
"\n"
2022-09-22 10:43:08 +02:00
"; American Conquest / Cossacks\n"
2021-06-04 15:36:50 +02:00
"[DMCR]\n"
2022-09-22 09:56:28 +02:00
"resolutions=2\n"
"guard_lines=300\n"
2021-06-04 15:36:50 +02:00
"minfps=-2\n"
"\n"
"; American Girls Dress Designer\n"
"[Dress Designer]\n"
"fake_mode=640x480x32\n"
"nonexclusive=true\n"
"\n"
2024-10-16 16:48:19 +02:00
"; Age of Wonders\n"
"[AoW]\n"
"resolutions=2\n"
"nonexclusive=false\n"
"singlecpu=false\n"
"\n"
"; Age of Wonders\n"
"[AoWCompat]\n"
"resolutions=2\n"
"nonexclusive=false\n"
"singlecpu=false\n"
"\n"
"; Age of Wonders Config Tool\n"
"[AoWSetup]\n"
"resolutions=2\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Age of Wonders 2\n"
"[AoW2]\n"
2023-08-11 13:13:10 +02:00
"resolutions=2\n"
2024-08-20 11:01:48 +02:00
"nonexclusive=false\n"
2023-07-29 09:19:48 +02:00
"singlecpu=false\n"
"\n"
"; Age of Wonders 2\n"
"[AoW2Compat]\n"
2023-08-11 13:13:10 +02:00
"resolutions=2\n"
2024-08-20 11:01:48 +02:00
"nonexclusive=false\n"
2023-07-29 09:19:48 +02:00
"singlecpu=false\n"
"\n"
2023-08-11 13:13:10 +02:00
"; Age of Wonders 2 Config Tool\n"
"[aow2Setup]\n"
"resolutions=2\n"
"\n"
2023-07-29 09:19:48 +02:00
"; Age of Wonders: Shadow Magic\n"
"[AoWSM]\n"
2023-08-11 13:13:10 +02:00
"resolutions=2\n"
2024-08-20 11:01:48 +02:00
"nonexclusive=false\n"
2023-07-29 09:19:48 +02:00
"singlecpu=false\n"
"\n"
"; Age of Wonders: Shadow Magic\n"
"[AoWSMCompat]\n"
2023-08-11 13:13:10 +02:00
"resolutions=2\n"
2024-08-20 11:01:48 +02:00
"nonexclusive=false\n"
2023-07-29 09:19:48 +02:00
"singlecpu=false\n"
2021-06-04 02:01:47 +02:00
"\n"
2023-08-11 13:13:10 +02:00
"; Age of Wonders: Shadow Magic Config Tool\n"
"[AoWSMSetup]\n"
"resolutions=2\n"
"\n"
2021-06-04 02:01:47 +02:00
"; 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"
2024-12-18 08:46:27 +01:00
"; Army Men: World War / Army Men: Operation Meltdown\n"
"[amww]\n"
"maxfps=60\n"
"maxgameticks=120\n"
"minfps=-1\n"
"\n"
2024-12-18 08:53:08 +01:00
"; Army Men: Air Tactics\n"
"[Amat]\n"
"maxfps=60\n"
"maxgameticks=120\n"
"minfps=-1\n"
"\n"
"; Army Men: Toys in Space\n"
"[ARMYMENTIS]\n"
"maxfps=60\n"
"maxgameticks=120\n"
"minfps=-1\n"
"\n"
2024-12-18 08:46:27 +01:00
"; Army Men 2\n"
"[ArmyMen2]\n"
"maxfps=60\n"
"maxgameticks=120\n"
"minfps=-1\n"
"\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"
"; Atlantis\n"
"[ATLANTIS]\n"
2021-08-08 23:03:35 +02:00
"renderer=opengl\n"
"maxgameticks=60\n"
"center_cursor_fix=true\n"
2018-10-31 00:33:21 +01:00
"\n"
"; Airline Tycoon Deluxe\n"
"[AT]\n"
2024-06-25 23:14:11 +02:00
"lock_mouse_top_left=true\n"
2024-06-25 02:30:32 +02:00
"fixchilds=3\n"
"\n"
"; Arthur's Wilderness Rescue\n"
2024-05-30 03:00:57 +02:00
"[Arthur]\n"
"renderer=gdi\n"
"\n"
2024-08-30 12:06:21 +02:00
"; Axis & Allies\n"
"[AxisAllies]\n"
"hook_peekmessage=true\n"
2024-08-30 12:06:21 +02:00
"maxgameticks=60\n"
"\n"
"; A Bug's Life Action Game\n"
"[bugs]\n"
"fix_not_responding=true\n"
"\n"
"; Barney - Secret of the Rainbow\n"
"[Barney]\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2022-10-15 20:05:44 +02:00
"; Baldur's Gate II\n"
2022-10-15 20:11:43 +02:00
"; Note: 'Use 3D Acceleration' must be disabled and 'Full Screen' must be enabled in BGConfig.exe\n"
2022-10-15 20:05:44 +02:00
"[BGMain]\n"
"resolutions=2\n"
"\n"
2024-09-25 16:55:34 +02:00
"; Balls of Steel v1.2\n"
"[bos]\n"
2024-12-19 20:41:01 +01:00
"checkfile=.\\barbarin.ddp\n"
2024-09-25 16:55:34 +02:00
"win_version=95\n"
"\n"
2023-07-18 19:21:18 +02:00
"; BALDR FORCE EXE\n"
"[BaldrForce]\n"
"noactivateapp=true\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Blade & Sword\n"
"[comeon]\n"
2023-08-01 13:54:22 +02:00
"maxgameticks=60\n"
"fixchilds=3\n"
"\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"
2024-06-03 08:55:58 +02:00
"; Blue's 123 Time Activities\n"
"[Blues123Time]\n"
"renderer=gdi\n"
"hook=3\n"
"\n"
"; Blue's Treasure Hunt\n"
"[Blue'sTreasureHunt-Disc1]\n"
"renderer=gdi\n"
"\n"
"; Blue's Treasure Hunt\n"
"[Blue'sTreasureHunt-Disc2]\n"
"renderer=gdi\n"
"\n"
2024-06-03 20:09:37 +02:00
"; Blue's Reading Time Activities\n"
"[Blue's Reading Time]\n"
"renderer=gdi\n"
"\n"
"; Blue's ArtTime Activities\n"
"[ArtTime]\n"
"renderer=gdi\n"
"\n"
2024-08-17 07:37:43 +02:00
"; Callus 95 - CPS-1 (Capcom Play System 1) emulator\n"
"[CALLUS95]\n"
2024-08-21 08:53:08 +02:00
"game_handles_close=true\n"
2024-08-21 04:54:06 +02:00
"windowed=true\n"
2024-08-21 04:56:49 +02:00
"toggle_borderless=true\n"
2024-08-17 07:37:43 +02:00
"devmode=true\n"
"\n"
"; Callus 95 - CPS-1 (Capcom Play System 1) emulator\n"
"[CALLUS95p]\n"
2024-08-21 08:53:08 +02:00
"game_handles_close=true\n"
2024-08-21 04:54:06 +02:00
"windowed=true\n"
2024-08-21 04:56:49 +02:00
"toggle_borderless=true\n"
2024-08-17 07:37:43 +02:00
"devmode=true\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Carmageddon\n"
"[CARMA95]\n"
2022-09-13 07:41:01 +02:00
"flipclear=true\n"
2024-07-03 04:24:27 +02:00
"carma95_hack=true\n"
2021-06-04 02:01:47 +02:00
"\n"
"; Carmageddon\n"
"[CARM95]\n"
2022-09-13 07:41:58 +02:00
"flipclear=true\n"
2024-07-03 04:24:27 +02:00
"carma95_hack=true\n"
"\n"
2024-05-28 20:53:50 +02:00
"; Carmen Sandiego's Great Chase - NOT WORKING YET\n"
"[TIME32]\n"
"renderer=gdi\n"
2024-05-29 06:18:00 +02:00
"adjmouse=false\n"
2024-05-28 20:53:50 +02:00
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2021-06-18 03:51:12 +02:00
"; Captain Claw\n"
"[claw]\n"
"adjmouse=true\n"
2021-06-18 03:51:12 +02:00
"noactivateapp=true\n"
2023-07-02 17:16:47 +02:00
"nonexclusive=true\n"
2021-06-18 03:51:12 +02:00
"\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"
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"
"\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"
"\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"
"\n"
"; Command & Conquer: Tiberian Sun / Command & Conquer: Red Alert 2\n"
2018-11-15 10:47:18 +01:00
"[game]\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
"checkfile=.\\blowfish.dll\n"
2021-06-18 12:18:35 +02:00
"tshack=true\n"
"noactivateapp=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
"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"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
2019-01-28 20:25:45 +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"
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"
"; Command & Conquer: Tiberian Sun - CnCNet\n"
2018-11-15 10:47:18 +01:00
"[ts-spawn]\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\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"
"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"
"; Command & Conquer: Red Alert 2 - XWIS\n"
"[ra2]\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
"noactivateapp=true\n"
2021-06-18 12:18:35 +02:00
"tshack=true\n"
"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"
"\n"
"; Command & Conquer: Red Alert 2 - XWIS\n"
"[Red Alert 2]\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
"noactivateapp=true\n"
2021-06-18 12:18:35 +02:00
"tshack=true\n"
"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"
"\n"
2018-11-15 10:47:18 +01:00
"; Command & Conquer: Red Alert 2: Yuri's Revenge\n"
"[gamemd]\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
"noactivateapp=true\n"
2021-06-18 12:18:35 +02:00
"tshack=true\n"
"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"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
2020-01-22 07:23:27 +01:00
"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"
"; Command & Conquer: Red Alert 2: Yuri's Revenge - CnCNet\n"
2018-11-15 10:47:18 +01:00
"[gamemd-spawn]\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
"noactivateapp=true\n"
2021-06-18 12:18:35 +02:00
"tshack=true\n"
"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"
"; Command & Conquer: Red Alert 2: Yuri's Revenge - XWIS\n"
"[Yuri's Revenge]\n"
2024-07-28 23:17:16 +02:00
"nonexclusive=false\n"
"noactivateapp=true\n"
2021-06-18 12:18:35 +02:00
"tshack=true\n"
"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"
"\n"
2023-09-09 16:21:37 +02:00
"; Commandos\n"
"[comandos]\n"
"maxgameticks=-1\n"
"\n"
"; Commandos\n"
"[comandos_w10]\n"
"maxgameticks=-1\n"
"\n"
2024-08-25 09:07:50 +02:00
"; Constructor\n"
"[Game_W95]\n"
"noactivateapp=true\n"
"\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"
"; Cloud Kingdom 3 (only with /ddraw command line parameter)\n"
"[Clouds Kingdom 3]\n"
"fake_mode=320x240x32\n"
"\n"
"; Commando 2004 (only with /ddraw command line parameter)\n"
"[commando]\n"
"fake_mode=320x240x32\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Chris Sawyer's Locomotion\n"
2024-09-01 13:32:03 +02:00
"[LOCO/2]\n"
"checkfile=.\\LOCO.EXE\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"
2020-10-06 20:48:43 +02:00
"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"
"nonexclusive=true\n"
"\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
"nonexclusive=true\n"
"\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
"nonexclusive=true\n"
"\n"
"; ClueFinders Math Adventures 1.0\n"
"[TCFM32]\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
"; ClueFinders Math Adventures 1.0\n"
"[cfmath32]\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2021-06-04 02:01:47 +02:00
"; 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"
"\n"
2022-09-05 03:53:59 +02:00
"; Divine Divinity\n"
"[div]\n"
"resolutions=2\n"
"singlecpu=false\n"
"\n"
2024-12-18 07:34:36 +01:00
"; Die by the Sword\n"
"[windie]\n"
"maxgameticks=30\n"
"\n"
2021-06-15 09:40:55 +02:00
"; Dragon Throne: Battle of Red Cliffs\n"
"[AdSanguo]\n"
"maxgameticks=60\n"
"noactivateapp=true\n"
"limiter_type=2\n"
2021-06-15 09:40:55 +02:00
"\n"
2021-06-04 02:01:47 +02:00
"; Dark Reign: The Future of War\n"
"[DKReign]\n"
"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"
2024-12-14 04:37:57 +01:00
"; Dreams to Realty\n"
"[windream]\n"
"maxgameticks=60\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"
"; Diablo\n"
"[Diablo]\n"
"devmode=true\n"
"\n"
"; Diablo: Hellfire\n"
"[hellfire]\n"
"devmode=true\n"
"\n"
2024-09-02 17:30:24 +02:00
"; Disney Trivia Challenge\n"
"[DisneyTr]\n"
2024-09-02 18:01:25 +02:00
"fixchilds=3\n"
"lock_mouse_top_left=true\n"
"renderer=gdi\n"
2024-09-02 17:30:24 +02:00
"\n"
2024-11-23 04:13:50 +01:00
"; Discoworld Noir\n"
"[dn]\n"
"fake_mode=640x480x16\n"
"\n"
"; Dominion - Storm Over Gift 3\n"
"[dominion]\n"
"flipclear=true\n"
"\n"
2023-02-27 20:45:08 +13:00
"; Escape Velocity Nova\n"
"[EV Nova]\n"
"nonexclusive=true\n"
"hook_peekmessage=true\n"
2023-02-27 20:45:08 +13:00
"rgb555=true\n"
"keytogglefullscreen=0x46\n"
"adjmouse=true\n"
2023-02-27 20:45:08 +13:00
"\n"
2021-08-18 16:25:45 +02:00
"; Economic War\n"
"[EcoW]\n"
"maxgameticks=60\n"
2024-09-12 18:11:08 +02:00
"fix_not_responding=true\n"
2021-08-18 16:25:45 +02:00
"\n"
"; Emperor: Rise of the Middle Kingdom\n"
"[Emperor]\n"
"nonexclusive=true\n"
2024-07-28 04:39:22 +02:00
"adjmouse=true\n"
"\n"
"; Enemy Infestation\n"
"[EI]\n"
2024-09-11 16:16:59 +02:00
"hook_peekmessage=true\n"
"\n"
2024-12-14 02:32:55 +01:00
"; F-16 Agressor\n"
"[f-16]\n"
"resolutions=1\n"
"\n"
2024-12-19 20:33:55 +01:00
"; Fallout Tactics: Brotherhood of Steel\n"
2024-12-19 20:41:01 +01:00
"[BOS/2]\n"
"checkfile=.\\binkw32.dll\n"
"hook_peekmessage=true\n"
"\n"
"; Fallout Tactics: Brotherhood of Steel\n"
"[BOS_HR]\n"
2024-12-19 20:33:55 +01:00
"hook_peekmessage=true\n"
"\n"
2024-12-19 21:00:46 +01:00
"; Fallout Tactics: Brotherhood of Steel\n"
"[FT Tools]\n"
"hook_peekmessage=true\n"
"\n"
2024-09-19 17:58:35 +02:00
"; Flight Simulator 98\n"
"[FLTSIM95]\n"
"flightsim98_hack=true\n"
"\n"
"; Flight Simulator 98\n"
"[FLTSIM98]\n"
"flightsim98_hack=true\n"
"\n"
"; Fairy Tale About Father Frost, Ivan and Nastya\n"
"[mrazik]\n"
"guard_lines=0\n"
"\n"
2025-01-01 03:41:45 +01:00
"; Fable\n"
"[Fable]\n"
"maxgameticks=59\n"
"limiter_type=4\n"
"\n"
"; Final Liberation: Warhammer Epic 40000\n"
"[Epic40k]\n"
"hook_peekmessage=true\n"
"maxgameticks=125\n"
"\n"
2021-06-09 01:59:47 +02:00
"; Future Cop - L.A.P.D.\n"
"[FCopLAPD]\n"
2022-10-07 01:05:35 +02:00
"nonexclusive=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
2021-06-09 01:59:47 +02:00
"\n"
2024-06-03 20:09:37 +02:00
"; Freddi 1\n"
"[Freddi1]\n"
"renderer=gdi\n"
"\n"
2024-06-04 09:17:48 +02:00
"; Freddi Fish : The Case of the Hogfish Rustlers of Briny Gulch\n"
"[Freddihrbg]\n"
"renderer=gdi\n"
"\n"
2024-06-03 22:26:16 +02:00
"; Freddi Water Worries\n"
"[Water]\n"
"renderer=gdi\n"
"\n"
2024-06-03 03:04:28 +02:00
"; Freddi Fish\n"
"[FreddiSCS]\n"
"renderer=gdi\n"
"\n"
"; Freddi Fish\n"
"[FREDDI4]\n"
"renderer=gdi\n"
"hook=3\n"
"\n"
"; Freddi Fish's One-Stop Fun Shop\n"
"[FreddisFunShop]\n"
"renderer=gdi\n"
"\n"
"; Freddi Fish: The Case of the Creature of Coral Cove\n"
"[freddicove]\n"
"renderer=gdi\n"
"\n"
"; Freddi Fish: The Case of the Haunted Schoolhouse\n"
"[FreddiCHSH]\n"
"renderer=gdi\n"
"\n"
"; Freddi Fish: Maze Madness\n"
"[Maze]\n"
"renderer=gdi\n"
"\n"
2024-09-02 12:03:39 +02:00
"; Glover\n"
"[glover]\n"
2024-09-12 18:11:08 +02:00
"fix_not_responding=true\n"
2024-09-02 12:03:39 +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
"nonexclusive=true\n"
2024-12-23 07:25:12 +01:00
"fixchilds=0\n"
"fake_mode=640x480x8\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"
"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"
"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"
"singlecpu=false\n"
2020-10-23 18:06:35 +02:00
"\n"
2023-11-04 02:56:15 +01:00
"; Gruntz\n"
"[GRUNTZ]\n"
"adjmouse=true\n"
"noactivateapp=true\n"
"nonexclusive=true\n"
"\n"
2024-08-30 12:44:55 +02:00
"; Girl Talk\n"
"[GirlTalk]\n"
"resolutions=2\n"
2024-09-19 20:11:22 +02:00
"game_handles_close=true\n"
2024-08-30 12:44:55 +02:00
"\n"
2024-05-23 08:20:14 +02:00
"; Jazz Jackrabbit 2 plus\n"
"[Jazz2]\n"
"inject_resolution=800x450\n"
2024-05-23 08:20:14 +02:00
"\n"
2024-05-23 08:41:33 +02:00
"; Jazz Jackrabbit 2\n"
2024-05-23 08:39:27 +02:00
"[Jazz2_NonPlus]\n"
"inject_resolution=800x450\n"
2024-05-23 08:39:27 +02:00
"\n"
2024-09-02 12:25:46 +02:00
"; Jungle Storm\n"
"[Jstorm]\n"
"no_compat_warning=true\n"
2024-09-12 20:08:53 +02:00
"win_version=98\n"
2024-09-02 12:25:46 +02:00
"\n"
2024-08-29 17:24:21 +02:00
"; Hades Challenge\n"
"[HADESCH]\n"
"no_compat_warning=true\n"
"\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"
2023-08-13 21:55:47 +02:00
"; Heroes of Might and Magic III\n"
"[Heroes3]\n"
2024-06-03 00:07:29 +02:00
"renderer=opengl\n"
2023-08-13 21:55:47 +02:00
"game_handles_close=true\n"
"keytogglefullscreen2=0x73\n"
2023-08-13 21:55:47 +02:00
"\n"
"; Heroes of Might and Magic III HD Mod\n"
"[Heroes3 HD]\n"
2024-06-03 00:07:29 +02:00
"renderer=opengl\n"
2023-08-13 21:55:47 +02:00
"game_handles_close=true\n"
"keytogglefullscreen2=0x73\n"
"\n"
2024-06-12 02:50:41 +02:00
"; Heroes of Might and Magic III - Master of Puppets mod\n"
"[MoP]\n"
"game_handles_close=true\n"
"keytogglefullscreen2=0x73\n"
2024-06-12 02:50:41 +02:00
"\n"
"; Heroes of Might and Magic IV\n"
"[heroes4]\n"
2024-08-20 09:55:27 +02:00
"remove_menu=true\n"
"keytogglefullscreen2=0x73\n"
2023-08-13 21:55:47 +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"
"; Hooligans: Storm over Europe\n"
"[hooligans]\n"
"limit_gdi_handles=true\n"
"\n"
2024-12-16 00:50:50 +01:00
"; Imperialism 2: The Age of Exploration\n"
"[Imperialism II]\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2023-08-19 18:03:00 +02:00
"; Icewind Dale 2\n"
"; Note: 'Full Screen' must be enabled in Config.exe\n"
2023-08-19 19:11:20 +02:00
"; Note: 1070x602 is the lowest possible 16:9 resolution for the Widescreen patch (600/601 height will crash)\n"
2023-08-19 18:03:00 +02:00
"[iwd2]\n"
"resolutions=2\n"
"inject_resolution=1070x602\n"
2023-08-19 18:03:00 +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
"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-04 22:49:22 +02:00
"\n"
2024-05-13 03:05:31 +02:00
"; Infantry\n"
2022-02-05 04:03:00 +01:00
"[infantry]\n"
"resolutions=2\n"
"infantryhack=true\n"
"max_resolutions=90\n"
2022-02-05 04:03:00 +01:00
"\n"
2024-05-13 03:05:31 +02:00
"; Infantry Steam\n"
"[FreeInfantry]\n"
"resolutions=2\n"
"infantryhack=true\n"
"max_resolutions=90\n"
"\n"
2021-06-02 01:52:45 +02:00
"; Jagged Alliance 2\n"
2021-05-05 17:47:35 +02:00
"[ja2]\n"
2022-09-05 05:51:15 +02:00
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"sirtech_hack=true\n"
"fix_alt_key_stuck=true\n"
"\n"
"; Jagged Alliance 2: Unfinished Business\n"
"[JA2UB]\n"
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"sirtech_hack=true\n"
"fix_alt_key_stuck=true\n"
"\n"
"; Jagged Alliance 2: Wildfire\n"
"[WF6]\n"
2022-09-05 05:51:15 +02:00
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"sirtech_hack=true\n"
"fix_alt_key_stuck=true\n"
"\n"
"; Jagged Alliance 2 - UC mod\n"
"[JA2_UC]\n"
2022-09-05 05:51:15 +02:00
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"sirtech_hack=true\n"
"fix_alt_key_stuck=true\n"
"\n"
"; Jagged Alliance 2 - Vengeance Reloaded mod\n"
"[JA2_Vengeance]\n"
2022-09-05 05:51:15 +02:00
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"sirtech_hack=true\n"
"fix_alt_key_stuck=true\n"
2021-05-05 17:47:35 +02:00
"\n"
2024-08-28 15:27:42 +02:00
"; Jeopardy! - NOT WORKING YET\n"
"[jeoppc]\n"
"singlecpu=false\n"
"\n"
2024-12-22 08:05:54 +01:00
"; Karma Immortal Wrath\n"
"[karma]\n"
2024-12-28 07:47:18 +01:00
"fix_not_responding=true\n"
2024-12-22 08:05:54 +01:00
"maxgameticks=60\n"
"limiter_type=4\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"
"\n"
"; Knights and Merchants The Shattered Kingdom\n"
"[KaM_800]\n"
"limiter_type=2\n"
"maxgameticks=60\n"
"\n"
"; Knights and Merchants The Shattered Kingdom\n"
"[KaM_1024]\n"
"limiter_type=2\n"
"maxgameticks=60\n"
"\n"
2024-12-24 06:30:15 +01:00
"; Lode Runner 2\n"
"[LR2]\n"
"no_dinput_hook=true\n"
"fake_mode=640x480x16\n"
"\n"
2024-12-22 21:20:58 +01:00
"; Last Bronx\n"
"[LB]\n"
"maxgameticks=30\n"
"\n"
2024-08-15 12:10:34 +02:00
"; Lapis (lapis.mgame.com)\n"
"[Lapis]\n"
2024-08-15 12:30:52 +02:00
"fixchilds=3\n"
"lock_mouse_top_left=true\n"
2024-08-15 12:10:34 +02:00
"\n"
2024-09-01 13:32:03 +02:00
"; LEGO LOCO - NOT WORKING YET\n"
"[LOCO]\n"
"checkfile=.\\LEGO.INI\n"
"fake_mode=1024x768x16\n"
"posX=0\n"
"posY=0\n"
"border=false\n"
"fullscreen=false\n"
"\n"
2024-05-30 04:32:14 +02:00
"; Little Bear Kindergarten/Preschool Thinking Adventures: Parent's Progress Report\n"
2024-05-29 21:50:38 +02:00
"[LBPR]\n"
2024-05-29 22:27:03 +02:00
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2024-05-30 04:32:14 +02:00
"; Little Bear Kindergarten/Preschool Thinking Adventures\n"
"[LBSTART]\n"
2024-05-29 22:27:03 +02:00
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2024-05-30 04:32:14 +02:00
"; Little Bear Toddler Discovery Adventures\n"
"[LBT]\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
"; Lionheart\n"
"[Lionheart]\n"
"hook_peekmessage=true\n"
"\n"
2024-11-23 03:36:38 +01:00
"; Lost Vikings 2\n"
"[LOSTV95]\n"
"fake_mode=320x240x16\n"
"\n"
"; Nightmare Creatures\n"
"[NC]\n"
"maxgameticks=30\n"
"\n"
"; Moto Racer (software mode)\n"
"[moto]\n"
"maxgameticks=59\n"
"\n"
"; Madeline 1st Grade Math\n"
"[madmath1]\n"
"nonexclusive=true\n"
"no_compat_warning=true\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
2024-09-11 14:38:56 +02:00
"renderer=gdi\n"
"hook=2\n"
"win_version=nt4\n"
"\n"
"; Madeline 1st Grade Math: Progress Report\n"
"[madpr]\n"
"nonexclusive=true\n"
"no_compat_warning=true\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
2024-09-11 14:38:56 +02:00
"renderer=gdi\n"
"hook=2\n"
"win_version=nt4\n"
"\n"
"; Madeline 2nd Grade Math\n"
"[madmath2]\n"
"nonexclusive=true\n"
"no_compat_warning=true\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
2024-09-11 14:38:56 +02:00
"renderer=gdi\n"
"hook=2\n"
"win_version=nt4\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"
"nonexclusive=true\n"
"\n"
2021-05-11 21:53:12 +02:00
"; Moorhuhn 2\n"
"[Moorhuhn2]\n"
2024-09-12 18:11:08 +02:00
"fix_alt_key_stuck=true\n"
2021-05-11 21:53:12 +02:00
"\n"
2024-12-26 02:00:51 +01:00
"; Metal Knight\n"
"[mk]\n"
"maxgameticks=60\n"
"limiter_type=4\n"
"\n"
2023-03-06 01:46:52 +01:00
"; New Robinson\n"
"[ROBY]\n"
"adjmouse=true\n"
"hook_peekmessage=true\n"
2023-03-06 01:46:52 +01:00
"\n"
2024-12-23 19:06:39 +01:00
"; Neo Sonic Universe\n"
"[nsu]\n"
2024-12-23 19:15:06 +01:00
"fake_mode=320x240x32\n"
2024-12-23 19:06:39 +01:00
"\n"
"; Neo Sonic Universe - battle mode\n"
"[nsu_battle]\n"
2024-12-23 19:15:06 +01:00
"fake_mode=320x240x32\n"
"\n"
2024-05-31 23:35:13 +02:00
"; Nancy Drew (All games)\n"
"[Game/3]\n"
2024-05-31 23:35:13 +02:00
"checkfile=.\\Nancy.cid\n"
"limiter_type=1\n"
"maxgameticks=120\n"
"\n"
2024-12-21 08:01:29 +01:00
"; NBA Full Court Press\n"
"[NBA_FCP]\n"
"fake_mode=640x480x8\n"
"\n"
2023-09-01 23:24:51 +02:00
"; Nox\n"
"[NOX]\n"
"checkfile=.\\NOX.ICD\n"
"renderer=direct3d9\n"
"nonexclusive=false\n"
"windowed=false\n"
2023-10-15 04:22:29 +02:00
"maxgameticks=125\n"
2023-10-14 05:00:27 +02:00
"\n"
"; Nox Reloaded\n"
"[NoxReloaded]\n"
2023-10-15 04:22:29 +02:00
"maxgameticks=125\n"
2023-10-14 05:00:27 +02:00
"\n"
"; Nox GOG\n"
"[Game/2]\n"
"checkfile=.\\nox.cfg\n"
2023-10-15 04:22:29 +02:00
"maxgameticks=125\n"
2023-09-01 23:24:51 +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"
"; Pandora's Box Puzzle Game\n"
2024-11-26 00:36:30 +01:00
"[Pandora]\n"
"fixchilds=0\n"
"\n"
2024-08-29 17:24:21 +02:00
"; Paddle Bash Hotshot\n"
"[SPAGHSPaddle]\n"
"no_compat_warning=true\n"
"\n"
2024-06-03 03:04:28 +02:00
"; Pajama Sam's Games to Play on Any Day\n"
"[PJGAMES]\n"
"renderer=gdi\n"
"\n"
"; Pajama Sam\n"
"[PajamaTAL]\n"
"renderer=gdi\n"
"\n"
"; Pajama Sam: No Need to Hide When It's Dark Outside\n"
"[PajamaNHD]\n"
"renderer=gdi\n"
"\n"
"; Pajama Sam 3\n"
"[Pajama3]\n"
"renderer=gdi\n"
"\n"
"; Pajama Sam's One-Stop Fun Shop\n"
"[SamsFunShop]\n"
"renderer=gdi\n"
"\n"
2024-06-04 09:17:48 +02:00
"; Pajama Sam DON'T FEAR THE DARK\n"
"[pjSam]\n"
"renderer=gdi\n"
"\n"
2024-06-04 19:43:31 +02:00
"; Pajama Sam 3: You Are What You Eat From Your Head To Your Feet\n"
"[UKpajamaEAT]\n"
"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"
2024-06-02 09:44:34 +02:00
"; Putt-Putt Saves The Zoo\n"
"[PUTTZOO]\n"
"renderer=gdi\n"
"hook=3\n"
"\n"
2024-06-03 03:04:28 +02:00
"; Putt-Putt's One-Stop Fun Shop\n"
"[PuttsFunShop]\n"
"renderer=gdi\n"
"\n"
"; Putt-Putt and Pep's Dog On A Stick\n"
"[DOG]\n"
"renderer=gdi\n"
"\n"
"; Putt-Putt Joins the Circus\n"
"[puttcircus]\n"
"renderer=gdi\n"
"\n"
"; Putt-Putt Enters The Race\n"
"[UKPuttRace]\n"
"renderer=gdi\n"
"\n"
"; Putt-Putt: Travels Through Time\n"
"[PuttTTT]\n"
"renderer=gdi\n"
"\n"
"; Putt-Putt and Pep's Balloon-o-Rama\n"
"[Balloon]\n"
"renderer=gdi\n"
"\n"
2024-06-04 09:17:48 +02:00
"; Putt-Putt Travels Through Time\n"
"[PUTTPUTTTTT]\n"
"renderer=gdi\n"
"\n"
"; Putt-Putt Joins the Circus\n"
"[puttputtjtc]\n"
"renderer=gdi\n"
"\n"
2024-06-03 01:16:41 +02:00
"; Pizza Syndicate\n"
"[Pizza2]\n"
"renderer=opengl\n"
"\n"
"; Pizza Syndicate - Mehr Biss (Mission CD)\n"
"[Pizza_Mission]\n"
"renderer=opengl\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Pax Imperia\n"
"[Pax Imperia]\n"
"nonexclusive=true\n"
2021-05-24 09:48:11 +02:00
"\n"
"; Play with the Teletubbies\n"
"[PlayWTT]\n"
"hook=3\n"
"\n"
"; Populous - The Beginning\n"
"[popTB]\n"
"singlecpu=false\n"
"\n"
2024-12-22 02:22:47 +01:00
"; Rage of Mages\n"
"[rom]\n"
"maxgameticks=60\n"
"limiter_type=4\n"
"singlecpu=true\n"
"\n"
2021-06-15 09:40:55 +02:00
"; Railroad Tycoon II\n"
"[RT2]\n"
2024-12-28 07:47:18 +01:00
"maxgameticks=60"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
2021-06-15 09:40:55 +02:00
"\n"
2024-05-31 04:13:31 +02:00
"; Reader Rabbit Thinking Ages 4-6 (US)\n"
"[rrta32]\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2024-05-27 01:52:44 +02:00
"; Reader Rabbit Reading Ages 4-6\n"
"[rrirjw32]\n"
"renderer=gdi\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
2024-05-27 05:40:31 +02:00
"maintas=false\n"
"boxing=false\n"
2024-05-27 01:52:44 +02:00
"\n"
"; Reader Rabbit Reading Ages 6-9\n"
"[irj2w32]\n"
"renderer=gdi\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
2024-05-27 05:40:31 +02:00
"maintas=false\n"
"boxing=false\n"
2024-05-27 01:52:44 +02:00
"\n"
2024-07-28 10:39:39 +02:00
"; Real War\n"
"[RealWar]\n"
2024-07-28 10:49:52 +02:00
"maxgameticks=60\n"
2024-07-28 10:39:39 +02:00
"limiter_type=3\n"
"\n"
2024-12-14 05:17:17 +01:00
"; Return to Krondor\n"
"[RtK]\n"
"fixchilds=3\n"
"lock_mouse_top_left=true\n"
2024-12-14 19:11:31 +01:00
"limiter_type=2\n"
2024-12-18 04:20:58 +01:00
"game_handles_close=true\n"
2024-12-25 19:45:35 +01:00
"maxgameticks=59\n"
"anti_aliased_fonts_min_size=99\n"
2024-12-14 05:17:17 +01:00
"\n"
2021-06-15 09:40:55 +02:00
"; ROAD RASH\n"
"[RoadRash]\n"
"adjmouse=true\n"
2024-04-26 01:23:28 +02:00
"nonexclusive=true\n"
2021-06-15 09:40:55 +02:00
"\n"
"; Robin Hood - The Legend of Sherwood (GOG)\n"
"[Game/4]\n"
"checkfile=.\\Robin Hood.exe\n"
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"fix_not_responding=true\n"
"\n"
2024-07-11 01:50:13 +02:00
"; Robin Hood - The Legend of Sherwood (Steam)\n"
"[_rh]\n"
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"fix_not_responding=true\n"
2024-07-11 01:50:13 +02:00
"\n"
"; Robin Hood - The Legend of Sherwood\n"
"[Robin Hood]\n"
"singlecpu=false\n"
2024-09-12 18:11:08 +02:00
"fix_not_responding=true\n"
"\n"
2025-01-01 03:41:45 +01:00
"; Rising Lands\n"
"[Rising]\n"
"maxgameticks=30\n"
"limiter_type=4\n"
"\n"
2024-06-02 08:53:07 +02:00
"; Scooby-Doo(TM), Case File #1 The Glowing Bug Man - NOT WORKING YET\n"
"[Case File #1]\n"
"windowed=true\n"
"nonexclusive=true\n"
"fake_mode=640x480x32\n"
"\n"
2024-12-19 06:58:42 +01:00
"; Seven Kingdoms II\n"
"[7k2]\n"
"fake_mode=352x240x32\n"
2024-12-19 07:14:37 +01:00
"fix_not_responding=true\n"
2024-12-19 06:58:42 +01:00
"\n"
2024-12-20 05:44:20 +01:00
"; Swarog\n"
"[Swarog]\n"
2024-12-20 10:17:59 +01:00
"maxfps=60\n"
"maxgameticks=60\n"
"minfps=-1\n"
2024-12-20 05:44:20 +01:00
"\n"
2022-10-05 22:36:59 +02:00
"; Sim Copter\n"
"[SimCopter]\n"
"nonexclusive=true\n"
"\n"
2021-08-03 14:12:39 +02:00
"; Settlers 3\n"
"[s3]\n"
"nonexclusive=true\n"
"\n"
"; Star Trek - Armada\n"
"[Armada]\n"
2021-06-09 07:24:17 +02:00
"armadahack=true\n"
"nonexclusive=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2024-11-26 03:05:16 +01:00
"; Star Wars Rebellion\n"
"[REBEXE]\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Star Wars: Galactic Battlegrounds\n"
"[battlegrounds]\n"
2022-09-05 05:57:45 +02:00
"nonexclusive=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"
2022-09-05 05:57:45 +02:00
"nonexclusive=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
2021-05-28 20:48:52 +02:00
"\n"
2023-02-19 21:37:13 +01:00
"; Starcraft\n"
"[StarCraft]\n"
"game_handles_close=true\n"
"\n"
"; Space Rangers\n"
"[Rangers]\n"
"hook_peekmessage=true\n"
"\n"
2024-06-03 03:04:28 +02:00
"; SPYFox: Hold the Mustard\n"
"[mustard]\n"
"renderer=gdi\n"
"\n"
2024-06-04 19:43:31 +02:00
"; SPY Fox: Some Assembly Required\n"
"[Spyfox2]\n"
2024-06-04 09:17:48 +02:00
"renderer=gdi\n"
"\n"
2024-06-03 03:04:28 +02:00
"; SPY Fox in Dry Cereal (2008)\n"
"[SpyFox]\n"
"renderer=gdi\n"
"\n"
"; SPY Fox in Dry Cereal (2001)\n"
"[SPYFOXDC]\n"
"renderer=gdi\n"
"\n"
"; SPY Fox : Some Assembly Required\n"
"[SPYFOXSR]\n"
"renderer=gdi\n"
"\n"
"; SPY Fox: Operation Ozone\n"
"[spyozon]\n"
"renderer=gdi\n"
"\n"
2024-06-04 09:17:48 +02:00
"; SPY Fox: Operation Ozone\n"
"[spyfoxozu]\n"
"renderer=gdi\n"
"\n"
2023-08-07 10:15:52 +02:00
"; Stronghold Crusader HD\n"
"[Stronghold Crusader]\n"
2023-08-14 20:53:36 +02:00
"resolutions=2\n"
2023-08-07 10:15:52 +02:00
"stronghold_hack=true\n"
"adjmouse=true\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Stronghold Crusader Extreme HD\n"
"[Stronghold_Crusader_Extreme]\n"
2023-08-10 17:24:27 +02:00
"resolutions=2\n"
2023-08-07 10:15:52 +02:00
"stronghold_hack=true\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"
2023-08-10 17:24:27 +02:00
"resolutions=2\n"
2023-08-07 10:15:52 +02:00
"stronghold_hack=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
2021-06-04 02:01:47 +02:00
"\n"
2021-08-04 17:17:22 +02:00
"; Sim City 3000\n"
"[SC3]\n"
"minfps=-2\n"
2024-12-28 07:47:18 +01:00
"maxgameticks=60"
2021-08-04 17:17:22 +02:00
"\n"
2021-06-04 02:01:47 +02:00
"; Shadow Watch\n"
"[sw]\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
2024-12-14 19:11:31 +01:00
"maxgameticks=30"
2021-06-04 02:01:47 +02:00
"\n"
2021-06-15 09:40:55 +02:00
"; Shadow Flare\n"
"[ShadowFlare]\n"
"nonexclusive=true\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
2021-06-15 09:40:55 +02:00
"\n"
2024-12-22 02:42:07 +01:00
"; Squad Leader\n"
"[SquadLeader]\n"
"maxgameticks=30\n"
"limiter_type=4\n"
"\n"
2024-12-26 02:37:54 +01:00
"; Soldiers At War\n"
"[SAW_Game]\n"
2024-12-26 07:42:40 +01:00
"maxgameticks=30\n"
2024-12-26 02:37:54 +01:00
"limiter_type=4\n"
"\n"
2024-12-28 07:47:18 +01:00
"; The Tone Rebellion\n"
"[Float]\n"
"hook_peekmessage=true\n"
"\n"
"; Total Annihilation (Unofficial Beta Patch v3.9.02)\n"
"[TotalA]\n"
2023-08-18 14:04:37 +02:00
"max_resolutions=32\n"
2022-09-17 13:46:45 +02:00
"lock_surfaces=true\n"
2022-09-17 09:00:58 +02:00
"singlecpu=false\n"
"\n"
2022-09-19 14:29:34 +02:00
"; Total Annihilation Replay Viewer (Unofficial Beta Patch v3.9.02)\n"
"[Viewer]\n"
2023-08-18 14:04:37 +02:00
"max_resolutions=32\n"
2022-09-19 14:29:34 +02:00
"lock_surfaces=true\n"
"singlecpu=false\n"
"\n"
2024-12-18 04:20:37 +01:00
"; Virtual Springfield\n"
"[VIRTUAL]\n"
"game_handles_close=true\n"
"\n"
2023-08-18 11:22:09 +02:00
"; Total Annihilation: Kingdoms\n"
"[Kingdoms]\n"
"game_handles_close=true\n"
2023-08-18 13:33:41 +02:00
"max_resolutions=32\n"
2023-08-18 11:22:09 +02:00
"\n"
"; The Missing on Lost Island\n"
"[Island]\n"
"lock_mouse_top_left=true\n"
"fixchilds=3\n"
"\n"
2024-06-06 03:02:18 +02:00
"; The X-Files DVD\n"
"[XFiles]\n"
"windowed=true\n"
"fullscreen=true\n"
2024-06-06 04:55:33 +02:00
"toggle_borderless=true\n"
2024-06-06 03:02:18 +02:00
"\n"
2024-05-31 04:55:55 +02:00
"; The Learning Company Launcher\n"
"[TLCLauncher]\n"
"tlc_hack=true\n"
"adjmouse=false\n"
"width=0\n"
"height=0\n"
"resizable=false\n"
"maintas=false\n"
"boxing=false\n"
"\n"
"; The Jungle Book Groove Party\n"
"[Jungle_vr]\n"
2024-09-12 18:11:08 +02:00
"fix_not_responding=true\n"
"\n"
2021-06-15 09:40:55 +02:00
"; Three Kingdoms: Fate of the Dragon\n"
"[sanguo]\n"
"maxgameticks=60\n"
"noactivateapp=true\n"
"limiter_type=2\n"
2021-06-15 09:40:55 +02:00
"\n"
2024-08-31 17:00:53 +02:00
"; Thomas & Friends - The Great Festival Adventure\n"
"[Thomas]\n"
"no_compat_warning=true\n"
"noactivateapp=true\n"
"\n"
"; RollerCoaster Tycoon\n"
"[rct]\n"
2023-07-28 13:53:57 +02:00
"no_dinput_hook=true\n"
"singlecpu=false\n"
2023-07-28 07:02:03 +02:00
"maxfps=0\n"
2023-07-28 09:53:04 +02:00
"adjmouse=true\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Twisted Metal\n"
"[TWISTED]\n"
"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"
"nonexclusive=true\n"
"maxgameticks=60\n"
2021-06-16 05:57:19 +02:00
"adjmouse=true\n"
2022-10-02 20:56: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"
2024-12-28 08:27:35 +01:00
"; Unreal\n"
"[Unreal]\n"
"adjmouse=false\n"
"lock_mouse_top_left=true\n"
"center_cursor_fix=true\n"
"\n"
2021-06-04 02:01:47 +02:00
"; Uprising\n"
"[uprising]\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"
2024-12-27 02:44:37 +01:00
"; Unreal\n"
"[Unreal]\n"
"noactivateapp=true\n"
"\n"
2023-10-20 03:59:35 +02:00
"; Vermeer\n"
"[vermeer]\n"
2023-10-20 04:35:55 +02:00
"adjmouse=true\n"
"fake_mode=640x480x32\n"
2023-10-20 03:59:35 +02:00
"\n"
2024-12-22 21:20:58 +01:00
"; Virtua Fighter 2\n"
"[VF2]\n"
"fake_mode=640x480x8\n"
"\n"
2024-12-21 07:15:12 +01:00
"; Wall Street Trader 2000 - NOT WORKING YET\n"
"[WSTrader]\n"
"nonexclusive=false\n"
"windowed=false\n"
"\n"
"; WarCraft 2000: Nuclear Epidemic\n"
"[war2000]\n"
"resolutions=2\n"
2024-08-05 05:56:43 +02:00
"guard_lines=600\n"
"minfps=-2\n"
"\n"
"; Warhammer 40000: Chaos Gate\n"
"[WH40K]\n"
"maxgameticks=250\n"
"\n"
"; Wizardry 8\n"
"[Wiz8]\n"
2024-09-12 18:11:08 +02:00
"sirtech_hack=true\n"
"fix_alt_key_stuck=true\n"
"\n"
2023-12-17 17:03:05 +01:00
"; Worms 2\n"
"[worms2]\n"
2024-05-13 04:21:54 +02:00
"vhack=true\n"
"flipclear=true\n"
2023-12-17 17:03:05 +01:00
"game_handles_close=true\n"
"center_cursor_fix=true\n"
2023-12-17 17:03:05 +01:00
"\n"
2021-06-04 02:01:47 +02:00
"; Worms Armageddon\n"
"[WA]\n"
2024-10-11 22:17:55 +02:00
"lock_mouse_top_left=true\n"
2021-06-04 02:01:47 +02:00
"\n"
2024-12-20 10:34:20 +01:00
"; Wheel Of Fortune\n"
"[WHEEL]\n"
"singlecpu=false\n"
"\n"
"; War Wind\n"
"[WW]\n"
"minfps=-1\n"
"\n"
"; Jeff Wayne's 'The War Of The Worlds'\n"
"[WoW]\n"
"minfps=-1\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"
"; Zork Nemesis\n"
"[znemesis]\n"
2024-12-26 02:58:09 +01:00
"fix_not_responding=true\n"
2024-12-22 04:00:48 +01:00
"maxgameticks=60\n"
2024-12-22 03:53:41 +01:00
"limiter_type=4\n"
"\n"
, fh);
fclose(fh);
}
}
2023-08-05 05:02:49 +02:00
static void cfg_init()
{
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, g_config.process_file_ext);
2021-09-16 02:25:22 +02:00
int len = strlen(g_config.game_path) - strlen(g_config.process_file_name) - strlen(g_config.process_file_ext);
char* end = strstr(g_config.game_path + len, g_config.process_file_name);
2021-09-16 02:25:22 +02:00
if (end)
{
*end = 0;
}
else
{
g_config.game_path[0] = 0;
}
}
/* get dll filename and directory */
if (GetModuleFileNameA(g_ddraw_module, g_config.dll_path, sizeof(g_config.dll_path) - 1) > 0)
{
_splitpath(g_config.dll_path, NULL, NULL, g_config.dll_file_name, g_config.dll_file_ext);
int len = strlen(g_config.dll_path) - strlen(g_config.dll_file_name) - strlen(g_config.dll_file_ext);
char* end = strstr(g_config.dll_path + len, g_config.dll_file_name);
if (end)
{
*end = 0;
}
else
{
g_config.dll_path[0] = 0;
}
}
if (!GetEnvironmentVariableA("CNC_DDRAW_CONFIG_FILE", g_config.ini_path, sizeof(g_config.ini_path) - 1))
{
if (strlen(g_config.dll_path) > 0 && strlen(g_config.dll_file_name) > 0)
{
_snprintf(g_config.ini_path, sizeof(g_config.ini_path) - 1, "%sddraw.ini", g_config.dll_path);
/* Use this here instead to sync .ini filename with .dll filename - by egornovivan @ github */
//_snprintf(g_config.ini_path, sizeof(g_config.ini_path) - 1, "%s%s.ini", g_config.dll_path, g_config.dll_file_name);
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{
cfg_create_ini();
}
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{
/* This might not actually be needed, but we keep it for now */
strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1);
}
}
else
{
strncpy(g_config.ini_path, ".\\ddraw.ini", sizeof(g_config.ini_path) - 1);
}
}
if (GetFileAttributes(g_config.ini_path) == INVALID_FILE_ATTRIBUTES)
{
cfg_create_ini();
}
2023-10-17 18:13:35 +02:00
ini_create(&g_config.ini, g_config.ini_path);
cfg_get_game_section(g_config.game_section, sizeof(g_config.game_section));
2024-06-03 04:44:58 +02:00
2024-06-03 09:13:51 +02:00
TRACE("filename = %s\n", g_config.process_file_name);
TRACE("section = %s\n", g_config.game_section[0] ? g_config.game_section : "ddraw");
2021-09-16 02:25:22 +02:00
}
static DWORD cfg_get_game_section(LPSTR buf, DWORD size)
2021-09-16 02:25:22 +02:00
{
if (!buf || size == 0)
return 0;
char tmp[MAX_PATH] = { 0 };
2023-10-14 05:00:27 +02:00
2024-05-06 02:00:58 +02:00
if (IsWine())
{
char section[MAX_PATH] = { 0 };
_snprintf(section, sizeof(section) - 1, "%s/wine", g_config.process_file_name);
if (ini_section_exists(&g_config.ini, section))
{
2024-06-01 07:41:03 +02:00
strncpy(buf, section, size);
buf[size - 1] = 0;
return strlen(buf);
}
}
if (ini_section_exists(&g_config.ini, g_config.process_file_name))
2023-10-17 18:13:35 +02:00
{
if (ini_get_string(&g_config.ini, g_config.process_file_name, "checkfile", "", tmp, sizeof(tmp)) > 0)
{
if (FILE_EXISTS(tmp))
{
2024-06-01 07:41:03 +02:00
strncpy(buf, g_config.process_file_name, size);
buf[size - 1] = 0;
return strlen(buf);
}
}
2023-10-17 18:13:35 +02:00
else
{
2024-06-01 07:41:03 +02:00
strncpy(buf, g_config.process_file_name, size);
buf[size - 1] = 0;
return strlen(buf);
}
}
2023-10-14 11:00:58 +02:00
2023-10-14 12:41:52 +02:00
for (int i = 2; i < 10; i++)
2023-10-14 05:00:27 +02:00
{
char section[MAX_PATH] = { 0 };
2023-10-14 11:00:58 +02:00
_snprintf(section, sizeof(section) - 1, "%s/%d", g_config.process_file_name, i);
2023-10-14 05:00:27 +02:00
if (ini_section_exists(&g_config.ini, section))
2023-10-17 18:13:35 +02:00
{
if (ini_get_string(&g_config.ini, section, "checkfile", "", tmp, sizeof(tmp)) > 0)
2023-10-14 05:00:27 +02:00
{
if (FILE_EXISTS(tmp))
{
2024-06-01 07:41:03 +02:00
strncpy(buf, section, size);
buf[size - 1] = 0;
return strlen(buf);
}
2023-10-14 05:00:27 +02:00
}
}
}
buf[0] = 0;
return 0;
}
static DWORD cfg_get_string(LPCSTR key, LPCSTR default_value, LPSTR buf, DWORD size)
{
if (g_config.game_section[0])
{
DWORD s = ini_get_string(&g_config.ini, g_config.game_section, key, "", buf, size);
if (s > 0)
return s;
}
return ini_get_string(&g_config.ini, "ddraw", key, default_value, buf, size);
}
2023-09-22 00:38:42 +02:00
static BOOL cfg_get_bool(LPCSTR key, BOOL default_value)
{
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));
2019-01-28 21:11:34 +01:00
return (_stricmp(value, "yes") == 0 || _stricmp(value, "true") == 0 || _stricmp(value, "1") == 0);
}
2023-09-22 00:38:42 +02:00
static int cfg_get_int(LPCSTR key, int default_value)
{
2023-10-14 05:04:36 +02:00
char def_value[24];
_snprintf(def_value, sizeof(def_value) - 1, "%d", default_value);
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));
2021-09-29 12:55:20 +02:00
if (strstr(value, "0x"))
{
return (int)strtol(value, NULL, 0);
}
else
{
return atoi(value);
}
}