↳ Declaring Functions
↳ Declaring Variables
Hooking Functions

P5 Functions
↳ AI
↳ Common
↳ Facility
↳ Field
↳ Net
↳ Social


Using AtlusScriptCompiler, you can turn .flow files into .bf files, or .msg files into .bmd files. Anything else referenced in a .flow (bf/bmd/flow/msg) also becomes part of a resulting .bf file.

You can download the latest AtlusScriptCompiler here.

Using Commandline Arguments

Once you have extracted the program to a folder, simply clicking on the exe causes a console window to quickly open and close. That's normal.
Normally, to use AtlusScriptCompiler you have to use commandline arguments. If you have never used the Windows command prompt before, don't worry. It's quite simple:
You can open the command prompt one of several ways:
  • Searching for "cmd" in the Windows search bar
  • Pressing ctrl + R and typing "cmd" in the Run window
  • Typing "cmd" in the address bar in Windows explorer
  • Right click inside a folder in Windows Explorer while holding shift and choose "Open Command Window here" (might have to do this first on Windows 10)
Once the command prompt has opened, all you have to do is type the path to the EXE (i.e. "C:\User\Username\Desktop\AtlusScriptCompiler\AtlusScriptCompiler.exe"). It's smart to wrap the path in quotation marks in case it contains spaces.
Note that you can also drag the EXE onto the command prompt window to automatically fill in the path.
If you used one of the latter two methods of opening the command prompt, if the folder contains AtlusScriptCompiler.exe, all you have to type is "AtlusScriptCompiler.exe".
Press enter, and the program will print information to the console without immediately closing.
You can press up on the keyboard to copy what you previously typed in order to make changes.

Supplying the Input File

Whether the file you want to compile is a .msg or .flow, if you supply the path immediately after "AtlusScriptCompiler.exe" (followed by a space) it will be used as the input file.
If your input is a .bf or .bmd, you may be looking for instructions on decompiling instead.

Supplying the Compile Command

Follow up the command so far with another space and then "-Compile" in order to tell the program what to do with the input file.

Supplying the Output Format

Once again, separate this next part from the previous with a space and type one of the following:
  • "-OutFormat V3BE" (if your game is Persona 5 and your desired output format is .BF, ideal when .FLOW is supplied as the input)
  • "-OutFormat V1BE" (if your game is Persona 5 (PS3) and your desired output format is .BMD, ideal when .MSG is supplied as the input)
  • "-OutFormat V1" (if your game is Persona 5 (PS4) or Persona 3 or 4 and your desired output format is .BMD, ideal when .MSG is supplied as the input)
  • "-OutFormat V1" (if your game is Persona 3 or 4 and your desired output format is .BF, ideal when .FLOW is supplied as the input)

For example so far, your command should look something like this:
"AtlusScriptCompiler.exe" "field.bf.flow" -Compile -OutFormat V3BE

Supplying the Library

For AtlusScriptCompiler to successfully resolve .flow to .bf, a library must exist that defines the game's functions and their parameters. In order to create a library, function signatures must be dumped from the game using a script like this one.
  • "-Library P5" (if your game is Persona 5)
  • "-Library P4" (if your game is Persona 4)
  • "-Library P4G" (if your game is Persona 4 Golden)
  • "-Library P3" (if your game is Persona 3)
  • "-Library P3F" (if your game is Persona 3 FES)
  • "-Library PQ2" (if your game is Persona Q2)
  • "-Library SMT3" (if your game is SMT Nocturne)
  • "-Library DDS" (if your game is Digital Devil Saga)

The script will fail to compile if the appropriate library isn't present.
At the time of writing, there is no library for Persona 3 Portable.

Supplying the Encoding

For AtlusScriptCompiler to successfully compile to either .bf or .bmd, encoding must be specified.
  • "-Encoding P5" (if your game is Persona 5)
  • "-Encoding P4" (if your game is Persona 4)
  • "-Encoding P3" (if your game is Persona 3)
  • "-Encoding SJ" (if your game is Persona Q(2) or uses Shift-JIS/CP932)

Specifying the Output File

While the command so far is enough to output a file, it would be automatically named after the input. For instance, field.bf.flow would generate field.bf.flow.bf.
If you would rather name it something else like field2.bf, or replace field.bf, try something like the following:
"AtlusScriptCompiler.exe" "field.bf.flow" -Compile -OutFormat V3BE -Library P5 -Encoding P5 -Out "field.bf"

Once again, remember to wrap paths to files in quotation marks in case they contain spaces.

Other Commands

When you run the program without specifying any commandline arguments, you will be shown a list of additional commands to use.
For information on how to use the "-Hook" command, see this page.

Using the GUI Frontend

There is an unofficial GUI for AtlusScriptCompiler that allows you to simply drag and drop files to compile or decompile them.
You can get it from here. Just extract the contents of the .zip to the folder containing AtlusScriptCompiler.exe on your computer and run it.
Be sure to set the proper game in the dropdown first. If no output file is produced, check the "AtlusScriptCompiler.log" file in the same directory.

Resolving Errors

If a script has failed to compile, an error message should be shown. It will usually try to show the exact line number where the error occured so you can fix it, along with a description of what's wrong.
For a more visual guide on using AtlusScriptCompiler, see the video:

We are not affiliated, associated, authorized, endorsed by, or in any way
officially connected with ATLUS, SEGA, or any of its subsidiaries or its affiliates.
The official ATLUS website can be found at https://atlus.com. "Persona", as well
as all characters referenced on this page are registered trademarks of ATLUS.