Skip to main content

MCBK ("KBCM") - Multi Cell Bank

Author(s): Gonhex
Research: Gonhex

The multi cell bank combines multiple animated cells into cluster. This allows more complex animations by grouping related sequences into one unit.

Table of Contents​


Data Structure​

Section Container​

struct ContainerSectionMCBK
{
/* 0x0 */ struct NitroSectionHeader sectionHeader;
/* 0x8 */ struct ContainerMCBK sectionData;
}; // entry size = sectionHeader.lengthSection
Field NameDescriptionData Type
sectionHeaderHeader of this section. sectionHeader.signature = "KBCM".NitroSectionHeader
sectionDataContent of this section.ContainerMCBK

MCBK Container​

struct ContainerMCBK
{
// header
/* 0x00 */ uint16_t numberMultiCells;
/* 0x02 */ uint16_t unknown0;
/* 0x04 */ uint32_t offsetDataMultiCell;
/* 0x08 */ uint32_t offsetDataMultiCellProperties;
/* 0x0C */ uint32_t unknown1;
/* 0x10 */ uint32_t unknown2;

// data
/* offsetMultiCell */ struct MultiCell dataMultiCell[numberMultiCells];
/* offsetMultiCellProperties */ struct MultiCellProperties dataMultiCellProperties[?];
}; // entry size = sectionHeader.lengthSection - 0x8
Field NameDescriptionData Type
numberMultiCellsNumber of multi cell objects.uint16_t
unknown0Always 0xBEEF.uint16_t
offsetDataMultiCellOffset to the multi cell data section relative to ContainerMCBK.uint32_t
offsetDataMultiCellPropertiesOffset to the multi cell property data section relative to ContainerMCBK.uint32_t
unknown1Unused offset?uint32_t
unknown2Unused offset?uint32_t
dataMultiCellMulti cell configuration table.MultiCell
dataMultiCellPropertiesCell selection and placement data.MultiCellProperties

Multi Cell​

struct MultiCell
{
/* 0x0 */ uint16_t numberDisplayedCells;
/* 0x2 */ uint16_t numberLoadedCells;
/* 0x4 */ uint32_t offsetData;
}; // entry size = 0x8
Field NameDescriptionData Type
numberDisplayedCellsNumber of visible multi cells.uint16_t
numberLoadedCellsNumber of multi cells within the buffer.uint16_t
offsetDataOffset of the multi cell relative to MultiCell.uint32_t

Multi Cell Properties​

struct MultiCellProperties
{
/* 0x0 */ uint16_t indexSequence;
/* 0x2 */ int16_t translateX;
/* 0x4 */ int16_t translateY;
/* 0x6 */ uint8_t frameMode;
/* 0x7 */ uint8_t uniqueID;
}; // entry size = 0x8
Field NameDescriptionData Type
indexSequenceSelects a sequence from the animation runtime.uint16_t
translateXX translation of the animated base.int16_t
translateYY translation of the animated base.int16_t
frameModeBehavior of the frame counter, if cell is temporary unloaded, see Frame Mode.uint8_t
uniqueIDLocal multi cell index starting by 0. No duplicates allowed.uint8_t

Specification​

Frame Mode​

Defines the behavior of a sequence if the displayed multicell changes.

  • 0x20: Reset the frame counter. The sequence will start from the beginning after the multicell regains focus.
  • 0x21: Continue counting. The sequence will continue counting frames even if the multicell lost focus, no restart after regaining it.

This value is probably a bitfield. This would explain the leading 2 which implies an always enabled flag.

Files​