Skip to content

haywirephoenix/MMUCS

Repository files navigation

MMUCS

MMUCS

Modular Media Unpacker Content Studio

A modular environment for the analysis, extraction, and visualization of legacy media formats and SCUMM engine assets.

GitHub License Download Latest Release

Table of Contents


Overview

MMUCS (Modular Media Unpacker Content Studio) is a Godot-powered tool designed to deconstruct, visualize, and analyze SCUMM-based media architectures.

Why I Built This I originally built MMUCS to aid my own pursuit of modding The Curse of Monkey Island (COMI), with the ultimate goal of creating extended background art and higher-resolution sprites. Because I focused and tested exclusively within the context of COMI (SCUMM v8), the scope and codebase have remained slim.

As a result, it will most likely not work as expected with other SCUMM games out of the box—though adapting it to support other titles is entirely possible. I'm sharing this prematurely with the community by request, so please keep in mind that it is by no means complete!


Key Features

Inspect

  • Block Hierarchy Visualization: Navigate the internal structural tree of media files using the BlockHierarchyPanel, allowing you to see how data segments are nested and organized.
  • Metadata Analysis: Instantly access embedded headers, tags, and descriptive data via the MetadataPanel, providing context to the raw binary streams.
  • Raw Data Transparency: Use the integrated HexPanel for low-level binary inspection when precision is required at the byte level.

Visualize

  • AKOS Viewer: A dedicated AkosViewerPanel for inspecting and playing back legacy AKOS animation data, complete with specialized caching (AkosCelCache) for smooth performance.
  • Room & Background Preview: Visualize spatial assets and environments through the RoomPreviewPanel, utilizing a ScummBackgroundCache to ensure rapid asset switching and high responsiveness.
  • Indexed Rendering Pipeline: Specialized IndexedRenderer and IndexedSurface utilities facilitate the accurate representation of palette-indexed legacy graphics on modern displays.

Flow

  • Floating UI System: A flexible interface utilizing FloatingPanel and WindowManager that allows users to customize their layout, docking or undocking tools as needed for their specific workflow.
  • Dynamic Theming: Switch between aesthetics with the Options Window, supported by custom styleboxes and shaders.
  • Zoomable Viewports: High-precision inspection of visual assets is made possible through ZoomableViewport utilities, ensuring every pixel can be scrutinized.

Getting Started

Download the latest release here :

Download Latest Release

Usage

Loading Resources

  1. Launch the application from the Godot editor or exported binary.
  2. The file dialog will automatically appear.
  3. Navigate to the root of your extracted COMI directory and chose any .LA0 file.
  4. The ScummResourceParser will begin indexing the file, and the BlockHierarchyPanel will populate with detected data segments.

Visualizing

  1. Within the BlockHierarchyPanel, browse through the tree. You can navigate with the keyboard or mouse.
  2. When an LFLF or ROOM block is selected, the RoomPreviewPanel will automatically populate.
  3. Inside an LFLF block, you will often find AKOS blocks. Selecting one of those will automatically populate the AkosViewerPanel where you can cycle through the cels.

Customizing the UI

  • Rearrange Windows: Click and drag any FloatingPanel to rearrange your workspace. Grab its edges to resize.
  • Adjust Appearance: Navigate to the OptionsPanel to modify theme settings via the ThemeManager.
  • Inspect Raw Data: Select any block to see its byte-level representation in the HexPanel or its metadata in the MetadataPanel.

Contributing

Contributions welcome! Whether you are an expert in legacy formats or a UI/UX designer, your input is valuable.

For any SCUMM veterans out there, please verify my metadata descriptions in ScummTag - Some are my best guess. Also see ScummMeta as the new type-safe format which may need expanding.

Please let me know if I missed any decoding formats in Scumm V8 - feel free to add more decoders.


Todo/Ideas

  • Add export functionality - decoding is done.
  • Add OBIM decoding and display in Room panel
  • Add hotspots etc to Room panel
  • Update UI config - not all settings persist yet
  • Improve UI flow and reliability
  • Window size and position can be stored
  • Unify base window into own scene, and make each window type a variant
  • Maybe make Akos animations playable - instructions are decoded
  • Add more wallpapers
  • Script decoder
  • SCUMM Runner

License

This project is licensed under the PolyForm Noncommercial License 1.0.0 - see the LICENSE.md file for complete details.

What this means:

  • Commercial use: You cannot use this project or its code for commercial purposes or financial gain.
  • Modification: You can modify the code to suit your specific unpacking and SCUMM data-exploration needs.
  • Distribution: You can distribute this software freely for non-commercial purposes.
  • Hobby & Personal use: You can use this project privately for hobby projects, amateur pursuits, research, or gaming preservation.
  • ⚠️ Liability: The software is provided "as is", without warranty of any kind.
  • ⚠️ Patent Defense: If you make a patent infringement claim against this software, your license ends immediately.

⬆️ Back to Top

About

MMUCS is a Scumm V8 game content explorer

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors