synopia / bfs2pack

packer and unpacker for bfs2 files (flatout2)
GNU General Public License v2.0
13 stars 1 forks source link

Only partially unpacking BFS file for Flatout Head On (PSP) #5

Open ajbjc opened 2 years ago

ajbjc commented 2 years ago

Don't even know how active anyone involved with this is, but found this recently. I know this was designed to work with flatout 2 and flatout ultimate carnage (with the one I downloaded from sourceforge), I tried using it to unpack the BFS file for Flatout Head On for the PSP, since it was still a flatout BFS file after all, however it only unpacks some of the files: cars -car_23 --hiskin4.tex -car_30 --hiskin3.tex -car_36 --lowskin1.tex -car_39 --lights.ini -car_45 --camera.ini global -fonts --tradegothic_lt_bugbear_14_thin.tex -skybox --sunset5_u.tex menu -ai7_class_c_car.tex -loading_ai3_t.tex -stunt5_bg_t.tex -track_desert.bed scripts -loadingscreens --stoneskip-launchearly.bed tracks

What's interesting is that the file stoneskip-launchearly.bed makes references to other files that aren't there when unpacked, with path names as well such as data/language/languages,bed. Plus there was a modded iso of the game online which managed to add extra songs and translate the entire game into Russian which would only be possible if the entire bfs file was unpacked somehow.

I don't think it would unpack the songs and video folders as those are separate from the BFS file, with songs under a folder called SONGS1 and the opening video under a folder called VIDEO, both are under a folder called DATA, I also know nothing about C++ and compiling it so any help with any changes to the code, the .ini files included with the sourceforge file or anything else would be great.

ajbjc commented 2 years ago

@tomashubelbauer sorry for the ping, but would know anything about the code for this or the BFS file, either in general or for Head On? I know nothing about coding in C++ or .bfs files, and don't really know where else to ask. Looking everywhere online gives me nothing to work with, all unpackers are for FO2 which seem to be compiled versions of bfs2unpack, and maybe FOUC with it, or FO1. I tried using FlexHEX (to compare hex code) and HxD to edit the hex files but so far I'm not getting anywhere, and I highly doubt the Russian mod was made entirely with hex editing.

TomasHubelbauer commented 2 years ago

Unfortunately, my only contribution to this repository was convincing synopia to move it to GitHub so it would not get lost if SourceForge went bust. I don't know how to write C or C++, I was only ever a user of this software. :(

ajbjc commented 2 years ago

Trying to use breakpoints to see what exactly is happening when it runs, but I don't know what to do. I downloaded all the source files as a zip and unpacked it before opening them all in VSC on Windows. I went to unpack.cpp to set up a debug but it says I have problems with a lot of the files, including unable to open source files such as zlib.h or direct.h, which I don't know how to do, and other similar problems which have a dependency on other files. When I right click it suggest using vcpkg to install a library for this header but I have no idea how to do any of it, including what I should install, etc

ajbjc commented 2 years ago

Also having issues with compiling, I tried using this guide on using Make in windows however I get this error: Makefile.win(24) : fatal error U1001: syntax error : illegal character '{' in macro

TomasHubelbauer commented 1 year ago

@ajbjc check out https://github.com/xNyaDev/bfstool - a new tool for extracting BFS! (I am not the author.)

ajbjc commented 8 months ago

I know I'm late, as I don't check emails much, but how exactly do I use this? I see the list of folders and files but no compiled file to download, or way to download the files in general. I have nof exactly used GitHub and have definitely not used rust. On Sunday, 11 June 2023 at 21:04:57 BST, Tomáš Hübelbauer @.***> wrote:

@ajbjc check out https://github.com/xNyaDev/bfstool - a new tool for extracting BFS!

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

TomasHubelbauer commented 8 months ago

@ajbjc Unfortunately there is no readily available download, you will need to build from source. I understand you might not be comfortable doing this in which case unfortunately I don't think there's much that can be done other than asking the maintainer of this new tool to maybe set up an automated workflow for producing binaries ready to download and publishing them as releases of the repository.

If you do feel like dipping your toes in and trying to compile the repository, these would be the steps off the top of my head:

  1. Get Rust ready on your system

    https://www.rust-lang.org/tools/install

    Once you're installed Rust following the instructions here, make sure you have Cargo and the Rust compiler in path, you can do this by opening the terminal and issuing these two commands: cargo --version and rustc --version. If they print non-error looking messages, you're good to go.

  2. Clone the repository

    I assume you don't use Git so the way to do it without it would be to click the green Code button on that repository and select the Download ZIP option. This will download the source code you can later build to obtain the final executable.

  3. Extract the ZIP into a directory

    You can do this using Finder on macOS by double-clicking on the ZIP archive or using the context menu in Windows and selecting Extract archive.

  4. Open Terminal or Command Prompt (depending on what OS you use) and navigate to the directory

    I am not sure if you're familiar with navigating the file system using the terminal, the long and short of it is that the terminal window will open in some default path and you need to issue cd commands to change directories as if you were double-clicking them in Finder/Explorer. Let's say the part to the directory is C:/Users/ajbjc/Downloads/bfstool and your terminal starts in C:/Users/ajbjc (you can check this by issuing the pwd command). In that case you would issue the cd Downloads/bfstool command to enter the Downloads directory first and the bfstool directory next.

  5. Run the cargo build command once in the target directory

    Cargo is a tool used to work with source code codebases written in the Rust programming language. The build command will take the source code and compile it to an executable. The executable will be placed into a directory called target (if I remember correctly). You can look through there, maybe there will be subdirectories.

  6. Use terminal to switch to the directory where the executable is

    The linked repository is not a GUI tool (like a normal program that opens a window) but a command line tool, which means you control it by issuing command line commands.

    To use it on your BFS files, repeat the cd command above but such that you end up in a directory where the BFS files are. Copy the executable file build by Cargo to sit next to these BFS tools (this way you don't need to worry about it being in PATH) and run ./bfstool-cli -h.

    This should print a help menu helping you discover the available commands. A command to extra a BFS for example would be ./bfstool extract --archive myfile.bfs --output outputdir.

These should be the general steps, there may be mistakes, feel free to ask for clarification.

ajbjc commented 8 months ago

Now what? I have unpacked the file, changed the music folder to account for the added music (song list is now 95, was originally 47 in the modded version I downloaded) but there is now way to repack it into a BFS file that I can tell. I'm using bfs1 v2004.05.05b for Flavour Head On if that helps,.but since it's also designed for FO2, I doubt it'll matter that much. On Friday, 20 October 2023 at 22:43:52 BST, Tomáš Hübelbauer @.***> wrote:

@ajbjc Unfortunately there is no readily available download, you will need to build from source. I understand you might not be comfortable doing this in which case unfortunately I don't think there's much that can be done other than asking the maintainer of this new tool to maybe set up an automated workflow for producing binaries ready to download and publishing them as releases of the repository.

If you do feel like doping your toes in and trying to compile the repository, these would be the steps off the top of my head:

https://www.rust-lang.org/tools/install

Once you're installed Rust following the instructions here, make sure you have Cargo and the Rust compiler in path, you can do this by opening the terminal and issuing these two commands: cargo --version and rustc --version. If they print non-error looking messages, you're good to go.

I assume you don't use Git so the way to do it without it would be to click the green Code button on that repository and select the Download ZIP option. This will download the source code you can later build to obtain the final executable.

You can do this using Finder on macOS by double-clicking on the ZIP archive or using the context menu in Windows and selecting Extract archive.

I am not sure if you're familiar with navigating the file system using the terminal, the long and short of it is that the terminal window will open in some default path and you need to issue cd commands to change directories as if you were double-clicking them in Finder/Explorer. Let's say the part to the directory is C:/Users/ajbjc/Downloads/bfstool and your terminal starts in C:/Users/ajbjc (you can check this by issuing the pwd command). In that case you would issue the cd Downloads/bfstool command to enter the Downloads directory first and the bfstool directory next.

Cargo is a tool used to work with source code codebases written in the Rust programming language. The build command will take the source code and compile it to an executable. The executable will be placed into a directory called target (if I remember correctly). You can look through there, maybe there will be subdirectories.

The linked repository is not a GUI tool (like a normal program that opens a window) but a command line tool, which means you control it by issuing command line commands.

To use it on your BFS files, repeat the cd command above but such that you end up in a directory where the BFS files are. Copy the executable file build by Cargo to sit next to these BFS tools (this way you don't need to worry about it being in PATH) and run ./bfstool-cli -h.

This should print a help menu helping you discover the available commands. A command to extra a BFS for example would be ./bfstool extract --archive myfile.bfs --output outputdir.

These should be the general steps, there may be mistakes, feel free to ask for clarification.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

ajbjc commented 8 months ago

Sorry for another email but just wanted to ask now, how should I convert the wav files into usable AT3 files? I've used Goldwave with a codec and some other stuff to make it work on windows 10, and converted them to a way with the ATRAC3 132kbps attribute, then just renamed the file extensions from wav to AT3. However, I'm not sure if it'll work, from what I've seen, you need to have it be under 500kb or something, and in another case 1.5MB, yet the AT3 files that were in the game.(at least in the modded one) were 2-3MB roughly with an unknown nitrate, and when converted to wav, gave files which were around 30MB. On Friday, 20 October 2023 at 22:43:52 BST, Tomáš Hübelbauer @.***> wrote:

@ajbjc Unfortunately there is no readily available download, you will need to build from source. I understand you might not be comfortable doing this in which case unfortunately I don't think there's much that can be done other than asking the maintainer of this new tool to maybe set up an automated workflow for producing binaries ready to download and publishing them as releases of the repository.

If you do feel like doping your toes in and trying to compile the repository, these would be the steps off the top of my head:

https://www.rust-lang.org/tools/install

Once you're installed Rust following the instructions here, make sure you have Cargo and the Rust compiler in path, you can do this by opening the terminal and issuing these two commands: cargo --version and rustc --version. If they print non-error looking messages, you're good to go.

I assume you don't use Git so the way to do it without it would be to click the green Code button on that repository and select the Download ZIP option. This will download the source code you can later build to obtain the final executable.

You can do this using Finder on macOS by double-clicking on the ZIP archive or using the context menu in Windows and selecting Extract archive.

I am not sure if you're familiar with navigating the file system using the terminal, the long and short of it is that the terminal window will open in some default path and you need to issue cd commands to change directories as if you were double-clicking them in Finder/Explorer. Let's say the part to the directory is C:/Users/ajbjc/Downloads/bfstool and your terminal starts in C:/Users/ajbjc (you can check this by issuing the pwd command). In that case you would issue the cd Downloads/bfstool command to enter the Downloads directory first and the bfstool directory next.

Cargo is a tool used to work with source code codebases written in the Rust programming language. The build command will take the source code and compile it to an executable. The executable will be placed into a directory called target (if I remember correctly). You can look through there, maybe there will be subdirectories.

The linked repository is not a GUI tool (like a normal program that opens a window) but a command line tool, which means you control it by issuing command line commands.

To use it on your BFS files, repeat the cd command above but such that you end up in a directory where the BFS files are. Copy the executable file build by Cargo to sit next to these BFS tools (this way you don't need to worry about it being in PATH) and run ./bfstool-cli -h.

This should print a help menu helping you discover the available commands. A command to extra a BFS for example would be ./bfstool extract --archive myfile.bfs --output outputdir.

These should be the general steps, there may be mistakes, feel free to ask for clarification.

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.Message ID: @.***>

ajbjc commented 2 months ago

Been a while but I need some help, using Sewer56's fork as that seems to (maybe) work for FOHO, but it's being annoying. It unpacks the bfs file (I get a data folder with 12 sub folders), however I don't know how to repack it. I put in the right info (that I know of) and it ends up giving me a BFS file that's ~500KB larger than before (even though I didn't change anything). Using this new bfs file on PPSSPP causes it to crash.

Only did these tests since whenever I tried modifying the playlist bed files, the resulting iso would freeze at different points.