USSEDP ( Unofficial Skyrim Special Edition Downgrade Patcher ) はなにをしているのか

Unofficial Skyrim Special Edition Downgrade Patcher at Skyrim Special Edition Nexus - Mods and Community

を導入して無事ダウングレードを実施しMODを楽しむことができたが具体的になにをやっているのかわからなかったので、公開されている

GitHub - wabbajack-tools/ussedp at patcher_maintainance

のソース(C#)をざっくり読んでみました

 

 

ソリューションの中身

  1. BuildAllPatches:パッチ作成プログラム。FullPatchとBestOfBothの2ファイル作成
  2. Downloader:Steamから過去ファイルをDLするツール。

    Unofficial Skyrim Downloader at Skyrim Special Edition Nexus - Mods and Communityで公開されているものと思われる

  3. DTOs:1と4で共通で使うDTOクラス
  4. Patcher:アップロードされているもの

プログラムの構造

  • BuildAllPatches
    • コンソールアプリのためProgram.csに処理が記載されている
    • 前提としてパッチを作成したいバニラ状態の2フォルダがあり比較してパッチを作成する
    • どういうパッチングをしたいか記述した比較結果のinstructions.jsonとパッチ本体を埋め込んだPatcher.exeを作成する
    • BestOfBothの場合拡張子が.exeと.dllのもののみ対象
  • Patcher
    • MVVMアプリのためMainWindowViewModel.csに処理が記載されている
    • instructions.jsonを自身のexeから取り出し内容に従いこれまたパッチ内容を自身から取り出しパッチングする

具体的になにが対象なのか

バイナリエディタで直接探してみる

当該部分を切り取ってみた結果がこちら

詳細表示

{
    "Instructions": [
        {
            "Method": 1,
            "Path": "bink2w64.dll",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccBGSSSE001-Fish.bsa",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccBGSSSE001-Fish.esm",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccBGSSSE025-AdvDSGS.bsa",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccBGSSSE025-AdvDSGS.esm",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccBGSSSE037-Curios.bsa",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccBGSSSE037-Curios.esl",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccQDRSSE001-SurvivalMode.bsa",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 1,
            "Path": "Data\\ccQDRSSE001-SurvivalMode.esl",
            "PatchFile": null,
            "SrcHash": 0,
            "DestHash": 0,
            "FromFile": null
        },
        {
            "Method": 2,
            "Path": "binkw64.dll",
            "PatchFile": "89ae98da612ab8c8_1595e8bf1a7c957d",
            "SrcHash": -3983387270641570167,
            "DestHash": 9049275480601564437,
            "FromFile": "High.ini"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Patch.bsa",
            "PatchFile": "49d68d663a2bbcf1_186e2939f5268910",
            "SrcHash": -1027899085118646711,
            "DestHash": 1191526411084066328,
            "FromFile": "Data\\Skyrim - Misc.bsa"
        },
        {
            "Method": 2,
            "Path": "Skyrim.ccc",
            "PatchFile": "5acaba8e13b1e183_c8b8426c249f92e1",
            "SrcHash": -8943672687423993254,
            "DestHash": -2192515089792059192,
            "FromFile": "Skyrim.ccc"
        },
        {
            "Method": 2,
            "Path": "SkyrimSE.exe",
            "PatchFile": "e9aacd24bce377c5_f223d7d5d86fefe1",
            "SrcHash": -4217652128798364951,
            "DestHash": -2166389918650653710,
            "FromFile": "SkyrimSE.exe"
        },
        {
            "Method": 2,
            "Path": "SkyrimSELauncher.exe",
            "PatchFile": "f2eb431359bb0a83_d1b85cf30d1a7552",
            "SrcHash": -9004178513724183566,
            "DestHash": 5941683930605074641,
            "FromFile": "SkyrimSELauncher.exe"
        },
        {
            "Method": 2,
            "Path": "Data\\Dawnguard.esm",
            "PatchFile": "02acaa7a4a711173_08480485452d39c5",
            "SrcHash": 8291532953665317890,
            "DestHash": -4235304197957597176,
            "FromFile": "Data\\Dawnguard.esm"
        },
        {
            "Method": 2,
            "Path": "Data\\Dragonborn.esm",
            "PatchFile": "68aa420d5534e2c5_7b2a6e53075051be",
            "SrcHash": -4187727163601802648,
            "DestHash": -4732913740994958725,
            "FromFile": "Data\\Dragonborn.esm"
        },
        {
            "Method": 2,
            "Path": "Data\\HearthFires.esm",
            "PatchFile": "1747255123cef961_18f75c42baa2d8d2",
            "SrcHash": 7059900541960537879,
            "DestHash": -3253671809914177768,
            "FromFile": "Data\\HearthFires.esm"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Animations.bsa",
            "PatchFile": "e710fa504b6fb773_917f54165b46e3eb",
            "SrcHash": 8338255604371558631,
            "DestHash": -1449237298052563055,
            "FromFile": "Data\\Skyrim - Animations.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Interface.bsa",
            "PatchFile": "ef2f540de541e74b_939116c7ff56a2a8",
            "SrcHash": 5469412724491694063,
            "DestHash": -6295373672553737837,
            "FromFile": "Data\\Skyrim - Interface.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Meshes0.bsa",
            "PatchFile": "a086193eee231f68_5d368d345226dde3",
            "SrcHash": 7502755010373584544,
            "DestHash": -2027422122736011683,
            "FromFile": "Data\\Skyrim - Meshes0.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Meshes1.bsa",
            "PatchFile": "4efcc13e46f32632_78df6b5383d2bc4b",
            "SrcHash": 3613843234037562446,
            "DestHash": 5457468309948325752,
            "FromFile": "Data\\Skyrim - Meshes1.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Misc.bsa",
            "PatchFile": "49d68d663a2bbcf1_fd2825a6bf997df0",
            "SrcHash": -1027899085118646711,
            "DestHash": -1117568084112758531,
            "FromFile": "Data\\Skyrim - Misc.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Shaders.bsa",
            "PatchFile": "4b09c03ebea96f38_c91717dd3b5ff583",
            "SrcHash": 4066655623100500299,
            "DestHash": -8938133174729893943,
            "FromFile": "Data\\Skyrim - Shaders.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Sounds.bsa",
            "PatchFile": "e882e36e2d9738e0_f0bcd7454e31f52c",
            "SrcHash": -2289914189128170776,
            "DestHash": 3239549719211916528,
            "FromFile": "Data\\Skyrim - Sounds.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures0.bsa",
            "PatchFile": "557eca1d0d2a4973_130bdb53bc1c514a",
            "SrcHash": 8307217223484341845,
            "DestHash": 5355093027106523923,
            "FromFile": "Data\\Skyrim - Textures0.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures1.bsa",
            "PatchFile": "d03600cd7d6db1ff_3447c296656af41e",
            "SrcHash": -22116136082458928,
            "DestHash": 2230524700008793908,
            "FromFile": "Data\\Skyrim - Textures1.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures2.bsa",
            "PatchFile": "baeb40523be0a6f8_be4619a488074315",
            "SrcHash": -529489360781775942,
            "DestHash": 1532076581686167230,
            "FromFile": "Data\\Skyrim - Textures2.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures3.bsa",
            "PatchFile": "9a221602c87ee00b_ac4362e130e41636",
            "SrcHash": 855823326693958298,
            "DestHash": 3897553426126619564,
            "FromFile": "Data\\Skyrim - Textures3.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures4.bsa",
            "PatchFile": "f271ee0db9f30b0d_8224df7beb0494f4",
            "SrcHash": 940112923365110258,
            "DestHash": -823027422459911038,
            "FromFile": "Data\\Skyrim - Textures4.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures5.bsa",
            "PatchFile": "8060355329e3951f_5222faddaa9b7a98",
            "SrcHash": 2275974953334825088,
            "DestHash": -7459478674614902190,
            "FromFile": "Data\\Skyrim - Textures5.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures6.bsa",
            "PatchFile": "ed8c497b4ee31e22_4bc604fff3e84452",
            "SrcHash": 2458652372806241517,
            "DestHash": 5928119144179615307,
            "FromFile": "Data\\Skyrim - Textures6.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures7.bsa",
            "PatchFile": "336957c8dd55a3c0_7452e7faad26da27",
            "SrcHash": -4565711186186245837,
            "DestHash": 2871650241082774132,
            "FromFile": "Data\\Skyrim - Textures7.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim - Textures8.bsa",
            "PatchFile": "589cdd596abb9fc3_3efd523f4dbb8aec",
            "SrcHash": -4350552649567986600,
            "DestHash": -1402102393523208898,
            "FromFile": "Data\\Skyrim - Textures8.bsa"
        },
        {
            "Method": 2,
            "Path": "Data\\Skyrim.esm",
            "PatchFile": "0318156af6153cb6_92b367ab6a8798ea",
            "SrcHash": -5315349312118122493,
            "DestHash": -1542333980162411630,
            "FromFile": "Data\\Skyrim.esm"
        },
        {
            "Method": 2,
            "Path": "Data\\Update.esm",
            "PatchFile": "0b578e998d0e02a7_fc32c6fcb8dd1972",
            "SrcHash": -6412546918092744949,
            "DestHash": 8221846381326119676,
            "FromFile": "Data\\Update.esm"
        }
    ]
}

成形してみた結果

【動作】 【AEのファイル】before 【パッチするSEの元ファイル】after
削除 bink2w64.dll  
パッチ binkw64.dll High.ini
削除 Data\ccBGSSSE001-Fish.bsa  
削除 Data\ccBGSSSE001-Fish.esm  
削除 Data\ccBGSSSE025-AdvDSGS.bsa  
削除 Data\ccBGSSSE025-AdvDSGS.esm  
削除 Data\ccBGSSSE037-Curios.bsa  
削除 Data\ccBGSSSE037-Curios.esl  
削除 Data\ccQDRSSE001-SurvivalMode.bsa  
削除 Data\ccQDRSSE001-SurvivalMode.esl  
パッチ Data\Dawnguard.esm Data\Dawnguard.esm
パッチ Data\Dragonborn.esm Data\Dragonborn.esm
パッチ Data\HearthFires.esm Data\HearthFires.esm
パッチ Data\Skyrim - Animations.bsa Data\Skyrim - Animations.bsa
パッチ Data\Skyrim - Interface.bsa Data\Skyrim - Interface.bsa
パッチ Data\Skyrim - Meshes0.bsa Data\Skyrim - Meshes0.bsa
パッチ Data\Skyrim - Meshes1.bsa Data\Skyrim - Meshes1.bsa
パッチ Data\Skyrim - Misc.bsa Data\Skyrim - Misc.bsa
パッチ Data\Skyrim - Patch.bsa Data\Skyrim - Misc.bsa
パッチ Data\Skyrim - Shaders.bsa Data\Skyrim - Shaders.bsa
パッチ Data\Skyrim - Sounds.bsa Data\Skyrim - Sounds.bsa
パッチ Data\Skyrim - Textures0.bsa Data\Skyrim - Textures0.bsa
パッチ Data\Skyrim - Textures1.bsa Data\Skyrim - Textures1.bsa
パッチ Data\Skyrim - Textures2.bsa Data\Skyrim - Textures2.bsa
パッチ Data\Skyrim - Textures3.bsa Data\Skyrim - Textures3.bsa
パッチ Data\Skyrim - Textures4.bsa Data\Skyrim - Textures4.bsa
パッチ Data\Skyrim - Textures5.bsa Data\Skyrim - Textures5.bsa
パッチ Data\Skyrim - Textures6.bsa Data\Skyrim - Textures6.bsa
パッチ Data\Skyrim - Textures7.bsa Data\Skyrim - Textures7.bsa
パッチ Data\Skyrim - Textures8.bsa Data\Skyrim - Textures8.bsa
パッチ Data\Skyrim.esm Data\Skyrim.esm
パッチ Data\Update.esm Data\Update.esm
パッチ Skyrim.ccc Skyrim.ccc
パッチ SkyrimSE.exe SkyrimSE.exe
パッチ SkyrimSELauncher.exe SkyrimSELauncher.exe

 

iniがDLLにパッチされているが豪快

内容的には日本語版のままダウングレードしても問題なさそうだが識者のコメント欲しい・・・

NexusのPostsには動くよ!と動かないよ!が投稿されている)