112
edits
Changes
Jump to navigation
Jump to search
no edit summary
=== Channel info (size: 4 bytes + 2 bytes * <channels count>) ===
struct AkaoChannelInfo { uint32_t mask; // represents bitmask of used channels in this frame uint32_t start_offsets[num_channels]; // offsets to channel opcode data }; int num_channels = 0; while (int bit = 0; ((info.mask & 0xFFFFFF) & (1 << bit)) != 0; bit++) num_channels++; First there is 32-bit number (offset 0x10), which represents bitmask of used channels in this frame, after . After this frame , there is <channels count> offsets to channel opcode data counting from current offset.Each offsets is a relative offset based on the address *next to* the offset itself. (This is a general rule for early versions of AKAO to interpret relative offsets.)
=== Channel Commands [AKAO Opcodes] ===