The rules have been updated, read them now: Rules!

Wild Arms 3 .BIN decompression?

Read or post about compression. And decompression. Or ask questions how to decompress your files.
Post Reply
SmashFan127
advanced
Posts: 51
Joined: Sun Jun 17, 2012 2:09 am
Has thanked: 5 times
Been thanked: 1 time

Wild Arms 3 .BIN decompression?

Post by SmashFan127 » Fri Apr 18, 2014 4:44 am

Hello, all. I am here to find a way to decompress the BTLMON.BIN file for the guy behind PS23DFormat. According to him, the files us some sort of LZ compression to house the character and enemy models.

Sample file:
http://www.mediafire.com/download/gwmki ... BTLMON.BIN

EDIT: Here is a pic of the first few bytes in the file

Image
Last edited by SmashFan127 on Sat Apr 26, 2014 9:12 pm, edited 1 time in total.

SmashFan127
advanced
Posts: 51
Joined: Sun Jun 17, 2012 2:09 am
Has thanked: 5 times
Been thanked: 1 time

Re: Wild Arms 3 .BIN decompression?

Post by SmashFan127 » Wed Apr 23, 2014 3:27 am

Is there anyone available?

First post has been edited to include the first few bytes.

User avatar
chrrox
Moderator
Posts: 2587
Joined: Sun May 18, 2008 3:01 pm
Has thanked: 57 times
Been thanked: 1331 times

Re: Wild Arms 3 .BIN decompression?

Post by chrrox » Sat Feb 13, 2021 1:52 am

quickbms script to decompress files.
Needs to add support for extracting sub archives (align data to 0x800 after last file and start over again)
Run this first for now.

Code: Select all

getdstring DIV 4
goto 0
for
findloc OFFSET string DIV
print "%OFFSET%"
getdstring TMP 0x20
findloc SIZE string DIV
goto SIZE
math SIZE - OFFSET
log "" OFFSET SIZE
next
then you can do this
quickbms.exe -d -F "*.dat" "C:\Users\Downloads\Wild Arms 3 (USA)\Wild Arms 3 (USA)\STG\test.txt" "C:\Users\Downloads\Wild Arms 3 (USA)\Wild Arms 3 (USA)\BTL\1" "C:\Users\Downloads\Wild Arms 3 (USA)\Wild Arms 3 (USA)\BTL\2"

Code: Select all

comtype LZSS0
savepos BASE
findloc FILES string "\x00\x00\x00\x00"
math FILES / 4
print "%FILES%"
for i = 0 < FILES
get OFFSET long
math OFFSET - 0x1D00000
putarray 0 i OFFSET
next i
math FILES - 1
for i = 0 < FILES
set j i
math j + 1
getarray OFFSET 0 i
getarray SIZE 0 j
math SIZE - OFFSET
if SIZE > 0
math OFFSET + BASE
log MEMORY_FILE OFFSET SIZE
get TSIZE long MEMORY_FILE
get SIZE asize MEMORY_FILE
print "%TSIZE%"
if TSIZE > 0x1FFFFF || TSIZE < 0
log "" 0 SIZE MEMORY_FILE
else
math SIZE - 4
clog "" 4 SIZE TSIZE MEMORY_FILE
endif
endif
next i

Post Reply