Deadly Tide *.l96

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Deadly Tide *.l96

Post by AlphaTwentyThree »

Hello everybody!
Here's an unusual task to crack. The Microsoft Game "Deadly Tide" from 1996 is a rail shooter. All levels are packed in *.l96 files which contain all files from the level. What I'm after is the music which I think is quite nice in an oldschool kind of sense. ;)
If you import a plain L96 file as 22kHz 8bit mono PCM you can see that the level music is implemented somewhere in-between the rest of the files. It seems to consist of blocks of 0x4000 bytes.
I know that there's a soundtrack out there but I'd like to have the stream from the original files to compare them to the soundtrack.
Now, I don't know how complicated it is to reverse this format - you tell me. ;)
Here are some samples: http://*USE_ANOTHER_FILEHOSTING*/cdc2d8e ... samples.7z
Thanks for your consideration. :)
Last edited by AlphaTwentyThree on Sat Apr 04, 2015 12:44 pm, edited 1 time in total.
Mygoshi
Posts: 654
Joined: Mon Oct 27, 2014 1:49 pm

Re: Deadly Tide *.l96

Post by Mygoshi »

I don't see your samples?
Last edited by Mygoshi on Wed Feb 17, 2021 11:35 pm, edited 2 times in total.
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Deadly Tide *.l96

Post by AlphaTwentyThree »

Just added
Mygoshi
Posts: 654
Joined: Mon Oct 27, 2014 1:49 pm

Re: Deadly Tide *.l96

Post by Mygoshi »

I saw them, but I don't think I can help.
Last edited by Mygoshi on Wed Feb 17, 2021 11:35 pm, edited 2 times in total.
Mygoshi
Posts: 654
Joined: Mon Oct 27, 2014 1:49 pm

Re: Deadly Tide *.l96

Post by Mygoshi »

Ok, definetely can't help.
Last edited by Mygoshi on Fri Jan 14, 2022 9:58 pm, edited 3 times in total.
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Deadly Tide *.l96

Post by AlphaTwentyThree »

Somebody got an idea? :\
Mygoshi
Posts: 654
Joined: Mon Oct 27, 2014 1:49 pm

Re: Deadly Tide *.l96

Post by Mygoshi »

Not at the moment.
Last edited by Mygoshi on Fri Jan 14, 2022 9:58 pm, edited 3 times in total.
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Deadly Tide *.l96

Post by AlphaTwentyThree »

Mygoshi wrote:But you think i will search you dream bro' with all of your evils things you do

How about stopping this nonsense and stop posting such things in serious threads? THANK YOU.
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Deadly Tide *.l96

Post by AlphaTwentyThree »

Here are L95 samples from "The Hive": http://*USE_ANOTHER_FILEHOSTING*/12f1165 ... b64/L95.7z
Somebody serious?
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Deadly Tide *.l96

Post by AlphaTwentyThree »

Here's an idea for a script. The format reminds of a simple video format:

Code: Select all

goto 0x40
get OFFSET long
get BNAME basename
get FSIZE asize
do
   goto OFFSET
   get ID1 long
   get ID2 long
   get SIZE long
   savepos OFFSET
   string NAME p= "%s_%s_%s" BNAME ID2 ID1
   log NAME OFFSET SIZE
   math OFFSET += SIZE
while OFFSET < FSIZE

The problem with this is that sometimes ID2 holds the SIZE - 4 but I can't figure out how this is determined. In other times, the start offset is different.
I suspect the format to be not extremely complicated to crack but I have too little experience. So... thanks for any help - there are already two games that use this format! :)
aluigi
Site Admin
Posts: 12984
Joined: Wed Jul 30, 2014 9:32 pm

Re: Deadly Tide *.l96

Post by aluigi »

Uhmmm video stuff, don't have many ideas.
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Deadly Tide *.l96

Post by AlphaTwentyThree »

Who's got experience in that? ;)
AlphaTwentyThree
Posts: 909
Joined: Sat Aug 09, 2014 11:21 am

Re: Deadly Tide *.l96

Post by AlphaTwentyThree »

Ok, here's a work-around for the little problem:

Code: Select all

goto 0x40
get OFFSET long
get BNAME basename
get FSIZE asize
for i = 1
   goto OFFSET
   get ID1 long
   if ID1 == 0x826
      get ID2 long
   elif ID1 == 0x829
   else
      print "unknown ID %ID1%. Aborting."
      cleanexit
   endif
   get SIZE long
   savepos OFFSET
   string NAME p= "%s_%s_%s" BNAME i ID1
   log NAME OFFSET SIZE
   math OFFSET += SIZE
   if OFFSET >= FSIZE
      break
   endif
next i
The new problem is that there are blocks without marker or block size... If this problem can be solved, the format may be cracked! This would be SO cool - the music is really nice! :)
Here's another .l95 sample: http://*USE_ANOTHER_FILEHOSTING*/6ed75d4 ... LEVEL02.7z