Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Version Profiles

AGI compatibility is defined against an interpreter profile. A profile selects the common rules in this book and any explicitly listed variants. Version numbers identify observed families; they do not imply that every build with a similar number has identical behavior.

AGI 2.411 profile

The 2.411 profile is specified for full-EGA valid-data gameplay. It uses four split resource directories and direct five-byte-header volume records. Its valid action range is 0x00..0xa9; conditions remain 0x00..0x12.

Configured-message actions 0x97 and 0x98 consume the same four operands as later profiles: message selector, row, column, and width. Restart action 0x80 always presents its confirmation prompt; f16 does not bypass it. The heap diagnostic omits the later rm.0, etc. line.

Picture commands 0xf9 and 0xfa use the early point-plot profile. Command 0xf9 consumes and ignores one raw byte. Command 0xfa reads coordinate pairs without seed bytes and writes one ordinary pixel per complete pair. It does not draw shaped or stippled brushes. Other full-EGA picture, view, object, motion, collision, composition, and refresh behavior follows the common contracts. Automatic direction-based loop selection uses the four-loop table only for views with exactly four loops.

The early sound profile has no attenuation-envelope evolution between events. Only device selector 0 uses one channel and PC-speaker divisor output; every nonzero selector advances all four channels. Four-channel tone output always emits both bytes of the tone word. Event attenuation adds the global adjustment and clamps to 0x0f, but receives no envelope or device-2 adjustment.

The selected KQ2 data supplies the binary-save dimensions listed in the persistence chapter.

AGI 2.440 profile

The 2.440 profile shares the 2.411 resource container, action range, condition range, configured-message encoding, exact-four-loop selection, early sound channel selection, absence of attenuation envelopes, and shortened save block 1.

It adds the shaped and stippled 0xf9/0xfa pattern behavior specified in the picture chapter, using the shaped-brush v2 radius-one shape and horizontal limit. Restart action 0x80 proceeds without displaying confirmation when f16 is set. Four-channel tone output emits the high tone byte and suppresses the low byte when the high byte’s top three bits are all set. Its heap diagnostic still omits the later rm.0, etc. line.

The selected LSL1 data supplies the binary-save dimensions listed in the persistence chapter.

The observed 2.439 build has the same action and condition contracts as 2.440. Every uniquely mapped full-EGA renderer, object, motion, restart, save, picture-pattern, and sound routine has the same behavior after relocation. It therefore selects the 2.440 behavioral rules for those domains. Its selected game data supplies different save dimensions.

AGI 2.917 profile

The 2.917 profile is specified for full-EGA valid-data gameplay. It uses the same split v2 resource container as 2.936. Its valid action range is 0x00..0xad; opcodes 0xae and 0xaf are not available. Conditions 0x00..0x12 and every shared action follow the common contracts.

Its picture, view, object, input, sound, room, replay, and primary full-EGA rendering behavior follow the common core. Automatic direction-based loop selection uses the two-loop and three-loop tables as specified in the object chapter, and uses the four-loop table only for a view with exactly four loops. A view with more than four loops does not receive automatic direction-based loop selection in this profile.

Pattern plots use the shaped-brush v2 radius-one shape and horizontal limit specified in the picture chapter.

The selected KQ1 and PQ1 data supply separate binary-save dimensions listed in the persistence chapter. Those counts and lengths are game-data properties, not universal constants for every 2.917 game.

The observed 2.915 build has the same action and condition contracts and the same uniquely mapped full-EGA subsystem behavior as 2.917. The observed second 2.917 build differs from the selected KQ1 interpreter only in its embedded game signature. Both therefore select this profile, with separate game-data dimensions.

AGI 2.936 profile

The 2.936 profile is currently the most complete profile in this specification. Unless a chapter says otherwise, promoted logic, state, graphics, object, input, persistence, and sound rules currently refer to this profile.

Its resource container uses four separate directory files and direct resource records as specified in Resource Containers.

The valid action opcode range is 0x00..0xaf. The valid condition opcode range is 0x00..0x12, in addition to the structural condition markers described by the logic-bytecode specification.

The selected SQ2 and KQ3 data supply separate binary-save dimensions listed in the persistence chapter.

Pattern plots use the shaped-brush v2 radius-one shape and horizontal limit specified in the picture chapter.

AGI 3.002.086 profile

The 3.002.086 profile is specified for full-EGA valid-data gameplay from the full KQ4 release. It uses the combined and compressed v3 resource container. Its valid action range is 0x00..0xb1; conditions remain 0x00..0x12.

Action 0xb0 consumes one ignored byte and otherwise has no effect. Action 0xb1 sets the menu interaction gate. Shared action 0xad increments the key-release event gate modulo 256, as in the v2 profiles. The script key map holds 39 entries. Immediate room destinations are not remapped, and input-width actions 0xa3 and 0xa4 retain their v2 effects.

Its inventory-selector temporary state, block-3 save transform, restart prompt-marker handling, and motion-mode-4 preservation follow the later v3 profiles. Its automatic direction-based loop selection follows 2.936: every view with four or more loops uses the four-direction table without an f20 gate.

Pattern plots use the v3 radius-one center-row shape and horizontal limit specified in the picture chapter.

This profile has one screen-boundary variant. A due movement proposal whose left X coordinate is exactly zero is clamped to zero and reports left-boundary code 4. Later promoted profiles accept exact zero without reporting a boundary; both behaviors clamp negative proposals to zero and report code 4.

The selected full KQ4 data supplies the binary-save dimensions listed in the persistence chapter. Present-looking directory entries whose selected volume files are absent are outside this valid-data profile.

AGI 3.002.149 profile

The 3.002.149 profile uses the combined and compressed v3 resource container. Expanded logic, picture, view, and sound payloads retain the same resource families as the 2.936 profile.

Pattern plots use the v3 radius-one center-row shape and horizontal limit specified in the picture chapter.

This profile accepts action slots through 0xb5. Slots 0xb0, 0xb2, 0xb3, and 0xb4 consume their declared operands and otherwise have no effect. The additional observable actions are:

OpcodeOperandsBehavior
0xb1one immediate byteSet the menu interaction gate. Zero prevents a pending menu request from entering modal menu interaction; nonzero permits it.
0xb5noneClear the key-release event gate.

For this profile, shared action 0xad sets the key-release event gate instead of incrementing it. The script key-map holds 49 entries rather than 39.

Immediate room-switch action 0x12 normally passes its destination to the ordinary room-change operation unchanged. The observed Gold Rush build adds a game-specific alias: destination values 0x7e, 0x7f, and 0x80 select room 0x49. The observed MH2 build has the same 3.002.149 core but does not apply these aliases. A conformance claim must identify which build variant it uses.

The object-and-inventory portion of a saved game uses a profile-specific XOR transform. The save envelope and transform bytes are specified in the persistence chapter. The observed Gold Rush save block layout is byte-mapped there, including canonical and byte-preserving rules for reserved serialized state.

Input-width actions 0xa3 and 0xa4 have no effect in this profile. Normal EGA text input remains available without those width-control branches. Action 0xa9 still restores active saved-window state but has no input-width override to clear.

For automatic direction-based loop selection, exactly-four-loop views retain the 2.936 four-or-more-loop behavior. Views with more than four loops apply that selection table only while f20 is set.

AGI 3.002.102 profile

The 3.002.102 profile is specified for full-EGA valid-data gameplay. Its expanded picture and view formats, picture command execution, logical raster rules, view/cel composition, object update lists, placement, collision, movement, animation, and refresh ordering follow the common behavioral core. Alternate display-mode branches remain outside the current target.

Pattern plots use the v3 radius-one center-row shape and horizontal limit specified in the picture chapter.

This profile uses the combined and compressed v3 resource container and accepts action slots through 0xb5. Its extra slots 0xb0..0xb5 have the same operand contracts and effects specified above for 3.002.149, including the menu gate and release-gate clear action. Shared action 0xad sets the release gate to one.

Unlike 3.002.149, its script key map holds 39 entries, immediate room-switch destinations are not remapped, and input-width actions 0xa3 and 0xa4 retain their 2.936 effects. Closing text-window state also clears the input-width override. Its restart prompt-marker branch, object motion-mode-4 preservation, inventory-selector temporary state, and block-3 save transform follow the 3.002.149 variants.

Automatic direction-based loop selection follows the 3.002.149 rule: exactly four loops use the direction table unconditionally, while views with more than four loops require f20.

The selected KQ4D demo data supplies the save dimensions listed in the persistence chapter. Those dimensions are game data, not universal constants for every 3.002.102 game.

The observed 3.002.107 build has the same action and condition contracts as 3.002.102. Every currently mapped full-EGA core routine has the same behavior after relocation. Unmapped startup and alternate paths remain outside that equivalence statement.

AGI 2.089 profile

The 2.089 profile is specified for full-EGA valid-data gameplay. It uses the split direct-resource container, but stores its inventory metadata file in expanded plain form instead of applying the later repeating-key transform. It accepts actions 0x00..0x9a and conditions 0x00..0x12.

Action 0x86 consumes no operand. It stops active sound, performs process shutdown cleanup, and terminates without asking for confirmation. Actions 0x9b and later are unavailable.

Position actions 0x25 and 0x26 first change the object’s current position. If the object is currently drawn, they remove its old rendered state, then copy the new coordinates into its previous-position snapshot. This differs in ordering from 2.272.

The earlier-drawn object partition is composed in ascending object-number order, regardless of baseline or fixed-priority drawing key. The later-drawn partition is composed in ascending drawing-key order with object number as the tie breaker. This is the ordering exception defined in the object chapter; 2.272 sorts both partitions.

Pictures support commands only through seed fill 0xf8. Automatic direction-loop selection is evaluated on every eligible post-logic pass and uses the four-direction table only for exactly four loops. The profile exposes six string slots. Its word-sequence condition requires an exact operand/parser count and does not give 0x270f tail-terminator meaning.

Showing a prepared picture presents it and marks it shown, but does not clear f15 or close an active text window. Object-distance action 0x45 stores the low byte of the center-X-plus-baseline-Y distance; values above 255 wrap instead of saturating at 254. Target-motion actions 0x51 and 0x52 defer their first direction calculation and already-satisfied completion until the next eligible target-motion update.

Action 0x4d clears direction but leaves autonomous-motion mode unchanged. For object 0 it also clears v6 and selects object-to-v6 coupling. Action 0x4e leaves both direction and autonomous-motion mode unchanged. For object 0 it clears v6, selects v6-to-object coupling, and clears the remembered navigation event used by the old movement pass.

The inventory display action always shows an acknowledgement-only carried-item list. It does not inspect the inventory-interaction flag and does not modify v25.

Sound event scheduling and channel participation follow the early profile in the sound chapter. Four-channel events emit both tone bytes and use the 2.089 control-byte rule, including its device-2 adjustment. The selected SQ1 data uses 17 runtime object records: this profile treats the metadata header’s object value as a count, not as a maximum index. Saves use the four-block 2.089 envelope specified in the persistence chapter.

AGI 2.230 profile

The 2.230 profile is specified for full-EGA valid-data gameplay. It uses the split direct-resource container and stores inventory metadata in expanded plain form. It accepts actions 0x00..0x9a and conditions 0x00..0x12.

Action 0x86 is the same zero-operand unconditional exit as profile 2.089. Actions 0x9b and later are unavailable. Position actions 0x25 and 0x26, however, use the 2.272 ordering: they update current and previous coordinates together without first removing drawn state. Both object partitions use drawing-key order with object number as the tie breaker.

Views use the packed loop-header format defined in the view chapter. The low nibble is the cel count, bits 0x30 retain the shared loop’s mutable orientation, and bits 0x40/0x80 enable loop-wide row mirroring when the selected orientation changes. Action 0x31 therefore masks the loop header to its low nibble before returning the highest valid cel index. This packed loop-level orientation is unique among the currently promoted profiles.

Pictures dispatch commands only through 0xf8. Automatic direction-loop selection is cadence-independent and applies the four-direction table only to exactly-four-loop views. The profile has six string slots and recognizes 0x270f as the word-sequence tail terminator. Showing a prepared picture, object-distance overflow, and initial target-motion deferral follow the common early rules.

Movement-clear actions follow profile 2.089: 0x4d clears direction but leaves autonomous mode active, while 0x4e leaves both unchanged and applies only the object-0 coupling/navigation effects. Inventory display is acknowledgement-only and never writes v25.

Sound uses the 2.089 early output rule: selector zero advances one channel and every nonzero selector advances four; four-channel tones emit both bytes; and device 2 adds three to attenuation nibbles below eight without applying the global whole-byte adjustment. The selected XMAS.230 data uses 18 runtime object records, 200 replay pairs, and the five-block envelope and dimensions specified in the persistence chapter.

AGI 2.272 profile

The 2.272 profile is specified for full-EGA valid-data gameplay. It uses the split direct-resource container and stores inventory metadata in expanded plain form. It accepts actions 0x00..0xa0 and conditions 0x00..0x12.

Action 0x86 consumes one selector byte. Selector 1 terminates immediately; other values display a confirmation request and terminate only when accepted. Action 0x9b consumes two bytes without changing state. Actions 0x9c through 0xa0 consume the same operands as the later menu actions but otherwise do nothing; this profile parses menu-construction bytecode without constructing a menu.

Position actions 0x25 and 0x26 write both current and previous-position coordinates directly and do not first remove an already drawn object.

Pictures support commands only through 0xf8. Automatic direction-loop selection is evaluated independently of cadence and uses the four-direction table only for exactly four loops. The profile exposes six string slots and already recognizes 0x270f as the word-sequence tail terminator.

Showing a prepared picture, object-distance overflow, and initial target-motion calculation follow the same early rules as profile 2.089. Action 0x4d has the later behavior of clearing both direction and autonomous-motion mode. Action 0x4e clears autonomous-motion mode while retaining direction.

Inventory display is acknowledgement-only and leaves v25 unchanged, as in profile 2.089. The interactive inventory selector is not available.

Both object partitions are composed in ascending drawing-key order, with object number breaking ties. Early sound scheduling uses one channel only for device selector zero and otherwise advances all four. Four-channel events emit both tone bytes and use the device-2 plus whole-byte adjustment rule in the sound chapter. The selected XMAS data uses 18 runtime object records and the five-block 2.272 save envelope.

Other observed versions

Other versions have been identified, but they do not yet have normative profiles in this book. Similarity to a profile above must not be assumed until observable differences have been checked and promoted into the specification.