Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 & textures
  • "TODO.txt" contains a list of open & closed TODOs, look here if you want to find something to work on
  • "main.*" includes the main function & 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" & "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 & rerouting of the games' rendering pipeline state
  • "SMAA.", "VSSAO.", "GAUSS." & "Hud." are effects optionally used during rendering (derive from the base Effect)
  • "Textures.def" is a database of known texture hashes Standardisation

Introduction


With a view towards improving file size/general code legibility as well as ensuring that the code all flows together as one; it becomes clear that guidelines need to be created in order to promote these values. please feel free to discuss these choices & make changes as & when needed to ensure that the largest number possible find the code legible & easy to use whilst also performing at its best.


Sectioning


When doing this please use underscores as they join together, creating a smooth, neat, connected line. ensure they only underline the length of the word & only use them above & below the section header to avoid confusion. done this way a section header need not have an upper gap. each section header should only take up one line, with an additional line above and below for the underscores.


Commenting:one line


Please comment using "//". using "/" & "/" for just one line adds unnecessary extra characters & is easier to break accidentally. do not leave a space before or after the mark used to denote a comment.


Commenting:two lines


Please comment "/" & "/". using "//" for multiple lines adds unnecessary extra characters. if required, "*" may be used to align text on lines below the topmost line along with a preceding space however only do this if necessary, otherwise do not use any spaces or other such characters for alignment. do not leave spaces around the comment marks.


Empty lines


Put simply, don't. it is rare that this would even be required.


Quoting


Please follow the author's example by using ""


Lists


Please follow the author's example by creating a section header (where applicable) & subsequently preceding each list item with "- ". when unable to use a section header please write a statement ending in ":".


Writing the word "and"


Please use "&". if it is required during a quote you may use "and"


Colons


Do not add a space following them.


Signatures


Please follow the the authors example by preceding a signature with "- "

About

(Unnoficial) Interceptor dll for the improvement of Dark Souls: Prepare to Die Edition

Resources

Stars

7 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages