├── .gitattributes ├── .gitignore ├── AFS ├── AFS.sln ├── bin │ ├── libpng16.dll │ └── libpng16_d.dll ├── include │ ├── Common.cpp │ ├── Common.h │ ├── libpng │ │ ├── png.h │ │ ├── pngconf.h │ │ └── pnglibconf.h │ └── struct.h ├── lib │ ├── libpng16.lib │ └── libpng16_d.lib ├── src │ ├── afs │ │ ├── afs.cpp │ │ ├── afs.vcxproj │ │ └── afs.vcxproj.filters │ ├── afs_bip_t2p │ │ ├── Utility.h │ │ ├── afs_bip_t2p.vcxproj │ │ ├── afs_bip_t2p.vcxproj.filters │ │ ├── bip.cpp │ │ ├── lzss.cpp │ │ ├── lzss.h │ │ ├── merge.cpp │ │ ├── merge.h │ │ ├── picture.cpp │ │ ├── picture.h │ │ └── tim2.h │ └── afs_tim2 │ │ ├── afs_tim2.vcxproj │ │ ├── afs_tim2.vcxproj.filters │ │ └── tim2.cpp └── type.txt ├── AdvHD ├── AdvHD.sln ├── AdvHD │ ├── AdvHD.cpp │ ├── AdvHD.rc │ ├── AdvHD.vcxproj │ ├── AdvHD.vcxproj.filters │ ├── AdvHD2.cpp │ ├── AdvHD2.h │ ├── functions.cpp │ ├── functions.h │ ├── gameicon.ico │ ├── main.cpp │ ├── pnap.cpp │ └── resource.h ├── Merge2010 │ ├── Merge2010.vcxproj │ ├── Merge2010.vcxproj.filters │ ├── README │ ├── libpng16.dll │ ├── libpng16.lib │ ├── libpng16d.lib │ ├── main.cpp │ ├── merge2.cpp │ ├── merge2.h │ ├── zlib.lib │ └── zlibd.lib └── bin │ ├── AdvHD.exe │ └── Merge2010.exe ├── BGI ├── BGI.sln ├── BGI │ ├── BGI.vcxproj │ ├── BGI.vcxproj.filters │ ├── BGI.vcxproj.user │ ├── CBG_v2.h │ ├── arc.cpp │ ├── arc.h │ ├── cbg.h │ ├── cbg_v1.cpp │ ├── dsc.cpp │ ├── dsc.h │ ├── error.h │ ├── main.cpp │ ├── main.rc │ ├── resource.h │ └── type.h ├── README.txt └── tools │ └── sekaichu-ch-merge.py ├── DDSystem ├── DDSystem.sln ├── bin │ ├── FreeImage.dll │ ├── libpng16.dll │ └── libpng16_d.dll ├── include │ ├── FreeImage.h │ ├── libjpeg │ │ ├── jconfig.h │ │ ├── jerror.h │ │ ├── jmorecfg.h │ │ ├── jpegint.h │ │ └── jpeglib.h │ └── libpng │ │ ├── png.h │ │ ├── pngconf.h │ │ └── pnglibconf.h ├── lib │ ├── FreeImage.lib │ ├── jpeg.lib │ ├── jpeg_d.lib │ ├── libpng16.lib │ └── libpng16_d.lib └── src │ ├── ConvTGATo32BitBmp │ ├── ConvTGATo32BitBmp.vcxproj │ ├── ConvTGATo32BitBmp.vcxproj.filters │ └── main.cpp │ ├── DDSystem │ ├── DDSystem.cpp │ ├── DDSystem.h │ ├── DDSystem.vcxproj │ ├── DDSystem.vcxproj.filters │ └── main.cpp │ └── Merge │ ├── Merge.cpp │ ├── Merge.vcxproj │ ├── Merge.vcxproj.filters │ ├── picture.cpp │ ├── picture.h │ └── utility.h ├── EntisGLS ├── EntisGLS.sln ├── EntisGLS │ ├── EntisGLS.cpp │ ├── EntisGLS.h │ ├── EntisGLS.vcxproj │ ├── EntisGLS.vcxproj.filters │ ├── EntisGLS.vcxproj.user │ ├── main.cpp │ ├── main.rc │ └── resource.h └── ReadMe.txt ├── FAVORITE ├── FAVORITE.sln └── FAVORITE │ ├── 128x128.ico │ ├── 256x256.ico │ ├── FAVORITE.vcxproj │ ├── FAVORITE.vcxproj.filters │ ├── FAVORITE.vcxproj.user │ ├── Favorite.cpp │ ├── Favorite.h │ ├── error.h │ ├── main.cpp │ ├── main.rc │ ├── resource.h │ └── zlib.dll ├── LiLiM ├── LiLiM.sln ├── LiLiM │ ├── LiLiM.cpp │ ├── LiLiM.h │ ├── LiLiM.vcxproj │ ├── LiLiM.vcxproj.filters │ ├── LiLiM.vcxproj.user │ ├── Utility.h │ ├── main.cpp │ ├── main.rc │ ├── picture.cpp │ ├── picture.h │ ├── resource.h │ └── types.h ├── include │ ├── libjpeg │ │ ├── jconfig.h │ │ ├── jerror.h │ │ ├── jmorecfg.h │ │ ├── jpegint.h │ │ └── jpeglib.h │ └── libpng │ │ ├── png.h │ │ ├── pngconf.h │ │ └── pnglibconf.h └── lib │ ├── Debug │ ├── jpeg_d.lib │ ├── libpng16_d.lib │ └── zlib.lib │ └── Release │ ├── jpeg.lib │ ├── libpng16.lib │ └── zlib.lib ├── Musica ├── Musica.sln ├── Musica │ ├── Musica.cpp │ ├── Musica.vcxproj │ ├── Musica.vcxproj.filters │ ├── blowfish.cpp │ ├── blowfish.h │ └── zlib.dll └── bin │ ├── Musica.exe │ └── zlib.dll ├── QLIE ├── QLIE.sln ├── QLIE │ ├── QLIE.cpp │ ├── QLIE.h │ ├── QLIE.vcxproj │ ├── QLIE.vcxproj.filters │ ├── icon (2).ico │ ├── main.cpp │ ├── main.rc │ └── resource.h ├── abmp12 │ ├── abmp12.cpp │ ├── abmp12.vcxproj │ └── abmp12.vcxproj.filters ├── readme.txt └── tools │ └── merge.py ├── README.MD ├── TouHou ├── TouHou.sln └── TouHou │ ├── 128.ico │ ├── 32.ico │ ├── 48.ico │ ├── OffsetInfo.h │ ├── TouHou.vcxproj │ ├── TouHou.vcxproj.filters │ ├── TouHou.vcxproj.user │ ├── main.cpp │ ├── main.rc │ └── resource.h ├── Tpk ├── Tpk.sln └── Tpk │ ├── FileOperator.cpp │ ├── FileOperator.h │ ├── Tpk.vcxproj │ ├── Tpk.vcxproj.filters │ ├── main.cpp │ ├── tpk.cpp │ ├── tpk.h │ └── type.h ├── bin0 ├── README.txt ├── bin0.sln └── bin0 │ ├── bin0.aps │ ├── bin0.cpp │ ├── bin0.rc │ ├── bin0.vcxproj │ ├── bin0.vcxproj.filters │ ├── bin0.vcxproj.user │ └── resource.h ├── game_list.txt ├── kirikiri ├── bin │ ├── libpng16.dll │ ├── libpng16_d.dll │ └── zlib.dll ├── build │ └── build.bat ├── include │ ├── Detours │ │ ├── Makefile │ │ ├── creatwth.cpp │ │ ├── detours.cpp │ │ ├── detours.h │ │ ├── detver.h │ │ ├── disasm.cpp │ │ ├── disolarm.cpp │ │ ├── disolarm64.cpp │ │ ├── disolia64.cpp │ │ ├── disolx64.cpp │ │ ├── disolx86.cpp │ │ ├── image.cpp │ │ ├── modules.cpp │ │ └── uimports.cpp │ ├── libjpeg │ │ ├── jconfig.h │ │ ├── jerror.h │ │ ├── jmorecfg.h │ │ ├── jpegint.h │ │ └── jpeglib.h │ ├── libpng │ │ ├── png.h │ │ ├── pngconf.h │ │ └── pnglibconf.h │ ├── log │ │ ├── log.cpp │ │ └── log.h │ └── utility │ │ ├── utility.cpp │ │ └── utility.h ├── kirikiri.sln ├── lib │ ├── jpeg.lib │ ├── jpeg_d.lib │ ├── libpng16.lib │ └── libpng16_d.lib ├── src │ ├── BlackSheep │ │ ├── BlackSheep.cpp │ │ ├── BlackSheep.def │ │ ├── BlackSheep.vcxproj │ │ ├── BlackSheep.vcxproj.filters │ │ ├── PassiveDump.cpp │ │ ├── ShareMem.h │ │ ├── stdafx.cpp │ │ ├── stdafx.h │ │ ├── targetver.h │ │ ├── tp_stub.cpp │ │ └── tp_stub.h │ ├── CsvMerge │ │ ├── CsvMerge.cpp │ │ ├── CsvMerge.vcxproj │ │ ├── CsvMerge.vcxproj.filters │ │ ├── picture.cpp │ │ ├── picture.h │ │ ├── stdafx.cpp │ │ ├── stdafx.h │ │ ├── targetver.h │ │ └── utility.h │ ├── DecryptText │ │ ├── DecryptText.vcxproj │ │ ├── DecryptText.vcxproj.filters │ │ └── main.cpp │ ├── ExtractChTxt │ │ ├── ExtractChTxt.cpp │ │ ├── ExtractChTxt.vcxproj │ │ └── ExtractChTxt.vcxproj.filters │ ├── Loader │ │ ├── Loader.cpp │ │ ├── Loader.vcxproj │ │ ├── Loader.vcxproj.filters │ │ ├── stdafx.cpp │ │ ├── stdafx.h │ │ └── targetver.h │ ├── TLG │ │ ├── TLG.vcxproj │ │ ├── TLG.vcxproj.filters │ │ ├── TLGDecoder.cpp │ │ ├── TLGDecoder.h │ │ ├── krkr2.cpp │ │ ├── krkr2.h │ │ ├── main.cpp │ │ ├── main.rc │ │ └── resource.h │ └── kirikiri │ │ ├── cxdec │ │ ├── 11eyes_cxdec.cpp │ │ ├── ConcertoNote_cxdec.cpp │ │ ├── EXE_cxdec.cpp │ │ ├── FHA_cxdec.cpp │ │ ├── FairChildTrial_cxdec.cpp │ │ ├── FairChild_cxdec.cpp │ │ ├── anioka_cxdec_callback.cpp │ │ ├── beniten_cxdec.cpp │ │ ├── colorfulcure_cxdec.cpp │ │ ├── cxdec.cpp │ │ ├── cxdec.h │ │ ├── fanta_cxdec.cpp │ │ ├── haruiro_cxdec.cpp │ │ ├── kinomino_cxdec.cpp │ │ ├── koisakura_cxdec.cpp │ │ ├── kurenai_cxdec.cpp │ │ ├── lovebattle_cxdec.cpp │ │ ├── lovelaby_cxdec.cpp │ │ ├── mogla_cxdec.cpp │ │ ├── natukanaTrial_cxdec.cpp │ │ ├── natukana_cxdec.cpp │ │ ├── nidaimeTrial_cxdec.cpp │ │ ├── nidaime_cxdec.cpp │ │ ├── ojo2.cpp │ │ ├── ojyo_cxdec.cpp │ │ ├── oreaka_cxdec.cpp │ │ ├── otomedomain.cpp │ │ ├── ruitomoTrial_cxdec.cpp │ │ ├── ruitomo_cxdec.cpp │ │ ├── sakurasaki_cxdec_callback.cpp │ │ ├── silverblue_cxdec.cpp │ │ ├── sukisuki_cxdec.cpp │ │ ├── tenshinTrial_cxdec.cpp │ │ ├── tenshin_cxdec.cpp │ │ └── towa_cxdec.cpp │ │ ├── kirikiri.vcxproj │ │ ├── kirikiri.vcxproj.filters │ │ ├── main.cpp │ │ ├── main.rc │ │ ├── otomedomain.cpp │ │ ├── resource.h │ │ ├── xp3.cpp │ │ ├── xp3.h │ │ ├── xp3ext.cpp │ │ ├── xp3ext.h │ │ ├── xp3filter_decode.cpp │ │ └── xp3filter_decode.h └── tools │ ├── 9-nine-ch-merge.py │ ├── EMoteDumperXmoe.exe │ ├── ExtractChTxt.exe │ ├── alpha-blend.exe │ ├── alpha_bmp.py │ ├── libpng16.dll │ ├── yuzu-dracu-riot!-ev-merge.py │ ├── yuzu-riddle-joker-ev-merge.py │ ├── yuzu-sabbat-of-the-witch-ev-merge.py │ ├── yuzu-senrenbanka-ev-merge.py │ └── zlib.dll ├── leaf ├── leaf.sln └── src │ └── leaf │ ├── leaf.cpp │ ├── leaf.h │ ├── leaf.vcxproj │ ├── leaf.vcxproj.filters │ └── main.cpp ├── pal ├── Pal.sln ├── bin │ ├── libpng16.dll │ └── libpng16_d.dll ├── include │ ├── libjpeg │ │ ├── jconfig.h │ │ ├── jerror.h │ │ ├── jmorecfg.h │ │ ├── jpegint.h │ │ └── jpeglib.h │ └── libpng │ │ ├── png.h │ │ ├── pngconf.h │ │ └── pnglibconf.h ├── lib │ ├── jpeg.lib │ ├── jpeg_d.lib │ ├── libpng16.lib │ └── libpng16_d.lib └── src │ ├── ExtractPGD │ ├── ExtractPGD.vcxproj │ ├── ExtractPGD.vcxproj.filters │ ├── dbgpal.cpp │ ├── dbgpal.h │ ├── main.cpp │ ├── picture.cpp │ ├── picture.h │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ └── utility.h │ └── unpackPAC │ ├── main.cpp │ ├── pal.cpp │ ├── pal.h │ ├── unpackPAC.vcxproj.filters │ └── unpackPAL.vcxproj ├── pfs ├── pfs.sln ├── pfs │ ├── pfs.cpp │ ├── pfs.h │ ├── pfs.vcxproj │ └── pfs.vcxproj.filters └── tools │ └── merge-ipt.py └── ypf ├── bin └── zlib.dll ├── src ├── ycg │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ ├── ycg.cpp │ ├── ycg.vcxproj │ └── ycg.vcxproj.filters └── ypf │ ├── main.cpp │ ├── stdafx.cpp │ ├── stdafx.h │ ├── targetver.h │ ├── ypf.cpp │ ├── ypf.h │ ├── ypf.vcxproj │ └── ypf.vcxproj.filters └── ypf.sln /.gitattributes: -------------------------------------------------------------------------------- 1 | ############################################################################### 2 | # Set default behavior to automatically normalize line endings. 3 | ############################################################################### 4 | * text=auto 5 | 6 | ############################################################################### 7 | # Set default behavior for command prompt diff. 8 | # 9 | # This is need for earlier builds of msysgit that does not have it on by 10 | # default for csharp files. 11 | # Note: This is only used by command line 12 | ############################################################################### 13 | #*.cs diff=csharp 14 | 15 | ############################################################################### 16 | # Set the merge driver for project and solution files 17 | # 18 | # Merging from the command prompt will add diff markers to the files if there 19 | # are conflicts (Merging from VS is not affected by the settings below, in VS 20 | # the diff markers are never inserted). Diff markers may cause the following 21 | # file extensions to fail to load in VS. An alternative would be to treat 22 | # these files as binary and thus will always conflict and require user 23 | # intervention with every merge. To do so, just uncomment the entries below 24 | ############################################################################### 25 | #*.sln merge=binary 26 | #*.csproj merge=binary 27 | #*.vbproj merge=binary 28 | #*.vcxproj merge=binary 29 | #*.vcproj merge=binary 30 | #*.dbproj merge=binary 31 | #*.fsproj merge=binary 32 | #*.lsproj merge=binary 33 | #*.wixproj merge=binary 34 | #*.modelproj merge=binary 35 | #*.sqlproj merge=binary 36 | #*.wwaproj merge=binary 37 | 38 | ############################################################################### 39 | # behavior for image files 40 | # 41 | # image files are treated as binary by default. 42 | ############################################################################### 43 | #*.jpg binary 44 | #*.png binary 45 | #*.gif binary 46 | 47 | ############################################################################### 48 | # diff behavior for common document formats 49 | # 50 | # Convert binary document formats to text before diffing them. This feature 51 | # is only available from the command line. Turn it on by uncommenting the 52 | # entries below. 53 | ############################################################################### 54 | #*.doc diff=astextplain 55 | #*.DOC diff=astextplain 56 | #*.docx diff=astextplain 57 | #*.DOCX diff=astextplain 58 | #*.dot diff=astextplain 59 | #*.DOT diff=astextplain 60 | #*.pdf diff=astextplain 61 | #*.PDF diff=astextplain 62 | #*.rtf diff=astextplain 63 | #*.RTF diff=astextplain 64 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Debug 2 | Release 3 | *.aps 4 | .vs 5 | *.suo 6 | *.user 7 | *.obj 8 | *.iobj 9 | *.ipdb 10 | *.ilk 11 | /DDSystem/bin/ConvTGATo32BitBmp_d.exe 12 | /DDSystem/bin/ConvTGATo32BitBmp_d.pdb 13 | /DDSystem/bin/DDSystem_d.exe 14 | /DDSystem/bin/DDSystem_d.pdb 15 | /DDSystem/bin/Merge_d.exe 16 | /DDSystem/bin/Merge_d.pdb 17 | /DDSystem/bin/ConvTGATo32BitBmp.exe 18 | /DDSystem/bin/ConvTGATo32BitBmp.pdb 19 | /DDSystem/bin/DDSystem.exe 20 | /DDSystem/bin/DDSystem.pdb 21 | /DDSystem/bin/Merge.exe 22 | /DDSystem/bin/Merge.pdb 23 | /AFS/pdb/afs.pdb 24 | /AFS/pdb/afs_bip.pdb 25 | /AFS/pdb/afs_bip_d.pdb 26 | /AFS/pdb/afs_bip_t2p.pdb 27 | /AFS/pdb/afs_bip_t2p_d.pdb 28 | /AFS/pdb/afs_d.pdb 29 | /AFS/pdb/afs_tim2.pdb 30 | /AFS/pdb/afs_tim2_d.pdb 31 | /AFS/bin/afs.exe 32 | /AFS/bin/afs_bip_t2p.exe 33 | /AFS/bin/afs_bip_t2p_d.exe 34 | /AFS/bin/afs_d.exe 35 | /AFS/bin/afs_tim2.exe 36 | /AFS/bin/afs_tim2_d.exe 37 | /AdvHD/bin/AdvHD.pdb 38 | /AdvHD/bin/Merge2010.pdb 39 | /Musica/bin/Musica.pdb 40 | /pal/bin/ExtractPGD.exe 41 | /pal/bin/ExtractPGD.pdb 42 | /pal/bin/ExtractPGD_d.exe 43 | /pal/bin/ExtractPGD_d.pdb 44 | /pal/bin/unpackPAL.exe 45 | /pal/bin/unpackPAL.pdb 46 | /pal/bin/unpackPAL_d.exe 47 | /pal/bin/unpackPAL_d.pdb 48 | /ypf/bin/ypf.exe 49 | /ypf/bin/ypf_d.exe 50 | /ypf/pdb/ypf.pdb 51 | /ypf/pdb/ypf_d.pdb 52 | /ypf/bin/ycg.exe 53 | /ypf/bin/ycg_d.exe 54 | /ypf/pdb/ycg.pdb 55 | /ypf/pdb/ycg_d.pdb 56 | /kirikiri/bin/CsvMerge_d.exe 57 | /kirikiri/bin/TLG_d.exe 58 | /kirikiri/bin/kirikiri.exe 59 | /kirikiri/bin/kirikiri_d.exe 60 | /kirikiri/pdb/CsvMerge.pdb 61 | /kirikiri/pdb/CsvMerge_d.pdb 62 | /kirikiri/pdb/TLG.pdb 63 | /kirikiri/pdb/TLG_d.pdb 64 | /kirikiri/pdb/kirikiri.pdb 65 | /kirikiri/pdb/kirikiri_d.pdb 66 | /kirikiri/bin/AutoFucker.exe 67 | /kirikiri/bin/AutoFucker_d.exe 68 | /kirikiri/pdb/AutoFucker.pdb 69 | /kirikiri/pdb/AutoFucker_d.pdb 70 | /kirikiri/bin/BlackSheep_d.dll 71 | /kirikiri/bin/BlackSheep_d.exp 72 | /kirikiri/bin/BlackSheep_d.lib 73 | /kirikiri/bin/Loader_d.exe 74 | /kirikiri/pdb/BlackSheep_d.pdb 75 | /kirikiri/pdb/Loader_d.pdb 76 | /kirikiri/bin/BlackSheep.exp 77 | /kirikiri/bin/BlackSheep.lib 78 | /kirikiri/pdb/BlackSheep.pdb 79 | /kirikiri/pdb/Loader.pdb 80 | /kirikiri/bin/ExtractChTxt_d.exe 81 | /kirikiri/pdb/ExtractChTxt.pdb 82 | /kirikiri/pdb/ExtractChTxt_d.pdb 83 | /kirikiri/bin/BlackSheep.dll 84 | /kirikiri/bin/CsvMerge.exe 85 | /kirikiri/bin/ExtractChTxt.exe 86 | /kirikiri/bin/Loader.exe 87 | /kirikiri/bin/TLG.exe 88 | /kirikiri/tools/__pycache__ 89 | -------------------------------------------------------------------------------- /AFS/AFS.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "afs", "src\afs\afs.vcxproj", "{99EA9D71-5D9F-4C18-ACDF-9C4885054F75}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "afs_tim2", "src\afs_tim2\afs_tim2.vcxproj", "{BF1CC0CE-0E93-40B2-A64A-2B727F434746}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "afs_bip_t2p", "src\afs_bip_t2p\afs_bip_t2p.vcxproj", "{0AEA1F4E-886A-44B7-AD44-5598BD9294EE}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|x86 = Debug|x86 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {99EA9D71-5D9F-4C18-ACDF-9C4885054F75}.Debug|x86.ActiveCfg = Debug|Win32 19 | {99EA9D71-5D9F-4C18-ACDF-9C4885054F75}.Debug|x86.Build.0 = Debug|Win32 20 | {99EA9D71-5D9F-4C18-ACDF-9C4885054F75}.Release|x86.ActiveCfg = Release|Win32 21 | {99EA9D71-5D9F-4C18-ACDF-9C4885054F75}.Release|x86.Build.0 = Release|Win32 22 | {BF1CC0CE-0E93-40B2-A64A-2B727F434746}.Debug|x86.ActiveCfg = Debug|Win32 23 | {BF1CC0CE-0E93-40B2-A64A-2B727F434746}.Debug|x86.Build.0 = Debug|Win32 24 | {BF1CC0CE-0E93-40B2-A64A-2B727F434746}.Release|x86.ActiveCfg = Release|Win32 25 | {BF1CC0CE-0E93-40B2-A64A-2B727F434746}.Release|x86.Build.0 = Release|Win32 26 | {0AEA1F4E-886A-44B7-AD44-5598BD9294EE}.Debug|x86.ActiveCfg = Debug|Win32 27 | {0AEA1F4E-886A-44B7-AD44-5598BD9294EE}.Debug|x86.Build.0 = Debug|Win32 28 | {0AEA1F4E-886A-44B7-AD44-5598BD9294EE}.Release|x86.ActiveCfg = Release|Win32 29 | {0AEA1F4E-886A-44B7-AD44-5598BD9294EE}.Release|x86.Build.0 = Release|Win32 30 | EndGlobalSection 31 | GlobalSection(SolutionProperties) = preSolution 32 | HideSolutionNode = FALSE 33 | EndGlobalSection 34 | EndGlobal 35 | -------------------------------------------------------------------------------- /AFS/bin/libpng16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/bin/libpng16.dll -------------------------------------------------------------------------------- /AFS/bin/libpng16_d.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/bin/libpng16_d.dll -------------------------------------------------------------------------------- /AFS/include/Common.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "Common.h" 3 | 4 | std::string GetFilePath(const std::string & origin, bool withBackslash) 5 | { 6 | if (origin.find_last_of('\\') != std::string::npos) 7 | { 8 | auto filePath = origin.substr(0, origin.find_last_of('\\') + (withBackslash ? 1 : 0)); 9 | return filePath; 10 | } 11 | else 12 | { 13 | return withBackslash ? ".\\" : "."; 14 | } 15 | } 16 | 17 | std::string GetFileName(const std::string & origin, bool withExtension) 18 | { 19 | auto fileName(origin); 20 | if (origin.find_last_of('\\') != std::string::npos) 21 | { 22 | fileName = origin.substr(origin.find_last_of('\\') + 1); 23 | } 24 | 25 | if (!withExtension) 26 | { 27 | fileName = fileName.substr(0, fileName.find_last_of('.')); 28 | } 29 | return fileName; 30 | } 31 | 32 | std::string ReplaceExtension(const std::string & origin, const std::string & extension) 33 | { 34 | auto fileName(origin); 35 | size_t slashPos = origin.find_last_of('\\'); 36 | size_t dotPos = origin.find_last_of('.'); 37 | if (dotPos != std::string::npos && dotPos > slashPos) 38 | { 39 | fileName.replace(dotPos, std::string::npos, extension); 40 | } 41 | else 42 | { 43 | fileName += extension; 44 | } 45 | 46 | return fileName; 47 | } 48 | 49 | std::string AppendFileName(const std::string & origin, const std::string & append) 50 | { 51 | auto fileName(origin); 52 | int slashPos = origin.find_last_of('\\'); 53 | int dotPos = origin.find_last_of('.'); 54 | if (dotPos != std::string::npos && dotPos > slashPos) 55 | { 56 | auto ext = fileName.substr(dotPos); 57 | fileName.replace(dotPos, std::string::npos, append); 58 | fileName += ext; 59 | } 60 | else 61 | { 62 | fileName += append; 63 | } 64 | return fileName; 65 | } -------------------------------------------------------------------------------- /AFS/include/Common.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | 6 | std::string GetFilePath(const std::string & origin, bool withBackslash); 7 | std::string GetFileName(const std::string & origin, bool withExtension); 8 | std::string ReplaceExtension(const std::string & origin, const std::string & extension); 9 | std::string AppendFileName(const std::string & origin, const std::string & append); 10 | -------------------------------------------------------------------------------- /AFS/include/struct.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/include/struct.h -------------------------------------------------------------------------------- /AFS/lib/libpng16.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/lib/libpng16.lib -------------------------------------------------------------------------------- /AFS/lib/libpng16_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/lib/libpng16_d.lib -------------------------------------------------------------------------------- /AFS/src/afs/afs.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/src/afs/afs.cpp -------------------------------------------------------------------------------- /AFS/src/afs/afs.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 6 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 7 | 8 | 9 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 10 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 11 | 12 | 13 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 14 | h;hh;hpp;hxx;hm;inl;inc;xsd 15 | 16 | 17 | 18 | 19 | src 20 | 21 | 22 | ref 23 | 24 | 25 | 26 | 27 | ref 28 | 29 | 30 | ref 31 | 32 | 33 | -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/Utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Alisa 4 | { 5 | namespace Utility 6 | { 7 | template 8 | void SafeDelete(T** pptr) 9 | { 10 | if (pptr) 11 | { 12 | delete *pptr; 13 | *pptr = nullptr; 14 | } 15 | } 16 | 17 | template 18 | void SafeDeleteArray(T** pptr) 19 | { 20 | if (pptr) 21 | { 22 | delete[] * pptr; 23 | *pptr = nullptr; 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/afs_bip_t2p.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 6 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 7 | 8 | 9 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 10 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 11 | 12 | 13 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 14 | h;hh;hpp;hxx;hm;inl;inc;xsd 15 | 16 | 17 | 18 | 19 | src 20 | 21 | 22 | src 23 | 24 | 25 | src 26 | 27 | 28 | src 29 | 30 | 31 | ref 32 | 33 | 34 | 35 | 36 | src 37 | 38 | 39 | src 40 | 41 | 42 | src 43 | 44 | 45 | src 46 | 47 | 48 | ref 49 | 50 | 51 | ref 52 | 53 | 54 | -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/bip.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/src/afs_bip_t2p/bip.cpp -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/lzss.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | 5 | int decompress_lzss(uint8_t *dst, uint8_t *src, uint32_t srclen); 6 | uint8_t *compress_lzss(uint8_t *dst, uint32_t dstlen, uint8_t *src, uint32_t srcLen); -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/merge.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/src/afs_bip_t2p/merge.cpp -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/merge.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include "struct.h" 7 | 8 | bool Merge(const std::vector> & pngGroup, int mergeWidth, int mergeHeight, const std::string &newName); -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/picture.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/src/afs_bip_t2p/picture.cpp -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/picture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #ifdef _UNICODE 7 | typedef std::wstring string_t; 8 | #else 9 | typedef std::string string_t; 10 | #endif 11 | 12 | namespace Alisa 13 | { 14 | class ImageInfo 15 | { 16 | public: 17 | ImageInfo() = default; 18 | ImageInfo(const ImageInfo & info) : Width(info.Width), Height(info.Height), Component(info.Component) { } 19 | void Reset() { Width = Height = Component = FrameCount = 0; } 20 | 21 | int Width{ 0 }; 22 | int Height{ 0 }; 23 | int Component{ 0 }; 24 | int FrameCount{ 0 }; 25 | }; 26 | 27 | class Pixel 28 | { 29 | public: 30 | uint8_t R{ 0 }; 31 | uint8_t G{ 0 }; 32 | uint8_t B{ 0 }; 33 | uint8_t A{ 0xff }; 34 | }; 35 | 36 | enum E_ImageType 37 | { 38 | E_ImageType_Unknown, 39 | E_ImageType_Bmp, 40 | E_ImageType_Png, 41 | E_ImageType_Jpg 42 | }; 43 | 44 | enum E_ImageBlendMode 45 | { 46 | E_SrcOver, 47 | E_AlphaBlend, 48 | }; 49 | 50 | constexpr int PixelType_RGB = 3; 51 | constexpr int PixelType_RGBA = 4; 52 | 53 | class ImageImpl; 54 | class Image 55 | { 56 | public: 57 | Image(); 58 | Image(const Image & image); 59 | Image(Image && image); 60 | virtual ~Image(); 61 | 62 | bool Open(const string_t & filename); 63 | bool NewImage(ImageInfo info); 64 | bool SaveTo(const string_t & filename, E_ImageType type); 65 | 66 | bool RemoveAlpha(); 67 | bool AddAlpha(); 68 | 69 | ImageInfo GetImageInfo() const; 70 | void Clear(); 71 | 72 | bool Blend(const Image *image, int offsetX, int offsetY, E_ImageBlendMode mode); 73 | 74 | bool CopyPixelInLine(int dstLineOffset, int dstRowOffset, Image * srcObj, int srcLineOffset, int srcRowOffset, int cnt = -1); 75 | void ModifyPixels(std::function func); 76 | void WalkPixels(std::function func) const; 77 | 78 | //Image GetRawPixelData() const; 79 | //bool UpdateRawPixelData(const Image & image); 80 | 81 | bool StretchTo(int width, int height); 82 | 83 | int OtsuThresholding() const; 84 | 85 | Image CreateGray() const; 86 | 87 | private: 88 | ImageImpl *Impl{ nullptr }; 89 | }; 90 | } -------------------------------------------------------------------------------- /AFS/src/afs_bip_t2p/tim2.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | -------------------------------------------------------------------------------- /AFS/src/afs_tim2/afs_tim2.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 6 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 14 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 15 | 16 | 17 | 18 | 19 | src 20 | 21 | 22 | ref 23 | 24 | 25 | -------------------------------------------------------------------------------- /AFS/src/afs_tim2/tim2.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AFS/src/afs_tim2/tim2.cpp -------------------------------------------------------------------------------- /AFS/type.txt: -------------------------------------------------------------------------------- 1 | adx - ogg 2 | wav 3 | bip - png group(PNGFILE2) - merge png 4 | lzss - png group(PNGFILE3) 5 | t2p - lzss - tim2 -> png -------------------------------------------------------------------------------- /AdvHD/AdvHD.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "AdvHD", "AdvHD\AdvHD.vcxproj", "{59993523-E000-411C-89B3-3F79F442D28B}" 5 | EndProject 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Merge2010", "Merge2010\Merge2010.vcxproj", "{1E2F61E8-25DC-466B-A7CB-E795ACA94187}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {59993523-E000-411C-89B3-3F79F442D28B}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {59993523-E000-411C-89B3-3F79F442D28B}.Debug|Win32.Build.0 = Debug|Win32 16 | {59993523-E000-411C-89B3-3F79F442D28B}.Release|Win32.ActiveCfg = Release|Win32 17 | {59993523-E000-411C-89B3-3F79F442D28B}.Release|Win32.Build.0 = Release|Win32 18 | {1E2F61E8-25DC-466B-A7CB-E795ACA94187}.Debug|Win32.ActiveCfg = Debug|Win32 19 | {1E2F61E8-25DC-466B-A7CB-E795ACA94187}.Debug|Win32.Build.0 = Debug|Win32 20 | {1E2F61E8-25DC-466B-A7CB-E795ACA94187}.Release|Win32.ActiveCfg = Release|Win32 21 | {1E2F61E8-25DC-466B-A7CB-E795ACA94187}.Release|Win32.Build.0 = Release|Win32 22 | EndGlobalSection 23 | GlobalSection(SolutionProperties) = preSolution 24 | HideSolutionNode = FALSE 25 | EndGlobalSection 26 | EndGlobal 27 | -------------------------------------------------------------------------------- /AdvHD/AdvHD/AdvHD.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/AdvHD.cpp -------------------------------------------------------------------------------- /AdvHD/AdvHD/AdvHD.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/AdvHD.rc -------------------------------------------------------------------------------- /AdvHD/AdvHD/AdvHD.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 源文件 29 | 30 | 31 | 头文件 32 | 33 | 34 | 源文件 35 | 36 | 37 | 38 | 39 | 资源文件 40 | 41 | 42 | 43 | 44 | 头文件 45 | 46 | 47 | 头文件 48 | 49 | 50 | 51 | 52 | 资源文件 53 | 54 | 55 | -------------------------------------------------------------------------------- /AdvHD/AdvHD/AdvHD2.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/AdvHD2.cpp -------------------------------------------------------------------------------- /AdvHD/AdvHD/AdvHD2.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | 5 | namespace AdvHD2 // type 2 6 | { 7 | struct ARC_HEADER 8 | { 9 | unsigned long TypeNum; 10 | struct ARC_HEADER_TYPE *TypeList; 11 | }; 12 | 13 | struct ARC_HEADER_TYPE 14 | { 15 | char TypeName[4]; 16 | int FileCount; 17 | int StartIdxOffset; 18 | }; 19 | 20 | #pragma pack(1) 21 | struct IDX_ENTRY 22 | { 23 | char NameWithoutSuffix[13]; 24 | unsigned long Size; 25 | unsigned long Offset; 26 | }; 27 | #pragma pack() 28 | 29 | int Entrance(const wchar_t *CurDir, const wchar_t *PackName); 30 | } -------------------------------------------------------------------------------- /AdvHD/AdvHD/functions.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/functions.cpp -------------------------------------------------------------------------------- /AdvHD/AdvHD/functions.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | 6 | extern void AppendMsg(HWND hOut, const wchar_t *szBuffer); 7 | extern int SplitFileNameAndSave(const wchar_t *cur_dir, const wchar_t *file_name, void* unpack, unsigned long file_length); 8 | -------------------------------------------------------------------------------- /AdvHD/AdvHD/gameicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/gameicon.ico -------------------------------------------------------------------------------- /AdvHD/AdvHD/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/main.cpp -------------------------------------------------------------------------------- /AdvHD/AdvHD/pnap.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/pnap.cpp -------------------------------------------------------------------------------- /AdvHD/AdvHD/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/AdvHD/resource.h -------------------------------------------------------------------------------- /AdvHD/Merge2010/Merge2010.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /AdvHD/Merge2010/README: -------------------------------------------------------------------------------- 1 | 用于合并AdvHD解出的分离图像(坐标等信息已经记录在对应的<图像名>.txt中了)。 2 | 3 | 使用方法: 4 | - txt文件名 5 | - 分组数(从每一组中抽取一张图进行合并) 6 | - 第1组的最大ID数 7 | - 第2组的最大ID数 8 | - ...(根据分组的数量填好相应ID) 9 | 10 | 因为不同人物的底图、表情的数量不同,所以需要指定各自的分组ID。 11 | 如某个人物的立绘中:1~5(txt中的ID列)为人物, 8~9为红晕, 10~18为表情, 12 | 则命令为 Merge XXX.txt 3 5 9 18 13 | 总之, ID填的是每组的上限 14 | -------------------------------------------------------------------------------- /AdvHD/Merge2010/libpng16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/libpng16.dll -------------------------------------------------------------------------------- /AdvHD/Merge2010/libpng16.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/libpng16.lib -------------------------------------------------------------------------------- /AdvHD/Merge2010/libpng16d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/libpng16d.lib -------------------------------------------------------------------------------- /AdvHD/Merge2010/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/main.cpp -------------------------------------------------------------------------------- /AdvHD/Merge2010/merge2.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/merge2.cpp -------------------------------------------------------------------------------- /AdvHD/Merge2010/merge2.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/merge2.h -------------------------------------------------------------------------------- /AdvHD/Merge2010/zlib.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/zlib.lib -------------------------------------------------------------------------------- /AdvHD/Merge2010/zlibd.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/Merge2010/zlibd.lib -------------------------------------------------------------------------------- /AdvHD/bin/AdvHD.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/bin/AdvHD.exe -------------------------------------------------------------------------------- /AdvHD/bin/Merge2010.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/AdvHD/bin/Merge2010.exe -------------------------------------------------------------------------------- /BGI/BGI.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "BGI", "BGI\BGI.vcxproj", "{D9A5D1C5-E2F4-4122-AED3-894C7B43A2BD}" 5 | EndProject 6 | Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{A4788723-1BDF-44C6-B746-8993923D50C3}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Win32 = Debug|Win32 11 | Release|Win32 = Release|Win32 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {D9A5D1C5-E2F4-4122-AED3-894C7B43A2BD}.Debug|Win32.ActiveCfg = Debug|Win32 15 | {D9A5D1C5-E2F4-4122-AED3-894C7B43A2BD}.Debug|Win32.Build.0 = Debug|Win32 16 | {D9A5D1C5-E2F4-4122-AED3-894C7B43A2BD}.Release|Win32.ActiveCfg = Release|Win32 17 | {D9A5D1C5-E2F4-4122-AED3-894C7B43A2BD}.Release|Win32.Build.0 = Release|Win32 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /BGI/BGI/BGI.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 源文件 29 | 30 | 31 | 32 | 33 | 头文件 34 | 35 | 36 | 头文件 37 | 38 | 39 | 头文件 40 | 41 | 42 | 头文件 43 | 44 | 45 | 头文件 46 | 47 | 48 | 头文件 49 | 50 | 51 | 头文件 52 | 53 | 54 | 55 | 56 | 资源文件 57 | 58 | 59 | -------------------------------------------------------------------------------- /BGI/BGI/BGI.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /BGI/BGI/CBG_v2.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/CBG_v2.h -------------------------------------------------------------------------------- /BGI/BGI/arc.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/arc.cpp -------------------------------------------------------------------------------- /BGI/BGI/arc.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include "type.h" 5 | #include "error.h" 6 | 7 | #define ARC_FILE_TYPE 2 8 | 9 | struct IDX 10 | { 11 | u8 name[96]; 12 | u32 offset; 13 | u32 size; 14 | }; 15 | 16 | static const char *arc_file_type[] = {"PackFile ", "BURIKO ARC20"}; 17 | static const int magic_len[] = {12, 12}; 18 | 19 | struct IDX* get_arc_idx_0(HANDLE hFile, u32 *file_num, u32 *idx_size); 20 | struct IDX* get_arc_idx_1(HANDLE hFile, u32 *file_num, u32 *idx_size); 21 | 22 | typedef struct IDX* (*GET_IDX)(HANDLE hFile, u32 *file_num, u32 *idx_size); 23 | 24 | 25 | int Is_arc(HANDLE hFile); 26 | int arc_extract_file_save(HANDLE hFile,const struct IDX * const arc_idx, int file_num, u32 correct, wchar_t *cur_dir); 27 | int SplitFileNameAndSave(wchar_t *cur_dir, wchar_t *file_name, void* unpack, u32 file_length); 28 | 29 | 30 | extern void AppendMsg(wchar_t* szBuffer); 31 | 32 | 33 | extern int Is_DSC(const u8* in); 34 | extern int DecodeDSC(u8** raw_data, u8* in, int in_size); 35 | extern int Is_DSC_Image(const u8 *raw_data, u32 len); 36 | extern u8* Save_DSC_Bmp(const u8 *raw_data, u32 len, u32 *bmp_len); 37 | 38 | extern int Is_CBG(const u8* in); 39 | extern int DecodeCBG(u8** raw_data, u8* in, int in_size); -------------------------------------------------------------------------------- /BGI/BGI/cbg.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/cbg.h -------------------------------------------------------------------------------- /BGI/BGI/cbg_v1.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/cbg_v1.cpp -------------------------------------------------------------------------------- /BGI/BGI/dsc.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/dsc.cpp -------------------------------------------------------------------------------- /BGI/BGI/dsc.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include "type.h" 7 | #include "error.h" 8 | 9 | extern const u8 BMP_head_raw[54]; 10 | 11 | int Is_DSC(const u8* in); 12 | u32 new_key(u32 *pkey); 13 | int DecodeDSC(u8** raw_data, u8* in, int in_size); 14 | int Is_DSC_Image(const u8 *raw_data, u32 len); 15 | u8* Save_DSC_Bmp(const u8 *raw_data, u32 len, u32 *bmp_len); -------------------------------------------------------------------------------- /BGI/BGI/error.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SUCCESS 0 4 | #define ERR_MEM -1 5 | #define ERR_FILE_DISMATCH -2 6 | #define ERR_FILE_ERROR -3 7 | #define ERR_FILE_CREATE -4 8 | #define ERR_FILE_ERITE -5 9 | #define ERR_FILE_OTHERS -6 -------------------------------------------------------------------------------- /BGI/BGI/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/main.cpp -------------------------------------------------------------------------------- /BGI/BGI/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/main.rc -------------------------------------------------------------------------------- /BGI/BGI/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/BGI/resource.h -------------------------------------------------------------------------------- /BGI/BGI/type.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | typedef char s8; 4 | typedef unsigned char u8; 5 | typedef unsigned short u16; 6 | typedef unsigned long u32; 7 | typedef unsigned long long u64; -------------------------------------------------------------------------------- /BGI/README.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/BGI/README.txt -------------------------------------------------------------------------------- /DDSystem/DDSystem.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Merge", "src\Merge\Merge.vcxproj", "{1A8BC3A5-C6B4-4062-9186-EB645B708F2C}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DDSystem", "src\DDSystem\DDSystem.vcxproj", "{09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}" 9 | EndProject 10 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ConvTGATo32BitBmp", "src\ConvTGATo32BitBmp\ConvTGATo32BitBmp.vcxproj", "{FAFC8D24-FB0B-4201-AB62-745846239CF8}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|x64 = Debug|x64 15 | Debug|x86 = Debug|x86 16 | Release|x64 = Release|x64 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Debug|x64.ActiveCfg = Debug|x64 21 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Debug|x64.Build.0 = Debug|x64 22 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Debug|x86.ActiveCfg = Debug|Win32 23 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Debug|x86.Build.0 = Debug|Win32 24 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Release|x64.ActiveCfg = Release|x64 25 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Release|x64.Build.0 = Release|x64 26 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Release|x86.ActiveCfg = Release|Win32 27 | {1A8BC3A5-C6B4-4062-9186-EB645B708F2C}.Release|x86.Build.0 = Release|Win32 28 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Debug|x64.ActiveCfg = Debug|x64 29 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Debug|x64.Build.0 = Debug|x64 30 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Debug|x86.ActiveCfg = Debug|Win32 31 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Debug|x86.Build.0 = Debug|Win32 32 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Release|x64.ActiveCfg = Release|x64 33 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Release|x64.Build.0 = Release|x64 34 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Release|x86.ActiveCfg = Release|Win32 35 | {09ADE496-4A33-47D7-A7C5-D3BA9ED7E5EA}.Release|x86.Build.0 = Release|Win32 36 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Debug|x64.ActiveCfg = Debug|x64 37 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Debug|x64.Build.0 = Debug|x64 38 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Debug|x86.ActiveCfg = Debug|Win32 39 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Debug|x86.Build.0 = Debug|Win32 40 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Release|x64.ActiveCfg = Release|x64 41 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Release|x64.Build.0 = Release|x64 42 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Release|x86.ActiveCfg = Release|Win32 43 | {FAFC8D24-FB0B-4201-AB62-745846239CF8}.Release|x86.Build.0 = Release|Win32 44 | EndGlobalSection 45 | GlobalSection(SolutionProperties) = preSolution 46 | HideSolutionNode = FALSE 47 | EndGlobalSection 48 | EndGlobal 49 | -------------------------------------------------------------------------------- /DDSystem/bin/FreeImage.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/bin/FreeImage.dll -------------------------------------------------------------------------------- /DDSystem/bin/libpng16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/bin/libpng16.dll -------------------------------------------------------------------------------- /DDSystem/bin/libpng16_d.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/bin/libpng16_d.dll -------------------------------------------------------------------------------- /DDSystem/include/libjpeg/jconfig.h: -------------------------------------------------------------------------------- 1 | /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 9x or NT. */ 2 | /* This file also works for Borland C++ 32-bit (bcc32) on Windows 9x or NT. */ 3 | /* see jconfig.txt for explanations */ 4 | 5 | #define HAVE_PROTOTYPES 6 | #define HAVE_UNSIGNED_CHAR 7 | #define HAVE_UNSIGNED_SHORT 8 | /* #define void char */ 9 | /* #define const */ 10 | #undef CHAR_IS_UNSIGNED 11 | #define HAVE_STDDEF_H 12 | #define HAVE_STDLIB_H 13 | #undef NEED_BSD_STRINGS 14 | #undef NEED_SYS_TYPES_H 15 | #undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ 16 | #undef NEED_SHORT_EXTERNAL_NAMES 17 | #undef INCOMPLETE_TYPES_BROKEN 18 | 19 | /* Define "boolean" as unsigned char, not enum, per Windows custom */ 20 | #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ 21 | typedef unsigned char boolean; 22 | #endif 23 | #ifndef FALSE /* in case these macros already exist */ 24 | #define FALSE 0 /* values of boolean */ 25 | #endif 26 | #ifndef TRUE 27 | #define TRUE 1 28 | #endif 29 | #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ 30 | 31 | 32 | #ifdef JPEG_INTERNALS 33 | 34 | #undef RIGHT_SHIFT_IS_UNSIGNED 35 | 36 | #endif /* JPEG_INTERNALS */ 37 | 38 | #ifdef JPEG_CJPEG_DJPEG 39 | 40 | #define BMP_SUPPORTED /* BMP image file format */ 41 | #define GIF_SUPPORTED /* GIF image file format */ 42 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 43 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 44 | #define TARGA_SUPPORTED /* Targa image file format */ 45 | 46 | #define TWO_FILE_COMMANDLINE /* optional */ 47 | #define USE_SETMODE /* Microsoft has setmode() */ 48 | #undef NEED_SIGNAL_CATCHER 49 | #undef DONT_USE_B_MODE 50 | #undef PROGRESS_REPORT /* optional */ 51 | 52 | #endif /* JPEG_CJPEG_DJPEG */ 53 | -------------------------------------------------------------------------------- /DDSystem/lib/FreeImage.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/lib/FreeImage.lib -------------------------------------------------------------------------------- /DDSystem/lib/jpeg.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/lib/jpeg.lib -------------------------------------------------------------------------------- /DDSystem/lib/jpeg_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/lib/jpeg_d.lib -------------------------------------------------------------------------------- /DDSystem/lib/libpng16.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/lib/libpng16.lib -------------------------------------------------------------------------------- /DDSystem/lib/libpng16_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/lib/libpng16_d.lib -------------------------------------------------------------------------------- /DDSystem/src/ConvTGATo32BitBmp/ConvTGATo32BitBmp.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | -------------------------------------------------------------------------------- /DDSystem/src/ConvTGATo32BitBmp/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "freeimage.h" 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #pragma comment(lib, "FreeImage.lib") 9 | 10 | using namespace std; 11 | 12 | int main(int argc, char**argv) 13 | { 14 | bool deleteFile = false; 15 | string paramFlag; 16 | string paramFileName; 17 | 18 | if (argc == 3) 19 | { 20 | paramFlag = argv[1]; 21 | paramFileName = argv[2]; 22 | deleteFile = paramFlag == "-d"; 23 | } 24 | else if (argc == 2) 25 | { 26 | paramFileName = argv[1]; 27 | } 28 | else 29 | { 30 | cout << "usage: Conv.exe [flag] \nflag:\n -d, delete origin file\n"; 31 | return -1; 32 | } 33 | 34 | FreeImage_Initialise(); 35 | 36 | auto raw = FreeImage_Load(FIF_TARGA, paramFileName.c_str()); 37 | if (!raw) 38 | { 39 | cout << "decode [" << paramFileName << "] failed.\n"; 40 | return 1; 41 | } 42 | 43 | string newName(paramFileName); 44 | vector drv; drv.resize(newName.size()); 45 | vector path; path.resize(newName.size()); 46 | vector name; name.resize(newName.size()); 47 | vector ext; ext.resize(newName.size()); 48 | _splitpath_s(paramFileName.c_str(), drv.data(), drv.size(), path.data(), path.size(), name.data(), name.size(), ext.data(), ext.size()); 49 | newName = string(drv.data()) + string(path.data()) + string(name.data()) + ".bmp"; 50 | 51 | FreeImage_Save(FIF_BMP, raw, newName.c_str()); 52 | FreeImage_Unload(raw); 53 | FreeImage_DeInitialise(); 54 | 55 | if (deleteFile) 56 | { 57 | if (remove(paramFileName.c_str()) != 0) 58 | { 59 | cout << "delete [" << paramFileName << "] failed.\n"; 60 | return 1; 61 | } 62 | } 63 | 64 | return 0; 65 | } -------------------------------------------------------------------------------- /DDSystem/src/DDSystem/DDSystem.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/src/DDSystem/DDSystem.cpp -------------------------------------------------------------------------------- /DDSystem/src/DDSystem/DDSystem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | class DDSystem 8 | { 9 | public: 10 | struct Header 11 | { 12 | enum { 13 | MAGIC_2 = 0x32504444, // DDP2 14 | MAGIC_3 = 0x33504444, // DDP3 15 | }; 16 | uint32_t Magic; 17 | uint32_t EntryCount; 18 | uint32_t DataOffset; 19 | uint8_t Revsered[20]; 20 | }; 21 | 22 | struct Entry2 23 | { 24 | uint32_t Offset; 25 | uint32_t PlainSize; 26 | uint32_t PackedSize; 27 | uint32_t Revsered; 28 | }; 29 | 30 | struct Entry3_L1 31 | { 32 | uint32_t BlockSize; 33 | uint32_t BlockOffset; 34 | }; 35 | 36 | #pragma pack(push, 1) 37 | struct Entry3_L2_Header 38 | { 39 | uint8_t Size; 40 | uint32_t Offset; 41 | uint32_t PlainSize; 42 | uint32_t PackedSize; 43 | uint8_t Revsered[4]; 44 | // follow char* NameWithoutSuffix; 45 | }; 46 | #pragma pack(pop) 47 | 48 | struct ScriptCipherHeader 49 | { 50 | char Magic[8]; // "DDSxHXB" 51 | uint8_t BigEnddingSize[3]; 52 | uint8_t Flag; 53 | uint8_t Revsered[4]; 54 | }; 55 | 56 | struct NormalizedEntry 57 | { 58 | uint32_t Offset; 59 | uint32_t PlainSize; 60 | uint32_t PackedSize; 61 | std::string NameWithoutSuffix; 62 | }; 63 | 64 | public: 65 | bool Open(const std::string& path); 66 | void Close(); 67 | bool ExtractEntries(); 68 | bool ExtractResource(const std::string& saveDir); 69 | 70 | private: 71 | bool ExtractDDP2(); 72 | bool ExtractDDP3(); 73 | int Decompress(uint8_t* dst, int dstLen, uint8_t* src, int srcLen); 74 | std::string ReadNullTerminateString(std::ifstream& stream); 75 | std::string DetermineSuffix(std::vector& plainData); 76 | bool ProcessScriptFile(std::vector& plainData); 77 | 78 | public: 79 | std::string mPackagePath; 80 | std::ifstream mStream; 81 | Header mHeader; 82 | std::vector mEntries; 83 | 84 | private: 85 | int mDefaultName{ 1 }; 86 | }; -------------------------------------------------------------------------------- /DDSystem/src/DDSystem/DDSystem.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /DDSystem/src/DDSystem/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | 3 | #include 4 | #include 5 | #include "DDSystem.h" 6 | 7 | using namespace std; 8 | 9 | 10 | int main(int argc, char** argv) 11 | { 12 | if (argc != 3) 13 | { 14 | cout << "usage: DDSystem.exe .\n"; 15 | return 0; 16 | } 17 | 18 | DDSystem dds; 19 | if (!dds.Open(argv[1])) 20 | { 21 | cout << "open [" << argv[1] << "] failed.\n"; 22 | return 0; 23 | } 24 | 25 | if (!dds.ExtractEntries()) 26 | { 27 | cout << "extract entries failed.\n"; 28 | return 0; 29 | } 30 | 31 | string dir(argv[2]); 32 | if (dir.back() != '\\') 33 | dir += '\\'; 34 | 35 | 36 | if (!dds.ExtractResource(dir)) 37 | { 38 | cout << "some resource save failed.\n"; 39 | return 0; 40 | } 41 | 42 | dds.Close(); 43 | 44 | return 0; 45 | } -------------------------------------------------------------------------------- /DDSystem/src/Merge/Merge.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/src/Merge/Merge.cpp -------------------------------------------------------------------------------- /DDSystem/src/Merge/Merge.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 源文件 28 | 29 | 30 | 源文件 31 | 32 | 33 | -------------------------------------------------------------------------------- /DDSystem/src/Merge/picture.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/DDSystem/src/Merge/picture.cpp -------------------------------------------------------------------------------- /DDSystem/src/Merge/picture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #pragma pack(push) 7 | #pragma pack(1) 8 | typedef struct 9 | { 10 | unsigned short bfType; 11 | unsigned long bfSize; 12 | unsigned short bfReserved1; 13 | unsigned short bfReserved2; 14 | unsigned long bfOffBits; 15 | } _BITMAPFILEHEADER; 16 | 17 | typedef struct { 18 | unsigned long biSize; 19 | long biWidth; 20 | long biHeight; 21 | unsigned short biPlanes; 22 | unsigned short biBitCount; 23 | unsigned long biCompression; 24 | unsigned long biSizeImage; 25 | long biXPelsPerMeter; 26 | long biYPelsPerMeter; 27 | unsigned long biClrUsed; 28 | unsigned long biClrImportant; 29 | } _BITMAPINFOHEADER; 30 | 31 | #pragma pack(pop) 32 | 33 | 34 | #ifdef _UNICODE 35 | typedef std::wstring string_t; 36 | #else 37 | typedef std::string string_t; 38 | #endif 39 | 40 | namespace Alisa 41 | { 42 | class ImageInfo 43 | { 44 | public: 45 | ImageInfo() = default; 46 | ImageInfo(const ImageInfo & info) : Width(info.Width), Height(info.Height), Component(info.Component) { } 47 | void Reset() { Width = Height = Component = FrameCount = 0; } 48 | 49 | int Width{ 0 }; 50 | int Height{ 0 }; 51 | int Component{ 0 }; 52 | int FrameCount{ 0 }; 53 | }; 54 | 55 | class Pixel 56 | { 57 | public: 58 | uint8_t R{ 0 }; 59 | uint8_t G{ 0 }; 60 | uint8_t B{ 0 }; 61 | uint8_t A{ 0xff }; 62 | }; 63 | 64 | enum E_ImageType 65 | { 66 | E_ImageType_Unknown, 67 | E_ImageType_Bmp, 68 | E_ImageType_Png, 69 | E_ImageType_Jpg 70 | }; 71 | 72 | enum E_ImageBlendMode 73 | { 74 | E_SrcOver, 75 | E_AlphaBlend, 76 | }; 77 | 78 | constexpr int PixelType_RGB = 3; 79 | constexpr int PixelType_RGBA = 4; 80 | 81 | class ImageImpl; 82 | class Image 83 | { 84 | public: 85 | Image(); 86 | Image(const Image & image); 87 | Image(Image && image); 88 | virtual ~Image(); 89 | 90 | bool Open(const string_t & filename); 91 | bool NewImage(ImageInfo info); 92 | bool SaveTo(const string_t & filename, E_ImageType type); 93 | 94 | bool RemoveAlpha(); 95 | bool AddAlpha(); 96 | 97 | static ImageInfo GetImageInfo(const string_t & filename); 98 | ImageInfo GetImageInfo() const; 99 | const std::vector> & GetPixelsGroup() const; 100 | void Clear(); 101 | 102 | bool Blend(const Image *image, int offsetX, int offsetY, E_ImageBlendMode mode); 103 | 104 | bool CopyPixelInLine(int dstLineOffset, int dstRowOffset, Image * srcObj, int srcLineOffset, int srcRowOffset, int cnt = -1); 105 | void ModifyPixels(std::function func); 106 | void WalkPixels(std::function func) const; 107 | 108 | //Image GetRawPixelData() const; 109 | //bool UpdateRawPixelData(const Image & image); 110 | 111 | bool StretchTo(Image *dst, int width, int height) const; 112 | 113 | int OtsuThresholding() const; 114 | 115 | Image CreateGray() const; 116 | 117 | private: 118 | ImageImpl *Impl{ nullptr }; 119 | }; 120 | } -------------------------------------------------------------------------------- /DDSystem/src/Merge/utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Alisa 4 | { 5 | namespace Utility 6 | { 7 | template 8 | void SafeDelete(T** pptr) 9 | { 10 | if (pptr) 11 | { 12 | delete *pptr; 13 | *pptr = nullptr; 14 | } 15 | } 16 | 17 | template 18 | void SafeDeleteArray(T** pptr) 19 | { 20 | if (pptr) 21 | { 22 | delete[] * pptr; 23 | *pptr = nullptr; 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /EntisGLS/EntisGLS.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EntisGLS", "EntisGLS\EntisGLS.vcxproj", "{809014C5-4E94-41C0-8A72-81D5DBB79505}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {809014C5-4E94-41C0-8A72-81D5DBB79505}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {809014C5-4E94-41C0-8A72-81D5DBB79505}.Debug|Win32.Build.0 = Debug|Win32 14 | {809014C5-4E94-41C0-8A72-81D5DBB79505}.Release|Win32.ActiveCfg = Release|Win32 15 | {809014C5-4E94-41C0-8A72-81D5DBB79505}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /EntisGLS/EntisGLS/EntisGLS.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/EntisGLS/EntisGLS/EntisGLS.cpp -------------------------------------------------------------------------------- /EntisGLS/EntisGLS/EntisGLS.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/EntisGLS/EntisGLS/EntisGLS.h -------------------------------------------------------------------------------- /EntisGLS/EntisGLS/EntisGLS.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | 头文件 31 | 32 | 33 | 34 | 35 | 资源文件 36 | 37 | 38 | -------------------------------------------------------------------------------- /EntisGLS/EntisGLS/EntisGLS.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /EntisGLS/EntisGLS/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/EntisGLS/EntisGLS/main.cpp -------------------------------------------------------------------------------- /EntisGLS/EntisGLS/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/EntisGLS/EntisGLS/main.rc -------------------------------------------------------------------------------- /EntisGLS/EntisGLS/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/EntisGLS/EntisGLS/resource.h -------------------------------------------------------------------------------- /EntisGLS/ReadMe.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/EntisGLS/ReadMe.txt -------------------------------------------------------------------------------- /FAVORITE/FAVORITE.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FAVORITE", "FAVORITE\FAVORITE.vcxproj", "{DF4F398D-A864-4D17-9BD8-1F832272BB8E}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {DF4F398D-A864-4D17-9BD8-1F832272BB8E}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {DF4F398D-A864-4D17-9BD8-1F832272BB8E}.Debug|Win32.Build.0 = Debug|Win32 14 | {DF4F398D-A864-4D17-9BD8-1F832272BB8E}.Release|Win32.ActiveCfg = Release|Win32 15 | {DF4F398D-A864-4D17-9BD8-1F832272BB8E}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/128x128.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/128x128.ico -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/256x256.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/256x256.ico -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/FAVORITE.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {DF4F398D-A864-4D17-9BD8-1F832272BB8E} 15 | FAVORITE 16 | 17 | 18 | 19 | Application 20 | true 21 | Unicode 22 | 23 | 24 | Application 25 | false 26 | true 27 | MultiByte 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | Level3 43 | Disabled 44 | 45 | 46 | true 47 | 48 | 49 | 50 | 51 | Level3 52 | MaxSpeed 53 | true 54 | true 55 | 56 | 57 | true 58 | true 59 | true 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/FAVORITE.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | 头文件 31 | 32 | 33 | 头文件 34 | 35 | 36 | 37 | 38 | 资源文件 39 | 40 | 41 | -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/FAVORITE.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/Favorite.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/Favorite.cpp -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/Favorite.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/Favorite.h -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/error.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #define SUCCESS 0 4 | #define ERR_MEM -1 5 | #define ERR_FILE_DISMATCH -2 6 | #define ERR_FILE_ERROR -3 7 | #define ERR_FILE_CREATE -4 8 | #define ERR_FILE_ERITE -5 9 | #define ERR_FILE_OTHERS -6 -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/main.cpp -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/main.rc -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/resource.h -------------------------------------------------------------------------------- /FAVORITE/FAVORITE/zlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/FAVORITE/FAVORITE/zlib.dll -------------------------------------------------------------------------------- /LiLiM/LiLiM.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LiLiM", "LiLiM\LiLiM.vcxproj", "{E832640E-1954-47CD-9CA2-612678465D23}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {E832640E-1954-47CD-9CA2-612678465D23}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {E832640E-1954-47CD-9CA2-612678465D23}.Debug|Win32.Build.0 = Debug|Win32 14 | {E832640E-1954-47CD-9CA2-612678465D23}.Release|Win32.ActiveCfg = Release|Win32 15 | {E832640E-1954-47CD-9CA2-612678465D23}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /LiLiM/LiLiM/LiLiM.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/LiLiM/LiLiM.cpp -------------------------------------------------------------------------------- /LiLiM/LiLiM/LiLiM.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | #include 3 | 4 | #pragma pack (1) 5 | typedef struct 6 | { 7 | DWORD Reserved; 8 | DWORD FileDataOffset; 9 | DWORD FileNum; 10 | char PackageName[0x105]; 11 | } PACKHEADER; 12 | 13 | #pragma pack () 14 | typedef struct 15 | { 16 | char FileName[0x20]; 17 | DWORD FileOffset; 18 | DWORD FileSize; 19 | } IDX; 20 | 21 | extern void AppendMsg(const wchar_t *szBuffer); 22 | 23 | int Entrance(const wchar_t *PackName, const wchar_t *CurDir); -------------------------------------------------------------------------------- /LiLiM/LiLiM/LiLiM.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 29 | 30 | 资源文件 31 | 32 | 33 | 34 | 35 | 头文件 36 | 37 | 38 | 头文件 39 | 40 | 41 | -------------------------------------------------------------------------------- /LiLiM/LiLiM/LiLiM.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /LiLiM/LiLiM/Utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Alisa 4 | { 5 | namespace Utility 6 | { 7 | template 8 | void SafeDelete(T** pptr) 9 | { 10 | if (pptr) 11 | { 12 | delete *pptr; 13 | *pptr = nullptr; 14 | } 15 | } 16 | 17 | template 18 | void SafeDeleteArray(T** pptr) 19 | { 20 | if (pptr) 21 | { 22 | delete[] * pptr; 23 | *pptr = nullptr; 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /LiLiM/LiLiM/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/LiLiM/main.cpp -------------------------------------------------------------------------------- /LiLiM/LiLiM/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/LiLiM/main.rc -------------------------------------------------------------------------------- /LiLiM/LiLiM/picture.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/LiLiM/picture.cpp -------------------------------------------------------------------------------- /LiLiM/LiLiM/picture.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/LiLiM/picture.h -------------------------------------------------------------------------------- /LiLiM/LiLiM/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/LiLiM/resource.h -------------------------------------------------------------------------------- /LiLiM/LiLiM/types.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | namespace Alisa 7 | { 8 | #ifdef _UNICODE 9 | typedef std::wstring string_t; 10 | #else 11 | typedef std::string string_t; 12 | #endif 13 | } -------------------------------------------------------------------------------- /LiLiM/include/libjpeg/jconfig.h: -------------------------------------------------------------------------------- 1 | /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 9x or NT. */ 2 | /* This file also works for Borland C++ 32-bit (bcc32) on Windows 9x or NT. */ 3 | /* see jconfig.txt for explanations */ 4 | 5 | #define HAVE_PROTOTYPES 6 | #define HAVE_UNSIGNED_CHAR 7 | #define HAVE_UNSIGNED_SHORT 8 | /* #define void char */ 9 | /* #define const */ 10 | #undef CHAR_IS_UNSIGNED 11 | #define HAVE_STDDEF_H 12 | #define HAVE_STDLIB_H 13 | #undef NEED_BSD_STRINGS 14 | #undef NEED_SYS_TYPES_H 15 | #undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ 16 | #undef NEED_SHORT_EXTERNAL_NAMES 17 | #undef INCOMPLETE_TYPES_BROKEN 18 | 19 | /* Define "boolean" as unsigned char, not enum, per Windows custom */ 20 | #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ 21 | typedef unsigned char boolean; 22 | #endif 23 | #ifndef FALSE /* in case these macros already exist */ 24 | #define FALSE 0 /* values of boolean */ 25 | #endif 26 | #ifndef TRUE 27 | #define TRUE 1 28 | #endif 29 | #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ 30 | 31 | 32 | #ifdef JPEG_INTERNALS 33 | 34 | #undef RIGHT_SHIFT_IS_UNSIGNED 35 | 36 | #endif /* JPEG_INTERNALS */ 37 | 38 | #ifdef JPEG_CJPEG_DJPEG 39 | 40 | #define BMP_SUPPORTED /* BMP image file format */ 41 | #define GIF_SUPPORTED /* GIF image file format */ 42 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 43 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 44 | #define TARGA_SUPPORTED /* Targa image file format */ 45 | 46 | #define TWO_FILE_COMMANDLINE /* optional */ 47 | #define USE_SETMODE /* Microsoft has setmode() */ 48 | #undef NEED_SIGNAL_CATCHER 49 | #undef DONT_USE_B_MODE 50 | #undef PROGRESS_REPORT /* optional */ 51 | 52 | #endif /* JPEG_CJPEG_DJPEG */ 53 | -------------------------------------------------------------------------------- /LiLiM/lib/Debug/jpeg_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/lib/Debug/jpeg_d.lib -------------------------------------------------------------------------------- /LiLiM/lib/Debug/libpng16_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/lib/Debug/libpng16_d.lib -------------------------------------------------------------------------------- /LiLiM/lib/Debug/zlib.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/lib/Debug/zlib.lib -------------------------------------------------------------------------------- /LiLiM/lib/Release/jpeg.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/lib/Release/jpeg.lib -------------------------------------------------------------------------------- /LiLiM/lib/Release/libpng16.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/lib/Release/libpng16.lib -------------------------------------------------------------------------------- /LiLiM/lib/Release/zlib.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/LiLiM/lib/Release/zlib.lib -------------------------------------------------------------------------------- /Musica/Musica.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Musica", "Musica\Musica.vcxproj", "{47330667-1BAF-4DEB-A7A2-FA6344321225}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {47330667-1BAF-4DEB-A7A2-FA6344321225}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {47330667-1BAF-4DEB-A7A2-FA6344321225}.Debug|Win32.Build.0 = Debug|Win32 14 | {47330667-1BAF-4DEB-A7A2-FA6344321225}.Release|Win32.ActiveCfg = Release|Win32 15 | {47330667-1BAF-4DEB-A7A2-FA6344321225}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /Musica/Musica/Musica.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/Musica/Musica/Musica.cpp -------------------------------------------------------------------------------- /Musica/Musica/Musica.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 头文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /Musica/Musica/blowfish.h: -------------------------------------------------------------------------------- 1 | /* 2 | blowfish.h: Header file for blowfish.c 3 | 4 | Copyright (C) 1997 by Paul Kocher 5 | 6 | This library is free software; you can redistribute it and/or 7 | modify it under the terms of the GNU Lesser General Public 8 | License as published by the Free Software Foundation; either 9 | version 2.1 of the License, or (at your option) any later version. 10 | This library is distributed in the hope that it will be useful, 11 | but WITHOUT ANY WARRANTY; without even the implied warranty of 12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 | Lesser General Public License for more details. 14 | You should have received a copy of the GNU Lesser General Public 15 | License along with this library; if not, write to the Free Software 16 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 17 | 18 | 19 | See blowfish.c for more information about this file. 20 | */ 21 | 22 | 23 | typedef struct { 24 | unsigned long P[16 + 2]; 25 | unsigned long S[4][256]; 26 | } BLOWFISH_CTX; 27 | 28 | void Blowfish_Init(BLOWFISH_CTX *ctx, unsigned char *key, int keyLen); 29 | void Blowfish_Encrypt(BLOWFISH_CTX *ctx, unsigned long *xl, unsigned long *xr); 30 | void Blowfish_Decrypt(BLOWFISH_CTX *ctx, unsigned long *xl, unsigned long *xr); 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /Musica/Musica/zlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/Musica/Musica/zlib.dll -------------------------------------------------------------------------------- /Musica/bin/Musica.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/Musica/bin/Musica.exe -------------------------------------------------------------------------------- /Musica/bin/zlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/Musica/bin/zlib.dll -------------------------------------------------------------------------------- /QLIE/QLIE.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.572 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "QLIE", "QLIE\QLIE.vcxproj", "{18272253-B168-435A-A977-4E7E974750EE}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "abmp12", "abmp12\abmp12.vcxproj", "{AEC9E6CD-45FF-4DC8-816A-C31BEB9CBB8E}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|Win32 = Debug|Win32 13 | Release|Win32 = Release|Win32 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {18272253-B168-435A-A977-4E7E974750EE}.Debug|Win32.ActiveCfg = Debug|Win32 17 | {18272253-B168-435A-A977-4E7E974750EE}.Debug|Win32.Build.0 = Debug|Win32 18 | {18272253-B168-435A-A977-4E7E974750EE}.Release|Win32.ActiveCfg = Release|Win32 19 | {18272253-B168-435A-A977-4E7E974750EE}.Release|Win32.Build.0 = Release|Win32 20 | {AEC9E6CD-45FF-4DC8-816A-C31BEB9CBB8E}.Debug|Win32.ActiveCfg = Debug|Win32 21 | {AEC9E6CD-45FF-4DC8-816A-C31BEB9CBB8E}.Debug|Win32.Build.0 = Debug|Win32 22 | {AEC9E6CD-45FF-4DC8-816A-C31BEB9CBB8E}.Release|Win32.ActiveCfg = Release|Win32 23 | {AEC9E6CD-45FF-4DC8-816A-C31BEB9CBB8E}.Release|Win32.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {EBB367E7-508E-444E-9B5A-8DD118CE4E34} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /QLIE/QLIE/QLIE.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/QLIE/QLIE/QLIE.cpp -------------------------------------------------------------------------------- /QLIE/QLIE/QLIE.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/QLIE/QLIE/QLIE.h -------------------------------------------------------------------------------- /QLIE/QLIE/QLIE.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 资源文件 28 | 29 | 30 | 31 | 32 | 头文件 33 | 34 | 35 | 头文件 36 | 37 | 38 | 39 | 40 | 资源文件 41 | 42 | 43 | -------------------------------------------------------------------------------- /QLIE/QLIE/icon (2).ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/QLIE/QLIE/icon (2).ico -------------------------------------------------------------------------------- /QLIE/QLIE/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/QLIE/QLIE/main.cpp -------------------------------------------------------------------------------- /QLIE/QLIE/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/QLIE/QLIE/main.rc -------------------------------------------------------------------------------- /QLIE/QLIE/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/QLIE/QLIE/resource.h -------------------------------------------------------------------------------- /QLIE/abmp12/abmp12.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {AEC9E6CD-45FF-4DC8-816A-C31BEB9CBB8E} 15 | abmp12 16 | 10.0 17 | 18 | 19 | 20 | Application 21 | true 22 | MultiByte 23 | v142 24 | 25 | 26 | Application 27 | false 28 | true 29 | MultiByte 30 | v142 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | Level3 46 | Disabled 47 | 48 | 49 | true 50 | 51 | 52 | 53 | 54 | Level3 55 | MaxSpeed 56 | true 57 | true 58 | 59 | 60 | true 61 | true 62 | true 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | -------------------------------------------------------------------------------- /QLIE/abmp12/abmp12.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | -------------------------------------------------------------------------------- /QLIE/readme.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/QLIE/readme.txt -------------------------------------------------------------------------------- /QLIE/tools/merge.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import sys 5 | from PIL import Image 6 | 7 | # 使用 pip install pillow 安装 pillow 8 | 9 | # 合并 qlie 解包产生的 png 文件 10 | # merge.py <目录名> 11 | 12 | filePath = sys.argv[1] 13 | group = {} 14 | 15 | def init_group(): 16 | count = 0 17 | for f in os.listdir(filePath): 18 | if os.path.splitext(f)[-1][1:] != 'png': 19 | continue 20 | 21 | if (len(f.split('+')) != 3): 22 | continue 23 | 24 | count += 1 25 | finalName = f[:f.find('+')] 26 | if group.get(finalName) == None: 27 | group[finalName] = [] 28 | group[finalName].append(f) 29 | 30 | print('file:', count, 'group:', len(group)) 31 | 32 | def main(): 33 | if len(sys.argv) != 2: 34 | print("usage: merge.py ") 35 | return 36 | 37 | init_group() 38 | if len(group) == 0: 39 | print('empty matched file') 40 | return 41 | 42 | count = 1 43 | for k in group: 44 | print('process ' + str(count) + ': ' + k) 45 | lst = group[k] 46 | sizeX = 0 47 | sizeY = 0 48 | for i in lst: 49 | img = Image.open(os.path.join(filePath, i)) 50 | w, h = img.size 51 | sizeX = max(sizeX, w + int(i[i.rfind('x')+1:i.rfind('y')])) 52 | sizeY = max(sizeY, h + int(i[i.rfind('y')+1:i.rfind('.')])) 53 | 54 | print('size:', sizeX, sizeY) 55 | merge = Image.new('RGBA', (sizeX, sizeY)) 56 | for i in lst: 57 | img = Image.open(os.path.join(filePath, i)) 58 | x = int(i[i.rfind('x')+1:i.rfind('y')]) 59 | y = int(i[i.rfind('y')+1:i.rfind('.')]) 60 | w, h = img.size 61 | merge.paste(img, (x, y, x+w, y+h)) 62 | merge.save(os.path.join(filePath, k + '.png'), quality = 100) 63 | count += 1 64 | 65 | 66 | if __name__ == "__main__": 67 | main() -------------------------------------------------------------------------------- /README.MD: -------------------------------------------------------------------------------- 1 | ## ExtractGames -------------------------------------------------------------------------------- /TouHou/TouHou.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TouHou", "TouHou\TouHou.vcxproj", "{4C8399B6-5D6F-4B35-90D9-E0D06FA49145}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {4C8399B6-5D6F-4B35-90D9-E0D06FA49145}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {4C8399B6-5D6F-4B35-90D9-E0D06FA49145}.Debug|Win32.Build.0 = Debug|Win32 14 | {4C8399B6-5D6F-4B35-90D9-E0D06FA49145}.Release|Win32.ActiveCfg = Release|Win32 15 | {4C8399B6-5D6F-4B35-90D9-E0D06FA49145}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /TouHou/TouHou/128.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/TouHou/TouHou/128.ico -------------------------------------------------------------------------------- /TouHou/TouHou/32.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/TouHou/TouHou/32.ico -------------------------------------------------------------------------------- /TouHou/TouHou/48.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/TouHou/TouHou/48.ico -------------------------------------------------------------------------------- /TouHou/TouHou/TouHou.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 资源文件 28 | 29 | 30 | 31 | 32 | 头文件 33 | 34 | 35 | 头文件 36 | 37 | 38 | 39 | 40 | 资源文件 41 | 42 | 43 | 资源文件 44 | 45 | 46 | 资源文件 47 | 48 | 49 | -------------------------------------------------------------------------------- /TouHou/TouHou/TouHou.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /TouHou/TouHou/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/TouHou/TouHou/main.cpp -------------------------------------------------------------------------------- /TouHou/TouHou/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/TouHou/TouHou/main.rc -------------------------------------------------------------------------------- /TouHou/TouHou/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/TouHou/TouHou/resource.h -------------------------------------------------------------------------------- /Tpk/Tpk.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.23107.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tpk", "Tpk\Tpk.vcxproj", "{8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Debug|x64.ActiveCfg = Debug|x64 17 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Debug|x64.Build.0 = Debug|x64 18 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Debug|x86.ActiveCfg = Debug|Win32 19 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Debug|x86.Build.0 = Debug|Win32 20 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Release|x64.ActiveCfg = Release|x64 21 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Release|x64.Build.0 = Release|x64 22 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Release|x86.ActiveCfg = Release|Win32 23 | {8F4B8BE1-3CEC-417B-8F4E-BC34BDD09D28}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | EndGlobal 29 | -------------------------------------------------------------------------------- /Tpk/Tpk/FileOperator.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include "type.h" 9 | 10 | class FileOperatorCommon 11 | { 12 | public: 13 | typedef HANDLE FilePtr; 14 | 15 | enum MoveMethod { 16 | _FILE_BEGIN, 17 | _FILE_CURRENT, 18 | _FILE_END, 19 | }; 20 | 21 | FileOperatorCommon(); 22 | ~FileOperatorCommon(); 23 | 24 | virtual bool Assign(const std::wstring & filename) { assert(0); return false; } 25 | bool IsFileValid() const; 26 | U64 GetFileSize() const; 27 | bool SetFilePointer(U64 offset, MoveMethod m, PU64 newOffset = 0); 28 | void Close(); 29 | 30 | 31 | template 32 | T Min(T a, T b); 33 | 34 | protected: 35 | FilePtr m_File; 36 | std::wstring m_FileName; 37 | }; 38 | 39 | 40 | class ReadOperator : public FileOperatorCommon 41 | { 42 | public: 43 | bool Assign(const std::wstring & filename); 44 | bool ReadFile(void *ptr, U32 bytesToRead, PU32 pbytesRead = nullptr); 45 | std::shared_ptr ReadFileBlock(U32 bytesToRead, PU32 pbytesRead = nullptr); 46 | }; 47 | 48 | 49 | class WriteOperator : public FileOperatorCommon 50 | { 51 | public: 52 | bool Assign(const std::wstring & filename, bool forceNew = false); 53 | bool WriteFile(void *data, U32 len, PU32 pbytesWrited = nullptr); 54 | 55 | bool SaveAsFile(void *_data, U32 len, const std::wstring &filename); 56 | }; 57 | 58 | 59 | template 60 | inline T FileOperatorCommon::Min(T a, T b) 61 | { 62 | return a < b ? a : b; 63 | } 64 | -------------------------------------------------------------------------------- /Tpk/Tpk/Tpk.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 源文件 26 | 27 | 28 | 29 | 30 | 头文件 31 | 32 | 33 | 头文件 34 | 35 | 36 | 头文件 37 | 38 | 39 | -------------------------------------------------------------------------------- /Tpk/Tpk/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/Tpk/Tpk/main.cpp -------------------------------------------------------------------------------- /Tpk/Tpk/tpk.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/Tpk/Tpk/tpk.cpp -------------------------------------------------------------------------------- /Tpk/Tpk/tpk.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/Tpk/Tpk/tpk.h -------------------------------------------------------------------------------- /Tpk/Tpk/type.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | typedef unsigned char U8; 5 | typedef unsigned short U16; 6 | typedef unsigned long U32; 7 | typedef unsigned long long U64; 8 | 9 | typedef U8* PU8; 10 | typedef U16* PU16; 11 | typedef U32* PU32; 12 | typedef U64* PU64; -------------------------------------------------------------------------------- /bin0/README.txt: -------------------------------------------------------------------------------- 1 | 封包格式 bin 2 | 封包Magic "ESC-ARC2" 3 | 文件Magic "acp\0" -------------------------------------------------------------------------------- /bin0/bin0.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "bin0", "bin0\bin0.vcxproj", "{3BE4AFDA-C862-44FC-8509-D1193E46CCD3}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {3BE4AFDA-C862-44FC-8509-D1193E46CCD3}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {3BE4AFDA-C862-44FC-8509-D1193E46CCD3}.Debug|Win32.Build.0 = Debug|Win32 14 | {3BE4AFDA-C862-44FC-8509-D1193E46CCD3}.Release|Win32.ActiveCfg = Release|Win32 15 | {3BE4AFDA-C862-44FC-8509-D1193E46CCD3}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /bin0/bin0/bin0.aps: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/bin0/bin0/bin0.aps -------------------------------------------------------------------------------- /bin0/bin0/bin0.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/bin0/bin0/bin0.cpp -------------------------------------------------------------------------------- /bin0/bin0/bin0.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/bin0/bin0/bin0.rc -------------------------------------------------------------------------------- /bin0/bin0/bin0.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | 14 | {3BE4AFDA-C862-44FC-8509-D1193E46CCD3} 15 | bin0 16 | 17 | 18 | 19 | Application 20 | true 21 | MultiByte 22 | 23 | 24 | Application 25 | false 26 | true 27 | MultiByte 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | Level3 43 | Disabled 44 | 45 | 46 | true 47 | 48 | 49 | 50 | 51 | Level3 52 | MaxSpeed 53 | true 54 | true 55 | 56 | 57 | true 58 | true 59 | true 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /bin0/bin0/bin0.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 28 | 29 | 头文件 30 | 31 | 32 | -------------------------------------------------------------------------------- /bin0/bin0/bin0.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | -------------------------------------------------------------------------------- /bin0/bin0/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/bin0/bin0/resource.h -------------------------------------------------------------------------------- /game_list.txt: -------------------------------------------------------------------------------- 1 | [AdvHD] 2 | Golden Marriage -Jewel Days- 3 | ミライカノジョ 4 | 乙女が奏でる恋のアリア 5 | 乙女が奏でる恋のアリア ~君に捧げるアンコール~ 6 | 7 | [BGI] 8 | しゅぷれ~むキャンディ ~王道には王道たる理由があるんです!~ 9 | ロピカルVACATION 10 | MeltyMoment ‐メルティモーメント‐ 11 | 12 | [bin0][acp] 13 | パニカル・コンフュージョン 14 | 15 | [EntisGLS] 16 | ロリポップファクトリー 17 | 星ノ音サンクチュアリ 18 | サンタフル☆サマー 19 | お兄ちゃん、右手の使用を禁止します! 20 | お兄ちゃんシェアリング 21 | 22 | [FAVORITE] 23 | いろとりどりのセカイ 24 | 25 | [kirikiri] 26 | あま恋シロップス ~恥じらう恋心でシたくなる甘神様の恋祭り~ [xor] 27 | カミツレ ~7の二乗不思議~ [未加密] 28 | 倉野くんちのふたご事情 [xor] 29 | さくら、咲きました。 [cxdec] 30 | すたーらいと★アイドル -COLORFUL TOP STAGE!- [未加密] 31 | あまたらすリドルスター [未加密] 32 | 迷える2人とセカイのすべて [未加密] 33 | 迷える2人とセカイのすべて LOVEHEAVEN300% [未加密] 34 | your diary +H [xor] 35 | カラフル☆きゅあ~ 缤纷少女 [cxdec] 36 | PRETTY×C∧TION [xor] 37 | PRETTY×CATION2 [xor] 38 | ヤリまん娘 ~俺の妹はビチビチビッチ~ [未加密] 39 | 公園いたずらシミュレータ ver.MAKO [未加密] 40 | 魔法少女の兄 ~下手な嘘と不良少年~ [未加密] 41 | エロ本を捨ててから兄の様子がおかしい [cxdec] 42 | 恋がさくころ桜どき [cxdec] 43 | ずっとすきして たくさんすきして [cxdec] 44 | 俺と5人の嫁さんがラブラブなのは、未来からきた赤ちゃんのおかげに違いない!? [cxdec] 45 | ... 46 | 47 | [Musica] 48 | ef - the first tale 49 | ef - the latter tale 50 | eden* 51 | 天使の日曜日 52 | 12の月のイヴ 53 | すぴぱら STORY #01 – Spring Has Come! 54 | ましろ色シンフォニー 55 | 56 | [pfs] 57 | 妹スパイラル 58 | ナデレボ! -NADESHIKO REVOLUTION!- 59 | 60 | [QLIE] 61 | ワルキューレロマンツェ Re:tellⅡ 62 | 美少女万華鏡 VOL 1~3 63 | 月に寄りそう乙女の作法 64 | --------------------- 65 | 忘记了: 66 | 十六夜のフォルトゥーナ 67 | 花咲ワークスプリング! -------------------------------------------------------------------------------- /kirikiri/bin/libpng16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/bin/libpng16.dll -------------------------------------------------------------------------------- /kirikiri/bin/libpng16_d.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/bin/libpng16_d.dll -------------------------------------------------------------------------------- /kirikiri/bin/zlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/bin/zlib.dll -------------------------------------------------------------------------------- /kirikiri/build/build.bat: -------------------------------------------------------------------------------- 1 | if "%VSCMD_VER%" EQU "" ( 2 | echo "init msvc env" 3 | call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat" 4 | ) 5 | 6 | MSBUILD %~dp0\..\kirikiri.sln /t:rebuild /p:Configuration="Debug";Platform=x86 /m 7 | pause 8 | MSBUILD %~dp0\..\kirikiri.sln /t:rebuild /p:Configuration="Release";Platform=x86 /m 9 | pause 10 | 11 | 12 | set arc_name=krkr-v1.0.2.zip 13 | set pdb_name=krkr-v1.0.2-pdb.zip 14 | set tmp_folder1=krkr 15 | set tmp_folder2=krkr-pdb 16 | 17 | cd %~dp0 18 | rmdir /S /Q %tmp_folder1% 19 | xcopy ..\bin\*.exe %tmp_folder1%\ /E /V /Q /H 20 | xcopy ..\bin\*.dll %tmp_folder1%\ /E /V /Q /H 21 | "c:\Program Files\7-zip\7z.exe" a "%arc_name%" %tmp_folder1% 22 | "c:\Program Files\7-zip\7z.exe" t "%arc_name%" * 23 | pause 24 | 25 | rmdir /S /Q %tmp_folder2% 26 | xcopy ..\pdb\*.pdb %tmp_folder2%\ /E /V /Q /H 27 | "c:\Program Files\7-zip\7z.exe" a "%pdb_name%" %tmp_folder2% 28 | "c:\Program Files\7-zip\7z.exe" t "%pdb_name%" * 29 | pause 30 | 31 | rmdir /S /Q %tmp_folder1% 32 | rmdir /S /Q %tmp_folder2% 33 | -------------------------------------------------------------------------------- /kirikiri/include/Detours/detver.h: -------------------------------------------------------------------------------- 1 | ////////////////////////////////////////////////////////////////////////////// 2 | // 3 | // Common version parameters. 4 | // 5 | // Microsoft Research Detours Package, Version 4.0.1 6 | // 7 | // Copyright (c) Microsoft Corporation. All rights reserved. 8 | // 9 | 10 | #define _USING_V110_SDK71_ 1 11 | #include "winver.h" 12 | #if 0 13 | #include 14 | #include 15 | #else 16 | #ifndef DETOURS_STRINGIFY 17 | #define DETOURS_STRINGIFY(x) DETOURS_STRINGIFY_(x) 18 | #define DETOURS_STRINGIFY_(x) #x 19 | #endif 20 | 21 | #define VER_FILEFLAGSMASK 0x3fL 22 | #define VER_FILEFLAGS 0x0L 23 | #define VER_FILEOS 0x00040004L 24 | #define VER_FILETYPE 0x00000002L 25 | #define VER_FILESUBTYPE 0x00000000L 26 | #endif 27 | #define VER_DETOURS_BITS DETOUR_STRINGIFY(DETOURS_BITS) 28 | -------------------------------------------------------------------------------- /kirikiri/include/Detours/disolarm.cpp: -------------------------------------------------------------------------------- 1 | #define DETOURS_ARM_OFFLINE_LIBRARY 2 | #include "disasm.cpp" 3 | -------------------------------------------------------------------------------- /kirikiri/include/Detours/disolarm64.cpp: -------------------------------------------------------------------------------- 1 | #define DETOURS_ARM64_OFFLINE_LIBRARY 2 | #include "disasm.cpp" 3 | -------------------------------------------------------------------------------- /kirikiri/include/Detours/disolia64.cpp: -------------------------------------------------------------------------------- 1 | #define DETOURS_IA64_OFFLINE_LIBRARY 2 | #include "disasm.cpp" 3 | -------------------------------------------------------------------------------- /kirikiri/include/Detours/disolx64.cpp: -------------------------------------------------------------------------------- 1 | #define DETOURS_X64_OFFLINE_LIBRARY 2 | #include "disasm.cpp" 3 | -------------------------------------------------------------------------------- /kirikiri/include/Detours/disolx86.cpp: -------------------------------------------------------------------------------- 1 | #define DETOURS_X86_OFFLINE_LIBRARY 2 | #include "disasm.cpp" 3 | -------------------------------------------------------------------------------- /kirikiri/include/libjpeg/jconfig.h: -------------------------------------------------------------------------------- 1 | /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 9x or NT. */ 2 | /* This file also works for Borland C++ 32-bit (bcc32) on Windows 9x or NT. */ 3 | /* see jconfig.txt for explanations */ 4 | 5 | #define HAVE_PROTOTYPES 6 | #define HAVE_UNSIGNED_CHAR 7 | #define HAVE_UNSIGNED_SHORT 8 | /* #define void char */ 9 | /* #define const */ 10 | #undef CHAR_IS_UNSIGNED 11 | #define HAVE_STDDEF_H 12 | #define HAVE_STDLIB_H 13 | #undef NEED_BSD_STRINGS 14 | #undef NEED_SYS_TYPES_H 15 | #undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ 16 | #undef NEED_SHORT_EXTERNAL_NAMES 17 | #undef INCOMPLETE_TYPES_BROKEN 18 | 19 | /* Define "boolean" as unsigned char, not enum, per Windows custom */ 20 | #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ 21 | typedef unsigned char boolean; 22 | #endif 23 | #ifndef FALSE /* in case these macros already exist */ 24 | #define FALSE 0 /* values of boolean */ 25 | #endif 26 | #ifndef TRUE 27 | #define TRUE 1 28 | #endif 29 | #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ 30 | 31 | 32 | #ifdef JPEG_INTERNALS 33 | 34 | #undef RIGHT_SHIFT_IS_UNSIGNED 35 | 36 | #endif /* JPEG_INTERNALS */ 37 | 38 | #ifdef JPEG_CJPEG_DJPEG 39 | 40 | #define BMP_SUPPORTED /* BMP image file format */ 41 | #define GIF_SUPPORTED /* GIF image file format */ 42 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 43 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 44 | #define TARGA_SUPPORTED /* Targa image file format */ 45 | 46 | #define TWO_FILE_COMMANDLINE /* optional */ 47 | #define USE_SETMODE /* Microsoft has setmode() */ 48 | #undef NEED_SIGNAL_CATCHER 49 | #undef DONT_USE_B_MODE 50 | #undef PROGRESS_REPORT /* optional */ 51 | 52 | #endif /* JPEG_CJPEG_DJPEG */ 53 | -------------------------------------------------------------------------------- /kirikiri/include/log/log.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | #include 6 | 7 | namespace Log 8 | { 9 | constexpr const int debug = 0; 10 | constexpr const int info = 1; 11 | constexpr const int warn = 2; 12 | constexpr const int error = 3; 13 | 14 | // filename: filename of log file 15 | // max_file_num: max numbers of log files 16 | // max_file_size: max size of single log file 17 | void Init(const char* filename = nullptr, int max_file_num = 1, int max_file_size = 10 * 1024 * 1024); 18 | 19 | void WriteLogToFile(const std::string& L); 20 | std::string GetTimeOfDay(); 21 | const char* GetLevelMark(int level); 22 | uint32_t GetPid(); 23 | uint32_t GetTid(); 24 | } 25 | 26 | #define WRITE_LOG(level, x) do { \ 27 | char msg1[1024] = { 0 }; \ 28 | sprintf_s(msg1, sizeof(msg1), "[%s] [%s] ", \ 29 | Log::GetTimeOfDay().c_str(), Log::GetLevelMark(level)); \ 30 | std::stringstream ss; \ 31 | ss << x; \ 32 | std::string L = msg1; \ 33 | L += ss.str(); \ 34 | Log::WriteLogToFile(L); \ 35 | } while (0) 36 | 37 | #define LOG_DEBUG(x) WRITE_LOG(Log::debug, x) 38 | #define LOG_INFO(x) WRITE_LOG(Log::info, x) 39 | #define LOG_WARN(x) WRITE_LOG(Log::warn, x) 40 | #define LOG_ERROR(x) WRITE_LOG(Log::error, x) 41 | 42 | -------------------------------------------------------------------------------- /kirikiri/include/utility/utility.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/include/utility/utility.cpp -------------------------------------------------------------------------------- /kirikiri/include/utility/utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include "detours/detours.h" 8 | 9 | namespace Utility 10 | { 11 | int SearchMemory(HANDLE hProcess, uint32_t from, uint32_t to, uint32_t value, uint32_t* result, uint32_t arrayCount); 12 | int SearchMemory(HANDLE hProcess, uint32_t from, uint32_t to, const char* str, uint32_t strLength, uint32_t* result, uint32_t arrayCount); 13 | uint8_t* SearchSequence(uint8_t* search_start, uint32_t search_length, const std::vector& pattern); 14 | 15 | bool SplitPath(const std::string& full, std::string& drive, std::string& dir, std::string& file, std::string& ext); 16 | bool SplitPath(const std::wstring& full, std::wstring& drive, std::wstring& dir, std::wstring& file, std::wstring& ext); 17 | std::string MakeFullPath(const std::string& relative); 18 | std::wstring MakeFullPath(const std::wstring& relative); 19 | std::string GetPathDir(const std::string& path); 20 | std::wstring GetPathDir(const std::wstring& path); 21 | std::string GetExeDirA(); 22 | std::wstring GetExeDirW(); 23 | 24 | std::wstring GBKToUnicode(const std::string& str); 25 | std::wstring UTF8ToUnicode(const std::string& str); 26 | std::string UnicodeToGBK(const std::wstring& str); 27 | std::string UnicodeToUTF8(const std::wstring& str); 28 | 29 | std::string GetTimeString(); 30 | std::string GetTimeFmtString(const char* fmt); 31 | 32 | void ResumeOtherThread(); 33 | 34 | std::string GenTmpFilePath(); 35 | 36 | template 37 | void AddHook(T* original_func, T detoured_func) { 38 | if (DetourTransactionBegin() == NO_ERROR) { 39 | DetourAttach((PVOID*)original_func, detoured_func); 40 | DetourTransactionCommit(); 41 | } 42 | } 43 | 44 | template 45 | void RemoveHook(T* original_func, T detoured_func) { 46 | if (DetourTransactionBegin() == NO_ERROR) { 47 | DetourDetach((PVOID*)original_func, detoured_func); 48 | DetourTransactionCommit(); 49 | } 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /kirikiri/lib/jpeg.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/lib/jpeg.lib -------------------------------------------------------------------------------- /kirikiri/lib/jpeg_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/lib/jpeg_d.lib -------------------------------------------------------------------------------- /kirikiri/lib/libpng16.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/lib/libpng16.lib -------------------------------------------------------------------------------- /kirikiri/lib/libpng16_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/lib/libpng16_d.lib -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/BlackSheep.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/BlackSheep/BlackSheep.cpp -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/BlackSheep.def: -------------------------------------------------------------------------------- 1 | EXPORTS 2 | V2Link 3 | V2Unlink -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/PassiveDump.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include "Detours/detours.h" -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/ShareMem.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | 4 | struct MapObj 5 | { 6 | bool Access; 7 | bool PassiveMode; 8 | int Count; 9 | wchar_t Path[32][260]; 10 | }; 11 | 12 | -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/BlackSheep/stdafx.cpp -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/BlackSheep/stdafx.h -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/BlackSheep/targetver.h -------------------------------------------------------------------------------- /kirikiri/src/BlackSheep/tp_stub.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/BlackSheep/tp_stub.h -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/CsvMerge.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/CsvMerge/CsvMerge.cpp -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/CsvMerge.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | 源文件 37 | 38 | 39 | -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/picture.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/CsvMerge/picture.cpp -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/picture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #pragma pack(push) 7 | #pragma pack(1) 8 | typedef struct 9 | { 10 | unsigned short bfType; 11 | unsigned long bfSize; 12 | unsigned short bfReserved1; 13 | unsigned short bfReserved2; 14 | unsigned long bfOffBits; 15 | } _BITMAPFILEHEADER; 16 | 17 | typedef struct { 18 | unsigned long biSize; 19 | long biWidth; 20 | long biHeight; 21 | unsigned short biPlanes; 22 | unsigned short biBitCount; 23 | unsigned long biCompression; 24 | unsigned long biSizeImage; 25 | long biXPelsPerMeter; 26 | long biYPelsPerMeter; 27 | unsigned long biClrUsed; 28 | unsigned long biClrImportant; 29 | } _BITMAPINFOHEADER; 30 | 31 | #pragma pack(pop) 32 | 33 | 34 | #ifdef _UNICODE 35 | typedef std::wstring string_t; 36 | #else 37 | typedef std::string string_t; 38 | #endif 39 | 40 | namespace Alisa 41 | { 42 | class ImageInfo 43 | { 44 | public: 45 | ImageInfo() = default; 46 | ImageInfo(const ImageInfo & info) : Width(info.Width), Height(info.Height), Component(info.Component) { } 47 | void Reset() { Width = Height = Component = FrameCount = 0; } 48 | 49 | int Width{ 0 }; 50 | int Height{ 0 }; 51 | int Component{ 0 }; 52 | int FrameCount{ 0 }; 53 | }; 54 | 55 | class Pixel 56 | { 57 | public: 58 | uint8_t R{ 0 }; 59 | uint8_t G{ 0 }; 60 | uint8_t B{ 0 }; 61 | uint8_t A{ 0xff }; 62 | }; 63 | 64 | enum E_ImageType 65 | { 66 | E_ImageType_Unknown, 67 | E_ImageType_Bmp, 68 | E_ImageType_Png, 69 | E_ImageType_Jpg 70 | }; 71 | 72 | enum E_ImageBlendMode 73 | { 74 | E_SrcOver, 75 | E_AlphaBlend, 76 | }; 77 | 78 | constexpr int PixelType_RGB = 3; 79 | constexpr int PixelType_RGBA = 4; 80 | 81 | class ImageImpl; 82 | class Image 83 | { 84 | public: 85 | Image(); 86 | Image(const Image & image); 87 | Image(Image && image); 88 | virtual ~Image(); 89 | 90 | bool Open(const string_t & filename); 91 | bool FromRawPixels(int component, int width, int height, char *data, int dataLength, bool upsideDown); 92 | bool NewImage(ImageInfo info); 93 | bool SaveTo(const string_t & filename, E_ImageType type); 94 | 95 | bool RemoveAlpha(); 96 | bool AddAlpha(); 97 | 98 | static ImageInfo GetImageInfo(const string_t & filename); 99 | ImageInfo GetImageInfo() const; 100 | const std::vector> & GetPixelsGroup() const; 101 | void Clear(); 102 | 103 | bool Blend(const Image *image, int offsetX, int offsetY, E_ImageBlendMode mode); 104 | 105 | bool CopyPixelInLine(int dstLineOffset, int dstRowOffset, Image * srcObj, int srcLineOffset, int srcRowOffset, int cnt = -1); 106 | void ModifyPixels(std::function func); 107 | void WalkPixels(std::function func) const; 108 | 109 | //Image GetRawPixelData() const; 110 | //bool UpdateRawPixelData(const Image & image); 111 | 112 | bool StretchTo(Image *dst, int width, int height) const; 113 | 114 | int OtsuThresholding() const; 115 | 116 | Image CreateGray() const; 117 | 118 | private: 119 | ImageImpl *Impl{ nullptr }; 120 | }; 121 | } -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/CsvMerge/stdafx.cpp -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/CsvMerge/stdafx.h -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/CsvMerge/targetver.h -------------------------------------------------------------------------------- /kirikiri/src/CsvMerge/utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Alisa 4 | { 5 | namespace Utility 6 | { 7 | template 8 | void SafeDelete(T** pptr) 9 | { 10 | if (pptr) 11 | { 12 | delete *pptr; 13 | *pptr = nullptr; 14 | } 15 | } 16 | 17 | template 18 | void SafeDeleteArray(T** pptr) 19 | { 20 | if (pptr) 21 | { 22 | delete[] * pptr; 23 | *pptr = nullptr; 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /kirikiri/src/DecryptText/DecryptText.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | -------------------------------------------------------------------------------- /kirikiri/src/DecryptText/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include "utility/utility.h" 8 | 9 | using namespace std; 10 | 11 | bool DecryptText(const vector& in, vector& out) { 12 | if (in.size() <= 5) 13 | return false; 14 | if (in[0] != 0xfe || in[1] != 0xfe) 15 | return false; 16 | if (in[2] != 1) 17 | return false; 18 | if (in[3] != 0xff || in[4] != 0xfe) 19 | return false; 20 | if ((in.size() - 5) % 2) 21 | return false; 22 | out.resize(in.size() - 5 + 2); 23 | out[0] = 0xff; 24 | out[1] = 0xfe; // Unicode BOM 25 | for (size_t i = 5, j = 0; i < in.size() - 1; i += 2, j += 2) { 26 | wchar_t c = *(wchar_t*)&in[i]; 27 | *(wchar_t*)&out[j] = ((c & 0xaaaaaaaa) >> 1) | ((c & 0x55555555) << 1); 28 | } 29 | return true; 30 | } 31 | 32 | int main(int argc, char** argv) { 33 | if (argc != 2 && argc != 3) { 34 | cout << "usage: DecryptText.exe [])\n"; 35 | return 1; 36 | } 37 | 38 | ifstream infile(argv[1], ios::binary); 39 | if (!infile.is_open()) { 40 | cout << "can't open input file: " << argv[1] << endl; 41 | return 2; 42 | } 43 | infile.seekg(0, ios::end); 44 | vector indata(static_cast(infile.tellg())); 45 | infile.seekg(0, ios::beg); 46 | infile.read((char*)indata.data(), indata.size()); 47 | infile.close(); 48 | 49 | vector outdata; 50 | if (!DecryptText(indata, outdata)) { 51 | cout << "decryption failed\n"; 52 | return 3; 53 | } 54 | 55 | string outfilename = (argc == 2 ? argv[1] : argv[2]); 56 | ofstream outfile(outfilename, ios::binary); 57 | if (!outfile.is_open()) { 58 | cout << "can't open output file: " << outfilename << endl; 59 | return 4; 60 | } 61 | outfile.write((char*)outdata.data(), outdata.size()); 62 | outfile.close(); 63 | cout << "decryption success.\n"; 64 | return 0; 65 | } -------------------------------------------------------------------------------- /kirikiri/src/ExtractChTxt/ExtractChTxt.cpp: -------------------------------------------------------------------------------- 1 |  2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | using namespace std; 9 | 10 | typedef int(*UNCOM)(unsigned char * out_buf, unsigned long * out_len, unsigned char * in_buf, unsigned long in_len); 11 | 12 | int main(int argc, char* argv[]) 13 | { 14 | HMODULE hZlib; 15 | UNCOM unCom; 16 | 17 | if (argc < 2) 18 | { 19 | cout << "usage: " << argv[0] << " [output]\n"; 20 | return 1; 21 | } 22 | 23 | string in(argv[1]); 24 | string out; 25 | if (argc >= 3) 26 | { 27 | out = argv[2]; 28 | } 29 | else 30 | { 31 | size_t pos = in.rfind('\\'); 32 | out = in.substr(0, pos + 1) + "un_" + in.substr(pos + 1); 33 | } 34 | 35 | if (!(hZlib = LoadLibrary(TEXT("zlib.dll")))) 36 | { 37 | cout << "miss zlib.dll.\n"; 38 | return 1; 39 | } 40 | if (!(unCom = (UNCOM)GetProcAddress(hZlib, "uncompress"))) 41 | { 42 | cout << "error zlib.dll.\n"; 43 | return 1; 44 | } 45 | 46 | ifstream ifile(in, ios::binary); 47 | ifile.seekg(0, ios::end); 48 | vector idata(size_t(ifile.tellg())); 49 | ifile.seekg(0, ios::beg); 50 | ifile.read(idata.data(), idata.size()); 51 | ifile.close(); 52 | 53 | const size_t raw_data_offset = 5 + 8 + 8; 54 | uint32_t comp_size = idata.size() > raw_data_offset ? *(uint32_t*)&idata[5] : 0; 55 | uint32_t plain_size = idata.size() > raw_data_offset ? *(uint32_t*)&idata[13] : 0; 56 | if (comp_size != idata.size() - raw_data_offset) 57 | { 58 | cout << "invalid input file.\n"; 59 | return 1; 60 | } 61 | 62 | vector odata(plain_size); 63 | unsigned long odata_size = odata.size(); 64 | if (unCom((PBYTE)odata.data(), &odata_size, (PBYTE)idata.data() + raw_data_offset, idata.size() - raw_data_offset)) 65 | { 66 | printf("decompress failed.\r\n"); 67 | return 1; 68 | } 69 | assert(odata_size == odata.size()); 70 | ofstream ofile(out, ios::binary); 71 | ofile.write(odata.data(), odata.size()); 72 | ofile.close(); 73 | 74 | FreeLibrary(hZlib); 75 | return 0; 76 | } -------------------------------------------------------------------------------- /kirikiri/src/ExtractChTxt/ExtractChTxt.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | -------------------------------------------------------------------------------- /kirikiri/src/Loader/Loader.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/Loader/Loader.cpp -------------------------------------------------------------------------------- /kirikiri/src/Loader/Loader.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | 源文件 37 | 38 | 39 | -------------------------------------------------------------------------------- /kirikiri/src/Loader/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/Loader/stdafx.cpp -------------------------------------------------------------------------------- /kirikiri/src/Loader/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/Loader/stdafx.h -------------------------------------------------------------------------------- /kirikiri/src/Loader/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/Loader/targetver.h -------------------------------------------------------------------------------- /kirikiri/src/TLG/TLG.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 源文件 23 | 24 | 25 | 26 | 27 | 资源文件 28 | 29 | 30 | 31 | 32 | 头文件 33 | 34 | 35 | 头文件 36 | 37 | 38 | -------------------------------------------------------------------------------- /kirikiri/src/TLG/TLGDecoder.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/TLG/TLGDecoder.cpp -------------------------------------------------------------------------------- /kirikiri/src/TLG/TLGDecoder.h: -------------------------------------------------------------------------------- 1 | #ifndef _TLGDECODER_H_ 2 | #define _TLGDECODER_H_ 3 | 4 | //#include "krkr2.h" 5 | #include 6 | typedef unsigned long long u64; 7 | typedef unsigned long u32; 8 | //typedef unsigned long ULONG; 9 | typedef unsigned short u16; 10 | typedef unsigned char u8; 11 | typedef unsigned char UInt8; 12 | typedef char s8; 13 | 14 | #pragma pack(1) 15 | 16 | #define KRKR2_TLG5_MAGIC "TLG5.0" 17 | 18 | typedef struct 19 | { 20 | BYTE Magic[0xB]; 21 | BYTE Colors; 22 | ULONG Width; 23 | ULONG Height; 24 | ULONG BlockHeight; 25 | ULONG BlockOffset[1]; 26 | } KRKR2_TLG5_HEADER; 27 | 28 | typedef struct 29 | { 30 | BYTE Magic[0xB]; 31 | BYTE Colors; 32 | BYTE DataFlags; 33 | BYTE ColorType; // currently always zero 34 | BYTE ExternalGolombTable; // currently always zero 35 | ULONG Width; 36 | ULONG Height; 37 | ULONG MaxBitLength; 38 | BYTE Data[1]; 39 | } KRKR2_TLG6_HEADER; 40 | 41 | typedef struct 42 | { 43 | BYTE MetaHeader[0xF]; 44 | union 45 | { 46 | KRKR2_TLG5_HEADER tlg5; 47 | KRKR2_TLG6_HEADER tlg6; 48 | }; 49 | } KRKR2_TLG_WITH_META_HEADER; 50 | 51 | typedef struct 52 | { 53 | s8 mark[11]; // "TLG6.0\x0raw\x1a" 54 | u8 colors; 55 | u8 flag; 56 | u8 type; 57 | u8 golomb_bit_length; 58 | u32 width; 59 | u32 height; 60 | u32 max_bit_length; 61 | u32 filter_length; 62 | //u8 *filter; 63 | } tlg6_header_t; 64 | 65 | #pragma pack() 66 | 67 | BOOL DecodeTLG5(PVOID lpInBuffer, ULONG uInSize, PVOID *ppOutBuffer, PULONG pOutSize); 68 | BOOL DecodeTLG6(PVOID lpInBuffer, ULONG uInSize, PVOID *ppOutBuffer, PULONG pOutSize); 69 | LONG TVPTLG5DecompressSlide(UInt8 *out, const UInt8 *in, LONG insize, UInt8 *text, LONG initialr); 70 | 71 | #endif /* _TLGDECODER_H_ */ -------------------------------------------------------------------------------- /kirikiri/src/TLG/krkr2.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/TLG/krkr2.h -------------------------------------------------------------------------------- /kirikiri/src/TLG/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/TLG/main.cpp -------------------------------------------------------------------------------- /kirikiri/src/TLG/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/TLG/main.rc -------------------------------------------------------------------------------- /kirikiri/src/TLG/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/TLG/resource.h -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/cxdec/anioka_cxdec_callback.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/cxdec/anioka_cxdec_callback.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/cxdec/cxdec.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/cxdec/cxdec.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/cxdec/cxdec.h: -------------------------------------------------------------------------------- 1 | #ifndef CXDEC_H 2 | #define CXDEC_H 3 | 4 | #include 5 | #include 6 | //#include 7 | //#include 8 | #include 9 | //#include 10 | 11 | struct cxdec_xcode_status { 12 | BYTE *start; 13 | BYTE *curr; 14 | DWORD space_size; 15 | DWORD seed; 16 | int (*xcode_building)(struct cxdec_xcode_status *, int); 17 | }; 18 | 19 | struct cxdec_callback { 20 | const char *name; 21 | DWORD key[2]; 22 | int (*xcode_building)(struct cxdec_xcode_status *, int); 23 | }; 24 | 25 | extern DWORD xcode_rand(struct cxdec_xcode_status *xcode); 26 | extern int push_bytexcode(struct cxdec_xcode_status *xcode, BYTE code); 27 | extern int push_2bytesxcode(struct cxdec_xcode_status *xcode, 28 | BYTE code0, BYTE code1); 29 | extern int push_3bytesxcode(struct cxdec_xcode_status *xcode, 30 | BYTE code0, BYTE code1, BYTE code2); 31 | extern int push_4bytesxcode(struct cxdec_xcode_status *xcode, 32 | BYTE code0, BYTE code1, BYTE code2, BYTE code3); 33 | extern int push_5bytesxcode(struct cxdec_xcode_status *xcode, 34 | BYTE code0, BYTE code1, BYTE code2, BYTE code3, BYTE code4); 35 | extern int push_6bytesxcode(struct cxdec_xcode_status *xcode, 36 | BYTE code0, BYTE code1, BYTE code2, BYTE code3, BYTE code4, BYTE code5); 37 | extern int push_dwordxcode(struct cxdec_xcode_status *xcode, DWORD code); 38 | 39 | #endif 40 | 41 | -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/cxdec/otomedomain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/cxdec/otomedomain.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/cxdec/sakurasaki_cxdec_callback.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/cxdec/sakurasaki_cxdec_callback.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/main.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/main.rc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/main.rc -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/otomedomain.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/otomedomain.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/resource.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/resource.h -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/xp3.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/xp3.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/xp3ext.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/xp3ext.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/xp3ext.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include "xp3.h" 4 | 5 | 6 | 7 | struct GameInfomation 8 | { 9 | std::string GameID; 10 | std::function Handler; 11 | }; 12 | 13 | 14 | extern std::map GameNameMap; 15 | EncryptedXP3* CreateXP3Handler(const std::wstring& gameName); 16 | 17 | 18 | extern void AppendMsg(const wchar_t *szBuffer); 19 | void XP3Entrance(const wchar_t *packName, const wchar_t *curDirectory, const std::wstring& choosedGame); 20 | 21 | 22 | class kuranokunchi : public EncryptedXP3 23 | { 24 | public: 25 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 26 | }; 27 | 28 | class amakoi : public EncryptedXP3 29 | { 30 | public: 31 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 32 | }; 33 | 34 | class prettycation : public EncryptedXP3 35 | { 36 | public: 37 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 38 | }; 39 | 40 | class lovelycation : public EncryptedXP3 41 | { 42 | public: 43 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 44 | }; 45 | 46 | class swansong : public EncryptedXP3 47 | { 48 | public: 49 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 50 | }; 51 | 52 | class deai5bu : public EncryptedXP3 53 | { 54 | public: 55 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 56 | }; 57 | 58 | class kamiyabai : public EncryptedXP3 59 | { 60 | public: 61 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 62 | }; 63 | 64 | 65 | class colorfulcure : public EncryptedXP3 66 | { 67 | public: 68 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 69 | }; 70 | 71 | class sakurasaki : public EncryptedXP3 72 | { 73 | public: 74 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 75 | }; 76 | 77 | 78 | 79 | class anioka : public EncryptedXP3 80 | { 81 | public: 82 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 83 | }; 84 | 85 | class koisakura : public EncryptedXP3 86 | { 87 | public: 88 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 89 | }; 90 | 91 | class sukisuki : public EncryptedXP3 92 | { 93 | public: 94 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 95 | }; 96 | 97 | class Otomedomain : public EncryptedXP3 98 | { 99 | public: 100 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 101 | }; 102 | 103 | class oreaka : public EncryptedXP3 104 | { 105 | public: 106 | bool DoExtractData(const file_entry& fe, std::vector& unpackData) override; 107 | }; -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/xp3filter_decode.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/src/kirikiri/xp3filter_decode.cpp -------------------------------------------------------------------------------- /kirikiri/src/kirikiri/xp3filter_decode.h: -------------------------------------------------------------------------------- 1 | #ifndef XP3FILTER_DECODE_H 2 | #define XP3FILTER_DECODE_H 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | struct xp3filter { 10 | const char *parameter; 11 | const WCHAR *resource_name; 12 | BYTE *buffer; 13 | DWORD length; 14 | DWORD offset; 15 | DWORD total_length; 16 | DWORD hash; 17 | }; 18 | 19 | extern void xp3filter_decode_init(void); 20 | extern void xp3filter_decode(char *game, const WCHAR *name, BYTE *buf, DWORD len, DWORD offset, DWORD total_len, DWORD hash); 21 | extern void xp3filter_post_decode(const WCHAR *name, BYTE *buf, DWORD len, DWORD hash); 22 | 23 | #endif /* XP3FILTER_DECODE_H */ 24 | -------------------------------------------------------------------------------- /kirikiri/tools/EMoteDumperXmoe.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/tools/EMoteDumperXmoe.exe -------------------------------------------------------------------------------- /kirikiri/tools/ExtractChTxt.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/tools/ExtractChTxt.exe -------------------------------------------------------------------------------- /kirikiri/tools/alpha-blend.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/tools/alpha-blend.exe -------------------------------------------------------------------------------- /kirikiri/tools/alpha_bmp.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import sys 5 | from PIL import Image, ImageFile, BmpImagePlugin 6 | 7 | _i16, _i32 = BmpImagePlugin.i16, BmpImagePlugin.i32 8 | 9 | class BmpAlphaImageFile(ImageFile.ImageFile): 10 | format = "BMP+Alpha" 11 | format_description = "BMP with full alpha channel" 12 | 13 | def _open(self): 14 | s = self.fp.read(14) 15 | if s[:2] != b'BM': 16 | raise SyntaxError("Not a BMP file") 17 | offset = _i32(s[10:]) 18 | 19 | self._read_bitmap(offset) 20 | 21 | def _read_bitmap(self, offset): 22 | 23 | s = self.fp.read(4) 24 | s += ImageFile._safe_read(self.fp, _i32(s) - 4) 25 | 26 | if len(s) not in (40, 108, 124): 27 | # Only accept BMP v3, v4, and v5. 28 | raise IOError("Unsupported BMP header type (%d)" % len(s)) 29 | 30 | bpp = _i16(s[14:]) 31 | if bpp != 32: 32 | # Only accept BMP with alpha. 33 | raise IOError("Unsupported BMP pixel depth (%d)" % bpp) 34 | 35 | compression = _i32(s[16:]) 36 | if compression == 3: 37 | # BI_BITFIELDS compression 38 | mask = (_i32(self.fp.read(4)), _i32(self.fp.read(4)), 39 | _i32(self.fp.read(4)), _i32(self.fp.read(4))) 40 | # XXX Handle mask. 41 | elif compression != 0: 42 | # Only accept uncompressed BMP. 43 | raise IOError("Unsupported BMP compression (%d)" % compression) 44 | 45 | self.mode, rawmode = 'RGBA', 'BGRA' 46 | 47 | self._size = (_i32(s[4:]), _i32(s[8:])) 48 | direction = -1 49 | if s[11] == '\xff': 50 | # upside-down storage 51 | self._size = self.size[0], 2**32 - self.size[1] 52 | direction = 0 53 | 54 | self.info["compression"] = compression 55 | 56 | # data descriptor 57 | self.tile = [("raw", (0, 0) + self.size, offset, 58 | (rawmode, 0, direction))] 59 | 60 | -------------------------------------------------------------------------------- /kirikiri/tools/libpng16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/tools/libpng16.dll -------------------------------------------------------------------------------- /kirikiri/tools/yuzu-dracu-riot!-ev-merge.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import json 3 | import os 4 | import sys 5 | from PIL import Image 6 | import alpha_bmp 7 | 8 | TJSDIR = "" 9 | BMPDIR = "" 10 | TJSBASE = "" 11 | 12 | # DRACU-RIOT! cg 合并 13 | # 1、使用 EMoteDumperXmoe.exe 解出 pimg 的 psb 文件后得到 XXX.psb.tjs 和 XXX 文件夹 14 | # 2、执行 "yuzu-dracu-riot!-ev-merge.py XXX.psb.tjs" 进行合并 15 | 16 | def getCommonPrefix(s1, s2): 17 | length = 1 18 | while length < len(s1) and s1[:length] == s2[:length]: 19 | length = length + 1 20 | return length - 1 21 | 22 | def findBaseOfDiff(baseGroup, diff): 23 | for b in baseGroup: 24 | if getCommonPrefix(b['name'], diff['name']) > 0: 25 | return b 26 | return None 27 | 28 | def main(): 29 | tjs_name = sys.argv[1] 30 | 31 | global TJSDIR 32 | global BMPDIR 33 | global TJSBASE 34 | (TJSDIR,tempfilename) = os.path.split(tjs_name) 35 | TJSBASE = tempfilename[:tempfilename.find('.')] 36 | BMPDIR = os.path.join(TJSDIR, TJSBASE) 37 | 38 | json_name = BMPDIR + '.json' 39 | 40 | f = open(tjs_name, 'r') 41 | f.seek(0, 2) 42 | file_len = f.tell() 43 | f.seek(0, 0) 44 | data = f.read(file_len) 45 | data = data.replace('=>', ':').replace('(const)', '') 46 | content = list(data) 47 | data_len = len(data) 48 | 49 | idx_l = 0 50 | idx_r = data_len 51 | while True: 52 | res_l = data.find('[', idx_l) 53 | res_r = data.rfind(']', 0, idx_r) 54 | if res_l == -1 or res_r == -1: 55 | break 56 | 57 | if data[res_l-1] == '%': 58 | content[res_l-1] = ' ' 59 | content[res_l] = '{' 60 | content[res_r] = '}' 61 | idx_l = res_l + 1 62 | idx_r = res_r - 1 63 | 64 | if idx_l >= data_len or idx_r >= data_len: 65 | break 66 | 67 | 68 | f2 = open(json_name, 'w') 69 | f2.write(''.join(content)) 70 | f2.close() 71 | j = json.loads(''.join(content)) 72 | 73 | # find base 74 | baseJsons = [] 75 | if j['layers'][-1]['height'] == j['height'] and j['layers'][-1]['width'] == j['width']: 76 | baseJsons.append(j['layers'][-1]) 77 | else: 78 | for item in j['layers']: 79 | if item['height'] == j['height'] and item['width'] == j['width']: # 搜索宽高一致 80 | baseJsons.append(item) 81 | 82 | if len(baseJsons) != 1: 83 | print("baseJsons size: ", len(baseJsons)) 84 | return 85 | 86 | for item in j['layers']: 87 | baseItem = baseJsons[0] 88 | diff = alpha_bmp.BmpAlphaImageFile(os.path.join(BMPDIR, str(item['layer_id']) + '.bmp')) 89 | base = alpha_bmp.BmpAlphaImageFile(os.path.join(BMPDIR, str(baseItem['layer_id']) + '.bmp')) 90 | merge = Image.new('RGBA', (baseItem['width'], baseItem['height'])) 91 | merge.paste(base, (0, 0, int(baseItem['width']), int(baseItem['height']))) 92 | left = item['left'] 93 | top = item['top'] 94 | right = left + diff.size[0] 95 | bottom = top + diff.size[1] 96 | merge.paste(diff, (left, top, right, bottom), diff) 97 | merge.save(os.path.join(BMPDIR, TJSBASE + '_merge_' + '{0:05}'.format(item['layer_id']) + '.png'), quality = 100) 98 | 99 | if __name__ == '__main__': 100 | main() 101 | 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /kirikiri/tools/yuzu-riddle-joker-ev-merge.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import json 3 | import os 4 | import sys 5 | from PIL import Image 6 | import alpha_bmp 7 | 8 | TJSDIR = "" 9 | BMPDIR = "" 10 | TJSBASE = "" 11 | 12 | # RIDDLE JOKER / 喫茶ステラと死神の蝶 cg 合并 13 | # 1、使用 EMoteDumperXmoe.exe 解出 pimg 的 psb 文件后得到 XXX.psb.tjs 和 XXX 文件夹 14 | # 2、执行 "yuzu-riddle-joker-ev-merge.py XXX.psb.tjs" 进行合并 15 | 16 | def getCommonPrefix(s1, s2): 17 | length = 1 18 | while length < len(s1) and s1[:length] == s2[:length]: 19 | length = length + 1 20 | return length - 1 21 | 22 | def findBaseOfDiff(baseGroup, diff): 23 | for b in baseGroup: 24 | if getCommonPrefix(b['name'], diff['name']) > 0: 25 | return b 26 | return None 27 | 28 | def main(): 29 | tjs_name = sys.argv[1] 30 | 31 | global TJSDIR 32 | global BMPDIR 33 | global TJSBASE 34 | (TJSDIR,tempfilename) = os.path.split(tjs_name) 35 | TJSBASE = tempfilename[:tempfilename.find('.')] 36 | BMPDIR = os.path.join(TJSDIR, TJSBASE) 37 | 38 | json_name = BMPDIR + '.json' 39 | 40 | f = open(tjs_name, 'r') 41 | f.seek(0, 2) 42 | file_len = f.tell() 43 | f.seek(0, 0) 44 | data = f.read(file_len) 45 | data = data.replace('=>', ':').replace('(const)', '') 46 | content = list(data) 47 | data_len = len(data) 48 | 49 | idx_l = 0 50 | idx_r = data_len 51 | while True: 52 | res_l = data.find('[', idx_l) 53 | res_r = data.rfind(']', 0, idx_r) 54 | if res_l == -1 or res_r == -1: 55 | break 56 | 57 | if data[res_l-1] == '%': 58 | content[res_l-1] = ' ' 59 | content[res_l] = '{' 60 | content[res_r] = '}' 61 | idx_l = res_l + 1 62 | idx_r = res_r - 1 63 | 64 | if idx_l >= data_len or idx_r >= data_len: 65 | break 66 | 67 | 68 | f2 = open(json_name, 'w') 69 | f2.write(''.join(content)) 70 | f2.close() 71 | j = json.loads(''.join(content)) 72 | 73 | # find base 74 | baseJsons = [] 75 | for item in j['layers']: 76 | if item['name'][len(item['name'])-1:] == 'a': # name 字段为 Xa 的是底图 77 | baseJsons.append(item) 78 | 79 | for item in j['layers']: 80 | baseItem = findBaseOfDiff(baseJsons, item) 81 | if baseItem == None: 82 | print("can't find base item for ", str(item['layer_id']) + '.bmp') 83 | diff = alpha_bmp.BmpAlphaImageFile(os.path.join(BMPDIR, str(item['layer_id']) + '.bmp')) 84 | base = alpha_bmp.BmpAlphaImageFile(os.path.join(BMPDIR, str(baseItem['layer_id']) + '.bmp')) 85 | merge = Image.new('RGBA', (baseItem['width'], baseItem['height'])) 86 | merge.paste(base, (0, 0, int(baseItem['width']), int(baseItem['height']))) 87 | left = item['left'] 88 | top = item['top'] 89 | right = left + item['width'] 90 | bottom = top + item['height'] 91 | merge.paste(diff, (left, top, right, bottom), diff) 92 | merge.save(os.path.join(BMPDIR, TJSBASE + '_merge_' + '{0:05}'.format(item['layer_id']) + '.png'), quality = 100) 93 | 94 | if __name__ == '__main__': 95 | main() 96 | 97 | 98 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /kirikiri/tools/yuzu-sabbat-of-the-witch-ev-merge.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import json 3 | import os 4 | import sys 5 | from PIL import Image 6 | 7 | 8 | # 魔女的夜宴 cg 合并 9 | # 1、使用 EMoteDumperXmoe.exe 解出 pimg 的 psb 文件后得到 XXX.psb.tjs 和 XXX 文件夹 10 | # 2、将 tlg 文件转成 png 图像保存在原位置 11 | # 3、执行 "yuzu-sabbat-of-the-witch-ev-merge.py XXX.psb.tjs" 进行合并 12 | 13 | tjs_name = sys.argv[1] 14 | folder = tjs_name[:tjs_name.find('.')] 15 | json_name = folder + '.json' 16 | 17 | f = open(tjs_name, 'r') 18 | f.seek(0, 2) 19 | file_len = f.tell() 20 | f.seek(0, 0) 21 | data = f.read(file_len) 22 | data = data.replace('=>', ':').replace('(const)', '') 23 | content = list(data) 24 | data_len = len(data) 25 | 26 | idx_l = 0 27 | idx_r = data_len 28 | while True: 29 | res_l = data.find('[', idx_l) 30 | res_r = data.rfind(']', 0, idx_r) 31 | if res_l == -1 or res_r == -1: 32 | break 33 | 34 | if data[res_l-1] == '%': 35 | content[res_l-1] = ' ' 36 | content[res_l] = '{' 37 | content[res_r] = '}' 38 | idx_l = res_l + 1 39 | idx_r = res_r - 1 40 | 41 | if idx_l >= data_len or idx_r >= data_len: 42 | break 43 | 44 | 45 | f2 = open(json_name, 'w') 46 | f2.write(''.join(content)) 47 | f2.close() 48 | j = json.loads(''.join(content)) 49 | 50 | # find base 51 | baseImg = {} 52 | for item in j['layers']: 53 | if item['height'] == j['height'] and item['width'] == j['width']: 54 | baseImg = item 55 | 56 | for item in j['layers']: 57 | diff = Image.open(folder + '\\' + str(item['layer_id']) + '.png') 58 | base = Image.open(folder + '\\' + str(baseImg['layer_id']) + '.png') 59 | merge = Image.new('RGBA', (baseImg['width'], baseImg['height'])) 60 | merge.paste(base, (0, 0, int(baseImg['width']), int(baseImg['height']))) 61 | left = item['left'] 62 | top = item['top'] 63 | right = left + item['width'] 64 | bottom = top + item['height'] 65 | merge.paste(diff, (left, top, right, bottom), diff) 66 | merge.save(folder + '\\' + folder + '_merge_' + str(item['layer_id']) + '.png', quality = 100) 67 | 68 | 69 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /kirikiri/tools/yuzu-senrenbanka-ev-merge.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | import json 3 | import os 4 | import sys 5 | from PIL import Image 6 | import alpha_bmp 7 | 8 | TJSDIR = "" 9 | BMPDIR = "" 10 | TJSBASE = "" 11 | 12 | # 千恋*万花 cg 合并 13 | # 1、使用 EMoteDumperXmoe.exe 解出 pimg 的 psb 文件后得到 XXX.psb.tjs 和 XXX 文件夹 14 | # 2、执行 "yuzu-senrenbanka-ev-merge.py XXX.psb.tjs" 进行合并 15 | 16 | def getCommonPrefix(s1, s2): 17 | length = 1 18 | while length < len(s1) and s1[:length] == s2[:length]: 19 | length = length + 1 20 | return length - 1 21 | 22 | def findBaseOfDiff(baseGroup, diff): 23 | for b in baseGroup: 24 | if getCommonPrefix(b['name'], diff['name']) > 0: 25 | return b 26 | return None 27 | 28 | def ConvertToJson(tjs_data): 29 | tjs_data = tjs_data.replace('=>', ':').replace('(const)', '') 30 | content = list(tjs_data) 31 | data_len = len(tjs_data) 32 | 33 | idx_l = 0 34 | idx_r = data_len 35 | while True: 36 | res_l = tjs_data.find('[', idx_l) 37 | res_r = tjs_data.rfind(']', 0, idx_r) 38 | if res_l == -1 or res_r == -1: 39 | break 40 | 41 | if tjs_data[res_l-1] == '%': 42 | content[res_l-1] = ' ' 43 | content[res_l] = '{' 44 | content[res_r] = '}' 45 | idx_l = res_l + 1 46 | idx_r = res_r - 1 47 | 48 | if idx_l >= data_len or idx_r >= data_len: 49 | break 50 | return content 51 | 52 | def FindXa(j, X): 53 | for item in j['layers']: 54 | n = item['name'] 55 | if len(n) == 2 and n[0] == X and n[1] == 'a': 56 | return item 57 | return None 58 | 59 | def main(): 60 | tjs_name = sys.argv[1] 61 | 62 | global TJSDIR 63 | global BMPDIR 64 | global TJSBASE 65 | (TJSDIR,tempfilename) = os.path.split(tjs_name) 66 | TJSBASE = tempfilename[:tempfilename.find('.')] 67 | BMPDIR = os.path.join(TJSDIR, TJSBASE) 68 | 69 | j = {} 70 | with open(tjs_name, 'r') as f: 71 | data = f.read() 72 | content = ConvertToJson(data) 73 | with open(BMPDIR + '.json', 'w') as f2: 74 | f2.write(''.join(content)) 75 | j = json.loads(''.join(content)) 76 | 77 | for item in j['layers']: 78 | baseItem = FindXa(j, item['name'][0]) 79 | diff = alpha_bmp.BmpAlphaImageFile(os.path.join(BMPDIR, str(item['layer_id']) + '.bmp')) 80 | base = alpha_bmp.BmpAlphaImageFile(os.path.join(BMPDIR, str(baseItem['layer_id']) + '.bmp')) 81 | merge = Image.new('RGBA', (baseItem['width'], baseItem['height'])) 82 | merge.paste(base, (0, 0, int(baseItem['width']), int(baseItem['height']))) 83 | left = item['left'] 84 | top = item['top'] 85 | right = left + diff.size[0] 86 | bottom = top + diff.size[1] 87 | merge.paste(diff, (left, top, right, bottom), diff) 88 | merge.save(os.path.join(BMPDIR, TJSBASE + '_merge_' + '{0:05}'.format(item['layer_id']) + '.png'), quality = 100) 89 | 90 | if __name__ == '__main__': 91 | main() 92 | 93 | 94 | 95 | 96 | 97 | -------------------------------------------------------------------------------- /kirikiri/tools/zlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/kirikiri/tools/zlib.dll -------------------------------------------------------------------------------- /leaf/leaf.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 15 4 | VisualStudioVersion = 15.0.28307.572 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "leaf", "src\leaf\leaf.vcxproj", "{474526B4-6117-4F75-B420-227C1CED128A}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {474526B4-6117-4F75-B420-227C1CED128A}.Debug|x64.ActiveCfg = Debug|x64 17 | {474526B4-6117-4F75-B420-227C1CED128A}.Debug|x64.Build.0 = Debug|x64 18 | {474526B4-6117-4F75-B420-227C1CED128A}.Debug|x86.ActiveCfg = Debug|Win32 19 | {474526B4-6117-4F75-B420-227C1CED128A}.Debug|x86.Build.0 = Debug|Win32 20 | {474526B4-6117-4F75-B420-227C1CED128A}.Release|x64.ActiveCfg = Release|x64 21 | {474526B4-6117-4F75-B420-227C1CED128A}.Release|x64.Build.0 = Release|x64 22 | {474526B4-6117-4F75-B420-227C1CED128A}.Release|x86.ActiveCfg = Release|Win32 23 | {474526B4-6117-4F75-B420-227C1CED128A}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {EA6A5221-5DE5-4CB5-940E-E3C384551547} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /leaf/src/leaf/leaf.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/leaf/src/leaf/leaf.cpp -------------------------------------------------------------------------------- /leaf/src/leaf/leaf.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | class Leaf 8 | { 9 | public: 10 | struct Header { 11 | enum { 12 | kLacMagic = 0x43414c, 13 | kKcapMagic = 0x5041434b, 14 | 15 | kLacSize = 8, 16 | kKcapSize = 16, 17 | }; 18 | uint32_t magic{ 0 }; // 0x5041434b 19 | uint32_t unknown1{ 0 }; 20 | uint32_t unknown2{ 0 }; 21 | uint32_t entry_number{ 0 }; 22 | }; 23 | 24 | struct Entry { 25 | uint32_t is_compressed{ 0 }; 26 | std::string name; 27 | uint32_t unknown2{ 0 }; 28 | uint32_t unknown3{ 0 }; 29 | uint32_t offset{ 0 }; 30 | uint32_t pack_size{ 0 }; 31 | }; 32 | 33 | bool Open(const std::string& file); 34 | bool ExtractEntries(); 35 | bool ExtractResource(); 36 | 37 | std::string JPtoGBK(const std::string& s); 38 | int Decompress(char* output, char* input, int input_size, int output_size); 39 | 40 | std::string mPath; 41 | std::ifstream mPackage; 42 | Header mHeader; 43 | std::vector mEntries; 44 | }; -------------------------------------------------------------------------------- /leaf/src/leaf/leaf.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 23 | 24 | 源文件 25 | 26 | 27 | 源文件 28 | 29 | 30 | -------------------------------------------------------------------------------- /leaf/src/leaf/main.cpp: -------------------------------------------------------------------------------- 1 | // leaf.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 2 | // 3 | 4 | #include 5 | #include 6 | #include "leaf.h" 7 | 8 | int main(int argc, char** argv) 9 | { 10 | assert(argc == 2); 11 | 12 | Leaf leaf; 13 | leaf.Open(argv[1]); 14 | leaf.ExtractEntries(); 15 | leaf.ExtractResource(); 16 | std::cout << "Hello World!\n"; 17 | return 0; 18 | } 19 | -------------------------------------------------------------------------------- /pal/Pal.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "unpackPAL", "src\unpackPAC\unpackPAL.vcxproj", "{D84175DE-EC37-41E8-99B2-AEE13A67699A}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ExtractPGD", "src\ExtractPGD\ExtractPGD.vcxproj", "{02614CB1-163D-4FE8-9722-29E1E28AF3D6}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x64 = Debug|x64 13 | Debug|x86 = Debug|x86 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Debug|x64.ActiveCfg = Debug|x64 19 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Debug|x64.Build.0 = Debug|x64 20 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Debug|x86.ActiveCfg = Debug|Win32 21 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Debug|x86.Build.0 = Debug|Win32 22 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Release|x64.ActiveCfg = Release|x64 23 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Release|x64.Build.0 = Release|x64 24 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Release|x86.ActiveCfg = Release|Win32 25 | {D84175DE-EC37-41E8-99B2-AEE13A67699A}.Release|x86.Build.0 = Release|Win32 26 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Debug|x64.ActiveCfg = Debug|x64 27 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Debug|x64.Build.0 = Debug|x64 28 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Debug|x86.ActiveCfg = Debug|Win32 29 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Debug|x86.Build.0 = Debug|Win32 30 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Release|x64.ActiveCfg = Release|x64 31 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Release|x64.Build.0 = Release|x64 32 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Release|x86.ActiveCfg = Release|Win32 33 | {02614CB1-163D-4FE8-9722-29E1E28AF3D6}.Release|x86.Build.0 = Release|Win32 34 | EndGlobalSection 35 | GlobalSection(SolutionProperties) = preSolution 36 | HideSolutionNode = FALSE 37 | EndGlobalSection 38 | EndGlobal 39 | -------------------------------------------------------------------------------- /pal/bin/libpng16.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/bin/libpng16.dll -------------------------------------------------------------------------------- /pal/bin/libpng16_d.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/bin/libpng16_d.dll -------------------------------------------------------------------------------- /pal/include/libjpeg/jconfig.h: -------------------------------------------------------------------------------- 1 | /* jconfig.vc --- jconfig.h for Microsoft Visual C++ on Windows 9x or NT. */ 2 | /* This file also works for Borland C++ 32-bit (bcc32) on Windows 9x or NT. */ 3 | /* see jconfig.txt for explanations */ 4 | 5 | #define HAVE_PROTOTYPES 6 | #define HAVE_UNSIGNED_CHAR 7 | #define HAVE_UNSIGNED_SHORT 8 | /* #define void char */ 9 | /* #define const */ 10 | #undef CHAR_IS_UNSIGNED 11 | #define HAVE_STDDEF_H 12 | #define HAVE_STDLIB_H 13 | #undef NEED_BSD_STRINGS 14 | #undef NEED_SYS_TYPES_H 15 | #undef NEED_FAR_POINTERS /* we presume a 32-bit flat memory model */ 16 | #undef NEED_SHORT_EXTERNAL_NAMES 17 | #undef INCOMPLETE_TYPES_BROKEN 18 | 19 | /* Define "boolean" as unsigned char, not enum, per Windows custom */ 20 | #ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */ 21 | typedef unsigned char boolean; 22 | #endif 23 | #ifndef FALSE /* in case these macros already exist */ 24 | #define FALSE 0 /* values of boolean */ 25 | #endif 26 | #ifndef TRUE 27 | #define TRUE 1 28 | #endif 29 | #define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */ 30 | 31 | 32 | #ifdef JPEG_INTERNALS 33 | 34 | #undef RIGHT_SHIFT_IS_UNSIGNED 35 | 36 | #endif /* JPEG_INTERNALS */ 37 | 38 | #ifdef JPEG_CJPEG_DJPEG 39 | 40 | #define BMP_SUPPORTED /* BMP image file format */ 41 | #define GIF_SUPPORTED /* GIF image file format */ 42 | #define PPM_SUPPORTED /* PBMPLUS PPM/PGM image file format */ 43 | #undef RLE_SUPPORTED /* Utah RLE image file format */ 44 | #define TARGA_SUPPORTED /* Targa image file format */ 45 | 46 | #define TWO_FILE_COMMANDLINE /* optional */ 47 | #define USE_SETMODE /* Microsoft has setmode() */ 48 | #undef NEED_SIGNAL_CATCHER 49 | #undef DONT_USE_B_MODE 50 | #undef PROGRESS_REPORT /* optional */ 51 | 52 | #endif /* JPEG_CJPEG_DJPEG */ 53 | -------------------------------------------------------------------------------- /pal/lib/jpeg.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/lib/jpeg.lib -------------------------------------------------------------------------------- /pal/lib/jpeg_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/lib/jpeg_d.lib -------------------------------------------------------------------------------- /pal/lib/libpng16.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/lib/libpng16.lib -------------------------------------------------------------------------------- /pal/lib/libpng16_d.lib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/lib/libpng16_d.lib -------------------------------------------------------------------------------- /pal/src/ExtractPGD/ExtractPGD.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 头文件 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 源文件 29 | 30 | 31 | 32 | 33 | 源文件 34 | 35 | 36 | 源文件 37 | 38 | 39 | 源文件 40 | 41 | 42 | 源文件 43 | 44 | 45 | -------------------------------------------------------------------------------- /pal/src/ExtractPGD/dbgpal.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/src/ExtractPGD/dbgpal.cpp -------------------------------------------------------------------------------- /pal/src/ExtractPGD/dbgpal.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | struct ImageInfo 10 | { 11 | enum { 12 | Base = 0, 13 | Diff = 1, 14 | }; 15 | ImageInfo(const std::string& n, int t) : name(n), type(t) { } 16 | std::string name; 17 | DWORD size{ 0 }; 18 | DWORD offset{ 0 }; 19 | 20 | int width{ 0 }; 21 | int height{ 0 }; 22 | int dataLength; 23 | LPVOID remoteBufferAddr{ 0 }; 24 | int type{ Base }; 25 | bool handled{ false }; 26 | }; 27 | 28 | 29 | struct BreakPointInfo 30 | { 31 | BYTE mOldByte{ 0 }; 32 | DWORD mAddr{ 0 }; 33 | bool mNeedResetBP{ false }; 34 | LPVOID mRemoteMemory{ NULL }; 35 | std::function Handler; 36 | }; 37 | 38 | enum class GameVersion 39 | { 40 | unkonwn = 0, 41 | hearts_rorolog, 42 | hearts_rorolog_hs, 43 | support_game_count, 44 | }; 45 | 46 | struct DebugInfo 47 | { 48 | static constexpr int MaxBPCount = 5; 49 | static constexpr BYTE int3 = 0xcc; 50 | static constexpr int DebugeeMemoryLimit = 1024 * 1024 * 600; 51 | static constexpr std::array(GameVersion::support_game_count)> PalDllBase{ 0x0, 0x10000000, 0x10000000 }; 52 | 53 | GameVersion mGameVersion{ GameVersion::unkonwn }; 54 | HANDLE hProcess{ NULL }; 55 | LPVOID mDllBaseAddr{ NULL }; 56 | DWORD mExeImageBase{ NULL }; 57 | int mCurrentImgIdx{ -1 }; 58 | bool mStopDebugger{ false }; 59 | std::vector& mImgList; 60 | std::array mBP; 61 | std::string mSaveDir; 62 | 63 | DebugInfo(std::vector& imgs) : mImgList(imgs) { } 64 | }; 65 | 66 | 67 | 68 | uint32_t Splite(const char * _str, const char * _delim, std::vector& out); 69 | std::string FullPath(const std::string& in); 70 | void SplitPath(const std::string& in, std::string* drv, std::string* path, std::string* name, std::string* ext); 71 | bool IsValidGameVersion(GameVersion ver); 72 | bool DebugIt(const std::string& exePath, const std::string& exeDir, const std::string& saveDir, std::vector& imgList, GameVersion ver); -------------------------------------------------------------------------------- /pal/src/ExtractPGD/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/src/ExtractPGD/main.cpp -------------------------------------------------------------------------------- /pal/src/ExtractPGD/picture.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/src/ExtractPGD/picture.cpp -------------------------------------------------------------------------------- /pal/src/ExtractPGD/picture.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #pragma pack(push) 7 | #pragma pack(1) 8 | typedef struct 9 | { 10 | unsigned short bfType; 11 | unsigned long bfSize; 12 | unsigned short bfReserved1; 13 | unsigned short bfReserved2; 14 | unsigned long bfOffBits; 15 | } _BITMAPFILEHEADER; 16 | 17 | typedef struct { 18 | unsigned long biSize; 19 | long biWidth; 20 | long biHeight; 21 | unsigned short biPlanes; 22 | unsigned short biBitCount; 23 | unsigned long biCompression; 24 | unsigned long biSizeImage; 25 | long biXPelsPerMeter; 26 | long biYPelsPerMeter; 27 | unsigned long biClrUsed; 28 | unsigned long biClrImportant; 29 | } _BITMAPINFOHEADER; 30 | 31 | #pragma pack(pop) 32 | 33 | 34 | #ifdef _UNICODE 35 | typedef std::wstring string_t; 36 | #else 37 | typedef std::string string_t; 38 | #endif 39 | 40 | namespace Alisa 41 | { 42 | class ImageInfo 43 | { 44 | public: 45 | ImageInfo() = default; 46 | ImageInfo(const ImageInfo & info) : Width(info.Width), Height(info.Height), Component(info.Component) { } 47 | void Reset() { Width = Height = Component = FrameCount = 0; } 48 | 49 | int Width{ 0 }; 50 | int Height{ 0 }; 51 | int Component{ 0 }; 52 | int FrameCount{ 0 }; 53 | }; 54 | 55 | class Pixel 56 | { 57 | public: 58 | uint8_t R{ 0 }; 59 | uint8_t G{ 0 }; 60 | uint8_t B{ 0 }; 61 | uint8_t A{ 0xff }; 62 | }; 63 | 64 | enum E_ImageType 65 | { 66 | E_ImageType_Unknown, 67 | E_ImageType_Bmp, 68 | E_ImageType_Png, 69 | E_ImageType_Jpg 70 | }; 71 | 72 | enum E_ImageBlendMode 73 | { 74 | E_SrcOver, 75 | E_AlphaBlend, 76 | }; 77 | 78 | constexpr int PixelType_RGB = 3; 79 | constexpr int PixelType_RGBA = 4; 80 | 81 | class ImageImpl; 82 | class Image 83 | { 84 | public: 85 | Image(); 86 | Image(const Image & image); 87 | Image(Image && image); 88 | virtual ~Image(); 89 | 90 | bool Open(const string_t & filename); 91 | bool FromRawPixels(int component, int width, int height, char *data, int dataLength, bool upsideDown); 92 | bool NewImage(ImageInfo info); 93 | bool SaveTo(const string_t & filename, E_ImageType type); 94 | 95 | bool RemoveAlpha(); 96 | bool AddAlpha(); 97 | 98 | static ImageInfo GetImageInfo(const string_t & filename); 99 | ImageInfo GetImageInfo() const; 100 | const std::vector> & GetPixelsGroup() const; 101 | void Clear(); 102 | 103 | bool Blend(const Image *image, int offsetX, int offsetY, E_ImageBlendMode mode); 104 | 105 | bool CopyPixelInLine(int dstLineOffset, int dstRowOffset, Image * srcObj, int srcLineOffset, int srcRowOffset, int cnt = -1); 106 | void ModifyPixels(std::function func); 107 | void WalkPixels(std::function func) const; 108 | 109 | //Image GetRawPixelData() const; 110 | //bool UpdateRawPixelData(const Image & image); 111 | 112 | bool StretchTo(Image *dst, int width, int height) const; 113 | 114 | int OtsuThresholding() const; 115 | 116 | Image CreateGray() const; 117 | 118 | private: 119 | ImageImpl *Impl{ nullptr }; 120 | }; 121 | } -------------------------------------------------------------------------------- /pal/src/ExtractPGD/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/src/ExtractPGD/stdafx.cpp -------------------------------------------------------------------------------- /pal/src/ExtractPGD/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/src/ExtractPGD/stdafx.h -------------------------------------------------------------------------------- /pal/src/ExtractPGD/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pal/src/ExtractPGD/targetver.h -------------------------------------------------------------------------------- /pal/src/ExtractPGD/utility.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Alisa 4 | { 5 | namespace Utility 6 | { 7 | template 8 | void SafeDelete(T** pptr) 9 | { 10 | if (pptr) 11 | { 12 | delete *pptr; 13 | *pptr = nullptr; 14 | } 15 | } 16 | 17 | template 18 | void SafeDeleteArray(T** pptr) 19 | { 20 | if (pptr) 21 | { 22 | delete[] * pptr; 23 | *pptr = nullptr; 24 | } 25 | } 26 | } 27 | } -------------------------------------------------------------------------------- /pal/src/unpackPAC/main.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include 3 | #include 4 | 5 | #include "pal.h" 6 | 7 | using namespace std; 8 | 9 | void SplitPath(const string& in, string* drv, string* path, string* name, string* ext) 10 | { 11 | vector _drv; _drv.resize(in.size()); 12 | vector _path; _path.resize(1024); 13 | vector _name; _name.resize(in.size()); 14 | vector _ext; _ext.resize(in.size()); 15 | 16 | _splitpath_s(in.c_str(), _drv.data(), _drv.size(), _path.data(), _path.size(), _name.data(), _name.size(), _ext.data(), _ext.size()); 17 | 18 | if (drv) *drv = _drv.data(); 19 | if (path) *path = _path.data(); 20 | if (name) *name = _name.data(); 21 | if (ext) *ext = _ext.data(); 22 | } 23 | 24 | 25 | int main(int argc, char** argv) 26 | { 27 | if (argc != 3) 28 | { 29 | cout << "usage:\n unpackPAC .\n"; 30 | return 0; 31 | } 32 | 33 | PAL p; 34 | if (!p.Open(argv[1])) 35 | { 36 | cout << argv[1] << " open failed.\n"; 37 | return 0; 38 | } 39 | 40 | if (!p.ExtractEntries()) 41 | { 42 | cout << "extract entries failed.\n"; 43 | return 0; 44 | } 45 | 46 | string drv, path, name; 47 | SplitPath(argv[1], &drv, &path, &name, nullptr); 48 | string outName = drv + path + name + "_list.txt"; 49 | ofstream out; 50 | out.open(outName); 51 | if (!out.is_open()) 52 | { 53 | cout << outName << " create failed.\n"; 54 | return 0; 55 | } 56 | 57 | out << "# name\ttype\textra\n"; 58 | for (auto& e : p.mEntries) 59 | { 60 | out << e.e.Filename << '\t' << (int)e.Type << '\t' << e.Extra << '\n'; 61 | //out.write(e.e.Filename, strlen(e.e.Filename)); 62 | //out.write("\n", 1); 63 | } 64 | out.close(); 65 | cout << outName << " successfully saved.\n"; 66 | 67 | string dir(argv[2]); 68 | if (dir.back() != '\\') 69 | dir += '\\'; 70 | if (!p.ExtractResource(dir)) 71 | { 72 | cout << "some error occurred.\n"; 73 | } 74 | return 0; 75 | } -------------------------------------------------------------------------------- /pal/src/unpackPAC/pal.cpp: -------------------------------------------------------------------------------- 1 | 2 | #include "pal.h" 3 | #include 4 | #include 5 | 6 | using namespace std; 7 | 8 | 9 | bool PAL::Open(const std::string & path) 10 | { 11 | assert(mPath.empty()); 12 | 13 | mStream.open(path, ios::binary); 14 | if (!mStream.is_open()) 15 | { 16 | cout << path << " open failed.\n"; 17 | return false; 18 | } 19 | 20 | mStream.read((char*)&mHeader, sizeof(PACHeader)); 21 | 22 | if (mHeader.Magic != mHeader.MAGIC) 23 | { 24 | cout << "not a valid pac package.\n"; 25 | Close(); 26 | return false; 27 | } 28 | 29 | mPath = path; 30 | return true; 31 | } 32 | 33 | void PAL::Close() 34 | { 35 | mPath = ""; 36 | mStream.close(); 37 | } 38 | 39 | bool PAL::ExtractEntries() 40 | { 41 | assert(!mPath.empty() && mStream.is_open()); 42 | mEntries.resize(mHeader.mEntryCount); 43 | mStream.seekg(sizeof(PACHeader), ios::beg); 44 | for (uint32_t i = 0; i < mHeader.mEntryCount; ++i) 45 | { 46 | mStream.read((char*)&mEntries[i], sizeof(PACEntry)); 47 | } 48 | 49 | char buffer[16]; 50 | for (uint32_t i = 0; i < mHeader.mEntryCount; ++i) 51 | { 52 | memset(buffer, 0, sizeof(buffer)); 53 | mStream.seekg(mEntries[i].e.Offset, ios::beg); 54 | mStream.read(buffer, 4); 55 | mEntries[i].Extra = buffer; 56 | mEntries[i].Type = NormalizedEntry::Base; 57 | if (mEntries[i].Extra == "PGD3") 58 | mEntries[i].Type = NormalizedEntry::Difference; 59 | else if (mEntries[i].Extra == "PGD2") 60 | mEntries[i].Type = NormalizedEntry::Difference; 61 | } 62 | return true; 63 | } 64 | 65 | bool PAL::ExtractResource(const std::string & saveDir) 66 | { 67 | string cmd("mkdir \""); 68 | cmd += saveDir.c_str(); 69 | cmd += "\""; 70 | system(cmd.c_str()); 71 | 72 | int saveCount = 0; 73 | vector plainData; 74 | for (auto& e : mEntries) 75 | { 76 | mStream.seekg(e.e.Offset, ios::beg); 77 | if (plainData.size() < e.e.PackLength) 78 | plainData.resize(e.e.PackLength * 2); 79 | mStream.read((char*)plainData.data(), e.e.PackLength); 80 | 81 | if (plainData[0] == '$' && string(e.e.Filename).find(".DAT") != string::npos) 82 | DecodeScript(plainData, e.e.PackLength); 83 | 84 | ofstream out(saveDir + e.e.Filename, ios::binary); 85 | if (out) 86 | { 87 | out.write((const char*)plainData.data(), e.e.PackLength); 88 | out.close(); 89 | ++saveCount; 90 | cout << "[" << e.e.Filename << "] saved.\n"; 91 | } 92 | else 93 | { 94 | cout << "create file [" << e.e.Filename << "] failed.\n"; 95 | } 96 | } 97 | 98 | return saveCount == mEntries.size(); 99 | } 100 | 101 | void PAL::DecodeScript(vector& data, size_t dataLength) 102 | { 103 | if (data.size() < 16) 104 | return; 105 | 106 | const uint32_t key1 = 0x84df873; 107 | const uint32_t key2 = 0xff987dee; 108 | 109 | uint8_t shift = 4; 110 | size_t oldSize = dataLength & ~3; 111 | 112 | uint8_t* ptr = data.data() + 16; 113 | uint8_t* pend = data.data() + oldSize; 114 | while (ptr < pend) 115 | { 116 | uint8_t mod = shift % 8; 117 | *ptr = (*ptr >> (8 - mod)) | (*ptr << mod); 118 | *(uint32_t*)ptr ^= key1; 119 | *(uint32_t*)ptr ^= key2; 120 | ++shift; 121 | ptr += 4; 122 | } 123 | } 124 | -------------------------------------------------------------------------------- /pal/src/unpackPAC/pal.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | #include 6 | 7 | class PAL 8 | { 9 | public: 10 | struct PACHeader 11 | { 12 | static constexpr uint32_t MAGIC = 0x20434150; // "PAC " 13 | uint32_t Magic; 14 | uint32_t Reserved; 15 | uint32_t mEntryCount; 16 | char UnkonwnBytes[0x7f8]; 17 | }; 18 | 19 | struct PACEntry 20 | { 21 | char Filename[0x20]; 22 | uint32_t PackLength; 23 | uint32_t Offset; 24 | }; 25 | 26 | struct NormalizedEntry 27 | { 28 | enum TYPE { 29 | Base, 30 | Difference, 31 | }; 32 | PACEntry e; 33 | TYPE Type; 34 | std::string Extra; 35 | }; 36 | 37 | public: 38 | bool Open(const std::string& path); 39 | void Close(); 40 | bool ExtractEntries(); 41 | bool ExtractResource(const std::string& saveDir); 42 | 43 | private: 44 | void DecodeScript(std::vector& data, size_t dataLength); 45 | 46 | public: 47 | PACHeader mHeader; 48 | std::vector mEntries; 49 | 50 | private: 51 | std::ifstream mStream; 52 | std::string mPath; 53 | }; -------------------------------------------------------------------------------- /pal/src/unpackPAC/unpackPAC.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | -------------------------------------------------------------------------------- /pfs/pfs.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 11.00 3 | # Visual Studio 2010 4 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pfs", "pfs\pfs.vcxproj", "{A7A12D57-487A-44D9-B61B-D84B452BB106}" 5 | EndProject 6 | Global 7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 8 | Debug|Win32 = Debug|Win32 9 | Release|Win32 = Release|Win32 10 | EndGlobalSection 11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 12 | {A7A12D57-487A-44D9-B61B-D84B452BB106}.Debug|Win32.ActiveCfg = Debug|Win32 13 | {A7A12D57-487A-44D9-B61B-D84B452BB106}.Debug|Win32.Build.0 = Debug|Win32 14 | {A7A12D57-487A-44D9-B61B-D84B452BB106}.Release|Win32.ActiveCfg = Release|Win32 15 | {A7A12D57-487A-44D9-B61B-D84B452BB106}.Release|Win32.Build.0 = Release|Win32 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | EndGlobal 21 | -------------------------------------------------------------------------------- /pfs/pfs/pfs.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/pfs/pfs/pfs.cpp -------------------------------------------------------------------------------- /pfs/pfs/pfs.h: -------------------------------------------------------------------------------- 1 | 2 | #pragma once 3 | 4 | #include 5 | #include 6 | #include 7 | 8 | 9 | class PfsFileImpl { 10 | public: 11 | struct PfsEntry { 12 | std::string mFileName; 13 | uint64_t mOffset; 14 | uint32_t mSize; 15 | }; 16 | static constexpr uint32_t INDEX_START = 11; 17 | 18 | public: 19 | virtual bool Open(const std::string& path) = 0; 20 | virtual bool ExtractIndeies() = 0; 21 | virtual bool ExtractResource() = 0; 22 | }; 23 | 24 | class PfsFileImplV2 : public PfsFileImpl { 25 | public: 26 | bool Open(const std::string& path) override; 27 | bool ExtractIndeies() override; 28 | bool ExtractResource() override; 29 | 30 | std::ifstream mFileStream; 31 | std::string mPath; 32 | std::string mMagic; // "pfX" 2/6/8 33 | uint32_t mRelationFileDataOffset; 34 | uint32_t mFileNumber; 35 | std::vector mEntries; 36 | }; 37 | 38 | class PfsFileImplV6 : public PfsFileImpl { 39 | public: 40 | bool Open(const std::string& path) override; 41 | bool ExtractIndeies() override; 42 | bool ExtractResource() override; 43 | 44 | std::ifstream mFileStream; 45 | std::string mPath; 46 | std::string mMagic; // "pfX" 2/6/8 47 | uint32_t mRelationFileDataOffset; 48 | uint32_t mFileNumber; 49 | std::vector mEntries; 50 | }; 51 | 52 | class PfsFileImplV8 : public PfsFileImpl { 53 | public: 54 | bool Open(const std::string& path) override; 55 | bool ExtractIndeies() override; 56 | bool ExtractResource() override; 57 | 58 | std::vector Xor(const std::vector& cipher); 59 | 60 | static constexpr uint32_t INDEX_HASH_START = 7; 61 | 62 | std::ifstream mFileStream; 63 | std::string mPath; 64 | std::string mMagic; // "pfX" 2/6/8 65 | uint32_t mRelationFileDataOffset; 66 | uint32_t mFileNumber; 67 | std::vector mEntries; 68 | std::vector mXorKey; 69 | }; 70 | 71 | 72 | class PfsFile { 73 | public: 74 | bool Open(const std::string& path); 75 | bool ExtractIndeies(); 76 | bool ExtractResource(); 77 | 78 | std::unique_ptr impl; 79 | }; 80 | -------------------------------------------------------------------------------- /pfs/pfs/pfs.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 源文件 20 | 21 | 22 | 23 | 24 | 头文件 25 | 26 | 27 | -------------------------------------------------------------------------------- /pfs/tools/merge-ipt.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | 3 | import os 4 | import sys 5 | from PIL import Image 6 | 7 | # 合并 pfs 解出的带有 ipt 数据的 cg 8 | 9 | def parse_ipt_meta(path): 10 | count = 0 11 | with open(path, 'rb') as f: 12 | for line in f.readlines(): 13 | if line.find(b'id=') == -1: 14 | continue 15 | count += 1 16 | return count 17 | 18 | def main(): 19 | if len(sys.argv) != 2: 20 | print('usage: ', sys.argv[0], " ") 21 | return 22 | count = parse_ipt_meta(sys.argv[1]) 23 | if count == 0: 24 | print('[-] not found sub part, exit') 25 | return 0 26 | without_ext = os.path.splitext(sys.argv[1])[0] 27 | img = Image.new('RGBA', (0, 0)) 28 | for i in range(count): 29 | tmp = img 30 | tmp2 = Image.open(without_ext + '_{:0>2d}'.format(i+1) + '.png') 31 | img = Image.new('RGBA', (tmp.size[0] + tmp2.size[0], tmp2.size[1])) 32 | img.paste(tmp, (0, 0), tmp) 33 | img.paste(tmp2, (tmp.size[0], 0), tmp2) 34 | img.save(without_ext + '_merge.png') 35 | 36 | main() -------------------------------------------------------------------------------- /ypf/bin/zlib.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/bin/zlib.dll -------------------------------------------------------------------------------- /ypf/src/ycg/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ycg/stdafx.cpp -------------------------------------------------------------------------------- /ypf/src/ycg/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ycg/stdafx.h -------------------------------------------------------------------------------- /ypf/src/ycg/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ycg/targetver.h -------------------------------------------------------------------------------- /ypf/src/ycg/ycg.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ycg/ycg.cpp -------------------------------------------------------------------------------- /ypf/src/ycg/ycg.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 29 | 30 | 源文件 31 | 32 | 33 | 源文件 34 | 35 | 36 | -------------------------------------------------------------------------------- /ypf/src/ypf/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ypf/main.cpp -------------------------------------------------------------------------------- /ypf/src/ypf/stdafx.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ypf/stdafx.cpp -------------------------------------------------------------------------------- /ypf/src/ypf/stdafx.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ypf/stdafx.h -------------------------------------------------------------------------------- /ypf/src/ypf/targetver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ypf/targetver.h -------------------------------------------------------------------------------- /ypf/src/ypf/ypf.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ypf/ypf.cpp -------------------------------------------------------------------------------- /ypf/src/ypf/ypf.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Kerisa/ExtractGames/b98e884c2cefb319159fc75a22e2b7690a54bbc1/ypf/src/ypf/ypf.h -------------------------------------------------------------------------------- /ypf/src/ypf/ypf.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 头文件 23 | 24 | 25 | 头文件 26 | 27 | 28 | 源文件 29 | 30 | 31 | 32 | 33 | 源文件 34 | 35 | 36 | 源文件 37 | 38 | 39 | 源文件 40 | 41 | 42 | -------------------------------------------------------------------------------- /ypf/ypf.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 14 4 | VisualStudioVersion = 14.0.25420.1 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ypf", "src\ypf\ypf.vcxproj", "{921C503B-9390-41D2-8FDC-8772343E3962}" 7 | EndProject 8 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ycg", "src\ycg\ycg.vcxproj", "{AE7DEEA8-224C-4EB9-8454-12373A91469A}" 9 | EndProject 10 | Global 11 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 12 | Debug|x64 = Debug|x64 13 | Debug|x86 = Debug|x86 14 | Release|x64 = Release|x64 15 | Release|x86 = Release|x86 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {921C503B-9390-41D2-8FDC-8772343E3962}.Debug|x64.ActiveCfg = Debug|Win32 19 | {921C503B-9390-41D2-8FDC-8772343E3962}.Debug|x86.ActiveCfg = Debug|Win32 20 | {921C503B-9390-41D2-8FDC-8772343E3962}.Debug|x86.Build.0 = Debug|Win32 21 | {921C503B-9390-41D2-8FDC-8772343E3962}.Release|x64.ActiveCfg = Release|Win32 22 | {921C503B-9390-41D2-8FDC-8772343E3962}.Release|x86.ActiveCfg = Release|Win32 23 | {921C503B-9390-41D2-8FDC-8772343E3962}.Release|x86.Build.0 = Release|Win32 24 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Debug|x64.ActiveCfg = Debug|x64 25 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Debug|x64.Build.0 = Debug|x64 26 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Debug|x86.ActiveCfg = Debug|Win32 27 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Debug|x86.Build.0 = Debug|Win32 28 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Release|x64.ActiveCfg = Release|x64 29 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Release|x64.Build.0 = Release|x64 30 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Release|x86.ActiveCfg = Release|Win32 31 | {AE7DEEA8-224C-4EB9-8454-12373A91469A}.Release|x86.Build.0 = Release|Win32 32 | EndGlobalSection 33 | GlobalSection(SolutionProperties) = preSolution 34 | HideSolutionNode = FALSE 35 | EndGlobalSection 36 | EndGlobal 37 | --------------------------------------------------------------------------------