Skip to main content

Tools for extracting data from Media Station, Inc. CD-ROM titles (including Disney's Animated Storybook)

Project description

Disney's Animated Storybook: The Lion King Media Station

A Python-based asset extractor and very incomplete bytecode decompiler for Media Station, Inc. CD-ROM children's titles. I loved many of these when I was growing up.

Please join me in preserving these top-quality children's titles for future generations!

Installation

Get it on PyPI: pip3 install MediaStation

Usage

Installing the PyPI package also installs a MediaStation script that can be invoked from the command line as follows:

#             Input directory   Export directory
#            ................. ...................
MediaStation ~/DALMATIANS/DATA ~/DalmatiansExtract

Known Titles

See and contribute to the updated list on this projects's wiki.

Support My Reverse Engineering!

Buy Me A Coffee

If you like my reverse engineering, you can buy me a matcha latte to show your appreciation 🍵!

Technical Details

Please contribute if you have more details here!

File Formats

All the data files for known titles are stored in the data/ subdirectory on the CD-ROM. These seem to be the same across the Windows and Mac versions. Some titles have additional files than these (like Tonka Garage, which has some Direct3D models for the car design activity), but these are the known files and formats unique to the Media Station engine.

Media Station titles have these types of files:

  • Context files (*.CXT)
  • Title definition file (BOOT.STM)
  • Profile (PROFILE._ST) - ONLY non-OG titles.

Each context file generally contains all the assets (and, depending on the version, the scripts) necessary to render one screen of the game. Since the format seems to have been originally designed for Disney's Interactive Storybook, this makes sense.

Context Files

  • A context file contains one or more subfiles, which are each complete and (almost) standard RIFFs.
  • Each subfile inside a context file contains one or more (almost) standard RIFF _chunk_s.
    • igod: Indicates a chunk that contains metadata about asset(s) in metadata sections.
    • a000, where 000 is a string that represents a 3-digit hexadecimal number: Indicates a chunk that contains actual asset data (mainly sounds and bitmaps) with lower-level metadata in metadata sections.
  • Each chunk can contain the following:
    • One or more metadata sections.
    • Raw asset data (PCM audio or RLE-compressed bitmaps).
  • Each metadata section contains one or more _datum_s.
  • Each datum contains a "primitive" data type (integer, string, etc.)

Title Definition (System) File

Also known as the "system" file. Contains metadata sections with global title information like the following:

  • Title compiler version.
  • Declarations of each context file.
  • File offsets of all subfiles in all context files.
  • Declarations of cursors stored as resources in the executable.

Profile

When present, contains a human-readable enumeration of metadata like the following:

  • All the assets in the title, along with the IDs and chunk FourCC(s) for that asset.
  • Declarations of the variables, constants, cursors, and so forth used in the game.

This doesn't seem to be opened/read by the executables at all while the titles are running. But there is a ton of useful cross-checking info in here.

Motivation

I re-discovered these titles when I was finding Director titles for the ScummVM Director engine at GSoC 2020. Coincidentally, the main data file extension (*.CXT) used in Media Station titles is the same as that used for protected Director cast archives. I quickly discovered these weren't Director titles but something completely different - and so this project was born to preserve them.

Engine History

Coming soon! For now, the Disney's Animated Storybook article has great background on the early titles, sourced largely from Newton Lee's books.

Future Enhancements

  • The bytecode decompiler needs a ton of work.
  • Some script data seems to be stored in the executables. That should be extracted.
  • Write a wikipedia article about the defunct Michigan-based company Media Station, Inc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

MediaStation-0.9.1.tar.gz (81.8 kB view details)

Uploaded Source

Built Distribution

MediaStation-0.9.1-py3-none-any.whl (71.9 kB view details)

Uploaded Python 3

File details

Details for the file MediaStation-0.9.1.tar.gz.

File metadata

  • Download URL: MediaStation-0.9.1.tar.gz
  • Upload date:
  • Size: 81.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for MediaStation-0.9.1.tar.gz
Algorithm Hash digest
SHA256 69423b67bcf32c259ed542335a0936c3df20cf17b3453b1d8fea8830309e71bb
MD5 7fbb1a6b588ed2d1a1c4887805aa95d1
BLAKE2b-256 1a30e4f57ed5c3a7d3f61970f03882d9aff5e5aedd4194b66c1bb6a663e97dd1

See more details on using hashes here.

Provenance

File details

Details for the file MediaStation-0.9.1-py3-none-any.whl.

File metadata

  • Download URL: MediaStation-0.9.1-py3-none-any.whl
  • Upload date:
  • Size: 71.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.7

File hashes

Hashes for MediaStation-0.9.1-py3-none-any.whl
Algorithm Hash digest
SHA256 542047e27e6e254d14236454d2391c048a796e0f278c10526bb5dbea6407cc2c
MD5 f15c1b339a674dd69de571c86212f36f
BLAKE2b-256 906d3f9bd25985b51cf1d957e47ad6761b3f6e5e13a6144d95e53b1a86d8e38d

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page