Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.
Zero Tolerance for Disrespect

Leaderboard

Popular Content

Showing content with the highest reputation since 10/01/2026 in Posts

  1. Hi guys, with the help of an AI agent, I decompiled the ea_madden_dump[] binary that is in ea_madden.c written by Aluigi Auriemma. The result is a functional decoder written in pure C for the NFL 07 game files. Here the link for the source: https://github.com/RayneDuarte/Madden-NFL-07-Decompressor
  2. Tool supporting Alan Wake 2, Control, and FBC available: GitHubGitHub - Scobalula/Janitor: An asset extractor for Northl...An asset extractor for Northlight Engine games. Contribute to Scobalula/Janitor development by creating an account on GitHub.
  3. The plugin itself is not against the rules. You can choose whether to purchase the software to run it or not.
  4. This one was really tricky, but I've managed to do it Here's Blender plugin (tested on 5.0, probably works on latest): io_scene_tetsujin28.zip Files that can be imported: .hgm - model files (no references to used textures) .hgt - texture files .vob - objects (structures with embedded model, animations and reference to texture file, some objects contain additional references to models) .kkm - map files (mutiple embedded models as templates and many instances of these models forming one game level geometry) .kkt - exact same as .hgt, but used with .kkm of same name Plugin loads any reference resource if finds them (if you keep file structure straight from T28GOU.DAT everything should be fine)
  5. Hello, I have managed to get the game files and uploaded to AssetStudio to view them, and I found Texture2Ds and Sprites but some of the assets are missing. For an example, there are literally no audio/voice files at all. Then, I noticed AssetStudio doesnt recognize the assets inside a folder called "ondemand" and there are about 2k assets there and I think they are encrypted/compressed. Here is one of the examples of the encrypted assets: Is there a way to decrypt/decompress this type of file? I think those are the remaining assets. If anyone can help me I would really apprecaite it. 5db8fd68-da55-9c4a-c71f-84af76d61103.7z
  6. I found and squashed a bug that was present in the previous version and I have added support for a few more formats. Please give the new version a try and let me know the results. What are you trying to import and where? python .\gekishin_jpkg_v3.py "path\to\*.jpkg" "path\to\extraction\folder"gekishin_jpkg_v3.py
  7. It's Android, so it uses ETC1, and also change your dimensions and offset. The 12-byte header includes dimensions and data size:
  8. try it fmt_nx.py rendershape.bin.nx contains several different skeletons. I then analyzed the file structure in greater detail and discovered direct links: Shape → LOD → Surface → Skeleton In other words, each model in rendershape.bin.nx explicitly specifies the skeleton it requires.
  9. Posted two scripts you can use to get models from this game. Filenames are not existing because they seem to have stripped them from the engine. It is easy enough to locate characters inside level files when sorting by size though.
  10. This morning I added a new .dat loader module to my program, but I did not released it yet.
  11. cracked the index file, finally. several hours of messy work rooting through the EXE in Ghidra and cross-referencing it with a ProcDump of the running game to see what happens in RAM when music is loaded. turns out the encryption key was literallly a line of text disquised as an error: Error 3452: file not found lmao. the index contains a lot of useful information about the soundbanks, like filenames and folder structures for voice lines and SFX. but it's all mostly diegetic stuff. there's nothing that helps us identify the music in the loose .wem files in the root of the pack_sd file. gonna keep rooting around and see if i can figure out where else the music info might be stored. here are the manifests for now. manifests.zip
  12. The new release should only have warnings about the Shad tag, so feel free to share any other log messages you see here, as well as the files they are from. The two PTX texture types you sent should import as Blender images that you can assign in materials, as per the README. Note that for exporting to work, I will likely need to import various fields as custom properties, so don't count on what you import now being exportable later as-is. If you share just the main .exe for the game (I don't need enough files to actually run it), I could try analyzing it to make sure what I have is correct. That would make writing an exporter much simpler.
  13. Well, the first step would be actually getting the files onto your PC for analysis. Do you have a jailbroken PS4? If not, you could try downloading the game from somewhere, though the forum rules likely don't allow explaining the specifics. There are tools on GitHub for extracting PS4 PKG roms.
  14. i found A tool for GE3 https://github.com/pmodel/GE3-Extractor
  15. This is a blog of professional game developer to find aes key and its process.I just created new topic on it by thinking so further healthy discussion will continue in future. Links: https://blog.jamie.holdings/2019/03/23/reverse-engineering-aes-keys-from-unreal-engine-4-projects/
  16. It's an old tutorial written by me 4 years ago: https://ikskoks.pl/tutorial-how-to-get-allegro-passwords/ But today I've updated it with a new frida script that can make getting password even easier than before 😉 https://github.com/bartlomiejduda/Tools/blob/master/NEW Tools/Allegro/allegro_DAT_frida_hook.js
  17. Today I am gonna discuss on how we can reverse engineer the extraction of the game archives, sit back because this is where it starts to get interesting... +==== TUTORIAL SECTION ====+ But how do those files store game assets like 3D Models, Textures, Sounds, Videos and etc... Well, the anwser is simple, they usually bundle them, they pack them close together in their eighter compressed or even encrypted form (Rarely). To understand let's first quickly move into the basics, into how the Computer stores any file at all. DATA TYPES Those are the most frequent Data types: Byte/Character = 1 Byte, so 8 Bits Word/Short = 2 Bytes, so 16 Bits Dword/Int = 4 Bytes, so 32 Bits ULONG32/Long = 4 Bytes, so 32 Bits ULONG64/Long Long = 8 Bytes, so 64 Bits Float = 4 Byte, so 32 bits Double = 8 Bytes, so 64 Bits String = A sequence of 1 Byte Characters terminated with null ("00") Where Bit is literally one of the smallest Data that we can present, it's eighter 0 or 1 but combining those 8 Bits together (Example: 0 1 1 1 0 0 1 1) so we get a whole byte. So, all files literally look like this: Addres: HEX: ASCII: 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0x00000040 2a 2a 20 2a 2f 0a 09 54 61 62 6c 65 20 77 69 74 ** */..Table wit 0x00000050 68 20 54 41 42 73 20 28 30 39 29 0a 09 31 09 09 h TABs (09)..1.. 0x00000060 32 09 09 33 0a 09 33 2e 31 34 09 36 2e 32 38 09 2..3..3.14.6.28. 0x00000070 39 2e 34 32 0a 9.42. This is called a Hex dump, it's essentially a mkore human readable code of binary file that aside the actual Binary data in HEX shows us the Adresses and the ASCII representation for each 0x..0 to 0x..F line. The packed file usually contains compressed data and a small separator/padding between them, hover it doesn't tell us the name and the path of the file we want to com press, whch is a problem. Heck, we don't even know which compression method was used and which "flavour/version" and how the decompressed file should look like... That's where QuckBMS comes to help. QuickBMS QuickBMS has one very specific function I wanna talk about, it's "comptype unzip_dynamic" it supports millions methods and their "flavours/versions". It has also a very fast perfomance and is good for extracting the multiple files out of the package at once. There are also already lots of QuckBMS scripts out there for extracting specific archives, but I'll talk about that later. Compression types As said previously, the block separators/markers are very usefull to identify but turns out most of the compression methods have their own headers and magic numbers, here are few of them: Magic numbers: ZLIB: 78 01 (NoComp) 78 5E (Fastest) 78 9C (Default) 78 DA (Maximum) LZ4: [No Magic Numbers] LZ4 Frame: 04 22 4D 18 (Default) LZW: [No Magic Numbers] LZO: [No Magic Numbers] BZIP/BZIP2: 42 5A 68 GZIP: 1F 8B 08 Practical steps Below is the example of how average QuickBMS Archive extractor looks like, it's also one of my first favourites and the first one, it's designed for extraction of assets from Wolfenstein: The New Order & Wolfenstein: The Old Blood: wolfenstein.bms: open FDDE index 0 open FDDE resources 1 comtype unzip_dynamic endian big goto 0x24 get files long get unk long math TMP = files math TMP - 1 for i = 0 < files endian little get FNsize1 long getdstring FN1 FNsize1 get FNsize2 long getdstring FN2 FNsize2 get namesize long getdstring name namesize endian big get offset long get size long get zsize long get unksize long math unksize * 0x18 math unksize + 5 getdstring unkdata unksize if size = zsize log name offset size 1 else clog name offset zsize size 1 endif if i != TMP get filenumber long endif next i Script summary: Open index + data files Read file count For each file: Read filename Read offset and sizes Skip metadata Extract raw or compressed data Compression logic ConditionAction | size == zsizeRaw copy | | size != zsizeZlib decompress | In ID Tech 5, games have all assets packed inside the .resources files and all of the metadata like name, path, extension, compressed size, decompressed size are in the .index files that means is that we open both files in this way: 1. Setup open FDDE index 0 open FDDE resources 1 open = tells QuickBMS to open files. FDDE = the format ID (arbitrary, just a label). index -> is opened as file 0 resources -> is opened as file 1 comtype unzip_dynamic 2. Loop This sets compression to Zlib dynamic (handles soo many decompressions). endian big This sets reading data in Big-Endian. goto 0x24 Jumps to 0x24 to skip archive header get files long get unk long files -> total number of files in the archive unk -> unknown value (probably versioning or flags) math TMP = files math TMP - 1 TMP = holds files - 1 (Used later to avoid reading an extra value after the last entry). for i = 0 < files The script now iterates once per file entry. endian little The filename block is little-endian, even though the rest of the archive is big-endian. get FNsize1 long getdstring FN1 FNsize1 Reads length of string Reads string data get FNsize2 long getdstring FN2 FNsize2 Another string component get namesize long getdstring name namesize This is the real filename name is used later by log / clog This determines the extracted file name on disk endian big Switch back to big-endian. get offset long get size long get zsize long offset = Where the file data is located in resources size = Uncompressed size zsize = Compressed size get unksize long math unksize * 0x18 math unksize + 5 getdstring unkdata unksize Reads a count (unksize) Multiplies it by 0x18 (24 bytes per entry) Adds 5 extra bytes Skips a block of unknown metadata This is not used for extraction, only skipped to reach the next file entry. 3. Extract the files if size = zsize log name offset size 1 If compressed size equals uncompressed size: File is stored raw log copies data directly from file 1 (resources) else clog name offset zsize size 1 endif clog means compressed log Reads zsize bytes Decompresses using unzip_dynamic Writes size bytes to disk if i != TMP get filenumber long endif Between entries, there is an extra long Probably an ID or index value Not present after the last entry This prevents reading past the table next i Repeats until all files are extracted
  18. Looks like a relatively straightforward tagged format. The UVs and some other attributes seem to be stored as quantized integers instead of floats for some reason. I'll try writing a Blender add-on for the format when I have time. Note that exporting custom files is harder than importing them, as exporting usually requires a more or less complete understanding of the format. And this is assuming you already have a way to unpack and repack the archives these files were from, if applicable.
  19. These are the .P3D files. MediaFireTT
  20. And the mesh data is in the other bigger file, which the texture fits, manually in Model Researcher:
  21. i Found it https://forum.xentax.com/viewtopic.php?t=18923
  22. Thanks a lot, you're a hero, indeed the script worked and the music is playable.
  23. try it updated Project-G1M. New g1t files has zlib 64kb compressed data https://github.com/hearhellacopters/Project-G1M/releases/tag/v1.9.2.4
  24. I'm not seeing TO_BE_DC.PS2 in the sample file? Is that texture 8-bit palettized? Try gray8 first just to vet whether the wrap width is right, and then look for 4-byte palette entries likely near/before/after the image data (often with 80h's in the alpha channel, which actually represents full opacity).
  25. I'm glad you're enjoying them! Regarding the JAM tools, I figured out the format myself, although your work was an important reference. The main changes are in the repacker: it now recalculates the index folder pointers and can add new resources. You can link my versions in your JAM thread; I'd really appreciate it. And yes, please, I'd love to see your PS2 script! The vertex encoding is exactly where I got stuck (they're clearly not simple floats), so I'd be happy to help with the missing part, or compare notes with what I've found so far.
  26. Thank you for sharing the scripts again, much appreciated, going to have fun going through it. It was a throwback seeing the JAM unpacker and repacker😅, was it based on the one I wrote? I see some similarities but you changed the repacker quite a bit, it is much better now. If you don't mind, can I link your versions to the post here on reshax, or would you like to post it? https://reshax.com/topic/1034-leisure-suit-larry-magna-cum-laude-jam-files/ The pc and xbox versions, wgg and xgg respectively, are very similar in structure, the ps2 one changes quite a bit because of the ps2 EE. I already have most of it mapped out, just need to actually write the vertices to file. Let me know if you want the script I have.
  27. I've taken a look at the game decomp which luckily has all the symbols, the topology of .vu0 is all done via GIFTags, check StandardModelOutVu0_PreInit(SKIN_MODEL_CONTEXT) and https://ps2dev.github.io/ps2sdk/gif__tags_8h.html. My noesis script is below. fmt_VU0.py
  28. Do you want help? Friend of mine mugenrei, a modder, deals with game formats and is willing to help if you want.
  29. I couldn't find a working solution for this specific problem on the forum, so I decided to investigate it myself. After experimenting with the file structure and using AI assistance during the development process, I managed to put together a small Python-based extraction workflow that allows Metin2 .EPK / .EIX files to be extracted. I'm sharing it here in case it is useful to anyone else working with Metin2 assets or encountering the same problem. RequirementsWindows Python installed Metin2 .EPK and .EIX files UsageFirst, extract the provided ZIP archive. After extracting it, copy the Metin2 .EPK and .EIX files you want to work with into the same directory as: epk_extractor.py 1. Generate the extraction commandsRun: EPK List Tool.bat The batch file will scan the directory for .EIX / .EPK pairs and generate a file called: list.txt This file contains the Python commands required to extract each archive. 2. Run the generated commandsOpen the folder containing epk_extractor.py. Hold Shift and right-click an empty area inside the folder, then select: Open PowerShell window here On newer versions of Windows, this may appear as: Open in Terminal Open list.txt, copy its contents, paste them into PowerShell and press Enter. The commands will be executed sequentially and the corresponding EPK files will be extracted. 3. Extracted filesDepending on the contents of the archive, the extraction may produce files such as: .GR2 — Granny 3D model files .DDS — Texture files Other files contained within the archive The files are organized into their corresponding output directories. WorkflowMetin2 .EIX + .EPK │ ▼ EPK List Tool.bat │ ▼ list.txt │ ▼ Copy generated commands │ ▼ PowerShell │ ▼ epk_extractor.py │ ▼ Extracted GR2 / DDS / other files NotesThis is simply the workflow I ended up using successfully after not finding a suitable existing solution for my particular case. I am not claiming that this is the only or best way to handle the Metin2 archive format. I am posting it mainly as a practical solution and as a starting point for anyone interested in investigating the format further. If anyone has additional information about the Metin2 EPK/EIX format, encryption/compression, or a more complete way of handling these files, feel free to share it. Hopefully this is useful to someone. epk_extractor.zip
  30. Hey, These appear to be NovaLogic RESOURCE1 archives and quite some research has been invested into them already. The filenames are XOR'd with repeating bytes: 0xAD, 0xDE, 0xED, and 0xAC. Attached you will find two files: AF2_RES_Unpacker.py | This script will extract .RES files Place AF2_RES_Unpacker.py inside the same directory where the .RES files are and let it rip. AF2_LZP1_PNG.py | This script decompresses LZP1 and convert PCX to PNG. Place AF2_LZP1_PNG.py inside the same directory where the .PCX files are and let it rip. Below you will find the research / projects I briefly mentioned before. Source 1: Comanche 3 and Armored Fist 2 Notes Source 2: LZP1 Decompressor + PCX To PNG Converter AF2_RES_Unpacker.py AF2_LZP1_PNG.py
  31. Would you mind sharing that script where you view the animation data?
  32. please sent some voice files here😺
  33. Hello I am trying to view the models for FOTNS LP and it extracts normally but gmd uses a different thing since no other Dragon Engine GMD importer doesn't load it samples https://drive.google.com/drive/folders/1HjstmsXSn1O-sE2Cr6EdZ7vpDV1mpJed?usp=sharing https://drive.google.com/drive/folders/1V3VoUwkhsk9qXPgl9MBkibirDif3e2bK?usp=sharing Update! Blender 4.1 loaded it thankfully!
  34. Modding tools in progress (details in discord, forum thread will be created later). The first ever custom model in DS2. Extracted from the game, modified, and put back into it.
  35. i have too low space i can't unistall anything because i have nothing more than gmod ,lego hp 5-7 and hp dh pt2 and the file of the gmod server are draining me so much space and how i can direct message you?
  36. hello, I'm glad that there are still people trying to document the game's assets. To try to help you, could you tell me more about the files you have? - I currently have models and some character animations - I hope we can share progress
  37. Maybe try to learn from tools that already exists. See the source code shared by other people, analyze what is going on in the code and try to recreate the logic. Here are some examples https://github.com/bartlomiejduda/Tools But to be honest, creating tools is an easy part. 😄 You should really focus on "Step 4" from your list, so basically you should learn how to reverse engineer file formats. Here is a good place to start https://reshax.com/topic/47-reverse-engineering-tutorials-collection/
  38. @DKDave @SgtSweetieBelle Is there a way to repackage the files back to .pack? I'm making a mod with the voices of the characters in Spanish.
  39. So I looked into this again and I'm still stumped. I managed to get a decrypted lib from the iOS version of the game via ArmConverter. I did find a few more hints but nothing I can make sense of. First, the devs refer to the pack files as "pegasus packs". Not sure if they were used in other Jet engine games. The file you're referring to is likely an encrypted SoundbanksInfo.xml file. Also the file names look like Murmur hashes by the const but the function has a that weird 0x61C88647 value use in a way that it is here. . I also have no idea what that string format they are using. Looks like Python but letters in the brackets don't make sense to me. Anyways. here is the lib if you want to play around and spend more time on it. You might get lucky but that's all I got in this sitting. https://drive.google.com/file/d/1Lzuinw7cys6_xgkOiu6Wkc0i8BhRe4Ft/view?usp=drive_link Next steps would be to find a way to attach a debugger to the game but that can be easier said then done.
  40. Thank you for your work! I was also looking into this game. I noticed that some of the files in some of these packs look like they are further compressed or possibly encrypted. Unsure. I included a BT template based on the quickbms script and a small pack with 2 files. One file has a compression flag and the other says it does not (based on the quickbms script) but the files extracted seem to have more packed data, as the files don't have headers like the _sd pack does. Any thoughts? dz_pack.bt pack5.zip
  41. understood all good! This has been an incredible help so far. Thank you so much for everything. do you have any tips and best practices for quickly identifying/organizing files? Any tools that that you like to use or workflows that help the process go by faster? edit: found an app called Eagle that shows tons of metadata and lets you build a database with tags, folders/subfolders, and most importantly lets you playback/scrub through simply by highlighting a file's thumbnail (which is a generated waveform). really incredible for previewing and basic tagging. it isn't perfect but it's really nice and i'm making it work!
  42. oh wow, you're right, it worked! let me get that file uploaded for you...
  43. That is very specific question. Remember that this is "Tutorials" section on this forum. If you want help with PKG archives, you should really ask in "Game Archive" section, if you want help with 3D Models (PCMESH files), you should ask in "3D/2D Models" section etc. But I'll answer your question here as an one time exception. To do any of these stuff you were asking for, you need at least basic programming knowledge. You need to choose some programming language first (Python, C++, C# etc.) and then start learning it. There are some free online courses on YouTube, so you can start with those. Then you need to learn reverse engineering (at least some basics). You can use this topic as a starting point https://reshax.com/topic/47-reverse-engineering-tutorials-collection/ By the way, 6 years ago I have already created a Python script for PKG archives in the past. Yo you can use it as an example https://github.com/bartlomiejduda/Tools/blob/f50af9df0a76db206c889e6a809a47d3c71d0f01/NEW Tools/Spiderman The Movie PKG Tool/Spiderman the movie PKG tool.py There are also some libraries that will help you with creating your own extracting/importing/editing programs, for example ReverseBox https://github.com/bartlomiejduda/ReverseBox
  44. What about android games,what is idealogy to do so?
  45. Well, I mostly use simple WinHex as a hex editor. Language, essentially is any. The most obvious is python for Noesis and Blender, Maxsript for 3ds Max. I would advise taking any ready script, add debugging information outputs there (data, offsets, etc.) and running it on the model. Then open this same model in a hex editor and compare what you see with the information from the script. Large arrays of similar data (vertices, polygons, etc.) are usually clearly visible. But then shamanism begins with the search for patterns and so on. You also need to read about structure of data and its writing to a file (on a PC, as a rule, they are written in reverse order - with the most significant bytes back, 0x1234 will be written as 34 12, the difference between signed and unsigned, etc.). Well, keep in mind that shortened notations are often used, for example, vertex coordinates are often encoded not as 3 float (12 bytes), but as 3 short (6 bytes) with further scaling. There are a lot of nuances, but it's quite interesting 😉
  46. Great, many people will find your tutorial useful.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.