Puyo Puyo Tsu/Reverse Engineering
The accurate Puyo Puyo Tsu game mechanics and algorithms are currently being determined through a reverse engineering effort on the Genesis and Arcade version of the game (which are mostly the same with respect to all major aspects of gameplay).
This page summarizes the various aspects of the game that have been or are currently being analyzed, as well as various technical information about the platform and the process of reverse engineering.
Forum post are provided for reference, as they were what started this documentation effort. They may not be accurate and/or up to date.
Introduction
People willing to pursue a reverse engineering effort on Puyo Puyo Tsu might find interesting pointers throughout the following pages:
- Puyo Puyo Tsu/Hardware Platforms
- Puyo Puyo Tsu/Debugging and Reverse Engineering Tools
- Puyo Puyo Tsu/Reverse Engineering Process
- Puyo Puyo Tsu/Software Architecture
And on the forums:
Game memory
These pages explain stuff related to memory management, data structures and locations of interest:
- Puyo Puyo Tsu/Memory Mappings
- Puyo Puyo Tsu/Memory Structures (includes value definitions, such as color codes)
- Puyo Puyo Tsu/Memory Allocator
- Puyo Puyo Tsu/Game Options Variables
On the forums:
Frame data tables
The frame data tables are available on a dedicated page:
Direct access to the various subtables is provided below:
- Gamepad Input Repeat
- Rotation
- Drop speed
- Control lockout grace period
- Bouncing animation
- Pair split speed
- Free fall speed (gravity)
Game mechanics
So far, these game mechanics have been covered.
On randomization:
- Puyo Puyo Tsu/Random Number Generator
- Puyo Puyo Tsu/Upcoming Pair Randomizer
- Puyo Puyo Tsu/Falling Pair Spawning Process
On input handling:
On game physics while controlling the falling puyos:
- Puyo Puyo Tsu/Falling Pair Control
- Puyo Puyo Tsu/Pair Lateral Movement
- Puyo Puyo Tsu/Rotation, collision and push back
- Puyo Puyo Tsu/Soft Drop (with regular drop, bouncing animation and control lockout grace period)
- Puyo Puyo Tsu/Free fall
And the historical posts on the forums are:
- Random numbers: how it's done
- Upcoming pairs: how they are picked
- How baby puyos are made: from random generation to the board
- Memory allocation and memory structures
Game modification
Patches and Game Genie codes that modify the gameplay in interesting ways are discussed below:
On the forums:
Areas of interest
Those are upcoming topics of a particular interest about the game mechanics:
- Random number generation (RNG) throughout the game
- RNG biases and issues
- Score calculation
- Identification of routines implementing game mechanics
- Distribution algorithm of ojama puyos accross a row
- Frame data and timings for various game sequences
- chain resolving time with respect to column height and splitting
pair split / falloff speedinput lock period after pair placement (bouncing animation)- upcoming pair display lag
- upcoming pair control lag
rotation timings- grace period before garbage (ojama) drop
soft drop speed modifier (down arrow)- margin time: impact on garbage sent
- margin time: when does it occur / takes effect
- drop speed increase after x seconds
motion cancel
History
This project started out of curiosity about the randomization algorithm used in Puyo Puyo Tsu, and was published on the forums on August 27, 2013. The efforts evolved into analyzing various game mechanics in order to have an accurate understanding of the game's internals.