EVT

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

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[edit]

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

Tools[edit]

EVTEditor[edit]

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[edit]

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[edit]

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[edit]

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
CAA_
CAR_
CClp Camera clipping. Parameters set the distance from the camera that models are made invisible. Causes some unaffected models to become blurry for some reason.

Field08 = Distance from the camera that meshes are made invisible.

Field0C = Distance Beyond the camera that is made invisible.

Chap Camera haptic feedback?
Cht_
CMCn
CMD_
CQuk
CSA_
CSD_ Camera Set Data. Sets up camera parameters such as position, rotation, fov.
CSEc
CShk Camera Shake?
CwCl
CwHt
CwP_
Date
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_
EMD_
EnBc
EnCc
EnDf
EnFD
EnFH
EnHd
EnL0 Environment Lights (0?). Overrides Field Model ENV properties.

Field1C = Field Model Light X

Field20 = Field Model Light Y

Field24 = Field Model Light Z

EnLI
EnOl
EnPh
EnSh
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
EScl
ESD_
ESH_
FAA_
FAB_
FbEn
Fd__
FDFl
FdS_ Fade Scene. Displays a black or white fade in/out effect depending on the type set.
FGFl
Flbk
FOD_
FrJ_
FS__ Field Scene. Indicates which field object should be loaded as the current scene.
GCAP
GGGg
GPoe
ImDp
LBX_
MAA_ Model Animation A(?). 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
MAB_ Model Animation B(?). 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_
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 Object.

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
MIc_ Model Icon. Command to display an emotion icon (exclamation mark, sweat drop, etc.) above a character model's head.

Field04 = May denote the index of the emote icon? 1 = exclamation mark, 3 = question mark

ML__ Model Lighting. Can alter how the lighting interacts with the model
MLa_ Model Look At. Makes a model object look at a target position.
MLd_
MLw_
MMD_ Model Movement Data. Makes a model object move in a way specified by the parameters.
MRgs
MRot Model Rotation. Rotates a model object.
MScl Model Scale. Scales a model object.
MSD_ Model Set Data. 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.

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

Field08 = 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.

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

Field0C = Selection MinorId. (SEL_007_1_0)

MsgR
MSSs
MvCt
MvPl Movie Play. Plays a movie from the data/movie folder by the name of its USM file.
PBDs
PBNs
PBRd
PBSt
PCc_
PLf_
PRum
Scr_ Script. Executes a procedure in the event script BF by its index.

ProcedureIndex = The index of the procedure that the script is going to run. 0-based, which means that the indexing starts at 0; the 0th (first) procedure in an event BF is usually the event's init() procedure.

SFlt
SsCp
TCol
TRgs
TrMt
TScl
Cookies help us deliver our services. By using our services, you agree to our use of cookies.