├── .gitattributes ├── .gitignore ├── .gitmodules ├── 7zS2.sfx ├── CoZIcon.ico ├── HACKING.md ├── LauncherIcon.ico ├── Newtonsoft.Json.dll ├── README.md ├── c0data └── WAVTABLE.dat ├── c0data_toc.csv ├── cc-edited-images └── .gitkeep ├── config.json ├── config.ps1.sample ├── content ├── CCPatch-README.txt ├── d3d10 ├── d3d10_1 ├── d3d10core ├── d3d11 ├── d3d9 ├── dxgi ├── languagebarrier │ ├── THIRDPARTY.patch.txt │ ├── defaultconfig.json │ ├── gamedef.json │ ├── patchdef.json │ ├── subs │ │ ├── cc_ed001a_karaonly.ass │ │ ├── cc_ed001a_tlonly.ass │ │ ├── cc_ed002a_karaonly.ass │ │ ├── cc_ed002a_tlonly.ass │ │ ├── fonts │ │ │ ├── Handy_Andy.otf │ │ │ ├── HighVoltage Rough.ttf │ │ │ ├── SoukouMincho.ttf │ │ │ ├── Typography Times Regular.ttf │ │ │ ├── hultog.regular_0.ttf │ │ │ └── kochi-gothic-subst.ttf │ │ ├── lq_cc_ed001a.bk2.ass │ │ ├── lq_cc_ed002a.bk2.ass │ │ ├── lq_movie_op.bk2.ass │ │ ├── lq_movie_op2.bk2.ass │ │ ├── movie_op2_karaonly.ass │ │ ├── movie_op2_tlonly.ass │ │ ├── movie_op_karaonly.ass │ │ └── movie_op_tlonly.ass │ └── versioninfo.json └── proton_boot_fix.sh ├── content_steamgrid ├── 970570.png ├── 970570_hero.png ├── 970570_logo.png └── 970570p.png ├── doc ├── misc │ ├── CheckSteamResolutions.ps1 │ ├── MakeSteamImageset.ps1 │ └── add_new_bgs.py └── voicefix │ ├── README.md │ ├── envita_additions.txt │ ├── generate_voice_json.rb │ └── wavtable_endian_swap.py ├── installer ├── build │ └── .gitkeep ├── noidget_build.bat ├── userdata.qrc ├── userdata │ ├── LICENSE.txt │ ├── README.txt │ ├── alert.png │ ├── bgm.mp3 │ ├── header.png │ ├── left.png │ ├── next_button.png │ ├── product.json │ ├── script.js │ └── scriptUninstaller.js └── userdataUninstaller.qrc ├── launcher ├── build │ └── .gitkeep └── realboot_build.bat ├── mpkpack.py ├── rcedit-x86.exe ├── terribuild.ps1 ├── update.json └── xdelta3.exe /.gitattributes: -------------------------------------------------------------------------------- 1 | *.sh text eol=lf -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | config.ps1 2 | temp/ 3 | DIST/ 4 | symbols/ 5 | cc-edited-images/* 6 | !cc-edited-images/.gitkeep 7 | script_archive_steam/* 8 | !script_archive_steam/.gitkeep 9 | /*.zip 10 | /*.rar 11 | 12 | # noidget 13 | installer/build/* 14 | !installer/build/.gitkeep 15 | installer/deploy/ 16 | installer/deployUninstaller/ 17 | installer/userdata/enscriptToc.json 18 | installer/userdata/enscriptTocC.json 19 | 20 | # realboot 21 | launcher/build/* 22 | !launcher/build/.gitkeep 23 | launcher/deploy/ 24 | 25 | content/languagebarrier/audio/* 26 | content/languagebarrier/videos/720p/* 27 | content/languagebarrier/videos/1080p/* -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "mgsfontgen-dx"] 2 | path = mgsfontgen-dx 3 | url = https://github.com/CommitteeOfZero/mgsfontgen-dx.git 4 | branch = master 5 | [submodule "installer/noidget"] 6 | path = installer/noidget 7 | url = https://github.com/CommitteeOfZero/noidget.git 8 | branch = steam 9 | [submodule "launcher/realboot"] 10 | path = launcher/realboot 11 | url = https://github.com/CommitteeOfZero/realboot.git 12 | [submodule "LanguageBarrier"] 13 | path = LanguageBarrier 14 | url = https://github.com/CommitteeOfZero/LanguageBarrier.git 15 | [submodule "coalesc3"] 16 | path = coalesc3 17 | url = https://github.com/CommitteeOfZero/coalesc3 18 | -------------------------------------------------------------------------------- /7zS2.sfx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/7zS2.sfx -------------------------------------------------------------------------------- /CoZIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/CoZIcon.ico -------------------------------------------------------------------------------- /HACKING.md: -------------------------------------------------------------------------------- 1 | # Building C;C Patch 2 | 3 | **THIS PAGE IS ONLY OF INTEREST TO NERDS** and people who'd like to make their own patches for CHAOS;CHILD (or some other SciADV titles) - and even then, you'll need a nerd to deal with this. 4 | 5 | This is a snapshot of our root project for the C;C patch, with some assets removed. 6 | 7 | **It's going to be painful** and these instructions may not be complete. As you can see, our build is kind of a mess, and *you'll need to extract assets from an already patched game installation*. This isn't the release we'd like to have made, but we hope it's better than nothing. 8 | 9 | **Clone this repository recursively.** Some of our internal dependencies are submodules. 10 | 11 | ### Licensing and stuff 12 | 13 | - Most of our code is released under liberal open source licenses, check the repositories 14 | - Please do not pirate the game 15 | - **If you release a patch, take care to find and change all relevant text to not misrepresent us as the authors of your patch**. There is a lot of such text scattered throughout: 16 | - `content/languagebarrier/patchdef.json` (please use your own AppData directory too) 17 | - `installer/userdata` 18 | - Hardcoded in the launcher source code at `launcher/realboot` (note, there's a technical support link pointing to our Discord, please don't keep it that way without asking us first) 19 | - EXE metadata in `terribuild.ps1` 20 | - We probably forgot something 21 | 22 | Third-party dependencies included in *this* repository: 23 | 24 | - `7zS2.sfx`: [Customised 7-Zip SFX module](https://github.com/CommitteeOfZero/lzma-sdk) (public domain) 25 | - `rcedit-x86.exe`: [rcedit](https://github.com/electron/rcedit) (MIT) 26 | - `xdelta3.exe`: [xdelta3](https://github.com/jmacd/xdelta) version 3.1.1 (Apache 2.0) 27 | - `Newtonsoft.Json.dll`: [Json.NET](https://github.com/JamesNK/Newtonsoft.Json) (MIT) 28 | 29 | This doesn't fit anywhere else: 30 | 31 | - We made [REEEEEEGen](https://github.com/CommitteeOfZero/REEEEEEGen) (MIT) to generate some images. 32 | 33 | ### External dependencies 34 | 35 | - Visual Studio 2015 36 | - Maybe Visual Studio 2017? Not sure if we need it for anything in here 37 | - Qt 5.9+ for Visual Studio 2015 38 | - Libraries for noidget (see `installer/noidget/conf.pri.sample`) 39 | - DirectX 9 SDK - make sure the `DXSDK_DIR` environment variable is set to e.g. `C:\Program Files (x86)\Microsoft DirectX SDK (June 2010)\` 40 | - Python 2.7 - make sure it's in PATH 41 | - [LanguageBarrier](https://github.com/CommitteeOfZero/LanguageBarrier/tree/multi-game) on branch `multi-game` 42 | - 7-Zip - make sure it's in PATH 43 | 44 | ### Building dependencies 45 | 46 | - Build `SciAdv.Net` using the `build.cmd` in its subfolder (this also happens during the main build but you'll need it for asset extraction first). 47 | - You do not need to build LanguageBarrier or xdelta3, these are built during the main build and noidget build, respectively. 48 | 49 | ### Preparing assets 50 | 51 | - Export edited images to the `cc-edited-images` subfolder in this repository. Sorry, no convenient way to do this right now - take `languagebarrier/c0data.mpk` from a patched copy and copy things to the appropriate paths according to `c0data_toc.csv`. 52 | - Build SciAdv.Net with its `build.cmd`. 53 | - Extract `languagebarrier/enscript.mpk` and `languagebarrier/enscript_c.mpk` with `ungelify` from SciAdv.Net somewhere. 54 | - Dump patched script text with `sc3tools` (also from SciAdv.Net): `sc3tools.exe extract-text *.scx cc` in the extraction folders. 55 | - Copy the output .txt files from `enscript.mpk` into a `cc-scripts` subfolder and the output .txt files from `enscript_c.mpk` into a `cc-scripts-consistency` subfolder. 56 | - Extract the Steam version's original `USRDIR/script.mpk` into the `script_archive_steam` subfolder. 57 | - Copy `languagebarrier/audio`, `languagebarrier/subs` and `languagebarrier/video` to `content/languagebarrier` 58 | 59 | ### Configuration 60 | 61 | - Copy `installer/noidget/conf.pri.sample` to `installer/noidget/conf.pri` and adjust for your system. 62 | - Copy `config.ps1.sample` to `config.ps1` and adjust for your system 63 | 64 | ### Actually doing the build 65 | 66 | - Run `terribuild.ps1` 67 | - Get a billion errors 68 | - [Cry](https://discord.gg/rq4GGCh) -------------------------------------------------------------------------------- /LauncherIcon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/LauncherIcon.ico -------------------------------------------------------------------------------- /Newtonsoft.Json.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/Newtonsoft.Json.dll -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # cc-port 2 | 3 | Original English v1.01 scripts (binary, extracted) are expected in `script_archive_v101`. 4 | 5 | Other dependencies: 6 | 7 | - VS2015 8 | - Qt 5.9+ for VS2015 9 | - Libraries for noidget (see conf.pri.sample) 10 | 11 | # Snapshotting this repo for public source release 12 | 13 | - Clone repo (for clean gitignore snapshot) 14 | - Clear .git 15 | - Reinitialise submodules (TODO how?) 16 | - Remove `cc-scripts` and `cc-scripts-consistency` submodules, .gitkeep the empty folders 17 | - Remove contents of `cc-edited-images`, `content/languagebarrier/audio`, `content/languagebarrier/video`, `script_archive_v101` (TODO `script_archive_steam`), .gitkeep empty folders 18 | - Probably remove `add_new_bgs.py`, it's kinda specific to our workflow 19 | -------------------------------------------------------------------------------- /c0data/WAVTABLE.dat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/c0data/WAVTABLE.dat -------------------------------------------------------------------------------- /c0data_toc.csv: -------------------------------------------------------------------------------- 1 | # id,filename_on_disk,filename_in_archive 2 | # font replacement 3 | 0,temp\FONT_A.dds,FONT_A.dds 4 | # manual.mpk 5 | 1,cc-edited-images\manual\help00_steam.dds,help00_steam.dds 6 | 2,cc-edited-images\manual\help01.dds,help01.dds 7 | # translated system textures 8 | 3,cc-edited-images\system\backlog.dds,backlog.dds 9 | 4,cc-edited-images\system\clearlist.dds,clearlist.dds 10 | 5,cc-edited-images\system\config.dds,config.dds 11 | 6,cc-edited-images\system\data01.dds,data01.dds 12 | 7,cc-edited-images\system\gsysmes.dds,gsysmes.dds 13 | 8,cc-edited-images\system\library.dds,library.dds 14 | 9,cc-edited-images\system\loadmenu.dds,loadmenu.dds 15 | 10,cc-edited-images\system\menuchip.dds,menuchip.dds 16 | 11,cc-edited-images\system\music.dds,music.dds 17 | 12,cc-edited-images\system\nameplate.dds,nameplate.dds 18 | 13,cc-edited-images\system\qloadmenu.dds,qloadmenu.dds 19 | 14,cc-edited-images\system\savemenu.dds,savemenu.dds 20 | 15,cc-edited-images\system\sysmesswindow.dds,sysmesswindow.dds 21 | 16,cc-edited-images\system\tipschips.dds,tipschips.dds 22 | 17,cc-edited-images\system\title_chip.dds,title_chip.dds 23 | 18,cc-edited-images\bg\Z_WARNING.png,Z_WARNING.png 24 | # split voice lines 25 | # not needed for Steam version 26 | ### 19,voice\CC_01_03_MIY0060c.ogg,CC_01_03_MIY0060c.ogg 27 | ### 20,voice\CC_01_03_MIY0060d.ogg,CC_01_03_MIY0060d.ogg 28 | ### 21,voice\CC_01_04_MIY0047a.ogg,CC_01_04_MIY0047a.ogg 29 | ### 22,voice\CC_01_04_MIY0047b.ogg,CC_01_04_MIY0047b.ogg 30 | ### 23,voice\CC_01_04_MIY0053a.ogg,CC_01_04_MIY0053a.ogg 31 | ### 24,voice\CC_01_04_MIY0053b.ogg,CC_01_04_MIY0053b.ogg 32 | ### 25,voice\CC_01_04_MIY0070a.ogg,CC_01_04_MIY0070a.ogg 33 | ### 26,voice\CC_01_04_MIY0070b.ogg,CC_01_04_MIY0070b.ogg 34 | ### 27,voice\CC_01_05_ONE0008a.ogg,CC_01_05_ONE0008a.ogg 35 | ### 28,voice\CC_01_05_ONE0008b.ogg,CC_01_05_ONE0008b.ogg 36 | ### 29,voice\CC_01_08_KUN0007c.ogg,CC_01_08_KUN0007c.ogg 37 | ### 30,voice\CC_01_08_KUN0007d.ogg,CC_01_08_KUN0007d.ogg 38 | ### 31,voice\CC_01_10_MIY0036c.ogg,CC_01_10_MIY0036c.ogg 39 | ### 32,voice\CC_01_10_MIY0036d.ogg,CC_01_10_MIY0036d.ogg 40 | ### 33,voice\CC_01_12_MIY0037a.ogg,CC_01_12_MIY0037a.ogg 41 | ### 34,voice\CC_01_12_MIY0037b.ogg,CC_01_12_MIY0037b.ogg 42 | ### 35,voice\CC_01_12_MIY0083a.ogg,CC_01_12_MIY0083a.ogg 43 | ### 36,voice\CC_01_12_MIY0083b.ogg,CC_01_12_MIY0083b.ogg 44 | ### 37,voice\CC_01_13_ITH0004a.ogg,CC_01_13_ITH0004a.ogg 45 | ### 38,voice\CC_01_13_ITH0004b.ogg,CC_01_13_ITH0004b.ogg 46 | ### 39,voice\CC_02_04_ARI0007a.ogg,CC_02_04_ARI0007a.ogg 47 | ### 40,voice\CC_02_04_ARI0007b.ogg,CC_02_04_ARI0007b.ogg 48 | ### 41,voice\CC_02_07_KUN0016c.ogg,CC_02_07_KUN0016c.ogg 49 | ### 42,voice\CC_02_07_KUN0016d.ogg,CC_02_07_KUN0016d.ogg 50 | ### 43,voice\CC_02_07_KUN0020c.ogg,CC_02_07_KUN0020c.ogg 51 | ### 44,voice\CC_02_07_KUN0020d.ogg,CC_02_07_KUN0020d.ogg 52 | ### 45,voice\CC_03_01_WAT0008a.ogg,CC_03_01_WAT0008a.ogg 53 | ### 46,voice\CC_03_01_WAT0008b.ogg,CC_03_01_WAT0008b.ogg 54 | ### 47,voice\CC_03_04_KUN0008a.ogg,CC_03_04_KUN0008a.ogg 55 | ### 48,voice\CC_03_04_KUN0008b.ogg,CC_03_04_KUN0008b.ogg 56 | ### 49,voice\CC_04_03_MIY0042a.ogg,CC_04_03_MIY0042a.ogg 57 | ### 50,voice\CC_04_03_MIY0042b.ogg,CC_04_03_MIY0042b.ogg 58 | ### 51,voice\CC_04_03B_X480004a.ogg,CC_04_03B_X480004a.ogg 59 | ### 52,voice\CC_04_03B_X480004b.ogg,CC_04_03B_X480004b.ogg 60 | ### 53,voice\CC_07_01_MIY0107a.ogg,CC_07_01_MIY0107a.ogg 61 | ### 54,voice\CC_07_01_MIY0107b.ogg,CC_07_01_MIY0107b.ogg 62 | ### 55,voice\CC_07_01_MIY0108a.ogg,CC_07_01_MIY0108a.ogg 63 | ### 56,voice\CC_07_01_MIY0108b.ogg,CC_07_01_MIY0108b.ogg 64 | ### 57,voice\CC_07_01_MIY0109a.ogg,CC_07_01_MIY0109a.ogg 65 | ### 58,voice\CC_07_01_MIY0109b.ogg,CC_07_01_MIY0109b.ogg 66 | ### 59,voice\CC_07_07_SHI0037a.ogg,CC_07_07_SHI0037a.ogg 67 | ### 60,voice\CC_07_07_SHI0037b.ogg,CC_07_07_SHI0037b.ogg 68 | ### 61,voice\CC_07_10_ARI0000a.ogg,CC_07_10_ARI0000a.ogg 69 | ### 62,voice\CC_07_10_ARI0000b.ogg,CC_07_10_ARI0000b.ogg 70 | ### 63,voice\CC_10_02_X480002a.ogg,CC_10_02_X480002a.ogg 71 | ### 64,voice\CC_10_02_X480002b.ogg,CC_10_02_X480002b.ogg 72 | ### 65,voice\CC_10_08_KUN0029a.ogg,CC_10_08_KUN0029a.ogg 73 | ### 66,voice\CC_10_08_KUN0029b.ogg,CC_10_08_KUN0029b.ogg 74 | ### 67,voice\CC_11_01_SAK0017a.ogg,CC_11_01_SAK0017a.ogg 75 | ### 68,voice\CC_11_01_SAK0017b.ogg,CC_11_01_SAK0017b.ogg 76 | ### 69,voice\CC_11_02_ONE0028a.ogg,CC_11_02_ONE0028a.ogg 77 | ### 70,voice\CC_11_02_ONE0028b.ogg,CC_11_02_ONE0028b.ogg 78 | ### 71,voice\CC_11_02_ONE0053a.ogg,CC_11_02_ONE0053a.ogg 79 | ### 72,voice\CC_11_02_ONE0053b.ogg,CC_11_02_ONE0053b.ogg 80 | ### 73,voice\CC_11_05_ONE0022a.ogg,CC_11_05_ONE0022a.ogg 81 | ### 74,voice\CC_11_05_ONE0022b.ogg,CC_11_05_ONE0022b.ogg 82 | ### 75,voice\CC_11_09_SAK0024a.ogg,CC_11_09_SAK0024a.ogg 83 | ### 76,voice\CC_11_09_SAK0024b.ogg,CC_11_09_SAK0024b.ogg 84 | ### 77,voice\CC_11_11_MIY0017a.ogg,CC_11_11_MIY0017a.ogg 85 | ### 78,voice\CC_11_11_MIY0017b.ogg,CC_11_11_MIY0017b.ogg 86 | ### 79,voice\CC_11_11_SAK0023a.ogg,CC_11_11_SAK0023a.ogg 87 | ### 80,voice\CC_11_11_SAK0023b.ogg,CC_11_11_SAK0023b.ogg 88 | ### 81,voice\CC_AH_24_SHI0014a.ogg,CC_AH_24_SHI0014a.ogg 89 | ### 82,voice\CC_AH_24_SHI0014b.ogg,CC_AH_24_SHI0014b.ogg 90 | ### 83,voice\CC_KN_02_KUN0009a.ogg,CC_KN_02_KUN0009a.ogg 91 | ### 84,voice\CC_KN_02_KUN0009b.ogg,CC_KN_02_KUN0009b.ogg 92 | ### 85,voice\CC_KN_13_KAW0019a.ogg,CC_KN_13_KAW0019a.ogg 93 | ### 86,voice\CC_KN_13_KAW0019b.ogg,CC_KN_13_KAW0019b.ogg 94 | ### 87,voice\CC_KN_15_ONE0003a.ogg,CC_KN_15_ONE0003a.ogg 95 | ### 88,voice\CC_KN_15_ONE0003b.ogg,CC_KN_15_ONE0003b.ogg 96 | ### 89,voice\CC_KN_16_SHI0020a.ogg,CC_KN_16_SHI0020a.ogg 97 | ### 90,voice\CC_KN_16_SHI0020b.ogg,CC_KN_16_SHI0020b.ogg 98 | ### 91,voice\CC_TR_09_KUN0026a.ogg,CC_TR_09_KUN0026a.ogg 99 | ### 92,voice\CC_TR_09_KUN0026b.ogg,CC_TR_09_KUN0026b.ogg 100 | ### 93,voice\CC_TR_10_WAK0040a.ogg,CC_TR_10_WAK0040a.ogg 101 | ### 94,voice\CC_TR_10_WAK0040b.ogg,CC_TR_10_WAK0040b.ogg 102 | ### 95,voice\CC_TR_10_WAK0072a.ogg,CC_TR_10_WAK0072a.ogg 103 | ### 96,voice\CC_TR_10_WAK0072b.ogg,CC_TR_10_WAK0072b.ogg 104 | ### 97,voice\CC_UK_05_Z090022a.ogg,CC_UK_05_Z090022a.ogg 105 | ### 98,voice\CC_UK_05_Z090022b.ogg,CC_UK_05_Z090022b.ogg 106 | ### 99,voice\CC_UK_10_SHI0005a.ogg,CC_UK_10_SHI0005a.ogg 107 | ### 100,voice\CC_UK_10_SHI0005b.ogg,CC_UK_10_SHI0005b.ogg 108 | # lipsync 109 | 101,c0data\WAVTABLE.dat,WAVTABLE.dat 110 | # HQ FMV audio 111 | ##102,c0data\movie_op_hq.ogg,movie_op_hq.ogg 112 | ##103,c0data\cc_ed001a_hq.ogg,cc_ed001a_hq.ogg 113 | ##104,c0data\cc_ed002a_hq.ogg,cc_ed002a_hq.ogg 114 | # map 115 | 105,cc-edited-images\system\mapbg.dds,mapbg.dds 116 | 106,cc-edited-images\system\mapparts.dds,mapparts.dds 117 | # translated BGs, QA1 batch 118 | 107,cc-edited-images\bg\cc_ibg081a.png,cc_ibg081a.png 119 | 108,cc-edited-images\bg\cc_eff019d.dds,cc_eff019d.dds 120 | 109,cc-edited-images\bg\cc_eff019f.dds,cc_eff019f.dds 121 | ###110,cc-edited-images\bg\bg0402na.png,bg0402na.png 122 | 111,cc-edited-images\bg\cc_ibgupmovie_003_c.png,cc_ibgupmovie_003_c.png 123 | 112,cc-edited-images\bg\cc_pbg005db.png,cc_pbg005db.png 124 | 113,cc-edited-images\bg\cc_ibg058a_c.png,cc_ibg058a_c.png 125 | 114,cc-edited-images\bg\cc_ibgupmovie_013_b.png,cc_ibgupmovie_013_b.png 126 | 115,cc-edited-images\bg\cc_pbg020b.png,cc_pbg020b.png 127 | 116,cc-edited-images\bg\cc_ibg139a.png,cc_ibg139a.png 128 | 117,cc-edited-images\bg\cc_ibgupmovie_008_a.png,cc_ibgupmovie_008_a.png 129 | 118,cc-edited-images\bg\cc_pbg005bb.png,cc_pbg005bb.png 130 | 119,cc-edited-images\bg\cc_pbg031b.png,cc_pbg031b.png 131 | 120,cc-edited-images\bg\cc_ibg092a.png,cc_ibg092a.png 132 | 121,cc-edited-images\bg\cc_ibg058a_e.png,cc_ibg058a_e.png 133 | 122,cc-edited-images\bg\cc_ibg058a_d.png,cc_ibg058a_d.png 134 | 123,cc-edited-images\bg\cc_pbg016a.png,cc_pbg016a.png 135 | 124,cc-edited-images\bg\cc_ibgupmovie_003_d.png,cc_ibgupmovie_003_d.png 136 | 125,cc-edited-images\bg\cc_ibgupmovie_009_d.png,cc_ibgupmovie_009_d.png 137 | 126,cc-edited-images\bg\cc_pbg045a.png,cc_pbg045a.png 138 | 127,cc-edited-images\bg\cc_pbg042a.png,cc_pbg042a.png 139 | 128,cc-edited-images\bg\cc_eff019e.dds,cc_eff019e.dds 140 | 129,cc-edited-images\bg\cc_ibgupmovie_002_b.png,cc_ibgupmovie_002_b.png 141 | 130,cc-edited-images\bg\cc_ibgupmovie_013_a.png,cc_ibgupmovie_013_a.png 142 | 131,cc-edited-images\bg\cc_pbg001c.png,cc_pbg001c.png 143 | 132,cc-edited-images\bg\cc_ibgupmovie_005_a.png,cc_ibgupmovie_005_a.png 144 | 133,cc-edited-images\bg\cc_pbg005cb.png,cc_pbg005cb.png 145 | 134,cc-edited-images\bg\cc_pbg039a.png,cc_pbg039a.png 146 | 135,cc-edited-images\bg\cc_ibgupmovie_011_a.png,cc_ibgupmovie_011_a.png 147 | 136,cc-edited-images\bg\cc_pbg014ab.png,cc_pbg014ab.png 148 | 137,cc-edited-images\bg\cc_ibgupmovie_003_b.png,cc_ibgupmovie_003_b.png 149 | 138,cc-edited-images\bg\bg0302aa.png,bg0302aa.png 150 | 139,cc-edited-images\bg\bg0209ac.png,bg0209ac.png 151 | 140,cc-edited-images\bg\bg0209ea.png,bg0209ea.png 152 | 141,cc-edited-images\bg\cc_pbg020c.png,cc_pbg020c.png 153 | 142,cc-edited-images\bg\cc_pbg001a.png,cc_pbg001a.png 154 | 143,cc-edited-images\bg\cc_pbg006a.png,cc_pbg006a.png 155 | 144,cc-edited-images\bg\cc_ibgupmovie_001_d.png,cc_ibgupmovie_001_d.png 156 | 145,cc-edited-images\bg\cc_ibg050a.png,cc_ibg050a.png 157 | 146,cc-edited-images\bg\cc_ibgupmovie_009_a.png,cc_ibgupmovie_009_a.png 158 | 147,cc-edited-images\bg\cc_ibgupmovie_001_f.png,cc_ibgupmovie_001_f.png 159 | 148,cc-edited-images\bg\cc_pbg049a.png,cc_pbg049a.png 160 | 149,cc-edited-images\bg\bg0203aa4.png,bg0203aa4.png 161 | 150,cc-edited-images\bg\bg0209aa.png,bg0209aa.png 162 | 151,cc-edited-images\bg\cc_ibg058a_a.png,cc_ibg058a_a.png 163 | 152,cc-edited-images\bg\cc_eff019a.png,cc_eff019a.png 164 | 153,cc-edited-images\bg\cc_ibgupmovie_001_c.png,cc_ibgupmovie_001_c.png 165 | 154,cc-edited-images\bg\cc_ibgupmovie_001_b.png,cc_ibgupmovie_001_b.png 166 | 155,cc-edited-images\bg\cc_ibgupmovie_009_c.png,cc_ibgupmovie_009_c.png 167 | 156,cc-edited-images\bg\cc_pbg002b.png,cc_pbg002b.png 168 | 157,cc-edited-images\bg\cc_ibgupmovie_007_a.png,cc_ibgupmovie_007_a.png 169 | 158,cc-edited-images\bg\cc_pbg050ab.png,cc_pbg050ab.png 170 | 159,cc-edited-images\bg\ev_han003a.png,ev_han003a.png 171 | 160,cc-edited-images\bg\cc_ibg058a_b.png,cc_ibg058a_b.png 172 | 161,cc-edited-images\bg\cc_ibgupmovie_001_a.png,cc_ibgupmovie_001_a.png 173 | 162,cc-edited-images\bg\cc_ibgupmovie_005_d.png,cc_ibgupmovie_005_d.png 174 | 163,cc-edited-images\bg\cc_ibgupmovie_001_e.png,cc_ibgupmovie_001_e.png 175 | 164,cc-edited-images\bg\cc_ibgupmovie_011_b.png,cc_ibgupmovie_011_b.png 176 | ###165,cc-edited-images\bg\bg0402ea.png,bg0402ea.png 177 | 166,cc-edited-images\bg\cc_pbg031a.png,cc_pbg031a.png 178 | 167,cc-edited-images\bg\cc_pbg030a.png,cc_pbg030a.png 179 | 168,cc-edited-images\bg\cc_pbg001e.png,cc_pbg001e.png 180 | 169,cc-edited-images\bg\cc_pbg039c.png,cc_pbg039c.png 181 | 170,cc-edited-images\bg\cc_ibgupmovie_011_c.png,cc_ibgupmovie_011_c.png 182 | 171,cc-edited-images\bg\cc_pbg014aa.png,cc_pbg014aa.png 183 | 172,cc-edited-images\bg\cc_ibgupmovie_010_a.png,cc_ibgupmovie_010_a.png 184 | 173,cc-edited-images\bg\cc_pbg020a.png,cc_pbg020a.png 185 | 174,cc-edited-images\bg\cc_ibgupmovie_006_a.png,cc_ibgupmovie_006_a.png 186 | 175,cc-edited-images\bg\bg0201aa2.png,bg0201aa2.png 187 | 176,cc-edited-images\bg\cc_ibgupmovie_011_d.png,cc_ibgupmovie_011_d.png 188 | 177,cc-edited-images\bg\cc_ibg048b.png,cc_ibg048b.png 189 | 178,cc-edited-images\bg\cc_ibgupmovie_004_a.png,cc_ibgupmovie_004_a.png 190 | 179,cc-edited-images\bg\cc_pbg032a.png,cc_pbg032a.png 191 | 180,cc-edited-images\bg\cc_ibg139b.png,cc_ibg139b.png 192 | 181,cc-edited-images\bg\cc_pbg003b.png,cc_pbg003b.png 193 | 182,cc-edited-images\bg\cc_ibgupmovie_009_b.png,cc_ibgupmovie_009_b.png 194 | 183,cc-edited-images\bg\cc_eff019g.dds,cc_eff019g.dds 195 | 184,cc-edited-images\bg\cc_pbg046b.png,cc_pbg046b.png 196 | 185,cc-edited-images\bg\cc_pbg032c.png,cc_pbg032c.png 197 | 186,cc-edited-images\bg\cc_pbg001d.png,cc_pbg001d.png 198 | 187,cc-edited-images\bg\cc_ibgupmovie_005_c.png,cc_ibgupmovie_005_c.png 199 | 188,cc-edited-images\bg\cc_pbg005ca.png,cc_pbg005ca.png 200 | 189,cc-edited-images\bg\bg0205aa2.png,bg0205aa2.png 201 | 190,cc-edited-images\bg\cc_ibg054a.png,cc_ibg054a.png 202 | 191,cc-edited-images\bg\cc_ibg055a.png,cc_ibg055a.png 203 | 192,cc-edited-images\bg\cc_pbg008ab.png,cc_pbg008ab.png 204 | 193,cc-edited-images\bg\cc_pbg005eb.png,cc_pbg005eb.png 205 | 194,cc-edited-images\bg\cc_pbg001b.png,cc_pbg001b.png 206 | 195,cc-edited-images\bg\cc_pbg037ab.png,cc_pbg037ab.png 207 | 196,cc-edited-images\bg\cc_pbg037aa.png,cc_pbg037aa.png 208 | 197,cc-edited-images\bg\cc_pbg008aa.png,cc_pbg008aa.png 209 | 198,cc-edited-images\bg\cc_pbg005ab.png,cc_pbg005ab.png 210 | 199,cc-edited-images\bg\cc_ibgupmovie_013_e.png,cc_ibgupmovie_013_e.png 211 | 200,cc-edited-images\bg\cc_pbg007a.png,cc_pbg007a.png 212 | 201,cc-edited-images\bg\cc_pbg039b.png,cc_pbg039b.png 213 | 202,cc-edited-images\bg\cc_pbg029a.png,cc_pbg029a.png 214 | 203,cc-edited-images\bg\cc_ibg060a.png,cc_ibg060a.png 215 | 204,cc-edited-images\bg\cc_pbg020e.png,cc_pbg020e.png 216 | 205,cc-edited-images\bg\cc_pbg005fb.png,cc_pbg005fb.png 217 | 206,cc-edited-images\bg\cc_pbg037a.png,cc_pbg037a.png 218 | 207,cc-edited-images\bg\cc_ibgupmovie_013_d.png,cc_ibgupmovie_013_d.png 219 | 208,cc-edited-images\bg\cc_pbg005da.png,cc_pbg005da.png 220 | 209,cc-edited-images\bg\cc_eff019c.png,cc_eff019c.png 221 | 210,cc-edited-images\bg\cc_eff019b.png,cc_eff019b.png 222 | 211,cc-edited-images\bg\cc_ibgupmovie_012_a.png,cc_ibgupmovie_012_a.png 223 | 212,cc-edited-images\bg\cc_ibgupmovie_002_a.png,cc_ibgupmovie_002_a.png 224 | 213,cc-edited-images\bg\cc_ibg007a.png,cc_ibg007a.png 225 | 214,cc-edited-images\bg\cc_pbg005ba.png,cc_pbg005ba.png 226 | 215,cc-edited-images\bg\cc_ibg098a.png,cc_ibg098a.png 227 | 216,cc-edited-images\bg\cc_pbg039d.png,cc_pbg039d.png 228 | 217,cc-edited-images\bg\cc_pbg030b.png,cc_pbg030b.png 229 | 218,cc-edited-images\bg\cc_pbg030c.png,cc_pbg030c.png 230 | 219,cc-edited-images\bg\cc_pbg046a.png,cc_pbg046a.png 231 | 220,cc-edited-images\bg\bg0209na.png,bg0209na.png 232 | 221,cc-edited-images\bg\cc_pbg020d.png,cc_pbg020d.png 233 | 222,cc-edited-images\bg\bg0209na1.png,bg0209na1.png 234 | 223,cc-edited-images\bg\cc_ibgupmovie_003_e.png,cc_ibgupmovie_003_e.png 235 | 224,cc-edited-images\bg\cc_pbg038a.png,cc_pbg038a.png 236 | 225,cc-edited-images\bg\cc_ibgupmovie_009_f.png,cc_ibgupmovie_009_f.png 237 | 226,cc-edited-images\bg\cc_pbg005ea.png,cc_pbg005ea.png 238 | 227,cc-edited-images\bg\cc_eff019h.dds,cc_eff019h.dds 239 | 228,cc-edited-images\bg\cc_ibgupmovie_004_b.png,cc_ibgupmovie_004_b.png 240 | 229,cc-edited-images\bg\cc_ibgupmovie_013_c.png,cc_ibgupmovie_013_c.png 241 | 230,cc-edited-images\bg\cc_ibgupmovie_005_b.png,cc_ibgupmovie_005_b.png 242 | ###231,cc-edited-images\bg\bg0402aa.png,bg0402aa.png 243 | 232,cc-edited-images\bg\cc_pbg002a.png,cc_pbg002a.png 244 | 233,cc-edited-images\bg\cc_pbg003a.png,cc_pbg003a.png 245 | 234,cc-edited-images\bg\cc_ibgupmovie_009_e.png,cc_ibgupmovie_009_e.png 246 | 235,cc-edited-images\bg\cc_ibgupmovie_003_a.png,cc_ibgupmovie_003_a.png 247 | 236,cc-edited-images\bg\cc_pbg005fa.png,cc_pbg005fa.png 248 | 237,cc-edited-images\bg\cc_pbg005aa.png,cc_pbg005aa.png 249 | 238,cc-edited-images\bg\cc_pbg032b.png,cc_pbg032b.png 250 | # missed movmenu 251 | 239,cc-edited-images\system\movmenu.dds,movmenu.dds 252 | # voiced lines without ingame text (#27) 253 | # nevermind, we're using videos for this now 254 | ###240,cc-edited-images\bg\CC_POSTCREDITS_001_A.png,CC_POSTCREDITS_001_A.png 255 | ###241,cc-edited-images\bg\CC_POSTCREDITS_001_B.png,CC_POSTCREDITS_001_B.png 256 | ###242,cc-edited-images\bg\CC_POSTCREDITS_002.png,CC_POSTCREDITS_002.png 257 | # hana screeching (#51) 258 | 243,cc-edited-images\bg\CC_HANA_001.png,CC_HANA_001.png 259 | 244,cc-edited-images\bg\CC_HANA_002.png,CC_HANA_002.png 260 | 245,cc-edited-images\bg\CC_HANA_003.png,CC_HANA_003.png 261 | 246,cc-edited-images\bg\CC_HANA_004.png,CC_HANA_004.png 262 | 247,cc-edited-images\bg\CC_HANA_005.png,CC_HANA_005.png 263 | 248,cc-edited-images\bg\CC_HANA_006.png,CC_HANA_006.png 264 | 249,cc-edited-images\bg\CC_HANA_007.png,CC_HANA_007.png 265 | 250,cc-edited-images\bg\CC_HANA_008_A.png,CC_HANA_008_A.png 266 | 251,cc-edited-images\bg\CC_HANA_008_B.png,CC_HANA_008_B.png 267 | 252,cc-edited-images\bg\CC_HANA_009_A.png,CC_HANA_009_A.png 268 | 253,cc-edited-images\bg\CC_HANA_009_B.png,CC_HANA_009_B.png 269 | # translated CGs, RC1 batch 270 | 254,cc-edited-images\bg\bg0426aa.png,bg0426aa.png 271 | ##255,cc-edited-images\bg\cc_pbg038a-2.png,cc_pbg038a-2.png 272 | 256,cc-edited-images\bg\cc_ibg042a.png,cc_ibg042a.png 273 | ##257,cc-edited-images\bg\cc_ibg123a-2.png,cc_ibg123a-2.png 274 | ##258,cc-edited-images\bg\cc_ibg109a-2.png,cc_ibg109a-2.png 275 | ##259,cc-edited-images\bg\cc_ibg139b-2.png,cc_ibg139b-2.png 276 | 260,cc-edited-images\bg\bg0208ea2.png,bg0208ea2.png 277 | 261,cc-edited-images\bg\cc_ibg206b.png,cc_ibg206b.png 278 | 262,cc-edited-images\bg\ev_zzz007b.png,ev_zzz007b.png 279 | 263,cc-edited-images\bg\bg0509na.png,bg0509na.png 280 | 264,cc-edited-images\bg\bg0601aa.png,bg0601aa.png 281 | 265,cc-edited-images\bg\cc_ibg130b.png,cc_ibg130b.png 282 | ##266,cc-edited-images\bg\cc_pbg005db-2.png,cc_pbg005db-2.png 283 | 267,cc-edited-images\bg\bg0208ac2.png,bg0208ac2.png 284 | 268,cc-edited-images\bg\bg0208aa1.png,bg0208aa1.png 285 | ##269,cc-edited-images\bg\cc_ibg130d-2.png,cc_ibg130d-2.png 286 | 270,cc-edited-images\bg\bg0601na.png,bg0601na.png 287 | ##271,cc-edited-images\bg\cc_pbg003a-2.png,cc_pbg003a-2.png 288 | ##272,cc-edited-images\bg\cc_ibg047a-2.png,cc_ibg047a-2.png 289 | 273,cc-edited-images\bg\bg0502na.png,bg0502na.png 290 | 274,cc-edited-images\bg\bg0504na2.png,bg0504na2.png 291 | ##275,cc-edited-images\bg\cc_pbg037ab-2.png,cc_pbg037ab-2.png 292 | 276,cc-edited-images\bg\bg0502aa.png,bg0502aa.png 293 | 277,cc-edited-images\bg\cc_pbg048a.png,cc_pbg048a.png 294 | 278,cc-edited-images\bg\cc_ibg130d.png,cc_ibg130d.png 295 | 279,cc-edited-images\bg\bg0601ar.png,bg0601ar.png 296 | ##280,cc-edited-images\bg\cc_pbg008aa-2.png,cc_pbg008aa-2.png 297 | ##281,cc-edited-images\bg\cc_pbg031a-2.png,cc_pbg031a-2.png 298 | 282,cc-edited-images\bg\cc_ibg087a.png,cc_ibg087a.png 299 | ##283,cc-edited-images\bg\cc_pbg008ab-2.png,cc_pbg008ab-2.png 300 | 284,cc-edited-images\bg\cc_ibg079a.png,cc_ibg079a.png 301 | ##285,cc-edited-images\bg\ev_zzz007b-2.png,ev_zzz007b-2.png 302 | 286,cc-edited-images\bg\bg0504na1.png,bg0504na1.png 303 | 287,cc-edited-images\bg\bg0208aa2.png,bg0208aa2.png 304 | 288,cc-edited-images\bg\bg0509na1.png,bg0509na1.png 305 | ##289,cc-edited-images\bg\cc_ibg130b-2.png,cc_ibg130b-2.png 306 | 290,cc-edited-images\bg\cc_pbg047a.png,cc_pbg047a.png 307 | 291,cc-edited-images\bg\cc_ibg206a.png,cc_ibg206a.png 308 | 292,cc-edited-images\bg\ev_zzz007a.png,ev_zzz007a.png 309 | 293,cc-edited-images\bg\bg0601ea.png,bg0601ea.png 310 | ##294,cc-edited-images\bg\cc_ibg100a-2.png,cc_ibg100a-2.png 311 | ##295,cc-edited-images\bg\cc_pbg039b-2.png,cc_pbg039b-2.png 312 | 296,cc-edited-images\bg\bg0604ea.png,bg0604ea.png 313 | ##297,cc-edited-images\bg\cc_pbg020a-2.png,cc_pbg020a-2.png 314 | 298,cc-edited-images\bg\cc_pbg043a.png,cc_pbg043a.png 315 | 299,cc-edited-images\bg\cc_ibg082a.png,cc_ibg082a.png 316 | ##300,cc-edited-images\bg\cc_pbg002b-2.png,cc_pbg002b-2.png 317 | 301,cc-edited-images\bg\bg0504na.png,bg0504na.png 318 | ##302,cc-edited-images\bg\cc_pbg031b-2.png,cc_pbg031b-2.png 319 | ##303,cc-edited-images\bg\cc_ibg054a-2.png,cc_ibg054a-2.png 320 | ##304,cc-edited-images\bg\cc_ibg130f-2.png,cc_ibg130f-2.png 321 | 305,cc-edited-images\bg\cc_ibg130e.png,cc_ibg130e.png 322 | 306,cc-edited-images\bg\cc_ibg109a.png,cc_ibg109a.png 323 | 307,cc-edited-images\bg\cc_ibg047a.png,cc_ibg047a.png 324 | ##308,cc-edited-images\bg\cc_pbg049a-2.png,cc_pbg049a-2.png 325 | 309,cc-edited-images\bg\bg0208aa5.png,bg0208aa5.png 326 | 310,cc-edited-images\bg\bg0604na.png,bg0604na.png 327 | ##311,cc-edited-images\bg\ev_zzz007a-2.png,ev_zzz007a-2.png 328 | ##312,cc-edited-images\bg\cc_ibg130e-2.png,cc_ibg130e-2.png 329 | 313,cc-edited-images\bg\bg0208na.png,bg0208na.png 330 | 314,cc-edited-images\bg\ev_zzz012d.png,ev_zzz012d.png 331 | ##315,cc-edited-images\bg\cc_ibg130a-2.png,cc_ibg130a-2.png 332 | 316,cc-edited-images\bg\bg0208aa6.png,bg0208aa6.png 333 | 317,cc-edited-images\bg\bg0208na3.png,bg0208na3.png 334 | 318,cc-edited-images\bg\cc_ibg108a.png,cc_ibg108a.png 335 | ##319,cc-edited-images\bg\cc_pbg002a-2.png,cc_pbg002a-2.png 336 | ##320,cc-edited-images\bg\cc_ibg130c-2.png,cc_ibg130c-2.png 337 | 321,cc-edited-images\bg\cc_pbg043b.png,cc_pbg043b.png 338 | ##322,cc-edited-images\bg\cc_pbg005eb-2.png,cc_pbg005eb-2.png 339 | 323,cc-edited-images\bg\cc_pbg050aa.png,cc_pbg050aa.png 340 | 324,cc-edited-images\bg\cc_ibg130f.png,cc_ibg130f.png 341 | ##325,cc-edited-images\bg\cc_pbg005ab-2.png,cc_pbg005ab-2.png 342 | ##326,cc-edited-images\bg\cc_pbg037a-2.png,cc_pbg037a-2.png 343 | ##327,cc-edited-images\bg\cc_ibg108a-2.png,cc_ibg108a-2.png 344 | 328,cc-edited-images\bg\bg0208ac1.png,bg0208ac1.png 345 | 329,cc-edited-images\bg\cc_ibg130a.png,cc_ibg130a.png 346 | 330,cc-edited-images\bg\bg0208ea1.png,bg0208ea1.png 347 | 331,cc-edited-images\bg\bg0208aa4.png,bg0208aa4.png 348 | ##332,cc-edited-images\bg\cc_ibg060a-2.png,cc_ibg060a-2.png 349 | ##333,cc-edited-images\bg\cc_pbg003b-2.png,cc_pbg003b-2.png 350 | 334,cc-edited-images\bg\cc_ibg130c.png,cc_ibg130c.png 351 | 335,cc-edited-images\bg\cc_ibg123a.png,cc_ibg123a.png 352 | 336,cc-edited-images\bg\cc_ibg100a.png,cc_ibg100a.png 353 | 337,cc-edited-images\bg\bg0604aa.png,bg0604aa.png 354 | 338,cc-edited-images\bg\bg0201na2.png,bg0201na2.png 355 | ##339,cc-edited-images\bg\cc_pbg016a-2.png,cc_pbg016a-2.png 356 | 340,cc-edited-images\bg\bg0208na1.png,bg0208na1.png 357 | # system consistency, RC1 358 | ##341,cc-edited-images\system\config-2.dds,config-2.dds 359 | ##342,cc-edited-images\system\mapparts-2.dds,mapparts-2.dds 360 | ##343,cc-edited-images\system\nameplate-2.dds,nameplate-2.dds 361 | # missed CC_PBG040A through C, RC1 362 | 344,cc-edited-images\bg\cc_pbg040c.png,cc_pbg040c.png 363 | 345,cc-edited-images\bg\cc_pbg040b.png,cc_pbg040b.png 364 | 346,cc-edited-images\bg\cc_pbg040a.png,cc_pbg040a.png 365 | # postcredits audio,RC3 366 | ##347,c0data\postcredits_001_a.ogg,postcredits_001_a.ogg 367 | ##348,c0data\postcredits_001_b.ogg,postcredits_001_b.ogg 368 | ##349,c0data\postcredits_002_a.ogg,postcredits_002_a.ogg 369 | ##350,c0data\postcredits_002_b.ogg,postcredits_002_b.ogg 370 | # CC_IBG010a marked as finished, RC3 371 | 351,cc-edited-images\bg\cc_ibg010a.png,cc_ibg010a.png 372 | # HQ audio for some regular videos (#54), RC4 373 | ##352,c0data\cc_mov001a.ogg,cc_mov001a.ogg 374 | ##353,c0data\cc_int000.ogg,cc_int000.ogg 375 | ##354,c0data\cc_ttl000a.ogg,cc_ttl000a.ogg 376 | # album.dds, gold 377 | 355,cc-edited-images\system\album.dds,album.dds 378 | # last round of CGs for gold 379 | 356,cc-edited-images\bg\cc_ibg001a.png,cc_ibg001a.png 380 | 357,cc-edited-images\bg\cc_ibg008a.png,cc_ibg008a.png 381 | # 1.1, consistency 382 | ##358,cc-edited-images\bg\cc_pbg039d-2.png,cc_pbg039d-2.png 383 | # 1.1, hospital 384 | 359,cc-edited-images\bg\bg0501aa.png,bg0501aa.png 385 | 360,cc-edited-images\bg\bg0501na.png,bg0501na.png 386 | 361,cc-edited-images\bg\bg0501na1.png,bg0501na1.png 387 | 362,cc-edited-images\bg\bg0501na2.png,bg0501na2.png 388 | 363,cc-edited-images\bg\cc_ibg118a.png,cc_ibg118a.png 389 | # 1.1, tips tutorial 390 | 364,cc-edited-images\bg\tutorial.png,tutorial.png 391 | 365,cc-edited-images\system\title_bg.dds,title_bg.dds 392 | -------------------------------------------------------------------------------- /cc-edited-images/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/cc-edited-images/.gitkeep -------------------------------------------------------------------------------- /config.json: -------------------------------------------------------------------------------- 1 | { 2 | "defaultEditor": "notepad", 3 | 4 | "editors": { 5 | "notepad": { 6 | "path": "notepad.exe", 7 | "args": "" 8 | }, 9 | 10 | "notepad++": { 11 | "path": "%ProgramFiles%/Notepad++/notepad++.exe", 12 | "args": "" 13 | }, 14 | 15 | "code": { 16 | "path": "%ProgramFiles%/Microsoft VS Code/Code.exe", 17 | "args": "" 18 | } 19 | }, 20 | 21 | "languages": { 22 | "default": "", 23 | "russian": "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /config.ps1.sample: -------------------------------------------------------------------------------- 1 | # MSVC 2015's MSBuild executable. This is probably already correct. 2 | $msbuild = "C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe" 3 | 4 | # Root of your LanguageBarrier repository (https://github.com/CommitteeOfZero/LanguageBarrier/tree/multi-game), i.e. where LanguageBarrier.sln is 5 | $languagebarrier_dir = $env:USERPROFILE + "\Documents\Visual Studio 2015\Projects\LanguageBarrier" 6 | # Build configuration. This is probably already correct. 7 | $languagebarrier_configuration = "dinput8-Release" 8 | # Add things that need to be on your PATH for this build here, e.g. Visual C++ 2015 binary dir, Qt 5.x for MSVC 2015 binary dir, 7-Zip binary dir 9 | $env:path = "C:\Qt\5.9.2\msvc2015\bin;G:\VS2015_2\VC;" + $env:path -------------------------------------------------------------------------------- /content/CCPatch-README.txt: -------------------------------------------------------------------------------- 1 | CHAOS;CHILD Improvement Patch (Steam) 2 | Committee of Zero 3 | Version 2.2.0 - Month X, 2025 4 | ============================== 5 | https://sonome.dareno.me 6 | https://twitter.com/CommitteeOf0 7 | https://discord.gg/rq4GGCh 8 | https://github.com/CommitteeOfZero 9 | https://www.youtube.com/@committeeofzero 10 | https://www.twitch.tv/CommitteeOfZero 11 | ============================== 12 | 13 | See http://sonome.dareno.me/projects/chaoschild-steam.html for details, contact information and further instructions. 14 | 15 | For troubleshooting, please come to our Discord. You can always find the latest version of the patch at https://github.com/CommitteeOfZero/cc-patch/releases 16 | 17 | ============================== 18 | Changes from 2.0.1: 19 | ============================== 20 | 21 | * GOG compatibility. 22 | * Minor text and consistency fixes. 23 | * Custom Steam assets added. 24 | 25 | ============================== 26 | Changes from 2.0: 27 | ============================== 28 | 29 | * Minor text and consistency fixes. 30 | * The title menu's logo is now properly translated. 31 | 32 | ============================== 33 | Changes from 1.12: 34 | ============================== 35 | 36 | * A full proofreading pass of the game has been completed, fixing large amounts of incorrect terminology, inaccuracies, inconsistencies, as well as improving general readability. Some moderate translation checking was done as well. 37 | * The TIPS have received a full translation check and editing pass. 38 | * Terminology has been made consistent with our CHAOS;HEAD NOAH translation and all our other patches. 39 | * Restored Japanese honorifics. 40 | 41 | ============================== 42 | Changes from 1.11: 43 | ============================== 44 | 45 | * Fixed compatibility with May 20, 2019 Steam update. 46 | * Adjusted edited keyboard help for Steam version. 47 | * Fixed launcher issue with moving save files from a system with a controller installed to a system without one ("There is an error importing setup files"). 48 | * Controller input can now be disabled to work around phantom inputs. 49 | * Replaced update checker technology as the old one was causing launcher crashes for a small number of users. 50 | * Fixed launcher not starting with "Entry Point Not Found" error for a small number of users. 51 | * Fixed replaced videos failing to play for some Linux users. 52 | * More typo fixes etc. 53 | 54 | ============================== 55 | Changes from 1.1: 56 | ============================== 57 | 58 | * Fixed an issue where the installer would crash on pre-AVX CPUs. 59 | 60 | ============================== 61 | Changes from 1.0: 62 | ============================== 63 | 64 | * Steam compatibility. 65 | * Lots of internal updates. 66 | * Removed memory fragmentation workaround as the Steam version now has its own. 67 | * Steam Play (Linux) support. 68 | * Some new translation fixes. 69 | * Includes new prompt explaining the delusion trigger controls. 70 | * Because Z and C are certainly not the most obvious choice. 71 | * Fixed patch installer not working on certain Windows installations lacking multimedia components. 72 | * Fixed game engine bug involving My Documents paths containing special characters on OneDrive. 73 | * We haven't checked if the Steam version still has this issue, but both STEINS;GATE 0 and the Japanese version of CHAOS;CHILD did. 74 | * Worked around game engine bug where, when pausing right before a voiced line, line would fail to play and game would crash on the next voiced line. 75 | * Fixed the goddamn title music. 76 | * In 1.0, our HQ audio option had a bug preventing the title screen BGM from playing if the intro video isn't skipped. Sorry about that. 77 | * Installer now ships as a ZIP archive instead of a self-extracting executable. 78 | 79 | ============================== 80 | Credits: 81 | ============================== 82 | 83 | Translation: 84 | * Rain 85 | * ItsRigs 86 | * MrComputerRevo 87 | * Ice 88 | * ChrisGLink 89 | * Enorovan 90 | 91 | Editing: 92 | * Kumin 93 | * Discontinuous Qualia 94 | * ChrisGLink 95 | * Spider 96 | 97 | Image editing: 98 | * Cypert 99 | * dusk 100 | * rimi 101 | * MrComputerRevo 102 | * Kumin 103 | * Raykable 104 | * Zips 105 | * Enorovan 106 | * Rile_Zugo 107 | 108 | Hacking: 109 | * SomeAnon 110 | * daxxy 111 | * MrComputerRevo 112 | * JoseJL 113 | * Enorovan 114 | 115 | Subtitles: 116 | * zahj 117 | 118 | QC: 119 | * Spider 120 | 121 | Chief Masochism Officer: 122 | * MrComputerRevo 123 | * Enorovan (abdication) 124 | 125 | Masochism Deputies: 126 | * Raniel 127 | * Gel Banana 128 | 129 | Special thanks to our vetted laboratory assistants for playtesting and proofreading! -------------------------------------------------------------------------------- /content/d3d10: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/d3d10 -------------------------------------------------------------------------------- /content/d3d10_1: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/d3d10_1 -------------------------------------------------------------------------------- /content/d3d10core: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/d3d10core -------------------------------------------------------------------------------- /content/d3d11: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/d3d11 -------------------------------------------------------------------------------- /content/d3d9: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/d3d9 -------------------------------------------------------------------------------- /content/dxgi: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/dxgi -------------------------------------------------------------------------------- /content/languagebarrier/defaultconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "__schema_version": 4, 3 | "showAllSettings": false, 4 | "controllerEnabled": true, 5 | "improveDialogueOutlines": true, 6 | "hqFmvAudio": true, 7 | "karaokeSubs": "all", 8 | "selectedController": "" 9 | } -------------------------------------------------------------------------------- /content/languagebarrier/gamedef.json: -------------------------------------------------------------------------------- 1 | { 2 | "__schema_version": 2, 3 | "gameName": "CHAOS;CHILD", 4 | "gameDxVersion": "dx9", 5 | "bgmClear": -1, 6 | "mpkIdScriptMpk": 3, 7 | "mpkIdBgmMpk": 7, 8 | "audioPlayerIdBgm1": 7, 9 | "firstFontId": 91, 10 | "coordsMultiplier": 1.5, 11 | "fontCellWidth": 32, 12 | "fontCellHeight": 32, 13 | "fontRowLength": 64, 14 | "glyphRangeFullwidthStart": 351, 15 | "defaultLineLength": 1280, 16 | "defaultMaxCharacters": 255, 17 | "glyphIdFullwidthSpace": 0, 18 | "glyphIdHalfwidthSpace": 63, 19 | "drawGlyphVersion": "sg0", 20 | "gslPngLoadVersion": "sg0", 21 | "hasBacklogUnderline": false, 22 | "hasSghdPhone": false, 23 | "hasRine": false, 24 | "hasAutoSkipHide": false, 25 | "needsClearlistTextPositionAdjust": false, 26 | "needsCcBacklogNamePosAdjust": true, 27 | "hasSplitFont": true, 28 | "hasDoubleGetSc3StringDisplayWidth": true, 29 | "hasDrawPhoneText": false, 30 | "hasGetSc3StringLineCount": false, 31 | "videoTableOrigCount": 88, 32 | "dialogueLayoutWidthLookupRetOffsets": "ccsteam", 33 | "ccBacklogNamePosAdjustVersion": "ccsteam", 34 | "enableBinkAudioOffset": true, 35 | "compiler": "msvc2015", 36 | "signatures": { 37 | "bink2w32": { 38 | "decompAudioInner": { 39 | "occurrence": 0, 40 | "offset": 0, 41 | "pattern": "53 8B DC 83 EC 08 83 E4 F0 83 C4 04 55 8B 6B 04 89 6C 24 04 8B EC B8" 42 | } 43 | }, 44 | "game": { 45 | "canaryMagesLauncher": { 46 | "occurrence": 0, 47 | "offset": 0, 48 | "pattern": "E8 ?? ?? ?? ?? 68 ?? ?? ?? ?? 6A FF 68 ?? ?? ?? ?? FF B6" 49 | }, 50 | "canary": { 51 | "occurrence": 0, 52 | "offset": 0, 53 | "pattern": "80 3D ?? ?? ?? ?? ?? 74 ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8" 54 | }, 55 | "closeAllSystems": { 56 | "occurrence": 0, 57 | "offset": 0, 58 | "pattern": "80 3D ?? ?? ?? ?? ?? 74 ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8 ?? ?? ?? ?? E8" 59 | }, 60 | "dialogueLayoutRelated": { 61 | "occurrence": 0, 62 | "offset": 0, 63 | "pattern": "55 8B EC 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 FC 8B 45 08 89" 64 | }, 65 | "dialogueLayoutWidthLookup1": { 66 | "occurrence": 0, 67 | "offset": 0, 68 | "pattern": "73 1A 85 DB 74 0B 8A" 69 | }, 70 | "dialogueLayoutWidthLookup2": { 71 | "occurrence": 0, 72 | "offset": 7, 73 | "pattern": "83 BD ?? ?? ?? ?? ?? 74 08 8A ?? ?? ?? ?? ?? EB 06" 74 | }, 75 | "dialogueLayoutWidthLookup3": { 76 | "occurrence": 0, 77 | "offset": 0, 78 | "pattern": "0F B6 ?? ?? ?? ?? ?? B8 ?? ?? ?? ?? 89 4B FC 46" 79 | }, 80 | "drawDialogue": { 81 | "occurrence": 0, 82 | "offset": 0, 83 | "pattern": "55 8B EC 83 EC 10 53 69 ?? ?? ?? ?? ?? ?? 83 BB ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 56 57 E8 ?? ?? ?? ?? F3 ?? ?? ?? ?? ?? ?? ?? 33 F6 89 75 F8 39 ?? ?? ?? ?? ?? 0F 86 ?? ?? ?? ?? 0F 1F 44 00 00 8A ?? ?? ?? ?? ?? ?? 88 45 FF 84 C0 0F 84 ?? ?? ?? ?? 8B 4D 0C 8B 7D 08" 84 | }, 85 | "drawDialogue2": { 86 | "occurrence": 0, 87 | "offset": 0, 88 | "pattern": "55 8B EC 83 EC 10 53 69 ?? ?? ?? ?? ?? ?? 83 BB ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 56 57 E8 ?? ?? ?? ?? F3 ?? ?? ?? ?? ?? ?? ?? 33 F6 89 75 F8 39 ?? ?? ?? ?? ?? 0F 86 ?? ?? ?? ?? 0F 1F 44 00 00 8A ?? ?? ?? ?? ?? ?? 88 45 FF 84 C0 0F 84 ?? ?? ?? ?? 8B 4D 0C 69" 89 | }, 90 | "drawGlyph": { 91 | "occurrence": 0, 92 | "offset": 0, 93 | "pattern": "55 8B EC 83 EC 34 A1 ?? ?? ?? ?? 33 C5 89 45 FC F3 0F 10 55 10" 94 | }, 95 | "drawRectangle": { 96 | "occurrence": 0, 97 | "offset": 0, 98 | "pattern": "55 8B EC 83 EC 24 A1 ?? ?? ?? ?? 33 C5 89 45 FC F3 0F 10 45 08" 99 | }, 100 | "earlyInit": { 101 | "occurrence": 0, 102 | "offset": 0, 103 | "pattern": "55 8B EC 53 56 57 8B 7D 0C" 104 | }, 105 | "getSc3StringDisplayWidthFont1": { 106 | "occurrence": 0, 107 | "offset": 0, 108 | "pattern": "55 8B EC 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 FC 8B 45 0C B9" 109 | }, 110 | "getSc3StringDisplayWidthFont2": { 111 | "occurrence": 0, 112 | "offset": 0, 113 | "pattern": "55 8B EC 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 FC 8B 45 0C B9" 114 | }, 115 | "getStringFromScript": { 116 | "occurrence": 0, 117 | "offset": 0, 118 | "pattern": "55 8B EC 8B 45 08 56 8B ?? ?? ?? ?? ?? ?? 0F B6 4E 07 0F B6 46 06" 119 | }, 120 | "gslPngload": { 121 | "occurrence": 0, 122 | "offset": 0, 123 | "pattern": "55 8B EC 6A 00 B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 84 C0 75 1A" 124 | }, 125 | "mgsBinkSetPaused": { 126 | "occurrence": 0, 127 | "offset": 0, 128 | "pattern": "55 8B EC 8A 45 08 38 41 02 74 03 88 41 02 33 C0 5D C2 04 00" 129 | }, 130 | "mpkConstructor": { 131 | "occurrence": 0, 132 | "offset": 0, 133 | "pattern": "55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 51 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 8B D9" 134 | }, 135 | "mpkFopenById": { 136 | "occurrence": 0, 137 | "offset": 0, 138 | "pattern": "55 8B EC 56 8B F1 E8 ?? ?? ?? ?? 8B 45 10 89 46 04 8B 45 08 85 C0 75 25 E8 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 6A 01 6A 07 E8 ?? ?? ?? ?? 83 C4 0C B8 ?? ?? ?? ?? 5E 5D C2 0C 00 89" 139 | }, 140 | "mpkMount": { 141 | "occurrence": 3, 142 | "offset": 0, 143 | "pattern": "55 8B EC 56 FF 75 08 8B F1 E8 ?? ?? ?? ?? 85 C0 75 56" 144 | }, 145 | "sc3Eval": { 146 | "occurrence": 0, 147 | "offset": 0, 148 | "pattern": "55 8B EC 83 EC 10 33 C0 A3" 149 | }, 150 | "setSamplerStateWrapper": { 151 | "occurrence": 0, 152 | "offset": 0, 153 | "pattern": "55 8B EC 56 8B 75 0C 8B C6" 154 | }, 155 | "textureLoadInit1": { 156 | "occurrence": 0, 157 | "offset": 0, 158 | "pattern": "55 8B EC 51 6A 00 8D 45 FC" 159 | }, 160 | "textureLoadInit2": { 161 | "occurrence": 0, 162 | "offset": 0, 163 | "pattern": "55 8B EC 51 8D 45 FC 50 0F B6 45 10" 164 | }, 165 | "useOfAudioPlayers": { 166 | "occurrence": 0, 167 | "offset": 17, 168 | "pattern": "55 8B EC 69 ?? ?? ?? ?? ?? ?? 83 7D 14 00" 169 | }, 170 | "useOfD3D9Ex": { 171 | "occurrence": 0, 172 | "offset": 5, 173 | "pattern": "85 C9 75 29 68 ?? ?? ?? ?? 6A 20 E8 ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 85 C9" 174 | }, 175 | "useOfMgsD3D9State": { 176 | "occurrence": 0, 177 | "offset": 6, 178 | "pattern": "C7 05 ?? ?? ?? ?? ?? ?? ?? ?? F2 ?? ?? ?? ?? ?? ?? ?? ?? 8B C1 C1 E8 1F" 179 | }, 180 | "useOfPCurrentBgm": { 181 | "occurrence": 0, 182 | "offset": 2, 183 | "pattern": "C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C3", 184 | "expr": "*ptr + 0x428" 185 | }, 186 | "useOfPLoopBgm": { 187 | "occurrence": 0, 188 | "offset": 2, 189 | "pattern": "C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C3", 190 | "expr": "*ptr + 0x428 + 4" 191 | }, 192 | "useOfPShouldPlayBgm": { 193 | "occurrence": 0, 194 | "offset": 2, 195 | "pattern": "C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C7 80 ?? ?? ?? ?? ?? ?? ?? ?? C3", 196 | "expr": "*ptr + 0x428 + 12" 197 | }, 198 | "useOfPresentParameters": { 199 | "occurrence": 0, 200 | "offset": 1, 201 | "pattern": "68 ?? ?? ?? ?? 50 FF 91 ?? ?? ?? ?? 8B F0" 202 | }, 203 | "useOfGlyphWidthsFont1": { 204 | "occurrence": 1, 205 | "offset": 3, 206 | "pattern": "0F B6 ?? ?? ?? ?? ?? 0F AF C3 C1 E8 05 03 F0 47 EB 44", 207 | "expr": "*ptr" 208 | }, 209 | "useOfGlyphWidthsFont2": { 210 | "occurrence": 0, 211 | "offset": 3, 212 | "pattern": "0F B6 ?? ?? ?? ?? ?? 0F AF C3 C1 E8 05 03 F0 47 EB 44", 213 | "expr": "*ptr" 214 | }, 215 | "useOfColors": { 216 | "occurrence": 0, 217 | "offset": 3, 218 | "pattern": "8B ?? ?? ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 89 45 20", 219 | "expr": "*ptr" 220 | }, 221 | "useOfDialoguePages": { 222 | "occurrence": 0, 223 | "offset": 0, 224 | "pattern": "55 8B EC 83 EC 10 53 69 ?? ?? ?? ?? ?? ?? 83 BB ?? ?? ?? ?? ?? 0F 84 ?? ?? ?? ?? 56 57 E8 ?? ?? ?? ?? F3 ?? ?? ?? ?? ?? ?? ?? 33 F6 89 75 F8 39 ?? ?? ?? ?? ?? 0F 86 ?? ?? ?? ?? 0F 1F 44 00 00 8A ?? ?? ?? ?? ?? ?? 88 45 FF 84 C0 0F 84 ?? ?? ?? ?? 8B 4D 0C 8B 7D 08", 225 | "expr": "*(ptr + 0x10) - 0xC" 226 | }, 227 | "useOfScriptIdsToFileIds": { 228 | "occurrence": 0, 229 | "offset": 3, 230 | "pattern": "89 ?? ?? ?? ?? ?? ?? 89 ?? ?? ?? ?? ?? C7 05 ?? ?? ?? ?? ?? ?? ?? ?? 5F 5E 8B E5", 231 | "expr": "*ptr" 232 | }, 233 | "clibFopen": { 234 | "occurrence": 1, 235 | "offset": 0, 236 | "pattern": "55 8B EC 6A 40 FF 75 0C" 237 | }, 238 | "sg0DrawGlyph2": { 239 | "occurrence": 0, 240 | "offset": 0, 241 | "pattern": "55 8B EC 83 EC 7C A1 ?? ?? ?? ?? 33 C5 89 45 FC F3 0F 10 5D 14" 242 | }, 243 | "dlgWordwrapGenerateMask": { 244 | "occurrence": 0, 245 | "offset": 0, 246 | "pattern": "55 8B EC 83 EC 14 56 33 C9" 247 | }, 248 | "useOfDlgWordwrapString": { 249 | "occurrence": 0, 250 | "offset": 3, 251 | "pattern": "0F B7 ?? ?? ?? ?? ?? 66 85 C0 0F 89", 252 | "expr": "*ptr" 253 | }, 254 | "useOfDlgWordwrapLength": { 255 | "occurrence": 0, 256 | "offset": 2, 257 | "pattern": "39 ?? ?? ?? ?? ?? 0F 86 ?? ?? ?? ?? 53 33 DB", 258 | "expr": "*ptr" 259 | }, 260 | "useOfDlgWordwrapMask": { 261 | "occurrence": 0, 262 | "offset": 9, 263 | "pattern": "FF 24 ?? ?? ?? ?? ?? C6 87 ?? ?? ?? ?? ?? E9", 264 | "expr": "*ptr" 265 | }, 266 | "readOggMetadata": { 267 | "occurrence": 0, 268 | "offset": 0, 269 | "pattern": "55 8B EC 83 EC 08 80 3D ?? ?? ?? ?? ?? 56 8B F1 89 75 F8" 270 | }, 271 | "useOfMpkObjects": { 272 | "occurrence": 0, 273 | "offset": 13, 274 | "pattern": "68 ?? ?? ?? ?? 6A 10 68 A8 03 00 00 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? C3", 275 | "expr": "*ptr" 276 | }, 277 | "setTipContent": { 278 | "occurrence": 0, 279 | "offset": 0, 280 | "pattern": "55 8B EC 51 8D 45 FC 50 6A 00 6A 07" 281 | }, 282 | "drawTipContent": { 283 | "occurrence": 0, 284 | "offset": 0, 285 | "pattern": "55 8B EC 8B ?? ?? ?? ?? ?? 83 EC 0C 8B 55 14" 286 | }, 287 | "drawSprite": { 288 | "occurrence": 2, 289 | "offset": 0, 290 | "pattern": "55 8B EC 83 EC 2C A1 ?? ?? ?? ?? 33 C5 89 45 FC F3 0F 10 45 1C" 291 | }, 292 | "useOfCcBacklogCurLine": { 293 | "occurrence": 0, 294 | "offset": 2, 295 | "pattern": "39 ?? ?? ?? ?? ?? 75 7C 83 3C ?? ?? ?? ?? ?? ?? 66 0F 6E C1 0F 5B C0", 296 | "expr": "*ptr" 297 | }, 298 | "useOfCcBacklogLineHeights": { 299 | "occurrence": 0, 300 | "offset": 16, 301 | "pattern": "8B ?? ?? ?? ?? ?? ?? 2B ?? ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? ?? 83 C1 5E 03 C1 83 F8 2E", 302 | "expr": "*ptr" 303 | }, 304 | "ccBacklogHighlightDrawRet": { 305 | "occurrence": 0, 306 | "offset": 0, 307 | "pattern": "8B ?? ?? ?? ?? ?? 83 C4 28 46 3B F2 0F 82" 308 | }, 309 | "malloc": { 310 | "occurrence": 0, 311 | "offset": 0, 312 | "pattern": "55 8B EC 56 8B 75 08 83 FE E0" 313 | }, 314 | "callocBase": { 315 | "occurrence": 0, 316 | "offset": 0, 317 | "pattern": "8B FF 55 8B EC 56 8B 75 08 85 F6 74 0C" 318 | }, 319 | "msize": { 320 | "occurrence": 1, 321 | "offset": 0, 322 | "pattern": "55 8B EC 83 7D 08 00 75 15" 323 | }, 324 | "free": { 325 | "occurrence": 0, 326 | "offset": 0, 327 | "pattern": "55 8B EC 83 7D 08 00 74 2D FF 75 08 6A 00" 328 | }, 329 | "realloc": { 330 | "occurrence": 0, 331 | "offset": 0, 332 | "pattern": "8B FF 55 8B EC 57 8B 7D 08 85 FF" 333 | }, 334 | "instTableUser1": { 335 | "occurrence": 0, 336 | "offset": 8, 337 | "pattern": "83 E8 0F 75 ?? 8B 04 8D ?? ?? ?? ??", 338 | "expr": "*ptr" 339 | }, 340 | "instTableGraph": { 341 | "occurrence": 0, 342 | "offset": 5, 343 | "pattern": "EB ?? 8B 04 8D ?? ?? ?? ?? 56 FF D0", 344 | "expr": "*ptr" 345 | }, 346 | "instTableSystem": { 347 | "occurrence": 1, 348 | "offset": 5, 349 | "pattern": "EB ?? 8B 04 8D ?? ?? ?? ?? 56 FF D0", 350 | "expr": "*ptr" 351 | }, 352 | "getFlag": { 353 | "occurrence": 0, 354 | "offset": 0, 355 | "pattern": "55 8B EC 8B 4D 08 B2 01 56" 356 | }, 357 | "setFlag": { 358 | "occurrence": 0, 359 | "offset": 0, 360 | "pattern": "55 8B EC 8B 4D 08 8B D1 C1 EA 03" 361 | }, 362 | "chkViewDic": { 363 | "occurrence": 1, 364 | "offset": 0, 365 | "pattern": "55 8B EC 8B 4D 08 8B 45 0C 8D 14 48 A1" 366 | }, 367 | "useOfVideoTable": { 368 | "occurrence": 0, 369 | "offset": 3, 370 | "pattern": "FF 34 ?? ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 68 00 04 00 00" 371 | }, 372 | "ccBacklogNamePosCode": { 373 | "occurrence": 0, 374 | "offset": 0, 375 | "pattern": "89 43 04 8B ?? ?? ?? ?? ?? 89 33 8B" 376 | }, 377 | "ccBacklogNamePosAdjustRet": { 378 | "occurrence": 0, 379 | "offset": 9, 380 | "pattern": "89 43 04 8B ?? ?? ?? ?? ?? 89 33 8B" 381 | }, 382 | "openMyGames": { 383 | "occurrence": 0, 384 | "offset": 0, 385 | "pattern": "55 8B EC 51 56 8D 45 FC 50" 386 | }, 387 | "SNDgetPlayLevel": { 388 | "occurrence": 0, 389 | "offset": 0, 390 | "pattern": "55 8B EC 8B 45 08 83 F8 03" 391 | }, 392 | "useOfWavData": { 393 | "occurrence": 0, 394 | "offset": 2, 395 | "pattern": "89 ?? ?? ?? ?? ?? 8B 45 08 89 ?? ?? ?? ?? ?? C7 81 ?? ?? ?? ?? ?? ?? ?? ?? C7 81 ?? ?? ?? ?? ?? ?? ?? ?? 83 BE", 396 | "expr": "*ptr" 397 | }, 398 | "useOfVoiceTable": { 399 | "occurrence": 0, 400 | "offset": 2, 401 | "pattern": "8B ?? ?? ?? ?? ?? 53 56 8B D8 0F B7 74 8A 04", 402 | "expr": "*ptr" 403 | }, 404 | "SCRcomKeyWaitTimer": { 405 | "occurrence": 0, 406 | "offset": 0, 407 | "pattern": "55 8B EC 83 EC 08 53 56 8B 75 08 57 8B ?? ?? ?? ?? ?? 8D 47 02" 408 | }, 409 | "useOfSCRflag": { 410 | "occurrence": 0, 411 | "offset": 2, 412 | "pattern": "83 3D ?? ?? ?? ?? ?? 74 90 5E 8B E5 5D C3", 413 | "expr": "*ptr" 414 | }, 415 | "PadUpdateDevice": { 416 | "occurrence": 0, 417 | "offset": 0, 418 | "pattern": "80 3D ?? ?? ?? ?? ?? 75 03 33 C0 C3" 419 | }, 420 | "useOfControllerGuid": { 421 | "occurrence": 0, 422 | "offset": 3, 423 | "pattern": "6A 28 68 ?? ?? ?? ?? ?? E8", 424 | "expr": "*ptr" 425 | } 426 | } 427 | } 428 | } -------------------------------------------------------------------------------- /content/languagebarrier/patchdef.json: -------------------------------------------------------------------------------- 1 | { 2 | "__schema_version": 2, 3 | "appdatadir": "Committee of Zero\\CCSteam", 4 | "patchName": "CHAOS;CHILD Improvement Patch (Steam) (2.2.0)", 5 | "patchVersion": "2.2.0", 6 | "base": { 7 | "hookText": true, 8 | "improveDialogueOutlines": false, 9 | "redoDialogueWordwrap": true, 10 | "textureFiltering": true, 11 | "exitBlackScreenFix": false, 12 | "overrideLoopMetadata": true, 13 | "fixPlayLevelNullDeref": true, 14 | "dialogueRedesignYOffsetShift": 11, 15 | "dialogueRedesignLineHeightShift": -3, 16 | "fontBFileName": "FONT_B.dds", 17 | "tipReimplementation": false, 18 | "ccBacklogHighlight": true, 19 | "ccBacklogHighlightHeightShift": 30.0, 20 | "ccBacklogHighlightSpriteHeight": 213.0, 21 | "ccBacklogHighlightSpriteY": 1824.0, 22 | "ccBacklogHighlightYOffsetShift": -5.0, 23 | "usePoolAllocators": false, 24 | "customInstGetDicEnabled": true, 25 | "customInstGetDicGroup": "user1", 26 | "customInstGetDicOp": 38, 27 | "blockingKeyWaitTimer": true, 28 | "hijackLauncher": "LauncherC0.exe", 29 | "fmv": { 30 | "fonts": [ 31 | "SoukouMincho.ttf", 32 | "Handy_Andy.otf", 33 | "HighVoltage Rough.ttf", 34 | "hultog.regular_0.ttf", 35 | "kochi-gothic-subst.ttf", 36 | "Typography Times Regular.ttf" 37 | ], 38 | "subs": { 39 | }, 40 | "videoRedirection": { 41 | "diseff_001a.bk2": "DISEFF_001A.bik", 42 | "diseff_001a_en.bk2": "DISEFF_001A.bik", 43 | "cc_mov005a.bk2": "cc_mov005a.bik", 44 | "cc_mov005a_en.bk2": "cc_mov005a.bik", 45 | "cc_ttl001a.bk2": "cc_ttl001a.bik", 46 | "cc_ttl002a.bk2": "cc_ttl002a.bik", 47 | "cc_ttl003a.bk2": "cc_ttl003a.bik", 48 | "cc_ttl004a.bk2": "cc_ttl004a.bik", 49 | "cc_ttl005a.bk2": "cc_ttl005a.bik", 50 | "cc_ttl006a.bk2": "cc_ttl006a.bik", 51 | "cc_ttl007a.bk2": "cc_ttl007a.bik", 52 | "cc_ttl008a.bk2": "cc_ttl008a.bik", 53 | "cc_ttl009a.bk2": "cc_ttl009a.bik", 54 | "cc_ttl010a.bk2": "cc_ttl010a.bik", 55 | "cc_ttl011a.bk2": "cc_ttl011a.bik", 56 | "cc_ttl012a.bk2": "cc_ttl012a.bik", 57 | "cc_ttl013a.bk2": "cc_ttl013a.bik", 58 | "cc_ttl014a.bk2": "cc_ttl014a.bik", 59 | "cc_ttl015a.bk2": "cc_ttl015a.bik", 60 | "cc_ttl016a.bk2": "cc_ttl016a.bik", 61 | "cc_int000.bk2": "cc_int000.bik" 62 | }, 63 | "additionalVideos": [ 64 | "postcredits_001_a", 65 | "postcredits_001_b", 66 | "postcredits_002_a", 67 | "postcredits_002_b" 68 | ], 69 | "audioRedirection": { 70 | "postcredits_001_a.bk2": "postcredits_001_a.ogg", 71 | "postcredits_001_b.bk2": "postcredits_001_b.ogg", 72 | "postcredits_002_a.bk2": "postcredits_002_a.ogg", 73 | "postcredits_002_b.bk2": "postcredits_002_b.ogg" 74 | } 75 | }, 76 | "physicalFileRedirection": { 77 | "script.mpk": "enscript.mpk" 78 | }, 79 | "fileRedirection": { 80 | "system": { 81 | "8": 0, 82 | "10": 0, 83 | "1": 3, 84 | "3": 4, 85 | "4": 5, 86 | "5": 6, 87 | "12": 7, 88 | "13": 8, 89 | "14": 9, 90 | "19": 10, 91 | "22": 11, 92 | "23": 12, 93 | "24": 13, 94 | "25": 14, 95 | "26": 15, 96 | "27": 16, 97 | "30": 17, 98 | "32": 101, 99 | "15": 105, 100 | "17": 106, 101 | "21": 239, 102 | "0": 355, 103 | "29": 365 104 | }, 105 | "manual": { 106 | "0": 1, 107 | "1": 2 108 | }, 109 | "bg": { 110 | "881": 18, 111 | "402": 107, 112 | "308": 108, 113 | "310": 109, 114 | "526": 111, 115 | "587": 112, 116 | "373": 113, 117 | "560": 114, 118 | "612": 115, 119 | "465": 116, 120 | "541": 117, 121 | "581": 118, 122 | "627": 119, 123 | "410": 120, 124 | "375": 121, 125 | "374": 122, 126 | "607": 123, 127 | "527": 124, 128 | "546": 125, 129 | "648": 126, 130 | "644": 127, 131 | "309": 128, 132 | "522": 129, 133 | "559": 130, 134 | "569": 131, 135 | "532": 132, 136 | "584": 133, 137 | "636": 134, 138 | "552": 135, 139 | "605": 136, 140 | "525": 137, 141 | "110": 138, 142 | "83": 139, 143 | "84": 140, 144 | "613": 141, 145 | "567": 142, 146 | "594": 143, 147 | "517": 144, 148 | "359": 145, 149 | "543": 146, 150 | "519": 147, 151 | "653": 148, 152 | "46": 149, 153 | "82": 150, 154 | "371": 151, 155 | "305": 152, 156 | "516": 153, 157 | "515": 154, 158 | "545": 155, 159 | "573": 156, 160 | "539": 157, 161 | "655": 158, 162 | "668": 159, 163 | "372": 160, 164 | "514": 161, 165 | "535": 162, 166 | "518": 163, 167 | "553": 164, 168 | "626": 166, 169 | "623": 167, 170 | "571": 168, 171 | "638": 169, 172 | "554": 170, 173 | "604": 171, 174 | "550": 172, 175 | "611": 173, 176 | "537": 174, 177 | "32": 175, 178 | "555": 176, 179 | "356": 177, 180 | "530": 178, 181 | "628": 179, 182 | "466": 180, 183 | "575": 181, 184 | "544": 182, 185 | "311": 183, 186 | "650": 184, 187 | "630": 185, 188 | "570": 186, 189 | "534": 187, 190 | "583": 188, 191 | "55": 189, 192 | "365": 190, 193 | "366": 191, 194 | "597": 192, 195 | "590": 193, 196 | "568": 194, 197 | "633": 195, 198 | "632": 196, 199 | "596": 197, 200 | "578": 198, 201 | "563": 199, 202 | "595": 200, 203 | "637": 201, 204 | "622": 202, 205 | "377": 203, 206 | "615": 204, 207 | "593": 205, 208 | "631": 206, 209 | "562": 207, 210 | "586": 208, 211 | "307": 209, 212 | "306": 210, 213 | "557": 211, 214 | "521": 212, 215 | "324": 213, 216 | "580": 214, 217 | "414": 215, 218 | "639": 216, 219 | "624": 217, 220 | "625": 218, 221 | "649": 219, 222 | "85": 220, 223 | "614": 221, 224 | "86": 222, 225 | "528": 223, 226 | "635": 224, 227 | "548": 225, 228 | "589": 226, 229 | "312": 227, 230 | "531": 228, 231 | "561": 229, 232 | "533": 230, 233 | "572": 232, 234 | "574": 233, 235 | "547": 234, 236 | "524": 235, 237 | "592": 236, 238 | "577": 237, 239 | "629": 238, 240 | "885": 243, 241 | "886": 244, 242 | "887": 245, 243 | "888": 246, 244 | "889": 247, 245 | "890": 248, 246 | "891": 249, 247 | "892": 250, 248 | "893": 251, 249 | "894": 252, 250 | "895": 253, 251 | "203": 254, 252 | "350": 256, 253 | "77": 260, 254 | "499": 261, 255 | "820": 262, 256 | "236": 263, 257 | "242": 264, 258 | "449": 265, 259 | "74": 267, 260 | "66": 268, 261 | "245": 270, 262 | "215": 273, 263 | "225": 274, 264 | "214": 276, 265 | "652": 277, 266 | "451": 278, 267 | "243": 279, 268 | "407": 282, 269 | "401": 284, 270 | "224": 286, 271 | "67": 287, 272 | "237": 288, 273 | "651": 290, 274 | "498": 291, 275 | "819": 292, 276 | "244": 293, 277 | "256": 296, 278 | "645": 298, 279 | "403": 299, 280 | "223": 301, 281 | "452": 305, 282 | "428": 306, 283 | "354": 307, 284 | "70": 309, 285 | "257": 310, 286 | "78": 313, 287 | "833": 314, 288 | "71": 316, 289 | "81": 317, 290 | "427": 318, 291 | "646": 321, 292 | "654": 323, 293 | "453": 324, 294 | "73": 328, 295 | "448": 329, 296 | "76": 330, 297 | "69": 331, 298 | "450": 334, 299 | "440": 335, 300 | "419": 336, 301 | "255": 337, 302 | "37": 338, 303 | "79": 340, 304 | "642": 344, 305 | "641": 345, 306 | "640": 346, 307 | "327": 351, 308 | "318": 356, 309 | "325": 357, 310 | "210": 359, 311 | "211": 360, 312 | "212": 361, 313 | "213": 362, 314 | "433": 363, 315 | "896": 364 316 | } 317 | }, 318 | "loopMetadata": { 319 | "bgm": { 320 | "6": { 321 | "loopStart": 925190, 322 | "loopLength": 6685184 323 | }, 324 | "12": { 325 | "loopStart": 490640, 326 | "loopLength": 6373191 327 | }, 328 | "16": { 329 | "loopStart": 385570, 330 | "loopLength": 7088120 331 | }, 332 | "22": { 333 | "loopStart": 1016614, 334 | "loopLength": 8174245 335 | }, 336 | "26": { 337 | "loopStart": 1305740, 338 | "loopLength": 6105740 339 | }, 340 | "30": { 341 | "loopStart": 483165, 342 | "loopLength": 5641880 343 | }, 344 | "36": { 345 | "loopStart": 267819, 346 | "loopLength": 8496363 347 | }, 348 | "44": { 349 | "loopStart": 479869, 350 | "loopLength": 7679869 351 | }, 352 | "48": { 353 | "loopStart": 635070, 354 | "loopLength": 7724300 355 | }, 356 | "52": { 357 | "loopStart": 73389, 358 | "loopLength": 8425389 359 | }, 360 | "66": { 361 | "loopStart": 504611, 362 | "loopLength": 7812612 363 | }, 364 | "81": { 365 | "loopStart": 1677632, 366 | "loopLength": 6835999 367 | } 368 | } 369 | } 370 | }, 371 | "settings": { 372 | "improveDialogueOutlines": { 373 | "type": "bool", 374 | "setters": { 375 | "improveDialogueOutlines": true, 376 | "outlinePadding": 4, 377 | "outlineCellWidth": 38, 378 | "outlineCellHeight": 38, 379 | "outlineTextureId": 350, 380 | "fontOutlineAFileName": "font-outline_A.dds", 381 | "fontOutlineBFileName": "font-outline_B.dds" 382 | } 383 | }, 384 | "hqFmvAudio": { 385 | "type": "bool", 386 | "setters": { 387 | "fmv": { 388 | "audioRedirection": { 389 | "movie_op2.bk2": "movie_op2_hq.ogg", 390 | "movie_op.bk2": "movie_op_hq.ogg", 391 | "cc_ed001a.bk2": "cc_ed001a_hq.ogg", 392 | "cc_ed002a.bk2": "cc_ed002a_hq.ogg", 393 | "cc_mov001a.bk2": "cc_mov001a.ogg", 394 | "cc_int000.bk2": "cc_int000.ogg", 395 | "cc_ttl000a.bk2": "cc_ttl000a.ogg" 396 | } 397 | } 398 | } 399 | }, 400 | "karaokeSubs": { 401 | "type": "choice", 402 | "choices": { 403 | "all": { 404 | "fmv": { 405 | "subs": { 406 | "cc_ed001a.bk2": "lq_cc_ed001a.bk2.ass", 407 | "cc_ed002a.bk2": "lq_cc_ed002a.bk2.ass", 408 | "movie_op.bk2": "lq_movie_op.bk2.ass", 409 | "movie_op2.bk2": "lq_movie_op2.bk2.ass" 410 | } 411 | } 412 | }, 413 | "karaonly": { 414 | "fmv": { 415 | "subs": { 416 | "cc_ed001a.bk2": "cc_ed001a_karaonly.ass", 417 | "cc_ed002a.bk2": "cc_ed002a_karaonly.ass", 418 | "movie_op.bk2": "movie_op_karaonly.ass", 419 | "movie_op2.bk2": "movie_op2_karaonly.ass" 420 | } 421 | } 422 | }, 423 | "tlonly": { 424 | "fmv": { 425 | "subs": { 426 | "cc_ed001a.bk2": "cc_ed001a_tlonly.ass", 427 | "cc_ed002a.bk2": "cc_ed002a_tlonly.ass", 428 | "movie_op.bk2": "movie_op_tlonly.ass", 429 | "movie_op2.bk2": "movie_op2_tlonly.ass" 430 | } 431 | } 432 | } 433 | } 434 | } 435 | } 436 | } -------------------------------------------------------------------------------- /content/languagebarrier/subs/cc_ed001a_tlonly.ass: -------------------------------------------------------------------------------- 1 | [Script Info] 2 | ; Script generated by Aegisub 3.2.2 3 | ; http://www.aegisub.org/ 4 | Title: Default Aegisub file 5 | ScriptType: v4.00+ 6 | WrapStyle: 0 7 | ScaledBorderAndShadow: yes 8 | YCbCr Matrix: TV.601 9 | PlayResX: 1280 10 | PlayResY: 720 11 | 12 | [Aegisub Project Garbage] 13 | Last Style Storage: Default 14 | Audio File: karasubvideos/cc_ed001a.mkv 15 | Video File: karasubvideos/cc_ed001a.mkv 16 | Video AR Mode: 4 17 | Video AR Value: 1.777778 18 | Video Zoom Percent: 0.625000 19 | Scroll Position: 63 20 | Active Line: 70 21 | Video Position: 1388 22 | 23 | [V4+ Styles] 24 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding 25 | Style: translation-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,1,25,25,25,1 26 | Style: romaji-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,4,25,25,25,1 27 | Style: Kanji-furigana,瀬戸フォント,16.5,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,6,0,1,1,1,6,25,25,25,1 28 | Style: Default-furigana,Arial,10,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1 29 | Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 30 | Style: romaji,Typography times,50,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,65,100,3,0,1,2,2,4,25,25,25,1 31 | Style: Kanji,装甲明朝,32,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,7,0,1,2,2,6,25,25,25,1 32 | Style: translation,Typography times,50,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,65,100,3,0,1,2,2,1,25,25,25,1 33 | 34 | [Events] 35 | Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text 36 | Comment: 0,0:00:46.26,0:00:52.09,translation,,0,0,0,karaoke,{\k1}Though capable of holding innocence and purity 37 | Comment: 0,0:00:52.50,0:00:58.20,translation,,0,0,0,karaoke,{\k1}No eyes are spared the shadow of an ephemeral fate 38 | Comment: 0,0:00:58.53,0:01:04.52,translation,,0,0,0,karaoke,{\k1}Dazzling moonlight settles over a house of cards 39 | Comment: 0,0:01:04.83,0:01:10.00,translation,,0,0,0,karaoke,{\k1}A place entirely lost to silence 40 | Comment: 0,0:01:10.46,0:01:17.18,translation,,0,0,0,karaoke,{\k1}You will realize your foolish choice 41 | Comment: 0,0:01:17.39,0:01:22.98,translation,,0,0,0,karaoke,{\k1}O lambs of the derisive Lord 42 | Comment: 0,0:01:22.98,0:01:29.05,translation,,0,0,0,karaoke,{\k1}Dreams swelling with insanity are brought forth 43 | Comment: 0,0:01:29.70,0:01:35.38,translation,,0,0,0,karaoke,{\k1}Eradicating that which is righteous 44 | Comment: 0,0:01:35.86,0:01:44.66,translation,,0,0,0,karaoke,{\k1}And now, should everything reflected here simply be hypocritical deception 45 | Comment: 0,0:01:44.70,0:01:50.86,translation,,0,0,0,karaoke,{\k1}Then the corpses of the victims shall speak unto you the truth 46 | Comment: 0,0:01:50.95,0:01:56.73,translation,,0,0,0,karaoke,{\k1}The New World will quicken as it awaits that moment 47 | Comment: 0,0:01:57.03,0:02:03.24,translation,,0,0,0,karaoke,{\k1}Down into the peering abyss, through a chaining revelation 48 | Comment: 0,0:02:03.32,0:02:09.20,translation,,0,0,0,karaoke,{\k1}A sole glimmer of light reveals 49 | Comment: 0,0:02:09.32,0:02:14.79,translation,,0,0,0,karaoke,{\k1}The truth: an exquisite pain 50 | Comment: 0,0:02:18.57,0:02:24.37,translation,,0,0,0,karaoke,{\k1}All sneer at the treacherous who shield themselves 51 | Comment: 0,0:02:24.82,0:02:30.48,translation,,0,0,0,karaoke,{\k1}And the ruthless who disguise themselves 52 | Comment: 0,0:02:30.84,0:02:36.92,translation,,0,0,0,karaoke,{\k1}The temple of vanity acts as the puppet's prison 53 | Comment: 0,0:02:37.15,0:02:42.20,translation,,0,0,0,karaoke,{\k1}Its key warped by the outrageous 54 | Comment: 0,0:02:42.78,0:02:49.37,translation,,0,0,0,karaoke,{\k1}And it will become known that "those eyes", though dignified 55 | Comment: 0,0:02:49.69,0:02:55.18,translation,,0,0,0,karaoke,{\k1}Repeat the enigmatic and never-ending spiral 56 | Comment: 0,0:02:55.30,0:03:07.86,translation,,0,0,0,karaoke,{\k1}The trigger pulled through a defiled mind, the flock of decoys swallow it whole 57 | Comment: 0,0:03:08.17,0:03:16.72,translation,,0,0,0,karaoke,{\k1}I ask that you search only for a single truth 58 | Comment: 0,0:03:17.00,0:03:23.12,translation,,0,0,0,karaoke,{\k1}As it is undoubtedly tomorrow's salvation 59 | Comment: 0,0:03:23.26,0:03:29.13,translation,,0,0,0,karaoke,{\k1}The New World will quicken as its slumber draws to a close 60 | Comment: 0,0:03:29.35,0:03:35.46,translation,,0,0,0,karaoke,{\k1}The hidden symbols giving way to the beckoning ruin to come 61 | Comment: 0,0:03:35.62,0:03:41.36,translation,,0,0,0,karaoke,{\k1}No matter how cruel the end 62 | Comment: 0,0:03:41.59,0:03:47.74,translation,,0,0,0,karaoke,{\k1}You must face the truth with no hesitation 63 | Comment: 0,0:03:54.26,0:04:05.58,translation,,0,0,0,karaoke,{\k1}Should you choose, I will reveal unto you your destiny 64 | Comment: 0,0:04:06.30,0:04:19.06,translation,,0,0,0,karaoke,{\k1}An inescapable delusion, erosion, vanitas, and an eternity... 65 | Comment: 0,0:04:41.26,0:04:49.83,translation,,0,0,0,karaoke,{\k1}And now, should everything reflected here simply be hypocritical deception 66 | Comment: 0,0:04:50.06,0:04:56.22,translation,,0,0,0,karaoke,{\k1}Then the corpses of the victims will reshape into true love 67 | Comment: 0,0:04:56.28,0:05:02.28,translation,,0,0,0,karaoke,{\k1}The awaited moment will have arrived as the New World quickens 68 | Comment: 0,0:05:02.41,0:05:08.58,translation,,0,0,0,karaoke,{\k1}As it plunges to its demise through the echoing screams 69 | Comment: 0,0:05:08.68,0:05:14.46,translation,,0,0,0,karaoke,{\k1}A sole glimmer of light reveals 70 | Comment: 0,0:05:14.67,0:05:21.42,translation,,0,0,0,karaoke,{\k1}The truth: a sinful life 71 | Dialogue: 0,0:00:45.96,0:00:52.09,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Not even the purest, most innocent eyes 72 | Dialogue: 0,0:00:52.20,0:00:58.20,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Are spared the shadow of an ephemeral fate 73 | Dialogue: 0,0:00:58.23,0:01:04.52,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}The moon's shimmering light settles upon a house of cards, 74 | Dialogue: 0,0:01:04.53,0:01:10.00,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}A place entirely lost to silence 75 | Dialogue: 0,0:01:10.16,0:01:17.18,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}You will realize your foolish decision, 76 | Dialogue: 0,0:01:17.09,0:01:22.98,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}O lambs of the disdainful Lord 77 | Dialogue: 0,0:01:22.68,0:01:29.05,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Dreams swelling with insanity surge forth, 78 | Dialogue: 0,0:01:29.40,0:01:35.38,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Laying waste to that which is righteous 79 | Dialogue: 0,0:01:35.56,0:01:44.66,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0\fscx61}And now, should all reflected here be revealed as mere hypocritical deception, 80 | Dialogue: 0,0:01:44.40,0:01:50.86,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Then the corpses of the victims shall speak unto you the truth 81 | Dialogue: 0,0:01:50.65,0:01:56.73,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}The New World will quicken as it awaits that moment 82 | Dialogue: 0,0:01:56.73,0:02:03.24,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Peering into the abyss, through a chaining revelation 83 | Dialogue: 0,0:02:03.02,0:02:09.20,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}A sole glimmer of light reveals the truth: 84 | Dialogue: 0,0:02:09.02,0:02:14.79,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}An exquisite pain 85 | Dialogue: 0,0:02:18.27,0:02:24.37,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}All sneer at the treacherous who shield themselves, 86 | Dialogue: 0,0:02:24.52,0:02:30.48,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}And the ruthless who disguise themselves 87 | Dialogue: 0,0:02:30.54,0:02:36.92,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}The temple of vanity serves as the puppet's prison, 88 | Dialogue: 0,0:02:36.85,0:02:42.20,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Its key warped into absurdity 89 | Dialogue: 0,0:02:42.48,0:02:49.37,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}You will realize that “those eyes,” though dignified, 90 | Dialogue: 0,0:02:49.39,0:02:55.18,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Repeat the enigmatic and unceasing spiral 91 | Dialogue: 0,0:02:55.00,0:03:07.86,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0\fscx61.5}The trigger pulled through a defiled mind, the flock of decoys swallow it whole 92 | Dialogue: 0,0:03:07.87,0:03:16.72,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}I ask only that you search for the sole truth, 93 | Dialogue: 0,0:03:16.70,0:03:23.12,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}For it is undoubtedly tomorrow's long sought salvation 94 | Dialogue: 0,0:03:22.96,0:03:29.13,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}The New World will quicken as its slumber draws to a close 95 | Dialogue: 0,0:03:29.05,0:03:35.46,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}The hidden symbols beckoning the ruin to come 96 | Dialogue: 0,0:03:35.32,0:03:41.36,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}No matter how cruel the end, 97 | Dialogue: 0,0:03:41.29,0:03:47.74,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}You must face the truth with no hesitation 98 | Dialogue: 0,0:03:53.96,0:04:05.58,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Should you choose, I will reveal unto you your destiny 99 | Dialogue: 0,0:04:06.00,0:04:19.06,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}An inescapable delusion, erosion, vanitas, lasting forevermore... 100 | Dialogue: 0,0:04:40.96,0:04:49.83,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0\fscx61}And now, should all reflected here be revealed as mere hypocritical deception, 101 | Dialogue: 0,0:04:49.76,0:04:56.22,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}Then the corpses of the victims shall take the shape of true love 102 | Dialogue: 0,0:04:55.98,0:05:02.28,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}The awaited moment will have arrived as the New World quickens 103 | Dialogue: 0,0:05:02.11,0:05:08.58,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}As it plunges to its demise through the echoing screams, 104 | Dialogue: 0,0:05:08.38,0:05:14.46,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}A sole glimmer of light reveals the truth: 105 | Dialogue: 0,0:05:14.37,0:05:21.42,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H3D54E7&\3c&H0E0A29&\shad0}A sinful life 106 | Comment: 0,0:01:59.11,0:03:48.50,translation,,0,0,0,template noblank,!retime("line",-300,0)!{\fad(300,250)\pos(!$x+25!,!$y-25!)\fscy83\blur3\c&HF4F3E8&\3c&H4E492D&\shad0} 107 | -------------------------------------------------------------------------------- /content/languagebarrier/subs/cc_ed002a_tlonly.ass: -------------------------------------------------------------------------------- 1 | [Script Info] 2 | ; Script generated by Aegisub 3.2.2 3 | ; http://www.aegisub.org/ 4 | Title: Default Aegisub file 5 | ScriptType: v4.00+ 6 | WrapStyle: 0 7 | ScaledBorderAndShadow: yes 8 | YCbCr Matrix: TV.601 9 | PlayResX: 1280 10 | PlayResY: 720 11 | 12 | [Aegisub Project Garbage] 13 | Last Style Storage: Default 14 | Audio File: karasubvideos/cc_ed002a.mkv 15 | Video File: karasubvideos/cc_ed002a.mkv 16 | Video AR Mode: 4 17 | Video AR Value: 1.777778 18 | Video Zoom Percent: 0.687500 19 | Video Position: 3829 20 | 21 | [V4+ Styles] 22 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding 23 | Style: translation-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,1,25,25,25,1 24 | Style: romaji-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,4,25,25,25,1 25 | Style: Kanji-furigana,東風ゴシック,16.5,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,6,0,1,1,1,6,25,25,25,1 26 | Style: Default-furigana,Arial,10,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1 27 | Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 28 | Style: romaji,handy andy,45,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,80,100,0.75,0,1,2,2,4,25,25,25,1 29 | Style: translation,Handy Andy,45,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,80,100,0.75,0,1,2,2,1,25,25,25,1 30 | Style: Kanji,東風ゴシック,32,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,8,0,1,2,2,6,25,25,25,1 31 | 32 | [Events] 33 | Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text 34 | Comment: 0,0:00:50.54,0:01:00.30,translation,,0,0,0,karaoke,{\k9760}Even as my tears spill, blown by the winds of our memories, 35 | Comment: 0,0:01:00.75,0:01:10.56,translation,,0,0,0,karaoke,{\k9810}I'll tread a new path, stopping for nothing 36 | Comment: 0,0:01:11.01,0:01:20.63,translation,,0,0,0,karaoke,{\k9620}With a mind more clear than freshly fallen rain, 37 | Comment: 0,0:01:21.22,0:01:30.42,translation,,0,0,0,karaoke,{\k9200}There's a certain world that lies reflected, and there's no place I can't go 38 | Comment: 0,0:01:30.69,0:01:41.34,translation,,0,0,0,karaoke,{\k10650}Within that white light, we raised our birth cries 39 | Comment: 0,0:01:41.60,0:01:50.84,translation,,0,0,0,karaoke,{\k9240}And were blindfolded inside a game of darkness and despair 40 | Comment: 0,0:01:51.19,0:02:01.82,translation,,0,0,0,karaoke,{\k10630}I can write it now, wishing upon the swaying wind bell 41 | Comment: 0,0:02:01.99,0:02:17.28,translation,,0,0,0,karaoke,{\k15290}Farewell, my dearly beloved - May you stay forever happy 42 | Comment: 0,0:02:32.72,0:02:42.38,translation,,0,0,0,karaoke,{\k9660}You are me and I am you - You're the product of my imagination 43 | Comment: 0,0:02:42.79,0:02:52.60,translation,,0,0,0,karaoke,{\k9810}We're best friends, now and forever, and I'll never forget 44 | Comment: 0,0:02:53.12,0:03:02.78,translation,,0,0,0,karaoke,{\k9660}With feelings more clear than the blue sky after rainfall, 45 | Comment: 0,0:03:03.30,0:03:08.11,translation,,0,0,0,karaoke,{\k4810}There's no need for telepathy any longer, 46 | Comment: 0,0:03:08.40,0:03:13.38,translation,,0,0,0,karaoke,{\k4980}So, my honest thanks... and Goodbye 47 | Comment: 0,0:03:46.04,0:03:56.66,translation,,0,0,0,karaoke,{\k10620}Within the blue flames, we awakened to our powers 48 | Comment: 0,0:03:56.96,0:04:06.20,translation,,0,0,0,karaoke,{\k9240}Struggling side by side, we overcame the ordeals set before us 49 | Comment: 0,0:04:06.47,0:04:17.18,translation,,0,0,0,karaoke,{\k10710}Within that white light, we raised our birth cries 50 | Comment: 0,0:04:17.32,0:04:26.58,translation,,0,0,0,karaoke,{\k9260}And were blindfolded inside a game of darkness and despair 51 | Comment: 0,0:04:26.95,0:04:37.50,translation,,0,0,0,karaoke,{\k10550}I can write it now, wishing upon the swaying wind bell 52 | Comment: 0,0:04:37.75,0:04:53.12,translation,,0,0,0,karaoke,{\k15370}Farewell, my dearly beloved - May you stay forever happy 53 | Comment: 0,0:01:21.33,0:01:21.68,romaji,,0,0,0,template noblank,!retime("line",-300,0)!{\fad(300,250)\c&H000000&\3c&HCECECE&\shad0\pos(!$x+25!,!$y-295!)\blur3\fscy83} 54 | Comment: 0,0:00:28.38,0:00:28.38,romaji,,0,0,0,template char noblank,!retime("syl",0,0)!{\fad(0,150)\pos(!$x+25!,!$y-295!)\org(!$x+27!,!$y-190!)\shad0\blur3\bord3\c&HE5E5F5&\3c&HBED19F&\fscy83\1a&H33&\t(0,250,0.8,\blur2\bord2\c&HCED4D7&\3c&H355027&)\t(!syl.duration/2+syl.duration/4!,!syl.duration!,\c&H000000&\3c&HCECECE&\alpha&HFF&)} 55 | Comment: 0,0:01:21.68,0:01:21.68,Kanji,,0,0,0,template char noblank,!retime("line",-300,0)!{\fad(300,250)\c&H000000&\3c&HCECECE&\shad0\an5\pos(!meta.res_x-line.eff_margin_r-line.height/2-20!,!(meta.res_y-line.width)/2+syl.center!)\blur3} 56 | Comment: 0,0:00:00.21,0:00:00.21,Kanji,,0,0,0,template char noblank,!retime("syl",0,0)!{\an5\fad(0,100)\pos(!meta.res_x-line.eff_margin_r-line.height/2-20!,!(meta.res_y-line.width)/2+syl.center!)\shad0\blur3\bord3\c&HE5E5F5&\3c&HBED19F&\1a&H33&\t(0,250,0.8,\blur2\bord2\c&HCED4D7&\3c&H355027&)\t(!syl.duration/2+syl.duration/4!,!syl.duration!,\c&H000000&\3c&HCECECE&\alpha&HFF&)} 57 | Comment: 0,0:01:59.11,0:03:48.50,translation,,0,0,0,template noblank,!retime("line",-300,0)!{\fad(300,250)\pos(!$x+25!,!$y-25!)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0} 58 | Dialogue: 0,0:00:50.24,0:01:00.30,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}Even as my tears spill, blown by the winds of our memories, 59 | Dialogue: 0,0:01:00.45,0:01:10.56,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}I’ll tread a new path, stopping for nothing 60 | Dialogue: 0,0:01:10.71,0:01:20.63,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}With a mind more clear than freshly fallen rain, 61 | Dialogue: 0,0:01:20.92,0:01:30.42,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}There’s a certain world that lies reflected, and there’s no place I can’t go 62 | Dialogue: 0,0:01:30.39,0:01:41.34,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}Within that white light, we raised our birth cries 63 | Dialogue: 0,0:01:41.30,0:01:50.84,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}And were blindfolded within a game of darkness and despair 64 | Dialogue: 0,0:01:50.89,0:02:01.82,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}I can write it now, wishing upon the swaying wind bell 65 | Dialogue: 0,0:02:01.69,0:02:17.28,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}Farewell, my dearly beloved– May you stay forever happy 66 | Dialogue: 0,0:02:32.42,0:02:42.38,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}You are me and I am you– You’re the product of my imagination 67 | Dialogue: 0,0:02:42.49,0:02:52.60,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}We’re best friends, now and forever, and I’ll never forget 68 | Dialogue: 0,0:02:52.82,0:03:02.78,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}With feelings more clear than the blue sky after rainfall, 69 | Dialogue: 0,0:03:03.00,0:03:08.11,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}There’s no need for telepathy any longer 70 | Dialogue: 0,0:03:08.10,0:03:13.38,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}You have my thanks, farewell 71 | Dialogue: 0,0:03:45.74,0:03:56.66,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}Within the blue flames, we awakened to our powers 72 | Dialogue: 0,0:03:56.66,0:04:06.20,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}Struggling side by side, we overcame our hardships 73 | Dialogue: 0,0:04:06.17,0:04:17.18,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}Within that white light, we raised our birth cries 74 | Dialogue: 0,0:04:17.02,0:04:26.58,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}And were blindfolded within a game of darkness and despair 75 | Dialogue: 0,0:04:26.65,0:04:37.50,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}I can write it now, wishing upon the swaying wind bell 76 | Dialogue: 0,0:04:37.45,0:04:53.12,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H000000&\3c&HCECECE&\shad0}Farewell, my dearly beloved– May you stay forever happy 77 | -------------------------------------------------------------------------------- /content/languagebarrier/subs/fonts/Handy_Andy.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/languagebarrier/subs/fonts/Handy_Andy.otf -------------------------------------------------------------------------------- /content/languagebarrier/subs/fonts/HighVoltage Rough.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/languagebarrier/subs/fonts/HighVoltage Rough.ttf -------------------------------------------------------------------------------- /content/languagebarrier/subs/fonts/SoukouMincho.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/languagebarrier/subs/fonts/SoukouMincho.ttf -------------------------------------------------------------------------------- /content/languagebarrier/subs/fonts/Typography Times Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/languagebarrier/subs/fonts/Typography Times Regular.ttf -------------------------------------------------------------------------------- /content/languagebarrier/subs/fonts/hultog.regular_0.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/languagebarrier/subs/fonts/hultog.regular_0.ttf -------------------------------------------------------------------------------- /content/languagebarrier/subs/fonts/kochi-gothic-subst.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content/languagebarrier/subs/fonts/kochi-gothic-subst.ttf -------------------------------------------------------------------------------- /content/languagebarrier/subs/movie_op2_tlonly.ass: -------------------------------------------------------------------------------- 1 | [Script Info] 2 | ; Script generated by Aegisub 3.2.2 3 | ; http://www.aegisub.org/ 4 | Title: Default Aegisub file 5 | ScriptType: v4.00+ 6 | WrapStyle: 0 7 | ScaledBorderAndShadow: yes 8 | YCbCr Matrix: TV.601 9 | PlayResX: 1280 10 | PlayResY: 720 11 | 12 | [Aegisub Project Garbage] 13 | Last Style Storage: Default 14 | Audio File: karasubvideos/movie_op2.mkv 15 | Video File: karasubvideos/movie_op2.mkv 16 | Video AR Mode: 4 17 | Video AR Value: 1.777778 18 | Video Zoom Percent: 0.687500 19 | Active Line: 16 20 | Video Position: 2067 21 | 22 | [V4+ Styles] 23 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding 24 | Style: translation-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,1,25,25,25,1 25 | Style: romaji-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,4,25,25,25,1 26 | Style: Kanji-furigana,瀬戸フォント,16.5,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,6,0,1,1,1,6,25,25,25,1 27 | Style: Default-furigana,Arial,10,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1 28 | Style: Default,Arial,40,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,25,25,25,1 29 | Style: Kanji,装甲明朝,32,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,7,0,1,2,2,6,25,25,25,1 30 | Style: romaji,HighVoltage Rough,55,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,85,100,2,0,1,2,2,4,25,25,25,1 31 | Style: translation,HighVoltage Rough,55,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,85,100,2,0,1,2,2,1,25,25,25,1 32 | 33 | [Events] 34 | Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text 35 | Comment: 0,0:00:17.66,0:00:25.54,translation,,0,0,0,karaoke,{\k7880}Taking refuge during an unexpected downpour of rain 36 | Comment: 0,0:00:25.65,0:00:33.44,translation,,0,0,0,karaoke,{\k7790}Urges and pleasures both forming nothing but pockmarks 37 | Comment: 0,0:00:33.71,0:00:41.54,translation,,0,0,0,karaoke,{\k7830}The creation of a miracle... An everyday situation 38 | Comment: 0,0:00:41.68,0:00:49.24,translation,,0,0,0,karaoke,{\k7560}The play began its finale, and the light enveloped all{\fscx150}- 39 | Comment: 0,0:00:49.40,0:00:56.97,translation,,0,0,0,karaoke,{\k7570}Encounter love... Embrace in a kiss... 40 | Comment: 0,0:00:57.16,0:01:05.36,translation,,0,0,0,karaoke,{\k8200}As the road those two walk is veiled in chaos 41 | Comment: 0,0:01:05.39,0:01:13.38,translation,,0,0,0,karaoke,{\k7990}So that Silent Night may lead us to the real sky someday 42 | Comment: 0,0:01:13.68,0:01:29.14,translation,,0,0,0,karaoke,{\k15460}And should the sunlight reach those eyes, offer up your false prayers 43 | Comment: 0,0:01:59.11,0:03:48.50,translation,,0,0,0,template noblank,!retime("line",-300,0)!{\fad(300,250)\pos(!$x+25!,!$y-25!)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0} 44 | Dialogue: 0,0:00:17.36,0:00:25.54,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}Taking refuge during an unexpected downpour of rain 45 | Dialogue: 0,0:00:25.35,0:00:33.44,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}Urges and pleasures both forming nothing but pockmarks 46 | Dialogue: 0,0:00:33.41,0:00:41.54,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}The creation of a miracle... An everyday situation 47 | Dialogue: 0,0:00:41.38,0:00:49.24,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}The play began its finale, and the light enveloped all- 48 | Dialogue: 0,0:00:49.10,0:00:56.97,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}Encounter love... Embrace in a kiss... 49 | Dialogue: 0,0:00:56.86,0:01:05.36,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}As the road those two walk is veiled in chaos 50 | Dialogue: 0,0:01:05.09,0:01:13.38,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}So that Silent Night may lead us to the real sky someday 51 | Dialogue: 0,0:01:13.38,0:01:29.14,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&H242424&\3c&HCCCCCC&\shad0}And should the sunlight reach those eyes, offer up your false prayers 52 | -------------------------------------------------------------------------------- /content/languagebarrier/subs/movie_op_tlonly.ass: -------------------------------------------------------------------------------- 1 | [Script Info] 2 | ; Script generated by Aegisub 3.2.2 3 | ; http://www.aegisub.org/ 4 | Title: Default Aegisub file 5 | ScriptType: v4.00+ 6 | WrapStyle: 0 7 | ScaledBorderAndShadow: yes 8 | YCbCr Matrix: TV.601 9 | PlayResX: 1280 10 | PlayResY: 720 11 | 12 | [Aegisub Project Garbage] 13 | Last Style Storage: Default 14 | Audio File: karasubvideos/movie_op.mkv 15 | Video File: karasubvideos/movie_op.mkv 16 | Video AR Mode: 4 17 | Video AR Value: 1.777778 18 | Video Zoom Percent: 0.750000 19 | Active Line: 16 20 | Video Position: 3158 21 | 22 | [V4+ Styles] 23 | Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding 24 | Style: romaji2-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,4,25,25,25,1 25 | Style: romaji useless-furigana,Times New Roman,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,80,100,2,0,1,1,1,7,25,25,25,1 26 | Style: translation-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,1,25,25,25,1 27 | Style: romaji-furigana,Ahellya,25,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,1,1,4,25,25,25,1 28 | Style: Kanji-furigana,瀬戸フォント,16.5,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,6,0,1,1,1,6,25,25,25,1 29 | Style: Default-furigana,Arial,10,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,1,1,2,10,10,10,1 30 | Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1 31 | Style: Kanji,装甲明朝,32,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,7,0,1,2,2,6,25,25,25,1 32 | Style: translation,hultog,50,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,2,2,1,25,25,25,1 33 | Style: romaji useless,Times New Roman,50,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,80,100,2,0,1,2,2,7,25,25,25,1 34 | Style: romaji,Hultog,50,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,2,2,4,25,25,25,1 35 | Style: romaji2,Ahellya,50,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,-1,0,0,0,80,100,2,0,1,2,2,4,25,25,25,1 36 | 37 | [Events] 38 | Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text 39 | Comment: 0,0:00:02.28,0:00:11.22,translation,,0,0,0,karaoke,{\k8790}An unfathomable delusion finds its way to the obscene world{\k25} 40 | Comment: 0,0:00:11.40,0:00:20.16,translation,,0,0,0,karaoke,{\k8510}And is gnawed at by analgesic cells{\k25} 41 | Comment: 0,0:00:35.66,0:00:41.60,translation,,0,0,0,karaoke,{\k5790}As you sprint up the the spiral stair,{\k25} 42 | Comment: 0,0:00:42.60,0:00:48.42,translation,,0,0,0,karaoke,{\k5670}You'll both chase and be chased{\k25} 43 | Comment: 0,0:00:48.71,0:00:51.76,translation,,0,0,0,karaoke,{\k3050}Let's falling 44 | Comment: 0,0:00:52.22,0:00:54.80,translation,,0,0,0,karaoke,{\k2330}All the way to the bitter end{\k25} 45 | Comment: 0,0:00:55.21,0:00:58.72,translation,,0,0,0,karaoke,{\k3510}What you gonna do? 46 | Comment: 0,0:00:59.09,0:01:01.94,translation,,0,0,0,karaoke,{\k2600}Your sight's gone now{\k25} 47 | Comment: 0,0:01:02.96,0:01:11.80,translation,,0,0,0,karaoke,{\k8590}The cursor alone flickers... It's midday madness{\k25} 48 | Comment: 0,0:01:13.24,0:01:16.70,translation,,0,0,0,karaoke,{\k3460}Welcome to chaos world 49 | Comment: 0,0:01:17.96,0:01:24.91,translation,,0,0,0,karaoke,{\k6700}An unfathomable delusion finds its way to the obscene world{\k25} 50 | Comment: 0,0:01:25.06,0:01:32.00,translation,,0,0,0,karaoke,{\k6790}And is gnawed at by analgesic cells{\k25} 51 | Comment: 0,0:01:32.30,0:01:44.18,translation,,0,0,0,karaoke,{\k11630}The world that we can see is the boundary between reality and lies{\k25} 52 | Comment: 0,0:01:59.11,0:03:48.50,translation,,0,0,0,template noblank,!retime("line",-300,0)!{\fad(300,250)\pos(!$x+25!,!$y-25!)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0} 53 | Dialogue: 0,0:00:01.98,0:00:11.22,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}An unfathomable delusion finds its way to the obscene world 54 | Dialogue: 0,0:00:11.10,0:00:20.16,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}And is gnawed at by analgesic cells 55 | Dialogue: 0,0:00:35.36,0:00:41.60,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}As you run dazed up the spiral staircase, 56 | Dialogue: 0,0:00:42.30,0:00:48.42,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}You'll both chase and be chased 57 | Dialogue: 0,0:00:48.41,0:00:51.76,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}Let's falling 58 | Dialogue: 0,0:00:51.92,0:00:54.80,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}All the way to the bitter end 59 | Dialogue: 0,0:00:54.91,0:00:58.72,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}What you gonna do? 60 | Dialogue: 0,0:00:58.79,0:01:01.94,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}Your sight's gone now 61 | Dialogue: 0,0:01:02.66,0:01:11.80,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}The cursor alone flickers... It's midday madness 62 | Dialogue: 0,0:01:12.94,0:01:16.70,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}Welcome to chaos world 63 | Dialogue: 0,0:01:17.66,0:01:24.91,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}An unfathomable delusion finds its way to the obscene world 64 | Dialogue: 0,0:01:24.76,0:01:32.00,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}And is gnawed at by analgesic cells 65 | Dialogue: 0,0:01:32.00,0:01:44.18,translation,,0,0,0,fx,{\fad(300,250)\pos(50,670)\fscy83\blur3\c&HF4F3E8&\3c&H744844&\shad0}The world that we can see is the boundary between reality and lies 66 | -------------------------------------------------------------------------------- /content/languagebarrier/versioninfo.json: -------------------------------------------------------------------------------- 1 | { 2 | "__schema_version": 2, 3 | "channel": "stable-steam-win32", 4 | "intVersion": 6, 5 | "updateCheckUrl": "https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/master/update.json" 6 | } -------------------------------------------------------------------------------- /content/proton_boot_fix.sh: -------------------------------------------------------------------------------- 1 | # You can ignore this file. 2 | # It exists for Linux users on Steam Play. Steam Play's Wine wrapper (Proton) currently has issues with boot.bat. Our fix is to run this script during patch installation. 3 | mv boot.bat old_boot.bat 4 | # Launcher.exe would be preferrable... 5 | # - We hijack launcher.exe, so effectively, our launcher will still be run 6 | # - If someone uninstalls the patch, the boot.bat symlink will keep working 7 | # ...but that throws up a "Please start from Steam" warning (???) - would still start our launcher afterwards though 8 | ln -s LauncherC0.exe boot.bat -------------------------------------------------------------------------------- /content_steamgrid/970570.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content_steamgrid/970570.png -------------------------------------------------------------------------------- /content_steamgrid/970570_hero.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content_steamgrid/970570_hero.png -------------------------------------------------------------------------------- /content_steamgrid/970570_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content_steamgrid/970570_logo.png -------------------------------------------------------------------------------- /content_steamgrid/970570p.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/content_steamgrid/970570p.png -------------------------------------------------------------------------------- /doc/misc/CheckSteamResolutions.ps1: -------------------------------------------------------------------------------- 1 | function Get-ImageDimensions { 2 | param ($filePath) 3 | 4 | $folderPath = Split-Path -Path $filePath -Parent 5 | $fileName = Split-Path -Path $filePath -Leaf 6 | 7 | 8 | $objShell = New-Object -ComObject Shell.Application 9 | $objFolder = $objShell.namespace($folderPath) 10 | $objFile = $objFolder.ParseName($fileName) 11 | 12 | return $objFolder.GetDetailsOf($objFile, 31) 13 | } 14 | 15 | foreach ($file in $(gci -Path "G:\Games\SGTL\cc_work\terribuild\cc-edited-images\bg\*" -Include *.png, *.dds)) { 16 | $fileName = Split-Path -Path $file -Leaf 17 | $origPath = Join-Path -Path "G:\Steam\SteamApps\common\CHAOS;CHILD\USRDIR\bg1" -ChildPath $fileName 18 | if (-not $(Test-Path -Path $origPath)) { 19 | $origPath = Join-Path -Path "G:\Steam\SteamApps\common\CHAOS;CHILD\USRDIR\bg2" -ChildPath $fileName 20 | if (-not $(Test-Path -Path $origPath)) { 21 | $origPath = $null 22 | } 23 | } 24 | if ($origPath) { 25 | $dims = Get-ImageDimensions -filePath $file 26 | $origDims = Get-ImageDimensions -filePath $origPath 27 | if ($dims -ne $origDims) { 28 | Write-Host "Mismatch: $origPath - $dims => $origDims" 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /doc/misc/MakeSteamImageset.ps1: -------------------------------------------------------------------------------- 1 | foreach($file in Get-ChildItem -Path "G:\Games\SGTL\cc_work\terribuild\cc-edited-images\bg\*_steam*", 2 | "G:\Games\SGTL\cc_work\terribuild\cc-edited-images\system\*_steam*") { 3 | $fileSteam = [string] $file 4 | $fileNoSteam = $fileSteam -replace "_steam", "" 5 | Remove-Item -ErrorAction SilentlyContinue $fileNoSteam 6 | Move-Item $fileSteam $fileNoSteam 7 | } -------------------------------------------------------------------------------- /doc/misc/add_new_bgs.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import sys 3 | import os 4 | import struct 5 | import io 6 | 7 | bg_mpk_ids = {} 8 | 9 | existing = set() 10 | 11 | cur_id = 0 12 | with io.open('c0data_toc.csv', 'r') as f: 13 | reader = csv.reader(f) 14 | for row in reader: 15 | if row[0].startswith('#'): 16 | continue 17 | existing.add(row[2].lower()) 18 | if int(row[0]) >= cur_id: 19 | cur_id = int(row[0]) + 1 20 | 21 | all_bgs = set([f.lower() for f in os.listdir('cc-edited-images\\bg') if os.path.isfile(os.path.join('cc-edited-images\\bg', f))]) 22 | new_bgs = all_bgs.difference(existing) 23 | 24 | def add_ids(f): 25 | f.seek(8, os.SEEK_SET) 26 | entries_count = struct.unpack('PC: 32 | 33 | - Dump a list of all files in English Vita `voice.mpk` but not in Japanese `voice.mpk` to `envita_additions.txt` 34 | - Convert the files to Ogg Vorbis 35 | - Put the added files into `c0data.mpk` (starting at ID 19, that's what we were at) 36 | - Splice the added lines into the voice archive ID space (e.g. redirecting voice/3 to c0data/19, voice/4 to c0data/20, voice/5 to voice/4 etc.) with a LanguageBarrier file redirection config generated by `generate_voice_json.rb` 37 | 38 | ### Lipsync 39 | 40 | Lipsync data is stored in `wavtable.dat` in `system.mpk`. One would think you could just copy this file from the English Vita version to the PC version, but no. 41 | For some reason, a field in the structure contained by this file is stored in big-endian on Vita, but little-endian on PC (despite both x86 and ARM being little-endian architectures). `wavtable_endian_swap.py` converts English Vita `wavtable_orig.dat` into a `wavtable.dat` suitable for use in the PC release. 42 | 43 | The offset to the array of data in need of endian-swapping is hardcoded in the script, but it's the very first field in the file anyway. -------------------------------------------------------------------------------- /doc/voicefix/envita_additions.txt: -------------------------------------------------------------------------------- 1 | CC_01_03_MIY0060c 2 | CC_01_03_MIY0060d 3 | CC_01_04_MIY0047a 4 | CC_01_04_MIY0047b 5 | CC_01_04_MIY0053a 6 | CC_01_04_MIY0053b 7 | CC_01_04_MIY0070a 8 | CC_01_04_MIY0070b 9 | CC_01_05_ONE0008a 10 | CC_01_05_ONE0008b 11 | CC_01_08_KUN0007c 12 | CC_01_08_KUN0007d 13 | CC_01_10_MIY0036c 14 | CC_01_10_MIY0036d 15 | CC_01_12_MIY0037a 16 | CC_01_12_MIY0037b 17 | CC_01_12_MIY0083a 18 | CC_01_12_MIY0083b 19 | CC_01_13_ITH0004a 20 | CC_01_13_ITH0004b 21 | CC_02_04_ARI0007a 22 | CC_02_04_ARI0007b 23 | CC_02_07_KUN0016c 24 | CC_02_07_KUN0016d 25 | CC_02_07_KUN0020c 26 | CC_02_07_KUN0020d 27 | CC_03_01_WAT0008a 28 | CC_03_01_WAT0008b 29 | CC_03_04_KUN0008a 30 | CC_03_04_KUN0008b 31 | CC_04_03_MIY0042a 32 | CC_04_03_MIY0042b 33 | CC_04_03B_X480004a 34 | CC_04_03B_X480004b 35 | CC_07_01_MIY0107a 36 | CC_07_01_MIY0107b 37 | CC_07_01_MIY0108a 38 | CC_07_01_MIY0108b 39 | CC_07_01_MIY0109a 40 | CC_07_01_MIY0109b 41 | CC_07_07_SHI0037a 42 | CC_07_07_SHI0037b 43 | CC_07_10_ARI0000a 44 | CC_07_10_ARI0000b 45 | CC_10_02_X480002a 46 | CC_10_02_X480002b 47 | CC_10_08_KUN0029a 48 | CC_10_08_KUN0029b 49 | CC_11_01_SAK0017a 50 | CC_11_01_SAK0017b 51 | CC_11_02_ONE0028a 52 | CC_11_02_ONE0028b 53 | CC_11_02_ONE0053a 54 | CC_11_02_ONE0053b 55 | CC_11_05_ONE0022a 56 | CC_11_05_ONE0022b 57 | CC_11_09_SAK0024a 58 | CC_11_09_SAK0024b 59 | CC_11_11_MIY0017a 60 | CC_11_11_MIY0017b 61 | CC_11_11_SAK0023a 62 | CC_11_11_SAK0023b 63 | CC_AH_24_SHI0014a 64 | CC_AH_24_SHI0014b 65 | CC_KN_02_KUN0009a 66 | CC_KN_02_KUN0009b 67 | CC_KN_13_KAW0019a 68 | CC_KN_13_KAW0019b 69 | CC_KN_15_ONE0003a 70 | CC_KN_15_ONE0003b 71 | CC_KN_16_SHI0020a 72 | CC_KN_16_SHI0020b 73 | CC_TR_09_KUN0026a 74 | CC_TR_09_KUN0026b 75 | CC_TR_10_WAK0040a 76 | CC_TR_10_WAK0040b 77 | CC_TR_10_WAK0072a 78 | CC_TR_10_WAK0072b 79 | CC_UK_05_Z090022a 80 | CC_UK_05_Z090022b 81 | CC_UK_10_SHI0005a 82 | CC_UK_10_SHI0005b 83 | -------------------------------------------------------------------------------- /doc/voicefix/generate_voice_json.rb: -------------------------------------------------------------------------------- 1 | require 'json' 2 | 3 | c0data_entry = 19 4 | jppc_entry = 0 5 | envita_entry = 0 6 | 7 | mapping = {} 8 | 9 | envita_additions = File.read("envita_additions.txt").each_line.map(&:chomp) 10 | 11 | File.read("envita_filenames.txt").each_line.map(&:chomp).each do |file| 12 | if envita_additions.include? file 13 | mapping[envita_entry] = c0data_entry 14 | c0data_entry += 1 15 | else 16 | mapping[envita_entry] = [5, jppc_entry] 17 | jppc_entry += 1 18 | end 19 | envita_entry += 1 20 | end 21 | 22 | voice_json = { "fileRedirection" => { "voice" => mapping } }.to_json 23 | 24 | File.write("voice.json", voice_json) -------------------------------------------------------------------------------- /doc/voicefix/wavtable_endian_swap.py: -------------------------------------------------------------------------------- 1 | import struct 2 | import os 3 | import sys 4 | 5 | count = (0x556A * 2) + 2 6 | input = open("wavtable_orig.dat", "rb") 7 | output = open("wavtable.dat", "wb") 8 | for i in range(0, count): 9 | num = struct.unpack(">H", input.read(2))[0] 10 | output.write(struct.pack(" 2 | 3 | userdata/header.png 4 | userdata/next_button.png 5 | userdata/bgm.mp3 6 | userdata/left.png 7 | userdata/alert.png 8 | userdata/script.js 9 | userdata/README.txt 10 | userdata/LICENSE.txt 11 | userdata/product.json 12 | 13 | userdata/enscriptToc.json 14 | 15 | 16 | -------------------------------------------------------------------------------- /installer/userdata/LICENSE.txt: -------------------------------------------------------------------------------- 1 | CHAOS;CHILD Improvement Patch (Steam) depends on a number of third-party components: 2 | 3 | Installer background music: "WORLD -PSG version- from CHAOS;CHILD" by Takeshi Abo 4 | Ingame text font: Noto Sans CJK JP by Google 5 | Subtitle font listing follows. 6 | 7 | LanguageBarrier: 8 | * JSON for Modern C++ 9 | * MinHook 10 | ** Hacker Disassembler Engine 32 11 | * xy-VSFilter 12 | * stb_vorbis 13 | * SpeexDSP 14 | 15 | Launcher/Installer: 16 | * Qt 5.9 17 | * Xdelta3 18 | * 7-zip SFX module 19 | * cURL 20 | * dr_mp3 21 | * miniaudio 22 | 23 | Subtitle fonts: 24 | * Soukou Mincho 25 | * Typography Times 26 | * Handy Andy 27 | * Kochi Substitute 28 | * Hultog 29 | * High Voltage Rough 30 | 31 | ------------------------------- 32 | 33 | To use your own Qt builds with the (un)installer, extract the (un)installer executable with 7-Zip. You will be able to substitute your own Qt DLLs. 34 | 35 | ------------------------------- 36 | 37 | LanguageBarrier 38 | Copyright (c) 2016-2019 Committee of Zero 39 | 40 | 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: 41 | 42 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 43 | 44 | 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. 45 | 46 | ------------------------------- 47 | 48 | LanguageBarrier binaries in default configuration fall under the GNU General Public License, version 2 due to the inclusion of xy-VSFilter. See below for details. 49 | 50 | ------------------------------- 51 | 52 | noidget 53 | Copyright (c) 2019 Committee of Zero 54 | 55 | 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: 56 | 57 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 58 | 59 | 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. 60 | 61 | ------------------------------- 62 | 63 | realboot 64 | Copyright (c) 2019 Committee of Zero 65 | 66 | 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: 67 | 68 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 69 | 70 | 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. 71 | 72 | ------------------------------- 73 | 74 | kofuna 75 | Copyright (c) 2017 Committee of Zero 76 | 77 | 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: 78 | 79 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 80 | 81 | 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. 82 | 83 | ------------------------------- 84 | 85 | JSON for Modern C++ 86 | https://github.com/nlohmann/json 87 | 88 | JSON for Modern C++ is licensed under the MIT License 89 | : 90 | 91 | Copyright (c) 2013-2017 Niels Lohmann 92 | 93 | Permission is hereby granted, free of charge, to any person obtaining a copy of 94 | this software and associated documentation files (the "Software"), to deal in 95 | the Software without restriction, including without limitation the rights to 96 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 97 | of the Software, and to permit persons to whom the Software is furnished to do 98 | so, subject to the following conditions: 99 | 100 | The above copyright notice and this permission notice shall be included in all 101 | copies or substantial portions of the Software. 102 | 103 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 104 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 105 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 106 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 107 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 108 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 109 | SOFTWARE. 110 | 111 | ------------------------------- 112 | 113 | MinHook - The Minimalistic API Hooking Library for x64/x86 114 | Copyright (C) 2009-2017 Tsuda Kageyu. 115 | All rights reserved. 116 | 117 | Redistribution and use in source and binary forms, with or without 118 | modification, are permitted provided that the following conditions 119 | are met: 120 | 121 | 1. Redistributions of source code must retain the above copyright 122 | notice, this list of conditions and the following disclaimer. 123 | 2. Redistributions in binary form must reproduce the above copyright 124 | notice, this list of conditions and the following disclaimer in the 125 | documentation and/or other materials provided with the distribution. 126 | 127 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 128 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 129 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 130 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER 131 | OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 132 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 133 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 134 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 135 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 136 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 137 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 138 | 139 | ------------------------------- 140 | 141 | Portions of this software are Copyright (c) 2008-2009, Vyacheslav Patkov. 142 | 143 | ------------------------------- 144 | 145 | Hacker Disassembler Engine 32 C 146 | Copyright (c) 2008-2009, Vyacheslav Patkov. 147 | All rights reserved. 148 | 149 | Redistribution and use in source and binary forms, with or without 150 | modification, are permitted provided that the following conditions 151 | are met: 152 | 153 | 1. Redistributions of source code must retain the above copyright 154 | notice, this list of conditions and the following disclaimer. 155 | 2. Redistributions in binary form must reproduce the above copyright 156 | notice, this list of conditions and the following disclaimer in the 157 | documentation and/or other materials provided with the distribution. 158 | 159 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 160 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 161 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 162 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR 163 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 164 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 165 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 166 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 167 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 168 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 169 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 170 | 171 | ------------------------------- 172 | 173 | Hacker Disassembler Engine 64 C 174 | Copyright (c) 2008-2009, Vyacheslav Patkov. 175 | All rights reserved. 176 | 177 | Redistribution and use in source and binary forms, with or without 178 | modification, are permitted provided that the following conditions 179 | are met: 180 | 181 | 1. Redistributions of source code must retain the above copyright 182 | notice, this list of conditions and the following disclaimer. 183 | 2. Redistributions in binary form must reproduce the above copyright 184 | notice, this list of conditions and the following disclaimer in the 185 | documentation and/or other materials provided with the distribution. 186 | 187 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 188 | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 189 | TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 190 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR 191 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 192 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 193 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 194 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 195 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 196 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 197 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 198 | 199 | ------------------------------- 200 | 201 | xy-VSFilter 202 | Source code can be obtained at 203 | https://github.com/Cyberbeing/xy-VSFilter/tree/3.0.0.306 204 | 205 | GNU GENERAL PUBLIC LICENSE 206 | Version 2, June 1991 207 | 208 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. 209 | 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 210 | Everyone is permitted to copy and distribute verbatim copies 211 | of this license document, but changing it is not allowed. 212 | 213 | Preamble 214 | 215 | The licenses for most software are designed to take away your 216 | freedom to share and change it. By contrast, the GNU General Public 217 | License is intended to guarantee your freedom to share and change free 218 | software--to make sure the software is free for all its users. This 219 | General Public License applies to most of the Free Software 220 | Foundation's software and to any other program whose authors commit to 221 | using it. (Some other Free Software Foundation software is covered by 222 | the GNU Library General Public License instead.) You can apply it to 223 | your programs, too. 224 | 225 | When we speak of free software, we are referring to freedom, not 226 | price. Our General Public Licenses are designed to make sure that you 227 | have the freedom to distribute copies of free software (and charge for 228 | this service if you wish), that you receive source code or can get it 229 | if you want it, that you can change the software or use pieces of it 230 | in new free programs; and that you know you can do these things. 231 | 232 | To protect your rights, we need to make restrictions that forbid 233 | anyone to deny you these rights or to ask you to surrender the rights. 234 | These restrictions translate to certain responsibilities for you if you 235 | distribute copies of the software, or if you modify it. 236 | 237 | For example, if you distribute copies of such a program, whether 238 | gratis or for a fee, you must give the recipients all the rights that 239 | you have. You must make sure that they, too, receive or can get the 240 | source code. And you must show them these terms so they know their 241 | rights. 242 | 243 | We protect your rights with two steps: (1) copyright the software, and 244 | (2) offer you this license which gives you legal permission to copy, 245 | distribute and/or modify the software. 246 | 247 | Also, for each author's protection and ours, we want to make certain 248 | that everyone understands that there is no warranty for this free 249 | software. If the software is modified by someone else and passed on, we 250 | want its recipients to know that what they have is not the original, so 251 | that any problems introduced by others will not reflect on the original 252 | authors' reputations. 253 | 254 | Finally, any free program is threatened constantly by software 255 | patents. We wish to avoid the danger that redistributors of a free 256 | program will individually obtain patent licenses, in effect making the 257 | program proprietary. To prevent this, we have made it clear that any 258 | patent must be licensed for everyone's free use or not licensed at all. 259 | 260 | The precise terms and conditions for copying, distribution and 261 | modification follow. 262 | 263 | GNU GENERAL PUBLIC LICENSE 264 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 265 | 266 | 0. This License applies to any program or other work which contains 267 | a notice placed by the copyright holder saying it may be distributed 268 | under the terms of this General Public License. The "Program", below, 269 | refers to any such program or work, and a "work based on the Program" 270 | means either the Program or any derivative work under copyright law: 271 | that is to say, a work containing the Program or a portion of it, 272 | either verbatim or with modifications and/or translated into another 273 | language. (Hereinafter, translation is included without limitation in 274 | the term "modification".) Each licensee is addressed as "you". 275 | 276 | Activities other than copying, distribution and modification are not 277 | covered by this License; they are outside its scope. The act of 278 | running the Program is not restricted, and the output from the Program 279 | is covered only if its contents constitute a work based on the 280 | Program (independent of having been made by running the Program). 281 | Whether that is true depends on what the Program does. 282 | 283 | 1. You may copy and distribute verbatim copies of the Program's 284 | source code as you receive it, in any medium, provided that you 285 | conspicuously and appropriately publish on each copy an appropriate 286 | copyright notice and disclaimer of warranty; keep intact all the 287 | notices that refer to this License and to the absence of any warranty; 288 | and give any other recipients of the Program a copy of this License 289 | along with the Program. 290 | 291 | You may charge a fee for the physical act of transferring a copy, and 292 | you may at your option offer warranty protection in exchange for a fee. 293 | 294 | 2. You may modify your copy or copies of the Program or any portion 295 | of it, thus forming a work based on the Program, and copy and 296 | distribute such modifications or work under the terms of Section 1 297 | above, provided that you also meet all of these conditions: 298 | 299 | a) You must cause the modified files to carry prominent notices 300 | stating that you changed the files and the date of any change. 301 | 302 | b) You must cause any work that you distribute or publish, that in 303 | whole or in part contains or is derived from the Program or any 304 | part thereof, to be licensed as a whole at no charge to all third 305 | parties under the terms of this License. 306 | 307 | c) If the modified program normally reads commands interactively 308 | when run, you must cause it, when started running for such 309 | interactive use in the most ordinary way, to print or display an 310 | announcement including an appropriate copyright notice and a 311 | notice that there is no warranty (or else, saying that you provide 312 | a warranty) and that users may redistribute the program under 313 | these conditions, and telling the user how to view a copy of this 314 | License. (Exception: if the Program itself is interactive but 315 | does not normally print such an announcement, your work based on 316 | the Program is not required to print an announcement.) 317 | 318 | These requirements apply to the modified work as a whole. If 319 | identifiable sections of that work are not derived from the Program, 320 | and can be reasonably considered independent and separate works in 321 | themselves, then this License, and its terms, do not apply to those 322 | sections when you distribute them as separate works. But when you 323 | distribute the same sections as part of a whole which is a work based 324 | on the Program, the distribution of the whole must be on the terms of 325 | this License, whose permissions for other licensees extend to the 326 | entire whole, and thus to each and every part regardless of who wrote it. 327 | 328 | Thus, it is not the intent of this section to claim rights or contest 329 | your rights to work written entirely by you; rather, the intent is to 330 | exercise the right to control the distribution of derivative or 331 | collective works based on the Program. 332 | 333 | In addition, mere aggregation of another work not based on the Program 334 | with the Program (or with a work based on the Program) on a volume of 335 | a storage or distribution medium does not bring the other work under 336 | the scope of this License. 337 | 338 | 3. You may copy and distribute the Program (or a work based on it, 339 | under Section 2) in object code or executable form under the terms of 340 | Sections 1 and 2 above provided that you also do one of the following: 341 | 342 | a) Accompany it with the complete corresponding machine-readable 343 | source code, which must be distributed under the terms of Sections 344 | 1 and 2 above on a medium customarily used for software interchange; or, 345 | 346 | b) Accompany it with a written offer, valid for at least three 347 | years, to give any third party, for a charge no more than your 348 | cost of physically performing source distribution, a complete 349 | machine-readable copy of the corresponding source code, to be 350 | distributed under the terms of Sections 1 and 2 above on a medium 351 | customarily used for software interchange; or, 352 | 353 | c) Accompany it with the information you received as to the offer 354 | to distribute corresponding source code. (This alternative is 355 | allowed only for noncommercial distribution and only if you 356 | received the program in object code or executable form with such 357 | an offer, in accord with Subsection b above.) 358 | 359 | The source code for a work means the preferred form of the work for 360 | making modifications to it. For an executable work, complete source 361 | code means all the source code for all modules it contains, plus any 362 | associated interface definition files, plus the scripts used to 363 | control compilation and installation of the executable. However, as a 364 | special exception, the source code distributed need not include 365 | anything that is normally distributed (in either source or binary 366 | form) with the major components (compiler, kernel, and so on) of the 367 | operating system on which the executable runs, unless that component 368 | itself accompanies the executable. 369 | 370 | If distribution of executable or object code is made by offering 371 | access to copy from a designated place, then offering equivalent 372 | access to copy the source code from the same place counts as 373 | distribution of the source code, even though third parties are not 374 | compelled to copy the source along with the object code. 375 | 376 | 4. You may not copy, modify, sublicense, or distribute the Program 377 | except as expressly provided under this License. Any attempt 378 | otherwise to copy, modify, sublicense or distribute the Program is 379 | void, and will automatically terminate your rights under this License. 380 | However, parties who have received copies, or rights, from you under 381 | this License will not have their licenses terminated so long as such 382 | parties remain in full compliance. 383 | 384 | 5. You are not required to accept this License, since you have not 385 | signed it. However, nothing else grants you permission to modify or 386 | distribute the Program or its derivative works. These actions are 387 | prohibited by law if you do not accept this License. Therefore, by 388 | modifying or distributing the Program (or any work based on the 389 | Program), you indicate your acceptance of this License to do so, and 390 | all its terms and conditions for copying, distributing or modifying 391 | the Program or works based on it. 392 | 393 | 6. Each time you redistribute the Program (or any work based on the 394 | Program), the recipient automatically receives a license from the 395 | original licensor to copy, distribute or modify the Program subject to 396 | these terms and conditions. You may not impose any further 397 | restrictions on the recipients' exercise of the rights granted herein. 398 | You are not responsible for enforcing compliance by third parties to 399 | this License. 400 | 401 | 7. If, as a consequence of a court judgment or allegation of patent 402 | infringement or for any other reason (not limited to patent issues), 403 | conditions are imposed on you (whether by court order, agreement or 404 | otherwise) that contradict the conditions of this License, they do not 405 | excuse you from the conditions of this License. If you cannot 406 | distribute so as to satisfy simultaneously your obligations under this 407 | License and any other pertinent obligations, then as a consequence you 408 | may not distribute the Program at all. For example, if a patent 409 | license would not permit royalty-free redistribution of the Program by 410 | all those who receive copies directly or indirectly through you, then 411 | the only way you could satisfy both it and this License would be to 412 | refrain entirely from distribution of the Program. 413 | 414 | If any portion of this section is held invalid or unenforceable under 415 | any particular circumstance, the balance of the section is intended to 416 | apply and the section as a whole is intended to apply in other 417 | circumstances. 418 | 419 | It is not the purpose of this section to induce you to infringe any 420 | patents or other property right claims or to contest validity of any 421 | such claims; this section has the sole purpose of protecting the 422 | integrity of the free software distribution system, which is 423 | implemented by public license practices. Many people have made 424 | generous contributions to the wide range of software distributed 425 | through that system in reliance on consistent application of that 426 | system; it is up to the author/donor to decide if he or she is willing 427 | to distribute software through any other system and a licensee cannot 428 | impose that choice. 429 | 430 | This section is intended to make thoroughly clear what is believed to 431 | be a consequence of the rest of this License. 432 | 433 | 8. If the distribution and/or use of the Program is restricted in 434 | certain countries either by patents or by copyrighted interfaces, the 435 | original copyright holder who places the Program under this License 436 | may add an explicit geographical distribution limitation excluding 437 | those countries, so that distribution is permitted only in or among 438 | countries not thus excluded. In such case, this License incorporates 439 | the limitation as if written in the body of this License. 440 | 441 | 9. The Free Software Foundation may publish revised and/or new versions 442 | of the General Public License from time to time. Such new versions will 443 | be similar in spirit to the present version, but may differ in detail to 444 | address new problems or concerns. 445 | 446 | Each version is given a distinguishing version number. If the Program 447 | specifies a version number of this License which applies to it and "any 448 | later version", you have the option of following the terms and conditions 449 | either of that version or of any later version published by the Free 450 | Software Foundation. If the Program does not specify a version number of 451 | this License, you may choose any version ever published by the Free Software 452 | Foundation. 453 | 454 | 10. If you wish to incorporate parts of the Program into other free 455 | programs whose distribution conditions are different, write to the author 456 | to ask for permission. For software which is copyrighted by the Free 457 | Software Foundation, write to the Free Software Foundation; we sometimes 458 | make exceptions for this. Our decision will be guided by the two goals 459 | of preserving the free status of all derivatives of our free software and 460 | of promoting the sharing and reuse of software generally. 461 | 462 | NO WARRANTY 463 | 464 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 465 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 466 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 467 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 468 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 469 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 470 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 471 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 472 | REPAIR OR CORRECTION. 473 | 474 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 475 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 476 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 477 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 478 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 479 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 480 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 481 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 482 | POSSIBILITY OF SUCH DAMAGES. 483 | 484 | END OF TERMS AND CONDITIONS 485 | 486 | How to Apply These Terms to Your New Programs 487 | 488 | If you develop a new program, and you want it to be of the greatest 489 | possible use to the public, the best way to achieve this is to make it 490 | free software which everyone can redistribute and change under these terms. 491 | 492 | To do so, attach the following notices to the program. It is safest 493 | to attach them to the start of each source file to most effectively 494 | convey the exclusion of warranty; and each file should have at least 495 | the "copyright" line and a pointer to where the full notice is found. 496 | 497 | 498 | Copyright (C) 499 | 500 | This program is free software; you can redistribute it and/or modify 501 | it under the terms of the GNU General Public License as published by 502 | the Free Software Foundation; either version 2 of the License, or 503 | (at your option) any later version. 504 | 505 | This program is distributed in the hope that it will be useful, 506 | but WITHOUT ANY WARRANTY; without even the implied warranty of 507 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 508 | GNU General Public License for more details. 509 | 510 | You should have received a copy of the GNU General Public License 511 | along with this program; if not, write to the Free Software 512 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 513 | 514 | 515 | Also add information on how to contact you by electronic and paper mail. 516 | 517 | If the program is interactive, make it output a short notice like this 518 | when it starts in an interactive mode: 519 | 520 | Gnomovision version 69, Copyright (C) year name of author 521 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 522 | This is free software, and you are welcome to redistribute it 523 | under certain conditions; type `show c' for details. 524 | 525 | The hypothetical commands `show w' and `show c' should show the appropriate 526 | parts of the General Public License. Of course, the commands you use may 527 | be called something other than `show w' and `show c'; they could even be 528 | mouse-clicks or menu items--whatever suits your program. 529 | 530 | You should also get your employer (if you work as a programmer) or your 531 | school, if any, to sign a "copyright disclaimer" for the program, if 532 | necessary. Here is a sample; alter the names: 533 | 534 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 535 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 536 | 537 | , 1 April 1989 538 | Ty Coon, President of Vice 539 | 540 | This General Public License does not permit incorporating your program into 541 | proprietary programs. If your program is a subroutine library, you may 542 | consider it more useful to permit linking proprietary applications with the 543 | library. If this is what you want to do, use the GNU Library General 544 | Public License instead of this License. 545 | 546 | ------------------------------- 547 | 548 | Qt 5.9 is licensed under the GNU Lesser General Public License, version 3 549 | 550 | GNU LESSER GENERAL PUBLIC LICENSE 551 | Version 3, 29 June 2007 552 | 553 | Copyright (C) 2007 Free Software Foundation, Inc. 554 | Everyone is permitted to copy and distribute verbatim copies 555 | of this license document, but changing it is not allowed. 556 | 557 | This version of the GNU Lesser General Public License incorporates 558 | the terms and conditions of version 3 of the GNU General Public 559 | License, supplemented by the additional permissions listed below. 560 | 561 | 0. Additional Definitions. 562 | 563 | As used herein, "this License" refers to version 3 of the GNU Lesser 564 | General Public License, and the "GNU GPL" refers to version 3 of the GNU 565 | General Public License. 566 | 567 | "The Library" refers to a covered work governed by this License, 568 | other than an Application or a Combined Work as defined below. 569 | 570 | An "Application" is any work that makes use of an interface provided 571 | by the Library, but which is not otherwise based on the Library. 572 | Defining a subclass of a class defined by the Library is deemed a mode 573 | of using an interface provided by the Library. 574 | 575 | A "Combined Work" is a work produced by combining or linking an 576 | Application with the Library. The particular version of the Library 577 | with which the Combined Work was made is also called the "Linked 578 | Version". 579 | 580 | The "Minimal Corresponding Source" for a Combined Work means the 581 | Corresponding Source for the Combined Work, excluding any source code 582 | for portions of the Combined Work that, considered in isolation, are 583 | based on the Application, and not on the Linked Version. 584 | 585 | The "Corresponding Application Code" for a Combined Work means the 586 | object code and/or source code for the Application, including any data 587 | and utility programs needed for reproducing the Combined Work from the 588 | Application, but excluding the System Libraries of the Combined Work. 589 | 590 | 1. Exception to Section 3 of the GNU GPL. 591 | 592 | You may convey a covered work under sections 3 and 4 of this License 593 | without being bound by section 3 of the GNU GPL. 594 | 595 | 2. Conveying Modified Versions. 596 | 597 | If you modify a copy of the Library, and, in your modifications, a 598 | facility refers to a function or data to be supplied by an Application 599 | that uses the facility (other than as an argument passed when the 600 | facility is invoked), then you may convey a copy of the modified 601 | version: 602 | 603 | a) under this License, provided that you make a good faith effort to 604 | ensure that, in the event an Application does not supply the 605 | function or data, the facility still operates, and performs 606 | whatever part of its purpose remains meaningful, or 607 | 608 | b) under the GNU GPL, with none of the additional permissions of 609 | this License applicable to that copy. 610 | 611 | 3. Object Code Incorporating Material from Library Header Files. 612 | 613 | The object code form of an Application may incorporate material from 614 | a header file that is part of the Library. You may convey such object 615 | code under terms of your choice, provided that, if the incorporated 616 | material is not limited to numerical parameters, data structure 617 | layouts and accessors, or small macros, inline functions and templates 618 | (ten or fewer lines in length), you do both of the following: 619 | 620 | a) Give prominent notice with each copy of the object code that the 621 | Library is used in it and that the Library and its use are 622 | covered by this License. 623 | 624 | b) Accompany the object code with a copy of the GNU GPL and this license 625 | document. 626 | 627 | 4. Combined Works. 628 | 629 | You may convey a Combined Work under terms of your choice that, 630 | taken together, effectively do not restrict modification of the 631 | portions of the Library contained in the Combined Work and reverse 632 | engineering for debugging such modifications, if you also do each of 633 | the following: 634 | 635 | a) Give prominent notice with each copy of the Combined Work that 636 | the Library is used in it and that the Library and its use are 637 | covered by this License. 638 | 639 | b) Accompany the Combined Work with a copy of the GNU GPL and this license 640 | document. 641 | 642 | c) For a Combined Work that displays copyright notices during 643 | execution, include the copyright notice for the Library among 644 | these notices, as well as a reference directing the user to the 645 | copies of the GNU GPL and this license document. 646 | 647 | d) Do one of the following: 648 | 649 | 0) Convey the Minimal Corresponding Source under the terms of this 650 | License, and the Corresponding Application Code in a form 651 | suitable for, and under terms that permit, the user to 652 | recombine or relink the Application with a modified version of 653 | the Linked Version to produce a modified Combined Work, in the 654 | manner specified by section 6 of the GNU GPL for conveying 655 | Corresponding Source. 656 | 657 | 1) Use a suitable shared library mechanism for linking with the 658 | Library. A suitable mechanism is one that (a) uses at run time 659 | a copy of the Library already present on the user's computer 660 | system, and (b) will operate properly with a modified version 661 | of the Library that is interface-compatible with the Linked 662 | Version. 663 | 664 | e) Provide Installation Information, but only if you would otherwise 665 | be required to provide such information under section 6 of the 666 | GNU GPL, and only to the extent that such information is 667 | necessary to install and execute a modified version of the 668 | Combined Work produced by recombining or relinking the 669 | Application with a modified version of the Linked Version. (If 670 | you use option 4d0, the Installation Information must accompany 671 | the Minimal Corresponding Source and Corresponding Application 672 | Code. If you use option 4d1, you must provide the Installation 673 | Information in the manner specified by section 6 of the GNU GPL 674 | for conveying Corresponding Source.) 675 | 676 | 5. Combined Libraries. 677 | 678 | You may place library facilities that are a work based on the 679 | Library side by side in a single library together with other library 680 | facilities that are not Applications and are not covered by this 681 | License, and convey such a combined library under terms of your 682 | choice, if you do both of the following: 683 | 684 | a) Accompany the combined library with a copy of the same work based 685 | on the Library, uncombined with any other library facilities, 686 | conveyed under the terms of this License. 687 | 688 | b) Give prominent notice with the combined library that part of it 689 | is a work based on the Library, and explaining where to find the 690 | accompanying uncombined form of the same work. 691 | 692 | 6. Revised Versions of the GNU Lesser General Public License. 693 | 694 | The Free Software Foundation may publish revised and/or new versions 695 | of the GNU Lesser General Public License from time to time. Such new 696 | versions will be similar in spirit to the present version, but may 697 | differ in detail to address new problems or concerns. 698 | 699 | Each version is given a distinguishing version number. If the 700 | Library as you received it specifies that a certain numbered version 701 | of the GNU Lesser General Public License "or any later version" 702 | applies to it, you have the option of following the terms and 703 | conditions either of that published version or of any later version 704 | published by the Free Software Foundation. If the Library as you 705 | received it does not specify a version number of the GNU Lesser 706 | General Public License, you may choose any version of the GNU Lesser 707 | General Public License ever published by the Free Software Foundation. 708 | 709 | If the Library as you received it specifies that a proxy can decide 710 | whether future versions of the GNU Lesser General Public License shall 711 | apply, that proxy's public statement of acceptance of any version is 712 | permanent authorization for you to choose that version for the 713 | Library. 714 | 715 | ------------------------------- 716 | 717 | libcurl 7.64.0 718 | 719 | COPYRIGHT AND PERMISSION NOTICE 720 | 721 | Copyright (c) 1996 - 2019, Daniel Stenberg, , and many 722 | contributors, see the THANKS file. 723 | 724 | All rights reserved. 725 | 726 | Permission to use, copy, modify, and distribute this software for any purpose 727 | with or without fee is hereby granted, provided that the above copyright 728 | notice and this permission notice appear in all copies. 729 | 730 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 731 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 732 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. IN 733 | NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, 734 | DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR 735 | OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE 736 | OR OTHER DEALINGS IN THE SOFTWARE. 737 | 738 | Except as contained in this notice, the name of a copyright holder shall not 739 | be used in advertising or otherwise to promote the sale, use or other dealings 740 | in this Software without prior written authorization of the copyright holder. 741 | 742 | ------------------------------- 743 | 744 | Xdelta 3.1.0 745 | 746 | Copyright 2001-2017 josh.macdonald@gmail.com 747 | 748 | Licensed under the Apache License, Version 2.0 (the "License"); 749 | you may not use this file except in compliance with the License. 750 | You may obtain a copy of the License at 751 | 752 | http://www.apache.org/licenses/LICENSE-2.0 753 | 754 | Unless required by applicable law or agreed to in writing, software 755 | distributed under the License is distributed on an "AS IS" BASIS, 756 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 757 | See the License for the specific language governing permissions and 758 | limitations under the License. 759 | 760 | ------------------------------- 761 | 762 | dr_mp3 763 | Copyright 2018 David Reid 764 | 765 | Permission is hereby granted, free of charge, to any person obtaining a copy of 766 | this software and associated documentation files (the "Software"), to deal in 767 | the Software without restriction, including without limitation the rights to 768 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 769 | of the Software, and to permit persons to whom the Software is furnished to do 770 | so. 771 | 772 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 773 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 774 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 775 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 776 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 777 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 778 | SOFTWARE. 779 | 780 | ------------------------------- 781 | 782 | miniaudio 783 | Copyright 2019 David Reid 784 | 785 | Permission is hereby granted, free of charge, to any person obtaining a copy of 786 | this software and associated documentation files (the "Software"), to deal in 787 | the Software without restriction, including without limitation the rights to 788 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies 789 | of the Software, and to permit persons to whom the Software is furnished to do 790 | so. 791 | 792 | ------------------------------- 793 | 794 | SfxSetup.c - 7z SFX Setup 795 | 2017-04-04 : Igor Pavlov : Public domain 796 | 797 | ------------------------------- 798 | 799 | stb_vorbis 1.14 by Sean Barrett 800 | http://www.nothings.org/stb_vorbis/ 801 | https://github.com/nothings/stb/blob/master/stb_vorbis.c 802 | Public domain 803 | 804 | ------------------------------- 805 | 806 | SpeexDSP 1.2rc3 807 | https://www.speex.org 808 | 809 | Copyright 2002-2008 Xiph.org Foundation 810 | Copyright 2002-2008 Jean-Marc Valin 811 | Copyright 2005-2007 Analog Devices Inc. 812 | Copyright 2005-2008 Commonwealth Scientific and Industrial Research 813 | Organisation (CSIRO) 814 | Copyright 1993, 2002, 2006 David Rowe 815 | Copyright 2003 EpicGames 816 | Copyright 1992-1994 Jutta Degener, Carsten Bormann 817 | 818 | Redistribution and use in source and binary forms, with or without 819 | modification, are permitted provided that the following conditions 820 | are met: 821 | 822 | - Redistributions of source code must retain the above copyright 823 | notice, this list of conditions and the following disclaimer. 824 | 825 | - Redistributions in binary form must reproduce the above copyright 826 | notice, this list of conditions and the following disclaimer in the 827 | documentation and/or other materials provided with the distribution. 828 | 829 | - Neither the name of the Xiph.org Foundation nor the names of its 830 | contributors may be used to endorse or promote products derived from 831 | this software without specific prior written permission. 832 | 833 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 834 | ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 835 | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 836 | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR 837 | CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 838 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 839 | PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 840 | PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 841 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 842 | NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 843 | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -------------------------------------------------------------------------------- /installer/userdata/README.txt: -------------------------------------------------------------------------------- 1 | CHAOS;CHILD Improvement Patch (Steam) 2 | Committee of Zero 3 | Version 2.2.0 - Month X, 2025 4 | ============================== 5 | https://sonome.dareno.me 6 | https://twitter.com/CommitteeOf0 7 | https://discord.gg/rq4GGCh 8 | https://github.com/CommitteeOfZero 9 | https://www.youtube.com/@committeeofzero 10 | https://www.twitch.tv/CommitteeOfZero 11 | ============================== 12 | 13 | See http://sonome.dareno.me/projects/chaoschild-steam.html for details, contact information and further instructions. 14 | 15 | For troubleshooting, please come to our Discord. You can always find the latest version of the patch at https://github.com/CommitteeOfZero/cc-patch/releases 16 | 17 | ============================== 18 | Changes from 2.0.1: 19 | ============================== 20 | 21 | * GOG compatibility. 22 | * Minor text and consistency fixes. 23 | * Custom Steam assets added. 24 | 25 | ============================== 26 | Changes from 2.0: 27 | ============================== 28 | 29 | * Minor text and consistency fixes. 30 | * The title menu's logo is now properly translated. 31 | 32 | ============================== 33 | Changes from 1.12: 34 | ============================== 35 | 36 | * A full proofreading pass of the game has been completed, fixing large amounts of incorrect terminology, inaccuracies, inconsistencies, as well as improving general readability. Some moderate translation checking was done as well. 37 | * The TIPS have received a full translation check and editing pass. 38 | * Terminology has been made consistent with our CHAOS;HEAD NOAH translation and all our other patches. 39 | * Restored Japanese honorifics. 40 | 41 | ============================== 42 | Changes from 1.11: 43 | ============================== 44 | 45 | * Fixed compatibility with May 20, 2019 Steam update. 46 | * Adjusted edited keyboard help for Steam version. 47 | * Fixed launcher issue with moving save files from a system with a controller installed to a system without one ("There is an error importing setup files"). 48 | * Controller input can now be disabled to work around phantom inputs. 49 | * Replaced update checker technology as the old one was causing launcher crashes for a small number of users. 50 | * Fixed launcher not starting with "Entry Point Not Found" error for a small number of users. 51 | * Fixed replaced videos failing to play for some Linux users. 52 | * More typo fixes etc. 53 | 54 | ============================== 55 | Changes from 1.1: 56 | ============================== 57 | 58 | * Fixed an issue where the installer would crash on pre-AVX CPUs. 59 | 60 | ============================== 61 | Changes from 1.0: 62 | ============================== 63 | 64 | * Steam compatibility. 65 | * Lots of internal updates. 66 | * Removed memory fragmentation workaround as the Steam version now has its own. 67 | * Steam Play (Linux) support. 68 | * Some new translation fixes. 69 | * Includes new prompt explaining the delusion trigger controls. 70 | * Because Z and C are certainly not the most obvious choice. 71 | * Fixed patch installer not working on certain Windows installations lacking multimedia components. 72 | * Fixed game engine bug involving My Documents paths containing special characters on OneDrive. 73 | * We haven't checked if the Steam version still has this issue, but both STEINS;GATE 0 and the Japanese version of CHAOS;CHILD did. 74 | * Worked around game engine bug where, when pausing right before a voiced line, line would fail to play and game would crash on the next voiced line. 75 | * Fixed the goddamn title music. 76 | * In 1.0, our HQ audio option had a bug preventing the title screen BGM from playing if the intro video isn't skipped. Sorry about that. 77 | * Installer now ships as a ZIP archive instead of a self-extracting executable. 78 | 79 | ============================== 80 | Credits: 81 | ============================== 82 | 83 | Translation: 84 | * Rain 85 | * ItsRigs 86 | * MrComputerRevo 87 | * Ice 88 | * ChrisGLink 89 | * Enorovan 90 | 91 | Editing: 92 | * Kumin 93 | * Discontinuous Qualia 94 | * ChrisGLink 95 | * Spider 96 | 97 | Image editing: 98 | * Cypert 99 | * dusk 100 | * rimi 101 | * MrComputerRevo 102 | * Kumin 103 | * Raykable 104 | * Zips 105 | * Enorovan 106 | * Rile_Zugo 107 | 108 | Hacking: 109 | * SomeAnon 110 | * daxxy 111 | * MrComputerRevo 112 | * JoseJL 113 | * Enorovan 114 | 115 | Subtitles: 116 | * zahj 117 | 118 | QC: 119 | * Spider 120 | 121 | Chief Masochism Officer: 122 | * MrComputerRevo 123 | * Enorovan (abdication) 124 | 125 | Masochism Deputies: 126 | * Raniel 127 | * Gel Banana 128 | 129 | Special thanks to our vetted laboratory assistants for playtesting and proofreading! -------------------------------------------------------------------------------- /installer/userdata/alert.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/installer/userdata/alert.png -------------------------------------------------------------------------------- /installer/userdata/bgm.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/installer/userdata/bgm.mp3 -------------------------------------------------------------------------------- /installer/userdata/header.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/installer/userdata/header.png -------------------------------------------------------------------------------- /installer/userdata/left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/installer/userdata/left.png -------------------------------------------------------------------------------- /installer/userdata/next_button.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/installer/userdata/next_button.png -------------------------------------------------------------------------------- /installer/userdata/product.json: -------------------------------------------------------------------------------- 1 | { 2 | "windowTitle": "CHAOS;CHILD Improvement Patch (Steam) Installer", 3 | "uninstallerWindowTitle": "CHAOS;CHILD Improvement Patch (Steam) Uninstaller", 4 | "gameTitle": "CHAOS;CHILD", 5 | "inputScriptVersionTitle": "English Steam", 6 | "paths": { 7 | "GAME_STEAM_NAME": "CHAOS;CHILD", 8 | "GAME_STEAM_ID": "1961950", 9 | "PATCH_CONTENT": "DIST", 10 | "STEAMGRID_CONTENT": "STEAMGRID", 11 | "SCRIPT_DIFFS": "merged_patches", 12 | "ENSCRIPT_MPK": "%GAME_PATH%/languagebarrier/enscript.mpk", 13 | "LAUNCHERENG_PATH": "%GAME_PATH%/LauncherC0.exe", 14 | "LANGUAGEBARRIER_LOG_PATH": "%GAME_PATH%/languagebarrier/log.txt", 15 | "LAUNCHER_EXE": "LauncherC0.exe" 16 | }, 17 | "platforms": { 18 | "windows": { 19 | "conflictingProcesses": [ 20 | "Game.exe", 21 | "noidget.exe", 22 | "launcher.exe", 23 | "LauncherC0.exe", 24 | "CCPatch-Installer.exe" 25 | ], 26 | "uninstallProductKey": "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\ChaosChildSteamPatch", 27 | "uninstallProductDisplayName": "CHAOS;CHILD Improvement Patch (Steam)", 28 | "uninstallProductDisplayVersion": "2.2.0", 29 | "uninstallProductVersionMajor": 2, 30 | "uninstallProductVersionMinor": 0, 31 | "uninstallProductUninstallString": "\"%GAME_PATH%/nguninstall.exe\"", 32 | "paths": { 33 | "COZ_CONFIG_LOCATION": "%LOCALAPPDATA%/Committee of Zero", 34 | "CONFIG_LOCATION": "%COZ_CONFIG_LOCATION%/CCSteam", 35 | "MAGES_CONFIG_LOCATION": "%MYDOCUMENTS%/My Games/mages_steam", 36 | "GAME_CONFIG_LOCATION": "%MAGES_CONFIG_LOCATION%/CHAOS CHILD/eng", 37 | "DESKTOP_SHORTCUT_PATH": "%DESKTOP%/CHAOS;CHILD (Steam Patch).lnk", 38 | "STARTMENU_SHORTCUT_PATH": "%STARTMENU%/CHAOS;CHILD (Steam Patch).lnk" 39 | } 40 | } 41 | }, 42 | "playShortcut": { 43 | "displayName": "CHAOS;CHILD (Steam Patch)", 44 | "version": "2.2.0", 45 | "targetPath": "%LAUNCHERENG_PATH%", 46 | "workingDir": "%GAME_PATH%", 47 | "tooltip": "Play CHAOS;CHILD (Steam Patch)", 48 | "xdgCategories": "Game" 49 | }, 50 | "origScriptArchivePath": "%GAME_PATH%/USRDIR/script.mpk", 51 | "origScriptArchiveHash": "03f35afbe829872e9bea9a17064f149d" 52 | } -------------------------------------------------------------------------------- /installer/userdata/script.js: -------------------------------------------------------------------------------- 1 | var readmeText = ng.fs.global().readTextFile(':/userdata/README.txt'); 2 | var licenseText = ng.fs.global().readTextFile(':/userdata/LICENSE.txt'); 3 | 4 | var product = 5 | JSON.parse(ng.fs.global().readTextFile(':/userdata/product.json')); 6 | 7 | var state = {}; 8 | state.discovery = { 9 | run: false, 10 | gameFound: false, 11 | patchFound: false, 12 | gameLocation: '' 13 | }; 14 | 15 | function pad2(n) { 16 | if (n < 10) return '0' + n; 17 | return '' + n; 18 | } 19 | 20 | function checkConflictingProcesses(candidates) { 21 | var any = false; 22 | var closeList = ''; 23 | candidates.forEach(function(candidate) { 24 | if (ng.systemInfo.isProcessRunning(candidate)) { 25 | any = true; 26 | closeList += candidate + '\n'; 27 | } 28 | }); 29 | if (any) { 30 | ng.window.modal(ng.view.DlgType.OK, function(dlg) { 31 | dlg.width = 300; 32 | var lbl = dlg.addLabel( 33 | 'You are running the following programs which may conflict with installation. Please close them to continue.'); 34 | dlg.addSpace(16); 35 | var tf = dlg.addTextField({text: closeList, richText: false}); 36 | dlg.addSpace(16); 37 | }); 38 | } 39 | return any; 40 | } 41 | 42 | function DiscoverExisting() { 43 | if (state.discovery.run) return; 44 | 45 | state.discovery.run = true; 46 | 47 | switch (ng.systemInfo.platform()) { 48 | case ng.systemInfo.OsFamily.Windows: 49 | if (ng.win32.registry().valueExists( 50 | ng.win32.RootKey.HKLM, 51 | product.platforms.windows.uninstallProductKey, false, 52 | 'InstallLocation')) { 53 | state.discovery.gameFound = true; 54 | state.discovery.patchFound = true; 55 | state.discovery.gameLocation = ng.win32.registry().value( 56 | ng.win32.RootKey.HKLM, 57 | product.platforms.windows.uninstallProductKey, false, 58 | 'InstallLocation'); 59 | } else { 60 | // Steam discovery 61 | 62 | // Find library folders 63 | var libraryFolders = ['%STEAM_PATH%']; 64 | if (ng.fs.global().pathIsFile( 65 | '%STEAM_PATH%/steamapps/libraryfolders.vdf') && 66 | ng.fs.global().pathIsReadable( 67 | '%STEAM_PATH%/steamapps/libraryfolders.vdf')) { 68 | libraryfoldersVdf = ng.fs.global().readTextFile( 69 | '%STEAM_PATH%/steamapps/libraryfolders.vdf'); 70 | 71 | // parse text VDF, poorly 72 | var strLiteralRegex = /"([^"]*)"/g; 73 | while ((match = strLiteralRegex.exec(libraryfoldersVdf)) !== null) { 74 | var unescaped = eval(match[0]); // yolo 75 | if (ng.fs.global().pathIsDirectory(unescaped)) 76 | libraryFolders.push(unescaped); 77 | } 78 | } 79 | 80 | // check all library folders for our game 81 | var tryPath = 82 | function(path) { 83 | if (ng.fs.global().pathIsDirectory(path)) { 84 | state.discovery.gameFound = true; 85 | state.discovery.gameLocation = path; 86 | return true; 87 | } 88 | return false; 89 | } 90 | 91 | if (nglib.isSteamPlay()) { 92 | // missing slash here is intentional 93 | var compatdata = 94 | ng.fs.global().expandedPath('Z:%STEAM_COMPAT_DATA_PATH%'); 95 | var startSteamapps = compatdata.indexOf('/steamapps/'); 96 | if (startSteamapps !== -1) { 97 | libraryFolders.push(compatdata.substr(0, startSteamapps)); 98 | } 99 | } 100 | 101 | // SteamApps is all lowercase for the main library, CamelCase for 102 | // others... and we should respect case sensitivity for Wine 103 | for (var i = 0; i < libraryFolders.length; i++) { 104 | if (tryPath( 105 | libraryFolders[i] + '/steamapps/common/%GAME_STEAM_NAME%')) 106 | return; 107 | if (tryPath( 108 | libraryFolders[i] + '/SteamApps/common/%GAME_STEAM_NAME%')) 109 | return; 110 | } 111 | } 112 | break; 113 | } 114 | } 115 | 116 | function DoTx() { 117 | ng.tx.tx().receiptPath = '%GAME_PATH%'; 118 | ng.tx.tx().finishText = 'Installation has successfully completed.'; 119 | ng.tx.tx().cancelText = 120 | 'You cancelled the installation.\n\nProgress has not been undone.\n\nA log of changes has been stored to %LOGPATH%.'; 121 | ng.tx.tx().errorText = 122 | 'An error has occurred during installation.\n\nProgress has not been undone.\n\nA log of changes has been stored to %LOGPATH%.'; 123 | 124 | 125 | if (ng.systemInfo.platform() == ng.systemInfo.OsFamily.Windows) { 126 | var regSection = ng.tx.tx().addSection('Registration'); 127 | 128 | regSection.setRegistryValue( 129 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 130 | false, 'DisplayName', 131 | product.platforms.windows.uninstallProductDisplayName); 132 | regSection.setRegistryValue( 133 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 134 | false, 'DisplayVersion', 135 | product.platforms.windows.uninstallProductDisplayVersion); 136 | regSection.setRegistryValue( 137 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 138 | false, 'InstallLocation', ng.fs.global().expandedPath('%GAME_PATH%')); 139 | var date = new Date(); 140 | regSection.setRegistryValue( 141 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 142 | false, 'InstallDate', 143 | '' + date.getFullYear() + pad2(date.getMonth()) + pad2(date.getDate())); 144 | regSection.setRegistryValue( 145 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 146 | false, 'NoModify', 1); 147 | regSection.setRegistryValue( 148 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 149 | false, 'NoRepair', 1); 150 | regSection.setRegistryValue( 151 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 152 | false, 'VersionMajor', 153 | product.platforms.windows.uninstallProductVersionMajor); 154 | regSection.setRegistryValue( 155 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 156 | false, 'VersionMinor', 157 | product.platforms.windows.uninstallProductVersionMinor); 158 | regSection.setRegistryValue( 159 | ng.win32.RootKey.HKLM, product.platforms.windows.uninstallProductKey, 160 | false, 'UninstallString', 161 | ng.fs.global().expandedPath( 162 | product.platforms.windows.uninstallProductUninstallString)); 163 | 164 | // Ensure LanguageBarrier gets loaded 165 | if (ng.systemInfo.isWine()) { 166 | regSection.setRegistryValue( 167 | ng.win32.RootKey.HKCU, 'Software\\Wine\\DllOverrides', true, 168 | 'dinput8', 'native,builtin'); 169 | } 170 | } 171 | // We're replacing Steam Grid assets for them to be spoiler-free and cool 172 | var steamGridSection = ng.tx.tx().addSection('Replacing Steam Grid assets'); 173 | steamGridSection.copyFiles('%STEAMGRID_CONTENT%/*', '%STEAM_PATH%/userdata/%STEAM_ACTIVE_USER%/config/grid') 174 | 175 | var patchContentSection = ng.tx.tx().addSection('Copying patch content'); 176 | patchContentSection.copyFiles('%PATCH_CONTENT%/*', '%GAME_PATH%'); 177 | 178 | if (state.shouldCreateDesktopShortcut || 179 | state.shouldCreateStartMenuShortcut) { 180 | var shortcutsSection = ng.tx.tx().addSection('Creating shortcuts'); 181 | if (state.shouldCreateDesktopShortcut) { 182 | var desktopShortcut = JSON.parse(JSON.stringify(product.playShortcut)); 183 | desktopShortcut.shortcutPath = '%DESKTOP_SHORTCUT_PATH%'; 184 | shortcutsSection.createShortcut(desktopShortcut); 185 | } 186 | if (state.shouldCreateStartMenuShortcut) { 187 | var startMenuShortcut = JSON.parse(JSON.stringify(product.playShortcut)); 188 | startMenuShortcut.shortcutPath = '%STARTMENU_SHORTCUT_PATH%'; 189 | shortcutsSection.createShortcut(startMenuShortcut); 190 | } 191 | } 192 | 193 | // Yeah, these nested double-quotes work, really. 194 | if (state.shouldRunLauncher) { 195 | ng.tx.tx().addExecuteAfterFinish(ng.fs.global().expandedPath( 196 | 'cmd /c "cd /d "%GAME_PATH%" & %LAUNCHER_EXE%"')); 197 | } 198 | 199 | // Proton currently has trouble with boot.bat, the solution is to replace it 200 | // with the launcher 201 | // And here the nested quotes don't quite work but we can escape them properly 202 | // ...in the first instance, anyway, haven't gotten that to work for the start 203 | // command, hence the shell script 204 | if (nglib.isSteamPlay()) { 205 | ng.tx.tx().addExecuteAfterFinish(ng.fs.global().expandedPath( 206 | 'cmd /c "cd /d \"%GAME_PATH%\" & start Z:%SHELL% proton_boot_fix.sh"')); 207 | } 208 | 209 | // And hundreds of lines of code later... 210 | ng.tx.run(); 211 | } 212 | 213 | var StartPage = function() { 214 | nglib.PageController.call(this, 'Readme'); 215 | this.view.addTextField(readmeText); 216 | }; 217 | StartPage.prototype = Object.create(nglib.PageController.prototype); 218 | StartPage.prototype.onNext = function() { 219 | (new LicensePage()).push(); 220 | }; 221 | 222 | var LicensePage = function() { 223 | nglib.PageController.call(this, 'License'); 224 | this.view.addTextField(licenseText); 225 | this.acceptedCheckBox = this.view.addCheckBox( 226 | 'I have read and accept these terms and conditions.'); 227 | }; 228 | LicensePage.prototype = Object.create(nglib.PageController.prototype); 229 | LicensePage.prototype.onNext = function() { 230 | if (!this.acceptedCheckBox.checked) { 231 | ng.window.messageBox( 232 | 'You cannot proceed if you do not accept the license agreements.'); 233 | return; 234 | } 235 | 236 | DiscoverExisting(); 237 | 238 | (new DirectoryPage()).push(); 239 | }; 240 | 241 | var DirectoryPage = function() { 242 | nglib.PageController.call(this, 'Settings'); 243 | this.view.addLabel( 244 | 'Choose directory where ' + product.gameTitle + ' (' + 245 | product.inputScriptVersionTitle + 246 | ') is installed, containing files like Game.exe and the USRDIR folder:'); 247 | var pickerParams = {title: 'Choose game directory'}; 248 | if (state.discovery.gameFound) { 249 | pickerParams.preset = 250 | ng.fs.global().expandedPath(state.discovery.gameLocation); 251 | } 252 | this.gameDirectoryPicker = this.view.addDirectoryPicker(pickerParams); 253 | this.view.addSpace(32); 254 | if (!nglib.isSteamPlay()) { 255 | this.desktopShortcutCb = 256 | this.view.addCheckBox({text: 'Create desktop shortcut', preset: true}); 257 | this.startMenuShortcutCb = this.view.addCheckBox( 258 | {text: 'Create Start Menu shortcut', preset: true}); 259 | this.launcherCb = this.view.addCheckBox( 260 | {text: 'Run launcher after installation', preset: true}); 261 | } 262 | }; 263 | DirectoryPage.prototype = Object.create(nglib.PageController.prototype); 264 | DirectoryPage.prototype.onNext = function() { 265 | if (ng.systemInfo.platform() == ng.systemInfo.OsFamily.Windows) { 266 | if (checkConflictingProcesses( 267 | product.platforms.windows.conflictingProcesses)) 268 | return; 269 | } 270 | 271 | ng.fs.global().setMacro('GAME_PATH', this.gameDirectoryPicker.value); 272 | 273 | if (!ng.fs.global().pathIsDirectory('%GAME_PATH%')) { 274 | ng.window.messageBox('Game directory doesn\'t exist or isn\'t a directory'); 275 | return; 276 | } 277 | if (!ng.fs.global().pathIsWritable('%GAME_PATH%')) { 278 | ng.window.messageBox('Game directory isn\'t writable'); 279 | return; 280 | } 281 | if (!ng.fs.global().pathIsFile(product.origScriptArchivePath)) { 282 | ng.window.messageBox( 283 | 'Could not find ' + product.gameTitle + ' (' + 284 | product.inputScriptVersionTitle + ') in specified directory.'); 285 | return; 286 | } else if ( 287 | ng.fs.global().md5sum(product.origScriptArchivePath) != 288 | product.origScriptArchiveHash) { 289 | ng.window.messageBox( 290 | 'Game scripts present but invalid. Ensure you are using a fully updated ' + 291 | product.gameTitle + ' (' + product.inputScriptVersionTitle + 292 | ') and the latest patch version. If the game has recently received an official update, the patch may have to be updated to match, please check our website.'); 293 | return; 294 | } 295 | 296 | // TODO: check fs for same physical directory / ignore slashes difference 297 | // TODO: HTML escape? 298 | if (state.discovery.patchFound && 299 | state.discovery.gameLocation != this.gameDirectoryPicker.value) { 300 | var shouldContinue = ng.window.modal(ng.view.DlgType.YesNo, function(dlg) { 301 | dlg.width = 300; 302 | var lbl = dlg.addLabel( 303 | 'A previous installation of the patch has been found at:' + 304 | state.discovery.gameLocation + 305 | '

If you continue, you will not be able to use the uninstaller for the previous installation.

Continue?'); 306 | lbl.richText = true; 307 | }); 308 | if (!shouldContinue) return; 309 | } 310 | 311 | if (nglib.isSteamPlay()) { 312 | state.shouldCreateDesktopShortcut = false; 313 | state.shouldCreateStartMenuShortcut = false; 314 | state.shouldRunLauncher = false; 315 | } else { 316 | state.shouldCreateDesktopShortcut = this.desktopShortcutCb.checked; 317 | state.shouldCreateStartMenuShortcut = this.startMenuShortcutCb.checked; 318 | state.shouldRunLauncher = this.launcherCb.checked; 319 | } 320 | 321 | DoTx(); 322 | }; 323 | 324 | ng.fs.global().addMacros(product.paths); 325 | switch (ng.systemInfo.platform()) { 326 | case ng.systemInfo.OsFamily.Windows: 327 | ng.fs.global().addMacros(product.platforms.windows.paths); 328 | ng.fs.global().setMacro( 329 | 'DESKTOP', 330 | ng.win32.registry().value( 331 | ng.win32.RootKey.HKCU, 332 | 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders', 333 | true, 'Desktop')); 334 | ng.fs.global().setMacro( 335 | 'STARTMENU', 336 | ng.win32.registry().value( 337 | ng.win32.RootKey.HKCU, 338 | 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders', 339 | true, 'Start Menu')); 340 | ng.fs.global().setMacro( 341 | 'MYDOCUMENTS', 342 | ng.win32.registry().value( 343 | ng.win32.RootKey.HKCU, 344 | 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders', 345 | true, 'Personal')); 346 | if (ng.win32.registry().valueExists( 347 | ng.win32.RootKey.HKCU, 'Software\\Valve\\Steam', true, 348 | 'SteamPath')) { 349 | ng.fs.global().setMacro( 350 | 'STEAM_PATH', 351 | ng.win32.registry().value( 352 | ng.win32.RootKey.HKCU, 'Software\\Valve\\Steam', true, 353 | 'SteamPath')); 354 | } 355 | if (ng.win32.registry().valueExists( 356 | ng.win32.RootKey.HKCU, 'Software\\Valve\\Steam\\ActiveProcess', true, 357 | 'ActiveUser')) { 358 | ng.fs.global().setMacro( 359 | 'STEAM_ACTIVE_USER', 360 | ng.win32.registry().value( 361 | ng.win32.RootKey.HKCU, 'Software\\Valve\\Steam\\ActiveProcess', true, 362 | 'ActiveUser')); 363 | } 364 | break; 365 | } 366 | 367 | ng.window.setTitle(product.windowTitle); 368 | ng.window.setMessageBoxIcon(':/userdata/alert.png'); 369 | ng.window.playBgm( 370 | {url: ':/userdata/bgm.mp3', loopStart: 34101, loopEnd: 2533411}); 371 | 372 | if (ng.systemInfo.isWine()) { 373 | if (!nglib.isSteamPlay()) { 374 | ng.window.messageBox( 375 | 'You are trying to install the patch on Wine outside of Steam Play. This is unsupported and probably not what you want. See our website for instructions.'); 376 | } 377 | } 378 | 379 | 380 | (new StartPage()).push(); -------------------------------------------------------------------------------- /installer/userdata/scriptUninstaller.js: -------------------------------------------------------------------------------- 1 | var product = 2 | JSON.parse(ng.fs.global().readTextFile(':/userdata/product.json')); 3 | 4 | var state = {}; 5 | state.discovery = { 6 | run: false, 7 | gameFound: false, 8 | patchFound: false, 9 | gameLocation: '' 10 | }; 11 | 12 | function checkConflictingProcesses(candidates) { 13 | var any = false; 14 | var closeList = ''; 15 | candidates.forEach(function(candidate) { 16 | if (ng.systemInfo.isProcessRunning(candidate)) { 17 | any = true; 18 | closeList += candidate + '\n'; 19 | } 20 | }); 21 | if (any) { 22 | ng.window.modal(ng.view.DlgType.OK, function(dlg) { 23 | dlg.width = 300; 24 | var lbl = dlg.addLabel( 25 | 'You are running the following programs which may conflict with uninstallation. Please close them to continue.'); 26 | dlg.addSpace(16); 27 | var tf = dlg.addTextField({text: closeList, richText: false}); 28 | dlg.addSpace(16); 29 | }); 30 | } 31 | return any; 32 | } 33 | 34 | function DiscoverExisting() { 35 | if (state.discovery.run) return; 36 | 37 | state.discovery.run = true; 38 | 39 | switch (ng.systemInfo.platform()) { 40 | case ng.systemInfo.OsFamily.Windows: 41 | if (ng.win32.registry().valueExists( 42 | ng.win32.RootKey.HKLM, 43 | product.platforms.windows.uninstallProductKey, false, 44 | 'InstallLocation')) { 45 | var tempGameLocation = ng.win32.registry().value( 46 | ng.win32.RootKey.HKLM, 47 | product.platforms.windows.uninstallProductKey, false, 48 | 'InstallLocation'); 49 | if (ng.fs.global().pathIsFile(tempGameLocation + '/ngreceipt.bin')) { 50 | state.discovery.gameFound = true; 51 | state.discovery.patchFound = true; 52 | state.discovery.gameLocation = tempGameLocation; 53 | } 54 | } 55 | break; 56 | } 57 | } 58 | 59 | function DoTx() { 60 | ng.tx.tx().uninstallMode = true; 61 | ng.tx.tx().receiptPath = '%GAME_PATH%'; 62 | ng.tx.tx().finishText = 'Uninstallation has successfully completed.'; 63 | ng.tx.tx().cancelText = 64 | 'You cancelled the uninstallation.\n\nProgress has not been undone.\n\nA log of changes has been stored to %LOGPATH%.'; 65 | ng.tx.tx().errorText = 66 | 'An error has occurred during uninstallation.\n\nProgress has not been undone.\n\nA log of changes has been stored to %LOGPATH%.'; 67 | 68 | var section = ng.tx.tx().addSection('Uninstalling'); 69 | 70 | section.removeFile('%LANGUAGEBARRIER_LOG_PATH%'); 71 | if (state.shouldRemovePatchConfig) { 72 | section.removeDirectory('%CONFIG_LOCATION%'); 73 | section.removeDirectory('%COZ_CONFIG_LOCATION%', true); 74 | } 75 | 76 | section.removeFile('%STEAM_PATH%/userdata/%STEAM_ACTIVE_USER%/config/grid/%GAME_STEAM_ID%_hero.png') 77 | section.removeFile('%STEAM_PATH%/userdata/%STEAM_ACTIVE_USER%/config/grid/%GAME_STEAM_ID%_logo.png') 78 | section.removeFile('%STEAM_PATH%/userdata/%STEAM_ACTIVE_USER%/config/grid/%GAME_STEAM_ID%.png') 79 | section.removeFile('%STEAM_PATH%/userdata/%STEAM_ACTIVE_USER%/config/grid/%GAME_STEAM_ID%p.png') 80 | 81 | section.removeFile('%GAME_PATH%/CHILD/d3d9.dll'); 82 | section.removeFile('%GAME_PATH%/CHILD/d3d10.dll'); 83 | section.removeFile('%GAME_PATH%/CHILD/d3d10_1.dll'); 84 | section.removeFile('%GAME_PATH%/CHILD/d3d10core.dll'); 85 | section.removeFile('%GAME_PATH%/CHILD/d3d11.dll'); 86 | section.removeFile('%GAME_PATH%/CHILD/dxgi.dll'); 87 | 88 | section.rollbackReceipt(); 89 | 90 | ng.tx.run(); 91 | } 92 | 93 | var StartPage = function() { 94 | nglib.PageController.call(this, 'Uninstaller'); 95 | DiscoverExisting(); 96 | if (!state.discovery.patchFound) { 97 | this.view.addLabel( 98 | 'Couldn\'t find game directory, please enter it manually:'); 99 | this.gameDirectoryPicker = 100 | this.view.addDirectoryPicker({title: 'Choose game directory'}); 101 | } else { 102 | this.view.addLabel('Patch will be uninstalled from:'); 103 | this.view.addLabel(state.discovery.gameLocation); 104 | } 105 | this.view.addSpace(32); 106 | this.removePatchConfigCb = this.view.addCheckBox('Also delete patch config'); 107 | }; 108 | StartPage.prototype = Object.create(nglib.PageController.prototype); 109 | StartPage.prototype.onNext = function() { 110 | if (ng.systemInfo.platform() == ng.systemInfo.OsFamily.Windows) { 111 | if (checkConflictingProcesses( 112 | product.platforms.windows.conflictingProcesses)) 113 | return; 114 | } 115 | 116 | if (state.discovery.patchFound) { 117 | ng.fs.global().setMacro('GAME_PATH', state.discovery.gameLocation); 118 | } else { 119 | if (ng.fs.global().pathIsFile( 120 | this.gameDirectoryPicker.value + '/ngreceipt.bin')) { 121 | ng.fs.global().setMacro('GAME_PATH', this.gameDirectoryPicker.value); 122 | } else { 123 | ng.window.messageBox( 124 | 'Patched game was not found at the location you entered.'); 125 | return; 126 | } 127 | } 128 | 129 | state.shouldRemovePatchConfig = this.removePatchConfigCb.checked; 130 | 131 | var shouldUninstall = ng.window.modal(ng.view.DlgType.YesNo, function(dlg) { 132 | dlg.width = 300; 133 | var lbl = dlg.addLabel( 134 | 'Are you sure you wish to uninstall the patch?

Note if you are upgrading to a new version, you do not need to uninstall the old one first.'); 135 | lbl.richText = true; 136 | }); 137 | if (!shouldUninstall) return; 138 | 139 | DoTx(); 140 | }; 141 | 142 | ng.fs.global().addMacros(product.paths); 143 | switch (ng.systemInfo.platform()) { 144 | case ng.systemInfo.OsFamily.Windows: 145 | ng.fs.global().addMacros(product.platforms.windows.paths); 146 | ng.fs.global().setMacro( 147 | 'DESKTOP', 148 | ng.win32.registry().value( 149 | ng.win32.RootKey.HKCU, 150 | 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders', 151 | true, 'Desktop')); 152 | ng.fs.global().setMacro( 153 | 'STARTMENU', 154 | ng.win32.registry().value( 155 | ng.win32.RootKey.HKCU, 156 | 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders', 157 | true, 'Start Menu')); 158 | ng.fs.global().setMacro( 159 | 'MYDOCUMENTS', 160 | ng.win32.registry().value( 161 | ng.win32.RootKey.HKCU, 162 | 'SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\User Shell Folders', 163 | true, 'Personal')); 164 | break; 165 | } 166 | 167 | ng.window.setTitle(product.windowTitle); 168 | ng.window.setMessageBoxIcon(':/userdata/alert.png'); 169 | 170 | (new StartPage()).push(); -------------------------------------------------------------------------------- /installer/userdataUninstaller.qrc: -------------------------------------------------------------------------------- 1 | 2 | 3 | userdata/header.png 4 | userdata/next_button.png 5 | userdata/left.png 6 | userdata/alert.png 7 | userdata/scriptUninstaller.js 8 | userdata/product.json 9 | 10 | 11 | -------------------------------------------------------------------------------- /launcher/build/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/launcher/build/.gitkeep -------------------------------------------------------------------------------- /launcher/realboot_build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | pushd build 3 | call vcvarsall.bat x86 4 | set CL=/FC %CL% 5 | qmake "CONFIG+=chaoschild" "CONFIG+=steam" ..\realboot 6 | nmake 7 | popd 8 | copy /y realboot\vendor\curl\bin\libcurl.pdb build\release\ 9 | if exist deploy rmdir /q /s deploy 10 | mkdir deploy 11 | pushd deploy 12 | copy ..\build\release\realboot.exe .\LauncherC0.exe 13 | copy /y ..\realboot\vendor\curl\bin\libcurl.dll .\ 14 | windeployqt --no-translations --no-compiler-runtime --no-quick-import --no-system-d3d-compiler --no-webkit2 --no-angle --no-opengl-sw .\LauncherC0.exe 15 | popd -------------------------------------------------------------------------------- /mpkpack.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import sys 3 | import os 4 | import struct 5 | import io 6 | 7 | def round_to_2kb(par): 8 | return ((par // 2048) + (0 if (par % 2048) == 0 else 1)) * 2048 9 | 10 | print(" M P K P A C K") 11 | print("\"Couldn't have done it better myself.\" --Phil Katz") 12 | 13 | if len(sys.argv) != 3: 14 | print("Usage: mpkpack.py ") 15 | print("Example: mpkpack.py c0data_toc.csv c0data.mpk") 16 | sys.exit(0) 17 | 18 | tocfilename = sys.argv[1] 19 | outputpath = sys.argv[2] 20 | 21 | print("Please don't touch any inputs while I work, or feed me invalid ones") 22 | print(" or I *will* break horribly") 23 | 24 | entries = [] 25 | 26 | print("Reading TOC...") 27 | with io.open(tocfilename, 'r') as f: 28 | reader = csv.reader(f) 29 | for row in reader: 30 | if row[0].startswith('#'): 31 | continue 32 | entry = { 33 | 'id': int(row[0]), 34 | 'filename_on_disk': row[1], 35 | 'filename_in_archive': row[2] 36 | } 37 | entries.append(entry) 38 | 39 | with io.open(outputpath, 'wb') as f: 40 | print("Writing header...") 41 | magic = b'MPK\0' 42 | ver = b'\x00\x00\x02\x00' 43 | f.write(magic) 44 | f.write(ver) 45 | count = struct.pack(" '{2}' ...".format(entry["id"], entry["filename_on_disk"], entry["filename_in_archive"])) 52 | f.seek(pos, os.SEEK_SET) 53 | entry["offset"] = pos 54 | with io.open(entry["filename_on_disk"], 'rb') as infile: 55 | while True: 56 | buf = infile.read(io.DEFAULT_BUFFER_SIZE) 57 | if not buf: 58 | break 59 | f.write(buf) 60 | entry["filesize"] = infile.tell() 61 | pos = round_to_2kb(pos + entry["filesize"]) 62 | 63 | i = 0 64 | print("Writing TOC...") 65 | for entry in entries: 66 | f.seek(0x40 + (i * 0x100), os.SEEK_SET) 67 | f.seek(0x4, os.SEEK_CUR) # Skip compression field (always 0 for us) 68 | id = struct.pack("> " + $desc).PadRight($len) -BackgroundColor DarkBlue -ForegroundColor Cyan 104 | Write-Host $line.PadRight($len) -BackgroundColor DarkBlue -ForegroundColor Cyan 105 | Write-Host "" 106 | } 107 | 108 | Write-Output " TERRIBUILD" 109 | Write-Output "Rated World's #1 Build Script By Leading Game Industry Officials" 110 | Write-Output "" 111 | Write-Output "------------------------------------------------------------------------" 112 | Write-Output "" 113 | 114 | PrintSection "Creating new DIST and temp" 115 | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue .\DIST 116 | New-Item -ItemType directory -Path .\DIST | Out-Null 117 | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue .\temp 118 | New-Item -ItemType directory -Path .\temp | Out-Null 119 | Remove-Item -Force -Recurse -ErrorAction SilentlyContinue .\symbols 120 | New-Item -ItemType directory -Path .\symbols | Out-Null 121 | 122 | PrintSection "Pulling latest script changes" 123 | cd coalesc3 124 | & git pull 125 | cd data/chaos_child/txt_eng 126 | & git pull 127 | cd ../../../.. 128 | 129 | PrintSection "Building LanguageBarrier as $languagebarrier_configuration" 130 | & "$msbuild" "$languagebarrier_dir\LanguageBarrier\LanguageBarrier.vcxproj" "/p:Configuration=$languagebarrier_configuration" 131 | 132 | PrintSection "Copying LanguageBarrier to DIST" 133 | Copy-Item $languagebarrier_dir\languagebarrier\$languagebarrier_configuration\*.dll .\DIST 134 | Copy-Item $languagebarrier_dir\languagebarrier\$languagebarrier_configuration\*.pdb .\symbols 135 | Copy-Item -Recurse $languagebarrier_dir\languagebarrier\$languagebarrier_configuration\languagebarrier .\DIST 136 | New-Item -ItemType directory -Path .\DIST\CHILD | Out-Null 137 | # TODO how does wine handle this? 138 | Move-Item .\DIST\dinput8.dll .\DIST\CHILD\ 139 | # Reported necessary for some users, otherwise: 140 | # "Procedure entry point csri_renderer_default could not be located in ...\CHILD\DINPUT8.dll" 141 | Copy-Item .\DIST\VSFilter.dll .\DIST\CHILD\ 142 | 143 | PrintSection "Building and running mgsfontgen-dx" 144 | $mgsfontgen_dx_repo = ".\mgsfontgen-dx" 145 | cd $mgsfontgen_dx_repo 146 | & .\build.cmd 147 | cd cc 148 | & .\generate.cmd 149 | Move-Item -Force .\FONT_A.dds ..\..\temp\FONT_A.dds 150 | Move-Item -Force .\*.dds ..\..\DIST\languagebarrier\ 151 | Move-Item -Force .\widths.bin ..\..\DIST\languagebarrier\widths.bin 152 | cd ..\.. 153 | 154 | PrintSection "Patching scripts" 155 | cd coalesc3 156 | python build.py chaos_child windows eng --clean 157 | Copy-Item .\out\chaos_child\windows_eng\enscript.mpk ..\DIST\languagebarrier\ 158 | cd .. 159 | 160 | PrintSection "Packing c0data.mpk" 161 | python .\mpkpack.py c0data_toc.csv DIST\languagebarrier\c0data.mpk 162 | 163 | # LanguageBarrier currently needs this file to be present even if no string redirections are configured 164 | echo $null > .\DIST\languagebarrier\stringReplacementTable.bin 165 | 166 | PrintSection "Copying content to DIST" 167 | Copy-Item -Recurse -Force .\content\* .\DIST 168 | # DXVK 169 | Move-Item .\DIST\d3d9 ".\DIST\CHILD" 170 | Move-Item .\DIST\d3d10 ".\DIST\CHILD" 171 | Move-Item .\DIST\d3d10_1 ".\DIST\CHILD" 172 | Move-Item .\DIST\d3d10core ".\DIST\CHILD" 173 | Move-Item .\DIST\d3d11 ".\DIST\CHILD" 174 | Move-Item .\DIST\dxgi ".\DIST\CHILD" 175 | 176 | 177 | PrintSection "Building and copying realboot" 178 | cd launcher 179 | & .\realboot_build.bat 180 | cd .. 181 | SetRealbootExeMetadata .\launcher\deploy\LauncherC0.exe 182 | Copy-Item -Recurse -Force .\launcher\deploy\* .\DIST 183 | Copy-Item -Recurse -Force .\launcher\build\release\*.pdb .\symbols 184 | 185 | PrintSection "Building noidget" 186 | cd installer 187 | & .\noidget_build.bat 188 | cd .. 189 | SetInstallerExeMetadata .\installer\deploy\noidget.exe 190 | SetUninstallerExeMetadata .\installer\deployUninstaller\noidget.exe 191 | Copy-Item -Recurse -Force .\installer\build\release\*.pdb .\symbols 192 | 193 | PrintSection "Packing uninstaller" 194 | cd installer\deployUninstaller 195 | 7z a -mx=0 ..\..\temp\sfxbaseUninstaller.7z .\* 196 | cd ..\.. 197 | copy .\7zS2.sfx .\temp\UninstallerExtractor.exe 198 | SetUninstallerExeMetadata -exePath .\temp\UninstallerExtractor.exe 199 | cmd /c copy /b .\temp\UninstallerExtractor.exe + .\temp\sfxbaseUninstaller.7z DIST\nguninstall.exe 200 | 201 | # Only change to switch to SFX installer: Uncomment section below, comment out section after that one 202 | <# 203 | PrintSection "Packing installer" 204 | 7z a -mx=0 .\temp\sfxbase.7z DIST 205 | cd temp 206 | 7z a -mx=0 .\sfxbase.7z merged_patches 207 | 7z a -mx=0 .\sfxbase.7z merged_patches_c 208 | cd .. 209 | cd installer\deploy 210 | 7z a -mx=0 ..\..\temp\sfxbase.7z .\* 211 | cd ..\.. 212 | copy .\7zS2.sfx .\temp\InstallerExtractor.exe 213 | SetInstallerExeMetadata -exePath .\temp\InstallerExtractor.exe 214 | cmd /c copy /b .\temp\InstallerExtractor.exe + .\temp\sfxbase.7z DIST\Installer.exe 215 | #> 216 | 217 | PrintSection "Packing installer" 218 | cd temp 219 | $patchFolderName = "CCSteamPatch-v$version_string-Setup" 220 | New-Item -ItemType directory -Path $patchFolderName | Out-Null 221 | cd $patchFolderName 222 | New-Item -ItemType directory -Path DIST | Out-Null 223 | Move-Item -Force ..\..\DIST\* .\DIST 224 | New-Item -ItemType directory -Path STEAMGRID | Out-Null 225 | Copy-Item -Recurse -Force ..\..\content_steamgrid\* .\STEAMGRID 226 | Move-Item -Force ..\..\installer\deploy\* . 227 | Move-Item -Force .\noidget.exe .\CCSteamPatch-Installer.exe 228 | cd ..\..\DIST 229 | 7z a -mx=5 "$patchFolderName.zip" "..\temp\$patchFolderName" 230 | cd .. 231 | 232 | PrintSection "Removing temp" 233 | Remove-Item -Force -Recurse .\temp -------------------------------------------------------------------------------- /update.json: -------------------------------------------------------------------------------- 1 | { 2 | "__schema_version": 2, 3 | "channels": { 4 | "stable-win32": { 5 | "intVersion": 1 6 | }, 7 | "stable-steam-win32": { 8 | "intVersion": 6 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /xdelta3.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/CommitteeOfZero/cc-patch/f62be6e034d6151b4ca717b2a4f28c67b7db3878/xdelta3.exe --------------------------------------------------------------------------------