Skip to content

File structure ‐ ACEF

Antoine Willerval edited this page Jun 7, 2025 · 3 revisions

The acts extension format (acef) file format is an internal format for acts, it's a way to provide extensions to acts, but it is also used as a storage file.

File structure

It is composed of:

  • file magic 0x46454341 (32 bits integer)
  • file version (16 bits integer)
  • file flags (16 bits integer)
  • header size (32 bits integer)
  • size of an object (32 bits integer)
  • number of objects (32 bits integer)
  • size compressed (32 bits integer)
  • size decompressed (32 bits integer)
  • max size of a compressed object (32 bits integer)
  • compress information (64 bits integer)

The flags are described by this table

Value Description
0x0001 Big endian

Compress information are described in the enum in compress_utils.hpp. Bits 0-7 bits is the compression algorithm Bit 8 bit says the high compression algorithm was used Next bits are used by the compression algorithms.

Value Description
0x0000 Invalid
0x0001 No compression
0x0002 zlib
0x0003 lzma
0x0004 lz4
0x0005 oodle
0x0006 zstd
0x0100 High compression

After header size bytes, the file will contain number of objects times these data:

  • compressed size (32 bits integer)
  • uncompressed size (32 bits integer)
  • file offset (32 bits integer)
  • data offset (32 bits integer)
  • object ID (64 bits integer)

After size of an object bytes, the object will have compressed size bytes of compressed data.

File usage

The object ID is hashed using the fnv1a64 hash with the 64th bit removed.

Each file is built as an object list, they can be decompressed independently or in one buffer using the size decompressed header, the data offset object header describe the relative location in the decompressed data.

Extensions

Hash

Name: acts.hash Description: Contains hashes, test to compare with wni. Structure:

  • Number of hashes (64 bits integer)
  • Number of hashes times:
    • Hash ID (64 bits integer)
    • Hash Value (0 byte ended string)

Opcodes

Name: acts.opcodes Description: Contains opcodes to extend the GSC compiler/decompiler. Structure:

  • VM magic (64 bits integer)
  • Platform (64 bits integer) : 1=pc, ps=2,xbox=3,alpha=4,test=5
  • Opcodes (until the end)
    • opcode id (16 bits integer)
    • opcode value (16 bits integer)

GSCBIN Opaque Strings

Name: acts.gscbinopaque.[magic], magic is the hex of the VM magic. Description: Contains opaque strings to extend the GSC compiler/decompiler with gscbin VMs. Structure:

  • Strings count (32 bits integer)
  • locations (strings count 32 bits integer)
  • strings (strings count 0 byte ended strings)

Note: the locations contains the offset inside the strings buffer, a 0 location means that it is not described in this file.

Clone this wiki locally