Jump to content

extract-riff Tool


le717
 Share

Recommended Posts

Last month, I received a comment on one my blog, which is usually not out of the ordinary. However, this comment was special. After researching what was mentioned in it and looking at it myself, I was floored. However, I did not tell anyone about it because I wanted to be sure it was all legit and not some phony. Late last month, I starting hinting around with two people, jokingly saying "I'm so awesome, this stuff comes to me" and sharing some stuff from it. I am now positive this is the most progress (aside from Noneatme's reverse engineering, which hopefully this can benefit from) ever made in extracting the LEGO Island SI archives.

 

So what am I blabbing on about?

 

Only a new tool that can extract way more stuff from the SI archives than LIME can and has the most documentation on the SI archives to date (unless Noneatme knows these details already). It requires Python 2 to run, has some odd command-line parameters, and appears to be mangling the file names a bit, but it works.

 

Few things I noticed:

  • While it definitely pulls out more than LIME, it is not pulling out all the audio LIME does. So for now, you still need LIME.
  • The BMP images are, for once, actual BMPs. :D :D :D :D :D :D :D :D
  • There is a megaton of unused content in here. Going back to point 1, you will need LIME to pick out some of the unused audio, but there are piles of stuff in here. It seems many of the Island's residents came in radio contact with Pepper as he is flying the helicopter (Nubby triesto tell him a poem) and Nick wants to hug Pepper after this ( 8S)
  • If this news is regrettable or joyous I'll leave that to you, but we finally know who Enter and Return are. No more guessing.
  • The jukebox was originally going to have volume controls
  • Not all SI archives can be extracted yet, but that's because it's still in development
  • ...And like always, there is plenty of unknown file types
  • A lot of stuff is still not being extracted, though. I scarcely came across any 3D models, and rarely (if any) a character texture. So eventually even more stuff will be extracted through further exploration of the SI archive format.

I've put together a small package of the most interesting stuff, unused and known, I've found. You can get it here (Zip version). The two videos are actually separate in the files. I converted the SMK video to uncompressed AVI using the RAD Video Tools, then pulling it and the WAV audio into VirtualDub and saved them as an uncompressed AVI again, so there should not be much (if any) quality loss.

  • Like 7
Link to comment
Share on other sites

ProfessorBrickkeeper

What a great discovery(even though they came to you) I should hope this spurs a flurry of modding research regarding the .SI archives in greater detail as well as the rest of LI. (Maybe we can eventually figure out how to run LI with the extracted files!)

Link to comment
Share on other sites

This happens while I'm still using Ubuntu!? Darnit! :(

Unused content is cool though! :D More Green and Red bricks!

Link to comment
Share on other sites

Car CrazeXVI

Way cool.

 

"The Police Guy Who Drives Ambulances as well as a Lot of Other Stuff Show"

Ahh… I never thought I'd hear that again.

The BMP images are, for once, actual BMPs.

???

There is a megaton of unused content in here.

I wounder how much of it actually is used, but we've never seen/heard it. Like Nancy telling me (Mama) not to drink and drive (and play the piano all at the same time).

and Nick wants to hug Pepper after this

That may actually be used…

If this news is regrettable or joyous I'll leave that to you, but we finally know who Enter and Return are. No more guessing.

Link to comment
Share on other sites

This happens while I'm still using Ubuntu!? Darnit! :(

Unused content is cool though! :D More Green and Red bricks!

 

Ubuntu doesn't have Python already loaded anymore?

 

Green, yes go, and Red, NO!

 

 

The BMP images are, for once, actual BMPs.

1) ???

 

There is a megaton of unused content in here.

2) I wounder how much of it actually is used, but we've never seen/heard it. Like Nancy telling me (Mama) not to drink and drive (and play the piano all at the same time).

 

1) Racers and some of the other games use files that have the BMP extension but are not actually true BMP images, whereas these are. I was kinda picking on how when BMP extensions are found, some think they are BMP images. In this case, they really are BMPs.

 

2) I've wondering that same thing so many times myself....

 

EDIT: Just wanted to point out that a lot of stuff is still not being extracted, though. I scarcely came across any 3D models, and rarely (if any) a character texture. So eventually even more stuff will be extracted through further exploration of the SI archive format.

Link to comment
Share on other sites

Ubuntu doesn't have Python already loaded anymore?

Uh, I don't know... I'd rather run it on a Win machine anyway...

Or I'll wait until it's been perfected.

Link to comment
Share on other sites

lol username

and Nick wants to hug Pepper after this

That's not unused. It's from the helicopter segment.

Looks neat. I'll screw around with it tonight.

...And by that I mean I'll probably spend all night playing Spelunky and won't get to it for several days yet. :whistle:

Link to comment
Share on other sites

  • 5 weeks later...

This is awesome.

 

Sadly the source code of the game didn't really tell how the .riff format works, because every un / packing action was done in the Mindscape engine. 

 

Anyway, this is great.

/Edit:

 

Well, I'm getting these weird errors:

Exporting wav to new2JUKEBOX.SI0_MusicTheme1.wav
Traceback (most recent call last):
  File "F:Downloadsextract-riff-mastertest.py", line 207, in <module>
    extract(args.paths, args.output)
  File "F:Downloadsextract-riff-mastertest.py", line 92, in extract
    w.writeframesraw(x.data[14:])
  File "F:Programme (32 Bit)Phytonlibwave.py", line 415, in writeframesraw
    self._ensure_header_written(len(data))
  File "F:Programme (32 Bit)Phytonlibwave.py", line 455, in _ensure_header_w
ritten
    self._write_header(datasize)
  File "F:Programme (32 Bit)Phytonlibwave.py", line 472, in _write_header
    self._sampwidth * 8, b'data'))
struct.error: required argument is not an integer
Exception ignored in: <bound method Wave_write.__del__ of <wave.Wave_write objec
t at 0x0326A3F0>>
Traceback (most recent call last):
  File "F:Programme (32 Bit)Phytonlibwave.py", line 315, in __del__
    self.close()
  File "F:Programme (32 Bit)Phytonlibwave.py", line 433, in close
    self._ensure_header_written(0)
  File "F:Programme (32 Bit)Phytonlibwave.py", line 455, in _ensure_header_w
ritten
    self._write_header(datasize)
  File "F:Programme (32 Bit)Phytonlibwave.py", line 472, in _write_header
    self._sampwidth * 8, b'data'))
struct.error: required argument is not an integer

Link to comment
Share on other sites

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.