I just put DSfix up on github.
It’s not nearly as cleaned up as I wanted it to be, but I thought it’s time to put it out there and see what people come up with. Have fun!
Please try to only use the comments on this blog post for development related questions!
Here’s the developer readme:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
DSfix Developer Readme ====================== This file is intended for developers who want to improve DSfix or use it as a base for other modifications. All the source code is released under the conditions of the GPLv3, except for - SuperFastHash - SMAA which have their own licensing terms included. Note that the code base is currently in quite a terrible state. TODO.txt lists some of the things that should be done to improve it in the "Cleanup" section. Also note that I would prefer for no one except myself to make binary releases of DSfix for now, simply to keep things easier to track for people and reduce confusion. Additionally, if you start working on some feature, I'd appreciate if you contacted me, so that we don't duplicate effort. - Peter Requirements ============ - Visual C++ - The DirectX SDK - Microsoft Detours (Express) 3 - DSfix must be compiled in the Release/Win32 config to work with the game File Overview ============= - The "DATA" folder contains the files for distribution, including .inis, effects and textures - "TODO.txt" contains a list of open (and closed) TODOs, look here if you want to find something to work on - "main.*" includes the main function and a few utilities - The "d3d9*" files implement d3d wrapping - The "dinput*" files are very straightforward dinput wrapping - "Detouring.*" files implement function overriding using the Detours library - "KeyActions.*" files implement keybindings, together with the Xmacro files "Keys.def" and "Actions.def" - "SaveManager.*" files implement save backup management - "WindowManager.*" files implement window management (cursor hiding & capturing, borderless fullscreen) - "RenderstateManager.*" is where most of the magic happens, implements detection and rerouting of the games' rendering pipeline state - "SMAA.*", "VSSAO.*", "GAUSS.*" and "Hud.*" are effects optionally used during rendering (derive from the base Effect) - "Textures.def" is a database of known texture hashes |
And here’s my current TODO file:
(I’ve been keeping this since 0.8 or so, lines starting with // are done)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
// - mouse cursor hiding/capturing // - increase DoF resolution // - further gaussian blur of high-res DoF targets to approximate intended degree of sharpness // - screen-space ambient occlusion using existing z data (rendertexture #3 after first pass!) // - integrate FXAA/SMAA (on framebuffer, pre-HUD, ~step 79-81) //- HUD toggle //- HUD scaling // + DrawIndexedPrimitiveUP for all non-text graphics // + DrawPrimitiveUp for text - fix the disappearing sun/moon issue (well, first find out what's causing it) + NOTE: only happens for vertical res > 720 // - improve performance with changed HUD (hit should be negligible, why isn't it?) // - configurable hotkeys - improve SSAO quality / support alternative implementations - variable rendering resolution (hysteresis thresholding, drop res when hitting ~ >30 ms frame time) // - fix window shrink after toggling borderless fullscreen multiple times - minimize/move initial loading window - efficiently reuse buffers when multiple effects are used - fix sporadic SMAA issue reported (first need to reproduce) - look into problems reported with save backup system - figure out where / when / how projection matrix is set (for aspect ratio fix and to know exact nearZ/farZ) // - texture override // - prefix checksums with 0 // - fix text cutoff at 1024x720 // - fix dynamic shadow cutoff - turn off SSAO when activating bonfire - make individual parts of HUD scale separately - save management with more than 1 GFWL account ========= HUD - separate scaling factors for different parts of the HUD - Bugs: + boss health bars + switching indicator (for weapons/spells/items) not scaled + curse symbol not scaled + subtitles + interaction with sun/moon + damage numbers ========= Cleanup - move Effect compilation to base class, with nice wrapper for setting defines - split texture handling part of renderstate manager into separate texture manager - create some kind of generic interface for the detection of different positions in the renderpipeling, use in renderstate manager |