Thanks to visit codestin.com
Credit goes to github.com

Skip to content

This is a WIP decompilation project of the Tomba! game (known as Ore! Tomba in Japan and Tombi! in Europe) for the original PlayStation.

Notifications You must be signed in to change notification settings

hansbonini/psx_tomba

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Tomba! PSX Decompilation

Tomba! Logo

Discord Progress License Platform

๐ŸŽฎ About the Project

This is a complete decompilation project of the Tomba! game (known as Ore no Tomba in Japan and Tombi! in Europe) for the original PlayStation. The goal is to create a fully functional and compilable version of the game's source code, enabling:

  • ๐Ÿ”ง Modifications and Improvements: Ability to create patches, translations, and game enhancements
  • ๐Ÿ“– Educational Study: Detailed analysis of 90s PSX game programming
  • ๐ŸŒ Preservation: Ensuring this classic is preserved for future generations
  • ๐ŸŽฏ Accuracy: Byte-perfect reproduction of the original executable

๐ŸŒ Supported Versions

Region Game Code Status SHA1
๐Ÿ‡บ๐Ÿ‡ธ NTSC-U SCUS-94236 โœ… Primary 81cbc79f0230aeb4252e058039f47ac95a777f5a
๐Ÿ‡ช๐Ÿ‡บ PAL SCES-01330 ๐Ÿ”„ In progress b8c3f4a5d2e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0
๐Ÿ‡ฏ๐Ÿ‡ต NTSC-J SLPS-01443 ๐Ÿ“‹ Planned c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2

๐Ÿ“ Project Structure

PSX_TOMBA/
โ”œโ”€โ”€ ๐Ÿ“ config/           # Splat configuration and symbols
โ”œโ”€โ”€ ๐Ÿ“ iso/              # Extracted ISO data (US, EU, JP)
โ”œโ”€โ”€ ๐Ÿ“ splat/            # Decompiled code by splat
โ”œโ”€โ”€ ๐Ÿ“ tools/            # Custom tools
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ splat/        # Splat disassembly tool
โ”‚   โ”œโ”€โ”€ ๐Ÿ“ tombatools/   # Tomba-specific utilities
โ”‚   โ””โ”€โ”€ ๐Ÿ“ mkpsxiso/     # PSX ISO reconstruction
โ”œโ”€โ”€ ๐Ÿ“„ *.bin/*.cue       # Original ISOs
โ””โ”€โ”€ ๐Ÿ“„ *.xml             # ISO build scripts

๐Ÿ› ๏ธ Tools Used

Core Tools

  • Splat - Primary PSX disassembler
  • TombaTools - Custom utilities for game files
  • mkpsxiso - PSX ISO creation
  • PSYQ SDK - Original PlayStation toolchain

TombaTools Features

  • ๐ŸŽจ WFM Font Processing:
    • Extract glyphs as PNG files with transparency support
    • Decode dialogues to YAML format with text and control codes
    • Encode YAML dialogues back to WFM format
    • Automatic glyph-to-character mapping
  • ๏ฟฝ GAM Archive Management:
    • Unpack compressed GAM files using custom LZ algorithm
    • Pack data back to GAM format with compression
    • Integrity verification and error checking
  • ๐Ÿ”ง Command-Line Interface:
    • Simple and intuitive commands for all operations
    • Verbose mode for detailed processing information
    • Cross-platform compatibility (Windows, Linux, macOS)

๐Ÿš€ Getting Started

Prerequisites

  • Python 3.8+ (for splat)
  • Go 1.21+ (for tombatools)
  • Make (optional, for automation)
  • PSX Toolchain (PSYQ recommended)

Initial Setup

  1. Clone the repository
git clone https://github.com/hansbonini/PSX_TOMBA.git
cd PSX_TOMBA
  1. Prepare the ISOs

    • Place your Tomba! ISOs in the project root
    • Supported ISOs: Tomba! (USA).bin/cue, Tombi! (Europe).bin/cue
  2. Install dependencies

# Install splat
cd tools/splat
pip install -r requirements.txt

# Compile tombatools
cd ../tombatools
make build
  1. Run initial extraction
# Extract ISO data
python tools/splat/split.py config/scus_942.36.yaml

# Extract GAM archive files
./tools/tombatools/tombatools.exe gam unpack iso/us/AREA00/A000.GAM ./extracted/A000.UNGAM

# Extract font files for analysis
./tools/tombatools/tombatools.exe wfm decode iso/us/SYSTEM/FONT.WFM ./fonts/

๐Ÿ“Š Decompilation Progress

SCUS-94236 (NTSC-U)

๐ŸŸฉ๐ŸŸฉ๐ŸŸฉ๐ŸŸจโฌœโฌœโฌœโฌœโฌœโฌœ 35% Complete

โœ… Boot & System      (100%)
โœ… Main Engine        (85%)
๐Ÿ”„ Game Logic         (45%)
๐Ÿ”„ Graphics Engine    (30%)
โฌœ Audio System       (15%)
โฌœ Menu System        (20%)

Details by Area

โฌœ Planned Areas (AREA00-19)

  • AREA00: Village of All Beginnings (5 sections)
  • AREA01: Dwarf Forest (5 sections)
  • AREA02: Dwarf Village (6 sections)
  • AREA03: Phoenix Mountain (6 sections)
  • AREA04: Haunted Mansion (20 sections)
  • AREA05: Baccus Village (4 sections)
  • AREA06: Motocross Segment (3 sections)
  • AREA07: Dwarf Forest (Purified) (5 sections)
  • AREA08: Baccus Lake (4 sections)
  • AREA09: Mushroom Village (7 sections)
  • AREA10: Deep Jungle (9 sections)
  • AREA11: Village of Civilization (3 sections)
  • AREA12: Haunted Mansion (Purified) (20 sections)
  • AREA13: Pig Island (2 sections)
  • AREA14: Evil Pigs (8 sections)
  • AREA15: Empty/Unused
  • AREA16: Village of Civilization - Clock Tower (7 sections)
  • AREA17: Village of Civilization - Iron Tower (11 sections)
  • AREA18: Village of Civilization - Y Crossing (3 sections)
  • AREA19: Hidden Village (3 sections)

๐Ÿค How to Contribute

Contributions are very welcome! Here are some ways to help:

๐Ÿ› Report Bugs

  • Use Issues to report problems
  • Include detailed logs and steps to reproduce

๐Ÿ’ป Code Contributions

  1. Fork the project
  2. Create a branch for your feature (git checkout -b feature/new-feature)
  3. Commit your changes (git commit -am 'Add new feature')
  4. Push to the branch (git push origin feature/new-feature)
  5. Open a Pull Request

๐Ÿ“ Documentation

  • Improve this README
  • Document discovered functions
  • Create tutorials and guides

๐Ÿ” Code Analysis

  • Identify and name functions
  • Document data structures
  • Map execution flows

๐Ÿ“š Resources and Documentation

Technical Documentation

External Resources

โš–๏ธ Legal Aspects

This project is intended exclusively for educational and preservation purposes.

  • โœ… Only use ISOs you legally own
  • โœ… Do not redistribute proprietary code
  • โœ… Respect Whoopee Camp/Sony copyrights
  • โš ๏ธ This project does not include proprietary assets or code

๐Ÿ† Credits and Acknowledgments

Core Team

  • Hans Bonini - Project lead and main development

Tools and Libraries

Special Thanks

  • zerovii - Material and explanations about WFM format
  • vervalkon - Material and explanations about quad polygon coordinates and GAM format
  • Xeeynamo - Castlevania decompilation project used as reference and example
  • LAB313Ru - PSX loader for Ghidra reverse engineering framework
  • ethteck - Creator of splat, the disassembler that makes this project possible
  • PCSX-Redux Team - Advanced PlayStation emulator with debugging capabilities
  • DuckStation Team - High-accuracy PlayStation emulator for testing and verification

๐Ÿ“ž Contact and Community


Tomba Running

"Let's catch all the evil pigs!" - Tomba

Made with ๐Ÿ’– by the game preservation community

About

This is a WIP decompilation project of the Tomba! game (known as Ore! Tomba in Japan and Tombi! in Europe) for the original PlayStation.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages