Skip to content
marika edited this page Dec 17, 2020 · 5 revisions

AEP

AEP (After Effects Project) is a proprietary file format used by various KONAMI games which defines an animated 2D scene graph, typically for user interfaces. This format has existed for a long time, used at least as far back as the GFDM V series, and has been mostly superseded in more recent times by KONAMI's AFP file format. If you are familiar with SEGA's AET file format then you should feel (mostly) right at home with AEP.

AEP shares its name with the file format it is converted from, Adobe After Effects' AEP (After Effects Project). AEPs are designed within After Effects, then either exported to an Adobe AEP and converted to a KONAMI AEP, or exported directly from AE to a KONAMI AEP using a custom plugin. Assumingly the former based on how production workflows tend to be, but it doesn't make much of a difference either way.

AEP is a very minimal format, containing (comparatively) little data. The program takes on a lot of responsibility in knowing the contents of its graphs, which texture stores to load, which compositions to load, and how to use them. A generic program, while functional, will give less than favourable results in terms of performance and usability.

Variants

As AEP has been around for a long time, it has gone through major platform changes, the one that directly affects AEP being the move from 32-bit to 64-bit processors. As it seems that libaep uses the native short, int, long, etc. data types, when the architecture changed so did the size of these data types.

To counter this KONAMI simply made a new AEP x64 format, with the original AEP format now being considered AEP x86. The only changes that x64 makes is the changes that the architecture imposes; data type sizes are changed (pointers become 8-byte instead of 4), and struct field order and padding is changed slightly. Aside from this the contents of the files are identical.

Despite newer games such as GITADORA only running on x64 machines, each AEP still has x86 and x64 counterparts, and the game will crash if both are not present.

Data Types

Note that all integers are in little-endian.

Name Size (x86) Size (x64) Description
U8 0x1 0x1 Unsigned 8-bit integer.
U16 0x2 0x2 Unsigned 16-bit integer.
U32 0x4 0x4 Unsigned 32-bit integer.
F32 0x4 0x4 32-bit floating-point number.
Pointer 0x4 0x8 Unsigned 32-bit (x86) or 64-bit (x64) integer which is an absolute offset within the file, in bytes.
String 0x4 0x8 Pointer which points to a null-terminated array of ASCII characters.
Count 0x4 0x8 Unsigned 32-bit (x86) or 64-bit (x64) integer which is the number of elements within an array.

Clone this wiki locally