Thread: Cadaver remake
View Single Post
Old 15 July 2010, 12:00   #67
Registered User

Kroah's Avatar
Join Date: Apr 2009
Location: France
Age: 40
Posts: 112
I have good news concerning the Cadaver demos.

Some times ago, i added the possibility to load the payoff levels into my viewer which worked because it uses the same layout as the vanilla Cadaver.
Then i tried the demo levels, but they were stored differently. I looked deeper into the Gate House disassembly and i realized they used an earlier version of the Cadaver engine (confirmed by the Cadaver Secret Shrine That's why i did not go any further to try loading them in the viewer.

Lastly, i came across the release date of the 2 other demo levels (the Temple and the Last Supper) which were around the same time as the release of Cadaver.
So i told myself they might use the last version of the game engine, not a preview like the Gate House. If that was the case, i could load the levels into the viewer without disassembling all the engine. I only needed the data files... but i didn't want to disassemble the unpacker (each version uses a different packer...).

Thanks to Steem Engine, it makes it easy to save memory snapshot during loading time.

Because the game reorganize the loaded data, i couldn't use an in-game memory snapshot:
packed data files on disk -> unpacked data in memory -> reorganization of the data on the fly (which delete the initial unpacked data and is not compatible with the viewer).

So i put some breakpoints, saved memory snapshots during the loading and extracted the data to standard Cadaver data files. Hopefully, the 2 demos uses almost the same data layout as Cadaver, making it compatible to my viewer after only few updates.

Now, I had enough motivation to investigate the case of the first demo/preview (Gate House). I tried the same technique but i only got 2 files instead of 5. Nevertheless, i saw that the second files contained data from the 4 files but mixed up.
With this in mind, i began to disassemble the loading part of the Gate House to understand how they were loaded. As expected, only 2 files were unpacked, the second one being the data from the 4 remaining files mixed up.
Unfortunately some parts of the expected data by Cadaver (not the preview) where stored differently or simply missing. So even if i splitted up the big file to get the 4 missing files, it couldn't be loaded in the viewer as is.
After some disassembling, i found how the data differed between the preview and the game. On top of that, the missing parts wasn't essential.

Now, the first demo can be loaded in the viewer (although i think some scripts could be incompatible, i haven't checked if the script engine evolved between the preview and the game).

To sum up, we have:
- Layout A: Gate House (demo #1) [2 data files] (v0.9 of the engine) (not packed)
- Layout B: Cadaver [data disk format, 5 data files for each level] (packed)
- Layout B: The Payoff (extension) [data disk format, 5 data files for each level] (packed)
- Layout C: The Temple (demo #2) [5 data files] (RNC)
- Layout C: The Last Supper (demo #3) [5 data files] (LZH)

The viewer can read natively .st data disk (layout B) but files have to be extracted for Layout A and C.

I hope this story pleased you. I'll post the viewer with the source soon after some testing.
Attached Thumbnails
Click image for larger version

Name:	Cadaver Viewer - Gate House.png
Views:	332
Size:	60.6 KB
ID:	25835   Click image for larger version

Name:	Cadaver Viewer - The Temple.png
Views:	338
Size:	67.6 KB
ID:	25836   Click image for larger version

Name:	Cadaver Viewer - The Last Supper.png
Views:	425
Size:	63.7 KB
ID:	25837  
Kroah is offline  
Page generated in 0.03990 seconds with 11 queries