EVT

From Amicitia Wiki
EVT Format
Purpose Event (Cutscene) Format
Games Persona 5
Persona 5 Royal
Developer Atlus

EVT is a binary event format used by Atlus in Persona 5. It is used to setup cameras, objects, animations, dialog and more in cutscenes where you can't control the character. In other circumstances where dialog is shown but you still briefly control the character, those scenes are likely using BF instead.

Location

Persona 5's EVTs can be found in the PAC files in data.cpk/event.

Tools

EVTEditor

EVTEditor is a program by ShrineFox based on TGE's EvtTool, featuring a GUI with a timeline. You can open an event PAK or EVT with it to add, modify and reschedule commands and objects. If the event PAK contains a BMD, you can edit the decompiled text on the fly. Download it here.

EvtTool

EvtTool is a program by TGE that dumps the contents of an EVT, ECS or LSD binary to an editable JSON file, which can be opened with a text editor such as Notepad++. By dragging an EVT onto the EXE, a JSON will be generated (and vice versa). You can download EvtTool here.

Alternatively you can use the program through the commandline by passing in the file path to either an EVT or a JSON file (in case you want to batch the conversion, for example).

P5_EVT_ECS.bt

A binary template for 010 Editor can be used to study the structure of an EVT/ECS file while hex editing. Download that here.

Format

The beginning of an EVT file is comprised of event parameters (such as ids, duration), followed by object definitions (object ID, type, resource IDs, animation IDs).

After those, commands make use of the object ids to set positions, play animations, execute script procedures and show messages. Each command has its own specific parameters and a short descriptor (e.g. MSD_).

Below are a list of all commands and their functions (to the best of our knowledge).

Command Description
AlEf Alarm Effect. Makes a red filter fade on and off the screen, sort of like an alarm.

Field04 = Effect type? (valid values are 1 and 2). One seems to be the most prominent. This is the only parameter the game reads for this command.

CAA_ Camera Add Asset. Only the first 4 Parameters are read by the game
CAR_ Camera Add Reset. Only Field00 is read by the game
CClp Camera Clip plane. Parameters set the distance from the camera that models are made invisible. Can cause some unaffected models to become blurry for some reason.

Field00 and Field04 are not read by the game. Field08 = Near Clip.

Field0C = Far Clip.

Chap Chapter. This command marks event frames that the player can skip to. Doesn't take any parameters.
Cht_ Chat. Brings up chat messages? Field04 is the only parameter read by the game

Field04 = Some type of mode? valid values are 1-5

CMCn Camera Movement Continuous? Moves the camera for a specified amount of time. Only Field04 and Field08 are read by the game

Field04 = Direction Index

Directions
1 Forward
2 Back
3 Left
4 Right
5 Up
6 Down

Field08 = Distance

CMD_ Camera Move Direct.
CQuk Cam Quake. Can shake the camera with different intensities, angles, and intensity easing duration. Field00, Field10 and params after aren't read by the game

Field04 = Quake Intensity Field08 = Quake Angle Field0C = Quake Ease Duration

CSA_ Camera Set Asset? Starts an animation from the camera object's animation list. (requires a ParticlePak object that references a GMD in the CAMERA folder)
CSD_ Camera Set Direct. Sets up camera parameters such as position, rotation, fov.
CSEc Camera Set Evtcmr. Field08 is for the EVT asset id of a camera object
CShk Camera Shake.

Field0C = X axis shake speed.

Field10 = Y axis shake speed.

CwCl Unsure, Only Field00 and Field04 are read
CwD_ Royal Only.
CwHt
CwP_
Date Hides/Shows the date on the top right of the screen.

Data->Field04 = 2 seems to disable it, 258 seems to enable it.

EAlp Effect Alpha. Changes the opacity of an effect/particle EPL.

Field04 = The opacity of the effect, from 0 (invisible) to 255 (fully visible).

ELd_ Effect Load? Loads and plays an effect/particle EPL. None of the parameters are read except for the "ObjectId" value.
EMD_ Effect Move Direct.
EnBc Environment Background Color. Adjusts the color outside of the skybox.

Field0C = Color. Get a hex color from a color picker, then use a calculator like this one to convert from hex to decimal. When converting, put an extra "FF" on the end of the hex value.

EnCc Environment Color Correction. Adjusts the strengths of different hues.
EnDf Environment Depth of Field. Adjusts how blurry things get at certain distances from the camera
EnFD Environment Fog Distance. Adjusts the thickness and color of fog
EnFH Env Fog Height.
EnHd Environment HDR. Makes light sources brighter and more "blurry", causing more light spill.

Some fields (10 & 28, 14 & 38, and 18 & 1C) seem to control similar values, so it might be hard to tell the difference.

Field10 = Flare Intensity?

Field14 = Bloom Intensity?

Field18 = Makes objects less specular?

Field1C = Makes objects less specular?

Field20 = Max flare angles shown at once (0-1 locks flare to camera), max value of 4. More than that crashes the game.

Field24 = Flare Length

Field28 = Flare Intensity?

Field2C = Flare Saturation

Field30 = Flare Rotation

Field34 = Light Spill?

Field38 = Bloom Intensity?

EnL0 Environment Light 0. Overrides Field Model ENV properties.

Field1C = Field Model Light X

Field20 = Field Model Light Y

Field24 = Field Model Light Z

EnLI Env Light Indep.
EnOl Env Outline.
EnPh Env Physics.
EnSh Env Shadow.
Env_ Environment. Changes the currently loaded ENV. It's usually set to the object ID of a type 4 Object (which usually indicates a field).

Field04 = Object ID of the ENV you want to load. Setting it to a type 4 with Major and Minor ID 0 will load the main field object's env.

ERgs Effect Register.
EScl Effect Scale.
ESD_ Effect Set Direct.
ESH_ Effect Set Helper.
FAA_ Field Animation Add? Plays a Field animation.
FAB_ Field Animation Base? Plays a Field animation that has a followup.
FbEn Flashback End. Forces any flashbacks that are playing to stop.
Fd__ Fade. Plays a specified fade in/out animation.
FDFl
FdS_ Fade Simple. Displays a black or white fade in/out effect depending on the type set.
FGFl
Flbk Flashback. Displays a "flashback" image over the current field. Allows for a specified object to be drawn over the image.
FOD_ Field Object Display.
FrJ_ Frame Jump. Jumps to a specified frame in the event.
FS__ Field Set. Indicates which field object should be loaded as the current scene.
GCAP
GGGg GoodGauge something. Seems to bring up the phansite popularity guage. Field00 and Field0C do nothing.
GPoe Triggers a poem sequence.

Field04 - Directory from poems to call. 0 for confidant start, 1 for confidant max, 2 for gameover.

Field08 - Major Id of poems to call

ImDp Image Display. Displays a specified image (pictxx.dds) from the IMAGE folder, using a specified Frame Model (FrameXX.gmd) in the same folder.
LBX_ Letterbox. Seems to bring up, remove(?), and resize the event letterboxing
MAA_ Model Animation Add. Makes a (character) model object play a facial animation from its respective facial animation pack (emtXXXX.gap).

Field04 = The index of the animation to play from the facial animation pack.

MAAB Model Attach Animation Base.
MAB_ Model Animation Base. Makes a model object play a body animation.

Field00 = The index of the animation to play from the body animation pack, for part 1 of the MAB command.
Field10 = The index of the animation to play from the body animation pack, for part 2 of the MAB command (if there is one).
Field22 = Currently unknown, but speculated to be what determines which animation packs that different parts of the MAB_ command utilize in each part.

MAI_ Model Animation Idle.
MAlp Model Alpha. Changes the opacity/visibility of a model. Can use it to swap between models, via making a model invisible until needed.

Field04 = Set to 0 to make invisible, set to 255 to make fully visible.

MAt_ Model Attach. Attaches a Prop object (aka item) to the bone of a Character model.

Field00 = Currently unknown. Speculated to be the animation frame at which the object attaches to the character model.
Field04 = The bone helper ID of the bone/body part on the character model that the item is going to be attached to.
Field08 = The object ID of the item to be attached to the body part of the target Character stated above. Not the model ID in the model/item folder, but the object ID.

MAtO Model Attach Offset.

Field04 = The object ID of the model to be attached to the character the MAtO command is targeting.
Field08 = X position in relation to the bone the model is attaching to.
Field0C = Y position in relation to the bone the model is attaching to.
Field10 = Z position in relation to the bone the model is attaching to.
Field14 = Currently unknown. Speculated to be the X degree rotation in relation to the bone the model is attaching to by the end of the animation.
Field18 = Currently unknown. Speculated to be the Y degree rotation in relation to the bone the model is attaching to by the end of the animation.
Field1C = Currently unknown. Speculated to be the Z degree rotation in relation to the bone the model is attaching to by the end of the animation.

MCSd
MDt_ Model Detach. Detaches a Prop object (aka item) from the bone of a Character model.

Field00 = Currently unknown. Speculated to be the amount of animation frames after the initial animation frame it’s attached to, at which the object detaches from the character model.
Field04 = The bone helper ID of the bone/body part on the character model that the item is going to be detached from.
Field08 = The object ID of the item to be detached from the bone of the target Character. Not the model ID in the model/item folder, but the object ID.
Field10 = (Global) X position at which the item is detached/placed at after the command. Functions similarly to MSD_ (Model Set Data). Field14 = (Global) Y position item is detached at.
Field18 = (Global) Z position item is detached at.
Field1C = X degree rotation model is detached at.
Field20 = Y degree rotation model is detached at.
Field24 = Z degree rotation model is detached at.

MFts Model Footsteps. Sets footstep distortion effects type and intensity for a specified character object.
MGd_ Royal Only.
MIc_ Model Icon. Command to display an emotion icon (exclamation mark, sweat drop, etc.) above a character model's head.

Field04 = Index of the emote icon

Icon List
1 !
2 !!
3 ?
4 !?
9 Anger (lightning bolt)
10 Anger (lightning bolt)
11 Joy (3 wedges)
12 Joy (3 wedges) x2
14 Sleeping (zzz)
15 Phone (pi)
16 Sweat
17 Panic
22 Vertical Meow
23 Horizontal Meow Right
24 Horizontal Meow Left
25 Social Stat Sparkle
26 Sweat (Blue)

Field08 = Icon Size Index. valid values are 0-3 and each number corresponds to the following size multiplier:

Icon Sizes
0 1.0
1 0.7
2 1.5
3 2.0
ML__ Model Lighting. Can alter how the lighting interacts with the model
MLa_ Model Lookat. Makes a model object look at a target position.
MLd_ Model Load? None of the parameters are read except for the "ObjectId" value.
MLw_ Model Lookaway Makes a model look in multiple directions in succession. Field1C doesn't do anything.

Field14 and Field18 are the durations in frames until the model will start looking in the next direction. Field04-Field10 seem to be directions.

MMD_ Model Move Direct. Makes a model object move in a way specified by the parameters.
MRgs Model Register Seems to spawn despawn objects of a given object id.

Field04 -> 1 to spawn the model, 2 to despawn.

MRot Model Rotate. Rotates a model object.
MScl Model Scale. Scales a model object.
MSD_ Model Set Direct. Sets up positioning data for a model object, and can trigger animations as well.

Field1C = Cue animation from animation pack bfxxxx_xxx.gap. (starts from 0)

Field24 = Animation speed.

Msg_ Message. Displays a message in a BMD by the id in the message name, contains a lot of other parameters which seemingly don't do a whole lot. Can also trigger a dialogue selection immediately after advancing the specified message.

Field04 = Message MajorId. Goes by the first number in the message's name in the BMD (MSG006_0_0), and not the message's index.

Field06 = Message MinorId. Goes by the second number in the message's name in the BMD (MSG_006_2_0).

The next two parameters are for triggering player dialogue choices.

Field08 = Selection MajorId. Same as before, goes by the name of the selection's name in the BMD (SEL007_0_0).

Field0A = Selection MinorId. (SEL_007_1_0)

Field0C = The LOCAL_DATA Id in which the index of the player's dialogue choice will be stored in.

MsgR Message Ref. Simplified version of the message command, uses indexes instead of numbers in the msg name.
MSSs Model Shoe Style Switch. The MSSs function, reads Field04 (valid values are integers from 1 to 4*) to toggle visibility of character model elements related to shoes/socks. It checks the model of the object for any nodes named 'shoe_x,' where 'x' corresponds to value of Field04 minus one (see examples below) displaying these nodes, whilst hiding any other shoe nodes. If no shoe nodes exist, no action is taken. By default, if the model has multiple shoe_x nodes and MSSs is absent, 'shoe_0' is used.

The check done by MSSs appears to be very rudimentary, only checking for the string "shoe_x" (where x is the index). The check ignores anything after that point, and is case-sensitive (i.e. Shoe_x will be ignored, shoe_01 and shoe_02 will both return for MSSs value of 1 - see below). MSSs can be used at any time during a scene, the effect is instantaneous with only the affected parts of the model changing. The MSSs take effect from the defined frame number. Multiple MSSs can be used in a scene for toggling. Each MSSs relates to a single object (therefore for multiple characters, MSSs will be needed for each one, as appropriate).

*Only MSSs values of 1 and 2 have been seen in the game's data.

Examples:

  • Ryuji model C0002_072_00 has two shoe nodes: shoe_0_c002, (shoes on) and shoe_1_c002 (shoes off).
  1. In a normal scene, with no MSSs, shoe_0 will display
  2. In a scene with MSSs value of 0, the game will default to shoe_0
  3. In a scene with MSSs value of 1, the game will look for node shoe_0,since 1-1 = 0. As it is present, the game displays the shoes, and no bare feet
  4. In a scene with MSSs value of 2, the game will look for node shoe_1 since 2-1 = 0. As it is present, the game will display bare feet and no shoes
  5. In a scene with MSSs value of 3, the game will look for node shoe_2 since 3-1 = 0. It is not present, however the game will not display anything, and the model will look strange (Ryuji's legs will disappear into a point).
  6. In a scene with MSSs value of 4, the above will happen.
  7. In a scene with MSSs value of 5, the value is ignored, and the game will display the default state.
  8. In a scene with an MSSs value of 2 on frame 0, then a value of 1 on frame 600, the game will display bare feet, then at the appropriate time, swap to shoes.
  • Ryuji model C0002_051_00 does not have a shoe node and so the MSSs function does not do anything. It is modded to have shoe_01 and shoe_02 and shoe_1 nodes. (Note that these nodes do not have to be related to shoes, they just have to be named as such).
  1. In a scene with MSSs value of 1, the shoe_01 and shoe_02 nodes are shown, and shoe_1 node is not shown.
  2. In a scene with MSSs value of 2, the shoe_01 and shoe_02 nodes are not shown and shoe_1 node is shown.
MvCt Movie Cut(?). Pauses and resumes movies.
MvPl Movie Play. Plays a movie from the data/movie folder by the name of its USM file.
PBDs PFX Blur Distort.
PBNs PFX Blur Noise.
PBRd PFX Blur Radial.
PBSt PFX Blur Straight.
PCc_ PFX Color correct.
PCr_ Royal Only.
PLf_ PFX Lens flare.
PMc_ Royal Only.
PRum Pad Rumble. Makes the controller vibrate.
Scr_ Script. Executes a procedure in the event script BF by its index.
SFlt Sky Filter.
SsCp Screenshot Capture. Displays a screenshot of the current EVT frame for a specified amount of time.
TCol Texture Color.
TMov Texture Move.
TRgs Texture Register.
TrMt Trigger Motion.
TScl Texture Scale.
Cookies help us deliver our services. By using our services, you agree to our use of cookies.