struct ability { index: u16; icon_id: u16; mp_cost: u16; unknown: u16; targets: u16; name: u8[32] | encoding('sjis') str; // The encoding actually depends on ROM region description: u8[256] | encoding('sjis') str; // ^ Ditto, we can't express this (we need parser options) padding: u8[726] nul; }; struct dat { ability: struct ability[$]; };