Well, I sure neglected this, didn’t I? I have very good reasons for that, but none of which I really want to share (suffice it to say, when the in tray needs guy ropes to secure the contents, time spent looking at old multimedia titles has to be reduced).
I thought I’d jump back to the very first US release, which was one step up of the original, Hypercard based setup. As a result of its origins, it uses an early variant of the method used to store images and text scripts (off3 rather than off4 – which actually represents 300 vs 400, but that’s by the by).
Just treating this as a standard off4 is immediately problematic, as it’s quite clear that the image data is not present in the file at all, the filesize is way too small. Thinking I’d have to reverse engineer the whole thing, this is where I got stuck. Then I remembered an old trick – sometimes the demos have more debug info than the production builds, usually because they’ve been put together in a rush. Sure enough, in the marketing file that contains the purcahse info, a mysterious TMPL file was present with this info:
Offset Version (300 for now)DWRD,
Block Word Size (usually 6, can be 12 or 18)DWRD
Number of Art StripsOCNT
Strip Type (1 = RLE)DWRD
Strip Res ID DWRD
*Low Cast Member (Maps To frame 0 of strip)DWRD
High cast member DWRD
Number of FramesOCNT
Block Offset of Frame Info (0 = empty frame)UWRD
6-byte blocks (1-based indexing)LSTB
Frame Offset, or FlagsUWRD
Bounds, left DWRD
Bounds, top DWRD
Bounds, right DWRD
Bounds, bottom DWRD
Count, or Cast# DWRD
So this appears to be a long and complex list, but essentially we can take this apart step by step. The format has been designed to be more flexible than needed, and I can see why they cut a lot of this out in later versions. Each file can specify slightly different compression sizes, and make reference to multiple ‘art strips’ – which are pointers to another file in the RLEP resource list. Each list can specify different compression types, but the main one is the RLE we already know. This then points to the filename of the RLEP file with the info, and where the first frame is in the file. The rest is reasonably self explanatory, listing where the frames are, any offset for the data from the RLEP, with the flags and dimensions as before.
I haven’t yet incorporated all this into code, because I haven’t begun to look at the RLEP but it sounds very similar to the original setup, with lots of little loops. Should be fun to actually get this in, then we should eb able to browse all YDKJ 1-4 assets, and start thinking about drawing them together into an engine.
11 thoughts on “Off3 – the original file format”
Please. Please tell me work on an extractor is still going on. I need, NEED to get the Jack Attack music, commercials, and maybe the Jack Bingo clips on my audio player. I’ve tried many tools, but I can’t figure out how to run ydkjx, and ydkjSRFExtra v0.1 seems broken. The wavs are distorted and the aifc files refuse to work period.
I have been looking into packaging this better, as development has stalled for now. The big problem, as you may have noticed, is that the Java runtimes aren’t great to run. If you go to the Github and download one of the big packages it should just work. Ironically, my day job has me documenting and repackaging a lot of Java stuff right now, so hopefully this should inspire me to get it done here too.
We’re talking about https://github.com/tuxuser/ydkjx, right? I tried downloading that, but honestly got lost trying to figure out how to run it. I don’t have much Java or programming experience. I did some work back in the days of DOS then lost the knack. Is there a guide with steps on how to use it properly? I managed to get ydkjSRFExtra working, but it adds an odd pop/click to the end of the Jack Attack clips, and I’m trying to make a master looped soundtrack version of each game.
Well, I meant https://github.com/james-wallace-ghub/ydkjx/releases/tag/v06a as that’s the live one, but yes.
Basically, if you just run that JAR a dialog box will pop up point it at an SRF and it’ll load a window with a long list of stuff down one side, sounds will play as you click their titles, or you can use the menu options to do anything else such as saving anything. That’s the quick guide anyway.
Excellent… the .wav files seem to add silence to the end, but I can convert the aifc files with Itunes until I find an easier way to batch convert under windows 10 x64.
Poking around… found most of the files I’m looking for. Still hunting for the short stems unique to each jack bingo, but I have all the attacks.
I’ll take a look – I had to pad the WAV files to fit a PCM boundary for tedious compatibility reasons (the whole point of writing it as a Jar was to let Mac and Windows work equally well, but in the real engine there’s a sync’d multithread player that cues one part up in advance to ride out the silence).
I did figure that out at one point RE: Bingo, will have to look again though, as I mostly focussed on the international games at the time.
The only other suggestion I’d have is adding a way to start-stop playback of files. The preview comes in handy, but when I’m browsing multiple files and they all play at once with no option to stop them, it gets a bit annoying. One last thing… I think I remember you from the Sierra forums, and then the unofficial fan forums. The gang’s back together and we have a discord server. I’d love to have to join and catch up, almost everyone’s there again. Let me know if you want the info, how best to contact.
Also, I’m interested in the technical aspects of 5th Dementia, if you’ve poked around that at all. I know it’s .dat files, and I have a virtual machine to run it, but some of the clips in there only played during the network play lobby… which can no longer be accessed thanks to the death of the server. Sorry if I’m overloading you with questions.
I’ve never looked at 5th Dementia, but if it’s anything like the WWTBAM games they did at that time, the .dat’s may just be MP3s As for a play bar, I really need to rework the interface of the whole thing at some point to make it work.
Hopefully 5th D might be looked at sometime, as that and Lost Gold are the last nuts to crack, and there is content in 5th D that is IMPOSSIBLE to access now. (SInce you cannot play an online game, all of the online lobby audio is locked away in a .dat I can’t open.) Hope progress continues. I would even honestly throw funds at you to keep this going.
Been a long long time. Dug deep into the files and made a sort of soundtrack for the community. The only things left are 5th D and Lost Gold. Both are fairly important now, since 5th D is no longer for sale, and Lost Gold no longer works at all under Windows 10.