Bobblox21 Posted January 3 Posted January 3 There's this archive made with an open-source game engine called Hatch from Github which uses OpenMania (Sonic Mania mod stuff e.t.c) source code and i can't get to open it using RetroED nor extracting it using RSDK_v5 extracting tools cause it uses the "HATCH" header instead of "RSDK" Sample file: Data.hatch is there a way to decompress these files for dumping the resources like (image, sprites, sound and models e.t.c) cause i found some references here: https://github.com/Axanery/HatchGameEngine https://github.com/Axanery/OpenMania
ikskoks Posted January 3 Posted January 3 Hi. File format looks like this: // header 5 bytes (char) - signature // "HATCH" 3 bytes - version // 01 00 00 // index 2 bytes (uint16) - file count // for each file 4 bytes (uint32) - filename CRC32 8 bytes (uint64) - file offset 8 bytes (uint64) - file uncompressed size 4 bytes (uint32) - data flag // 2 - encrypted, 0 - not encrypted 8 bytes (uint64) - file compressed size // data // for each file x bytes - file data And here's a script to dump and decompress file data. https://github.com/bartlomiejduda/Tools/blob/master/NEW Tools/Hatch Engine/Hatch_Engine_HATCH_script.bms Unfortunately all files with dataFlag=2 are encrypted. If I understand engine's source code corretly, you need original filenames and original file sizes to properly decrypt data. Here's the algorithm to decrypt: https://github.com/Axanery/HatchGameEngine/blob/master/source/Engine/ResourceTypes/ResourceManager.cpp#L172-L232 You can probably hook the game with Frida to get the filenames. 2
ikskoks Posted January 4 Posted January 4 Luckily this "Sonic Galactic" game had debug symbols in "demo 2" release 😄 So it was very easy to create frida hook https://github.com/bartlomiejduda/Tools/blob/master/NEW Tools/Hatch Engine/hatch_engine_frida_script.js And I have 574 filenames already: sonic_galactic_filenames_FINAL.zip 2
ikskoks Posted January 4 Posted January 4 It's possible to get some assets after making use of the filenames I shared above: Here's my implementation of the decryption algorithm: https://github.com/bartlomiejduda/ReverseBox/blob/main/reversebox/encryption/encryption_hatch_engine.py I'm also working on a extractor for this game, but I'll share it when it will be more user friendly 😄 1
ikskoks Posted January 5 Posted January 5 Currently 1394 filenames are known 2025-01-05 01:41:02 - __main__ - line 109 - INFO - ####### SUMMARY ####### 2025-01-05 01:41:02 - __main__ - line 112 - INFO - Known filenames: 1394 (61.76%) 2025-01-05 01:41:02 - __main__ - line 113 - INFO - Unknown filenames: 863 (38.24%) 2025-01-05 01:41:02 - __main__ - line 114 - INFO - All filenames: 2257 Full list available here: https://github.com/bartlomiejduda/Tools/blob/master/NEW Tools/Hatch Engine/Hatch Engine Archive Tool/filelists/sonic_galactic_demo2_filenames.txt 1
Solution ikskoks Posted January 5 Solution Posted January 5 Extractor for data.hatch archive is available here: https://github.com/bartlomiejduda/Tools/tree/master/NEW Tools/Hatch Engine/Hatch Engine Archive Tool 1
ikskoks Posted January 5 Posted January 5 Thanks to anonymous user we have now over 90% of the filenames. 😉 2025-01-05 21:17:54 - __main__ - line 109 - INFO - ####### SUMMARY ####### 2025-01-05 21:17:54 - __main__ - line 112 - INFO - Known filenames: 2039 (90.34%) 2025-01-05 21:17:54 - __main__ - line 113 - INFO - Unknown filenames: 218 (9.66%) 2025-01-05 21:17:54 - __main__ - line 114 - INFO - All filenames: 2257 1
ikskoks Posted January 20 Posted January 20 1 hour ago, Kubatao said: Can you get the scripts? What scripts? What do you mean? 1
Kubatao Posted January 20 Posted January 20 (edited) Can you get the .hsl files? exemple Stage/2_CGZ/Enemies/Crab/CGZCrabCutscene2Spawn.hsl Stage/2_CGZ/Enemies/Crab/CrabBoss.hsl Stage/2_CGZ/Enemies/Crab/CrabDespawner.hsl Stage/2_CGZ/Enemies/Crab/CrabDestroyRect.hsl Edited January 20 by Kubatao
ikskoks Posted January 20 Posted January 20 Tool I shared above can decrypt and extract ALL files from the archive, but some filenames are still unknown, so you'll get names like "file123.bin" instead of "CrabBoss.hsl" You could search for them in "Unknown_Files" directory.
Kubatao Posted January 20 Posted January 20 I don't know how to use this tool, can you share everything you manage to extract?
ikskoks Posted January 20 Posted January 20 24 minutes ago, Kubatao said: can you share everything you manage to extract? No. 24 minutes ago, Kubatao said: I don't know how to use this tool Please read readme file. Example usage is shown there.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now