The 3DO executable format is a slightly modified version of the [[documentation:hardware:opera:arm|ARM AIF]]. The tool "[[https://ext.3dodev.com/3DO/Portfolio_2.5/OnLineDoc/DevDocs/tktfldr/dbgfldr/Bdbga.html|modbin]]" was used to modify these values in the [[https://ext.3dodev.com/3DO/Portfolio_2.5/Examples/NVRAM/File_Management/nvram.make|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 [[https://github.com/trapexit/modbin|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 Offset^Size (bytes)^Default^Value| |0x2C|1|0x00|According to the AIF documentation 0x2C is "Work space" and obsolete. Set to 0x40 by modbin.| |0x40|4|0xE1A00000 (NOP)|-debug sets it to 0xEF00010A (SWI 0x0000010A) \\ -nodebug sets it to 0xE1A20002 (NOP / mov r2, r2)| |0x8A|1|0x00|-pri: Application's priority. May range from 10 (lowest) to 199 (highest).| |0x94|1|0x00|-version: Application's version| |0xA4|1|0x00|-flags: Application flags \\ \\ 0x20: Datadisk \\ 0x10: NodiskOK \\ 0x04: key selection (unset = 3DO, set = app) \\ 0x02: privileged app| |0xA5|1|0x18|-osversion: minimum OS Version| |0xA6|1|0x00|-osrevision: minimum OS Revision| |0xA8|4|0x00000000|-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."| |0xAC|4|0x00000000|-freeSpace: ???| |0xB0|4|0x00000000|Signature offset (usually at the end of the unsigned file)| |0xB4|4|0x00000000|Signature size (the RSA512 signature is always 64 bytes)| |0xBC|4|0x00000000|-maxUsecs: Maximum time slice in microseconds. Valid range is from 5000 to 1000000.| |0xC0|32?|0x00|Name of executable| |0xE0|?|0x00|???|