438 lines
33 KiB
C++
438 lines
33 KiB
C++
// Generated by mods/build.py from mods/common/DS2Revival.ini - do not edit (not in git).
|
|
#pragma once
|
|
namespace ds2 {
|
|
inline constexpr char kRevivalIniText[] =
|
|
"; DS2 Revival settings - one file for all of its plugins, in the game folder next to DungeonSiege2.exe.\n"
|
|
";\n"
|
|
"; Every setting is listed here with its default value. Change a value and restart the game; a line you remove means the\n"
|
|
"; default. One [section] per feature group. Yes/no settings: 1 = on, 0 = off.\n"
|
|
";\n"
|
|
"; [Network] [Multiplayer] DS2Multiplayer.asi\n"
|
|
"; [Fixes] DS2Fixes.asi\n"
|
|
"; [Display] [Camera] [Photo] DS2Widescreen.asi\n"
|
|
"; [Graphics] DS2Graphics.asi\n"
|
|
"; [BrokenWorld] DS2BrokenWorld.asi\n"
|
|
"; [ModLoader] DS2ModLoader.asi\n"
|
|
"; [Logging] all of them (the log file)\n"
|
|
"; (The controller plugin, an optional extra, has its own DS2Controller.ini.)\n"
|
|
";\n"
|
|
"; COMMON MISCONCEPTIONS\n"
|
|
"; * Deleting a section, a line or this whole file does NOT turn anything off: the plugins then use the defaults listed here.\n"
|
|
"; To turn a plugin off, set it to 0 under [Plugins] below (or delete its .asi). A section whose plugin is not installed does nothing.\n"
|
|
"; * Broken World started from the Steam game's \"Broken World\" folder reads this same file, next to the main game's\n"
|
|
"; DungeonSiege2.exe: one file for both games, no second copy needed. (A Broken World folder on its own, with no Dungeon\n"
|
|
"; Siege II around it, keeps its own DS2Revival.ini next to its DungeonSiege2.exe.)\n"
|
|
"; * Versions 1.2.0 and 1.2.1 kept this file in the \"scripts\" folder. The first start of a newer version moves it here (your\n"
|
|
"; values stay). The plugins' log file is \"scripts\\logs\\DS2Revival.log\": send it when you report a problem ([Logging] below).\n"
|
|
"; * Old per-plugin files (DS2Multiplayer.ini, DS2Widescreen.ini, ...) are only used when this file does not exist. If both\n"
|
|
"; exist this file wins and the plugin says in its log which one it used. When the plugins create this file (the first\n"
|
|
"; start) they move the values you had changed in the old files here and rename those to .old.\n"
|
|
"; * This file is created by the plugins at the first start and is not part of the download, so an update never overwrites it.\n"
|
|
"; A new version adds its new settings to this file (with their comments) at the next start and brings the explanatory\n"
|
|
"; comments above the settings up to its text (a comment you wrote or changed yourself is kept). It changes no value - with\n"
|
|
"; one exception: when a new version changes the DEFAULT of a setting (1.3: AntiAliasing smaa -> msaa4+smaa), a value that\n"
|
|
"; is still the old default is changed to the new one, once (the log says so; [Settings] at the end of this file). A value\n"
|
|
"; you set yourself is never changed. Delete the file to get the default one back.\n"
|
|
"; * Mode and Resolution: with the default Mode=borderless the window is as big as your desktop and the game never changes\n"
|
|
"; your monitor's video mode. Resolution=1280x720 only makes the game render at that size and scale it up to fill the screen.\n"
|
|
"; * HudScale, HudFilter and MenuScale only apply with Mode=borderless. HudScale accepts decimals (1.5, 1.75), not only 1, 2, 3.\n"
|
|
"; * MaxFps is the game's frame-rate limiter (the game stops at 75 in a window; \"refresh\" = your monitor's refresh rate,\n"
|
|
"; 0 = no limit). It is not vsync, and it does not make the game faster.\n"
|
|
"; * Sharpen=0 turns the sharpening filter off completely (AntiAliasing=off does the same for anti-aliasing). Sharpen is gentle\n"
|
|
"; by default (0.2); older versions used 0.4.\n"
|
|
"; * The [Graphics] options (anti-aliasing, sharpening, anisotropy, Shaders, ShadowSize, FinerGlow) work in every Mode, also the\n"
|
|
"; game's own fullscreen and window; only the photo-mode picture needs borderless.\n"
|
|
"; * Broken World uses the same plugins and settings as the main game. Its own old plugin copies in \"Broken World\\scripts\" are\n"
|
|
"; retired (only DS2Revival.asi is needed there). Old Broken World saves load (AcceptAnySaveSinglePlayer).\n"
|
|
"; * FastCpuid (Broken World) only matters on PCs where Windows runs its hypervisor (Memory Integrity, WSL2, Hyper-V,\n"
|
|
"; Docker, ...); elsewhere it changes nothing, and it is safe to leave on.\n"
|
|
"; * DirectPlay=auto needs no Windows feature: with Windows DirectPlay missing, the game uses the plugin's own replacement.\n"
|
|
"; * You do not need port forwarding to host: Relay=auto sends the game through the server only when a joiner cannot\n"
|
|
"; connect directly. Everyone in an online game needs DS2Multiplayer.\n"
|
|
"\n"
|
|
"\n"
|
|
"[Plugins]\n"
|
|
"; Broken World runs these same plugin files (loaded from the main game's scripts folder by \"Broken World\\scripts\\DS2Revival.asi\").\n"
|
|
"; 1 = on in both games; 0 = off in both (the same as deleting its .asi); ds2 = on in Dungeon Siege II only;\n"
|
|
"; bw = on in Broken World only. Example: DS2Graphics=ds2 keeps the graphics plugin out of Broken World.\n"
|
|
"; Players in an online game all need DS2Multiplayer.\n"
|
|
"DS2Multiplayer=1\n"
|
|
"DS2Widescreen=1\n"
|
|
"DS2Graphics=1\n"
|
|
"DS2Fixes=1\n"
|
|
"DS2BrokenWorld=1\n"
|
|
"DS2ModLoader=1\n"
|
|
"\n"
|
|
"; ======================================================================================================================\n"
|
|
"; DS2Multiplayer.asi - online play and LAN without GameSpy\n"
|
|
"; ======================================================================================================================\n"
|
|
"\n"
|
|
"[Network]\n"
|
|
"; The multiplayer server that replaces the dead GameSpy (host name or IP). 127.0.0.1 = a server on this PC.\n"
|
|
"Server=use1.dsii.uk\n"
|
|
"; Hosting behind a router without port forwarding: games go through the server.\n"
|
|
"; auto = only when needed, always = every game, off = never (the host must forward UDP 2302).\n"
|
|
"Relay=auto\n"
|
|
"; DirectPlay transport. auto = Windows DirectPlay when it is installed, otherwise our replacement (also on Linux/Steam Deck\n"
|
|
"; under Proton, whose built-in DirectPlay cannot host); native = Windows DirectPlay only; shim = always the replacement.\n"
|
|
"; Both kinds of player can be in the same game.\n"
|
|
"DirectPlay=auto\n"
|
|
"; News in the game: where the game's version check goes (its \"new patch available\" banner becomes the news banner).\n"
|
|
"; https://dsii.uk = the project site; an http://host:port address for a test server; empty = leave it alone.\n"
|
|
"NewsUrl=https://dsii.uk\n"
|
|
"; 0 = the version check shows the game's own text instead of the news banner.\n"
|
|
"NewsBanner=1\n"
|
|
"; Broken World's News screen (it asks www.gaspowered.com): 1 = show the revival news there too, 0 = leave it.\n"
|
|
"NewsScreen=1\n"
|
|
"; Steam copies have no CD key: 1 = give them a per-user identity (never touches the registry's game keys), 0 = off.\n"
|
|
"VirtualCdKey=1\n"
|
|
"; Advanced: a fixed identity number for the virtual CD key. Empty = a random one kept per Windows user.\n"
|
|
"CdKeyHash=\n"
|
|
"; Advanced: the product id served to the game.\n"
|
|
"ProductId=00000-000-0000000-00000\n"
|
|
"; Advanced: the distribution id served to the game; it only gates the version check (news banner).\n"
|
|
"; auto = 1 while NewsUrl is usable, else 0; or a number.\n"
|
|
"DistroId=auto\n"
|
|
"; 1 = when the game looks up its own host name it gets only the main IPv4 address, which stops LAN games failing with\n"
|
|
"; \"name is already in use\" on PCs with several network adapters.\n"
|
|
"SingleLanAddress=1\n"
|
|
"\n"
|
|
"[Multiplayer]\n"
|
|
"; Re-enable the Multiplayer button of the main menu (the Steam build greys it out).\n"
|
|
"EnableMenuButton=1\n"
|
|
"; Fix the START button staying disabled in a fresh session's staging screen.\n"
|
|
"FixStartGuard=1\n"
|
|
"; Do not ask the Windows Firewall question when hosting (see \"Firewall setup.cmd\").\n"
|
|
"SkipFirewallPrompt=1\n"
|
|
"; Seconds a direct (IP) connection is tried before it gives up.\n"
|
|
"DirectConnectTimeout=60\n"
|
|
"; Create the multiplayer server when you enter a lobby, so a fresh session can host.\n"
|
|
"LobbyServer=1\n"
|
|
"; Close the lobby screens when you leave a lobby instead of leaving them on screen.\n"
|
|
"CloseLobbyOnExit=1\n"
|
|
"; Warn (and offer Windows' installer) when DirectPlay is missing and the replacement is not in use.\n"
|
|
"CheckDirectPlay=1\n"
|
|
"; Offer the game's hidden 8-player modes when hosting (Old School Mode, Couples Mode++); only the host needs this.\n"
|
|
"EightPlayers=1\n"
|
|
"; When the host's game differs from yours (another DungeonSiege2.exe file, another version) the game used to stay silently\n"
|
|
"; in the staging area when the host started; 1 = say so and go back to the game list. 0 = the game's own behaviour.\n"
|
|
"JoinVersionMessage=1\n"
|
|
"\n"
|
|
"\n"
|
|
"; ======================================================================================================================\n"
|
|
"; DS2Fixes.asi - bug fixes, all on by default; here you can switch single ones off\n"
|
|
"; ======================================================================================================================\n"
|
|
"\n"
|
|
"[Fixes]\n"
|
|
"; The game installs a system-wide keyboard hook that makes typing lag in every other program. 1 = it is not installed.\n"
|
|
"NoGlobalKeyboardHook=1\n"
|
|
"; The game changes the mouse cursor twice per mouse event (stutter while moving or clicking). 1 = those calls are filtered.\n"
|
|
"QuietCursor=1\n"
|
|
"; Rotating the camera with the middle mouse button recentres the cursor every frame; 1 = keep that stable at any frame rate.\n"
|
|
"SteadyCameraDrag=1\n"
|
|
"; The game's vertex upload (shadows, particles, character meshes) read up to 168 bytes past the end of its data and could\n"
|
|
"; crash. 1 = fixed.\n"
|
|
"SafeVertexUpload=1\n"
|
|
"; The \"below minimum specification\" box that graphics chips unknown to the game get at the first start. 1 = not shown.\n"
|
|
"SkipMinSpecWarning=1\n"
|
|
"; The Gas Powered Games newsletter form at the first single-player start. 1 = skipped.\n"
|
|
"SkipSignUpForm=1\n"
|
|
"; Single player: when the last conscious hero falls but a level-up (experience arriving after the killing blow) stands them\n"
|
|
"; up again, the game still showed \"Defeat / Respawn\" and sent the party back to the start. 1 = the hero simply plays on:\n"
|
|
"; the pending defeat is cancelled (a death that a level-up undoes is not a defeat). A real defeat is unchanged.\n"
|
|
"LevelUpRevive=1\n"
|
|
"; Give back the animation memory (about 7 MB per region) of objects left behind when you leave a region, so long sessions do\n"
|
|
"; not run out of address space. 1 = on, 0 = off, auto = on for Dungeon Siege II, off for Broken World (not proven there yet).\n"
|
|
"DormantAnimations=auto\n"
|
|
"; How long (seconds) an object must be out of view before its animation memory is released.\n"
|
|
"DormantDelaySeconds=10\n"
|
|
"; Diagnostic: 1 = count the dormant-animation hook calls and cycles in the log.\n"
|
|
"DormantProfile=0\n"
|
|
"; A Documents path with characters the game's code page cannot hold (a Cyrillic or Chinese user name on an English Windows)\n"
|
|
"; makes the game save into its install folder. 1 = the game is given an ASCII path (a junction in %ProgramData%\\DS2Revival).\n"
|
|
"AsciiDocumentsPath=1\n"
|
|
"; A few seconds after the start, check that Documents\\My Games\\<game> can be written and say why if not (Controlled folder\n"
|
|
"; access, security software) instead of the game's silent fallback. 1 = on.\n"
|
|
"SaveFolderCheck=1\n"
|
|
"; Language packs under a Windows that uses UTF-8 for legacy programs break text, typing and saves.\n"
|
|
"; auto = code page 1252 only when Windows uses UTF-8 for legacy programs; off or 0 = leave everything alone;\n"
|
|
"; a number = force that code page (e.g. 1252, or 1251 for a Cyrillic pack).\n"
|
|
"TextCodepage=auto\n"
|
|
"\n"
|
|
"\n"
|
|
"; ======================================================================================================================\n"
|
|
"; DS2Widescreen.asi - window and resolution, interface size, frame limiter, camera, photo mode\n"
|
|
"; DS2Graphics.asi - the graphics (GPU) options, section [Graphics] below\n"
|
|
"; Quick answers: sharpening off = Sharpen=0 [Graphics]; anti-aliasing off = AntiAliasing=off [Graphics]; bigger interface =\n"
|
|
"; HudScale=2; uncapped frame rate = MaxFps=0; the game's own video modes = Mode=off.\n"
|
|
"; ======================================================================================================================\n"
|
|
"\n"
|
|
"[Display]\n"
|
|
"; How the game's window is made.\n"
|
|
"; borderless = a frameless window the size of your screen (works with every Steam launch option and the Steam overlay; the\n"
|
|
"; 800x600 / 1024x768 menus are scaled to fit with black bars); window = the game's normal window; off = leave the game's\n"
|
|
"; video alone (exclusive fullscreen at its own modes).\n"
|
|
"Mode=borderless\n"
|
|
"; The game's own exclusive fullscreen (Mode=off, or fullscreen=true on the command line) shows no mouse pointer on Windows 10\n"
|
|
"; and 11. 1 = the pointer is brought back there (two checks of the game that hide it are skipped in memory, in Dungeon Siege II\n"
|
|
"; and in Broken World; a Broken World exe that has those two edits already keeps them). Nothing changes in borderless / window.\n"
|
|
"ExclusiveCursor=1\n"
|
|
"; The size the 3D world is rendered at. desktop = your screen's size; or WIDTHxHEIGHT such as 1280x720 (rendered at that size\n"
|
|
"; and stretched to fit with the aspect ratio kept; a smaller size also makes the interface bigger; a size above your screen is\n"
|
|
"; refused by the game). It does not change your monitor's video mode.\n"
|
|
"Resolution=desktop\n"
|
|
"; The game's frame limiter (not vsync). refresh = your screen's refresh rate; 0 = no limit; a number = that many frames per\n"
|
|
"; second. \"maxfps=\" on the game's command line wins.\n"
|
|
"MaxFps=refresh\n"
|
|
"; How the 800x600 / 1024x768 menus are enlarged (Mode=borderless only). sharp = whole-number enlargement with hard pixels,\n"
|
|
"; then a smooth shrink to fit; integer = whole multiples only (black border, perfectly sharp); smooth = the old blurry stretch.\n"
|
|
"MenuScale=sharp\n"
|
|
"; What fills the side bars around the menus on a wide screen (Mode=borderless only). blur (default) = a dark,\n"
|
|
"; strongly blurred copy of the menu picture (it moves with the menu); black = black bars; blurlight = a lighter, less dark blur; mirror = the picture\n"
|
|
"; mirrored outwards, dark.\n"
|
|
"MenuBars=blur\n"
|
|
"; Size of the in-game interface (Mode=borderless only). auto = screen height / 720 (1080p 1.5, 1440p 2, 2160p 3; snapped to\n"
|
|
"; a whole number within 0.05, off below 1.2); 1 = off; or a number from 1 to 4 such as 1.25 or 2. Decimals are fine.\n"
|
|
"HudScale=auto\n"
|
|
"; Interface scaling filter at fractional scales (Mode=borderless only). sharp = crisp text; smooth = plain bilinear;\n"
|
|
"; point = nearest.\n"
|
|
"HudFilter=sharp\n"
|
|
"; The round corner radar (minimap) at the screen's full resolution instead of inside the scaled interface (only with HudScale\n"
|
|
"; above 1): 1 = its lines stay clean while the camera turns; 0 = drawn with the rest of the interface (the old look, shimmers).\n"
|
|
"RadarNative=1\n"
|
|
"; How the native-resolution radar samples its map (RadarNative=1 only). smooth = bilinear (steady, soft lines while the camera turns);\n"
|
|
"; point = the game's own look (crisp texels, thin lines jump from pixel to pixel when the map rotates).\n"
|
|
"RadarFilter=smooth\n"
|
|
"; After a failed graphics reset (alt-tab, overlay) retry for 10 seconds instead of ending at once. 0 = the game's behaviour.\n"
|
|
"RetryDeviceReset=1\n"
|
|
"; Once per frame check that the plugin's Direct3D hooks are still installed. With the native Direct3D 9 driver on AMD cards the\n"
|
|
"; game dropped them a few frames after the start, so the graphics options silently did nothing. 0 only for diagnosing.\n"
|
|
"RevalidateHooks=1\n"
|
|
"; Experimental. The game creates a new Direct3D device at every menu <-> world change. If something outside the game (a Steam or\n"
|
|
"; capture overlay) keeps each old device alive, they pile up (about 15 driver threads and a lot of memory each, see the thread count\n"
|
|
"; in the log lines \"d3dhub: device created\") until the game runs out of memory. 1 = keep one device for the whole session: the game's\n"
|
|
"; request for a new one is answered by resetting the same device (the same call a window resize or alt-tab makes), so nothing is left\n"
|
|
"; behind; if the reset is refused the game's own new device is used. 0 = the game's behaviour.\n"
|
|
"ReuseDevice=0\n"
|
|
"; Diagnostic: 1 = write cursor-recentring statistics to the log once a second.\n"
|
|
"LogCursor=0\n"
|
|
"\n"
|
|
"[Graphics]\n"
|
|
"; DS2Graphics.asi: the graphics (GPU) options. Older files had these in [Display]; the plugin still reads them there when\n"
|
|
"; [Graphics] lacks the key, and the plugins move them. DS2Graphics works without DS2Widescreen and in every Mode (borderless,\n"
|
|
"; window, off); SSAO is still experimental.\n"
|
|
"; Smooths jagged edges of the 3D world (text and interface stay sharp). msaa4+smaa = 4x multisampling plus SMAA: the cleanest\n"
|
|
"; picture (edges, and the leaf cut-outs that multisampling alone leaves jagged); msaa2 / msaa4 / msaa8 = multisampling only (sharp\n"
|
|
"; textures, the same kind of anti-aliasing as dgVoodoo's); smaa = SMAA only (cheapest, slightly softer textures); off = none.\n"
|
|
"; \"msaa4+smaa\" and the like need no other tool: you do not need dgVoodoo for anti-aliasing. (A file from 1.2.x that still had\n"
|
|
"; the old default, smaa, gets msaa4+smaa once at the first start of 1.3; if you prefer smaa, set it again, it stays.) A sample count your graphics card\n"
|
|
"; does not support is lowered to the best it has, and if none works the plugin falls back to SMAA (the log says which).\n"
|
|
"; MSAA turns SSAO off (SSAO needs the single-sampled depth), and RevalidateHooks=0 disables MSAA (SMAA is used instead).\n"
|
|
"AntiAliasing=msaa4+smaa\n"
|
|
"; The 3D scenes of the menus (hero selection and creation) are anti-aliased with SMAA before the interface is drawn, so their\n"
|
|
"; text stays crisp. auto = SMAA unless AntiAliasing=off; smaa = always; off = never.\n"
|
|
"MenuAntiAliasing=auto\n"
|
|
"; Contrast-adaptive sharpening of the 3D world after anti-aliasing. 0 = off, up to 1 = strongest.\n"
|
|
"Sharpen=0.2\n"
|
|
"; Experimental ambient occlusion. off, on, or debug-depth / debug-ao (show the depth or the occlusion alone, for testing).\n"
|
|
"SSAO=off\n"
|
|
"; SSAO sample radius in game units and strength.\n"
|
|
"SSAORadius=1.5\n"
|
|
"SSAOIntensity=3.0\n"
|
|
"; Anisotropic texture filtering (sharper ground textures at a slant). 16 = default, capped at what your graphics card\n"
|
|
"; supports; 0 or 1 = the game's own filtering; 2, 4, 8 = weaker.\n"
|
|
"Anisotropy=16\n"
|
|
"; Shifts the texture detail level the graphics card picks. 0 = the game's own; negative = sharper (and shimmerier).\n"
|
|
"TextureLodBias=0\n"
|
|
"; The game forgets its \"Shaders\" video option at every start, so glow, water and shine stay off. fix = read it correctly;\n"
|
|
"; game = leave the game's behaviour.\n"
|
|
"Shaders=fix\n"
|
|
"; Size of the shadow pictures in pixels (Steam v2.3 only; the game uses 256). game = leave it; 512, 1024, 2048 or 4096 = sharper.\n"
|
|
"ShadowSize=game\n"
|
|
"; The glow around crystals, lanterns and magic is drawn at 256x256 and looks blocky and shimmery at today's resolutions. A number\n"
|
|
"; = the same glow drawn at that size (done in memory, no files written): 512 (default), 1024, or 2048; 0 = the game's own glow.\n"
|
|
"; Replaces the old ModsFinerGlow folder (you can delete it). Only your own screen changes.\n"
|
|
"FinerGlow=512\n"
|
|
"; Hero portraits at the top left are wrong above 1280 pixels wide: black in Dungeon Siege II multiplayer, dark and garbled in\n"
|
|
"; Broken World (single player too). 1 = fixed.\n"
|
|
"PortraitFix=1\n"
|
|
"; NVIDIA RTX Remix support. auto = the Remix profile when \".trex\\NvRemixBridge.exe\" is next to the game, else normal;\n"
|
|
"; remix = force the profile; d3d9 = never. The profile turns off MenuScale filtering, HudScale, AntiAliasing, Sharpen, SSAO,\n"
|
|
"; Anisotropy, TextureLodBias and Shaders. The next four apply to the Remix profile only.\n"
|
|
"Renderer=auto\n"
|
|
"; Draw a sky in the fog colour so Remix has one.\n"
|
|
"RemixSky=1\n"
|
|
"; Do not draw the shadow pass (Remix would take it for the main camera).\n"
|
|
"RemixSkipOffscreen=1\n"
|
|
"; Build the game's mouse pointer in the game process (Remix shows none).\n"
|
|
"RemixCursor=1\n"
|
|
"; A dim directional light in the menus: red,green,blue, or off.\n"
|
|
"RemixMenuLight=0.10,0.022,0.013\n"
|
|
"\n"
|
|
"[Camera]\n"
|
|
"; An empty setting is off (the game's own value).\n"
|
|
"; Field of view. auto = a wide screen sees more to the sides instead of less above and below; game = the original view;\n"
|
|
"; or a vertical angle in degrees from 20 to 100, e.g. 55.\n"
|
|
"FOV=auto\n"
|
|
"; Zoom out further: 1.5 or 2 times the game's limit (at most 4). Fog and view distance move out with the camera.\n"
|
|
"MaxZoom=\n"
|
|
"; Flattest camera angle in degrees (at least 5; the game stops at 32).\n"
|
|
"MinPitch=\n"
|
|
"; Steepest camera angle in degrees (at most 89; the game stops at 85).\n"
|
|
"MaxPitch=\n"
|
|
"; Zoom per mouse-wheel notch as a fraction of the zoom range (at most 0.9; the game uses 0.25), e.g. 0.1.\n"
|
|
"ZoomStep=\n"
|
|
"\n"
|
|
"[Photo]\n"
|
|
"; Photo mode: pauses a single-player game (never multiplayer), hides the interface and names, frees the camera limits.\n"
|
|
"; A key is a name (Insert, Return, Delete, PageUp, PageDown, Home, End, Pause, F1-F12, a letter or digit, ...) or a\n"
|
|
"; virtual-key number; none = off.\n"
|
|
"; Toggle photo mode (the same key leaves it; Escape also does). none turns the whole photo mode off.\n"
|
|
"Key=Insert\n"
|
|
"; In photo mode: save a PNG of the world without the interface into the game's Screenshots folder (needs Mode=borderless).\n"
|
|
"CaptureKey=Return\n"
|
|
"; In photo mode: detach the camera from the party (W A S D fly, R / F up / down, arrows or the middle button look, wheel =\n"
|
|
"; forward / back, Shift = fast); the same key brings the party camera back.\n"
|
|
"FreeCameraKey=Delete\n"
|
|
"; In photo mode, hold: wider / narrower field of view.\n"
|
|
"FovWiderKey=PageUp\n"
|
|
"FovNarrowerKey=PageDown\n"
|
|
"; Zoom limit in photo mode, times the game's (1-5).\n"
|
|
"MaxZoom=3\n"
|
|
"; Camera angle limits in photo mode, degrees above the ground (MinPitch 5-60, MaxPitch 60-89).\n"
|
|
"MinPitch=10\n"
|
|
"MaxPitch=89\n"
|
|
"; Field of view limits in degrees (FovMin 10-60, FovMax 60-140) and speed in degrees per second (5-120).\n"
|
|
"FovMin=20\n"
|
|
"FovMax=110\n"
|
|
"FovSpeed=30\n"
|
|
"; Free camera speed in metres per second (0.5-60).\n"
|
|
"FreeCameraSpeed=6\n"
|
|
"; How far the free camera may leave the loaded part of the world (0-500). 0 = from the map.\n"
|
|
"FreeCameraRadius=0\n"
|
|
"; 1 = no selection rings and no hover outline in the picture, 0 = keep them.\n"
|
|
"HideSelection=1\n"
|
|
"\n"
|
|
"\n"
|
|
"; ======================================================================================================================\n"
|
|
"; DS2BrokenWorld.asi - starts Broken World, imports Steam heroes and old saves, frame-rate fix, DLL search\n"
|
|
"; ======================================================================================================================\n"
|
|
"\n"
|
|
"[BrokenWorld]\n"
|
|
"; Starting the game starts Broken World when it is installed in the \"Broken World\" folder (hold Shift for the original game).\n"
|
|
"; auto = do that; off = never start Broken World.\n"
|
|
"Launch=auto\n"
|
|
"; Before starting Broken World, rename the 2018 repack's Resources\\Widescreen Fix.ds2res to .off: DS2Widescreen does its job, and\n"
|
|
"; it changes the game data checksum, so players with and without it could not join each other. 0 = keep it.\n"
|
|
"RetireWidescreenFix=1\n"
|
|
"; Broken World can read heroes made in the Steam game (it refused their file format). 1 = allow.\n"
|
|
"AcceptSteamParties=1\n"
|
|
"; Heroes are listed (single player, multiplayer, the vault) when they were made with a known edition of the game, by content id:\n"
|
|
"; D4EE6791 Steam Dungeon Siege 2 v2.3 D4EE4A9F the GOG exe (fixed files v3)\n"
|
|
"; 790BFE9F Broken World 75112728 Broken World with the 2018 repack's Widescreen Fix.ds2res\n"
|
|
"; CA03370A DE60C4EB 1A300219 older Dungeon Siege 2 versions (built into the games) AB123ABC the disc's premade heroes\n"
|
|
"; The log names the edition (\"party made with the GOG exe\"). 0 = only what the game itself knows.\n"
|
|
"AcceptKnownEditions=1\n"
|
|
"; More content CRCs (hexadecimal, separated by comma or space) whose heroes are accepted, e.g. a modded game's id from the log.\n"
|
|
"AcceptContentCrcs=\n"
|
|
"; Single player only: also list heroes saved with other game data (a mod, a retail install). The log says \"unknown game data,\n"
|
|
"; accepted in single player\". Multiplayer and the vault stay strict for ids not in the table above. 0 = off.\n"
|
|
"AcceptAnySaveSinglePlayer=1\n"
|
|
"; The frame-rate fix, part 1 (the common Broken World exe): its copy protection's call table is filled in at start-up and its one\n"
|
|
"; busy protected function is restored from your Steam DungeonSiege2.exe, so the protection code no longer runs while you play.\n"
|
|
"; Another exe, or no Steam v2.3 exe found: FastCpuid below does the job. 1 = on.\n"
|
|
"BindSlots=1\n"
|
|
"; The frame-rate fix, part 2, for PCs where Windows runs its hypervisor (Memory Integrity, WSL2, Hyper-V, Docker...): the\n"
|
|
"; protection's CPU checks are answered from a cache. Not needed when BindSlots worked (the log says so). 1 = on.\n"
|
|
"FastCpuid=1\n"
|
|
"; Undo a repacker's edits of Broken World's mouse handling (cursor recentring). 1 = on.\n"
|
|
"RestoreMouse=1\n"
|
|
"; Let Broken World find binkw32.dll and mss32.dll in the main game's system folder when its own is missing. 1 = on.\n"
|
|
"SystemDllSearch=1\n"
|
|
"; The Dungeon Siege 2 folder, if Broken World is not in a \"Broken World\" folder inside it. Empty = the folder above.\n"
|
|
"BaseGame=\n"
|
|
"\n"
|
|
"\n"
|
|
"; ======================================================================================================================\n"
|
|
"; DS2ModLoader.asi - drop-in mods (a \"Mods\" folder next to DungeonSiege2.exe, one folder per mod)\n"
|
|
"; ======================================================================================================================\n"
|
|
"\n"
|
|
"[ModLoader]\n"
|
|
"; 0 = load no mods\n"
|
|
"Enabled=1\n"
|
|
"; The mods folder, relative to the game's folder (or a full path). Each mod is a folder in it.\n"
|
|
"Folder=Mods\n"
|
|
"; 0 = only archives (.ds2res/.ds2map), no loose files (and no glTF files)\n"
|
|
"LooseFiles=1\n"
|
|
"; Broken World: also load the main game's Mods folder (before Broken World's own). Which of those mods Broken World takes is\n"
|
|
"; up to each mod (optional file <mod folder>\\modinfo.ini: [Mod] Games=ds2 / bw / both). Without Games=, a main-folder mod\n"
|
|
"; loads in both games, but in Broken World its loose files whose path Broken World's own archives also hold are skipped.\n"
|
|
"BaseGameMods=1\n"
|
|
"; glTF models (.glb/.gltf) in mods are used directly (converted at start-up into Mods\\.cache when they changed). 0 = ignore.\n"
|
|
"GLTF=1\n"
|
|
"\n"
|
|
"\n"
|
|
"; ======================================================================================================================\n"
|
|
"; All plugins - the log file\n"
|
|
"; ======================================================================================================================\n"
|
|
"\n"
|
|
"[Logging]\n"
|
|
"; The plugins write ONE log file per game start, \"scripts\\logs\\DS2Revival.log\" (Broken World started from the Steam game:\n"
|
|
"; \"DS2Revival.bw.log\"), every line tagged with the plugin's name; the last three runs are kept as DS2Revival.1.log ... .3.log.\n"
|
|
"; By default it holds what helps to find a problem: versions, settings, what went wrong, one line per feature. 1 = also every\n"
|
|
"; patch address and the fine detail of what the features do while you play (long; only for bug reports when asked).\n"
|
|
"Detail=0\n"
|
|
"\n"
|
|
"\n"
|
|
"[Settings]\n"
|
|
"; Written by the plugins - do not edit. Which defaults this file has been brought up to. When a version changes the default of a\n"
|
|
"; setting, a value that is still the old default is changed once, then this number is raised so it is never done again (a file\n"
|
|
"; without this line is from 1.2.x). Values you set yourself are never touched. (3: the explanatory comments of older files were\n"
|
|
"; refreshed once; the plugins keep them current at later starts.)\n"
|
|
"Version=3\n";
|
|
// Hashes of the comment blocks earlier versions shipped (mods/common/ini_comment_history.txt, kept by
|
|
// tools/ini_comment_history.py): the plugins refresh only such blocks in a player's file (settings_file.h RefreshComments).
|
|
inline constexpr unsigned long long kShippedCommentRuns[] = {
|
|
0x012F73757582E777ULL, 0x0217D0B5CE4F1780ULL, 0x0466B52023EF0273ULL, 0x06CB22ECE63134E6ULL,
|
|
0x06CCF54106BD9B48ULL, 0x071968A9CF3AC6C2ULL, 0x0C916E047B457058ULL, 0x0D3AEB65921C3F97ULL,
|
|
0x0F90C586B2806404ULL, 0x104AA70850C10ACCULL, 0x14878C5AD61E1FD2ULL, 0x16A2432CF48A0937ULL,
|
|
0x16A5BFE777B43A03ULL, 0x16C13792E482AC26ULL, 0x19B1CB1E214BDD83ULL, 0x1C638E3457743848ULL,
|
|
0x1E0EDE8C69644245ULL, 0x2028C93A89919906ULL, 0x21FBC97AEE245261ULL, 0x2309674E02F7EC47ULL,
|
|
0x241E22FBD4885B72ULL, 0x253FF65918E3A078ULL, 0x26A3AB49878C3227ULL, 0x275C6254C15A109BULL,
|
|
0x27DE43553A852326ULL, 0x29375DFDCBD23DE5ULL, 0x2AFFF2D626CE8067ULL, 0x2B0056B63CE84524ULL,
|
|
0x2CEFF45263F68D2AULL, 0x2E38F1A52C490541ULL, 0x2E53C709FBB4DD56ULL, 0x2ED66CA566EE1C8DULL,
|
|
0x2FDBEBFB0F509834ULL, 0x30E509CF0A060822ULL, 0x3113817A4564269BULL, 0x31934870C2C735F9ULL,
|
|
0x319FD74071FE22D4ULL, 0x33764B93DCAEC98EULL, 0x33DBF9C5BABE5BEEULL, 0x349D5C75D6B6D213ULL,
|
|
0x34F9BC089EF8A6F7ULL, 0x35A8CB50B363A658ULL, 0x35DE7C528BC6D8CFULL, 0x368A593A21483930ULL,
|
|
0x3A31B15C672D4CC8ULL, 0x3BE9ED1A16C13147ULL, 0x3C88B8DE92DAE81BULL, 0x3C9AFBB90B02880BULL,
|
|
0x3DAD884BF911B825ULL, 0x43628AA87D725C10ULL, 0x44C9E2E6EBBEECF3ULL, 0x45214468A304D844ULL,
|
|
0x45755C71005FD1F5ULL, 0x45EAA86FF582BA7CULL, 0x46E93975A61E10F5ULL, 0x47A9E7042B351100ULL,
|
|
0x4866F9B25A4ECA5CULL, 0x4867CC5BCDDCA16FULL, 0x4D4062BEF257937EULL, 0x525BF65831E0DA8BULL,
|
|
0x533058250FBB773BULL, 0x559D623A6B435377ULL, 0x57E24FCDE6BEC989ULL, 0x586FE9EC6221D9FDULL,
|
|
0x590F9E54943F94B1ULL, 0x592DD2704A8C0F80ULL, 0x59D49AE125AC45DBULL, 0x5ACE55FAF85214D1ULL,
|
|
0x5CF8240534F0FA8EULL, 0x5D85258381EE3F1DULL, 0x5FF0E6702E772A54ULL, 0x611549DCA650AF1DULL,
|
|
0x616C9272914F233DULL, 0x61727510473D08D0ULL, 0x6186E84D64DB2A90ULL, 0x6448C892B4F7BFD2ULL,
|
|
0x65302F4885A6DEF4ULL, 0x686B1E88DDB03966ULL, 0x68F1B603917BFF87ULL, 0x68F357513888B520ULL,
|
|
0x6F1FE14CC0D1BF0FULL, 0x73CBD6C514945BD7ULL, 0x77320CC3AE14A19BULL, 0x775A6AE32C1E1D37ULL,
|
|
0x77744256F5FBCE41ULL, 0x78AAF6DB5008C11FULL, 0x7951A5B8F1E33DE8ULL, 0x79552C2107E5230EULL,
|
|
0x795BA7E6938CE5D8ULL, 0x7A6FB33445A65E89ULL, 0x7B0D4230B7D7FEEBULL, 0x7D05891B140FA4D4ULL,
|
|
0x803016F5C025D3ACULL, 0x864C11183DC558CEULL, 0x875D5BE3CED759E2ULL, 0x87A78D7133D7CB86ULL,
|
|
0x895F912272ACE2C5ULL, 0x896271B51E3D0C33ULL, 0x8A4277995688BD6DULL, 0x8B27437DA9A22FE5ULL,
|
|
0x90CDCD067919A988ULL, 0x918E51E7FEEA1C2DULL, 0x94309E99AF64A0CEULL, 0x9509916F8920ADB8ULL,
|
|
0x9544AD2908FF2319ULL, 0x958583354CC1A7B8ULL, 0x9585AE68A38543F4ULL, 0x9741F51445B5AAB3ULL,
|
|
0x9BEE8CFE5F944C1BULL, 0x9C06F688ED031E08ULL, 0x9ED19B0EAB930FD1ULL, 0x9EE5ED6238E30C7AULL,
|
|
0x9F0364FC3D041C9DULL, 0xA1036C4249557E11ULL, 0xA1CD7033749CF6BBULL, 0xA1EF014DE2223A73ULL,
|
|
0xA47278AD26D0EDEBULL, 0xAD87CC0FDAA5ACD2ULL, 0xAE2CD912D56BF07BULL, 0xAF3D1947D3F0CD3FULL,
|
|
0xB2860DAEA2B810CAULL, 0xB2FB8B3D65967B6BULL, 0xB33CA2FC344E29D9ULL, 0xB573E5E05274D361ULL,
|
|
0xB8231A4F9F947718ULL, 0xBCBFCBE86CCCD73EULL, 0xBF1AB3E430A72721ULL, 0xC5D97B4CB648D314ULL,
|
|
0xC614B9E8D8DC4118ULL, 0xC718598DC7FD50A2ULL, 0xC87B9D6DAD1E5A74ULL, 0xCEC2587E1209177BULL,
|
|
0xCEEFB8C0FB11E72CULL, 0xD711D3EFDEAD9B08ULL, 0xD732D31F761E07B3ULL, 0xD7CAA94B5A49D68CULL,
|
|
0xDD2A2F54842A3E88ULL, 0xDE551E7E70C8BA55ULL, 0xDE63DB08A7511052ULL, 0xDE825A9A4CD92DD0ULL,
|
|
0xE059044025FC7557ULL, 0xE0E16E9C5BA30619ULL, 0xE1034DBBA75A5767ULL, 0xE1886A22373007CEULL,
|
|
0xE1BE907DDE2F1980ULL, 0xE48DB595F52372BCULL, 0xE71109859CA3C567ULL, 0xEA08F7C49EE5FCC3ULL,
|
|
0xEA45EF5AAFE7B4BEULL, 0xEB9430B0472041C7ULL, 0xED12EBAAA76960CAULL, 0xEFEDFE0A16CB1BEFULL,
|
|
0xF36B8969C4A3E102ULL, 0xF5871F60AA262F4FULL, 0xF5A3D6A78806A361ULL, 0xF5AC12225DD5F287ULL,
|
|
0xF61655BBA7DD02E1ULL, 0xF73B631A4FB22E12ULL, 0xF76883925BFCC8DEULL, 0xF8EB6F14E01A51C5ULL,
|
|
0xF99347E7B1D77869ULL, 0xFABDFAAA93B1F6FCULL, 0xFB66C1AF46E32A46ULL, 0xFCAE74810177DDC3ULL,
|
|
};
|
|
} // namespace ds2
|