From 41bcd3d705b7cacc3d2edc25d0ce114462af758e Mon Sep 17 00:00:00 2001 From: somewhatlurker <52014015+somewhatlurker@users.noreply.github.com> Date: Tue, 12 Jan 2021 13:39:54 +1100 Subject: [PATCH] remove amd tools from repo novidia has been converted to a regular included plugin already, and the shader patcher exists outside of this repo anyway now --- appveyor.yml | 65 ---- source-code/data/amd-tools/.gitignore | 3 - .../ARB Patcher/gamesettings/divaaft.py | 103 ----- .../gamesettings/divaaft_noskinning.py | 74 ---- .../AFT Shader Patcher/ARB Patcher/main.py | 240 ------------ .../AFT Shader Patcher/ARB Patcher/rules.py | 80 ---- .../AFT Shader Patcher/aft_shader_patcher.py | 121 ------ .../amd-tools/AFT Shader Patcher/pyfarc.py | 252 ------------ .../amd-tools/AFT Shader Patcher/xdelta3.exe | Bin 236032 -> 0 bytes source-code/data/amd-tools/README.txt | 365 ------------------ .../data/amd-tools/patch shaders py.bat | 1 - source-code/data/amd-tools/patch shaders.bat | 1 - 12 files changed, 1305 deletions(-) delete mode 100644 source-code/data/amd-tools/.gitignore delete mode 100644 source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft.py delete mode 100644 source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft_noskinning.py delete mode 100644 source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/main.py delete mode 100644 source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/rules.py delete mode 100644 source-code/data/amd-tools/AFT Shader Patcher/aft_shader_patcher.py delete mode 100644 source-code/data/amd-tools/AFT Shader Patcher/pyfarc.py delete mode 100644 source-code/data/amd-tools/AFT Shader Patcher/xdelta3.exe delete mode 100644 source-code/data/amd-tools/README.txt delete mode 100644 source-code/data/amd-tools/patch shaders py.bat delete mode 100644 source-code/data/amd-tools/patch shaders.bat diff --git a/appveyor.yml b/appveyor.yml index f16e305..3526670 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -19,20 +19,6 @@ after_build: md %TMP%\full\ram\ md %TMP%\full\ram\databank_template\ - - md %TMP%\amd-pack\ - - md %TMP%\amd-pack\plugins\ - - md "%TMP%\amd-pack\plugins\Novidia Shaders" - - md %TMP%\amd-pack\amd-tools\ - - md "%TMP%\amd-pack\amd-tools\AFT Shader Patcher Source" - - md "%TMP%\amd-pack\amd-tools\AFT Shader Patcher Source\ARB Patcher" - - md "%TMP%\amd-pack\amd-tools\AFT Shader Patcher Source\ARB Patcher\gamesettings" @@ -59,63 +45,12 @@ after_build: copy %APPVEYOR_BUILD_FOLDER%\source-code\data\ram\databank_template\*.dat %TMP%\full\ram\databank_template\ copy %APPVEYOR_BUILD_FOLDER%\source-code\data\patches\custom_freeplay_text_example.p %TMP%\full\patches\ - - copy %APPVEYOR_BUILD_FOLDER%\source-code\x64\%CONFIGURATION%\Novidia.dva %TMP%\amd-pack\plugins\ - - copy "%APPVEYOR_BUILD_FOLDER%\source-code\data\plugins\Novidia Shaders\*.*" "%TMP%\amd-pack\plugins\Novidia Shaders\" - - copy %APPVEYOR_BUILD_FOLDER%\source-code\data\amd-tools\*.* %TMP%\amd-pack\amd-tools\ - - copy "%APPVEYOR_BUILD_FOLDER%\source-code\data\amd-tools\AFT Shader Patcher\*.*" "%TMP%\amd-pack\amd-tools\AFT Shader Patcher Source\" - - copy "%APPVEYOR_BUILD_FOLDER%\source-code\data\amd-tools\AFT Shader Patcher\ARB Patcher\*.*" "%TMP%\amd-pack\amd-tools\AFT Shader Patcher Source\ARB Patcher\" - - copy "%APPVEYOR_BUILD_FOLDER%\source-code\data\amd-tools\AFT Shader Patcher\ARB Patcher\gamesettings\*.*" "%TMP%\amd-pack\amd-tools\AFT Shader Patcher Source\ARB Patcher\gamesettings\" cd %TMP%\full\ 7z a %APPVEYOR_BUILD_FOLDER%\PD-Loader-%CONFIGURATION%-AppVeyor.zip * - - cd %TMP%\amd-pack\amd-tools\ - - C:\Python38\python.exe -m pip install cx_freeze construct - - C:\Python38\Scripts\cxfreeze.exe "AFT Shader Patcher Source\aft_shader_patcher.py" --target-dir "AFT Shader Patcher" - - mkdir "AFT Shader Patcher\ARB Patcher" - - mkdir "AFT Shader Patcher\ARB Patcher\gamesettings" - - copy "AFT Shader Patcher Source\xdelta3.exe" "AFT Shader Patcher\" - - copy "AFT Shader Patcher Source\ARB Patcher\*.*" "AFT Shader Patcher\ARB Patcher\" - - copy "AFT Shader Patcher Source\ARB Patcher\gamesettings\*.*" "AFT Shader Patcher\ARB Patcher\gamesettings\" - - del /Q "AFT Shader Patcher Source\ARB Patcher\gamesettings" - - rmdir "AFT Shader Patcher Source\ARB Patcher\gamesettings" - - del /Q "AFT Shader Patcher Source\ARB Patcher" - - rmdir "AFT Shader Patcher Source\ARB Patcher" - - del /Q "AFT Shader Patcher Source" - - rmdir "AFT Shader Patcher Source" - - del "patch shaders py.bat" - - del ".gitignore" - - cd .. - - move amd-tools\README.txt AMD-README.txt - - 7z a %APPVEYOR_BUILD_FOLDER%\shader-dev-tool-%CONFIGURATION%-AppVeyor.zip * - artifacts: - path: PD-Loader-*.zip diff --git a/source-code/data/amd-tools/.gitignore b/source-code/data/amd-tools/.gitignore deleted file mode 100644 index f7823f9..0000000 --- a/source-code/data/amd-tools/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -venv/* -*.farc -*.vcdiff \ No newline at end of file diff --git a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft.py b/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft.py deleted file mode 100644 index 745e193..0000000 --- a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft.py +++ /dev/null @@ -1,103 +0,0 @@ -# gane-specific settings for diva arcade future tone -GAME_NAME = "Project DIVA Arcade: Future Tone" - -from re import compile as recompile - -# some skinning can't be done due to using NV parameter buffers, so use an otherwise unused texture instead. -VP_SKINNING_REGEX = recompile(r"INT TEMP _adr;\s*?(BUFFER4[^;]*?;)([\s\S]*?_mtxpal)") -VP_SKINNING_SUB = "TEMP _adr;\n#\\1 \nTEMP mtx_tmp, mtx_tmp1, mtx_tmp2;\\2" - -# load the address temp with a texture coordinate instead -# hardcoded to assume a 768*1 pixel texture -VP_SKINNING_REGEX_2 = recompile(r"(BUFFER4[\s\S]*?)CVT(?:.S32.F32)?\s*?(.*?),\s*?(.*?);") -VP_SKINNING_SUB_2 = "\\1MUL \\2, \\3, 0.0013037809647979;" #1/767 - -VP_SKINNING_REGEX_3 = recompile(r"(BUFFER4[\s\S]*?)(DP4 ([^;]*?), _mtxpal\[([^\]]*?\.x) \])") -VP_SKINNING_REGEX_3b = recompile(r"(BUFFER4[\s\S]*?)(DP4 ([^;]*?), _mtxpal\[([^\]]*?\.y) \])") -VP_SKINNING_REGEX_3c = recompile(r"(BUFFER4[\s\S]*?)(DP4 ([^;]*?), _mtxpal\[([^\]]*?\.z) \])") -VP_SKINNING_REGEX_3d = recompile(r"(BUFFER4[\s\S]*?)(DP4 ([^;]*?), _mtxpal\[([^\]]*?\.w) \])") -VP_SKINNING_SUB_3 = "\\1TEX mtx_tmp, \\4, texture[8], 1D; ADD \\4, \\4, 0.0013037809647979; TEX mtx_tmp1, \\4, texture[8], 1D; ADD \\4, \\4, 0.0013037809647979; TEX mtx_tmp2, \\4, texture[8], 1D; DP4 \\3, _mtxpal[\\4+ ]" - -VP_SKINNING_REGEX_4 = recompile(r"(BUFFER4[\s\S]*?)_mtxpal\[([^\]]*?\.\S)\+?(\s|\d)\]") -VP_SKINNING_SUB_4 = "\\1mtx_tmp\\3" - - -# some kind of effect (scrunching up or stretching?) in tights vp shaders starting with 11 that partially uses skinning of normals... -# works much the same as the regular vp skinning -# make these run before VP_SKINNING_REGEX_4 -#TIGHTS_SKINNING_EFFECT_REGEX = recompile(r"(BUFFER4[\s\S]*?)SUBC .*?, vertex.attrib\[15\], .*?;\s*?SUBC1 tmp, vertex.attrib\[15\], .*?;[\s\S]*?XPD .*?, .*?, .*?;\s*?DP3_SAT (.*?), .*?, .*?;") -#TIGHTS_SKINNING_EFFECT_SUB = "\\1MOV \\2, 0;" -TIGHTS_SKINNING_EFFECT_REGEX = recompile(r"(BUFFER4[\s\S]*?)CVT(?:.S32.F32)?\s*?(.*?),\s*?(.*?);") -TIGHTS_SKINNING_EFFECT_SUB = "\\1MUL \\2, \\3, 0.0013037809647979;" -#TIGHTS_SKINNING_EFFECT_REGEX_2 = recompile(r"(BUFFER4[\s\S]*?)(IF GT1.y;[\s\S]*?|)(DP3 ([^;]*?), _mtxpal\[([^\]]*?\.x) \])(?![\s\S]*MUL _adr)") -#TIGHTS_SKINNING_EFFECT_REGEX_2b = recompile(r"(BUFFER4[\s\S]*?)(IF GT1.y;[\s\S]*?|)(DP3 ([^;]*?), _mtxpal\[([^\]]*?\.y) \])(?![\s\S]*MUL _adr)") -#TIGHTS_SKINNING_EFFECT_SUB_2 = "\\1TEX mtx_tmp, \\5, texture[8], 1D; ADD \\5, \\5, 0.0013037809647979; TEX mtx_tmp1, \\5, texture[8], 1D; ADD \\5, \\5, 0.0013037809647979; TEX mtx_tmp2, \\5, texture[8], 1D; \\2 DP3 \\4, _mtxpal[\\5+ ]" -TIGHTS_SKINNING_EFFECT_REGEX_2 = recompile(r"(BUFFER4[\s\S]*?)(DP3 ([^;]*?), _mtxpal\[([^\]]*?\.x) \])(?![\s\S]*MUL _adr)") -TIGHTS_SKINNING_EFFECT_SUB_2 = "\\1TEX mtx_tmp, \\4, texture[8], 1D; ADD \\4, \\4, 0.0013037809647979; TEX mtx_tmp1, \\4, texture[8], 1D; ADD \\4, \\4, 0.0013037809647979; TEX mtx_tmp2, \\4, texture[8], 1D; DP3 \\3, _mtxpal[\\4+ ]" -TIGHTS_SKINNING_EFFECT_REGEX_3 = recompile(r"(BUFFER4[\s\S]*?)(DP3 ([^;]*?), _mtxpal\[([^\]]*?\.y) \])(?![\s\S]*MUL _adr)") -TIGHTS_SKINNING_EFFECT_SUB_3 = "\\1TEX mtx_tmp, \\4, texture[8], 1D; DP3 \\3, _mtxpal[\\4+ ]" -TIGHTS_SKINNING_EFFECT_REGEX_4 = recompile(r"(BUFFER4[\s\S]*?)(DP3 ([^;]*?), _mtxpal\[([^\]]*?\.y)\+1\])(?![\s\S]*MUL _adr)") -TIGHTS_SKINNING_EFFECT_SUB_4 = "\\1ADD \\4, \\4, 0.0013037809647979; TEX mtx_tmp1, \\4, texture[8], 1D; ADD \\4, \\4, 0.0013037809647979; TEX mtx_tmp2, \\4, texture[8], 1D; DP3 \\3, _mtxpal[\\4+1]" - - - -# some skinning just needs some branching fixup for AMD BRA working different (needs a target per branch instruction apparently) -SKIN_BRA_REGEX = recompile(r"BRA skinning_(?:\S*)end (\(.*?\.y\))*?\s*?;") -SKIN_BRA_SUB = "BRA sk_end1 \\1;" -SKIN_BRA_REGEX_2 = recompile(r"BRA skinning_(?:\S*)end (\(.*?\.z\))*?\s*?;") -SKIN_BRA_SUB_2 = "BRA sk_end2 \\1;" -SKIN_BRA_REGEX_3 = recompile(r"BRA skinning_(?:\S*)end (\(.*?\.w\))*?\s*?;") -SKIN_BRA_SUB_3 = "BRA sk_end3 \\1;" - -SKIN_BRA_TGT_REGEX = recompile(r"skinning_(?:\S*)end:") -SKIN_BRA_TGT_SUB = "\nsk_end1:\nsk_end2:\nsk_end3:\n" - - -MATCH_FP_FNAME = recompile(r".*fp") -MATCH_VP_FNAME = recompile(r".*vp") -MATCH_ALL_FNAME = recompile(r".*") -MATCH_FONT_FNAME = recompile(r"font.*fp") -MATCH_TIGHTS_FNAME = recompile(r"tights.*vp") - -# fourth param: apply continuously until no more matches are found -fix_repls = [ - (MATCH_VP_FNAME, VP_SKINNING_REGEX, VP_SKINNING_SUB, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_2, VP_SKINNING_SUB_2, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_3, VP_SKINNING_SUB_3, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_3b, VP_SKINNING_SUB_3, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_3c, VP_SKINNING_SUB_3, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_3d, VP_SKINNING_SUB_3, False), - (MATCH_TIGHTS_FNAME, TIGHTS_SKINNING_EFFECT_REGEX, TIGHTS_SKINNING_EFFECT_SUB, False), - (MATCH_TIGHTS_FNAME, TIGHTS_SKINNING_EFFECT_REGEX_2, TIGHTS_SKINNING_EFFECT_SUB_2, False), - (MATCH_TIGHTS_FNAME, TIGHTS_SKINNING_EFFECT_REGEX_3, TIGHTS_SKINNING_EFFECT_SUB_3, False), - (MATCH_TIGHTS_FNAME, TIGHTS_SKINNING_EFFECT_REGEX_4, TIGHTS_SKINNING_EFFECT_SUB_4, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_4, VP_SKINNING_SUB_4, True), - (MATCH_VP_FNAME, SKIN_BRA_REGEX, SKIN_BRA_SUB, False), - (MATCH_VP_FNAME, SKIN_BRA_REGEX_2, SKIN_BRA_SUB_2, False), - (MATCH_VP_FNAME, SKIN_BRA_REGEX_3, SKIN_BRA_SUB_3, False), - (MATCH_VP_FNAME, SKIN_BRA_TGT_REGEX, SKIN_BRA_TGT_SUB, False), -] - - -# use to open a differnt file instead of the original shader (eg. to replace with an easier-to-patch variant -def filename_filter(fname): - if fname == 'sss_filter.130.fp': - return 'sss_filter.120.fp' - elif fname == 'sss_filter.131.fp': - return 'sss_filter.121.fp' - else: - return fname - - -# use to tweak reasults after patching -def post_filter(fname, f_full): - f_full = f_full.replace('\nBUFFER4', '\n#BUFFER4') - - # fix tex sampler offsets - # diva has something we can use for pixel size (program.local[0]), but it isn't in fonts so they get an approximation instead - if MATCH_FONT_FNAME.match(fname): - f_full = f_full.replace('{ 0.00078, 0.0014 }; ADD tex_offset_coord', '0.00035; ADD tex_offset_coord') - else: - f_full = f_full.replace('{ 0.00078, 0.0014 }; ADD tex_offset_coord', 'program.local[0]; ADD tex_offset_coord') - - return f_full \ No newline at end of file diff --git a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft_noskinning.py b/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft_noskinning.py deleted file mode 100644 index d038ac7..0000000 --- a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/gamesettings/divaaft_noskinning.py +++ /dev/null @@ -1,74 +0,0 @@ -# gane-specific settings for diva arcade future tone -GAME_NAME = "Project DIVA Arcade: Future Tone" - -from re import compile as recompile - -# some skinning can't be done due to using NV parameter buffers, so just disable it. -VP_SKINNING_REGEX = recompile(r"(BUFFER4[\s\S]*?)MOV (.*?).w, 1; SUBC _tmp1, vertex.attrib\[15\], (-1|255); (.*?) IF NE.y; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].y, \2; (.*?) MAD (.*?).xyz, _tmp0, vertex.attrib\[1\].y, \7; (.*?) MAD (.*?).xyz, _tmp0, vertex.attrib\[1\].y, \9; IF NE.z; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].z, \2; (.*?) MAD \7.xyz, _tmp0, vertex.attrib\[1\].z, \7; (.*?) MAD \9.xyz, _tmp0, vertex.attrib\[1\].z, \9; IF NE.w; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].w, \2; (.*?) MAD \7.xyz, _tmp0, vertex.attrib\[1\].w, \7; (.*?) MAD \9.xyz, _tmp0, vertex.attrib\[1\].w, \9; (?:ENDIF; ENDIF; ENDIF;|.*:)") -VP_SKINNING_SUB = "\\1MOV \\2.w, 1; MOV \\2.xyz, vertex.position; MOV \\7, vertex.normal; MOV \\9, vertex.attrib[6];" - -VP_SKINNING_REGEX_2 = recompile(r"(BUFFER4[\s\S]*?)MOV (.*?).w, 1; SUBC _tmp1, vertex.attrib\[15\], (-1|255); (.*?) IF NE.y; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].y, \2; (.*?) MAD (.*?).xyz, _tmp0, vertex.attrib\[1\].y, \7; IF NE.z; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].z, \2; (.*?) MAD \7.xyz, _tmp0, vertex.attrib\[1\].z, \7; IF NE.w; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].w, \2; (.*?) MAD \7.xyz, _tmp0, vertex.attrib\[1\].w, \7; (?:ENDIF; ENDIF; ENDIF;|.*:)") -VP_SKINNING_SUB_2 = "\\1MOV \\2.w, 1; MOV \\2.xyz, vertex.position; MOV \\7, vertex.normal;" - -VP_SKINNING_REGEX_3 = recompile(r"(BUFFER4[\s\S]*?)MOV (.*?).w, 1; SUBC _tmp1, vertex.attrib\[15\], (-1|255); (.*?) IF NE.y; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].y, \2; IF NE.z; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].z, \2; IF NE.w; (.*?) MAD \2.xyz, _tmp0, vertex.attrib\[1\].w, \2; (?:ENDIF; ENDIF; ENDIF;|.*:)") -VP_SKINNING_SUB_3 = "\\1MOV \\2.w, 1; MOV \\2.xyz, vertex.position;" - - -# some kind of effect (scrunching up or stretching?) in tights shaders starting with 11 that partially uses skinning of normals... let's just pretend it always results in 0 -TIGHTS_SKINNING_EFFECT_REGEX = recompile(r"(BUFFER4[\s\S]*?)SUBC .*?, vertex.attrib\[15\], .*?;\s*?SUBC1 tmp, vertex.attrib\[15\], .*?;[\s\S]*?XPD .*?, .*?, .*?;\s*?DP3_SAT (.*?), .*?, .*?;") -TIGHTS_SKINNING_EFFECT_SUB = "\\1MOV \\2, 0;" - - -# some skinning just needs some branching fixup for AMD BRA working different (needs a target per branch instruction apparently) -SKIN_BRA_REGEX = recompile(r"BRA skinning_(?:\S*)end (\(.*?\.y\))*?\s*?;") -SKIN_BRA_SUB = "BRA sk_end1 \\1;" -SKIN_BRA_REGEX_2 = recompile(r"BRA skinning_(?:\S*)end (\(.*?\.z\))*?\s*?;") -SKIN_BRA_SUB_2 = "BRA sk_end2 \\1;" -SKIN_BRA_REGEX_3 = recompile(r"BRA skinning_(?:\S*)end (\(.*?\.w\))*?\s*?;") -SKIN_BRA_SUB_3 = "BRA sk_end3 \\1;" - -SKIN_BRA_TGT_REGEX = recompile(r"skinning_(?:\S*)end:") -SKIN_BRA_TGT_SUB = "\nsk_end1:\nsk_end2:\nsk_end3:\n" - - -MATCH_FP_FNAME = recompile(r".*fp") -MATCH_VP_FNAME = recompile(r".*vp") -MATCH_ALL_FNAME = recompile(r".*") -MATCH_FONT_FNAME = recompile(r"font.*fp") -MATCH_TIGHTS_FNAME = recompile(r"tights.*vp") - -# fourth param: apply continuously until no more matches are found -fix_repls = [ - (MATCH_VP_FNAME, VP_SKINNING_REGEX, VP_SKINNING_SUB, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_2, VP_SKINNING_SUB_2, False), - (MATCH_VP_FNAME, VP_SKINNING_REGEX_3, VP_SKINNING_SUB_3, False), - (MATCH_TIGHTS_FNAME, TIGHTS_SKINNING_EFFECT_REGEX, TIGHTS_SKINNING_EFFECT_SUB, False), - (MATCH_VP_FNAME, SKIN_BRA_REGEX, SKIN_BRA_SUB, False), - (MATCH_VP_FNAME, SKIN_BRA_REGEX_2, SKIN_BRA_SUB_2, False), - (MATCH_VP_FNAME, SKIN_BRA_REGEX_3, SKIN_BRA_SUB_3, False), - (MATCH_VP_FNAME, SKIN_BRA_TGT_REGEX, SKIN_BRA_TGT_SUB, False), -] - - -# use to open a differnt file instead of the original shader (eg. to replace with an easier-to-patch variant -def filename_filter(fname): - if fname == 'sss_filter.130.fp': - return 'sss_filter.120.fp' - elif fname == 'sss_filter.131.fp': - return 'sss_filter.121.fp' - else: - return fname - - -# use to tweak reasults after patching -def post_filter(fname, f_full): - f_full = f_full.replace('\nBUFFER4', '\n#BUFFER4') - - # fix tex sampler offsets - # diva has something we can use for pixel size (program.local[0]), but it isn't in fonts so they get an approximation instead - if MATCH_FONT_FNAME.match(fname): - f_full = f_full.replace('{ 0.00078, 0.0014 }; ADD tex_offset_coord', '0.00035; ADD tex_offset_coord') - else: - f_full = f_full.replace('{ 0.00078, 0.0014 }; ADD tex_offset_coord', 'program.local[0]; ADD tex_offset_coord') - - return f_full \ No newline at end of file diff --git a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/main.py b/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/main.py deleted file mode 100644 index ecc956c..0000000 --- a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/main.py +++ /dev/null @@ -1,240 +0,0 @@ -from rules import * - -def patch_shader(fname, f_lines, game_settings_module=None, enable_print_warnings=True): - f_lines[0] += "#" + fname +"\n" - - - # do attrib, output, param simplification and replace header tags - attribs = {} - outputs = {} - params = {} - - for i in range(0, len(f_lines)): - # this inlining stuff is only really needed for vp, but :shrug: - no_repl = False - - m = ATTRIB_REGEX.match(f_lines[i]) - while m: - attribs[m.group(3)] = m.group(4) - f_lines[i] = ATTRIB_REGEX.sub('#\\1 \n', f_lines[i], count=1) - no_repl = True - m = ATTRIB_REGEX.match(f_lines[i]) - - m = OUTPUT_REGEX.match(f_lines[i]) - while m: - outputs[m.group(3)] = m.group(4) - f_lines[i] = OUTPUT_REGEX.sub('#\\1 \n', f_lines[i], count=1) - no_repl = True - m = OUTPUT_REGEX.match(f_lines[i]) - - # and not needed at all for PARAMs in the end, but :shrug: again - m = PARAM_REGEX.match(f_lines[i]) - while m: - params[m.group(3)] = m.group(4) - f_lines[i] = PARAM_REGEX.sub('#\\1 \n', f_lines[i], count=1) - no_repl = True - m = PARAM_REGEX.match(f_lines[i]) - - if no_repl: - continue - - replace_tokens = attribs.copy() - replace_tokens.update(outputs) - replace_tokens.update(params) - - # sort from longest to shortest to minimize risk of names that are substrings of others causing issues - for k in sorted(replace_tokens.keys(), reverse=True, key=lambda s: len(s)): - # look for specific preceding characters to not replace in the middle of a name - f_lines[i] = f_lines[i].replace(' ' + k, ' ' + replace_tokens[k]) - f_lines[i] = f_lines[i].replace('-' + k, '-' + replace_tokens[k]) - f_lines[i] = f_lines[i].replace('{' + k, '{' + replace_tokens[k]) - - # options are required for conditional stuff... - # tysm nezarn for teaching me this because otherwise the patch would never be anywhere near as complete - f_lines[i] = NVFP_HEADER_REGEX.sub("!!ARBfp1.0\nOPTION NV_fragment_program2;", f_lines[i]) - f_lines[i] = NVVP_HEADER_REGEX.sub("!!ARBvp1.0\nOPTION NV_vertex_program3;", f_lines[i]) - - f_full = ''.join(f_lines) - - f_full = UNUSED_PARAM_REGEX.sub("#\\1 \n", f_full) - - - # add a temp vars for NRM and SSG replacements before their first use - f_full = f_full.replace('NRM ', 'TEMP nrm_tmp; NRM ', 1) - f_full = f_full.replace('SSG ', 'TEMP ssg_tmp1, ssg_tmp2; SSG ', 1) - # this needs to use the regex to match because it isn't just a single instruction - f_full = SAMPLER_OFFSET_REGEX.sub('TEMP tex_offset_coord; \\g<0>', f_full, count=1) - - for r in fix_repls: - if r[0].match(fname): - if r[3]: # r[3]: apply until no matches - while r[1].search(f_full): - f_full = r[1].sub(r[2], f_full) - else: - f_full = r[1].sub(r[2], f_full) - - if game_settings_module and game_settings_module.fix_repls: - for r in game_settings_module.fix_repls: - if r[0].match(fname): - if r[3]: # r[3]: apply until no matches - while r[1].search(f_full): - f_full = r[1].sub(r[2], f_full) - else: - f_full = r[1].sub(r[2], f_full) - - - f_full = f_full.replace('INT TEMP ', 'TEMP ') - - if game_settings_module and game_settings_module.post_filter: - f_full = game_settings_module.post_filter(fname, f_full) - - - bad_instr = BAD_INSTR_REGEX.search(f_full) - if bad_instr: - if enable_print_warnings: - print ('\rWarning -- unpatched known bad instruction(s) in {} -- first: {}'.format(fname, bad_instr.group(1))) - f_full = BAD_INSTR_REGEX.sub("#\\1 \n", f_full) - - f_full = f_full.replace('\r', '') - - return f_full - -if __name__ == '__main__': - from os import listdir, makedirs, get_terminal_size - from os.path import join as joinpath, splitext, isfile, exists, dirname - from re import compile as recompile - import sys - import importlib, importlib.util - - if getattr(sys, 'frozen', False): - datadir = dirname(sys.executable) - else: - datadir = dirname(__file__) - - gamesettings_dir = joinpath(datadir, 'gamesettings') - - def get_args(): - # make a list of game settings modules - game_modules_list = [f[:-3] for f in listdir(gamesettings_dir) if isfile(joinpath(gamesettings_dir, f)) and splitext(f)[1] == '.py'] - - import argparse - parser = argparse.ArgumentParser(description='AMD ARB Patcher: An attempt at converting Nvidia-only ARB shaders to work on AMD. Patching techniques from Nezarn; implementation by somewhatlurker.') - parser.add_argument('-i', '--in_dir', default='shader in', help='input directory containing .vp and .fp files (default: "shader in")') - parser.add_argument('-o', '--out_dir', default='shader patched', help='output directory (default: "shader patched")') - parser.add_argument('-f', '--file_filter', default=None, help='only process files that match this filter (regex)') - parser.add_argument('-g', '--game_settings', default=None, choices=game_modules_list, help='game-specific settings to load') - - parser.add_argument('--list_games', action='store_true', help='list game names for game-specific settings options instead of patching shaders') - - return parser.parse_args() - - def print_game_modules(): - # make a list of game settings modules - game_modules_list = [f[:-3] for f in listdir(gamesettings_dir) if isfile(joinpath(gamesettings_dir, f)) and splitext(f)[1] == '.py'] - - for game in game_modules_list: - game_settings_spec = importlib.util.spec_from_file_location(game, joinpath(gamesettings_dir, game + '.py')) - game_settings_module = importlib.util.module_from_spec(game_settings_spec) - game_settings_spec.loader.exec_module(game_settings_module) - - if game_settings_module.GAME_NAME: - full_name = game_settings_module.GAME_NAME - else: - full_name = 'Unknown' - - print ('{}: {}'.format(game, full_name)) - - - args = get_args() - - if args.list_games: - print_game_modules() - sys.exit() - - print("AMD ARB Patcher") - print("===============") - print("Patching techniques from Nezarn; implementation by somewhatlurker") - print("=================================================================") - print("Input directory: '{}'".format(args.in_dir)) - print("Output directory: '{}'".format(args.out_dir)) - - if args.game_settings: - game_settings_spec = importlib.util.spec_from_file_location(args.game_settings, joinpath(gamesettings_dir, args.game_settings + '.py')) - game_settings_module = importlib.util.module_from_spec(game_settings_spec) - game_settings_spec.loader.exec_module(game_settings_module) - if game_settings_module.GAME_NAME: - print("Using game-specific settings for {}".format(game_settings_module.GAME_NAME)) - else: - print("Using game-specific settings for {}".format(args.game_settings)) - else: - game_settings_module = None - - IN_DIR = args.in_dir - OUT_DIR = args.out_dir - - if not exists(IN_DIR): - print ("Directory '{}' does not exist. Aborting".format(IN_DIR)) - sys.exit() - elif isfile(IN_DIR): - print ("'{}' is not a directory. Aborting".format(IN_DIR)) - sys.exit() - - if exists(OUT_DIR): - if isfile(OUT_DIR): - print ("'{}' already exists but is not a directory. Aborting".format(OUT_DIR)) - sys.exit() - else: - makedirs(OUT_DIR) - - if args.file_filter: - file_filter = recompile(args.file_filter) - else: - file_filter = None - - indir_list = listdir(IN_DIR) - - if file_filter: - indir_list = [f for f in indir_list if file_filter.match(f)] - - proc_count = 0 - - last_status_len = 0 - - for fname in indir_list: - proc_count += 1 - progress_val = proc_count / len(indir_list) - progress_cnt_X = int(progress_val * 20) - - status_str = '\r[{e:{s1}<{n1}}{e:{s2}<{n2}}]'.format(e='', s1='X', s2='-', n1=progress_cnt_X, n2=20-progress_cnt_X) - status_str += ' {:.2%}'.format(progress_val) - status_str += ' ' + fname - - try: - terminal_width = get_terminal_size()[0] - except: - terminal_width = 120 - - if len(status_str) > terminal_width: - status_str = status_str[:terminal_width-3] + '...' - - # fix characters left on screen from a previous longer line - # (without cursor staying off to the side) - this_status_len = len(status_str) - if this_status_len < last_status_len: - status_str = '{: <{l}}'.format(status_str, l=last_status_len) - last_status_len = this_status_len - - print (status_str, end='') - - if game_settings_module and game_settings_module.filename_filter: - openname = game_settings_module.filename_filter(fname) - else: - openname = fname - - with open(joinpath(IN_DIR, openname), 'r') as f: - f_lines = f.readlines() - - f_full = patch_shader(fname, f_lines, game_settings_module, True) - - with open(joinpath(OUT_DIR, fname), 'wb') as f: - f.write(f_full.encode('utf-8')) diff --git a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/rules.py b/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/rules.py deleted file mode 100644 index 162ecdd..0000000 --- a/source-code/data/amd-tools/AFT Shader Patcher/ARB Patcher/rules.py +++ /dev/null @@ -1,80 +0,0 @@ -# regexes and config info is stored here to reduce clutter in main script -from re import compile as recompile - -# inline these because... idk -# ATTRIB and OUTPUT must be inlined for vp tho -ATTRIB_REGEX = recompile(r"(? terminal_width: - status_str = status_str[:terminal_width-3] + '...' - - # fix characters left on screen from a previous longer line - # (without cursor staying off to the side) - this_status_len = len(status_str) - if this_status_len < last_status_len: - status_str = '{: <{l}}'.format(status_str, l=last_status_len) - last_status_len = this_status_len - - print (status_str, end='') - - if game_settings_module and game_settings_module.filename_filter: - openname = game_settings_module.filename_filter(fname) - else: - openname = fname - - f_lines = farcdata['files'][openname]['data'].decode('utf-8').splitlines(keepends=True) - - f_full = ArbPatcher.patch_shader(fname, f_lines, game_settings_module, True) - - farcdata['files'][fname]['data'] = f_full.encode('utf-8') - -print('') - -if args.compress: - farcdata['farc_type'] = 'FArC' - -with open(args.out_farc, 'wb') as f: - pyfarc.to_stream(farcdata, f, no_copy=True) - -if args.xdelta: - import subprocess - - # make paths absolute before running this (actually not needed) - #args.in_farc = abspath(args.in_farc) - #args.out_farc = abspath(args.out_farc) - - subprocess.run([joinpath(datadir, 'xdelta3.exe'), '-e', '-f', '-S', 'none', '-s', args.in_farc, args.out_farc, joinpath(dirname(args.out_farc), in_farc_crc_str + '.vcdiff')], ) - print ("Generated '{}.vcdiff'".format(in_farc_crc_str)) diff --git a/source-code/data/amd-tools/AFT Shader Patcher/pyfarc.py b/source-code/data/amd-tools/AFT Shader Patcher/pyfarc.py deleted file mode 100644 index e598113..0000000 --- a/source-code/data/amd-tools/AFT Shader Patcher/pyfarc.py +++ /dev/null @@ -1,252 +0,0 @@ -""" -pyfarc reader and writer for farc archives -supports Farc and FarC only -""" - -from construct import Struct, Const, Int32ub, Int32sb, RepeatUntil, CString, Pointer, Bytes, Padding -from copy import deepcopy -import gzip - -_FArc_format = Struct( - "signature" / Const(b'FArc'), - "header_size" / Int32ub, # doesn't include signature or header_size - "alignment" / Int32sb, - "files" / RepeatUntil(lambda obj,lst,ctx: ctx._io.tell() - 7 > ctx.header_size, Struct( - "name" / CString("utf8"), - "pointer" / Int32ub, - "size" / Int32ub, - "data" / Pointer(lambda this: this.pointer, Bytes(lambda this: this.size)) - )), - #Padding(lambda this: this.alignment - (this._io.tell() % this.alignment) if this._io.tell() % this.alignment else 0) -) - -_FArC_format = Struct( - "signature" / Const(b'FArC'), - "header_size" / Int32ub, # doesn't include signature or header_size - "alignment" / Int32sb, - "files" / RepeatUntil(lambda obj,lst,ctx: ctx._io.tell() - 7 > ctx.header_size, Struct( - "name" / CString("utf8"), - "pointer" / Int32ub, - "compressed_size" / Int32ub, - "uncompressed_size" / Int32ub, - "data" / Pointer(lambda this: this.pointer, Bytes(lambda this: this.compressed_size)) - )), - #Padding(lambda this: this.alignment - (this._io.tell() % this.alignment) if this._io.tell() % this.alignment else 0) -) - -_farc_types = { - 'FArc': { - 'remarks': 'basic farc format', - 'struct': _FArc_format, - 'compression_support': False, - 'compression_forced': False, - 'fixed_header_size': 4, - 'files_header_fields_size': 8, - }, - 'FArC': { - 'remarks': 'farc with compression support', - 'struct': _FArC_format, - 'compression_support': True, - 'compression_forced': True, - 'fixed_header_size': 4, - 'files_header_fields_size': 12, - }, -} - -class UnsupportedFarcTypeException(Exception): - pass - -def check_farc_type(t): - """Checks if a farc type is supported and returns a remarks string. Raises UnsupportedFarcTypeException if not supported.""" - - if not t in _farc_types: - raise UnsupportedFarcTypeException("{} type not supported".format(t)) - - return _farc_types[t]['remarks'] - - -def _files_header_size_calc(files, farc_type): - """Sums the size of the files header section for the given files and farc_type data.""" - - size = 0 - for fname, info in files.items(): - size += len(fname) + 1 - size += farc_type['files_header_fields_size'] - return size - -def _prep_files(files, alignment, farc_type): - """Gets files ready for writing by compressing them and calculating pointers.""" - - def _compress_files(files, farc_type): - for fname, info in files.items(): - info['data_compressed'] = gzip.compress(info['data'], mtime=39) # set mtime for reproducible output - if (not farc_type['compression_forced']) and (len(info['data_compressed']) >= len(info['data'])): - info['data_compressed'] = info['data'] - - def _set_files_pointers(files, alignment, farc_type): - pos = 8 + farc_type['fixed_header_size'] + _files_header_size_calc(files, farc_type) - - for fname, info in files.items(): - if pos % alignment: pos += alignment - (pos % alignment) - info['pointer'] = pos - if 'data_compressed' in info: - pos += len(info['data_compressed']) - else: - pos += len(info['data']) - - if farc_type['compression_support']: - _compress_files(files, farc_type) - _set_files_pointers(files, alignment, farc_type) - -def to_bytes(data, alignment=1, no_copy=False): - """ - Converts a farc dictionary (formatted like the dictionary returned by from_bytes) to an in-memory bytes object containing farc data. - - Set no_copy to True for a speedup and memory usage reduction if you don't mind your input data being contaminated. - """ - - magic_str = data['farc_type'] - check_farc_type(magic_str) - farc_type = _farc_types[magic_str] - - if no_copy: - files = data['files'] - else: - files = deepcopy(data['files']) - _prep_files(files, alignment, farc_type) - - if farc_type['compression_support']: - return farc_type['struct'].build(dict( - header_size=farc_type['fixed_header_size'] + _files_header_size_calc(files, farc_type), - alignment=alignment, - files=[dict( - name=fname, - pointer=info['pointer'], - compressed_size=len(info['data_compressed']), - uncompressed_size=len(info['data']), - data=info['data_compressed'] - ) for fname, info in files.items()] - )) - else: - return farc_type['struct'].build(dict( - header_size=farc_type['fixed_header_size'] + _files_header_size_calc(files, farc_type), - alignment=alignment, - files=[dict( - name=fname, - pointer=info['pointer'], - size=len(info['data']), - data=info['data'] - ) for fname, info in files.items()] - )) - -def to_stream(data, stream, alignment=1, no_copy=False): - """ - Converts a farc dictionary (formatted like the dictionary returned by from_stream) to farc data and writes it to a stream. - - Set no_copy to True for a speedup and memory usage reduction if you don't mind your input data being contaminated. - """ - - magic_str = data['farc_type'] - check_farc_type(magic_str) - farc_type = _farc_types[magic_str] - - if no_copy: - files = data['files'] - else: - files = deepcopy(data['files']) - _prep_files(files, alignment, farc_type) - - if farc_type['compression_support']: - return farc_type['struct'].build_stream(dict( - header_size=farc_type['fixed_header_size'] + _files_header_size_calc(files, farc_type), - alignment=alignment, - files=[dict( - name=fname, - pointer=info['pointer'], - compressed_size=len(info['data_compressed']), - uncompressed_size=len(info['data']), - data=info['data_compressed'] - ) for fname, info in files.items()] - ), stream) - else: - return farc_type['struct'].build_stream(dict( - header_size=farc_type['fixed_header_size'] + _files_header_size_calc(files, farc_type), - alignment=alignment, - files=[dict( - name=fname, - pointer=info['pointer'], - size=len(info['data']), - data=info['data'] - ) for fname, info in files.items()] - ), stream) - - -def _parsed_to_dict(farcdata, farc_type): - """Converts the raw construct data to our standard dictionary format.""" - - files = {} - - if farc_type['compression_support']: - for f in farcdata['files']: - if farc_type['compression_forced'] or (f['uncompressed_size'] != f['compressed_size']): - data = gzip.decompress(f['data']) - else: - data = f['data'] - files[f['name']] = {'data': data} - else: - for f in farcdata['files']: - data = f['data'] - files[f['name']] = {'data': data} - - return {'farc_type': farcdata['signature'].decode('ascii'), 'files': files} - -def from_bytes(b): - """Converts farc data from bytes to a dictionary.""" - - magic_str = b[:4].decode('ascii') - check_farc_type(magic_str) - farc_type = _farc_types[magic_str] - - farcdata = farc_type['struct'].parse(b) - return _parsed_to_dict(farcdata, farc_type) - -def from_stream(s): - """Converts farc data from a stream to a dictionary.""" - - pos = s.tell() - magic_str = s.read(4).decode('ascii') - check_farc_type(magic_str) - farc_type = _farc_types[magic_str] - s.seek(pos) - - farcdata = farc_type['struct'].parse_stream(s) - return _parsed_to_dict(farcdata, farc_type) - - -#test_farc = {'farc_type': 'FArc', 'files': {'aaa': {'data': b'test1'}, 'bbb': {'data': b'test2'}, 'ccc': {'data': b'aaaaaaaaaaaaaaaaaaaaaaaa'}}} -#test_farc = {'farc_type': 'FArC', 'files': {'aaa': {'data': b'test1'}, 'bbb': {'data': b'test2'}, 'ccc': {'data': b'aaaaaaaaaaaaaaaaaaaaaaaa'}}} -#print (test_farc) - -#test_bytes = to_bytes(test_farc, alignment=16) -#print (test_bytes) -#print (from_bytes(test_bytes)) - -#with open('test.farc', 'wb') as f: -# to_stream(test_farc, f, alignment=16) -#with open('test.farc', 'rb') as f: -# print (from_stream(f)) - -#with open('shader_amd.farc', 'rb') as f: -# shaderfarc = from_stream(f) -#with open('shader_amd_out.farc', 'wb') as f: -# to_stream(shaderfarc, f, alignment=16, no_copy=True) - -#with open('shader_amd_compressed.farc', 'rb') as f: -# shaderfarc = from_stream(f) -#with open('shader_amd_out_compressed.farc', 'wb') as f: -# to_stream(shaderfarc, f, alignment=1, no_copy=True) - -#with open('fontmap.farc', 'rb') as f: -# fontmapfarc = from_stream(f) -#with open('fontmap_out.farc', 'wb') as f: -# to_stream(fontmapfarc, f, alignment=1, no_copy=True) \ No newline at end of file diff --git a/source-code/data/amd-tools/AFT Shader Patcher/xdelta3.exe b/source-code/data/amd-tools/AFT Shader Patcher/xdelta3.exe deleted file mode 100644 index f3532d4c7a32f7dc7fcc20ac53d9e1b517ba1557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236032 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 z 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̌Iz89>3kbkyR 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 C3&#ln diff --git a/source-code/data/amd-tools/README.txt b/source-code/data/amd-tools/README.txt deleted file mode 100644 index 4eaf71e..0000000 --- a/source-code/data/amd-tools/README.txt +++ /dev/null @@ -1,365 +0,0 @@ -PD Loader Tools for AMD Compatibility -===================================== - -The Novidia plugin and its included shader patch data will allow Project DIVA -Arcade Future Tone to work on AMD GPUs. - -Usage Instructions: - Simply copy the plugins folder to your game directory. - -================================================================================ - -AFT Shader Patcher can be used to attempt patching modded Nvidia-only shaders to -also work. - -Patch Creation Instructions: - 1. Extract amd-tools. - 2. Copy your modified shader.farc into your extracted amd-tools folder. - 3. Run "patch shaders". This may take several minutes. - 4. Copy the "XXXXXXXX.vcdiff" file into your "plugins\Novidia Shaders" folder. - 5. Install the shader mod like you would normally using shader.farc. - 6. Novidia will automatically apply the generated patches. - * shader_patched.farc is an intermediate file and can be safely deleted. - -================================================================================ - -ARB Patcher, the tool used to make modifications to shaders, was developed with -a lot of help from Nezarn, without whom AMD support would not be possible. - -================================================================================ - -Novidia and AFT Shader Patcher use xdelta3, licensed under the Apache License -Version 2.0: - - Xdelta version 3.0.12, Copyright (C) Joshua MacDonald - Xdelta version 3.1.1, Copyright (C) Joshua MacDonald - - Apache License - Version 2.0, January 2004 - http://www.apache.org/licenses/ - - TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION - - 1. Definitions. - - "License" shall mean the terms and conditions for use, reproduction, - and distribution as defined by Sections 1 through 9 of this document. - - "Licensor" shall mean the copyright owner or entity authorized by - the copyright owner that is granting the License. - - "Legal Entity" shall mean the union of the acting entity and all - other entities that control, are controlled by, or are under common - control with that entity. For the purposes of this definition, - "control" means (i) the power, direct or indirect, to cause the - direction or management of such entity, whether by contract or - otherwise, or (ii) ownership of fifty percent (50%) or more of the - outstanding shares, or (iii) beneficial ownership of such entity. - - "You" (or "Your") shall mean an individual or Legal Entity - exercising permissions granted by this License. - - "Source" form shall mean the preferred form for making modifications, - including but not limited to software source code, documentation - source, and configuration files. - - "Object" form shall mean any form resulting from mechanical - transformation or translation of a Source form, including but - not limited to compiled object code, generated documentation, - and conversions to other media types. - - "Work" shall mean the work of authorship, whether in Source or - Object form, made available under the License, as indicated by a - copyright notice that is included in or attached to the work - (an example is provided in the Appendix below). - - "Derivative Works" shall mean any work, whether in Source or Object - form, that is based on (or derived from) the Work and for which the - editorial revisions, annotations, elaborations, or other modifications - represent, as a whole, an original work of authorship. For the purposes - of this License, Derivative Works shall not include works that remain - separable from, or merely link (or bind by name) to the interfaces of, - the Work and Derivative Works thereof. - - "Contribution" shall mean any work of authorship, including - the original version of the Work and any modifications or additions - to that Work or Derivative Works thereof, that is intentionally - submitted to Licensor for inclusion in the Work by the copyright owner - or by an individual or Legal Entity authorized to submit on behalf of - the copyright owner. For the purposes of this definition, "submitted" - means any form of electronic, verbal, or written communication sent - to the Licensor or its representatives, including but not limited to - communication on electronic mailing lists, source code control systems, - and issue tracking systems that are managed by, or on behalf of, the - Licensor for the purpose of discussing and improving the Work, but - excluding communication that is conspicuously marked or otherwise - designated in writing by the copyright owner as "Not a Contribution." - - "Contributor" shall mean Licensor and any individual or Legal Entity - on behalf of whom a Contribution has been received by Licensor and - subsequently incorporated within the Work. - - 2. Grant of Copyright License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - copyright license to reproduce, prepare Derivative Works of, - publicly display, publicly perform, sublicense, and distribute the - Work and such Derivative Works in Source or Object form. - - 3. Grant of Patent License. Subject to the terms and conditions of - this License, each Contributor hereby grants to You a perpetual, - worldwide, non-exclusive, no-charge, royalty-free, irrevocable - (except as stated in this section) patent license to make, have made, - use, offer to sell, sell, import, and otherwise transfer the Work, - where such license applies only to those patent claims licensable - by such Contributor that are necessarily infringed by their - Contribution(s) alone or by combination of their Contribution(s) - with the Work to which such Contribution(s) was submitted. If You - institute patent litigation against any entity (including a - cross-claim or counterclaim in a lawsuit) alleging that the Work - or a Contribution incorporated within the Work constitutes direct - or contributory patent infringement, then any patent licenses - granted to You under this License for that Work shall terminate - as of the date such litigation is filed. - - 4. Redistribution. You may reproduce and distribute copies of the - Work or Derivative Works thereof in any medium, with or without - modifications, and in Source or Object form, provided that You - meet the following conditions: - - (a) You must give any other recipients of the Work or - Derivative Works a copy of this License; and - - (b) You must cause any modified files to carry prominent notices - stating that You changed the files; and - - (c) You must retain, in the Source form of any Derivative Works - that You distribute, all copyright, patent, trademark, and - attribution notices from the Source form of the Work, - excluding those notices that do not pertain to any part of - the Derivative Works; and - - (d) If the Work includes a "NOTICE" text file as part of its - distribution, then any Derivative Works that You distribute must - include a readable copy of the attribution notices contained - within such NOTICE file, excluding those notices that do not - pertain to any part of the Derivative Works, in at least one - of the following places: within a NOTICE text file distributed - as part of the Derivative Works; within the Source form or - documentation, if provided along with the Derivative Works; or, - within a display generated by the Derivative Works, if and - wherever such third-party notices normally appear. The contents - of the NOTICE file are for informational purposes only and - do not modify the License. You may add Your own attribution - notices within Derivative Works that You distribute, alongside - or as an addendum to the NOTICE text from the Work, provided - that such additional attribution notices cannot be construed - as modifying the License. - - You may add Your own copyright statement to Your modifications and - may provide additional or different license terms and conditions - for use, reproduction, or distribution of Your modifications, or - for any such Derivative Works as a whole, provided Your use, - reproduction, and distribution of the Work otherwise complies with - the conditions stated in this License. - - 5. Submission of Contributions. Unless You explicitly state otherwise, - any Contribution intentionally submitted for inclusion in the Work - by You to the Licensor shall be under the terms and conditions of - this License, without any additional terms or conditions. - Notwithstanding the above, nothing herein shall supersede or modify - the terms of any separate license agreement you may have executed - with Licensor regarding such Contributions. - - 6. Trademarks. This License does not grant permission to use the trade - names, trademarks, service marks, or product names of the Licensor, - except as required for reasonable and customary use in describing the - origin of the Work and reproducing the content of the NOTICE file. - - 7. Disclaimer of Warranty. Unless required by applicable law or - agreed to in writing, Licensor provides the Work (and each - Contributor provides its Contributions) on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or - implied, including, without limitation, any warranties or conditions - of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A - PARTICULAR PURPOSE. You are solely responsible for determining the - appropriateness of using or redistributing the Work and assume any - risks associated with Your exercise of permissions under this License. - - 8. Limitation of Liability. In no event and under no legal theory, - whether in tort (including negligence), contract, or otherwise, - unless required by applicable law (such as deliberate and grossly - negligent acts) or agreed to in writing, shall any Contributor be - liable to You for damages, including any direct, indirect, special, - incidental, or consequential damages of any character arising as a - result of this License or out of the use or inability to use the - Work (including but not limited to damages for loss of goodwill, - work stoppage, computer failure or malfunction, or any and all - other commercial damages or losses), even if such Contributor - has been advised of the possibility of such damages. - - 9. Accepting Warranty or Additional Liability. While redistributing - the Work or Derivative Works thereof, You may choose to offer, - and charge a fee for, acceptance of support, warranty, indemnity, - or other liability obligations and/or rights consistent with this - License. However, in accepting such obligations, You may act only - on Your own behalf and on Your sole responsibility, not on behalf - of any other Contributor, and only if You agree to indemnify, - defend, and hold each Contributor harmless for any liability - incurred by, or claims asserted against, such Contributor by reason - of your accepting any such warranty or additional liability. - - END OF TERMS AND CONDITIONS - - -Novidia uses Microsoft Detours, licensed under MIT License: - - # Copyright (c) Microsoft Corporation - - All rights reserved. - - # MIT License - - Permission is hereby granted, free of charge, to any person obtaining a copy of - this software and associated documentation files (the "Software"), to deal in - the Software without restriction, including without limitation the rights to - use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies - of the Software, and to permit persons to whom the Software is furnished to do - so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. - - -AFT Shader Patcher and ARB Patcher include (parts of) Python 3.8, licensed -under PSF License 2.0: - - 1. This LICENSE AGREEMENT is between the Python Software Foundation - ("PSF"), and the Individual or Organization ("Licensee") accessing and - otherwise using this software ("Python") in source or binary form and - its associated documentation. - - 2. Subject to the terms and conditions of this License Agreement, PSF hereby - grants Licensee a nonexclusive, royalty-free, world-wide license to reproduce, - analyze, test, perform and/or display publicly, prepare derivative works, - distribute, and otherwise use Python alone or in any derivative version, - provided, however, that PSF's License Agreement and PSF's notice of copyright, - i.e., "Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, - 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Python Software Foundation; - All Rights Reserved" are retained in Python alone or in any derivative version - prepared by Licensee. - - 3. In the event Licensee prepares a derivative work that is based on - or incorporates Python or any part thereof, and wants to make - the derivative work available to others as provided herein, then - Licensee hereby agrees to include in any such work a brief summary of - the changes made to Python. - - 4. PSF is making Python available to Licensee on an "AS IS" - basis. PSF MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR - IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, PSF MAKES NO AND - DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS - FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF PYTHON WILL NOT - INFRINGE ANY THIRD PARTY RIGHTS. - - 5. PSF SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF PYTHON - FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS - A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING PYTHON, - OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - - 6. This License Agreement will automatically terminate upon a material - breach of its terms and conditions. - - 7. Nothing in this License Agreement shall be deemed to create any - relationship of agency, partnership, or joint venture between PSF and - Licensee. This License Agreement does not grant permission to use PSF - trademarks or trade name in a trademark sense to endorse or promote - products or services of Licensee, or any third party. - - 8. By copying, installing or otherwise using Python, Licensee - agrees to be bound by the terms and conditions of this License - Agreement. - - -AFT Shader Patcher is built using cx_Freeze, licensed under cx_Freeze license: - - * Copyright © 2007-2020, Anthony Tuininga. - * Copyright © 2001-2006, Computronix (Canada) Ltd., Edmonton, Alberta, Canada. - * All rights reserved. - - 1. This LICENSE AGREEMENT is between the copyright holders and the Individual - or Organization ("Licensee") accessing and otherwise using cx_Freeze - software in source or binary form and its associated documentation. - - 2. Subject to the terms and conditions of this License Agreement, the - copyright holders hereby grant Licensee a nonexclusive, royalty-free, - world-wide license to reproduce, analyze, test, perform and/or display - publicly, prepare derivative works, distribute, and otherwise use cx_Freeze - alone or in any derivative version, provided, however, that this License - Agreement and this notice of copyright are retained in cx_Freeze alone or in - any derivative version prepared by Licensee. - - 3. In the event Licensee prepares a derivative work that is based on or - incorporates cx_Freeze or any part thereof, and wants to make the derivative - work available to others as provided herein, then Licensee hereby agrees to - include in any such work a brief summary of the changes made to cx_Freeze. - - 4. The copyright holders are making cx_Freeze available to Licensee on an - "AS IS" basis. THE COPYRIGHT HOLDERS MAKE NO REPRESENTATIONS OR WARRANTIES, - EXPRESS OR IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, THE COPYRIGHT - HOLDERS MAKE NO AND DISCLAIM ANY REPRESENTATION OR WARRANTY OF - MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF - CX_FREEZE WILL NOT INFRINGE ANY THIRD PARTY RIGHTS. - - 5. THE COPYRIGHT HOLDERS SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF - CX_FREEZE FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR LOSS AS - A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING CX_FREEZE, OR ANY - DERIVATIVE THEREOF, EVEN IF ADVISED OF THE POSSIBILITY THEREOF. - - 6. This License Agreement will automatically terminate upon a material breach - of its terms and conditions. - - 7. Nothing in this License Agreement shall be deemed to create any relationship - of agency, partnership, or joint venture between the copyright holders and - Licensee. This License Agreement does not grant permission to use - copyright holder's trademarks or trade name in a trademark sense to endorse - or promote products or services of Licensee, or any third party. - - 8. By copying, installing or otherwise using cx_Freeze, Licensee agrees to be - bound by the terms and conditions of this License Agreement. - - Computronix® is a registered trademark of Computronix (Canada) Ltd. - - -pyfarc (used by AFT Shader Patcher) uses construct, licensed under MIT License: - - Copyright (C) 2006-2020 - Arkadiusz Bulski (arek.bulski@gmail.com) - Tomer Filiba (tomerfiliba@gmail.com) - Corbin Simpson (MostAwesomeDude@gmail.com) - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE. \ No newline at end of file diff --git a/source-code/data/amd-tools/patch shaders py.bat b/source-code/data/amd-tools/patch shaders py.bat deleted file mode 100644 index 51a3980..0000000 --- a/source-code/data/amd-tools/patch shaders py.bat +++ /dev/null @@ -1 +0,0 @@ -"AFT Shader Patcher\aft_shader_patcher.py" -i shader.farc -o shader_patched.farc --xdelta \ No newline at end of file diff --git a/source-code/data/amd-tools/patch shaders.bat b/source-code/data/amd-tools/patch shaders.bat deleted file mode 100644 index 562406f..0000000 --- a/source-code/data/amd-tools/patch shaders.bat +++ /dev/null @@ -1 +0,0 @@ -"AFT Shader Patcher\aft_shader_patcher.exe" -i shader.farc -o shader_patched.farc --xdelta \ No newline at end of file