If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Puyo Puyo Tsuu (Arcade)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Puyo Puyo Tsuu

Developer: Compile
Publisher: Compile
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.
Hmmm...
To do:
The arcade version has unused audio clips that were carried over to the Genesis version. Upload them.

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

PuyoPuyoTsuu-Arcade-DebugMenu.png

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 ZSTAGE Level Stage Notes
OFF 1 1 (Default) 016 3 3 Start from Level 3
000 1 1 Start from Level 1 017 3 4
001 1 2 018 3 5
002 1 3 019 3 6
003 1 4 020 3 7
004 1 5 021 3 8
005 1 6 022 4 4 Start from Level 4
006 1 7 023 4 5
007 1 8 024 4 6
008 1 9 025 4 7
009 2 2 Start from Level 2 026 4 8
010 2 3 027 5 5 Start from Level 5
011 2 4 028 5 6
012 2 5 029 5 7
013 2 6 030 6 6 vs. Schezo Wegey
014 2 7 031 6 7 vs. Rulue
015 2 8 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 MONSTER Name
OFF (Default; No opponent lock) 016 Panotty
000 Will O Wisp 017 Sasori Man
001 Momomo 018 Suketoudara
002 Nohoho 019 Uroko Sakana Bito
003 Nomi 020 Harpy
004 Skeleton-T 021 Parara
005 Mini Zombie 022 Dragon
006 Nasu Grave 023 Witch
007 Sukiyapodes 024 Pakista
008 Samurai Mole 025 Draco Centaur
009 Mummy 026 Rulue
010 Owl Bear 027 Minotaur
011 Baromett 028 Zoh Daimaoh
012 Trio the Banshee 029 Mamono
013 Fufufu 030 Schezo Wegey
014 Cait Sith 031 Satan
015 Zombie 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.