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.
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 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).
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).
|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?|
|CSD_||Camera Set Data. Sets up camera parameters such as position, rotation, fov.|
|EAlp||Effect Alpha. Changes the opacity of an effect/particle EPL.
Field04 = The opacity of the effect, from 0 (invisible) to 255 (fully visible).
|EnL0||Environment Lights (0?). Overrides Field Model ENV properties.
Field1C = Field Model Light X
Field20 = Field Model Light Y
Field24 = Field Model Light Z
|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.
|FdS_||Fade Scene. Displays a black or white fade in/out effect depending on the type set.|
|FS__||Field Scene. Indicates which field object should be loaded as the current scene.|
|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.
|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.
|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.
|MAtO||Model Attach Object.
Field04 = The object ID of the model to be attached to the character the MAtO command is targeting.
|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.
|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.|
|MMD_||Model Movement Data. Makes a model object move in a way specified by the parameters.|
|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)
|MvPl||Movie Play. Plays a movie from the data/movie folder by the name of its USM file.|
|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.