Puyo Puyo™ Tetris® 2 Guide

How to edit the Adventure Mode cutscenes for Puyo Puyo™ Tetris® 2

How to edit the Adventure Mode cutscenes

Overview

Guide on how to create your own Puyo Puyo Tetris 2 cutscenes

Getting Started

Required tools

Puyo Pac[github.com]
Puyo Text Editor[github.com]
Eternity Audio Tool (you need to google this)

Notepad++ (optional)[notepad-plus-plus.org]
puyo language for Notepad++ (also optional)[github.com]

The first thing we need to do is extract the scripts located in the folder:

PuyoPuyoTetris2imagex64rawscriptadventure

The scripts are inside in the chapterXX.pac files, so drag & drop the pac file you want to extract into puyo-pac’s extract.cmd. Type the folder name you want the scripts to be extracted to and press Enter.

Now inside that folder you have the .pss files you need to modify. You can open these with any text editing software but i highly recommend notepad++ because of its “user defined language” feature, so make sure to install that[superuser.com] to make your life easier.

Available Commands

Now that we have access to the .pss files and we have notepad++ with the puyo language installed (or not, up to you i guess) we can begin modifying the scripts.

Here’s a list of some of the commands you have available and what they do:

Basic Syntax

int [name] [initial value]

– Declares an integer variable with the given initial value

set [variable name] [value]

– Gives the variable a specific value.

[add or dec] [variable name] [value] [value]

– Saves the result into the variable. The values can also be replaced with variables themselves.

Background

MzStartDemoDarkness

– Fade-In effect at the start.

LoadBGM [track index number]

– Loads a BGM into memory.

PlayBGM [bgm] [fade-in time in frames]

– Plays BGM.

PlaySE [SE]

– Play a sound effect.

Stop SE [SE]

– Stops playing a sound effect (needed when SE loops and you want it to stop)

MzSetBG [background index number]

– Changes the background.

MzEffectAll [effect]

– Plays an effect in the background.

MzWaitEffectAll

– Waits for the effect to finish before executing the next command.

Character

MzLoadChr [slot] [character index]

– Loads a character into memory in the slot specified. When referring to this character you need to refer to the slot assigned.

MzLoadChrPos [slot] 12 0

– Used to load Jay & Elle (yes literally an entirely different command to load these two)

MzEnterChr [slot] [left or right]

– A character enters the scene.
0 – right
1 – left

MzExitChr [left or right]

– A character leaves the scene.
0 – right
1 – left

MzWaitChr [left or right]

-Waits for the character before continuing
0 – right
1 – left

MzAttentionChr [left or right]

– A character is highlighted.
0 – right
1 – left

MzChangeAnime [left or right] [pose index]

– Change character animation.
0 – right
1 – left

MzEffectChr [left or right] [effect]

– Plays an effect on the character.
(can also be used to remove the effect with MzEffectChr [left or right] -1)
0 – right
1 – left

Text

MzSetText [text name] [speaker] [style] 0 0

– Speech bubble.

If you look at the corresponding manzai text for the chapter you’re editing, you will find every text line has a <text name=”[something]”>, you need to type the name of the text in [text name].
Then after that, who is speaking, the character on the left, right or both.
0 – right
1 – left
2 – both

And finally the style of the speech bubble:
0 – normal
1 – exclimation
2 – thoughts

After that the game expects two 0s for some reason, so just put 0 0 at the end.

MzWaitText

– Waits for the speech bubble before executing the next command.

There are more commands available, you can mess around with them if you want but these are the ones we can use for basic scenes

Index values

Here are the index values you will need for things like characters, or music, or backgrounds

Character indexes
0 Ringo
1 Risukuma
2 Maguro
3 Amitie
4 Klug
5 Sig
6 Arle
7 Suketoudara
8 Schezo
9 Draco
10 Witch
11 Lemres
12 Jay & Elle (You need a specific command to load them “MzLoadChrPos”)
13 Ai
14 Ess
15 Zed
16 O
17 Tee
18 Raffina
19 Rulue
20 Feli
21 Satan
22 Ecolo
23 Ex
24 Carbuncle
25 Marle
26 Squares
27 Ally
28 Lidelle

Background indexes

Music indexes
(I used the names from the playlist on youtube)









Sound Effect indexes
0 – Alarm (this will loop)
1 – Crash
2 – Fall
3 – Impact
4 – Shock
5 – Think
6 – Smash
7 – Step
8 – Warp
9 – Flintstones Run

Character animations
(I used a sound effect every time i change the animation, so you’re gonna have to count lol. Starts at 0 being the neutral pose they start with)

Text editing

Check the text editing guide made by Nick for a more in-depth text editing guide.
But basically you need to extrac the text .pac located in:

PuyoPuyoTetris2imagex64rawtexttext_common_[language].pac

With Puyo Pac, drag & drop the file to extract.cmd and type a folder name.
You will get a bunch of .cnvrs-text files. You need the one called chapterXX.cnvrs-text XX being the chapter you’re editing. In this case i will be doing chapter 1.

Now drag & drop the .cnvrs-text into PuyoTextEditor.exe and it will generate an .xml file.
Open that with notepad++ (or normal notepad if you want) and edit the lines you want.

Make sure to keep track of the name of the text you’re editing.

Here i’ve modified these lines for my cutscene.

Now drag & drop the .xml back to PuyoTextEditor.exe and repack the .pac file with PuyoPac’s create.cmd (just drag and drop the folder) and replace the original text_common pac

Creating a Cutscene

Now let’s start making a basic cutscene.

For this tutorial i’m gonna make a basic cutscene with amitie carbuncle and arle. they say a few lines, they make a few faces and it ends

I like to start with a blank script, so i usually delete everything from the .pss file and start by creating three functions.

They need to be called:
– main
– phase_manzai_init
– phase_manzai_main

Like so:

: main ; : phase_manzai_init ; : phase_manzai_main ;

main

We will be using main to load characters, BGM, or set the background like so:

: main MzLoadChr 6 6 /* Arle */ MzLoadChr 24 24 /* Carbuncle */ MzLoadChr 3 3 /* Amitie */ LoadBGM 7 MzSetBG 20 ;

what i like to do next is make variables for my characters and left & right to make the code a little more readable.

: main MzLoadChr 6 6 /* Arle */ MzLoadChr 24 24 /* Carbuncle */ MzLoadChr 3 3 /* Amitie */ int arle 6 int carbuncle 24 int amitie 3 int left 1 int right 0 int both 2 LoadBGM 7 MzSetBG 20 ;

phase_manzai_init

I use this to start playing the BGM selected, set the fade-in effect and not much else.

: phase_manzai_init PlayBGM 7 20 MzStartDemoDarkness /* Fade-In Effect */ ;

phase_manzai_main

This is where we will create the cutscene itself.

The first thing i want to do is have the characters show up and say a few lines and then have amitie enter say two things and leave. I’ve added comments to my code to make it easier for you.

: phase_manzai_main wait 60 /* waits 60 frames (1 second) */ MzEnterChr left arle /* Arle enters */ MzEnterChr right carbuncle /* Carbuncle enters */ MzSetText “manzai_001_001_001” left 2 0 0 /* arle thinks */ MzWaitText MzSetText “manzai_001_001_002” right 1 0 0 /* carbucle shouts! */ MzWaitText MzSetText “manzai_001_001_003” left 0 0 0 /* arle speaks */ MzWaitText MzExitChr right /* carbuncle leaves */ MzWaitChr right /* waits for carbuncle to leave */ MzEnterChr right amitie /* amitie enters */ MzWaitText MzSetText “manzai_001_001_004” right 0 0 0 /* amitie speaks */ MzWaitText MzSetText “manzai_001_001_005” left 0 0 0 /* arle speaks */ MzWaitText MzSetText “manzai_001_001_006” right 0 0 0 /* amitie speaks */ MzWaitText MzExitChr right /* amitie leaves */ MzWaitChr right ;

Now we can start by changing animations and effects.

: phase_manzai_main wait 60 MzEnterChr left arle MzEnterChr right carbuncle MzChangeAnime left 1 /* arle happy */ MzSetText “manzai_001_001_001” left 2 0 0 MzWaitText MzChangeAnime right 2 /* carbuncle happy */ MzSetText “manzai_001_001_002” right 1 0 0 MzWaitText MzChangeAnime left 3 /* arle pointing*/ MzSetText “manzai_001_001_003” left 0 0 0 MzWaitText MzExitChr right MzWaitChr right MzEnterChr right amitie MzChangeAnime right 3 /* amitie pointing */ MzSetText “manzai_001_001_004” right 0 0 0 MzWaitText MzChangeAnime left 5 /* arle surprised*/ MzSetText “manzai_001_001_005” left 0 0 0 MzWaitText MzSetText “manzai_001_001_006” right 0 0 0 MzWaitText MzExitChr right MzWaitChr right ;

Now that we have our cutscene and we want to see how it plays in-game, just repack the chapterXX.pac by dragging and dropping the folder with all the scripts into create.cmd, then type the name of the pac and press Enter.
Now replace the old .pac with your newly created pac and boot up the game.

This would result in the next cutscene: As you can see, it still has the audio from the original scene. so next we’ll change the voice clips.

Voice Editing

One of the last things to do is usually change the voices. First we need to locate the voice clips for the corresponding chapter we’re editing. (in my case it’s chapter 1)
Check the audio editing guide for a more in-depth guide on audio editing.

Voices are located in:

PuyoPuyoTetris2imagex64rawsound

Named Mz_voiceXX_[en or jp].acb and Mz_voiceXX_[en or jp].awb where XX is the chapter number (in my case 01)

First of all make sure to make a backup.
Open your acb file with Eternity Audio Tool (file > open)
You will see a list of all the voice clips used in that chapter of the game. You can double click the clip to play it.

To replace the voice clip, select it and click “replace”
after that choose a .wav file with your voice clip and hit select.

Then go to file > save and your changes will be saved into the .awb & .acb files.

Conclusion

Now you know how to make Puyo Puyo Tetris 2 cutscenes!

If you have any question feel free to ask. You can also reach out in the Puyo Modding discord server.
[link]

Have fun!

SteamSolo.com