We have upgraded to the latest version of MediaWiki and now support TLS1.2 and transcoding!
Please contact us via Discord or Twitter if you experience any problems.

Puyo Puyo Tsuu (Arcade)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Puyo Puyo Tsuu

Developer: Compile
Publisher: Sega
Platform: Arcade (Sega System C2)
Released in JP: October 1994


DebugIcon.png This game has debugging material.
LevelSelectIcon.png This game has a hidden level select.
PiracyIcon.png This game has anti-piracy features.


Careful, you'll lose an eye.
This page or section needs more images.
There's a whole lotta words here, but not enough pictures. Please fix this.

The second game in the Puyo Puyo series. Its addition of the rather simple offset rule completely revolutionized the game, and would come to define the series.

Copy Protection

Puyo Puyo Tsuu features a few anti-piracy measures built into the game.

Sega Protection IC Detection

All System C2 games feature an Altera MAX EPM5032 that is responsible for handling some video controls, but it also contains a 256 x 4 bit table of values unique to each game. Reads from $800001 return a 4-bit value, the index of which is calculated from both the second-to-last thing written to $800001 (upper four bits) and the previously returned value (lower four bits). It is up to the game to implement consequences should the protection check fail, as the C2 hardware will not lock up in such a circumstance. Some of the responsible code is obfuscated through relative addressing of unclear addresses.

Disabling Garbage

Puyo Puyo Tsuu's innovation over Puyo Puyo is that the garbage system has Sousai, the ability to return garbage, in addition to the pre-existing garbage system. If the game's table of expected return values does not match what the game reads, it will set memory address $FFA026 to 1, which disables the garbage system entirely. This effectively transforms a match into two single-player practice matches, making the game nearly unplayable. This subtle change means it is easy to burn the ROMs to a C2 board and think it's working initially, only to find later that the game isn't working correctly.

Copy Protection Protection

If a would-be bootlegger modifies the protection check routine, the garbage system will be made to work again. However, the protection check itself has an anti-tampering detection, run right before a match begins. This anti-tampering detection will once more set the "no-garbage" flag at $FFA026, and will also set an additional flag to indicate tampering. That flag makes the game lock up when the player wins a match.

PuyoPuy2-AntiTamperStuck.png

The game is not truly frozen, as elements continue to animate, but the player sprites will never appear on-screen to say a losing phrase and fall off before proceeding. Instead, the losing player's lost animation will play in the center portrait, and both sides remain empty forever.

Debug Menu

A debug menu titled "MODE SELECT" is hidden below the "BACKUP DATA CLEAR" option in the test menu. It can be accessed by putting the following cheat in MAME's puyopuy2.xml cheat file:

<cheat desc="Unlock Debug Menu">
	<comment>Select the invisible option at the bottom of Test Menu</comment>
	<script state="run">
		<action>maincpu.mb@002AF6=09</action>
	</script>
</cheat>
(Source: pcheat0914)

Changes made in this menu are saved to the backup RAM of the arcade board, and will remain active until you change the debug options again or clear the backup RAM via the "BACKUP DATA CLEAR" option. The "MEMORY SWITCH CLEAR" option in the "CUSTOM" menu does not reset the debug options.

Debug Options

EXIT

Return to the main menu.

UNIT

Rule lock and customize option. When this option has a non-zero value, the game rule is locked to the one you selected and/or customized, regardless of the current game mode. When you change this option, the settings from "LINK VOLM" to "RATE TYPE" will be changed based on the UNIT you selected. You can make additional changes to your liking, but your changes will be erased if you select other UNITs.

UNIT LINK VOLM HARD PRICE OJAMA SCORE RATE TYPE Used in...
0 004 NORMAL 070 000 1 (Default; Rules are not locked and your changes are ignored)
1 004 NORMAL 070 000 1 2P Normal Rule
2 002 SPECIAL 070 000 1 Unused
3 003 NORMAL 070 030 1 Unused
4 004 SPECIAL 140 010 1 2P Hard Puyo Rule
5 004 SPECIAL 180 030 2 Unused?
6 004 NORMAL 120 050 2 2P Point Puyo Rule
7 004 NORMAL 180 030 3 1P Point Puyo Rule
8 004 FUTA 120 010 3 1P Hard Puyo Rule #1
9 004 SPECIAL 120 010 3 1P Hard Puyo Rule #2
A 004 NORMAL 120 000 3 1P Normal Rule
B 004 FUTA 100 010 1 Unused?
Hmmm...
To do:
I'm not really sure if UNIT 5 and B are unused or not.

LINK VOLM

Select the number of Puyos required to clear the group of it. The only value used during normal game play is obviously 004, but you can change it from 001 to 072.

HARD

Select the toughness of Nuisance Puyo.

  • NORMAL: Regular Nuisance Puyo only.
  • FUTA: Hard Puyos on top row, the rest are regular Nuisance Puyos.
  • SPECIAL: Hard Puyo only.

PRICE

Select the points required to send one Nuisance Puyo. Ranges from 001 to 255.

OJAMA SCORE

Select the bonus points given from clearing the Nuisance Puyo. Ranges from 000 to 255.

RATE TYPE

Select which Chain Power Table to use.

  • 1:Multiplayer Normal
  • 2:Multiplayer Point Puyo
  • 3:Singleplayer

CPU PLAYER

Select the demo play AI. Ranges from 000 to 031. Default is 023 (Witch). Masked Satan (032) is strangely absent from this setting.

ZSTAGE

Level select for single player mode. This doesn't seem to include any secret boss fights or Masked Satan fights.

The game starts from various number of Stage numbers. If you beat the game while skipping earlier stages (ex. directly starting from final boss and winning), you will see bunch of bogus fight records against various characters such as Skeleton-T, Samurai Mole, and Masked Satan.

ZSTAGE Level Stage Notes
OFF 1 1 (Default)
000 1 1 Start from Level 1
001 1 2
002 1 3
003 1 4
004 1 5
005 1 6
006 1 7
007 1 8
008 1 9
009 2 2 Start from Level 2
010 2 3
011 2 4
012 2 5
013 2 6
014 2 7
015 2 8
016 3 3 Start from Level 3
017 3 4
018 3 5
019 3 6
020 3 7
021 3 8
022 4 4 Start from Level 4
023 4 5
024 4 6
025 4 7
026 4 8
027 5 5 Start from Level 5
028 5 6
029 5 7
030 6 6 vs. Schezo Wegey
031 6 7 vs. Rulue
032 6 8 vs. Satan

MONSTER

Lock the opponent character to the specific one. If you select someone other than Satan and Masked Satan then beat the game, you will get a bad ending, because the game chooses the ending based on what character you fought during the final battle.

MONSTER Name
OFF (Default; No opponent lock)
000 Will O Wisp
001 Momomo
002 Nohoho
003 Nomi
004 Skeleton-T
005 Mini Zombie
006 Nasu Grave
007 Sukiyapodes
008 Samurai Mole
009 Mummy
010 Owl Bear
011 Baromett
012 Trio the Banshee
013 Fufufu
014 Cait Sith
015 Zombie
016 Panotty
017 Sasori Man
018 Suketoudara
019 Uroko Sakana Bito
020 Harpy
021 Parara
022 Dragon
023 Witch
024 Pakista
025 Draco Centaur
026 Rulue
027 Minotaur
028 Zoh Daimaoh
029 Mamono
030 Schezo Wegey
031 Satan
032 Masked Satan

FLAME

Unknown. This is the only option that does not get saved to the backup RAM. Default value is 000 and the range is 000 to 013.