Leaderboard
Popular Content
Showing content with the highest reputation since 10/29/2023 in all areas
-
Version 1.0.0
860 downloads
Uploading all my tools will take a lot of time, so this is temporary solution. Most of my tools were released on zenhax, and now available with wayback machine. But how to find them? Here is a list of all topics from Zenhax archived by wayback machine, including attachments and inline scripts. Find topic name with search or filter (see "horizon zero" screenshot as example), then copy URL for the list, and open it. This way you can download almost all of my tools. And also all tools/scripts published by others through the years.27 points -
Version 1.0.0
947 downloads
Here is a list of all (or almost all) Xentax topics archived by wayback machine. Find topic name with search or filter (see "spiderman" screenshot as example), then copy URL for the list, and open it. There you can read the whole topic, with instructions and comments. But there will be no attached files. You can get attached files from archive.org - https://archive.org/details/xentax.7z in "attachments" folder. They are sorted by forum number and topic ID. So you have to look into corresponding forum folder (16 = 3d models in this example) and topic folder (20634 for spiderman PS4) - there you can find all files attached to that topic for each post (in there are many).26 points -
Hello everyone. I am ID-Daemon, the reverse engineer. I also made tools for many games. Here's a little FAQ about that. Q: Why your tools are so tricky? A: I like to reverse data. But I don't really enjoy making tools. I prefer to research many games in less time, and make it possible for users to export game data. So maybe my tools are not the best or user-friendly, but they work. Q: Why your tools use .ascii format? A: This format is the best for me. Its very simple, easy to work with, never changing, and at the same time it still has everything needed to export models even from most recent games. Well, almost everything.19 points
-
Dear users, At the heart of our forum is the community, and we're delighted to welcome you here. ResHax.com is the place where people with a passion for development and technology, reverse engineering come together. To make the most of this forum, please follow a few simple steps: Register: If you haven't registered yet, we recommend creating an account. This will allow you to actively participate in discussions and share your knowledge with others. Introduce Yourself: Once you have an account, don't forget to introduce yourself in the "Introduce Yourself" section. We'd love to learn more about you and your interests. Forum Rules: Please read the forum rules to understand how to behave and what is allowed here. This helps us maintain a pleasant environment for everyone. Get Involved: Share your experiences, solve problems, and be a part of the active community. The forum is here for you, and we appreciate your participation. If you have any questions, feel free to reach out to the moderators or admins. Thank you for being with us, and we look forward to engaging in discussions together! Best regards, Your ResHax.com Team18 points
-
FORUM RULES General Rules: In general, please bear in mind the following regulations that pertain to most commercial games (the "Application"), and which it NOT allowed on our forum: Prohibited Actions: Users are not allowed to engage in activities related to cheats, automation software, bots, hacks, mods, or any unauthorized third-party software in connection with the application. Commercial Use: Users cannot use, reproduce, or distribute the Application for commercial purposes. Actions Leading to Violation: Users should not provoke or encourage actions that violate the Application's terms of use and the User Agreement. Additional Rules: No Sharing of Illegal Content: Publicly sharing illegal content is prohibited, and consequences may be enforced. No Warez Discussion: The forum does not support discussions related to cracks, hacks, or illegal activities. Respect Others: Users are expected to treat others with respect and not engage in harmful behavior. No Unauthorized File Uploads: Users should not upload files that belong to others. Politeness: Users are encouraged to be polite and respectful to others. No Adult Content: Posting explicit content is not allowed. Seek Help Politely: When seeking assistance, users should post in the appropriate forums and ask nicely, but rule search first and then ask later is apply. Show Gratitude: If you receive help from someone, it's considered polite to thank them. Avoid Contacting Senior Members: Users are discouraged from contacting senior members via PM for help. English language is a requirement for communication on the forum to ensure better understanding among users from different countries. Use of other languages is not allowed on the forums! Do not share any commercial game assets and do not ask others for sharing game assets. Ask for help with ripping instead. Don't reply to threads here asking for help, by telling the person to join the Discord (or any other website/service) for a tool or script or whatever; instead post a publicly-accessible link or a copy of the script, or directly include the relevant tool as an attachment to your post, but preferably use our Downloads system instead. Before you create a topic in the forums Game Modding, please ensure you name it correctly! For example, [PC] GameName or at least Name of the STUDIO could also work. No generic names are allowed. All topics not following these rules will be removed. If you receive assistance from members here or on the Discord server, please reciprocate by sharing tools and knowledge in the designated section and ensure that you mark the topic as SOLVED. Before you post something use SEARCH first!! Don't sell any mods if you used the Reshax forum to get the tools to make them. This will lead to an instant ban, no questions asked. The rules state that non-compliance with these regulations can lead to instant banning or account deletion. Users are advised to adhere to the rules to avoid consequences.17 points
-
God of War Ragnarok tool is in progress. Allows to export characters with bones/weights. It will be posted here after some testing 😉 The tool currently relies on Hitmanhimself's tool, so assets must be first exported with his tool, and then converted.16 points
-
Hello. I would like to share with you my private tutorial links collection. These are useful topics from Xentax, Zenhax and any other reverse engineering related sites that I was able to find in the Internet. I have put them into categories. You may encounter situation when one tutorial fits to few categories, but it is placed only in the category that it fits most. Also, you may encounter tutorials with "[PL]" mark, these are tuts in Polish language. If you don't understand this language, just skip them. Also be aware that I haven't read/watch some of these tutorials yet, so I can't recommend you which tutorial is the best choice, sometimes I'm still learning new things just like you and on this list you may find tuts that are not very useful for you, so don't blame me for that. 🙂 Just pick your favourite category and start learning. If you are complete newbie, I would recommend to start with tuts from category "Basic knowledge". If you have any other good source of knowledge, you can write a comment below and I will update this tutorials collection. Also remember that those links may be dead some day, so don't blame me for that and just make a copy for private use 🙂 So that's it. Enjoy. 😄 Links to tutorials: Basic knowledge (you should start with these if you are new to reverse engineering) - Definitive Guide To Exploring File Formats - Beginner Learning Materials on Reverse Engineering Video Games - What is a File Format? - Analyzing and Reverse Engineering a Game Archive - Key points to successful hex reading - Overview of game file formats and archives - REWiki - Reverse engineering hints - HOWTO-Reverse Engineering QuickBMS - [TUTORIAL] What is QuickBMS? How to export and import with QuickBMS? - QUICKBMS GUIDE - QUICKBMS GUIDE 2 ZLIB - QUICKBMS GUIDE 3 IF ELSE - Basic BMS Scripting - QuickBMS documentation - QuickBMS crc engine - QuickBMS - Reimporting files in the archives - QuickBMS - Scan all the supported compressions - Example of archive format reversing with QuickBMS (medium) - Practice with archives and quickbms scripts - [TUTORIAL] Making BMS Scripts MultiEx scripting - MultiEx Commander Manual - MultiEx Commander 4.5 YouTube tutorials - MexScript Documentation - Let's MultiEx Encryption tutorials - How to guess basic obfuscations: xor and sum/rot - Reverse simple decryption - Reversing AES Keys UE4 + AES Keys Collection - How To Get PAK RSA Key (Wolcen / CryEngine Games) - Retrieving ZIP passwords from games - the zero skills way - Retrieving ZIP passwords from games - the debugger way - Retrieving ZIP passwords from games using plain-text attack - Hacking Zip Passwords (C9) - Checksum / CRC scanning - Decrypt any vita game (no custom firmware needed) - How Unpack Themida 2.x.x or How Unpack Themida 2.x.x (WXP) - SM Hasher / Murmur3 hash + Wiki + Python implementation - LCG + sources + Cracking LCG + LCG in VC2 - Decrypt unity 3d files with Frida - [Tutorial] How to get Allegro passwords Hash tutorials - [Tutorial] How to restore hashed filenames from archives Compression tutorials - How to recognize the compression algorithms with your eyes - LZMA SDK (binaries + source code + specification) + LZMA Wiki - Bc7 and bc5 decompression and compression - Offzip - deflate/zlib scanning and extraction - ZSTD compression + documentation - Reverse Engineered old Compression Algorithm for Frogger - Oodle Data Compression + Oodle compressor + Oodle wiki page - RLE Compression explained + RLE Wiki + RLE in Python - LZ77 explained + LZ77 encoding + LZ77 decoding + LZ77 in Python - LZSS Compression + LZSS explained - LZ Compression + Open-source LZ Compressors Debugging / Decompilation / Disassembling - Lenas Reversing for Newbies - Reversing Spider-Man 2000 - Real World Decompilation with IDA Pro - IDAPython conditional breakpoints - The Beginner's Guide to IDAPython - Using IDAPython to Make Your Life Easier Part1 + Part 2 + Part 3 - Reverse Engineering with Ghidra - How to Reverse Engineer with IDA Pro Disassembler - How to reverse engineer functions - Debugging “Dust: A Tale of the Wired West” - Reverse Engineering Dust: Uncovering Game Scripts - Reverse Engineering an Xbox360 Game - Reverse engineering C programs - bin 0x10 - Memory Hacking — External Signature/Pattern Scanning Tutorial - Remote Debugging with IDA Pro (Windows) + Connecting host with VirtualBox - Remote Debugging with IDA Pro (Linux) - Basic IDA Python Scripting Hooking / DLL Injection - Simple C++ DLL Injector Source Code Tutorial - Quick and EZ - Dll Injection Explained (how it works + source code) - Manual Mapping DLL Injection Tutorial - Blizzhackers DLL Injection - API Hooking and DLL Injection on Windows - [PL]ReverseCraft #7 - Inline hooks, DLL injection - [PL]DLL INjection by Maciej Pakulski (PDF) - C/C++ Memory Hacking — Function Hooking / Detouring + How Function Hooking / Detouring Works - C++ Detour / Hooking Function Tutorial - [Tutorial] The different ways of hooking - API Hooking with MS Detours + MS Detours 4.0.1 description + source - Hooking tutorials - Inline hooking in Windows - C++ Internal Trampoline Hook Tutorial - OpenGL Hook - MinHook - The Minimalistic x86/x64 API Hooking Library + source on github - DLL Hijacking - [Tutorial] Simplest function hooking with IDA, Detours & C++ - [Tutorial] DetourFunction __thiscall - How to Hook Functions - Code Detouring Guide - Resources About Hooking - [Tutorial] Hooking Java Functions - [TUTORIAL] Hooking Android bytecode with Frida Console Tutorials - PS2 Texture Swizzling - PS1 LibCrypt tutorial + LibCrypt Sectors Mappings + LibCrypt Bible - Gears: A look Inside the Final Fantasy VII Game Engine - Convert Ps3 to Debug 4.21 - Extract Samples and MIDI files from Square PS2 Games - Extracting Xbox 360 game files - Reverse Engineering Xbox360 SaveGame (Dead Space) - Extract + Decrypt 3ds Roms - [HOW-TO] Assembling 3DS Homebrew for Gateway - [Tutorial] How to Decrypt, Extract & Rebuild 3DS|CIA|CXI Files - PS2 Hidden files + this + this + this + IsoBuster + Ratchet and Clank PS2 discoveries + Ratchet and Clank Hidden files extractor + this - PS2 Modding Tutorials + PS2 Modding Tools + PS2 AIO Project - [TUTORIAL] [PS2DEV] An Introduction to PS2DEV and it's History - Racing Lagoon Hacking Deep Dive (Translating PS1 games - tutorial) DOS Tutorials - DOS games reverse engineering guide - DOS file formats / encryptions / compressions etc. - DOS game "Nomad" (1993) documentation and tools Audio - The basics of VGM ripping + VGM Ripping Tools - Common Sound Formats - How to scan audio codecs with ffmpeg - Tutorial on vg-resource - Extract Binary Domain's Music/Sound (CRI .cpk bgm) - Batman Arkham Knight - Extract Soundtrack - Multimedia Wiki (Audio, Video, Codecs) - TXTH files documentation Graphics - Finding graphics - Xentax Wiki - Image file formats - Tutorial : How to edit EA's FIFA PS2 TEXTURE Source code + documentation - PS1 BRender Engine (Harry Potter 1, Harry Potter 2 etc.) - PS1 BuggyBunny (Bugs Bunny) - Python Tools Collection - KAO2_PAK + documentation - J2ME game Stalker - Soul Calibur 3 Reversing Books - Reverse Engineering for Beginners + Reverse Engineering challenges + Compiler Explorer - Game Hacking: Developing Autonomous Bots for Online Games - Reversing: Secrets of Reverse Engineering - The IDA Pro Book, 2nd Edition: The Unofficial Guide to the World's Most Popular Disassembler - Mastering Reverse Engineering - Practical Reverse Engineering - [PL]Gynvael Coldwind Praktyczna inżynieria wsteczna - [PL]Asembler. Sztuka programowania 3D Models - Approaches of Parsing Bone Representations - Noesis tutorial Basic Model - Video tutorials on model formats reversing - Make_obj (C source) - Extracting simple models - Analyzing and Extracting a Game Model - [Tutorial] How to extract bones from any games with Noesis - Sanae3D - 3D format converter - Background Knowledge of Bone Stuffs - Extract 3D models from binary files - Writing an Obj Convertor in C - [crash course] How to get multiple submeshes using Make_H2O - Very Basic model format conversion (Shaiya). - INTEL GPA mesh ripper tutorial + tool (x32,x64,DX9,10,11) - 3ds Ram Dump - [Tutorial] Exploring model formats: 9 Dragon - Noesis tutorial Zlib - Video tutorial on full model format reversing (Planetside) krystalgamer's Lair - Marvel Avengers - Writing a server emulator - Spider-Man 2000 - Save file protection - Spider-Man 2000 - Re-enabling a cheat code - Spider-Man 2000 - Save file content exploration - Spider-Man 2000 - PKR Format - Spider-Man 2000 - Custom File Loader - Spider-Man 2000 - Apple to the Rescue! Mobile (Android, iOS, J2ME) - OWASP guide - OWASP guide crackmes source code (Warning! Big spoilers!) - Beginners Guide to Reverse Engineering Android Apps - [Android] Decrypt unity 3d files with Frida - Mobile Game Asset Download - [PL]Reverse engineering mobile app (Niebezpiecznik) - J2ME Reverse Engineering Capture The Flag - Solving CTF Challenges Part1 and Part 2 - [PL]Capture the flag Tutorials playlist Other - The Ultimate Game Hacking Resource - Low-Level Programming University - 1024bar tutorial - [PL]ReverseCraft blog and ReverseCraft playlist - [PL]Modding tutorials - UE4 games texture replace - nullsecurity.org - crackmes.one - RCE Tools Library - GHB1 - Start Here Beginner Guide to Game Hacking - Ripping Tutorials - Searching text strings using Total Commander16 points
-
I'm gonna share my findings about spiderman 2, 3 and wolverine assets here. So far I made a few first tools for archives. I have a list of assets present and now comparing them. Here some examples: Heres what i found so far: Spiderman 2 (official release v1.05) has about 400k assets. And its the first game of theirs with no names in archive. But luckily we have a list of names in ... Spiderman 3 early build, which also has about 400k assets, with names, but a little different. It has about 300 new assets, and missing about 3000 old ones. So it looks like for some first tests of SM3 they removed most of the map or something, and started adding some new models and map parts. I can see it comparing the lists. Wolverine has only 39k assets built, as everybody know probably, its just a little part of new game for tests. Now i'm gonna dump some models and make tools to convert them. Progress details on discord.12 points
-
Version 1.3.0
284 downloads
Dragon Age The Veilguard tools. Work same as my previous frostbite tools. toc_dav.exe - dump tool Change .ini file parameters: - game path - dump path - selection to dump "ebx", "res", "chunks" or "all" Place oo2core_9_win64.dll from the game next to the tool. Then drop any .toc file onto .exe to dump assets. Or run from command line with 1 parameter - toc file name. Main file is default.toc, voice files are inside subfolders - en.toc and other languages Fb_dav.exe - model tool Takes .MeshSet as parameter. rgz_skeleton.ebx - main universal skeleton for all humanoids. Must be in the same folder. Game has 2 skeletons with this name, you need the one from "techanim" folder, which is bigger. If you need another skeleton, use its name as 2nd parameter. Or rename it to rgz_skeleton.ebx. Tool will try to find chunks automatically. If not, it gives error message with chunk name. Set of smd files - to fix distorted faces They are 2-frame animation files to transform head model to its normal state. fb_strands.exe & fb_strands_c.exe - hair tools Each hair model has .StrandHairResource and .StrandHairSet files, and also a small EBX file (about 5kb in size) next to it which has its parameters, including the initial position. This EBX file is usually called the same, with _strand_model.ebx or _model.ebx in the end of its name. Tool takes 2 or 3 parameters: fb_strands.exe <StrandHairResource> <StrandHairSet> [EBX] First 2 parameters are required, but if you add EBX in the end, it will try to place static part correctly. fb_strands_c.exe is experimental version for curly strands. It looks more or less fine, but not 100% proper, so i'm calling this tool experimental. Later it may be improved. Hairs will be exported as 2 OBJ files (one for flowing, one for static part) with curves, which can be later converted to meshes or particle systems in blender or other editor. OBJ files will have hair groups marked, which can be useful for rendering.12 points -
Version 1.0.0
328 downloads
Tool for FFXVI (Final Fantasy 16) models. So far it must support all (or almost all) models from "chara" folder. Static map parts may also work. Did not test much of the others. Requires 1 or 2 parameters. Usage: FF16.exe <mdl> <pac> 2nd parameter is needed for skeletons. If you don't provide .PAC file, model will be exported as static mesh. The PAC file for character group is in its corresponding "pack" folder.12 points -
I'm going to do tools for it, and release it here on reshax. I plan to support characters and maps, like it was before with FF7 remake.11 points
-
Dear Reshax community, We’re grateful to have you as part of the Reshax family, and we hope you’ve found value in the discussions and resources our forum provides. As you may be aware, maintaining an active online community comes with costs—particularly for hosting and the necessary licenses to keep the forum running smoothly and securely. For almost a year, we’ve been covering these expenses ourselves to ensure the forum remains accessible to all. However, as the community continues to grow, so do the associated costs. We need your support to help cover the expenses for hosting services and licensing fees, which are essential for keeping the forum operational and maintaining its quality. Any contribution, no matter how small, will go directly towards these costs, allowing us to continue providing a reliable and engaging platform for everyone. Your support will help us ensure that the forum remains a place for learning, sharing, and connecting without disruption. We understand that not everyone is in a position to contribute, but if you are able to help, it would be greatly appreciated and would make a significant difference in keeping Reshax running strong. Thank you for being a part of our community and for considering supporting us. Together, we can sustain Reshax as a valuable resource for all. DONATION : https://reshax.com/clients/donations/1-license-and-hosting-cost/ Your Reshax team forever :)11 points
-
10 points
-
Here you can find my tutorial for Horizon Forbidden West. HUGE thanks to daemon for helping me with all this and a few others on discord. Finally we have something that can work efficently. All the tools are provided in the links. Daemons tool can be found on his page in Horizon. Have any questions feel free to ask here on on discord. Tutorial Tool Usage https://sites.google.com/view/sharp-design/tutorials/horizon-forbidden-west-tutorial HFW Animation Tools https://drive.google.com/file/d/1-c4_OEFfKCLzqyqMYME0CRZBlh9Hjiye/view?usp=drive_link CMD context reg https://drive.google.com/file/d/1lrS7KsaNDha_QeajP2XvS5TPImdhbANW/view?usp=drive_link ASCII blender importer https://drive.google.com/file/d/13an1_Ct65NIRbRU436ZkIeeEkLSNpulU/view?usp=drive_link10 points
-
I'm working on a set of tools for Dragon Age Veilguard. So far, i have dump tool to extract all files, all models can be converted. Also i have fixed the usual frostbite distorted faces. Now checking if something needs to be done with unified skeleton or textures, and then tools will be published here.9 points
-
9 points
-
9 points
-
Version 1.0.2
641 downloads
Spiderman 2 (PS5) tool. Models & textures (most of them) supported now Correct INI file for the folder where you have game data files. Be sure that folder name has 'PS5' in its name. Then run some of these commands: 1. spiderman2 99807473A3981A8D - will extract that asset 2. spiderman2 99807473A3981A8D c:\spider\iw - will extract asset into folder with name you specified 3. spiderman2 list.txt - will extract ALL assets in list asset lists you can find in discord you can also edit "list.txt" to give assets any names/folders/drives you want tool will work based on HASHES (not names), names are given for reference9 points -
Good news. Issues with missing objects and incorrect normals were fixed. Now tool is really close to release.9 points
-
This is an archive of the useful list originally from https://forum.xentax.com/viewtopic.php?t=15540, which seemed a fitting first topic for graphic file formats. Some links are broken because they pointed to internal downloads on Xentax :'(, but most work :). ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Fri Nov 25, 2016 2:13 pm TextureFinder 1.3.2 Designed to find textures inside any uncompressed files. Any size, any pixel bit format, any binary file. It only requires that the file be uncompressed. This tool is intended to be used by researchers and developers with a good understanding of bitmap formats. VERSION 1.3.2 is the last one of this first series. Formats implemented so far: TRUE COLOUR (RGBA) FORMATS : 64bits 16x4 48bits 16x3 32bits 8888 24bits 888 16bits 565 15+1bits 1555 12+4bits 4444 08+8bits 8332 08bits 332 06+2bits 2222 PALETTE FORMATS : P8 256 colours P4 16 colours P1 2 colours QUAD FORMATS (alpha channel implemented only in series 2) : DXT1 DXT3 DXT5 TextureFinder 2.1 Newer and better version of TextureFinder. Tile Molester 0.16 Tile Molester, or TM for short, is a program that facilitates the viewing and editing of raw graphics data; that is, graphics contained in arbitrary binary files, where one usually doesn't have initial knowledge about the location and/or format of the graphics. The main area of application thus far has been videogame console binaries. In most cases, these files contain a large variety of data, not just graphics -- sound data and actual game code are two examples. Collections of data in one and the same file may be interspersed in any conceivable fashion, subject to hardware/software-constraints of the intended runtime-environment as well as the decisions made by the producers of the binary (the developers). TM is a kind of visual explorer of such files, in that it allows the file contents to be interpreted and displayed in a multitude of ways. By perusing the file and tweaking the settings of the renderer, the binary data that corresponds to graphics may be made accessible in the way they are intended, and edited to the satisfaction of the user. TiledGGD 2.0.3.0 A generic graphics dumping tool, based on the elusive program GGD TiledGGD - basically it’s GGD (General Graphical Dump tool), with some extra features: Currently working (extra) features: * Support for tiled graphics (tiles of any size) and palettes (tile sizes are restricted, because they need to fit a 16*16 grid) * Copy visible graphics and palette directly to clipboard * ‘Go To Offset’ functionality * Toggle Endianness of graphics and palette separately * Save the entire graphics * Built-in NCGR/NCBR and NCLR support (I’m not using all the data from the files, so there are most likely still some bugs) * Lua plugin support DOWNLOAD TOOLS If you know any other useful programs to search for graphics in files, you can share here. 🙂 ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Sun Jun 18, 2017 3:39 am Rainbow is a tool intended to convert different graphics formats from video games assets to and from user editable images (like png). It currently supports almost every variant of the TIM2 format. The main difference with other great tools like Tile Molester and Crystal Tile 2 is to provide direct support to proprietary graphics formats found in "new generation" consoles, like PS2, PSP, Wii, etc., instead of dealing with just the raw image data. Features The underlying image library has almost complete support to TIM2 texture files usually found in PS2 and PSP games. The app supports multi-layer, multi-clut, swizzled (PSP)/unswizzled TIM2 images with both linear, interleaved palettes, and segments headers eventually extended with custom user data (usually used by programmers). Can open textures in any format supported by the underlying image library. Can open whole folders in search of supported texture formats. All known texture files are then displayed in a list. Can export and import textures in suitable image formats for editing (like png). Any additional information specific to the texture is preserved when exporting/importing (like the TIM2 header data), in order to have a one-to-one correspondence with the original texture. Customizable background color for transparent and semi-transparent images with chessboard like pattern. Finally, Rainbow supports parameters via command line: the first parameter is the name of a texture you would like to open. DOWNLOAD Console Texture Explorer (PSP/PS2) is an application that allows working with PSP and PS2 textures. It helps to minimize manual work during texture resources manual scanning and graphics data research in raw archives. Version: 1.0b Designed and made by: Dageron Year: 2012 ====== Supported platforms: PSP and PS2 Supported formats: any texture dictionaries with 4bpp/8bpp graphics data DOWNLOAD ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Sun Jun 03, 2018 7:04 am Raw texture previewer/converter Download here: viewtopic.php?f=18&t=16461 ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Mon Jul 16, 2018 2:28 am PVRTexTool Download: https://community.imgtec.com/downloads/windows-installer-powervr-tools-and-sdk-2018-r1/ ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Mon Aug 10, 2020 7:29 am Cheat Engine - Graphical Memory View CHEAT ENGINE DOWNLOAD ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Tue Sep 08, 2020 11:52 am AMD Compressonator --> https://gpuopen.com/compressonator/ https://github.com/GPUOpen-Tools/compressonator ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Wed Oct 21, 2020 11:35 am Some new tools are listed here --> https://tcrf.net/Help:Contents/Finding_Content/Finding_graphics ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Tue Dec 15, 2020 6:01 am RAW pixels viewer This application allows you analyze raw image data, you can display memory dumps of frame buffers, video buffers and uncompressed video files. Play with image parameters below to explore world of colors. https://imgur.com/a/ZJQtO8B http://rawpixels.net/ ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Thu May 20, 2021 10:32 am TileShop and ImageMagitek TileShop is a WPF application for Windows that implements ImageMagitek and allows end-users to manage specialized graphics in a modern GUI environment. ImageMagitek is an internal .NET library written in C# to view, edit, and organize common and complex retro videogame system graphics. Emphasis is given to the features most valuable to the common, cumbersome tasks when encountering graphics embedded within binaries without any distinguishable headers or identifiers. Exporting and importing is supported to allow advanced editing features to be performed in third-party image editors that operate on standard PNG. https://github.com/stevemonaco/ImageMagitek ------------------------------------------------------------------------------------------------------------------------ Post by th3ru » Sat Jun 05, 2021 11:33 am Raw Image Viewer module of Kuriimu2. + live preview as you change parameters. - no drag&drop, to be launched from K2, extracts only to png. https://github.com/FanTranslatorsInternational/Kuriimu2 ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Thu Nov 04, 2021 12:25 pm Mumm-Ra's Game Graphics Tool Download: old version -> https://drive.google.com/file/d/1ZeRQcU-cqOO5gdRGV_kgvsrq_jBoCFgH/view?usp=sharing version 96 -> https://drive.google.com/file/d/1kw1YVDzPATMCS5fZYDTiPwosqhGjVpmO/view version 100 --> https://drive.google.com/file/d/1mc8gGTt_O7HpcthqXQfEc30TgV_2f4ze/view ------------------------------------------------------------------------------------------------------------------------ Post by Sharppy » Sun Nov 07, 2021 8:51 am Pixel Reader by Leo2236 Open any file to view it in pixel format Creator Site http://lgt.createaforum.com/index.php ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Fri Dec 23, 2022 4:23 am TextureFinder by Durik256 (Noesis) [updated 2023-11-26] Download: https://github.com/Durik256/Noesis-Plugins/blob/master/tool_TextureFinder.py Original usage instructions: https://web.archive.org/web/20231012104059/https://forum.xentax.com/viewtopic.php?t=26113 ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Tue Dec 27, 2022 6:33 am GIMP - Load Image from Raw Data How to use this functionality: 1. Download GIMP 2.10 2. Change your file's extension to *.data 3. Open GIMP 4. Go to File > Open in GIMP 5. Load your *.data file in GIMP 6. Click "Open" in the new window. ------------------------------------------------------------------------------------------------------------------------ Post by th3ru » Mon Mar 06, 2023 7:47 am PixelDbg - view any type of file as image data, using a number of different formats. Downloads: https://sourceforge.net/projects/pixeldbg/ (source + binaries for Windows and Linux) (originally found on tcrf | not tested personally) ------------------------------------------------------------------------------------------------------------------------ Post by ikskoks » Tue Oct 24, 2023 4:16 am Game Extractor8 points
-
*(test first topic)(orig topic on Xentax) what worked for me: CASCExplorer.exe CASCExplorer.exe File>Open Online Strorage>Diablo IV (Beta) after: select CDN Build> 41428_Win64Client_0_9_0_b wait "Loading" in Explorer select all(or those that are needed) files in: -"Root(Read only)>base>meta>Apperarance" -"Root(Read only)>base>payload>Apperarance" click LMB>Extract> yourFolder After extraction, the folder structure will be preserved. meta file and data file have the same names I made a converter AppToOBJ.exe (I used my 3D library written in pure C#), It opens a meta file and looks for a data file in the specified folder "path with dataAPP" with the same name as the meta file, if this folder is not specified it looks for a data file near the meta file with the same name but as "*_data.app" *(This is a test application, tested on random models, I do not guarantee that all models will work. There will be no further work on this application.) AppToOBJ.exe Zombie.zip8 points
-
Huge thanks to swuforce for the scripts! Use: 1.) Download and istall the autoit: https://www.autoitscript.com/site/autoit/downloads/ 2.) Search the script and paste in "Include (put these files to your AutoIt Include folder)" folder. 3.) Start the game script export-import tool. (some scripts are already out of date) swuforce_scripts_source_codes.zip8 points
-
Asset lists for both PS4 & PS5 versions. Here's how they work: body variants - describe each and every variation of human characters. More than 1000. You can export and combine them to get actual combinations controlled entities - all robots are actially those. Also animals and a few other things. I did not check them all, so some of them are still under question, but all robots are there faces - or heads - self-explanatory outfits - aloy outfits. Hopefully these are all, got them automatically. some may be missing all_assets_ps5 is the main game asset tree partially decoded. It contains useful info about most interesting parts. For example, detailed description of all robots, body variants, and other skeletal meshes For example, if you need a face or outfit, you just use the number from the list. But if you need to get a full robot, you need to search for its code in all_assets_ps5 file to find its model parts, skeletons, helpers, destructibles etc. Note that there's no such thing as complete robot description in the game. Robot is a combination of its "entity", model, and other parts. Some robots use same entity, but a little different model (such as horse and goat). Some use same model, but spawns with different destructible parts. It all can be found in the tree. Same if you need a body combined, search for its code and get codes for all its parts An example spawn setup for a robot: B85 SpawnSetup: Entity ---> 55C 7D Entitycomponent ---> 4E7 D SkinnedModelResource Entitycomponent ---> 55C 43 RagdollComponentResource Entitycomponent ---> B80 3 DestructibilityResource AI context = CONTEXT_ARMADILLO_WALK In this example, setup tells the game to spawn an entity 55C (which is armadillo), with a ragdoll also from package 55C, destructible parts described in B80, and a model from 4E7. Ragdoll - will have physics skeleton. Destructibility resource - will have destructible parts description, or links to where they are. Model will have main skeleton, helpers, and all meshes: 4E7 SkinnedModelResource: Modelpart 4E7 2F Modelpart 4E7 9F Modelpart 4E7 56 .... Modelpart 4E7 6F Modelpart 4E7 1F4 Modelpart 4E7 118 SkeletonHelpers 4E7 11F SkeletonHelpers 4E7 7F SkeletonHelpers 4E7 2BF Skeleton ---> 4E7 0 Here we can see that skeleton, helpers, and all parts are in the same package - 4E7, but its not always like that. hfw_ps4_lists.7ziphfw_ps5_lists.7zip8 points
-
7 points
-
I've run out of ideas. For now I can offer this script for 3ds Max. Can import geometry and UVs for main characters. Everything else can't. Basically, I just found the required offsets and choise its depending on the file name. The path to the file is written in line 50 I still have a long way to go before deciphering the format, so I decided to post this temporary script. List of supported files in the spoiler. AW2_tmp_236.zip7 points
-
7 points
-
Dear Users, We still have some issues with email validations. Please be patient; it's going to be sorted out soon. In the meantime, our staff is approving it manually. Thank you for your understanding.7 points
-
Hi! You may know me from Xentax as I was moderator there and I was helping many people there with reverse engineering stuff. I hope to be a productive member of this community as well. 😄7 points
-
7 points
-
6 points
-
6 points
-
6 points
-
Version 1.0.0
309 downloads
GTS_MDL is the tool for models. Current version extracts static models and textures. Skeletal models also supported, but will be exported static. Car wheels and some other parts will be not in correct positions. This may be corrected with future adding their skeletons and weights. You can convert maps (tracks/courses) with this tool, after you extract the track from PACK file with GTS_Pack tool. IMPORTANT NOTE. The tool extracts the highest LOD of game data. Many car parts are using tesselation. These meshes are marked with "_T" in their name. Thats why they look like they are low detail. But actually those are highest quality meshes. This tech was also used in GT6. Usage: drop model file onto the tool. OBJ & ASCII files will be created. ASCII will have all UV layers. GTS_PACK is the tool to unpack PACK files, which contain tracks. It will hopefully unpack ANY pack from GTS, not just tracks. Thats how it works: Any pack contains a few sections usually 2: SYS and VRAM naturally its data loaded into system and video memory these sections have names after unpacking, you will see all of them in subfolder then you must know that the usual model files are combined data for SYS and VRAM so to make it work, you have to MERGE 2 parts of the PACK into one for example you have world.sys & world.vram merge them (sys first) and then model tool will convert it You can merge files via any tool you have for it, or windows command. For example: copy /b WORLD.SYS + WORLD.VRAM WORLD6 points -
Horizon Forbidden West tool. There are versions for PS4 and PS5. Extracts all (or almost all) characters/robots with skeletons, animations and textures, also static meshes. h2_ps4.7ziph2_ps5.7zip6 points
-
Tool v1.2 posted. Work is not finished, i'm looking into getting custom characters now. Also maybe i can get real hairs later. Textures not supported yet, but they can be extracted with tools for other frostbite games.6 points
-
Version 1.0.0
97 downloads
fcp_unpack.exe - unpack .fat/.dat pairs. Drop .fat onto the tool. It will unpack all files. It will search all .XML files located in the same dir for names. Names for all files in big primal_main package is here - https://mega.nz/#!IZYlBSKJ!gjrLniO4goeCFlSoQQk_PqhLEGcxW0dd7nH2QqOVcfs You can go to current dir, and run the tool from somewhere else and specify FAT file somewhere else. So you can place everything in 3 different dirs if you like: 1. dir with the tool 2. dir with fat/dat pair 3. current dir where unpacked files will go (also must have xml files for names) fcp_pack.exe - repack .fat/.dat pairs. Just run it in the dir where you have files to pack. oasis_fcp - modified "dunia tools" strings converter for Far Cry Primal 1. Convert BIN to XML as usual 2. Find line with 0xAEE923DE code and delete it. (This new format somehow has 1 section without lines in it. This is causing the old tool to fail. Maybe it's needed or something, then I'll have to find a way to handle it.) 3. Make changes you need 4. Convert file back to BIN 5. Add "table_fcp" table to the end of the file (This can be done in any hex editor or commander tool, or with command line such as "copy /b oasis.bin + table_fcp oasiswithtable.bin") 6. Pack oasis file into FAT/DAT with my packer tool. Important note. Patch.fat/dat is loaded before patch_sound.fat/dat so you have to find some other package to replace text, or remove old file from patch. I did this by finding the file hash in patch.fat and changing it. The hash is (F3 F8 E3 5D 29 FD BD F2) for english file. Changing any byte here will "mask" the file so game won't find it. Also if oasis file will be changed, you need to get the new table from the end of original file. oasis_fc4 - strings converter for Far Cry 4 Same for FC46 points -
Zenhax is alive, at least it has returned as read-only. https://zenhax.com/index.php.html6 points
-
6 points
-
Dear users, I have implemented additional security and spam protection measures. Additionally, in the coming days, I will transfer NS to Cloudflare and activate some advanced WAF policies. Therefore, the forum will be inaccessible for some time during this change. Admin6 points
-
Update 2.00 - Alan Wake 2 *.binFBX Blender Addon added rigged skeleton support, including non-human meshes (let me know if you get anything unexpected, still rough around the edges!) added support for some other meshes i can't remember more debug logs for anyone interested in the format died and came back to life Roadmap material generation proper reverse engineering of mesh file (every mesh file being supported without manually finding offsets) mesh/submesh replacing (might be coming the soonest) io_scene_binfbx.zip6 points
-
Hey people, I'm a mid 30 gamer, hobby Game Dev, Professional Software Dev. I reverse engineer game assets in my spare time as an alternative to puzzles. When it comes to reverse engineering, I'm not interested in making hacks or stealing assets or showing off, but purely in game preservation and remake purposes. So I reverse engineer either for my own purposes (OpenRA, OpenKrush, OpenE2140,...) Or for free for others who need help to start their own game remake (Emperor battle for Dune, Future Cop LAPD, Hellgate London, CNC Generals 2 Beta, ...). I'm willing to help anyone who is dedicated enough to really get a game remake going, and I'll reject helping anyone who just want to look at stuff if it takes me more then an hour (limited time, lot of real life, already a bunch of projects to work on). Besides that I'm always open for talk about game Dev, making engines, writing renderers. I'm also a full time Linux user and skilled with web development as well as Linux Server Administration. I won't be very active here, so if someone wants to contact me, write me a PM or better look me up in discord directly for a chat 🙂 Hope to see this community rising :)6 points
-
(Little preamble:) Unsure if I should post each archive format separately... I'll start with this one, as I have it best described atm. I reversed bunch of other audio-related formats of Glacier 1 games so I plan to slowly put them all here. Take this as an appetizer 😛 Streams files of Glacier 1 games can be read on their own, they contains all of the required data. It should actually be read before any scenes when someone wants to do anything audio-related to have best support, unlike older Glacier 1 games which had streams.wav. Data in file can be separated into following sections, some have clear indices some can be implicitly inferred: - header - block of WAV data (also contains LIP-encoded segments in some data, current exact structure of these is unknown...) - block of WAV headers (different format than headers in *.WHD files, is much simpler and more concise) - file name table (file names match those in *.WHD and *.SND files, there are some extras though contained within this file so this is not full subset!) - records table (start marked in header along with records count) Block of WAV data seems to be aligned on 0x100 boundary (which coincidentally seems to also be size of header and offset to block of WAV data...). Rest of the file does not seem to have any specific alignment. Any WAV data may be encoded in LIP segments which have variable length. Header of the LIP chunks seems to have size of 0xF00 or 0x1000 (with first header containing 'LIP ' magic). Each record seems to contain a field which can be checked to see if data contains LIP segments or not without the need to rely on comparing magic of each data block. For distance-based records, you will have to look into master record to see if LIP encoding is used. There may be multiple LIP segments in the data block, but only first one has magic in first four bytes. Due to variable data length, we have to find out the right size of the LIP segment first before parsing. It seems to appear roughly every ~4 seconds, but naive formula of `average byte rate * 4` just roughly yields what the LIP segment is. Therefore, there is some guessing work that has to be done on the algorithm side to extract data properly. If anyone could help with reversing these LIP segments, it would be great! They do not seem to correspond to speech necessarily. Current detection method for LIP segments relies on the fact that archive is aligned, we know roughly where the offset should be and that we can calculate exact size of each data block (next block offset - current block offset). There is also additional observation to be made that nearly all LIP segments seem to have around half of their data filled with zeroes. We can also notice that when we subtract real data size, aligned on 0x100 boundary, from whole data block size, we get amount of bytes belonging to LIP segments. We can then calculate from this size amount of LIP segments in the data block. There may be only one such segment (calculated size of all LIP segments is <= 0x1000), which does not require us to do any magic - we just have to skip past the header and read real data right after it. Note that the size of the block may be 0xF00 and not 0x1000 so <= and skipping whatever offset you get is probably best course of action until the segments are bit better understood. If there are more segments, we can proceed with calculation of segment size (as the data is interleaved in a way described above). As mentioned before, we roughly know when each of LIP segments appears in the audio file (it is roughly equivalent to 4 seconds, leaving last block unaligned most of the time with smaller size). We should try to pattern match buffer of size 0x780 filled with zeroes, masking each found offset with ~0xFFF (which will left-align on 0x1000) and taking closest offset to the one we predicted. We then read in minimum from "data block bytes left to read" and this "found LIP segment offset", skip 0x1000 bytes to get "divider offset" for the encoded block and copy each part of the segment into its own buffer. In the end, we are left with complete LIP data and complete WAV data. Block of WAV data is organized in such a way that it has all non-distance-based entries at the beginning and all distance-based entries at the end. There is no clear block of LIP data, it seems to be mixed randomly in-between all of the entries so no reliable distinction in the block. Distance-based entries point to same data offset, there are always exactly three such pointers (2 defined in *.WHD which have their copy in *.STR file also, 1 is only defined in *.STR file). There cannot be other number of "duplicates" pointing to same data offset than 1 (none) or 3 (distance-based entry, 1 for master and 2 for near/far data). Third entry we mentioned is STR file only, it is the true data definition used by the sound graph. If LIP data is present, master record has appropriate flag set. Note that master record should not really be used for other things, as its parameters are not exactly the same always and correct ones are located directly in the entry. TODO - add information about distance-based records structure, it is also interleaved... Due to all this, recommended way to get to the actual data is to pre-calculate all individual WAV data block sizes and resolve LIP segment sizes for each record along with detecting which records are distance-based. TODO - add parsing process used by Glacier 1 Audio Tool which seems to have correct export Note that format information of data, along with data sizes, offsets, names, etc. are all the same as one can find in their equivalent records in *.WHD files. So there is no need to reference *.WHD files for any sort of information for extraction of the *.STR files (unlike older Glacier 1 games). Below are simple C++ headers which should help anyone interested to get started with the file format I hope! V1 is for Hitman: Blood Money V2 is for Kane & Lynch: Dead Men and Mini Ninjas V3 is for Kane & Lynch 2: Dog Days (TODO - missing information+header!) // // Created by Andrej Redeky. // SPDX-License-Identifier: Unlicense // // Extended format information: https://reshax.com/topic/27-glacier-1-str-file-format // #pragma once enum class STR_LanguageID_v1 : uint32_t { Default = 0, English = 1, German = 2, French = 3, Spanish = 4, Italian = 5, Dutch = 6 }; struct STR_Header_v1 { char id[0xC] = {'I', 'O', 'I', 'S', 'N', 'D', 'S', 'T', 'R', 'E', 'A', 'M'}; // always "IOISNDSTREAM" uint8_t unkC[0x4]; // always seems to be a sequence 09 00 00 00 uint32_t offsetToEntryTable = 0; // points at the STR_Footer, right after string table ends uint32_t entriesCount = 0; // same as number of STR_Data entries in STR_Footer uint32_t dataBeginOffset = 0x100; // offset to beginning of data probably, but it is like this even for PC_Eng.str which does not have such size and has no data... uint8_t unk1C[0x8]; // always seems to be a sequence 00 00 00 00 01 00 00 00 STR_LanguageID_v1 languageId = STR_LanguageID_v1::Default; // specifies which language data is contained within the archive }; enum class STR_DataFormat_v1 : uint32_t { INVALID = 0x00, PCM_S16 = 0x02, IMA_ADPCM = 0x03, OGG_VORBIS = 0x04, DISTANCE_BASED_MASTER = 0x11 }; // beware that this is really 3 different headers, as there is no padding... didn't know how to name things so left it like this for now.. struct STR_DataHeader_v1 { // PCM_S16, IMA_ADPCM, OGG_VORBIS and DISTANCE_BASED_MASTER have following bytes STR_DataFormat_v1 format; // specifies how data should be read uint32_t samplesCount; // samples count uint32_t channels; // number of channels uint32_t sampleRate; // sample rate uint32_t bitsPerSample; // bits per sample // all PCM_S16, IMA_ADPCM and DISTANCE_BASED_MASTER have following bytes on top uint32_t blockAlign; // block alignment // all IMA_ADPCM have following bytes on top uint32_t samplesPerBlock; // samples per block }; struct STR_Entry_v1 { uint64_t id; // probably some ID, is less than total entries count, does not match its index uint64_t dataOffset; // offset to beginning of data, beware of the distance-based records which alias the same index! uint64_t dataSize; // data size uint64_t dataHeaderOffset; // offset to table containing header uint32_t dataHeaderSize; // size of STR_DataHeader_v1 (unused fields from the structure are left out) uint32_t unk24; // unknown number uint64_t fileNameLength; // length of filename in string table uint64_t fileNameOffset; // offset to filename in string table uint32_t hasLIP; // 0x04 when LIP data is present for current entry, 0x00 otherwise uint32_t unk3C; // unknown number uint64_t distanceBasedRecordOrder; // if 0, entry is not distance-based, otherwise denotes data order of individual records in data block (or is simply non-zero for master record) }; enum class STR_LanguageID_v2 : uint32_t { Default = 0, English = 1, German = 2, French = 3, Spanish = 4, Italian = 5, Dutch = 6 }; struct STR_Header_v2 { char id[0xC] = {'I', 'O', 'I', 'S', 'N', 'D', 'S', 'T', 'R', 'E', 'A', 'M'}; // always "IOISNDSTREAM" uint8_t unkC[0xC]; // always seems to be a sequence 09 00 00 00 XX XX YY YY 00 00 00 00 where XX XX changes with language and game and YY YY is same for a game (Kane & Lynch: Dead Man has this sequence E1 46, Mini Ninjas has this sequence 4C 4A) uint32_t offsetToEntryTable = 0; // points at the STR_Footer, right after string table ends uint32_t entriesCount = 0; // same as number of STR_Data entries in STR_Footer uint32_t dataBeginOffset = 0x100; // offset to beginning of data probably, but it is like this even for PC_Eng.str which does not have such size and has no data... uint8_t unk24[0x8]; // always seems to be a sequence 00 00 00 00 01 00 00 00 STR_LanguageID_v2 languageId = STR_LanguageID_v2::Default; // specifies which language data is contained within the archive uint8_t unk30[0x8]; // always some sequence 38 XX XX XX XX XX XX XX where XX is same for a game (Kane & Lynch: Dead Man has this sequence 00 A1 01 18 EE 90 7C, Mini Ninjas has this sequence 00 00 00 00 00 00 00) }; enum class STR_DataFormat_v2 : uint32_t { INVALID = 0x00, PCM_S16 = 0x02, IMA_ADPCM = 0x03, OGG_VORBIS = 0x04, UNKNOWN_MASTER = 0x1A }; // beware that this is really 2 different headers, as there is no padding... didn't know how to name things so left it like this for now.. struct STR_DataHeader_v2 { // PCM_S16, IMA_ADPCM, OGG_VORBIS and UNKNOWN_MASTER have following bytes STR_DataFormat_v2 format; // specifies how data should be read uint32_t samplesCount; // samples count uint32_t channels; // number of channels uint32_t sampleRate; // sample rate uint32_t bitsPerSample; // bits per sample uint32_t unk14 = 0; uint32_t unk18 = 0; uint32_t blockAlign; // block alignment // all IMA_ADPCM have following bytes on top uint32_t samplesPerBlock; // samples per block }; struct STR_Entry_v2 { uint64_t id; // probably some ID, is less than total entries count, does not match its index uint64_t dataOffset; // offset to beginning of data, beware of the distance-based records which alias the same index! uint64_t dataSize; // data size uint64_t dataHeaderOffset; // offset to table containing header uint32_t dataHeaderSize; // size of STR_DataHeader_v2 (unused fields from the structure are left out) uint32_t unk24; // unknown number uint64_t fileNameLength; // length of filename in string table uint64_t fileNameOffset; // offset to filename in string table uint32_t hasLIP; // 0x04 when LIP data is present for current entry, 0x00 otherwise uint32_t unk3C; // unknown number uint64_t unk40; // OLD INFO: if 0, entry is not distance-based, otherwise denotes data order of individual records in data block (or is simply non-zero for master record) };6 points
-
6 points
-
Hi everyone, I'd like to kindly request that you start using the Downloads section for any applicable tools and scripts. You can submit a file there and then simply provide a link to it in your forum post. This way, you can ensure that no tool gets lost in the conversations, and versioning is also supported. Here's a tutorial on how to submit a file in the Downloads section: "HOW TO SUBMIT A FILE in the download section." This will help keep the forum organized and as clean as possible. Thank you and regards.6 points
-
6 points
-
Hi everyone! Formerly I made a text unpacker/repacker for Sniper Elite games and shared with you. However it had some problems, bugs, and was made in php, which I had troubles to make it a useable .exe to share with you. So I decided to reprogram it in a more modern language and environment. It took several days, but after all, totally worth it. I fixed several bugs, made new ones, but now it works with more Rebellion games and has more convenient usage. It usable with gui and command line too. Right now works with Sniper Elite 2-5 (the first one is too old and have different file format, have a separate repacker), Nazi Zombie Army 1-4, Strange Brigade, but probably works other Rebellion games which uses asura engine. It is downloadable from my website: http://lajti.hu/se_repacker.php I hope you will have fun to (not machine) translate with these games. Cheers!5 points
-
5 points
-
Well it start to be tricky. I noticed that *.HierArchy is constructor for collision meshes. It has matrix4x4. Also collision meshes uses only 3 floats all the time. So there is no confusion in order type. But it lack uv's a normals somtimes. So my best bet is output all collision meshes then extract uv's and merge it together. Which will be pain in ass without automation. EDiT: So far so good... Collision mesh. Some parts must be corrected with matrix. Assembled...5 points
-
Havok has been around since 2000s. It is commonly associated with game physics, however there is more to it than meets the eye. Havok has and is still used in countless games to this day. It is a almost complete toolset for numerous problematics. This topic will cover broad solutions so reader experience will be required about: Basic knowledge about binary formats Basic knowledge about XML format How ELF or PE works C/C++ data structure layout, member alignment, vtables Data endianess Virtual memory So, what Havok covers? Animation (presumably discontinued), covers animation algorithms, animation compression and their bindings. It is used to animate transforms, parameters and triggers (aka annotations). Animation classes have hka prefix. Behavior (presumably discontinued), is used for blending animations, inverse kinematics and overall animation control. It is a set of state machines and is very similar to Animation Blueprints used in Unreal Engine 4. Behavior classes have hkb prefix. AI is used to create and control artificial intelligence (the old one) notably navigation (via nav meshes) and path finding. It can be linked to physics world as it can be used for navigation. AI classes have hkai prefix. Destruction is used to generate and work with dynamic destruction and object fracture and deformations. It is similar to Chaos in Unreal Engine 4. Destruction classes have hkd prefix for legacy and hknd, hkcd prefix for new versions. Physics is probably most used and most known usage. It's used to define entire world of physics, it's shapes, constraints and algorithms for collisions and physics that ties everything together. Physics classes have hkp prefix for legacy and hknp prefix for new versions. Extra stuff, like models for debug rendering, scripting engine and metadata are also present. Extra classes have hkx prefix. In addition to these above solutions, developers can integrate their custom classes into Havok itself. Why care? Havok uses numerous file formats that can store any data and it's entirely up to the developers what format they want use or even if they want to use them at all. Havok uses at least 5 file formats. Packfile format NOTE: In order to fully understand packfile format, basic knowledge about C/C++ language is essential. This format is universal store format that is almost always used. It's mostly used in a binary form or very rarely in XML form Packfiles are using sections in order to separate different kind of data. Most common sections are: __classnames__ that store all classes used within packfile, it stores only class name and it's signature hash. It's always used in binary format, never in XML. __types__ stores complete class information, their names, base classes, member names and member types. This section is optional and is mostly omitted from packfiles. __data__ finally store data values XML Packfile Stores data as XML text. This format is platform independent but slow to load compared to it's binary counterpart. Following code snipped describes XML layout for packfiles. <hkpackfile> <hksection name="__types__"> <hkobject class="hkClass" name="hkGroupFilterDesc"> <hkparam name="name">hkGroupFilter</hkparam> <hkparam name="declaredMembers" numelements="1"> <struct> <hkparam name="name">nextFreeSystemGroup</hkparam> </struct> </hkparam> </hkobject> </hksection> </hkpackfile> Packfile always starts with `hkpackfile` node. This node may have additional attributes like packfile version, SDK version, or other metadata. Only children allowed for `hkpackfile` node are `hksection` with designated name attribute describing section. Only children allowed for `hksection` node are `hkobject` that will encapsulate data for specified class. When XML is loaded, it will create class instance. Class name attribute is mostly used for referencing so other classes can use it. Every `hkobject` must have `hkparam` children. Eventually they store all the data as text format. Such data is further parsed and then assigned to designated class member. For example, above XML packfile will represent data for following class declaration in C++class struct hkClassMember { hkString name; }; class hkClass { hkString name; hkArray<hkClassMember> declaredMembers; }; Binary packfile This format is a first choice to store data. It's super fast to load and data are in native format. That's why it's first choice and is commonly used. Under the hood, this format is same as ELF or PE (executables or objects files produced by compilers), because it stores data as memory images. Packfiles are loaded into virtual memory as a whole and then patched (patching occurs for pointers and class vtables). In one way, they are an extension to the main executable. NOTE:. If you want to truly understand the complexity of such format, do research on ELF format. This format have certain limitations, it's platform specific. And I will shortly explain why. But firstly let's explore file header. struct hkxHeaderData { u32 magic1; // 0x57E0E057 u32 magic2; // 0x10C0C010 u32 userTag; u32 version; u8 pointerSize; bool littleEndian; bool reuseBaseClassPadding; bool emptyBaseClassOptimization; s32 numSections; s32 contentsSectionIndex; s32 contentsSectionOffset; s32 contentsClassNameSectionIndex; s32 contentsClassNameSectionOffset; char contentsVersion[16]; }; Where: magic1 and magic2 are two endian independent magic numbers. userTag can be any number specified by user, it's metadata and does not affect packfile in any way. version is a version of packfile, this does not have affect on data in any way except layout of section and header data. pointerSize can be either 4 for 32bit systems or 8 for 64bit systems. littleEndian will specify data endianess. If false, big endian is used. reuseBaseClassPadding is compiler specific, it is used mostly by GNU GCC compiler. In order to understand do research on data layouts and struct data padding for in C language. Some examples of common data layouts: Platform pointerSize littleEndian reuseBaseClassPadding Windows x64 8 ✔ ❌ Windows x86 4 ✔ ❌ XBOX 360 4 ❌ ❌ PS3 4 ❌ ✔ Linux x64 or PS4 8 ✔ ✔ And here comes the biggest limitation of this format. You cannot load packfile from different platform. For example packfile from PS3 cannot be possibly loaded on Windows x64 platform, because the data layout is different than platform it's being loaded into. This is it for now. I can provide more info if there are requests for it. Tagfile I won't go into depth with this format, since it's very rarely used. Tagfile are platform independent. They can be as XML or as binary data. XML schema is different than packfile. It must have class type info and in addition does not store default data. Binary format starts with 0xDO11FACECAB00D1E magic number. The rest of data is very similar to Profobuf Wire format or JSON binary formats like CBOR, BSON, MsgPack or others. Again, I won't go into detail unless there is an interest in it. New format This format is used since 2015 and replaces packfiles. In it's own sense, it's hybrid format from both packfiles and tagfiles. Tagfiles are no longer loaded as a whole and data is stored into data chunks instead of sections. Each data chunk begins with following structure: struct hkChunk { u8 flags; u24 size; u32 chunkMagic; }; Where: flags describe chunk, there seems to be only 0x40 which indicates either following chunk is not group size tells size of entire chunk including hkChunk, data are in big endian. chunkMagic is chunk type and is in ASCII Some chunk types: TAG0: Root chunk where everything begins SDKV: String value containing SDK version (and possibly layout data) DATA: Contains native class data just like in packfiles TYPE: Marks groups with class and type descriptions TSTR: Type names TNAM: Index that is used to build type names FSTR: Class member names TBOD: Index that is used to build classes or types THSH: Class signatures INDX: Marks groups with pointer patches for DATA ITEM: Index for class entries PTCH: Index for pointer patches Chunks are grouped as: TAG0 { SDKV, DATA, TYPE { TPTR, TSTR, TNAM, FSTR, TBOD, THSH, TPAD, }, INDX { ITEM, PTCH, } } Known tools Project Anarchy Project Anarchy was official Havok SDK for registered developers durin Intel acquisition era. It contained Preview Tool to preview 3D shapes and simulate physics. Content Tools was set of build tools to generate and compile Havok data to numerous formats for all platforms. And Havok source code with compiled libraries for legacy physics and animations. It also contained official plugins for Autodesk software like 3ds max or Maya. Official website is no longer available, but there are backups online. Project ararchy contained versions from 550 to 2014. HavokLib Unofficial open source library currenty only for Havok Animation. This library is focused on multi-platform binary packfile loading. It can convert binary packfiles (old and new) to XML. HavokLib also contains cli toolset for conversion of Havok animation data into GLTF format. HavokLib can be found at: https://github.com/PredatorCZ/HavokLib HavokMax Unofficial native plugin for 3ds max that uses HavokLib. Can import binary packfiles (old and new). Can export skeletal and animation data to XML format. HavokMax is no longer maintained and is only as archive. HavokMax can be found at: https://github.com/PredatorCZ/HavokMax Detailed info can be found at: https://lukascone.wordpress.com/2019/03/21/havok-3ds-max-plugin HavokNoesis Unofficial native plugin for Noesis that uses HavokLib. Can import binary packfiles (old and new). Can export skeletal and animation data to XML format. HavokNoesis is very old, it's possible to update it, if there is legitimate interest. HavokNoesis can be found at: https://github.com/PredatorCZ/HavokNoesis Detailed info can be found at: https://lukascone.wordpress.com/2019/05/13/havok-noesis-plugin This is it for now I haven't even scraped the surface of this behemoth of a middleware. It took way too much time than I anticipated to make even this little text. As I mentioned mutiple times, more research can be added. If there is a demand. Feel free to share your research as well. Thank you for reading this.5 points
-
5 points
ResHax.com: Empowering Curious Minds in the World of Reverse Engineering
Delving into the Art of Code Unraveling: ResHax.com - Your Gateway to the Thrilling World of Reverse Engineering, Where Curiosity Meets Innovation!