Repository navigation
Releases: vn-tools/arc_unpacker
Release list
0.11
Finally here
New games
[130cm][030926]Princess Bride[130cm][040924]Princess Brave! ~Jantaku no Kishi~[130cm][050428]Boku wa Tenshi Janai yo[130cm][060623]Kanojo-tachi no Ryuugi[130cm][080829]Furifuri[130cm][090626]Oni Uta[130cm][100129]Onimari[130cm][110624]Nemureru Hana wa Haru o Matsu. -spring come-[5pb.][120525]Kono Oozora ni, Tsubasa o Hirogete[5pb.][160428]Chaos;Child[Akabei Soft2][100624]Kourin no Machi, Lavender no Shoujo[AliceSoft][160129]Tsumamigui 3[Ameno Murakumo][120218]Oyako Saiin Chiiku ~ Konna Ore ni Uzuite Modaero![Atelier Kaguya][010223]Mamotte Agetai. ~Dear My Master~[Atelier Kaguya][010601]Ochiyuku Kyoushitsu[Atelier Kaguya][010622]Shoukoujo ~Watashi o Wasurenaide~- `[Atelier Kaguya][021025]Ningyou no### New games
[130cm][030926]Princess Bride[130cm][040924]Princess Brave! ~Jantaku no Kishi~[130cm][050428]Boku wa Tenshi Janai yo[130cm][060623]Kanojo-tachi no Ryuugi[130cm][080829]Furifuri[130cm][090626]Oni Uta[130cm][100129]Onimari[130cm][110624]Nemureru Hana wa Haru o Matsu. -spring come-[5pb.][120525]Kono Oozora ni, Tsubasa o Hirogete[5pb.][160428]Chaos;Child[Akabei Soft2][100624]Kourin no Machi, Lavender no Shoujo[AliceSoft][160129]Tsumamigui 3[Ameno Murakumo][120218]Oyako Saiin Chiiku ~ Konna Ore ni Uzuite Modaero![Atelier Kaguya][010223]Mamotte Agetai. ~Dear My Master~[Atelier Kaguya][010601]Ochiyuku Kyoushitsu[Atelier Kaguya][010622]Shoukoujo ~Watashi o Wasurenaide~[Atelier Kaguya][021025]Ningyou no Yakata ~Inmu ni Dakereta Maid-tachi~[Atelier Kaguya][030530]Hitozuma Cosplay Kissa[Atelier Kaguya][031219]Saishuu Chikan Densha 2[Atelier Kaguya][040227]Mahokoi ~Ecchi na Mahou de Koi x Koi Shichau~[Atelier Kaguya][040326]Saishuu Chikan Densha[Atelier Kaguya][040528]Chijoku Shinsatsushitsu[Atelier Kaguya][040528]Kyouin Gakuen[Atelier Kaguya][050729]Onna Kyoushi[Atelier Kaguya][060428]Hitozuma Cosplay Kissa 2[Atelier Kaguya][060629]Inkou Haden Amatsu ~Hakudaku no Juin~[Atelier Kaguya][061215]Dungeon Crusaderz ~Tales of Demon Eater~[Atelier Kaguya][070427]Delta! ~Onedari Tenshi to Hitotsu Yane no Shita~[Atelier Kaguya][071130]Ore to Kanojo wa Shuju na Kankei[Atelier Kaguya][080125]Serina[Atelier Kaguya][080530]Imouto Jiru[Atelier Kaguya][080829]Dokidoki Onee-san[Atelier Kaguya][081227]Dungeon Crusaderz 2 ~Eigou no Rakudo~[Atelier Kaguya][090123]Natsukami[Atelier Kaguya][090227]Osananajimi to Ama~ku Ecchi ni Sugosu Houhou[Atelier Kaguya][090227]Sara Sara Sasara[Atelier Kaguya][090424]Magical Witch Academy ~Boku to Sensei no Magical Lesson~[Atelier Kaguya][090725]Chupa Shite Ageru ~Sports Club no Onee-san~[Atelier Kaguya][091002]Pri ☆ Sara - Dokidoki x Love Love W Fandisk[Atelier Kaguya][091218]Nurse ni Omakase[Atelier Kaguya][096026]Magical Witch Concerto[Atelier Kaguya][100226]AneDeath. ~Anejini Kakugo no 「Otouto Shibori」 na Natsu ga Kuru!~[Atelier Kaguya][100528]Kiriya Hakushakuke no Roku Shimai[Atelier Kaguya][100723]Classy ☆ Cranberry's[Atelier Kaguya][100730]Splash![Atelier Kaguya][101210]Niizuma Ikasete Milk! Danchizuma, Hirusagari no Kahanshin Jijou[Atelier Kaguya][101217]Saishuu Chikan Densha 3[Atelier Kaguya][110408]Sakura Iro Quartet[Atelier Kaguya][110422]Ijira Rental ~Eroama Onee-san ni Kashidasarechatta!!~[Atelier Kaguya][110617]Anejiru ~Shirakawa San Shimai no Omakase~[Atelier Kaguya][110617]Katei Kyoushi no Onee-san ~H no Hensachi Agechaimasu~[Atelier Kaguya][110617]School Project ☆[Atelier Kaguya][110624]Harahara Shichau! ~Oya ni wa Naisho no Kozukuri Seikatsu~ -Asagari Shimai Hen-[Atelier Kaguya][110624]Osakon ~Osananajimi to Icha Love Kekkon Katsudou~[Atelier Kaguya][110722]Medorei ~Okasareta Houkago~[Atelier Kaguya][110722]Toriko no Hime ~Inma no Chouritsu~[Atelier Kaguya][110729]Kindan no Byoutou Tokushu Seishinkai Yusa Sousuke no Shinsatsu Kiroku[Atelier Kaguya][110930]Ane wa Kanojo de Senzoku Maid[Atelier Kaguya][110930]Harahara Shichau!! ~Oya ni wa Naisho no Kozukuri Seikatsu~ -Amahara Izumo Hen-[Atelier Kaguya][110930]Hatsujou Season[Atelier Kaguya][111125]Arubaito no Senpai no Onna no Ko ni Shigoto o Osowatteitara Hajimacchau H na Kankei[Atelier Kaguya][111216]Hakudaku no Aoki Erena ~Shaseishitara Fuuin ga Tokeru Nante Mushiro Gohoubi Desu~[Atelier Kaguya][120224]Ura Nyuugaku ~Ineki ni Nureta Kyoukasho~[Atelier Kaguya][120427]Kirari☆Nangoku Komugiiro ~Shiofuki Paradise e Youkoso!~[Atelier Kaguya][120525]Shiro Koki Kuro Koki ~Kuro Tights ni Semerareru ga Sore Gurai de wa Shiro Knee Socks o Akiramenai Ore~[Atelier Kaguya][120629]Erotica Yuuwaku Kenshuu Hajimaruyo~ Shigoichau Kara Kakugonasai![Atelier Kaguya][120629]Prima ☆ Stella[Atelier Kaguya][120928]Bus Chiku ~Kakusareta Seiheki o Abake~[Atelier Kaguya][121026]Ane Oyako de Iku![Atelier Kaguya][121130]Sperman ~Sono Fukushuu no Maku o Yabure!!~[Atelier Kaguya][130125]Enjoy ~Futari no Ecchi na Joi to Eroero Kenshuu Taiken~[Atelier Kaguya][130222]Wagamama Milk DE Shite Ageru[Atelier Kagyua][101210]Mainichi ga M![Bishop][110225]Sansha Mendan ~Rensa Suru Chijoku Choukyou no Gakuen~[Black Lilith][060331]Soukou Kijo Iris[calme][160628]Karakara[Complet's][080229]Mama Shibori 2 (Mama Shibori no Jijou)[Complet's][110527]Mama Mahjong[Devil-seal & Softhouse-Seal][120224]Seeeki! Bukkake Bokujou! ~Oshiru Ippai, Seirei-tachi o H ni Shiiku!~[Devil-seal & Softhouse-Seal][120525]Touma Kojirou no Tantei File ~Opera Za no Kaijin Satsujin Jiken~[Dieselmine][100814]Omoikkiri! Seieki Tairyou Chuunyuu! ~Takabisha Onna o Aherasero!~[Dieselmine][110428]Seieki Tairyou Chuunyuu! 5 ~Ore no Takabisha na Bishoujo Goshujin-sama ga Konna ni Seidai ni Aheru Wake ga Nai[Dieselmine][111230]Itsu de mo Onna no Ko ni Seieki Tairyou Chuunyuu! Shite Homerareru Sekai[Dieselmine][150807]Me ga Sametara Seieki ga 100 Bai Tamaru Karada ni Natteta -> Tairyou Chuunyuu![Escude][000407]Miracle Temptation!![Escude][000721]Ryuusei Tenshi Primaveil[Escude][001222]Tobikkiri Ruin[Escude][011122]Metamor Fantasy[Escude][020802]Lovely Lovedoll[Escude][021213]Ryuusei Tenshi Primaveil V[G.J?][060428]Tsuma to Mama to Boin[Harukaze][160226]Nora to Oujo to Noraneko Heart[HEAT-SOFT][130906]Onee-chan Saimin Before After[Leaf & Aquaplus & Sting][051222]To Heart 2 Xrated[light][120831]Dies irae ~Amantes amentes~[light][120831]Paradise Lost[light][130628]Kajiri Kamui Kagura Akebono no Hikari[Luxury][140829]Maou no Kuse ni Namaiki da! Torotoro Tropical![Luxury][150828]Oh Yuusha yo, Itte Shimau to wa Nasakenai![May-Be Soft][050318]Henshin! 2[Miel][141219]Ure Chichi Shibori ~Bakunyuu Miboujin ga Otonari no Gakusei ni Oppai o Seiki ni Shitsukerare Haramase Sex Tsuke ni~[Minato Soft][070525]Kimi ga Aruji de Shitsuji ga Ore de[Minato Soft][120323]Maji de Watashi ni Koishinasai! S[Minato Soft][130118]Maji de Watashi ni Koishinasai! A-1[Minato Soft][130712]Maji de Watashi ni Koishinasai! A-2[Minato Soft][140228]Maji de Watashi ni Koishinasai! A-3[Minato Soft][141121]Maji de Watashi ni Koishinasai! A-4[Muscadet][091030]Sweetest Maman![Nekomarudow][070817]Yandere[Nitroplus][160129]Tokyo Necro (#29)[Nitroplus][160630]Sonicomi - Communication with Sonico[Noir][091225]Imouto Ijime[Orcsoft][121207]Oku-sama wa Moto Yariman -Besluted- (#27)[Orcsoft][130809]Aniki No Yome-san nara, Ore ni Hamerarete Hiihii Itteru Tokoro Da yo (#27)[Rapapuru][081031]Mama Mama Mama[Rapapuru][110826]Chichi Miko!![Rapapuru][120427]Chichi Miko!! Plus 1 ~Sobo to Musume no Sakunyuu Harem~[Rapapuru][130222]Mama Mama Mama 2[Studio Mebius][000408]Zetsubou 2000 ~Aoi Kajitsu no Sanka~ DVD-ROM Edition[Studio Mebius][040423]Mebinya! Mebius Fandisc[Studio Mebius][040924]Snow[Studio Mebius][040924]Tomodachi Ijou Koibito Miman[Studio Mebius][050729]The God of Death[Studio Mebius][060929]Snow[Studio Mebius][081128]Sin Kurotoki Iro no Shoujo[Studio Mebius][090424]Akumu Zetsubou ~Aoi Kajitsu no Sanka~ Twin Pack Edition[Studio Mebius][970328]Akumu - Aoi Kajitsu no Sanka[Studio Pork][120413]Bajunyuu! Dekajiri! Ama Oba-san[Studio Ring][070629]Oyatsu no Jikan[Swan][110422]Hara ☆ Para!! ~Swan Nakadashi Paradise~[Swaneye][081024]Hara Kano!! ~Ano Ko To Lovelove Harabote Seikatsu~[Swanmania & Swaneye][130726]Sakigake! Metamorfuck Gakuen! ~Kogane no Chikyuu to Pantsu no Hihou~[Triangle][150626]Sacred Lineage[Tryset][070928]Yogatte! Oku-sama ~Yokyuu Fuman na Mucchiri Tsuma-tachi~[Tsurumiku][091218]Yume Kui -Tsurumiku Shiki Game Seisaku-[Yuzusoft][060728]Bra-ban![Yuzusoft][080523]Natsuzora Kanata[Yuzusoft][090529]Tenshin Ranman - Lucky or Unlucky!?[Yuzusoft][101224]Noble☆Works[Yuzusoft][120330]Dracu-Riot!
New formats
5pb/arcwill/pnapabstraction/wadalice-soft/dcfbishop/bsabishop/bscbishop/bsgdxlib/dxescude/acpescude/binkaguya/an00kaguya/an10kaguya/an20kaguya/an21kaguya/aokaguya/apkaguya/ap0kaguya/ap2kaguya/ap3kaguya/aps3kaguya/bmrkaguya/compressed-bmpkaguya/link2kaguya/link3kaguya/link4kaguya/link5kaguya/link6kaguya/linkkaguya/pl00kaguya/pl10kaguya/raw-maskkaguya/wflmages/mpkmalie/libpmalie/libumalie/mgfmebius/koemebius/mcgnitroplus/npk2real-live/koepacreal-live/nwkreal-live/pdt10real-live/pdt9triangle/medtriangle/wadytriangle/ybunity/assets- `...
0.10
What? You expected some cute 1.0? Too bad! It's just me, modern versioning.
New games
[Applique][120928]Re:birth colony -Lost azurite-[Authoring Heaven][030530]Mama Shibori[Authoring Heaven][031010]The Guts! 5[Authoring Heaven][031226]SayYah! 2003[Authoring Heaven][060721]Onegai Iinchou!![Complet's][011026]Boku No Himitsu Taiken[Complet's][020412]Koi Suru Science[Complet's][030314]Motto! Himitsu Taiken[Complet's][030606]Mama Club[Complet's][031219]Matty[Complet's][040528]Mama Club 2[Complet's][041222]Boku No Natsuyasumi Himitsu Taiken[Complet's][050702]Yagai Gakushuu[Complet's][060224]Mama! Tsuma?[Complet's][070428]Boy Meets Wives[Crowd][971024]X-Change[Crowd][990827]X-Change 2[Crowd][040625]X-Change 3[Fizz][070323]Mashiro Botan[Front Wing][151127]Hatsuru Koto Naki Mirai Yori[Front Wing][130524]Grisaia no Kajitsu[Galette][130628]Santaful Summer[Galette][150626]Lollipop Factory[Hulotte][151127]Yome Sagashi ga Hakadori Sugite Yabai.[Jellyfish][110428]Green ~Akizora No Screen~[Lump of Sugar][051125]Nursery Rhyme[May-Be SOFT][051125]Mono Gokoro, Mono Musume[Mu][040423]Aoiro Rinne[Ricotta][131025]Walkure Romanze More&More[Silky's Sakura][150227]Ochite Iku Niizuma ~Gomennasai Anata... Watashi Mou... demo, Aishiteru~[SofthouseChara][000225]Aoiya Masshigura[SofthouseChara][000922]Wafers ~Ohime-sama wa Kyou mo Kiken deshita~[SofthouseChara][010420]Kaizoku Oukan[SofthouseChara][011026]Mahiru ni Odoru Hanzaisha[SofthouseChara][020712]Alfred Gakuen Mamono Daitai[SofthouseChara][030328]Brown Doori Sanbanme[SofthouseChara][031212]Level Justice[SofthouseChara][040625]Suzukuri Dragon[SofthouseChara][050218]Nangoku Dominion[SofthouseChara][050930]Dancing Crazies[SofthouseChara][060616]Greensvale no Mori no Naka ~Seichou Suru Gakuen~[SofthouseChara][070629]Ouzoku[SofthouseChara][080530]Wizard's Climber[SofthouseChara][090327]Daisounan[SofthouseChara][091218]Shinobi Ryuu[SofthouseChara][100730]Bunny Black[SofthouseChara][110624]Yukioni-ya Onsen-ki[SofthouseChara][120127]Bunny Black 2[SofthouseChara][120928]Mon o Mamoru Oshigoto[SQUEEZ][040730]Nyuujoku Hitozuma Jogakuen ~Ingoku no Yakan Hitozuma Choukyou Gakka (Nibu)[Syrup -Many Milk-][140131]Machi Gurumi no Wana ~Hakudaku ni Mamireta Yuuri~[Syrup -Many Milk-][140131]Nerawareta Megami Tenshi Angeltia ~Mamotta Ningentachi ni Uragirarete~[Whitesoft][150227]Sakura Synchronicity
New formats
aoi/agfaoi/aogaoi/iphaoi/vfsborland/tpf0(internal)cat-system/hg3complets/gdcomplets/vmdcri/afscri/cpkcrowd/cwdcrowd/cwlcrowd/cwpcrowd/eogcrowd/pckcrowd/pkwvcrowd/zbmgpk2/gfbgpk2/gpk2gsd/bmzgsd/gspism/isaism/isglucifen/elglucifen/lpkplaystation/gtfplaystation/gxtscene-player/pmpscene-player/pmwsilky/akbsilky/arcsystem_epsilon/packdat
Improved support for existing formats
cri/hca: fixed sound distortionscri/hca: added support for type 3 and type 4 decoderentis/eri: added support for base imagesentis/eri: added support for falsified bit depthsentis/mio: fixed audio clippingentis/mio: relaxed magic requirementsentis/noa: added checksum verificationentis/noa: added requirement for--noa-key, if it's encryptedentis/noa: added support for BSHF encryptionentis/noa: added support for ErisaN compressionmajiro/rct: added support for external alpha masksmicrosfot/bmp: added support for faux alpha masksqlie/pack: added automatic searching for game keysqlie/pack: improved.exekey retrievaltwilight-frontier/tfpk: improved unknown file naming
Other visible changes
- Added parallel processing
- Redesigned game list (thanks, @Tehoko)
- Improved readablity
- Added search
- Added Japanese titles
- Added VNDB links
- Redesigned README
- Collected important links from sections and moved them right at the top
- Removed useless clutter
- Improved contact information
- Changed
--verbosityswitch to support multiple levels, removed--quiet - Added
--versionswitch - Added
--threadsswitch - Added
--numeric-file-namesswitch (for generic archives with broken file names) - Added basic stats at the end of unpacking
- Readded loop support in output WAV files
- Added
CriPakToolstoTHANKS - Improved naming convention for nameless files
Internal changes
- Added parallel processing: introduced
flownamespace, drastically changed
program control flow - Added support for Microsoft Visual Studio
- Added support for Clang
- Changed build system to cmake, ditched waf
- Changed OpenSSL to be mandatory, removed OpenSSL dummy plugs
- Removed version macros in favor of autogenerated header
- Removed preprocessing from archives in favor of
VirtualFileSystem - Removed
utilnamespace, introducedalgonamespace - Removed
fmtnamespace, introduceddecnamespace - Removed
file_from_*, introducedencnamespace - Reorganized everything in
ionamespace - Replaced
read_u8,read_u16_leetc. withread<T>,read_le<T>and
read_be<T> - Added ability to copy
Files andStreams - Files using Unicode now use BOM (MSVC)
- Removed Log singleton, changed to manual dependency injection
- Added
algo::any - Added
algo::cyclic_ptr, removedCyclicBuffer - Reorganized plugin manager
- Changed tests philosophy (rather than adding immutable files for each
decoder, started writing tests by hand that are prone to refactors, but
dramatically reduce repository size) - Fixed a few bugs that have manifested themselves after testing new compilers
- Many more refactors and new overloads/functions
0.9
Visible changes
- Support for new games:
- [Ammolite] Sweet Switch
- [Appetite] Mama no Okugai Shuuchi Lesson
- [Astronauts] Demonion
- [Atelier Sakura] Shin Hoka no Otoko no Seieki de Harande mo Ii Desu ka...? 2
- [August] Daitoshokan no Hitsujikai
- [Bandai] Oreimo
- [CLOCKUP] Eroge!
- [CLOCKUP] Please R*pe Me!
- [Cattleya] Bijukubo
- [Cattleya] Chijoku Sister
- [Cattleya] Kyouiku Mama to Oba to Oba
- [Cattleya] Miboujin Sanae
- [Cattleya] Okami Misao
- [Cattleya] Onna Zakari
- [Cattleya] Shin Onna Kyoushi Yuuwaki Shinro Shidoushitsu
- [Cattleya] Tsuma no Haha Sayuri
- [Empress] Starless (English ver.)
- [FC01] White Breath
- [Herencia] Kangoku Hime
- [Hot Pink] Gohoushi Nurse
- [Kiss Custom Reido]
- [Kiss Custom Reido] 2
- [Kiss Custom Reido] 3
- [Kiss Custom Reido] 4
- [Kiss Custom Reido] F
- [Kiss Custom Reido] V
- [Leaf] Comic Party
- [Leaf] Inagawa de Ikou!!
- [Leaf] Magical Antique
- [Leaf] Routes
- [Leaf] Saorin to Issho!!
- [Leaf] To Heart
- [Leaf] White Album
- [Lose] Monobeno
- [Purple Software] Chrono Clock
- [Purple Software] Hapymaher
- [Purple Software] Hapymaher W & FD
- [Purple Software] Haruiro Ouse
- [Shangri-La] Akatsuki no Goei
- [Shangri-La] Akatsuki no Goei 2
- [Shangri-La] Akatsuki no Goei 3
- [Studio Ring] Nanami to Konomi
- [Studio Triumph] Netorare Nurse 3
- [Whirlpool] 77
- [Whirlpool] InaKoi
- [Whirlpool] InaKoi Fandisc
- [Whirlpool] JustyNasty
- [Whirlpool] Lunaris Filia
- [Whirlpool] Magus Tale
- [Whirlpool] Magus Tale Infinity
- [Whirlpool] Maikaze no Melt
- [Whirlpool] Meri?Chri
- [Whirlpool] NekoKoi
- [Whirlpool] Ryuuyoku no Melodia
- [Whirlpool] Suzukaze no Melt
- Support for new formats:
- AVGEngine's GXP archives
- CRI AFS2 audio archives
- CatSystem's INT v3 archives
- English patches for Touhou
- FC01's v2.00 MCG images
- Kiss ARC archives
- Kiss PLG archives
- Kiss custom PNG images
- Leaf's .a archives
- Leaf's AR10 archives
- Leaf's CZ10 image archives
- Leaf's GRP masked images
- Leaf's GRP variant that starts with 0
- Leaf's LC3 images
- Leaf's LF3 images
- Leaf's LFB images
- Leaf's LFG images
- Leaf's P16 audio
- Another variant of Leaf's PAK archives + renamed PAK to PAK1
- Leaf's PAK2 archives
- Leaf's PAK2 audio
- Leaf's PAK2 compressed files
- Leaf's PAK2 images
- Leaf's PX images
- Leaf's W audio
- Majiro v2 archives
- Microsoft WAV decoding
- Playstation's GIM images
- Purple Software's CPZ5 archives (two variants)
- Purple Software's CPZ6 archives
- Purple Software's PB3 v1 images
- Purple Software's PB3 v2 images
- Purple Software's PB3 v3 images
- Purple Software's PB3 v5 images
- Purple Software's PB3 v6 images
- Purple Software's PS2 scripts
- XP3 archives with shuffled chunks
- YuRis YPF archives
- Yumemiru Game Maker's DAT archives
- Yumemiru Game Maker's EPF images
- Fixed NWA audio decoder
- Fixed Will ARC preprocessing
- Fixed LEAFPACK file naming
- Fixed Touhou's PAK2 preprocessing
- Added support for manual LEAFPACK keys
- Added support for base images in Majiro RCT images
- Added basic XOR encryption plugin for XP3 archives
- Added support for extra chunks in PNG (previously au refused to decode such images altogether)
- Added support for
timechunk in XP3 archives - Ignored support for unknown chunks in XP3 archives (previously au refused to decode such archives altogether)
- Corrected AliceSoft
--fmtswitches in GAMELIST - Renamed 'extra/' directory to 'etc/'
Internal changes
- Important renames
- Split
util::intoutil::andalgo::, most of stuff was moved intoalgo:: - Removed
pix:: - Moved everything from
pix::tores:: - Renamed
GridtoImage - Renamed
.hhto.h
- Split
- Refactors to
ionamespace- Renamed
IOtoStream - Renamed
BufferedIOtoMemoryStream - Renamed
FileIOtoFileStream - Moved
Fileclass toionamespace - Added support for method chaining in
Streams - Introduced
io::pathandio::filesystem- Changed
File::namefromstd::stringtoio::path - Changed
ArchiveEntry::namefromstd::stringtoio::path - Renamed
File::nametoFile::path - Replaced now useless proxy methods from
Filewith calls on itspath
- Changed
- Improved performance of
Streamreading and writing - Hidden
write/read()methods that receive out params withprotected, added_implsuffix - Removed
Stream::write_from_io() - Fixed
FileStream::seek()not throwingEofError
- Renamed
- Formalized audio support
- Introduced
Audioclass - Introduced
AudioDecoderclass - Introduce
compare_audio() - Removed
util::file_from_wave(many parameters) - Added
util::file_from_audio(const Audio &) - Remove --loops support from THBGM decoder (TODO: offer proper loop support for everyone)
- Introduced
- Added Huffman decompression routines
- Added MD5 routines
- Added
Image::paste()method for merging images - Added
VirtualFileSystem(it's super slow for now but makes many things convenient) - Added
algo::binaryandalgo::strfor various popular operations - Added
f32andf64aliases - Added
ptrclass - Added argument forwarding to
register_fmt - Added fallback archive entry names
- Added more comparison operators to
bstr - Added support for negative offsets in
bstr::substr() - Changed to absolute paths for input files (this gets around an exotic problem)
- Fixed memory leaks in text encoding conversions and JPEG decoder
- Fixed unnecessary executable relinking
- Fixed valgrind warnings
- Fixes for Cygwin
- Greatly simplified naming strategies
- Implemented PNG error handling
- Implemented older MersenneTwisters
- Improved
CallStackKeeperdesign - Improved
CyclicBufferperformance - Improved
Imagepixel access performance - Introduced dummy
BaseDecoderwith empty methods to reduce code duplication - Reduced Boost dependencies across code
- Reduced code duplication in base decoders
- Reimplemented
checkstylescript in Python, added new checks - Removed
VersionRecognizer(bloatware) - Removed
compat/dir - Renamed
etc_dirtoassets_dir - Reworked tests
- Significantly improved
Imagecomparison performance - Simplified ShiinaRio plugin creation
- Updated waf and catch to newer versions
- Many other refactors + tests
0.8
Visible changes
- Support for new games:
- [3rd Eye] Sorcery Jokers
- [Erectlip] Kyonyuu seido kaichou
- [Erectlip] Mahou Shoujo Iris
- [Erectlip] Mahou Shoujo Ixia
- [Erectlip] Sensei Ano ne...
Netorare Shoujo to Houkago no Taiiku Souko - [Erectlip] Little†B☆☆☆h
- [Hakudakukei] Jugyou de Ecchi
- [Innocent Grey] Kara no Shoujo
- [Innocent Grey] Kara no Shoujo 2
- [Leaf] Hatsune No Naisho!!
- [Leaf] Kizuato
- [Leaf] Shizuku (renewal DVD)
- [Leaf] Tasogare
- [Leaf] Tears to Tiara
- [Liar-soft] Kusarihime
- [Lilim Darkness] Angels Blue
- [Lilim Darkness] Dark Blue
- [Lilim Darkness] Hunting Blue
- [Lilim Darkness] Innocent Blue
- [Lilim Darkness] True Blue
- [Lilim Darkness] Wedding Blue
- [Meteor] Chokotto Vampire
- [Momojiro Gekijou] Shojo Mama
- [Nitroplus] Muramasa
- [Parfum Soft] Isshoni chapuchapu time
- [PeasSoft] Iinazuke wa Imouto-sama!
- [Propeller] Tekoire Princess
- [silica-gel] Majime to Sasayakareru Ore wo Osananajimi no Risa ga Seiteki
na Imi mo Komete Kanraku Shite Iku Hanashi - [Tarte] Hinatabokko
- [Team Shanghai Alice] Upcoming TH145 English patch
- [Unison Soft] "The idol is a vampire?!"
- Support for new formats:
- Unencrypted TFPK archives
- (partial) CRI's HCA audio
- 8-bit JPEG images
- ast ARC1 and ARC2 archives
- ActiveSoft's ADPACK32 archives
- ActiveSoft's ED8 images
- ActiveSoft's EDT images
- Amuse Craft (Softpal)'s PAC archives (two kinds)
- Amuse Craft's BGM files
- Amuse Craft's PGD GE v2 and v3 images
- Amuse Craft's TGA-based PGD images
- GNU's gzip archives
- Innocent Grey's IGA archives
- Innocent Grey's PACKDAT archives
- Leaf's BBM images
- Leaf's BJR images
- Leaf's GRP images
- Leaf's KCAP archives
- Leaf's LAC archives
- Leaf's LEAFPACK archives
- Leaf's PAK archives
- Leaf's LF2 images
- Leaf's older KCAP archives
- LiarSoft's LIM 16-bit images
- Lilim's 32-bit ABM images
- Lilim's 8-bit ABM images
- Lilim's AOS archives
- Lilim's DBM images
- Lilim's DOJ scripts
- Lilim's DPK archives
- Lilim's DWV audio files
- Lilim's older AOS archives
- Lilim's script files
- PSP GPDA archives
- (partial) Shiina Rio WARC archives
- Shiina Rio's OGV audio files
- Shiina Rio's S25 images
- Touhou's BGM files
- TrueVision's TGA images
- adv dat archives
- encryption support in Majiro's RCT images
- Changed GAMELIST
- Reduced font size
- Centered the table
- Changed colors
- Changed release dates to use full year
- Corrected company for TH12.3
- Fixed sort order
- Fixed invalid --fmt switches
- Fixed Touhou audio marked as not supported (it is)
- Enhanced CLI output
- Added ASCII logo!
- Added Github and IRC links
- Added showing possible values if user supplies bad --switch value
- Added
-lalias for--list-fmt - Reworded help
- Fixed
--fmtenumeration not being hidden from regular CLI help
- Change archive unpacking to continue unpacking even if one of files fails
- Changed
--fmtnaming to namespaces - Removed excessive blank lines
Internal changes
- Split
ArchiveDecodersunpacking into two phases:read_meta()and
unpack_file()(so that callers can select what to unpack) - Simplified registering linked decoders
- Rename
_internalto_impl - Added
GeneralErroras a base class for all exceptions - Added
Grid::apply_palette() - Added
Grid::flip_horizontally()(renamedfliptopflip_vertically) - Added
Palette::at() - Added
bstr::at() - Added
bstr::capacity() - Added
bstr::empty() - Added
util::CyclicBuffer(for LZSS and the like) - Added
util::VersionRecognizer(not sure if want) - Added
util::Benchmark - Added
util::pack::zlib_inflate(io::IO) - Added copy constructor for
Palette - Added data constructor to
File() - Added new
pix::Formats - Added separate exception for EOF problems
- Added support for raw deflate and gzip along zlib
- Added few useful general tests
- Changed
bstrto useu8 - Changed
Registryso that it is usable in tests - Changed style to use more
consts - Changed postprocessing to respect
--no-recurseflag - Changed
std::unique_ptr<T>(new T)tostd::make_unique<T>(...) - Changed
std::shared_ptr<T>(new T)tostd::make_shared<T>(...) - Changed
util::file_from_samples()to accept bits per sample rather than
bytes per sample - Fixed
Gridreferring to unknown palette colors - Fixed
bstr.substr()in corner cases - Fixed
.gitignore - Fixed
virtualmethods that shouldn't be virtual - Fixed word wrapping in
ArgParser - Fixed
seek()onFileIOfailing silently - Fixed variadic functions no longer use references, which apparently is UB
- Removed
bool recurseparameter fromunpack() - Improved performance of
BitReadera little bit - Improved performance of creating
Grids fromBGRA8888data - Improved pixel reading in
GridandPalette - Improved PNG saving performance
- Simplified collecting input file paths
- Refactored / fixed / improved performance of a few decoders
- Split
fmt::touhounamespace intofmt::twilight_frontierand
fmt::team_shanghai_alice - Moved recursion limiter to
util
0.7
Visible changes
- Support for new games:
- [Alice Soft] Kichikuou Rance
- [Alice Soft] Atlach-nacha
- [Alice Soft] Dr. Stop!
- [Alice Soft] Ningen Gari
- [Alice Soft] Toushin Toshi
- [Alice Soft] Zero
- [Alice Soft] Rance 1 - Hikari o Motomete
- [Alice Soft] Rance 2 - Hangyaku no Shoujo-tachi
- [Alice Soft] Rance 3 - Leazas Kanraku
- [Alice Soft] Rance 4 - Kyoudan no Isan
- [Alice Soft] Rance 4.1 - Okusuri Koujo o Sukue!
- [Alice Soft] Rance 4.2 - Angelgumi
- [Alice Soft] Rance 5D
- [Alice Soft] Rance 6 - Zeth Houkai
- [Alice Soft] Tsuma Shibori
- [Alice Soft] Sengoku Rance
- [Alice Soft] Alice 2010 (+ all games from that release)
- [Black Lilith] Ore to Saeko-san to Netorare Mail
- [Cherry Soft] Heroine
- [Cronus] Caliz
- [Cronus] Fruit Punch
- [Cronus] Kaikan Senshi Busty
- [Cronus] Nursery Song
- [Cronus] Sweet Pleasure
- [Cuffs] Sakura Musubi
- [Empress] Closed Game
- [FC01] Suigetsu
- [FC01] Mizukabe
- [Fuguriya] Sonohana 17
- [Latte] Imouto Senbatsu Sousenkyo
- [Latte] Dainikai Imouto Senbatsu Sousenkyo
366ninme no Imouto Icha Love Nijitsudan - [Libido] Girl Friends
- [Libido] Fifteen
School Girls Digital Tokuhon - [Libido] Libido 7
- [Libido] Houkago Mania Club
- [Lump of Sugar] Itsusora
- [Parasol] Yumekoi
Yume Miru Mahou Shoujo to Koi no Jumon - [Pita Fetish] Gokkun! Onii-chan Milk
Punipuni Oppai na Imouto to - [Root] PARA-SOL
- [Sei Mikaeru Joshi Gakuen] Sonohana 18
- [Tanuki Soft] Bishoujo
- [Tanuki Soft] Shoujo Kyouiku
- [Tanuki Soft] Shoujo Ramune
- [Tanuki Soft] Tonari no Puu-san
- [Tryset] Shin Yarasete! Teacher
- [Waffle] Tsugou no You Sexfriend?
- [Waffle] Gakuen de Jikan yo Tomare
- [West Vision] OL Gari
Nureta Office - [West Vision] Innyuu Kazoku
Boku to Haha to Ane to Imouto to - [West Vision] Kyonyuu Gokuraku Seminar
- [West Vision] Nyuuki Saisai
- [West Vision] Futago Reijou
- [Will] Tsuma Youji 1
- [Will] Tsuma Youji 2
- [Yurin Yurin] Sonohana 14
- [Yurin Yurin] Sonohana 15
- [Yurin Yurin] Sonohana 16
- Support for new formats:
- Libido unencrypted ARC archives
- Libido EGR image archives
- Libido MNC images
- Libido BID archives
- Cronus PAK archives
- TACTICS ARC archives
- XP3 mixed XOR encryption
- Cherry Soft MYK archives
- Alice Soft 16-bit PMS images
- Alice Soft VSP images
- Alice Soft DAT archives
- Alice Soft alpha-onlY QNT images
- FC01 MRG archives
- FC01 ACD masks
- FC01 MCG images
- FC01 MCA image archives
- Majiro v3 archives
- Majiro RC8 images
- Majiro RCT images
- ENTIS lossless Huffman images
- ENTIS lossless gamma images
- ENTIS lossless Nemesis images
- ENTIS lossless PCM16 audio
- ENTIS lossy DCT audio
- ENTIS lossy DCT LOT audio
- ENTIS unencrypted NOA archives
- GS DAT archives
- GS PAK archives
- GS images
- Will WIPF images
- Will ARC archives
- GLib2 another encryption
- GLib2 JPEG-wrapped PGX images
- Wild Bug WBP archives
- Wild Bug WBM images
- Wild Bug WWA audio
- Wild Bug WBI script files
- Nekopack4A archives
- West Vision SYG images
- Microsoft uncompressed BMP images (this one doesn't concern end users too much)
- Fixed iterating over directories
- Fixed missing CLI switches from GAMELIST
- Added
--quietoption - Added company and release info to GAMELIST
- Sorted GAMELIST by company and release date
- Added encoding
<meta/>to GAMELIST (should fix misrendering of some characters in hipster web browsers) - Moved
--fmtlisting to new switch,--list-fmt(I believe this list to be marginal to the end users. If file requires additional switches to unpack, au will tell which--fmtto pass at runtime anyway.) - Improved Fortune Summoners unpacking (no more guesswork)
Internal changes
- Reorganized core fmt classes
- Removed
Archive,ConverterandTransformer - Introduced
IDecoderinterface- Implemented by new base classes:
ImageDecoder,AudioDecoder,FileDecoder,ArchiveDecoder ImageConverters produce plainpix::Grids,AudioDecoderfor time being produceFiles
- Implemented by new base classes:
- Removed
- Fixed bytewise LZSS decompression sometimes truncating a few bytes
- Fixed
BitReadernot working for 32 bit integers - Fixed floating point gcc ↔ MinGW mismatches
- Fixed crash when reporting unknown zlib errors
- Fixed malformed error reporting in EXE unpacker
- Fixed trying to create images with 0 width or height causing segfault from libpng
- Fixed a few functions not using
staticwhen they should - Introduced proper exceptions (centralized in
err.h) rather than abusingstd::runtime_error - Introduced proper test naming and tagging system (7ac574e, ea7ac17)
- Introduced
Log.debug()for development purposes (no morestd::cerr << "herp" << "derp") - Changed
File.has_extension()to work case-insensitively - Changed
structs andclasses to usefinalwhere possible - Changed
checkstyleto log all errors at once - Changed comments to always include one spaces after
// - Renamed
i8,i16,i32,i64tos8,s16,s32,s64(68ed908) - Renamed
soundtoaudio - Moved methods before fields
- Moved different
FileSaverimplementations to separate files - Moved
.ccrelevant.h#includes to the top (19dc0be) - Added position-related methods to
BitReader(size(),tell(),seek(),skip()) - Added support for iterating over
bstr - Added support for iterating over
pix::Gridandpix::Palette - Added fill constructor to
bstr(bstr x; x.resize(y);→bstr x(y);) + used it where possible - Added copy constructor to
pix::Grid - Added ability to mute specific
Loggerlevels - Added ability to log stuff like in
util::format - Added ability to strip
Fileextension - Added convenient mask applying for
pix::Grid - Added information which file fails the test for batch archive tests
- Removed headers from
.ccimplementations (for rationale, see a444d13) - Removed
util::requireandutil::fail(for rationale, see bbab752) - Removed obsolete CXDEC notes
- Removed
BitReader.try_get() - Removed
util::Imagein favor of newImageDecoderpattern +util::file_fromg_grid() - Removed
util::Soundin favor ofutil::file_from_samples() - Collapsed CSS in GAMELIST
- Simplified XP3 decoders
- Simplified G00 decoders
- Simplified
BufferedIO(usesbstrrather thanrealloc)
0.6
Visible changes
-
Support for new games:
- Brightia
- Candy Toys
- Cherry Boy, Innocent Girl
- Cherry Tree High I! My! Girls!
- Doki Doki Princess
- G-senjou no Maou
- Go! Go! Nippon!
My First Trip to Japan - Honoo no Haramase Tenkousei
- Imouto ni! Sukumizu Kisetara Nugasanai!
- Magical Charming! (thanks Nathanael)
- Moshimo Ashita ga Harenaraba
- Touhou 15 - Legacy of Lunatic Kingdom (full version)
- Tsujidou-san no Virgin Road
-
Support for new formats:
- BGI's CBG v2 image decoding
- BGI's DSC format
- Cronus's PAK archives
- Cronus's images
- EAGLS's GR images
- EAGLS's PAK script files
- EAGLS's PAK/IDX archives
- Ivory's MBL dialog file encryption
- Ivory's WADY music files
- LiarSoft's packed OGG sound files
- Libido's ARC archives
- MinatoSoft's FIL image masks
- RealLive's NWA sound files
- RealLive's OVK voice archives
- Riddle Soft's CMP images
- Riddle Soft's PAC archives
- sysadv's PAK archives
- sysadv's PGA images
A few formats mistakenly reported to fully supply game audio. All of these
were fixed by introducing new formats above. -
Changed the way things are logged
- Newlines here and there
- Reduced clutter
- Removed output during recognition phase except required minimum
- Added logging of output path of currently processed files
-
Added colored logs
-
Added
--no-colorto disable colors (useful for piping output) -
Added
--no-recurseoption (useful for testing stuff or salvaging broken
archives) -
Added checksum tests to BGI's CBG decoder
-
Improved Touhou's PAK1 image and sound recognition
-
Fixed fkey-based decryption of QLiE's PACK archives
-
Fixed QLiE's ABMP10 archive unpacking
-
Fixed
WAVdecoded files producing malformedRIFFheader -
Fixed small mistake in README (
--fmt=xp3→--fmt=krkr/xp3) -
Added more file names to Tsujidou-san Jun'ai Road (from ~170 unextractable
files we went down to just 1) -
Removed need to supply
--game-titlein Whale's DAT archive - until now, it
required people to type/paste game title in kanji, which could cause a lot of
stress for all those poor souls usingcmd.exe; now it's placed at the top
of the--file-namesfile (thanks fri) -
Added
--dumpto Whale's DAT archive, which should help in reverse
engineering file names in future games -
Renamed
keytoreal_live(turns out not only Key uses this engine)
Internal changes
- Switched to C++14
- Replaced
TransformerFactorywithRegistry- Rather than keeping one huge file that
#includes every decoder in
existence, decoders now register themselves usingauto dummy = Registry::add<Blabla>("bla/bla")idiom.
- Rather than keeping one huge file that
- Replaced
#includeguards with#pragma once(thanks fri) - Introduced
pix::namespace which replaces most of clutter inutil/Image.hpix::Gridfor image pixel array manipulationpix::Pixelfor channel manipulationpix::PixelFormatfor creatingpix::Gridfrombstrusing given formatpix::Palettefor creatingpix::Gridfrombstrusing given palette- Completely removed
util::colors util::Imageserves only for PNG/JPEG ↔pix::Grid
decoding/encoding
- Rewritten CLI argument handling
- Now everything that uses
ArgParser, rather than adding help that could
be any string, register switch/flags in orderly fashion. - Retrieving switches and flags was improved too.
- Now everything that uses
- Refactored the CLI facade (everything put into
Privin order to declutter
header file from methods that should be private). - Fixed changing
.hheaders not recompiling tests - Added
Logthat replaces#include <iostream>in most random places - Added
util::require()andutil::fail()which replace assertions - Added
T *bstr::end<T>() - Added
bstr::bstr(const u8*, size_t) - Removed
bstr::get<T>(n)(it wasn't clear what it should do) - Added add ability to trim
bstr::str()at zero byte - Added
bool File::has_extension(...) - Fixed memory leak in
io::BitReader - Improve
io::BitReader's performance a little bit - Added LCG (Linear Congruential Generators)
- Introduced
PluginManagerto handle--pluginoption for various formats - Added
scripts/pyutil, whose purpose is to speed up unit test development - Added a bunch of tests for old untested formats (we're still far from 100%
coverage, but things progress; all formats introduced in this version were
covered) - Reorganized file tree for tests
- Moved acknowledgments from
LICENSE.mdtoTHANKS.md(au doesn't use
anyone's code and I learned it's inappropriate to put acknowledgments in
LICENSE.md) - Reorganized
README.md - Added byte-wise LZSS unpacker (like the one used by Allegro library)
- Refactored a few old decoders to use Table idiom
- Refactored test support, improved performance
- Added
scripts/inflateandscripts/deflatefor quick compression of unit
test assets - Improved dependency management in
wscript - Renamed
_guardianto_end - Renamed
catch.hpptocatch.hh(to match.cc) - A bunch of other small changes
0.5
Visible changes
- Added nightly builds!
- Support for new games:
- "ElEMENTS"
- "Daiakuji"
- "Ever 17"
- "Hanahira"
- "Hare Nochi Kitto Nanohana Biyori"
- "Koiimo SWEET☆DAYS"
- "Mahou Tsukai no Yoru"
- "Mebae"
- "Shoukoujo"
- "Pure My Imouto Milk Purin"
- "Sekien no Inganock - What a Beautiful People"
- "Shikkoku no Sharnoth - What a Beautiful Tomorrow"
- "Touhou 15 - Legacy of Lunatic Kingdom" (trial version)
- Support for new formats:
- TanukiSoft's .TAC 1.10 archives
- AliceSoft's AFA format
- AliceSoft's AFF format
- AliceSoft's ALD format
- AliceSoft's ALK archives
- AliceSoft's PM masks
- AliceSoft's QNT images
- KID's CPS images
- KID's PRT images
- KID's WAF sound files
- KID's LNK archives
- RpgMaker's RGSS3A archives
- Reorganized docs:
- Moved build instructions to separate document
- Moved supported game list to separate document
- Removed synopsis from README
- Added link to LICENSE in README
- Credited ALD Explorer 2 in LICENSE
- Changed icons in the supported game list
- Merged "archive" and "file" tables
- Expanded game titles to full form (Sonohana, Touhou, ...)
- Added prefixes to
--fmtstrings (for example,xp3→krkr/xp3) to avoid name clashes - Reformatted format table in
--help - Fixed BGI unpacking (Higurashi no Naku Koro Ni)
- Fixed segfault for certain G00 files
- Fixed EXE reader sometimes picking wrong section
- Improved Touhou PAK1&2 recognition performance
- Enhanced support for malformed EXE files
- Revoked full support for Higurashi no Naku Koro Ni images (I overlooked DSC, I'll include it in the next version)
- Revoked full support for Wanko to Kurasou sound files (I overlooked WAD, I'll try to include it in the next version)
Internal changes
- Added support for regular MinGW (yay, vanilla Cygwin!)
- Organized namespaces
- Wrapped everything with namespaces relevant to filesystem hierarchy
- Wrapped everything with global
aunamespace
- Introduced
bstr(binary strings)- Replaced most of pointer/
str::string/BufferedIObusywork withbstr - Removed
BufferedIO.buffer()in favor ofbstr
- Replaced most of pointer/
- Introduced
util::rangeiterator- Replaced most of
for (int i = 0; i < ...; i++)loops withutil::range
- Replaced most of
- Introduced
util::formatfor string formatting- Removed
util::itosin favor ofutil::format
- Removed
- Simplified OpenSSL dependency management
- Created new classes in
util::crypt, including dummy plugs that throw
runtime errors if OpenSSL was missing at compile time. This simplifies
TransformerFactoryandwscriptmanagement.
- Created new classes in
- Added
i8,i16,i32andi64aliases for signed integers - Added checkstyle script
- Added extended debugging flags for gdb
- Added missing underscores to directory names
- Added printing mismatched pixel positions for failed tests
- Added support for reading JPEG images
- Fixed changes to headers not recompiling dependencies
- Fixed
distbinbuild target so that external tools are optional - Fixed recompiling the whole project after every change
- Fixed stack overflow when a file became stuck in recognition loop
- This is tough to explain, but shouldn't happen in practice anyway.
- Fixed crash for corrupt ZLIB streams
- Improved raw file comparing performance in tests
- Improved readability of
Archive's proxies - Reduced UPX compression aggressiveness
- This results in improved performance of
distbintarget at expense of
about +0.3MB to.zipsize.
- This results in improved performance of
- Removed mild profanities (namely, "crap" and "crappy") from comments
- Removed use of "typedef" keyword altogether
- Removed C-like casts + added build warning
- Switched to uppercase hex constants to uppercase
- Switched letter case to PascalCase for enum values
- Switched to user string literals (
_b) - Renamed
formats/tofmt/ - Renamed
IO::read_until_endtoIO::read_to_eof - Renamed
IO::read_until_zerotoIO::read_to_zero - Replaced
lengthwithsizein variable names (improves consistency) - Replaced
endian.hwith own implementation that uses much fewer macros - Added CXDEC encryption block autodetection (removes big-ass table constants)
- Other refactors
0.4
Major visible changes
- Added smart file recognition (no more conflicts between file formats)
- Added file extension guessing to .exe unpacker
- Added support for Tsujidou-san no Jun'ai Road
- DAT archives
- Added support for Irotoridori no Sekai:
- FVP archives
- NVSG image decoding
- Added support for Sukimazakura to Uso no Machi
- MPK archives
- MGR image containers
- Further Touhou support:
- Added support for merging sliced ANM image files
- Added support for 16-bit TFBM image files
- Added support for files from TH13.5 English patch
- Added support for TH14.5
- Added support for CSV decoding
- Added support for TFWA sound files
- Added support for DDS decoding
- Refactored TFPK decoder
- Added more entries to TFPK file name lists
- Changed TFPK fallback file name
- One
.exeinstead of multiple.dlls
Minor visible changes
- Added automatic recognition of MSK in XFL archives
- Fixed G00 v2 decoding on Linux
- Fixed TLG6 crash on 64-bit Linux
- Fixed encoding for Minato's PAC archives
- Fixed corrupted TLG6 images causing crashes
- Reduced SOTES image false positives
- Reduced SPB false positives
- Added
--renameflag - Improved supported game list in README
- Fixed bits and pieces in README
- Simplified build instructions for Windows
- Changed OpenSSL to be non-mandatory
- Fixed search by folder chopping 1 char from names
- Opened IRC channel! :3 (details in the README)
Internal changes
- Switched from make to waf
- Ported unit tests to Catch framework
- Added aliases for common encoding conversions
- Added experimental binary string support
- Improved
Transformerdesign - Improved color assertions in tests
- Improved code aesthetics (whitespace etc.)
- Reduced line lengths to 80 characters
- Fixed C casts
- Fixed
FileSavertests polluting standard output - Fixed inline namespace traversal for VS10
- Fixed pointer types
- Fixed wrong
reinterpret_castusage - Simplified UTF8 file name handling in tests
- Suppressed output from
FileSaverin tests - Removed unused functions and includes
- Removed file extension from bootstrap executable
- Reduced anonymous namespaces usage
- Added shorter type aliases
- Improved image comparison performance in tests
0.3
Visible changes
- Added initial basic support for TH13.5.
- Improved Touhou palette detection for TH7.5, TH10.5 and TH12.3.
- The project has just one binary now:
arc_unpacker. - Output files appear in the current working directory instead near target files. (For drag'n'drop this doesn't make difference.)
- Instead of
archive.dat→archive.dat~/*, program now producesarchive~.dat/*.
Major changes to project structure
-
Merged
ConverterandArchiveinto common interface,Transformer. -
Improved format-to-format integration:
- Removed
run_converters()- it's now called behind the scenes. - Removed need for manual internal unpacking thanks to
Transformer::add_transformer(Archive *). - Generalized
Transformerregistration (Transformer::add_transformer(Transformer *)).
- Removed
-
Changed
Converter,ImageandSoundso that instead of updatingFile&s, they create newstd::unique_ptr<File>s from scratch (basing on given file name, so that they know how to change the file extension where applicable.) -
Merged
file_decoderintoarc_unpacker. The project has just one binary now:arc_unpacker. -
Merged archive and converter factories into one
TransformerFactory. -
Improved file naming management, covered with unit tests.
-
Improved method visibility (
unpack_internalanddecode_internalwere public 👍). -
Reorganized file structure:
io→io/iofile_io→io/file_iobuffered_io→io/buffered_iobit_reader→io/bit_readerfactory/*→formats/transformer_factoryformats/image→util/imageformats/sound→util/soundendian→util/endian
Thanks to this change
src/looks a lot less cluttered now. -
Pulled the internals from
bin/arc_unpacker.ccinto a newmain()-free class atarc_unpacker.ccso that it can be tested gracefully in unit tests. -
Added OpenSSL dependency because of TH13.5 and its RSA usage. If any more games use things like AES or whatnot, this should prove beneficial in the future.
0.2.1
Visible changes
- Added support for:
- Touhou: ANM, PBG3, PBG4, PBGZ, THA1 (everything except music and TH13.5)
- QLiE: DPNG images
- QLiE: abmp image archives
- QLiE: new decryption routines (恋剣乙女)
- QLiE: v3 archive support (そして明日の世界より)
- MBL: OGG recognition
- Glib: GML, G2, PGX, STX
- PAC archives (Majikoi)
- EX3 images
- LWG archives
- XFL archives
- WCG images
- BGI: sound and uncompressed bitmaps
- Fixed bugged PRS decoding of some UI images
- Fixed decoding XP3 containing files with multiple SEGM chunks
- Fixed possible division by zero in SOTES decoder
- Reduced P archive detection false positives
- Reduced PAK1 and PAK2 false positives
- Added list of available
FORMATs to--help
Major changes to project structure
- Reorganized project structure (
src/formats/arc|gfx|sfx/*→src/formats/company or engine/*) - Switched to
boost::filesystem - Switched to mingw-w64 for non-Cygwin builds
- Renamed
OutputFilestoFileSaverandVirtualFiletoFile
Minor changes to project structure
- Added Mersenne Twister
- Added
BufferedIO::reserve() - Added
IO-based implementation forBitReader - Added
bin2hex.rb - Added generic LZSS decoder
- Archive unpackers accept
VirtualFileinstead ofIO - Decoupled
VirtualFilefromBufferedIO - Fixed minor Makefile bugs
- Improved pixel format constants usages
- Refurbished early C++ code
- Removed
TODO - Removed superfluous
#include <cassert>and#include <iostream> - Removed unused entries in
.gitignore - Renamed
string/toutil/ - Extracted common color manipulation routines to
util/ - Replaced file mode strings with an enum
- Simplified converter registration (it broke DRY real hard until now)
- Simplified file writing
- Updated license with new references
- Updated links appearance in license
FileSaverno longer acquires ownership onFiles