public static void Main()
const uint characterTableAddress = 0x2D847C;
const uint characterDataByteSize = 0x48C;
const uint skillTotalCount = 421;
const uint skillFlagsByteSize = (skillTotalCount + 7) >> 3;
const uint skillSlotsOffset = 0xCC;
const uint assignedSkillsOffset = 0xCE;
const uint assignedSkillCount = 10;
const uint learnedSkillsOffset = 0x134;
const uint skillRanksOffset = 0x16C;
const uint skillRanksCount = 100;
uint characterAddress = characterTableAddress;
for (int i = 1; i <= 50; i++, characterAddress += characterDataByteSize)
Console.WriteLine("_C1 Clear character #{0} skills", i);
Console.WriteLine("# Skill slots");
Console.WriteLine("_L 0x0{0:X07} 0x00000000", characterAddress + skillSlotsOffset);
Console.WriteLine("# Assigned skills");
Console.WriteLine("_L 0x8{0:X07} 0x{1:X04}0001", characterAddress + assignedSkillsOffset, 3 * assignedSkillCount);
Console.WriteLine("_L 0x10000000 0x00000000");
Console.WriteLine("# Learned skills");
Console.WriteLine("_L 0x8{0:X07} 0x{1:X04}0001", characterAddress + learnedSkillsOffset, skillFlagsByteSize);
Console.WriteLine("_L 0x00000000 0x00000000");
Console.WriteLine("# Skill ranks");
Console.WriteLine("_L 0x4{0:X07} 0x{1:X04}0001", characterAddress + skillRanksOffset, skillRanksCount * 2);
Console.WriteLine("_L 0x00000000 0x00000000");