Puyo Puyo Tsuu (Arcade)
Puyo Puyo Tsuu (Arcade)
Puyo Puyo Tsuu |
---|
Developer: This game has debugging material. |
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 pretty much changed the way we play the game, and is still affecting us today...
Contents
1 Copy Protection
1.1 Sega Protection IC Detection
1.2 Disabling Garbage
1.3 Copy Protection Protection
2 Debug Menu
2.1 Debug Options
2.1.1 EXIT
2.1.2 UNIT
2.1.3 LINK VOLM
2.1.4 HARD
2.1.5 PRICE
2.1.6 OJAMA SCORE
2.1.7 RATE TYPE
2.1.8 CPU PLAYER
2.1.9 ZSTAGE
2.1.10 MONSTER
2.1.11 FLAME
Copy Protection
Puyo Puyo Tsuu features a few anti-piracy measures built in to 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.
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>
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? |
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.
The Puyo Puyo series | |
---|---|
Famicom Disk System | Puyo Puyo |
NES | Puyo Puyo |
Arcade | Puyo Puyo • Puyo Puyo Tsuu |
Genesis | Puyo Puyo • Dr. Robotnik's Mean Bean Machine • Puyo Puyo Tsuu |
Sega Master System | Dr. Robotnik's Mean Bean Machine |
Game Gear | Dr. Robotnik's Mean Bean Machine • Puyo Puyo • Nazo Puyo: Arle no Roux |
FM Towns | Puyo Puyo |
TurboGrafx-CD | Puyo Puyo CD |
SNES | Super Puyo Puyo • Kirby's Avalanche • Super Puyo Puyo Tsuu (Remix) Super Nazo Puyo • Super Nazo Puyo Tsuu |
Sega Saturn | Puyo Puyo Tsuu • Puyo Puyo Sun |
Nintendo 64 | Puyo Puyo~n Party |
Game Boy (Color) | Puyo Puyo • Pocket Puyo Puyo Tsuu • Pocket Puyo Puyo Sun • Pocket Puyo Puyo~n |
WonderSwan | Puyo Puyo Tsuu |
Neo Geo Pocket Color | Puyo Pop |
Dreamcast | Puyo Puyo~n • Puyo Puyo Fever |
Game Boy Advance | Puyo Pop |
PlayStation 2 | Puyo Pop Fever • Puyo Puyo Fever 2 • Sega Ages 2500 Series Vol. 12: Puyo Puyo Tsuu Perfect Set |
GameCube | Puyo Pop Fever |
Nintendo DS | Puyo Pop Fever • Puyo Puyo! 15th Anniversary |
PlayStation Portable | Puyo Puyo Fever 2 |
Nintendo 3DS | Puyo Puyo Chronicle |
PlayStation Vita | Puyo Puyo Tetris |
Categories:
- Games developed by Compile
- Games published by Sega
- Arcade games
- Games released in 1994
- Games with debugging functions
- Games with hidden level selects
- Games with anti-piracy methods
- Needs more images
- To do
- Puyo Puyo series
Cleanup > Needs more images
Cleanup > To do
Games > Games by content > Games with anti-piracy methods
Games > Games by content > Games with debugging functions
Games > Games by content > Games with hidden level selects
Games > Games by developer > Games developed by Compile
Games > Games by platform > Arcade games
Games > Games by publisher > Games published by Sega
Games > Games by release date > Games released in 1994
Games > Games by series > Puyo Puyo series
if(window.jQuery)jQuery.ready();if(window.mw){
mw.loader.state({"site":"loading","user":"ready","user.groups":"ready"});
}if(window.mw){
mw.loader.load(["mediawiki.toc","mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest","ext.uls.pt"],null,true);
}if(window.mw){
document.write("u003Cscript src="https://tcrf.net/load.php?debug=falseu0026amp;lang=enu0026amp;modules=siteu0026amp;only=scriptsu0026amp;skin=vectoru0026amp;*"u003Eu003C/scriptu003E");
}
var pkBaseURL = (("https:" == document.location.protocol) ? "https://stats.tcrf.net/" : "http://stats.tcrf.net/");
document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
try {
var piwikTracker = Piwik.getTracker(pkBaseURL + "piwik.php", 2);
piwikTracker.trackPageView();
piwikTracker.enableLinkTracking();
} catch( err ) {}
if(window.mw){
mw.config.set({"wgBackendResponseTime":332});
}