Kernel.bin documentation was originally held on external wiki of Doomtrain github
As we are not able anymore to update it, it has been copied here and edited with latest knowledge.
Naming and offsets
Section numbers in these pages and SolomonRing are 1-based (the header is section 0). A field offset is relative to the start of one record; section offsets in the header are relative to the start of kernel.bin. Absolute offsets in the General tables describe the vanilla layout; an edited file’s header is authoritative.
| Term in SolomonRing and this wiki | IDA convention | Meaning |
|---|---|---|
| Attack animation | attackAnimationID, type AttackAnimationID | 16-bit visual-effect ID dispatched by the engine; not an entry ID in the Magic section |
| Target hit animation | targetHitAnimation | Reaction/impact animation played by the target; distinct from the acting entity’s Seq anim and camera animation |
| Status attack accuracy | statusAttackAccuracy | Accuracy input for the status roll; an accuracy value, not an on/off flag |
| Command ability data (section 11) | FF8KernelCommandAbilityData, K_COMMAND_ABILITY_DATA | Fixed effect records referenced by Battle Commands |
| Command abilities (section 13) | FF8KernelCommandAbilityGF | GF-learned abilities that grant a Battle Command |
| Padding / unused | padding or an explicit unused… member | Bytes retained in the binary layout; do not treat them as unknown editable effects |
New IDA member names use camelCase; existing snake_case members, including the Misc table, remain stable. Labels use the terms above. SolomonRing retains historical internal keys such as magic_id, animation, and ability1_unlocker for compatibility; its labels and help describe the actual field. FF8KernelBattleCommandAbility and FF8KernelCommandBattleAbility are compatibility aliases of FF8KernelCommandAbilityData, not separate layouts.
IDA field types
Use the existing enum when its meaning and stored width match the field:
| Field | IDA type | Stored width |
|---|---|---|
| Status 1 mask | Status1Flag | 2 bytes |
| Status 2 mask | Status2Flag | 4 bytes |
| Damage calculation | AttackType | 1 byte |
| Attack flags | AttackFlags | 1 byte |
| Target info | TargetInfo | 1 byte |
| Element mask | ElementType | 1 byte |
| Attack animation | AttackAnimationID | 2 bytes |
| Weapon character | CharacterID | 1 byte |
| Granted Battle Command | KernelBattleCommandId | 1 byte |
| Stat-percentage ability’s stat | FF8KernelStatIndex | 1 byte |
Legacy IDA names status0/Status0 for the 16-bit mask and status1/Status1 for the 32-bit mask are normalized to status1 and status2 respectively. This does not change their order in records: some families store Status 2 before Status 1.
The non-junctionable GF record stores four Status 2 bytes followed by the low Status 1 byte, rather than two full masks. Its fields use Status2FlagLowByte, Status2Byte1Flags, Status2Byte2Flags, Status2Byte3Flags, then Status1FlagLowByte. The byte enums expose the same bit positions within each byte as SolomonRing.
The Junction/Character ability masks are three bytes, so a four-byte runtime enum cannot be assigned directly. FF8KernelJunctionFlags and FF8KernelCharacterFlags preserve that size with three byte-sized enum members (low, middle, high). Their flags match SolomonRing’s existing lookups. Other kernel-only byte enums cover GF stat selection, Refine table selection, gender, Renzokuken finisher flags, status-window flags and command-menu flags. Numeric powers, accuracies, durations, offsets and padding retain numeric types.
Table of contents
- Header
- Battle commands
- Magic
- Junctionable GFs
- Enemy attacks
- Weapons
- Renzokuken finishers
- Characters
- Battle items
- Non battle item name and description offset
- Non junctionable GF attacks
- Command ability data
- Junction abilities
- Command abilities
- Stat percentage increasing abilities
- Characters abilities
- Party abilities
- GF abilities
- Menu abilities
- Temporary characters limit breaks
- Blue magic
- Blue magic parameters
- Shot (irvine limit breaks)
- Duel parameters
- Duel (zell limit break)
- Rinoa commands
- Rinoa combine limit break
- Slot array
- Slot sets
- Devour
- Misc
- Misc text pointers
- Ability id space (and how to add abilities)