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[$];};