Compile
Convert BF and BMD into flowscripts and messagescripts
Last updated
Was this helpful?
Convert BF and BMD into flowscripts and messagescripts
Last updated
Was this helpful?
As previously mentioned, can .FLOW
and .MSG
into .BF
and .BMD
respectively. Read the previous sections for more information.
First, you must tell the program what file we're working with.
For , this must be a .FLOW
or .MSG
file.
Now, let's tell the program what to do with that file.
Add -Compile
, separated by a space.
A Flowscript Library instructs the compiler on function names and parameters.
In order to work with the input file, you have to tell the compiler which Library to use with -Library
.
Library Name
Usage
DigitalDevilSaga
-Library
DDS
Nocturne
-Library
SMT3
Persona3
-Library
P3
Persona3FES
-Library
P3FES
Persona3Portable
-Library
P3P
Persona4
-Library
P4
Persona4Golden
-Library
P4G
Persona5
-Library
P5
Persona5Royal
-Library
P5R
PersonaQ2
-Library
PQ2
You should also choose an Output Type with -OutFormat
.
This determine the version and endianness of the generated BF
or BMD
.
Output Type
Usage
Persona 5 BF
-OutFormat
V3BE
Persona 5 (PS3) BMD
-OutFormat
V1BE
Persona 5 (PS4) & Persona 3/4 (PS2) BF/BMD
-OutFormat
V1
An Encoding can be specified using -Encoding
.
It lets the compiler know what set of characters to use.
Game Name
Usage
Persona 5
-Encoding
P5
Persona 4
-Encoding
P4
Persona 3 (FES)
-Encoding
P3
PersonaQ(2) or any game using Shift-JIS/CP932
-Encoding
SJ
Finally, you can name the Output File using -Out
.
At this point, you can press Enter
to begin compiling.
But, there are a few optional commands which might be useful to you.
Enable Hooking by adding the-Hook
argument.
Open the .FLOW
and copy the procedure you want to edit.
Paste it into your .FLOW
that references the .BF
, and add _hook
to the procedure name.
Edit the procedure however you'd like.
Compile your new .FLOW
with the-Hook
argument.
Not all games have libraries available. Knowledge of reverse engineering game executables is required to generate a library, as you'll have to find the offsets of function signatures yourself. A sample script for P3/P4 (PS2) can be seen .
Hooking can be handy when you're compiling a .FLOW
and only want to replace specific in an .BF
.
When your .FLOW
into .BF
, this redirects existing in an .BF
file to replacement with a matching names that end in _hook_()
.
The original still exists and can be called by name in your .FLOW
script, since the original data is not overwritten when hooking a function.
References to the original in the original .BF
are simply redirected to your replacement.
the .BF
that you're referencing in the .FLOW
you're compiling.
the original .BF
file.
Now that you know how to (de)compile with , you're ready to read, edit, and create scripts. If you haven't already, read on to see how to use the to make (de)compiling even easier: