well, the start of the output is the important thingie.
okay, the bold numbers is what the script should get from the ipk:
goto 0xc
get BASE_OFF long 0x4A0AE
goto 0x2c
get FILES long 0x91F 2335 files?
goto 0x30
for i = 0 < FILES
get DUMMY1 long 1
get SIZE long 0x63 uncompressed size (just guessing)
get ZSIZE long 0x43 compressed size
get TSTAMP longlong 0x01CE...
get DUMMY3 long 0
get OFFSET long 0
get NAMESZ long 0x3F
erase this line math NAMESZ *= 2
getdstring NAME NAMESZ
and this one set NAME unicode NAME
I'm wondering whether it's really 2335 files in this archive but the filenames are ASCII not unicode.
So you should erase the mentioned lines in the script and give it a second try.
If it doesn't work, well, then I can't help, I guess.
shakotay2 wrote:well, the start of the output is the important thingie.
okay, the bold numbers is what the script should get from the ipk:
goto 0xc
get BASE_OFF long 0x4A0AE
goto 0x2c
get FILES long 0x91F 2335 files?
goto 0x30
for i = 0 < FILES
get DUMMY1 long 1
get SIZE long 0x63 uncompressed size (just guessing)
get ZSIZE long 0x43 compressed size
get TSTAMP longlong 0x01CE...
get DUMMY3 long 0
get OFFSET long 0
get NAMESZ long 0x3F
erase this line math NAMESZ *= 2
getdstring NAME NAMESZ
and this one set NAME unicode NAME
I'm wondering whether it's really 2335 files in this archive but the filenames are ASCII not unicode.
So you should erase the mentioned lines in the script and give it a second try.
If it doesn't work, well, then I can't help, I guess.
The filenames are ASCII this one particularly from the PC version but its the same on 360 so I guess that's a start.
My flat rate has expired atm, so only if the file is less than let's say 10 MB (0xA00000, 5 zeroes only!).
If not cut it using a hexeditor then zip and send the first part.
# Rayman Legends (Xbox 360)
# script for QuickBMS http://quickbms.aluigi.org
endian big
goto 0xc
get BASE_OFF long
goto 0x2c
get FILES long
for i = 0 < FILES
get DUMMY1 long
get SIZE long
get ZSIZE long
get TSTAMP longlong
get OFFSET longlong
if DUMMY1 == 2
get DUMMY4 long
get DUMMY5 long
endif
get FOLDERSZ long
getdstring FOLDER FOLDERSZ
get NAMESZ long
getdstring NAME NAMESZ
string FOLDER + NAME
string NAME = FOLDER
math OFFSET += BASE_OFF
if ZSIZE == 0
log NAME OFFSET SIZE
else
clog NAME OFFSET ZSIZE SIZE
endif
get DUMMY6 long
get DUMMY7 long
next i
This works perfectly on Xbox 360 and PC. I haven't tested with the PS3 version yet.
The only things Rayman Legends added were DUMMY5 and DUMMY6, along with ASCII names instead of Unicode and separate folder and filenames.
EDIT -> Fixed it so it works with >4GB archives now, like the PC bundle.
Hm...very cool! I managed to unpack the entirety of the PC Bundle file, but unfortunately as with Rayman Origins the blasted image files are corrupt, and the Origins converter doesn't seem to work with them.
Doctor Loboto wrote:Hm...very cool! I managed to unpack the entirety of the PC Bundle file, but unfortunately as with Rayman Origins the blasted image files are corrupt, and the Origins converter doesn't seem to work with them.
Oh it's quite easy to extract the images from the PC version of Legends. The CKD header is 0x34 bytes, the DDS file inside each CKD file starts immediately after it.
Doctor Loboto wrote:Hm...very cool! I managed to unpack the entirety of the PC Bundle file, but unfortunately as with Rayman Origins the blasted image files are corrupt, and the Origins converter doesn't seem to work with them.
Oh it's quite easy to extract the images from the PC version of Legends. The CKD header is 0x34 bytes, the DDS file inside each CKD file starts immediately after it.
get NAME basename
get SIZE asize
math SIZE -= 0x34
string NAME += ".dds"
log NAME 0x34 SIZE
Would it be possible at all for you to expand on that at all, sorry if I sound stupid here, but I'm having trouble applying your findings to the old Rayman Origins BMS script.
lionheartuk wrote:Would it be possible at all for you to expand on that at all, sorry if I sound stupid here, but I'm having trouble applying your findings to the old Rayman Origins BMS script.
The old Origins BMS script was for the PS3 version. The script I posted in my previous post is for the PC version of Rayman Legends.
There's no need to add/change the header in the PC version, the DDS files can just be extracted from the CKD files by removing the first 0x34 bytes.
I haven't checked but it's possible that the old Origins script works for the PS3 version of Rayman Legends too.
lionheartuk wrote:Would it be possible at all for you to expand on that at all, sorry if I sound stupid here, but I'm having trouble applying your findings to the old Rayman Origins BMS script.
The old Origins BMS script was for the PS3 version. The script I posted in my previous post is for the PC version of Rayman Legends.
There's no need to add/change the header in the PC version, the DDS files can just be extracted from the CKD files by removing the first 0x34 bytes.
I haven't checked but it's possible that the old Origins script works for the PS3 version of Rayman Legends too.
Thankyou, I now feel like an idiot, I'd understood it to be a segment of code but not actually a working script... sorry.