Site Tools


documentation:file_formats:sdk:3do_aif_header

The 3DO executable format is a slightly modified version of the ARM AIF. The tool “modbin” was used to modify these values in the original SDK.

There are two homebrew replacements for modbin. The first one (author unknown) only supports setting the “work space” value and the stack space. It also only works on Windows. trapexit has created a new tool that supports everything the original 3DO SKD version does with some extras (such as executable signing) and can run on Linux, macOS, Windows, and any platform with a C99 compiler.

Byte OffsetSize (bytes)DefaultValue
0x2C10x00According to the AIF documentation 0x2C is “Work space” and obsolete. Set to 0x40 by modbin.
0x4040xE1A00000 (NOP)-debug sets it to 0xEF00010A (SWI 0x0000010A)
-nodebug sets it to 0xE1A20002 (NOP / mov r2, r2)
0x8A10x00-pri: Application's priority. May range from 10 (lowest) to 199 (highest).
0x9410x00-version: Application's version
0xA410x00-flags: Application flags

0x20: Datadisk
0x10: NodiskOK
0x04: key selection (unset = 3DO, set = app)
0x02: privileged app
0xA510x18-osversion: minimum OS Version
0xA610x00-osrevision: minimum OS Revision
0xA840x00000000-stack: Executable's stack size.

“A good initial stacksize is 4000. The stack must be set to at least 3000 for running audio folio or audio applications.”
0xAC40x00000000-freeSpace: ???
0xB040x00000000Signature offset (usually at the end of the unsigned file)
0xB440x00000000Signature size (the RSA512 signature is always 64 bytes)
0xBC40x00000000-maxUsecs: Maximum time slice in microseconds. Valid range is from 5000 to 1000000.
0xC032?0x00Name of executable
0xE0?0x00???
documentation/file_formats/sdk/3do_aif_header.txt · Last modified: 2022/10/02 19:41 (external edit)