wattostudios / GameExtractor

Reads and writes thousands of different archive and image formats used in games.
http://www.watto.org
GNU General Public License v2.0
143 stars 9 forks source link

Broken OGG files generation for FSB5 #9

Closed lab313ru closed 2 years ago

lab313ru commented 2 years ago

ghostScream.zip gearBoy_BootUp.zip

Correct ones: ghostScream_ogg.zip gearBoy_BootUp_ogg.zip

I've debugged your code, and have found that you don't work with the last data block: https://github.com/wattostudios/GameExtractor/blob/master/src/org/watto/ge/plugin/archive/Plugin_FSB_FSB5.java#L424

lengths and offsets don't have the last block for every file, also there are some differences after the last block.

wattostudios commented 2 years ago

Thanks for picking this up. We tested with the files that you supplied, and think we have resolved the issue. The end offset was calculated incorrectly for FSB archives that only contain 1 file in them, and under those circumstances, if the last data block was less than 128 bytes in size, it would be missed. It looks like the ghostScream.zip file was extracted OK, however the gearBoy_BootUp.zip suffered from this issue. We have pushed a change that fixes this, although it also contains a number of other changes to that plugin for handling MP3 extraction and file decryption - we hope the push contains all the code needed to fix this issue and not break something else as a result of the other changes. The remaining changes are part of the next release (3.14) which isn't publicly available yet, however please reach out to us via the contact page on our website (https://www.watto.org) if you want a development build of 3.14 in the interim.

Thanks again, appreciate you bringing this to our attention