fuzziqersoftware / resource_dasm
Classic Mac OS resource fork and application disassembler, with reverse-engineering tools for specific applications
View on GitHubAI Architecture Analysis
This repository is indexed by RepoMind. By analyzing fuzziqersoftware/resource_dasm in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewresource_dasm This project contains multiple tools for reverse-engineering applications and games. Most of these tools are targeted at classic Mac OS (pre-OSX); a few are targeted at Nintendo GameCube games. The tools in this project are: • General tools • **resource_dasm**: A utility for working with classic Mac OS resources. It can read resources from classic Mac OS resource forks, AppleSingle/AppleDouble files, MacBinary files, Mohawk archives, or HIRF/RMF/IREZ/HSB archives, and convert the resources to modern formats and/or export them verbatim. It can also create and modify resource forks. • **libresource_file**: A library implementing most of resource_dasm's functionality. • **m68kdasm**: A 68K, PowerPC, x86, and SH-4 binary assembler and disassembler. m68kdasm can also disassemble some common executable formats. • **m68kexec**: A 68K, PowerPC, x86, and SH-4 CPU emulator and debugger. • **render_bits**: Renders raw data in a variety of color formats, including indexed formats. Useful for finding embedded images or understanding 2-dimensional arrays in unknown file formats. • **replace_clut**: Remaps an existing image from one indexed color space to another. • **assemble_images**: Combines multiple images into one. Useful for dealing with games that split large images into multiple smaller images due to format restrictions. • **dupe_finder**: Finds duplicate resources across multiple resource files. • Tools for specific formats • **render_text**: Renders text using bitmap fonts from FONT or NFNT resources. • **hypercard_dasm**: Disassembles HyperCard stacks and draws card images. • **decode_data**: Decodes some custom compression formats (see below). • **macbinary_decode**: Decodes MacBinary files. • **render_sprite**: Renders sprites from a variety of custom formats (see below). • **icon_unarchiver**: Exports icons from an Icon Archiver archive to .icns (see below). • **vrfsdump**: Extracts the contents of VRFS archives from Blobbo. • **gcmdump**: Extracts all files in a GCM file (GameCube disc image) or TGC file (embedded GameCube disc image). • **gcmasm**: Generates a GCM image from a directory tree. • **gvmdump**: Extracts all files in a GVM archive (from Phantasy Star Online) to the current directory, and converts the GVR textures to Windows BMP files. Also can decode individual GVR files outside of a GVM archive. • **rcfdump**: Extracts all files in a RCF archive (from The Simpsons: Hit and Run) to the current directory. • **smsdumpbanks**: Extracts the contents of JAudio instrument and waveform banks in AAF, BX, or BAA format (from Super Mario Sunshine, Luigi's Mansion, Pikmin, and other games). See "Using smssynth" for more information. • **smssynth**: Synthesizes and debugs music sequences in BMS format (from Super Mario Sunshine, Luigi's Mansion, Pikmin, and other games) or MIDI format (from classic Macintosh games). See "Using smssynth" for more information. • **modsynth**: Synthesizes and debugs music sequences in Protracker/Soundtracker MOD format. • Game map generators • **blobbo_render**: Generates maps from Blobbo levels. • **bugs_bannis_render**: Generates maps from Bugs Bannis levels. • **ferazel_render**: Generates maps from Ferazel's Wand world files. • **gamma_zee_render**: Generates maps of Gamma Zee mazes. • **harry_render**: Generates maps from Harry the Handsome Executive world files. • **infotron_render**: Generates maps from Infotron levels files. • **lemmings_render**: Generates maps from Lemmings and Oh No! More Lemmings levels and graphics files. • **mshines_render**: Generates maps from Monkey Shines world files. • **realmz_dasm**: Generates maps from Realmz scenarios and disassembles the scenario scripts into readable assembly-like syntax. Building • Install required dependencies: • Install zlib, if you somehow don't have it already. (macOS and most Linuxes come with it preinstalled, but some Linuxes like Raspbian may not. If your Linux doesn't have it, you can .) • Install CMake. • Build and install phosg (https://github.com/fuzziqersoftware/phosg). • Install optional dependencies: • Install Netpbm (http://netpbm.sourceforge.net/). This is only needed for converting PICT resources that resource_dasm can't decode by itself - if you don't care about PICTs, you can skip this step. Also, this is a runtime dependency only; you can install it later if you find that you need it, and you won't have to rebuild resource_dasm. • Install SDL3. This is only needed for modsynth and smssynth to be able to play songs live; without SDL, they will still build and can still generate WAV files. • Run , then . • If you're building another project that depends on resource_dasm, run . This project should build properly on sufficiently recent versions of macOS and Linux. Using resource_dasm resource_dasm is a disassembler for classic Mac OS resource forks. It extracts resources from the resource fork of any file and converts many classic Mac OS resource formats (images, sounds, text, etc.) into modern formats. **Examples:** • Export all resources from a specific file and convert them to modern formats (output is written to the \ .out directory by default): • Export all resources from all files in a folder, writing the output files into a parallel folder structure in the current directory: • Export a specific resource from a specific file, in both modern and original formats: • Export a PowerPC application's resources and disassemble its code: • Export all resources from a Mohawk archive: • Due to copying files across different types of filesystems, you might have a file's resource fork in the data fork of a separate file instead. To export resources from such a file: • Create a new resource file, with a few TEXT and clut resources: • Add a resource to an existing resource file: • Delete a resource from an existing resource file: This isn't all resource_dasm can do. Run it without any arguments (or look at in src/resource_dasm.cc) for a full description of all the op…