

It can-in theory-be used to accomplish anything, but in practice this is often not feasible for large modern games due to the reverse engineering effort necessary to understand their code base to the degree required for meaningful alterations. In this process, some binary instructions in the original program are replaced with different ones, resulting in an altered behavior. Modifying the code of a running program directly in memory is the most powerful, but also most complex, form of modification. This difficulty is the reason why SweetFX works well with a great number of games: it simply changes the output image at the very end before it is presented on the monitor, and this point is easy to generically identify. Crucially, a library call or sequence of calls has to be determined which uniquely identifies what a program is doing at that given point in time. The largest challenge when writing an interceptor (beyond the mechanics of interception) is understanding the original program's behavior and determining how to alter it in order to achieve the desired effect. That alone would generally just break rendering-you also need to adjust rendering viewports, projection matrices, scissor rectangles and potentially shader parameters to make it work-but this is the basic idea. DSfix took this request, changed the resolution to whatever the user desired, and gave the subsequently generated surface back to Dark Souls.

In simplified terms, DS1 asked Direct3D for a 1024x720 surface to render the game to. As an example, think of Dark Souls 1 and DSFix. It then reports its return values-or entirely different ones-to the program. We'll now look at each approach and how it can be applied to Dark Souls 2.Īn interceptor, as the name suggests, intercepts the program's library calls, altering them before they reach the library. The more invasive the mod, the more difficult it is. These are ordered by increasing “invasiveness” of the procedure. While there are many ways to modify a game, they can generally be assigned to one of three categories based on their underlying approach: Consider it the successor to DSfix and DPfix-except its final goal is to work with any 3D game, not just Dark Souls 2. Then I'll detail the modifications I have implemented so far with a new tool I'm calling GeDoSaTo, which enables texture modding, arbitrary downsampling, and more. First, I'll provide a short overview of the general avenues available for PC game modding and how each applies to Dark Souls 2. Now it's time to look at the full extent of what can be achieved by modifying Dark Souls 2 on a deeper level.

My first two articles about Dark Souls 2 investigated the PC port's features and how generic PC tweaking tools like SweetFX can be used to further improve its graphics.
