Skip to content
TeamGDBPublic

About

A native port of a PSP fighting game by static recompilation, built on PortableKit.

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Tenkawa

A native port of Dragon Ball Z: Tenkaichi Tag Team (PlayStation Portable) made by static recompilation: the game's PSP code is translated ahead of time into C++ and compiled for your machine, then run on a reimplementation of the PSP system software. It is not an emulator — there is no JIT at the heart of it — and it is not a decompilation.

Work in progress — not playable yet. Tenkawa is at the very start of its development. It boots and reaches the game's title screen, but it cannot be played, and you should expect crashes, missing features and breaking changes. It is published so that people can follow and help with the work, not to be played.

No game data is included. This repository contains no disc image, no executable, no code generated from the game, and no textures, models, audio or video from it. To build or run Tenkawa you need your own legally obtained copy of Dragon Ball Z: Tenkaichi Tag Team — the European release, ULES-01456 — as a disc image. Tenkawa is not affiliated with, endorsed by or sponsored by Sony Interactive Entertainment or the game's developers, publishers or licensors.

It is built on PortableKit, the shared recompiler and runtime, the same way Yakumo and Purun are.

There is an interpreter too, and early in a port's life it does the work: it runs the game before any of its code has been recompiled, which is how you find out what the game needs without waiting hours for a recompile first.

Status

It reaches the title screen, under the interpreter. It installs from a disc image, boots, runs its threads, reads the disc, shows its clock-frequency notice and memory-stick check, and draws its title screen correctly. The recompiled build runs its frame loop at full speed but does not draw yet (PortableKit#20), and nothing past the title has been reached. docs/MISSING.md is the list, most blocking first, and the issues are the work.

Tested on macOS on Apple Silicon, Vulkan through MoltenVK. Linux, Windows and the Steam Deck have not been tried
Imports the game makes 228, from 25 libraries
Of those, with no implementation run with TENKAWA_LIST_STUBS=1 to see them
Recompiled 8579 functions, 488049 addresses, 153 C++ units
Addresses the recompiler cannot lower the game's own 41 break traps, and nothing else

Building

You need an ISO image of your own UMD disc of the European release (ULES-01456), made with your own PSP — for example with a homebrew UMD dumping tool, or a custom firmware's USB mode that exposes the disc. The installer checks the disc id and the SHA-256 of the executable and refuses anything else. Nobody here can give you a copy or tell you where to get one.

The tools are PortableKit's: a C++20 compiler, CMake 3.20+, Ninja, Python 3, make, SDL3, a Vulkan loader and headers, and glslangValidator; ccache is strongly recommended. On macOS: brew install cmake ninja ccache python sdl3 molten-vk vulkan-loader vulkan-headers glslang. Purun's README lists the Linux and Windows equivalents, which are equally untested here.

git clone --recursive https://github.com/TeamGDB/Tenkawa.git
cd Tenkawa
cmake -S . -B out -G Ninja -DCMAKE_BUILD_TYPE=Release
cmake --build out -j2                                     # the bootstrap: minutes
out/bin/TenkawaNative --install /path/to/your/image.iso   # check the disc and prepare the executable
TENKAWA_INPUT_SCRIPT="600:pad a;700:pad a" out/bin/TenkawaNative

That runs the game under the interpreter, which is how the port is worked on today; the two scripted presses get it past the first notice. scripts/generate.sh out followed by another cmake --build out -j2 recompiles it, which takes hours and does not draw yet. Keep -j low: each recompiled unit needs more than a gigabyte to compile. PortableKit's docs/BUILDING.md explains where the time goes, and docs/BRINGING_UP_A_GAME.md how to work on a port that does not run yet.

Settings, the prepared executable and saves live in the data directory: ~/Library/Application Support/Tenkawa/DBZTTT on macOS, ~/.local/share/Tenkawa/DBZTTT on Linux, %APPDATA%\Tenkawa\DBZTTT on Windows. Every environment variable takes the TENKAWA_ prefix: TENKAWA_DATA_DIR, TENKAWA_GAME_DIR, TENKAWA_NO_RENDER, TENKAWA_NO_AUDIO, TENKAWA_LIST_STUBS, TENKAWA_PERF=log, TENKAWA_TRACE_*.

Reporting bugs and helping

Open an issue with the bug report form: platform, the commit you built (git describe --always --dirty) and the log (out/bin/TenkawaNative > run.log 2>&1). Never attach game files — no disc images, executables, saves, generated code, or audio and video taken from the game. Contributions are welcome; read CONTRIBUTING.md first. Most of the work is in PortableKit.

How the port is built

This repository is a profile: one file of constants describing the game (host/tenkawa_profile.cpp), and a four-line CMakeLists.txt. Everything else — the recompiler, the kernel, the system modules, the Vulkan renderer, audio, save data, ad hoc networking, the interface and the installer — is PortableKit, included here as the portablekit submodule.

Legal disclaimer

Tenkawa does not include any game assets or original game files: no disc image, no copy of the game's executable or data, and no textures, models, audio or video from the game. You must provide the files from your own legally obtained copy of Dragon Ball Z: Tenkaichi Tag Team to install or build Tenkawa; the installer checks that copy and accepts only the original release.

Users are solely responsible for obtaining, dumping, extracting, and using their game copy in accordance with the laws applicable in their jurisdiction.

Tenkawa does not support, provide, link to, or encourage the use of unauthorized or pirated copies of the game.

Tenkawa is an independent project. It is not affiliated with, endorsed by or sponsored by Sony Interactive Entertainment, or by the developers, publishers or licensors of Dragon Ball Z: Tenkaichi Tag Team. PlayStation and PSP are trademarks of Sony Interactive Entertainment; Dragon Ball Z is a trademark of its owner. Any references to the original game or its trademarks are made solely for identification, compatibility, and interoperability purposes.

Screenshots and other depictions of the original game may be used solely to document or demonstrate Tenkawa's functionality. All depicted third-party game content remains the property of its respective rights holders.

The license covering Tenkawa applies only to the project's own original code and materials and does not grant any rights to third-party intellectual property.

Tenkawa provides the software, not the game. You must provide your own legally obtained copy.

Tenkawa's own code is MIT licensed; see LICENSE. PortableKit and the third-party components it uses keep their own licences; see PortableKit's docs/SOURCE_PROVENANCE.md.

About

A native port of a PSP fighting game by static recompilation, built on PortableKit.

Resources

Contributing

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages