Xplorer 30 Posted November 10, 2019 Share Posted November 10, 2019 (edited) Download: on GitHub Warning: Alpha software. Notice: You can export files with a double click and open folders. You can't navigate back without closing the tool. You can't export the whole archive. This is just going to be another tool to extract RPF archives. Don't expect too much. It's going to be open source tho unlike some other mods. Currently I'm documenting RPF0 to learn the format from the ground up. I'm nearly finished, there's just one thing about the TOC related to directories that I'm unsure about, but that's just a matter of time and research. I am aware that RPF2 is already publicly documented here, but RPF0 is somewhat different and imho needs a proper doc and a proper tool. Maybe we'll be able to see table tennis characters in RDR2 at some point lol. RPF0 and RPF1 were used both in Rockstar Games Presents Table Tennis. the first game based on RAGE. So here's my research: First of all the Wii and Xbox360 version differ, cause only the Xbox360 version seems to be using RAGE file formats - so the Wii version is kinda irrelevant for me. Header: Quote 4 bytes - STRING - RPF version 4 bytes - INT32 - TOC size. 4 bytes - INT32 - Count of all contained objects - root ("/") is included in this!!! 4 bytes - INT32 - Unknown. - always 0 4 bytes - INT32 - Unknown. - always 0 TOC (after 2048 bytes): Structure for Directory: Quote 3 bytes - INT24 - Offset of the first character in the filesystementry-name-section (name finishes when byte = 0) 1 byte - BOOL - Is it a directory ("80") or a file ("00")? 4 bytes - INT32 - Offset of the first filesystementry (related to TOC entries) in the directory 4 bytes - INT32 - Count of filesystementries in the directory 4 bytes - INT32 - Count of filesystementries in the directory (always the same value for some reason - I even have an idea why) Structure for File: Quote 3 bytes - INT24 - Offset of the first character in the filesystementry-name-section (name finishes when byte = 0) 1 byte - BOOL - Is it a directory ("80") or a file ("00")? 4 bytes - INT32 - Offset of data in the file (from 0) 4 bytes - INT32 - Size of the file inside the RPF 4 bytes - INT32 - Uncompressed size - if it differs from above than the file is compressed using zlib (without a deflate header.) After the last filesystementry, so exactly after (2048+(Count of all contained objects - root ("/") is included in this!!! * 16) the filesystementry-name-section starts. It usually looks a little like this: Then the TOC ends. After that there are just the binary data where the files are stored in. Edited December 8, 2019 by Xplorer 7 Link to post Share on other sites
Xplorer 30 Posted November 11, 2019 Author Share Posted November 11, 2019 Okay, that's it. I just figured the last thing about directories out (by accident) and will now code a tool to extract the RPFs. Stay tuned. Link to post Share on other sites
Xplorer 30 Posted November 11, 2019 Author Share Posted November 11, 2019 RPF0 reading classes: Implemented. Exporting files: Implemented. Opening folders in the tool: Implemented. Drag an RPF on the executable to load at startup: Implemented. However... UI is based on WindowsForms w/ .NET Core and that's in development right now. So it will take a little time til the UI will be kinda usable (menus, right-click menus, categories, scaling, ...) 1 Link to post Share on other sites
Xplorer 30 Posted November 13, 2019 Author Share Posted November 13, 2019 (edited) Download available in first post. Notice that you also need the .NET Core Runtime and the .NET Core Desktop Runtime to launch the tool: https://dotnet.microsoft.com/download/dotnet-core/3.1/runtime Edited December 8, 2019 by Xplorer Link to post Share on other sites
CarsonGT 775 Posted November 14, 2019 Share Posted November 14, 2019 (edited) Will there be MCLA RPF3* support? EDIT: Cannot get it to run. Have both Core and Desktop installed. It just won't open. Edited November 14, 2019 by CarsonGT 1 Link to post Share on other sites
Xplorer 30 Posted November 14, 2019 Author Share Posted November 14, 2019 (edited) 8 hours ago, CarsonGT said: Will there be RPF3 support? EDIT: Cannot get it to run. Have both Core and Desktop installed. It just won't open. Yes. At some point in the future. Make sure you downloaded the .exe, the .dll and both of the.json files and they are all placed in the same directory. After that it should run. Next time, I'll just distribute a .zip file with all necessary files lol ==== Update: I'm now checking out rage-pp by indilo53 (RAGE C++ lib) and might contribute my findings soon to his library. In that case I'll probably use his lib in the future for this project,,. We'll see, Edited November 14, 2019 by Xplorer Link to post Share on other sites
CarsonGT 775 Posted November 14, 2019 Share Posted November 14, 2019 Yeah, I did. For me it just won't run. 1 Link to post Share on other sites
Xplorer 30 Posted November 14, 2019 Author Share Posted November 14, 2019 Issue fixed: Check. 1 Link to post Share on other sites
Xplorer 30 Posted December 8, 2019 Author Share Posted December 8, 2019 (edited) I just fixed another issue with the exporter ignoring the end of the files to be exported. It's working now as intended. The framework was also updated to .NET Core 3.1 to make use of the Windows Forms GUI. You need to update to 3.1, too. Links provided at GitHub 🙂 Edited December 8, 2019 by Xplorer Link to post Share on other sites