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
| Region | Game Code | Status | SHA1 |
|---|---|---|---|
| ๐บ๐ธ NTSC-U | SCUS-94236 | โ Primary | 81cbc79f0230aeb4252e058039f47ac95a777f5a |
| ๐ช๐บ PAL | SCES-01330 | ๐ In progress | b8c3f4a5d2e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0 |
| ๐ฏ๐ต NTSC-J | SLPS-01443 | ๐ Planned | c9d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2 |
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
- Splat - Primary PSX disassembler
- TombaTools - Custom utilities for game files
- mkpsxiso - PSX ISO creation
- PSYQ SDK - Original PlayStation toolchain
- ๐จ 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)
- Python 3.8+ (for splat)
- Go 1.21+ (for tombatools)
- Make (optional, for automation)
- PSX Toolchain (PSYQ recommended)
- Clone the repository
git clone https://github.com/hansbonini/PSX_TOMBA.git
cd PSX_TOMBA-
Prepare the ISOs
- Place your Tomba! ISOs in the project root
- Supported ISOs:
Tomba! (USA).bin/cue,Tombi! (Europe).bin/cue
-
Install dependencies
# Install splat
cd tools/splat
pip install -r requirements.txt
# Compile tombatools
cd ../tombatools
make build- 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/๐ฉ๐ฉ๐ฉ๐จโฌโฌโฌโฌโฌโฌ 35% Complete
โ
Boot & System (100%)
โ
Main Engine (85%)
๐ Game Logic (45%)
๐ Graphics Engine (30%)
โฌ Audio System (15%)
โฌ Menu System (20%)
- 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)
Contributions are very welcome! Here are some ways to help:
- Use Issues to report problems
- Include detailed logs and steps to reproduce
- Fork the project
- Create a branch for your feature (
git checkout -b feature/new-feature) - Commit your changes (
git commit -am 'Add new feature') - Push to the branch (
git push origin feature/new-feature) - Open a Pull Request
- Improve this README
- Document discovered functions
- Create tutorials and guides
- Identify and name functions
- Document data structures
- Map execution flows
- Tomba.Club - Community wiki and resources
- PSX Development Wiki
- PSYQ Documentation
- Tomba! TCRF Page
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
- Hans Bonini - Project lead and main development
- 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
- ๐ฌ Discord: Tomba.Club
- ๐ Website: hansbonini.com.br