static const char *const kLoLIngamePakFilesFMTowns[11] = { "VOC.PAK", "GENERAL.PAK", "CHAPTER1.PAK", "CHAPTER2.PAK", "CHAPTER3.PAK", "CHAPTER4.PAK", "CHAPTER5.PAK", "CHAPTER6.PAK", "CHAPTER7.PAK", "CHAPTER8.PAK", "TMUS.PAK" }; static const StringListProvider kLoLIngamePakFilesFMTownsProvider = { ARRAYSIZE(kLoLIngamePakFilesFMTowns), kLoLIngamePakFilesFMTowns }; static const char *const kLoLIngameSfxFilesFMTowns[230] = { "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "XXXXXXXX", "DOORMTOP", "DOORMTCL", "PMETLHI", "SWING6", "MDAMAGE2", "LEVERDN", "LEVERUP", "MTLDRSLM", "DOORWDOP", "DOORWDCL", "KEYOPEN", "KEYLOCK", "PORTCUL", "PORTCULD", "LOKPICK", "OCEAN2", "NUNCHUK", "SWING", "SHWING1", "SWING6", "THROW", "CROSSBOW", "HEAL1", "FIRESPL1", "PRESSIN", "PRESSOUT", "PLATEON", "PLATEOFF", "DORWDSLM", "LITENIN1", "ICESPEL2", "SPELL4B", "SHIELD1", "3BOLTC", "2BOLTC", "1BOLTC", "DAWNSPL1", "HEALKING", "SPELL7", "SWING1", "EXPLODE", "CROWCAW", "MORPH2", "CHEST", "MONEY", "SPELBK2", "AUTOMAP", "MINECRT3", "CREAK1", "TURNPAG2", "POLGULP1", "GOOEY1", "BUCKBELL", "KEEPXIT2", "VSCREAM4", "EMPTY", "GOOEY1", "GOOEY2", "RIPPOD4", "PODSKEL1", "INVISO", "OPENBOX2", "ACCEPT2", "BOW2", "HACHUCKM", "FOUNDRY2", "FOUNDRY2", "FOUNDRY4", "FOUNDRY6", "CLEANGL1", "CLEANGL2", "GLOWY1", "DORSTNOP", "DORSTNCL", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "ADAMAGE1", "HDAMAGE1", "TDAMAGE1", "BDAMAGE1", "LDAMAGE1", "TDAMAGE2", "CDAMAGE1", "EMPTY", "EMPTY", "EMPTY", "GOOD1", "GOOD2", "EMPTY", "EMPTY", "EMPTY", "LITENIN1", "COMPASS2", "KINGDOR1", "GLASBRK2", "FLUTTER3", "NUNCHUK", "WALLFALL", "WALLHIT", "MWHOA1", "LADDER", "WHITTL3", "ROWBOAT1", "HORSEY2", "SNORT", "PUMPDOR1", "PUMPSM2", "PUMPSM3", "SPARK1", "BEZEL", "SWARM", "CHEST", "WRIT1", "CAUSFOG", "VAELAN2", "ROARSPL1", "RATTLER", "WINK1", "HANDFATE", "QUAKE1", "WIZLAMP1", "SAP2", "MSTDOOM1", "GARDIAN1", "VORTEX1", "LION1", "STEAM", "SQUAWCK", "SLIDEMUG", "SPARKHIT", "SPARKHIT2", "SPARKHIT3", "ICEFORM", "ICEXPLOD", "EXPLODE2", "EXPLODE3", "BOLTQUK2", "BOLT2", "BOLT3", "SNKBITE", "HANDGLOW", "MSTDOOM2", "MSTDOOM3", "GARDIAN2", "PLUSPOWR", "MINSPOWR", "BLUDCURL", "LORAGASP", "POURH2O", "AWHOA2", "HWHOA1", "CWHOA1", "AFALL2", "EMPTY", "CFALL2", "MFALL2", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "EMPTY", "WRIT2", "WRIT3", "WRIT4", "WRIT5", "WRIT6", "RUCKUS1", "RUCKUS3", "CHANT1", "EMPTY", "EMPTY", "EMPTY", "CHANT2", "CHANT3", "" }; static const StringListProvider kLoLIngameSfxFilesFMTownsProvider = { ARRAYSIZE(kLoLIngameSfxFilesFMTowns), kLoLIngameSfxFilesFMTowns }; static const byte kLoLIngameSfxIndexFMTowns[1000] = { 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x34, 0x00, 0x6F, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x7D, 0x00, 0x00, 0x00, 0x7E, 0x00, 0x00, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x36, 0x00, 0x73, 0x00, 0x35, 0x00, 0x9C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x80, 0x00, 0x73, 0x00, 0x81, 0x00, 0x73, 0x00, 0x82, 0x00, 0x73, 0x00, 0x83, 0x00, 0x73, 0x00, 0x84, 0x00, 0x73, 0x00, 0x85, 0x00, 0x73, 0x00, 0x86, 0x00, 0x73, 0x00, 0xD7, 0x00, 0x76, 0x00, 0x87, 0x00, 0x65, 0x00, 0x38, 0x00, 0x5F, 0x00, 0x37, 0x00, 0x5F, 0x00, 0x32, 0x00, 0x0A, 0x00, 0x33, 0x00, 0x64, 0x00, 0x39, 0x00, 0x65, 0x00, 0x3A, 0x00, 0x0A, 0x00, 0x3B, 0x00, 0x14, 0x00, 0x4E, 0x00, 0x65, 0x00, 0x7A, 0x00, 0x64, 0x00, 0x7B, 0x00, 0x64, 0x00, 0x88, 0x00, 0x65, 0x00, 0x3C, 0x00, 0x65, 0x00, 0x3D, 0x00, 0x64, 0x00, 0x89, 0x00, 0x00, 0x00, 0x8E, 0x00, 0x14, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x40, 0x00, 0x65, 0x00, 0x41, 0x00, 0x00, 0x00, 0xC9, 0x00, 0x72, 0x00, 0xCA, 0x00, 0x72, 0x00, 0xCB, 0x00, 0x72, 0x00, 0xCC, 0x00, 0x74, 0x00, 0xCD, 0x00, 0x74, 0x00, 0xCE, 0x00, 0x74, 0x00, 0xCF, 0x00, 0x74, 0x00, 0xD0, 0x00, 0x73, 0x00, 0xD1, 0x00, 0x73, 0x00, 0xD2, 0x00, 0x73, 0x00, 0xD3, 0x00, 0x73, 0x00, 0xD4, 0x00, 0x72, 0x00, 0xD5, 0x00, 0x72, 0x00, 0xD6, 0x00, 0x72, 0x00, 0x42, 0x00, 0x6F, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x44, 0x00, 0x6F, 0x00, 0x45, 0x00, 0x6F, 0x00, 0x46, 0x00, 0x6F, 0x00, 0x47, 0x00, 0x6F, 0x00, 0x48, 0x00, 0x77, 0x00, 0x49, 0x00, 0x89, 0xFF, 0x4F, 0x00, 0x89, 0xFF, 0x50, 0x00, 0x89, 0xFF, 0xA0, 0x00, 0x8A, 0xFF, 0xA1, 0x00, 0x89, 0xFF, 0xA2, 0x00, 0x89, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xA3, 0x00, 0x89, 0xFF, 0xA4, 0x00, 0x89, 0xFF, 0x4A, 0x00, 0x13, 0x00, 0x4B, 0x00, 0x13, 0x00, 0x4C, 0x00, 0x32, 0x00, 0x4D, 0x00, 0x32, 0x00, 0x5F, 0x00, 0x0A, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x8F, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x58, 0x00, 0x77, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5D, 0x00, 0x6A, 0x00, 0x8A, 0x00, 0x6F, 0x00, 0x8B, 0x00, 0x6F, 0x00, 0x8C, 0x00, 0x00, 0x00, 0x8D, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x77, 0x00, 0x5C, 0x00, 0x00, 0x00, 0x5B, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x6F, 0x00, 0x61, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x62, 0x00, 0x76, 0x00, 0x63, 0x00, 0x3C, 0x00, 0x64, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x6B, 0x00, 0x00, 0x00, 0x6C, 0x00, 0x00, 0x00, 0x6D, 0x00, 0x00, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x6F, 0x00, 0x00, 0x00, 0x70, 0x00, 0x88, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x73, 0x00, 0x74, 0x00, 0x74, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x79, 0x00, 0x77, 0x00, 0x90, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x92, 0x00, 0x77, 0x00, 0x93, 0x00, 0x1E, 0x00, 0x94, 0x00, 0x89, 0xFF, 0x95, 0x00, 0x77, 0x00, 0x96, 0x00, 0x76, 0x00, 0x97, 0x00, 0x72, 0x00, 0x98, 0x00, 0x00, 0x00, 0x99, 0x00, 0x50, 0x00, 0x9A, 0x00, 0x78, 0x00, 0x9B, 0x00, 0x64, 0x00, 0x9C, 0x00, 0x5A, 0x00, 0x9D, 0x00, 0x64, 0x00, 0x9E, 0x00, 0x65, 0x00, 0x9F, 0x00, 0x66, 0x00, 0xA5, 0x00, 0x89, 0xFF, 0xA6, 0x00, 0x89, 0xFF, 0xA7, 0x00, 0x77, 0x00, 0xA8, 0x00, 0x76, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xA9, 0x00, 0x77, 0x00, 0xAA, 0x00, 0x77, 0x00, 0xAB, 0x00, 0x77, 0x00, 0xAC, 0x00, 0x77, 0x00, 0xAD, 0x00, 0x77, 0x00, 0xAE, 0x00, 0x77, 0x00, 0xAF, 0x00, 0x76, 0x00, 0xB0, 0x00, 0x77, 0x00, 0xB1, 0x00, 0x64, 0x00, 0xB2, 0x00, 0x6F, 0x00, 0xB3, 0x00, 0x6E, 0x00, 0xB4, 0x00, 0x6E, 0x00, 0xB5, 0x00, 0x77, 0x00, 0xB6, 0x00, 0x77, 0x00, 0xB7, 0x00, 0x77, 0x00, 0xB8, 0x00, 0x76, 0x00, 0xB9, 0x00, 0x77, 0x00, 0xBA, 0x00, 0x77, 0x00, 0xBB, 0x00, 0x77, 0x00, 0xBC, 0x00, 0x77, 0x00, 0xBD, 0x00, 0x77, 0x00, 0xBE, 0x00, 0x77, 0x00, 0xBF, 0x00, 0x77, 0x00, 0xC0, 0x00, 0x76, 0x00, 0xC1, 0x00, 0x77, 0x00, 0xC2, 0x00, 0x77, 0x00, 0xC3, 0x00, 0x77, 0x00, 0xC4, 0x00, 0x6E, 0x00, 0xC5, 0x00, 0x6E, 0x00, 0xC6, 0x00, 0x7D, 0x00, 0xC7, 0x00, 0x78, 0x00, 0xC8, 0x00, 0x78, 0x00, 0xD8, 0x00, 0x77, 0x00, 0xD9, 0x00, 0x77, 0x00, 0xDA, 0x00, 0x77, 0x00, 0xDB, 0x00, 0x77, 0x00, 0xDC, 0x00, 0x77, 0x00, 0xDD, 0x00, 0x78, 0x00, 0xDE, 0x00, 0x78, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xE3, 0x00, 0x77, 0x00, 0xE4, 0x00, 0x77, 0x00, 0xE0, 0x00, 0x1E, 0x00, 0xDF, 0x00, 0x77, 0x00, 0xE1, 0x00, 0x05, 0x00, 0xE2, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x50, 0x00, 0x01, 0x00, 0x50, 0x00, 0x02, 0x00, 0x50, 0x00, 0x03, 0x00, 0x50, 0x00, 0x04, 0x00, 0x50, 0x00, 0x05, 0x00, 0x50, 0x00, 0x06, 0x00, 0x50, 0x00, 0x07, 0x00, 0x50, 0x00, 0x08, 0x00, 0x50, 0x00, 0x09, 0x00, 0x50, 0x00, 0x0A, 0x00, 0x50, 0x00, 0x0B, 0x00, 0x50, 0x00, 0x0C, 0x00, 0x50, 0x00, 0x0D, 0x00, 0x50, 0x00, 0x0E, 0x00, 0x50, 0x00, 0x0F, 0x00, 0x50, 0x00, 0x10, 0x00, 0x50, 0x00, 0x11, 0x00, 0x5A, 0x00, 0x12, 0x00, 0x5A, 0x00, 0x13, 0x00, 0x5A, 0x00, 0x14, 0x00, 0x5A, 0x00, 0x15, 0x00, 0x5A, 0x00, 0x16, 0x00, 0x5A, 0x00, 0x17, 0x00, 0x5A, 0x00, 0x18, 0x00, 0x5A, 0x00, 0x19, 0x00, 0x5A, 0x00, 0x1A, 0x00, 0x5A, 0x00, 0x1B, 0x00, 0x5A, 0x00, 0x1C, 0x00, 0x5A, 0x00, 0x1D, 0x00, 0x5A, 0x00, 0x1E, 0x00, 0x5A, 0x00, 0x1F, 0x00, 0x5A, 0x00, 0x20, 0x00, 0x5A, 0x00, 0x21, 0x00, 0x73, 0x00, 0x22, 0x00, 0x73, 0x00, 0x23, 0x00, 0x73, 0x00, 0x24, 0x00, 0x73, 0x00, 0x25, 0x00, 0x73, 0x00, 0x26, 0x00, 0x73, 0x00, 0x27, 0x00, 0x73, 0x00, 0x28, 0x00, 0x73, 0x00, 0x29, 0x00, 0x73, 0x00, 0x2A, 0x00, 0x73, 0x00, 0x2B, 0x00, 0x50, 0x00, 0x2C, 0x00, 0x5A, 0x00, 0x2D, 0x00, 0x5A, 0x00, 0x2E, 0x00, 0x5A, 0x00, 0x2F, 0x00, 0x5A, 0x00, 0x30, 0x00, 0x5A, 0x00, 0x31, 0x00, 0x5A, 0x00 }; static const ByteProvider kLoLIngameSfxIndexFMTownsProvider = { ARRAYSIZE(kLoLIngameSfxIndexFMTowns), kLoLIngameSfxIndexFMTowns }; static const SpellProperty kLoLSpellPropertiesFMTowns[10] = { { 16436, { 5, 10, 15, 25 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0100 }, { 16437, { 5, 10, 25, 60 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0001 }, { 16438, { 8, 15, 30, 80 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0102 }, { 16440, { 20, 35, 65, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0103 }, { 16441, { 30, 60, 90, 120 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0104 }, { 16442, { 30, 60, 90, 150 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0105 }, { 16439, { 25, 30, 50, 100 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0106 }, { 16443, { 3, 6, 12, 24 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0107 }, { 16975, { 15, 15, 15, 15 }, 0, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 }, { 16975, { 15, 15, 15, 15 }, 15, 0, { 0, 0, 0, 0 }, 0, 0, 0x0108 } }; static const SpellPropertyProvider kLoLSpellPropertiesFMTownsProvider = { ARRAYSIZE(kLoLSpellPropertiesFMTowns), kLoLSpellPropertiesFMTowns }; static const byte kLoLGameShapeMapFMTowns[276] = { 0x15, 0x54, 0x05, 0x35, 0x09, 0x36, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x3A, 0x26, 0x3B, 0x05, 0x35, 0x07, 0x37, 0x18, 0x3E, 0x0D, 0x3C, 0x06, 0x40, 0x06, 0x3D, 0x01, 0x54, 0x01, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x04, 0x54, 0x04, 0x54, 0x2D, 0x54, 0x2D, 0x54, 0x0B, 0x39, 0x24, 0x54, 0x03, 0x38, 0x00, 0x3A, 0x1E, 0x3C, 0x1E, 0x3C, 0x1B, 0x54, 0x14, 0x54, 0x29, 0x54, 0x02, 0x54, 0x0C, 0x54, 0x22, 0x54, 0x21, 0x3F, 0x0D, 0x3C, 0x25, 0x54, 0x1A, 0x3F, 0x04, 0x54, 0x30, 0x54, 0x31, 0x54, 0x32, 0x54, 0x32, 0x54, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x00, 0x34, 0x17, 0x54, 0x17, 0x54, 0x0E, 0x54, 0x0E, 0x54, 0x0E, 0x54, 0x26, 0x3B, 0x2C, 0x54, 0x21, 0x3F, 0x07, 0x37, 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x22, 0x54, 0x22, 0x54, 0x16, 0x54, 0x2D, 0x54, 0x3B, 0x54, 0x3B, 0x54, 0x3A, 0x54, 0x17, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x17, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x0A, 0x54, 0x1F, 0x54, 0x17, 0x54, 0x27, 0x54, 0x1B, 0x54, 0x1E, 0x3C, 0x2A, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2F, 0x54, 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54, 0x2C, 0x54, 0x34, 0x54, 0x0F, 0x54, 0x35, 0x41, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x2B, 0x54, 0x1D, 0x54, 0x1D, 0x54, 0x28, 0x54, 0x28, 0x54, 0x28, 0x54, 0x28, 0x54, 0x01, 0x54, 0x14, 0x54, 0x14, 0x54, 0x14, 0x54, 0x14, 0x54, 0x1B, 0x54, 0x27, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x36, 0x54, 0x37, 0x54, 0x38, 0x54, 0x39, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x1B, 0x54, 0x27, 0x54, 0x2E, 0x54, 0x2E, 0x54, 0x2E, 0x54, 0x2E, 0x54, 0x17, 0x54, 0x01, 0x54, 0x1C, 0x54, 0x1C, 0x54 }; static const ByteProvider kLoLGameShapeMapFMTownsProvider = { ARRAYSIZE(kLoLGameShapeMapFMTowns), kLoLGameShapeMapFMTowns }; static const byte kLoLSceneItemOffsFMTowns[8] = { 0x00, 0xFE, 0x01, 0xFF, 0x02, 0x00, 0x01, 0xFF }; static const ByteProvider kLoLSceneItemOffsFMTownsProvider = { ARRAYSIZE(kLoLSceneItemOffsFMTowns), kLoLSceneItemOffsFMTowns }; static const byte kLoLCharInvIndexFMTowns[5] = { 0x00, 0x00, 0x03, 0x01, 0x02 }; static const ByteProvider kLoLCharInvIndexFMTownsProvider = { ARRAYSIZE(kLoLCharInvIndexFMTowns), kLoLCharInvIndexFMTowns }; static const byte kLoLCharInvDefsFMTowns[88] = { 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04, 0x50, 0x1C, 0x05, 0x5D, 0x0F, 0x4E, 0x50, 0x4E, 0x05, 0x19, 0x50, 0x19, 0x05, 0x49, 0x50, 0x49, 0x05, 0x01, 0x05, 0x31, 0x50, 0x01, 0x50, 0x31, 0x05, 0x61, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04, 0x50, 0x1C, 0x05, 0x5D, 0x0F, 0x4E, 0x50, 0x4E, 0x05, 0x34, 0x50, 0x34, 0xFF, 0xFF, 0xFF, 0xFF, 0x05, 0x04, 0x05, 0x1C, 0x50, 0x04, 0x50, 0x1C, 0xFF, 0xFF, 0x0F, 0x4E, 0x50, 0x4E }; static const ByteProvider kLoLCharInvDefsFMTownsProvider = { ARRAYSIZE(kLoLCharInvDefsFMTowns), kLoLCharInvDefsFMTowns }; static const uint16 kLoLCharDefsManFMTowns[9] = { 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100, 0x0004 }; static const Uint16Provider kLoLCharDefsManFMTownsProvider = { ARRAYSIZE(kLoLCharDefsManFMTowns), kLoLCharDefsManFMTowns }; static const uint16 kLoLCharDefsWomanFMTowns[9] = { 0x0100, 0x0100, 0x0100, 0x0032, 0x0100, 0x0100, 0x0100, 0x0100, 0x0004 }; static const Uint16Provider kLoLCharDefsWomanFMTownsProvider = { ARRAYSIZE(kLoLCharDefsWomanFMTowns), kLoLCharDefsWomanFMTowns }; static const uint16 kLoLCharDefsKieranFMTowns[9] = { 0x0180, 0x0080, 0x00C0, 0x0032, 0x0200, 0x00A6, 0x0100, 0x0140, 0x0006 }; static const Uint16Provider kLoLCharDefsKieranFMTownsProvider = { ARRAYSIZE(kLoLCharDefsKieranFMTowns), kLoLCharDefsKieranFMTowns }; static const uint16 kLoLCharDefsAkshelFMTowns[9] = { 0x00C0, 0x00C0, 0x0140, 0x0032, 0x0100, 0x0180, 0x0180, 0x0100, 0x0004 }; static const Uint16Provider kLoLCharDefsAkshelFMTownsProvider = { ARRAYSIZE(kLoLCharDefsAkshelFMTowns), kLoLCharDefsAkshelFMTowns }; static const uint32 kLoLExpRequirementsFMTowns[11] = { 0x00000000, 0x000001F4, 0x000005DC, 0x00001388, 0x000061A8, 0x0000C350, 0x00013880, 0x0001D4C0, 0x0002BF20, 0x00041EB0, 0x7FFFFFFF }; static const Uint32Provider kLoLExpRequirementsFMTownsProvider = { ARRAYSIZE(kLoLExpRequirementsFMTowns), kLoLExpRequirementsFMTowns }; static const uint16 kLoLMonsterModifiers1FMTowns[3] = { 0x00C0, 0x0100, 0x0180 }; static const Uint16Provider kLoLMonsterModifiers1FMTownsProvider = { ARRAYSIZE(kLoLMonsterModifiers1FMTowns), kLoLMonsterModifiers1FMTowns }; static const uint16 kLoLMonsterModifiers2FMTowns[3] = { 0x0100, 0x0100, 0x00C0 }; static const Uint16Provider kLoLMonsterModifiers2FMTownsProvider = { ARRAYSIZE(kLoLMonsterModifiers2FMTowns), kLoLMonsterModifiers2FMTowns }; static const uint16 kLoLMonsterModifiers3FMTowns[3] = { 0x0140, 0x0100, 0x0080 }; static const Uint16Provider kLoLMonsterModifiers3FMTownsProvider = { ARRAYSIZE(kLoLMonsterModifiers3FMTowns), kLoLMonsterModifiers3FMTowns }; static const byte kLoLMonsterShiftOffsetsFMTowns[32] = { 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01, 0xFF, 0x01, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00 }; static const ByteProvider kLoLMonsterShiftOffsetsFMTownsProvider = { ARRAYSIZE(kLoLMonsterShiftOffsetsFMTowns), kLoLMonsterShiftOffsetsFMTowns }; static const byte kLoLMonsterDirFlagsFMTowns[16] = { 0x08, 0x14, 0x00, 0x04, 0x04, 0x08, 0x14, 0x00, 0x00, 0x04, 0x08, 0x14, 0x14, 0x00, 0x04, 0x08 }; static const ByteProvider kLoLMonsterDirFlagsFMTownsProvider = { ARRAYSIZE(kLoLMonsterDirFlagsFMTowns), kLoLMonsterDirFlagsFMTowns }; static const byte kLoLMonsterScaleYFMTowns[30] = { 0x7C, 0x78, 0x74, 0x70, 0x6C, 0x68, 0x65, 0x62, 0x5F, 0x5C, 0x59, 0x56, 0x53, 0x50, 0x4D, 0x4A, 0x48, 0x46, 0x44, 0x43, 0x41, 0x40, 0x3E, 0x3D, 0x3C, 0x3B, 0x3A, 0x39, 0x38, 0x38 }; static const ByteProvider kLoLMonsterScaleYFMTownsProvider = { ARRAYSIZE(kLoLMonsterScaleYFMTowns), kLoLMonsterScaleYFMTowns }; static const byte kLoLMonsterScaleXFMTowns[29] = { 0x98, 0x98, 0x90, 0x88, 0x80, 0x76, 0x6E, 0x68, 0x62, 0x5C, 0x58, 0x54, 0x50, 0x4A, 0x44, 0x40, 0x3C, 0x38, 0x36, 0x32, 0x30, 0x2C, 0x2A, 0x28, 0x26, 0x24, 0x22, 0x20, 0x20 }; static const ByteProvider kLoLMonsterScaleXFMTownsProvider = { ARRAYSIZE(kLoLMonsterScaleXFMTowns), kLoLMonsterScaleXFMTowns }; static const uint16 kLoLMonsterScaleWHFMTowns[65] = { 0x0041, 0x0045, 0x0049, 0x004D, 0x0051, 0x0055, 0x0059, 0x005D, 0x0062, 0x0066, 0x006A, 0x006E, 0x0072, 0x0076, 0x007A, 0x007E, 0x0082, 0x0086, 0x008A, 0x008E, 0x0092, 0x0096, 0x009A, 0x009E, 0x00A3, 0x00A7, 0x00AB, 0x00AF, 0x00B3, 0x00B7, 0x00BB, 0x00BF, 0x00C3, 0x00C7, 0x00CB, 0x00CF, 0x00D3, 0x00D7, 0x00DB, 0x00DF, 0x00E4, 0x00E8, 0x00EC, 0x00F0, 0x00F4, 0x00F8, 0x00FC, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100 }; static const Uint16Provider kLoLMonsterScaleWHFMTownsProvider = { ARRAYSIZE(kLoLMonsterScaleWHFMTowns), kLoLMonsterScaleWHFMTowns }; static const FlyingObjectShape kLoLFlyingObjectShpFMTowns[13] = { { 0, 0, 1, 0x00, 0x40, }, { 2, 2, 3, 0x00, 0x00, }, { 4, 4, 4, 0x00, 0x00, }, { 5, 5, 5, 0x20, 0x00, }, { 6, 6, 6, 0x20, 0x00, }, { 7, 7, 7, 0x20, 0x00, }, { 9, 8, 15, 0x00, 0x00, }, { 11, 10, 12, 0x00, 0x00, }, { 12, 12, 12, 0x20, 0x00, }, { 14, 13, 15, 0x00, 0x00, }, { 16, 16, 16, 0x00, 0x00, }, { 17, 17, 17, 0x20, 0x00, }, { 18, 18, 18, 0x00, 0x00, } }; static const FlyingObjectShapeProvider kLoLFlyingObjectShpFMTownsProvider = { ARRAYSIZE(kLoLFlyingObjectShpFMTowns), kLoLFlyingObjectShpFMTowns }; static const uint16 kLoLInventoryDescFMTowns[11] = { 0x417A, 0x417B, 0x417A, 0x417B, 0x417C, 0x417D, 0x417E, 0x417F, 0x4180, 0x4181, 0x4181 }; static const Uint16Provider kLoLInventoryDescFMTownsProvider = { ARRAYSIZE(kLoLInventoryDescFMTowns), kLoLInventoryDescFMTowns }; static const char *const kLoLLevelShpListFMTowns[12] = { "KEEP.SHP", "FOREST1.SHP", "MANOR.SHP", "CAVE1.SHP", "SWAMP.SHP", "URBISH.SHP", "MINE1.SHP", "TOWER1.SHP", "YVEL1.SHP", "CATWALK.SHP", "RUIN.SHP", "CIMMERIA.SHP" }; static const StringListProvider kLoLLevelShpListFMTownsProvider = { ARRAYSIZE(kLoLLevelShpListFMTowns), kLoLLevelShpListFMTowns }; static const char *const kLoLLevelDatListFMTowns[12] = { "KEEP.DAT", "FOREST1.DAT", "MANOR.DAT", "CAVE1.DAT", "SWAMP.DAT", "URBISH.DAT", "MINE1.DAT", "TOWER1.DAT", "YVEL1.DAT", "CATWALK.DAT", "RUIN.DAT", "CIMMERIA.DAT" }; static const StringListProvider kLoLLevelDatListFMTownsProvider = { ARRAYSIZE(kLoLLevelDatListFMTowns), kLoLLevelDatListFMTowns }; static const CompassDef kLoLCompassDefsFMTowns[32] = { { 0, 3, -3, 0x00 }, { 1, 3, -3, 0x00 }, { 2, 3, -3, 0x00 }, { 3, 5, -3, 0x00 }, { 4, 5, -3, 0x00 }, { 5, 6, -3, 0x00 }, { 6, 6, -3, 0x00 }, { 7, 6, -3, 0x00 }, { 8, 6, -3, 0x00 }, { 7, 6, 4, 0x02 }, { 6, 6, 4, 0x02 }, { 5, 6, 4, 0x02 }, { 4, 5, 4, 0x02 }, { 3, 5, 4, 0x02 }, { 2, 3, 4, 0x02 }, { 1, 3, 4, 0x02 }, { 0, 3, 4, 0x02 }, { 1, 2, 4, 0x03 }, { 2, 2, 4, 0x03 }, { 3, 0, 4, 0x03 }, { 4, 0, 4, 0x03 }, { 5, -1, 4, 0x03 }, { 6, -1, 4, 0x03 }, { 7, -1, 4, 0x03 }, { 8, -1, -3, 0x01 }, { 7, -1, -3, 0x01 }, { 6, -1, -3, 0x01 }, { 5, -1, -3, 0x01 }, { 4, 0, -3, 0x01 }, { 3, 0, -3, 0x01 }, { 2, 2, -3, 0x01 }, { 1, 2, -3, 0x01 } }; static const CompassDefProvider kLoLCompassDefsFMTownsProvider = { ARRAYSIZE(kLoLCompassDefsFMTowns), kLoLCompassDefsFMTowns }; static const byte kLoLStashSetupFMTowns[12] = { 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x03, 0x03, 0x00, 0x01, 0x01 }; static const ByteProvider kLoLStashSetupFMTownsProvider = { ARRAYSIZE(kLoLStashSetupFMTowns), kLoLStashSetupFMTowns }; static const byte kLoLDscWallsFMTowns[36] = { 0xFF, 0xFF, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x02, 0x03, 0xFF, 0xFF, 0x02, 0x01, 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0x02, 0x03, 0x02, 0x01, 0x02, 0xFF, 0x02, 0x03, 0xFF, 0x01, 0x02, 0xFF, 0xFF, 0x03 }; static const ByteProvider kLoLDscWallsFMTownsProvider = { ARRAYSIZE(kLoLDscWallsFMTowns), kLoLDscWallsFMTowns }; static const byte kLoLDscShapeIndexFMTowns[36] = { 0x03, 0x09, 0x03, 0x08, 0x03, 0x07, 0x03, 0x03, 0x03, 0xF9, 0x03, 0xF8, 0x03, 0xF7, 0x02, 0x09, 0x02, 0x06, 0x02, 0x02, 0x02, 0xFA, 0x02, 0xF7, 0x01, 0x05, 0x01, 0x01, 0x01, 0xFB, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFC }; static const ByteProvider kLoLDscShapeIndexFMTownsProvider = { ARRAYSIZE(kLoLDscShapeIndexFMTowns), kLoLDscShapeIndexFMTowns }; static const byte kLoLDscOvlMapFMTowns[10] = { 0x00, 0x01, 0x01, 0x01, 0x04, 0x05, 0x05, 0x05, 0x05, 0x04 }; static const ByteProvider kLoLDscOvlMapFMTownsProvider = { ARRAYSIZE(kLoLDscOvlMapFMTowns), kLoLDscOvlMapFMTowns }; static const uint16 kLoLDscScaleWidthDataFMTowns[36] = { 0x0060, 0x0000, 0x0060, 0x00CE, 0x0060, 0x0055, 0x0060, 0x0000, 0x0060, 0x0055, 0x0060, 0x00CE, 0x0060, 0x0000, 0x00A0, 0x00AE, 0x00A0, 0x00AA, 0x00A0, 0x0000, 0x00A0, 0x00AA, 0x00A0, 0x00AE, 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0000, 0x0100 }; static const Uint16Provider kLoLDscScaleWidthDataFMTownsProvider = { ARRAYSIZE(kLoLDscScaleWidthDataFMTowns), kLoLDscScaleWidthDataFMTowns }; static const uint16 kLoLDscScaleHeightDataFMTowns[36] = { 0x006A, 0x0000, 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000, 0x006A, 0x006A, 0x006A, 0x006A, 0x006A, 0x0000, 0x00AA, 0x0056, 0x00AA, 0x00AA, 0x00AA, 0x0000, 0x00AA, 0x00AA, 0x00AA, 0x0056, 0x0100, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0000, 0x0000, 0x0100 }; static const Uint16Provider kLoLDscScaleHeightDataFMTownsProvider = { ARRAYSIZE(kLoLDscScaleHeightDataFMTowns), kLoLDscScaleHeightDataFMTowns }; static const uint16 kLoLDscXFMTowns[36] = { 0xFFB0, 0xFFE0, 0xFFE0, 0x0010, 0x0010, 0x0040, 0x0040, 0x0000, 0x0070, 0x0070, 0x00A0, 0x00A0, 0x00D0, 0x00D0, 0xFF86, 0x0000, 0xFFE0, 0x0030, 0x0030, 0x0000, 0x0080, 0x0080, 0x00D0, 0x00B0, 0xFF98, 0x0018, 0x0018, 0x0000, 0x0098, 0x0098, 0x0000, 0x0000, 0x0000, 0x0000, 0x00B0, 0x00B0 }; static const Uint16Provider kLoLDscXFMTownsProvider = { ARRAYSIZE(kLoLDscXFMTowns), kLoLDscXFMTowns }; static const byte kLoLBaseDscYFMTowns[36] = { 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x1B, 0x14, 0x1C, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x1C, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static const ByteProvider kLoLBaseDscYFMTownsProvider = { ARRAYSIZE(kLoLBaseDscYFMTowns), kLoLBaseDscYFMTowns }; static const byte kLoLDscTileIndexFMTowns[18] = { 0x00, 0x06, 0x01, 0x05, 0x02, 0x04, 0x03, 0x07, 0x0B, 0x08, 0x0A, 0x09, 0x0C, 0x0E, 0x0D, 0x0F, 0x11, 0x10 }; static const ByteProvider kLoLDscTileIndexFMTownsProvider = { ARRAYSIZE(kLoLDscTileIndexFMTowns), kLoLDscTileIndexFMTowns }; static const byte kLoLDscUnk2FMTowns[23] = { 0x00, 0x00, 0x00, 0x03, 0x03, 0x03, 0x03, 0x03, 0x08, 0x08, 0x08, 0x08, 0x08, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x12, 0x12, 0x12, 0x12, 0x12 }; static const ByteProvider kLoLDscUnk2FMTownsProvider = { ARRAYSIZE(kLoLDscUnk2FMTowns), kLoLDscUnk2FMTowns }; static const byte kLoLDscDoorShapeIndexFMTowns[23] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01 }; static const ByteProvider kLoLDscDoorShapeIndexFMTownsProvider = { ARRAYSIZE(kLoLDscDoorShapeIndexFMTowns), kLoLDscDoorShapeIndexFMTowns }; static const byte kLoLDscDimData1FMTowns[324] = { 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD8, 0xD8, 0x02, 0xD8, 0xD8, 0xD8, 0xD8, 0xFE, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xFE, 0xD8, 0x08, 0xD8, 0xD8, 0xD8, 0xFE, 0xF8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD7, 0x10, 0xD8, 0xFA, 0xD7, 0x10, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF2, 0xD8, 0x14, 0xD8, 0xD8, 0xD8, 0xF0, 0x0E, 0x14, 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xEC, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0x14, 0xD8, 0xED, 0xD7, 0xD8, 0xD8, 0x13, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD7, 0xD8, 0xD7, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x06, 0xD8, 0xD8, 0xFA, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFA, 0xD8, 0x10, 0xD8, 0xFA, 0xD7, 0x10, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xF0, 0xD8, 0xD8, 0xD8, 0xED, 0x10, 0xD8, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD7, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0x03, 0xD8, 0xFD, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xFD, 0xD8, 0x13, 0xFD, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xED, 0xD8, 0xD8, 0xD8, 0x13, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8, 0xD8 }; static const ByteProvider kLoLDscDimData1FMTownsProvider = { ARRAYSIZE(kLoLDscDimData1FMTowns), kLoLDscDimData1FMTowns }; static const byte kLoLDscDimData2FMTowns[648] = { 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x02, 0x16, 0x00, 0x04, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x16, 0x00, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x02, 0x16, 0x00, 0x16, 0x00, 0x08, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x02, 0x16, 0x00, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x08, 0x0E, 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x06, 0x10, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x0E, 0x16, 0x00, 0x16, 0x00, 0x14, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x10, 0x16, 0x16, 0x00, 0x00, 0x14, 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x14, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x12, 0x16, 0x14, 0x16, 0x00, 0x16, 0x13, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x06, 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x06, 0x16, 0x00, 0x16, 0x00, 0x10, 0x00, 0x16, 0x03, 0x16, 0x07, 0x0F, 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x10, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x13, 0x16, 0x00, 0x10, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x00, 0x16, 0x16, 0x00, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x03, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13, 0x03, 0x16, 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x13, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x13, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16, 0x00, 0x16 }; static const ByteProvider kLoLDscDimData2FMTownsProvider = { ARRAYSIZE(kLoLDscDimData2FMTowns), kLoLDscDimData2FMTowns }; static const byte kLoLDscBlockMapFMTowns[12] = { 0x02, 0x03, 0x00, 0x01, 0x01, 0x02, 0x03, 0x00, 0x03, 0x00, 0x01, 0x02 }; static const ByteProvider kLoLDscBlockMapFMTownsProvider = { ARRAYSIZE(kLoLDscBlockMapFMTowns), kLoLDscBlockMapFMTowns }; static const byte kLoLDscDimMapFMTowns[18] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03 }; static const ByteProvider kLoLDscDimMapFMTownsProvider = { ARRAYSIZE(kLoLDscDimMapFMTowns), kLoLDscDimMapFMTowns }; static const byte kLoLDscOvlIndexFMTowns[20] = { 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06, 0x06, 0x07, 0x07, 0x07 }; static const ByteProvider kLoLDscOvlIndexFMTownsProvider = { ARRAYSIZE(kLoLDscOvlIndexFMTowns), kLoLDscOvlIndexFMTowns }; static const byte kLoLDscBlockIndexFMTowns[72] = { 0x9D, 0x9E, 0x9F, 0xA0, 0xA1, 0xA2, 0xA3, 0xBE, 0xBF, 0xC0, 0xC1, 0xC2, 0xDF, 0xE0, 0xE1, 0xFF, 0x00, 0x01, 0xA3, 0xC3, 0xE3, 0x03, 0x23, 0x43, 0x63, 0xC2, 0xE2, 0x02, 0x22, 0x42, 0xE1, 0x01, 0x21, 0xE0, 0x00, 0x20, 0x63, 0x62, 0x61, 0x60, 0x5F, 0x5E, 0x5D, 0x42, 0x41, 0x40, 0x3F, 0x3E, 0x21, 0x20, 0x1F, 0x01, 0x00, 0xFF, 0x5D, 0x3D, 0x1D, 0xFD, 0xDD, 0xBD, 0x9D, 0x3E, 0x1E, 0xFE, 0xDE, 0xBE, 0x1F, 0xFF, 0xDF, 0x20, 0x00, 0xE0 }; static const ByteProvider kLoLDscBlockIndexFMTownsProvider = { ARRAYSIZE(kLoLDscBlockIndexFMTowns), kLoLDscBlockIndexFMTowns }; static const byte kLoLDscDoorY2FMTowns[128] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x08, 0x03, 0x12, 0x0E, 0x09, 0x04, 0x00, 0x13, 0x0F, 0x0A, 0x05, 0x01, 0x14, 0x10, 0x0B, 0x06, 0x02, 0x11, 0x0C, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x13, 0x12, 0x11, 0x10, 0x0F, 0x0E, 0x0D, 0x0C, 0x0B, 0x0A, 0x09, 0x08, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0C, 0x11, 0x02, 0x06, 0x0B, 0x10, 0x14, 0x01, 0x05, 0x0A, 0x0F, 0x13, 0x00, 0x04, 0x09, 0x0E, 0x12, 0x03, 0x08, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static const ByteProvider kLoLDscDoorY2FMTownsProvider = { ARRAYSIZE(kLoLDscDoorY2FMTowns), kLoLDscDoorY2FMTowns }; static const byte kLoLDscDoorFrameY1FMTowns[4] = { 0x1E, 0x18, 0x10, 0x00 }; static const ByteProvider kLoLDscDoorFrameY1FMTownsProvider = { ARRAYSIZE(kLoLDscDoorFrameY1FMTowns), kLoLDscDoorFrameY1FMTowns }; static const byte kLoLDscDoorFrameY2FMTowns[4] = { 0x3B, 0x47, 0x56, 0x78 }; static const ByteProvider kLoLDscDoorFrameY2FMTownsProvider = { ARRAYSIZE(kLoLDscDoorFrameY2FMTowns), kLoLDscDoorFrameY2FMTowns }; static const uint16 kLoLDscDoorScaleFMTowns[8] = { 0x0075, 0x006A, 0x00B9, 0x00B2, 0x0100, 0x0100, 0x0000, 0x0000 }; static const Uint16Provider kLoLDscDoorScaleFMTownsProvider = { ARRAYSIZE(kLoLDscDoorScaleFMTowns), kLoLDscDoorScaleFMTowns }; static const uint16 kLoLDscDoor4FMTowns[4] = { 0x0005, 0x0002, 0x0008, 0x0000 }; static const Uint16Provider kLoLDscDoor4FMTownsProvider = { ARRAYSIZE(kLoLDscDoor4FMTowns), kLoLDscDoor4FMTowns }; static const uint16 kLoLDscDoorXFMTowns[576] = { 0xFF98, 0xFFA0, 0xFFA8, 0xFF90, 0xFF98, 0xFFA0, 0xFFA8, 0xFFB0, 0xFF74, 0xFF7E, 0xFF88, 0xFF92, 0xFF9C, 0xFF74, 0xFF7E, 0xFF88, 0xFF92, 0xFF9C, 0xFF64, 0xFF70, 0xFF7C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFB8, 0xFFC0, 0xFFC8, 0xFFB0, 0xFFB8, 0xFFC0, 0xFFC8, 0xFFD0, 0xFF9C, 0xFFA6, 0xFFB0, 0xFFBA, 0xFFC4, 0xFF9C, 0xFFA6, 0xFFB0, 0xFFBA, 0xFFC4, 0xFF94, 0xFFA0, 0xFFAC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFD0, 0xFFD8, 0xFFE0, 0xFFE8, 0xFFF0, 0xFFC4, 0xFFCE, 0xFFD8, 0xFFE2, 0xFFEC, 0xFFC4, 0xFFCE, 0xFFD8, 0xFFE2, 0xFFEC, 0xFFC4, 0xFFD0, 0xFFDC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF8, 0x0000, 0x0008, 0xFFF0, 0xFFF8, 0x0000, 0x0008, 0x0010, 0xFFEC, 0xFFF6, 0x0000, 0x000A, 0x0014, 0xFFEC, 0xFFF6, 0x0000, 0x000A, 0x0014, 0xFFF4, 0x0000, 0x000C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0018, 0x0020, 0x0028, 0x0010, 0x0018, 0x0020, 0x0028, 0x0030, 0x0014, 0x001E, 0x0028, 0x0032, 0x003C, 0x0014, 0x001E, 0x0028, 0x0032, 0x003C, 0x0024, 0x0030, 0x003C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0038, 0x0040, 0x0048, 0x0030, 0x0038, 0x0040, 0x0048, 0x0050, 0x003C, 0x0046, 0x0050, 0x005A, 0x0064, 0x003C, 0x0046, 0x0050, 0x005A, 0x0064, 0x0054, 0x0060, 0x006C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0058, 0x0060, 0x0068, 0x0050, 0x0058, 0x0060, 0x0068, 0x0070, 0x0064, 0x006E, 0x0078, 0x0082, 0x008C, 0x0064, 0x006E, 0x0078, 0x0082, 0x008C, 0x0084, 0x0090, 0x009C, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF94, 0xFFA0, 0xFFAC, 0xFF7E, 0xFF8B, 0xFF98, 0xFFA5, 0xFFB2, 0xFF6C, 0xFF7B, 0xFF8A, 0xFF99, 0xFFA7, 0xFF60, 0xFF70, 0xFF80, 0xFF90, 0xFFA0, 0xFF4C, 0xFF60, 0xFF74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC4, 0xFFD0, 0xFFDC, 0xFFB2, 0xFFBF, 0xFFCC, 0xFFD9, 0xFFE6, 0xFFA7, 0xFFB6, 0xFFC5, 0xFFD4, 0xFFE2, 0xFFA0, 0xFFB0, 0xFFC0, 0xFFD0, 0xFFE0, 0xFF9C, 0xFFB0, 0xFFC4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF4, 0x0000, 0x000C, 0xFFE6, 0xFFF3, 0x0000, 0x000D, 0x001A, 0xFFE2, 0xFFF1, 0x0000, 0x000F, 0x001E, 0xFFE0, 0xFFF0, 0x0000, 0x0010, 0x0020, 0xFFEC, 0x0000, 0x0014, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0024, 0x0030, 0x003C, 0x001A, 0x0027, 0x0034, 0x0041, 0x004E, 0x001E, 0x002C, 0x003B, 0x004A, 0x0059, 0x0020, 0x0030, 0x0040, 0x0050, 0x0060, 0x003C, 0x0050, 0x0064, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0054, 0x0060, 0x006C, 0x004E, 0x005B, 0x0068, 0x0075, 0x0082, 0x0059, 0x0067, 0x0076, 0x0085, 0x0094, 0x0060, 0x0070, 0x0080, 0x0090, 0x00A0, 0x008C, 0x00A0, 0x00B4, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF9C, 0xFFB0, 0xFFC4, 0xFF7C, 0xFF92, 0xFFA8, 0xFFBE, 0xFFD4, 0xFF6D, 0xFF85, 0xFF9E, 0xFFB6, 0xFFCF, 0xFF5E, 0xFF79, 0xFF94, 0xFFAF, 0xFFCA, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFEC, 0x0000, 0x0014, 0xFFD4, 0xFFEA, 0x0000, 0x0016, 0x002C, 0xFFCF, 0xFFE7, 0x0000, 0x0019, 0x0031, 0xFFCA, 0xFFE5, 0x0000, 0x001B, 0x0036, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x003C, 0x0050, 0x0064, 0x002C, 0x0042, 0x0058, 0x006E, 0x0084, 0x0031, 0x004A, 0x0062, 0x007B, 0x0093, 0x0036, 0x0051, 0x006C, 0x0087, 0x00A2, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFF60, 0xFF80, 0xFFA0, 0xFF1C, 0xFF42, 0xFF68, 0xFF8E, 0xFFB4, 0xFF40, 0xFF60, 0xFF80, 0xFFA0, 0xFFC0, 0xFF1C, 0xFF42, 0xFF68, 0xFF8E, 0xFFB4, 0xFF60, 0xFF80, 0xFFA0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFE0, 0x0000, 0x0020, 0xFFB4, 0xFFDA, 0x0000, 0x0026, 0x004C, 0xFFC0, 0xFFE0, 0x0000, 0x0020, 0x0040, 0xFFB4, 0xFFDA, 0x0000, 0x0026, 0x004C, 0xFFE0, 0x0000, 0x0020, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0060, 0x0080, 0x00A0, 0x004C, 0x0072, 0x0098, 0x00BE, 0x00E4, 0x0040, 0x0060, 0x0080, 0x00A0, 0x00C0, 0x004C, 0x0072, 0x0098, 0x00BE, 0x00E4, 0x0060, 0x0080, 0x00A0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; static const Uint16Provider kLoLDscDoorXFMTownsProvider = { ARRAYSIZE(kLoLDscDoorXFMTowns), kLoLDscDoorXFMTowns }; static const uint16 kLoLDscDoorYFMTowns[576] = { 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFBF, 0xFFBF, 0xFFBF, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC1, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC3, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC5, 0xFFC9, 0xFFC9, 0xFFC9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFC9, 0xFFC9, 0xFFC9, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCB, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFCE, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD3, 0xFFD7, 0xFFD7, 0xFFD7, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFD7, 0xFFD7, 0xFFD7, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFDD, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFE2, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFEA, 0xFFF8, 0xFFF8, 0xFFF8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xFFF8, 0xFFF8, 0xFFF8, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0xFFFC, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 }; static const Uint16Provider kLoLDscDoorYFMTownsProvider = { ARRAYSIZE(kLoLDscDoorYFMTowns), kLoLDscDoorYFMTowns }; static const byte kLoLScrollXTopFMTowns[5] = { 0x05, 0x0A, 0x0F, 0x14, 0x19 }; static const ByteProvider kLoLScrollXTopFMTownsProvider = { ARRAYSIZE(kLoLScrollXTopFMTowns), kLoLScrollXTopFMTowns }; static const byte kLoLScrollYTopFMTowns[5] = { 0x02, 0x04, 0x07, 0x09, 0x0C }; static const ByteProvider kLoLScrollYTopFMTownsProvider = { ARRAYSIZE(kLoLScrollYTopFMTowns), kLoLScrollYTopFMTowns }; static const byte kLoLScrollXBottomFMTowns[5] = { 0x05, 0x0A, 0x0F, 0x14, 0x19 }; static const ByteProvider kLoLScrollXBottomFMTownsProvider = { ARRAYSIZE(kLoLScrollXBottomFMTowns), kLoLScrollXBottomFMTowns }; static const byte kLoLScrollYBottomFMTowns[5] = { 0x04, 0x08, 0x0C, 0x10, 0x14 }; static const ByteProvider kLoLScrollYBottomFMTownsProvider = { ARRAYSIZE(kLoLScrollYBottomFMTowns), kLoLScrollYBottomFMTowns }; static const LoLButtonDef kLoLButtonDefsFMTowns[95] = { { 0x1100, 30, 56, 33, 131, 22, 19, 0x0000, 0 }, { 0x1100, 31, 53, 33, 150, 22, 18, 0x0000, 0 }, { 0x1100, 31, 53, 33, 150, 22, 18, 0x0000, 0 }, { 0x1100, 29, 52, 11, 150, 22, 18, 0x0000, 0 }, { 0x1100, 28, 54, 53, 150, 22, 18, 0x0000, 0 }, { 0x1100, 127, 55, 11, 131, 22, 19, 0x0000, 0 }, { 0x1100, 18, 57, 53, 131, 22, 19, 0x0000, 0 }, { 0x0100, 49, 0, 80, 143, 22, 17, 0x0000, 0 }, { 0x0100, 50, 0, 80, 143, 22, 17, 0x0001, 0 }, { 0x0100, 51, 0, 80, 143, 22, 17, 0x0002, 0 }, { 0x0100, 48, 0, 80, 143, 22, 17, 0x0003, 0 }, { 0x1100, 0, 0, 80, 160, 22, 17, 0x0000, 0 }, { 0x1100, 0, 0, 80, 160, 22, 17, 0x0001, 0 }, { 0x1100, 0, 0, 80, 160, 22, 17, 0x0002, 0 }, { 0x1100, 0, 0, 80, 160, 22, 17, 0x0003, 0 }, { 0x1100, 0, 0, 80, 144, 22, 32, 0x0000, 0 }, { 0x1100, 27, 0, 0, 0, 320, 200, 0x0003, 0 }, { 0x0100, 0, 0, 80, 143, 33, 34, 0x0000, 0 }, { 0x0100, 0, 0, 80, 143, 33, 34, 0x0001, 0 }, { 0x0100, 0, 0, 80, 143, 33, 34, 0x0002, 0 }, { 0x0100, 0, 0, 80, 143, 33, 34, 0x0003, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 }, { 0x0100, 0, 0, 80, 143, 12, 34, 0x0000, 0 }, { 0x0100, 0, 0, 80, 143, 12, 34, 0x0001, 0 }, { 0x0100, 0, 0, 80, 143, 12, 34, 0x0002, 0 }, { 0x0100, 0, 0, 80, 143, 12, 34, 0x0003, 0 }, { 0x1000, 0, 0, 80, 143, 66, 34, 0x0000, 0 }, { 0x1000, 0, 0, 80, 143, 66, 34, 0x0001, 0 }, { 0x1000, 0, 0, 80, 143, 66, 34, 0x0002, 0 }, { 0x1000, 0, 0, 80, 143, 66, 34, 0x0003, 0 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0000, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0001, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0002, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0003, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0004, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0005, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0006, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0007, 2 }, { 0x1100, 0, 0, 0, 0, 20, 19, 0x0008, 2 }, { 0x1100, 0, 0, 0, 0, 12, 11, 0x0009, 2 }, { 0x1100, 0, 0, 0, 0, 12, 11, 0x000A, 2 }, { 0x1100, 27, 0, 160, 93, 43, 19, 0x0000, 2 }, { 0x1100, 0, 0, 0, 102, 88, 19, 0x0000, 2 }, { 0x1100, 0, 0, 88, 102, 88, 19, 0x0001, 2 }, { 0x1100, 0, 0, 0, 85, 88, 17, 0x0002, 2 }, { 0x1100, 0, 0, 88, 85, 88, 17, 0x0003, 2 }, { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 }, { 0x1100, 0, 0, 106, 179, 21, 21, 0x0000, 0 }, { 0x1100, 0, 0, 127, 179, 21, 21, 0x0001, 0 }, { 0x1100, 0, 0, 148, 179, 21, 21, 0x0002, 0 }, { 0x1100, 0, 0, 169, 179, 21, 21, 0x0003, 0 }, { 0x1100, 0, 0, 190, 179, 21, 21, 0x0004, 0 }, { 0x1100, 0, 0, 211, 179, 21, 21, 0x0005, 0 }, { 0x1100, 0, 0, 232, 179, 21, 21, 0x0006, 0 }, { 0x1100, 0, 0, 253, 179, 21, 21, 0x0007, 0 }, { 0x1100, 0, 0, 274, 179, 21, 21, 0x0008, 0 }, { 0x1100, 0, 0, 274, 179, 21, 21, 0x0009, 0 }, { 0x1100, 0, 0, 85, 179, 21, 21, 0xFFFF, 0 }, { 0x1100, 0, 0, 295, 179, 22, 21, 0x0001, 0 }, { 0x1100, 0, 0, 24, 8, 128, 96, 0x0001, 2 }, { 0x1100, 0, 0, 0, 0, 176, 120, 0x0000, 2 }, { 0x1100, 0, 0, 0, 0, 0, 0, 0x0000, 0 }, { 0x1100, 0, 0, 112, 0, 176, 16, 0x0001, 0 }, { 0x1100, 0, 0, 112, 110, 176, 26, 0x0001, 0 }, { 0x1100, 0, 0, 96, 88, 32, 32, 0x0001, 0 }, { 0x1100, 0, 0, 272, 88, 32, 32, 0x0001, 0 }, { 0x1100, 0, 0, 96, 16, 32, 72, 0x0001, 0 }, { 0x1100, 0, 0, 272, 16, 32, 72, 0x0001, 0 }, { 0x1100, 0, 0, 24, 15, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 24, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 33, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 42, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 51, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 60, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 69, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 78, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 87, 61, 9, 0x0000, 0 }, { 0x1100, 0, 0, 24, 96, 61, 9, 0x0000, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0000, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0001, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0002, 0 }, { 0x0100, 0, 0, 80, 143, 66, 34, 0x0003, 0 }, { 0x1100, 27, 0, 0, 0, 320, 200, 0x0003, 0 }, { 0x0100, 0, 0, 112, 0, 88, 80, 0x0000, 0 }, { 0x0100, 0, 0, 200, 0, 88, 80, 0x0001, 0 }, { 0x1100, 79, 27, 11, 178, 21, 22, 0x0000, 0 }, { 0x0100, 82, 0, 32, 178, 22, 22, 0x0000, 0 }, { 0x0100, 0, 0, 291, 96, 27, 24, 0x0000, 0 }, { 0x0100, 0, 0, 289, 0, 31, 28, 0x0000, 0 }, { 0x0100, 0, 0, 289, 31, 31, 23, 0x0000, 0 }, { 0x0100, 0, 0, 291, 56, 29, 24, 0x0000, 0 }, { 0x1100, 0, 0, 220, 98, 43, 19, 0x0000, 0 } }; static const LoLButtonDefProvider kLoLButtonDefsFMTownsProvider = { ARRAYSIZE(kLoLButtonDefsFMTowns), kLoLButtonDefsFMTowns }; static const byte kLoLButtonList1FMTowns[40] = { 0x59, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x31, 0x3E, 0x2D, 0x2E, 0x2F, 0x30, 0x56, 0x57, 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x58, 0x5A, 0x5B, 0x5C, 0x5D, 0xFF }; static const ByteProvider kLoLButtonList1FMTownsProvider = { ARRAYSIZE(kLoLButtonList1FMTowns), kLoLButtonList1FMTowns }; static const byte kLoLButtonList2FMTowns[15] = { 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x5E, 0xFF }; static const ByteProvider kLoLButtonList2FMTownsProvider = { ARRAYSIZE(kLoLButtonList2FMTowns), kLoLButtonList2FMTowns }; static const byte kLoLButtonList3FMTowns[2] = { 0x40, 0xFF }; static const ByteProvider kLoLButtonList3FMTownsProvider = { ARRAYSIZE(kLoLButtonList3FMTowns), kLoLButtonList3FMTowns }; static const byte kLoLButtonList4FMTowns[15] = { 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0x5A, 0x5B, 0xFF }; static const ByteProvider kLoLButtonList4FMTownsProvider = { ARRAYSIZE(kLoLButtonList4FMTowns), kLoLButtonList4FMTowns }; static const byte kLoLButtonList5FMTowns[16] = { 0x01, 0x02, 0x00, 0x03, 0x04, 0x05, 0x06, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x5A, 0x5B, 0xFF }; static const ByteProvider kLoLButtonList5FMTownsProvider = { ARRAYSIZE(kLoLButtonList5FMTowns), kLoLButtonList5FMTowns }; static const byte kLoLButtonList6FMTowns[14] = { 0x2C, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A, 0x3B, 0x3C, 0x3D, 0xFF }; static const ByteProvider kLoLButtonList6FMTownsProvider = { ARRAYSIZE(kLoLButtonList6FMTowns), kLoLButtonList6FMTowns }; static const byte kLoLButtonList7FMTowns[3] = { 0x0F, 0x10, 0xFF }; static const ByteProvider kLoLButtonList7FMTownsProvider = { ARRAYSIZE(kLoLButtonList7FMTowns), kLoLButtonList7FMTowns }; static const byte kLoLButtonList8FMTowns[2] = { 0x55, 0xFF }; static const ByteProvider kLoLButtonList8FMTownsProvider = { ARRAYSIZE(kLoLButtonList8FMTowns), kLoLButtonList8FMTowns }; static const byte kLoLLegendDataFMTowns[60] = { 0x0E, 0x00, 0x00, 0x07, 0x42, 0x19, 0x00, 0x00, 0x08, 0x42, 0x1A, 0x00, 0x00, 0x09, 0x42, 0x0D, 0x00, 0x00, 0x0A, 0x42, 0x0A, 0x00, 0x00, 0x0B, 0x42, 0x0B, 0x00, 0x00, 0x0C, 0x42, 0x0F, 0x00, 0x00, 0x0D, 0x42, 0x16, 0x00, 0x00, 0x0E, 0x42, 0x17, 0x00, 0x00, 0x0F, 0x42, 0x11, 0x00, 0x00, 0x10, 0x42, 0x12, 0x00, 0xFB, 0x51, 0x42, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }; static const ByteProvider kLoLLegendDataFMTownsProvider = { ARRAYSIZE(kLoLLegendDataFMTowns), kLoLLegendDataFMTowns }; static const uint16 kLoLMapStringIdFMTowns[30] = { 0xFFFF, 0x4211, 0x4212, 0x4213, 0x4214, 0x4215, 0x4216, 0x4217, 0x4218, 0x4219, 0x421A, 0x421B, 0x421C, 0x421D, 0x421E, 0x421F, 0x4220, 0x4221, 0x4222, 0x4223, 0x4224, 0x4225, 0x4226, 0x4227, 0x4228, 0x4229, 0x422A, 0x422B, 0x422C, 0x422D }; static const Uint16Provider kLoLMapStringIdFMTownsProvider = { ARRAYSIZE(kLoLMapStringIdFMTowns), kLoLMapStringIdFMTowns }; static const byte kLoLSpellbookAnimFMTowns[28] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x13, 0xB6, 0x04, 0x00, 0x13, 0x4D, 0x04, 0x00, 0x13, 0xB9, 0x04, 0x00, 0x13, 0xB8, 0x04, 0x00, 0x13, 0xBA }; static const ByteProvider kLoLSpellbookAnimFMTownsProvider = { ARRAYSIZE(kLoLSpellbookAnimFMTowns), kLoLSpellbookAnimFMTowns }; static const byte kLoLSpellbookCoordsFMTowns[12] = { 0x16, 0x16, 0x16, 0x1F, 0x16, 0x28, 0x16, 0x31, 0x16, 0x3A, 0x16, 0x43 }; static const ByteProvider kLoLSpellbookCoordsFMTownsProvider = { ARRAYSIZE(kLoLSpellbookCoordsFMTowns), kLoLSpellbookCoordsFMTowns }; static const byte kLoLHealShapeFramesFMTowns[80] = { 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x02, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F }; static const ByteProvider kLoLHealShapeFramesFMTownsProvider = { ARRAYSIZE(kLoLHealShapeFramesFMTowns), kLoLHealShapeFramesFMTowns }; static const byte kLoLLightningDefsFMTowns[20] = { 0x06, 0x05, 0xAB, 0x00, 0x06, 0x04, 0xAB, 0x00, 0x08, 0x04, 0xAA, 0x00, 0x06, 0x03, 0xAA, 0x00, 0x06, 0x02, 0xA9, 0x00 }; static const ByteProvider kLoLLightningDefsFMTownsProvider = { ARRAYSIZE(kLoLLightningDefsFMTowns), kLoLLightningDefsFMTowns }; static const uint16 kLoLFireballCoordsFMTowns[256] = { 0x0000, 0x0324, 0x0647, 0x096A, 0x0C8B, 0x0FAB, 0x12C7, 0x15E1, 0x18F8, 0x1C0B, 0x1F19, 0x2223, 0x2527, 0x2826, 0x2B1E, 0x2E10, 0x30FB, 0x33DE, 0x36B9, 0x398C, 0x3C56, 0x3F16, 0x41CD, 0x447A, 0x471C, 0x49B3, 0x4C3F, 0x4EBF, 0x5133, 0x539A, 0x55F4, 0x5842, 0x5A81, 0x5CB3, 0x5ED6, 0x60EB, 0x62F1, 0x64E7, 0x66CE, 0x68A5, 0x6A6C, 0x6C23, 0x6DC9, 0x6F5E, 0x70E1, 0x7254, 0x73B5, 0x7503, 0x7640, 0x776B, 0x7883, 0x7989, 0x7A7C, 0x7B5C, 0x7C29, 0x7CE2, 0x7D89, 0x7E1C, 0x7E9C, 0x7F08, 0x7F61, 0x7FA6, 0x7FD7, 0x7FF5, 0x7FFF, 0x7FF5, 0x7FD7, 0x7FA6, 0x7F61, 0x7F08, 0x7E9C, 0x7E1C, 0x7D89, 0x7CE2, 0x7C29, 0x7B5C, 0x7A7C, 0x7989, 0x7883, 0x776B, 0x7640, 0x7503, 0x73B5, 0x7254, 0x70E1, 0x6F5E, 0x6DC9, 0x6C23, 0x6A6C, 0x68A5, 0x66CE, 0x64E7, 0x62F1, 0x60EB, 0x5ED6, 0x5CB3, 0x5A81, 0x5842, 0x55F4, 0x539A, 0x5133, 0x4EBF, 0x4C3F, 0x49B3, 0x471C, 0x447A, 0x41CD, 0x3F16, 0x3C56, 0x398C, 0x36B9, 0x33DE, 0x30FB, 0x2E10, 0x2B1E, 0x2826, 0x2527, 0x2223, 0x1F19, 0x1C0B, 0x18F8, 0x15E1, 0x12C7, 0x0FAB, 0x0C8B, 0x096A, 0x0647, 0x0324, 0x0000, 0xFCDC, 0xF9B9, 0xF696, 0xF375, 0xF055, 0xED39, 0xEA1F, 0xE708, 0xE3F5, 0xE0E7, 0xDDDD, 0xDAD9, 0xD7DA, 0xD4E2, 0xD1F0, 0xCF05, 0xCC22, 0xC947, 0xC674, 0xC3AA, 0xC0EA, 0xBE33, 0xBB86, 0xB8E4, 0xB64D, 0xB3C1, 0xB141, 0xAECD, 0xAC66, 0xAA0C, 0xA7BE, 0xA57F, 0xA34D, 0xA12A, 0x9F15, 0x9D0F, 0x9B19, 0x9932, 0x975B, 0x9594, 0x93DD, 0x9237, 0x90A2, 0x8F1F, 0x8DAC, 0x8C4B, 0x8AFD, 0x89C0, 0x8895, 0x877D, 0x8677, 0x8584, 0x84A4, 0x83D7, 0x831E, 0x8277, 0x81E4, 0x8164, 0x80F8, 0x809F, 0x805A, 0x8029, 0x800B, 0x8001, 0x800B, 0x8029, 0x805A, 0x809F, 0x80F8, 0x8164, 0x81E4, 0x8277, 0x831E, 0x83D7, 0x84A4, 0x8584, 0x8677, 0x877D, 0x8895, 0x89C0, 0x8AFD, 0x8C4B, 0x8DAC, 0x8F1F, 0x90A2, 0x9237, 0x93DD, 0x9594, 0x975B, 0x9932, 0x9B19, 0x9D0F, 0x9F15, 0xA12A, 0xA34D, 0xA57F, 0xA7BE, 0xAA0C, 0xAC66, 0xAECD, 0xB141, 0xB3C1, 0xB64D, 0xB8E4, 0xBB86, 0xBE33, 0xC0EA, 0xC3AA, 0xC674, 0xC947, 0xCC22, 0xCF05, 0xD1F0, 0xD4E2, 0xD7DA, 0xDAD9, 0xDDDD, 0xE0E7, 0xE3F5, 0xE708, 0xEA1F, 0xED39, 0xF055, 0xF375, 0xF696, 0xF9B9, 0xFCDC }; static const Uint16Provider kLoLFireballCoordsFMTownsProvider = { ARRAYSIZE(kLoLFireballCoordsFMTowns), kLoLFireballCoordsFMTowns }; static const byte kLoLCreditsFMTowns[1516] = { 0x02, 0x54, 0x68, 0x65, 0x20, 0x45, 0x6E, 0x64, 0x05, 0x0D, 0x0D, 0x0D, 0x02, 0x4C, 0x41, 0x4E, 0x44, 0x53, 0x20, 0x4F, 0x46, 0x20, 0x4C, 0x4F, 0x52, 0x45, 0x05, 0x0D, 0x01, 0x54, 0x68, 0x65, 0x20, 0x54, 0x68, 0x72, 0x6F, 0x6E, 0x65, 0x20, 0x6F, 0x66, 0x20, 0x43, 0x68, 0x61, 0x6F, 0x73, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x49, 0x56, 0x45, 0x20, 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x45, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x42, 0x72, 0x65, 0x74, 0x74, 0x20, 0x57, 0x2E, 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x45, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x52, 0x69, 0x63, 0x6B, 0x20, 0x47, 0x75, 0x73, 0x68, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x44, 0x55, 0x43, 0x54, 0x20, 0x43, 0x4F, 0x4F, 0x52, 0x44, 0x49, 0x4E, 0x41, 0x54, 0x4F, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x43, 0x61, 0x74, 0x68, 0x69, 0x65, 0x20, 0x41, 0x2E, 0x20, 0x54, 0x6F, 0x64, 0x64, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x44, 0x45, 0x53, 0x49, 0x47, 0x4E, 0x45, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x57, 0x69, 0x6C, 0x6C, 0x69, 0x61, 0x6D, 0x20, 0x41, 0x6C, 0x61, 0x6E, 0x20, 0x43, 0x72, 0x75, 0x6D, 0x05, 0x0D, 0x50, 0x68, 0x69, 0x6C, 0x69, 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F, 0x72, 0x72, 0x6F, 0x77, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4C, 0x45, 0x41, 0x44, 0x20, 0x50, 0x52, 0x4F, 0x47, 0x52, 0x41, 0x4D, 0x4D, 0x45, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x50, 0x68, 0x69, 0x6C, 0x69, 0x70, 0x20, 0x57, 0x2E, 0x20, 0x47, 0x6F, 0x72, 0x72, 0x6F, 0x77, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x47, 0x52, 0x41, 0x4D, 0x4D, 0x45, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x4A, 0x6F, 0x65, 0x20, 0x42, 0x6F, 0x73, 0x74, 0x69, 0x63, 0x05, 0x0D, 0x02, 0x53, 0x63, 0x6F, 0x74, 0x74, 0x20, 0x4B, 0x2E, 0x20, 0x42, 0x6F, 0x77, 0x65, 0x6E, 0x05, 0x0D, 0x02, 0x4A, 0x6F, 0x68, 0x6E, 0x20, 0x4C, 0x61, 0x53, 0x61, 0x6C, 0x76, 0x69, 0x61, 0x05, 0x0D, 0x02, 0x4D, 0x61, 0x72, 0x6B, 0x20, 0x4D, 0x63, 0x43, 0x75, 0x62, 0x62, 0x69, 0x6E, 0x05, 0x0D, 0x02, 0x4A, 0x75, 0x73, 0x74, 0x69, 0x6E, 0x20, 0x4D, 0x63, 0x4B, 0x69, 0x6E, 0x6E, 0x65, 0x72, 0x6E, 0x65, 0x79, 0x05, 0x0D, 0x02, 0x51, 0x69, 0x6E, 0x67, 0x20, 0x59, 0x75, 0x61, 0x6E, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4C, 0x45, 0x41, 0x44, 0x20, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x05, 0x0D, 0x0D, 0x02, 0x52, 0x69, 0x63, 0x6B, 0x20, 0x50, 0x61, 0x72, 0x6B, 0x73, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x45, 0x6C, 0x69, 0x65, 0x20, 0x41, 0x72, 0x61, 0x62, 0x69, 0x61, 0x6E, 0x05, 0x0D, 0x02, 0x43, 0x61, 0x72, 0x79, 0x20, 0x44, 0x65, 0x61, 0x6E, 0x20, 0x41, 0x76, 0x65, 0x72, 0x65, 0x74, 0x74, 0x05, 0x0D, 0x02, 0x45, 0x72, 0x69, 0x63, 0x20, 0x47, 0x6F, 0x6F, 0x63, 0x68, 0x05, 0x0D, 0x02, 0x4A, 0x6F, 0x73, 0x65, 0x70, 0x68, 0x20, 0x42, 0x2E, 0x20, 0x48, 0x65, 0x77, 0x69, 0x74, 0x74, 0x20, 0x49, 0x56, 0x05, 0x0D, 0x02, 0x52, 0x65, 0x6E, 0x20, 0x4F, 0x6C, 0x73, 0x65, 0x6E, 0x05, 0x0D, 0x02, 0x4A, 0x75, 0x64, 0x69, 0x74, 0x68, 0x20, 0x50, 0x65, 0x74, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x05, 0x0D, 0x02, 0x45, 0x2E, 0x4D, 0x2E, 0x20, 0x4C, 0x6F, 0x75, 0x69, 0x73, 0x65, 0x20, 0x53, 0x61, 0x6E, 0x64, 0x6F, 0x76, 0x61, 0x6C, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4D, 0x55, 0x53, 0x49, 0x43, 0x20, 0x26, 0x20, 0x53, 0x4F, 0x55, 0x4E, 0x44, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x2E, 0x20, 0x4D, 0x75, 0x64, 0x72, 0x61, 0x05, 0x0D, 0x02, 0x44, 0x77, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4B, 0x2E, 0x20, 0x4F, 0x6B, 0x61, 0x68, 0x61, 0x72, 0x61, 0x05, 0x0D, 0x02, 0x46, 0x72, 0x61, 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70, 0x61, 0x63, 0x6B, 0x69, 0x05, 0x0D, 0x02, 0x50, 0x61, 0x74, 0x72, 0x69, 0x63, 0x6B, 0x20, 0x43, 0x6F, 0x6C, 0x6C, 0x69, 0x6E, 0x73, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x51, 0x55, 0x41, 0x4C, 0x49, 0x54, 0x59, 0x20, 0x41, 0x53, 0x53, 0x55, 0x52, 0x41, 0x4E, 0x43, 0x45, 0x05, 0x0D, 0x0D, 0x02, 0x4A, 0x65, 0x73, 0x73, 0x65, 0x20, 0x43, 0x6C, 0x65, 0x6D, 0x69, 0x74, 0x05, 0x0D, 0x02, 0x4B, 0x65, 0x6E, 0x6E, 0x65, 0x74, 0x68, 0x20, 0x44, 0x75, 0x6E, 0x6E, 0x65, 0x05, 0x0D, 0x02, 0x4A, 0x65, 0x66, 0x66, 0x20, 0x53, 0x74, 0x65, 0x76, 0x65, 0x6E, 0x20, 0x46, 0x69, 0x6C, 0x6C, 0x68, 0x61, 0x62, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x57, 0x69, 0x6C, 0x6C, 0x69, 0x61, 0x6D, 0x20, 0x46, 0x6F, 0x73, 0x74, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x53, 0x63, 0x6F, 0x74, 0x74, 0x20, 0x46, 0x6C, 0x65, 0x6D, 0x69, 0x6E, 0x67, 0x05, 0x0D, 0x02, 0x4D, 0x69, 0x63, 0x68, 0x61, 0x65, 0x6C, 0x20, 0x4C, 0x69, 0x67, 0x68, 0x74, 0x6E, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x47, 0x6C, 0x65, 0x6E, 0x6E, 0x20, 0x53, 0x70, 0x65, 0x72, 0x72, 0x79, 0x05, 0x0D, 0x02, 0x43, 0x68, 0x72, 0x69, 0x73, 0x20, 0x4D, 0x63, 0x46, 0x61, 0x72, 0x6C, 0x61, 0x6E, 0x64, 0x05, 0x0D, 0x02, 0x53, 0x63, 0x6F, 0x74, 0x74, 0x20, 0x4D, 0x61, 0x6E, 0x6E, 0x69, 0x6E, 0x67, 0x05, 0x0D, 0x02, 0x50, 0x61, 0x75, 0x6C, 0x20, 0x53, 0x68, 0x6F, 0x65, 0x6E, 0x65, 0x72, 0x05, 0x0D, 0x02, 0x41, 0x64, 0x61, 0x6D, 0x20, 0x52, 0x79, 0x61, 0x6E, 0x05, 0x0D, 0x02, 0x4D, 0x69, 0x74, 0x63, 0x68, 0x20, 0x46, 0x69, 0x65, 0x6C, 0x64, 0x6D, 0x61, 0x6E, 0x05, 0x0D, 0x02, 0x4A, 0x61, 0x72, 0x65, 0x64, 0x20, 0x42, 0x72, 0x69, 0x6E, 0x6B, 0x6C, 0x65, 0x79, 0x05, 0x0D, 0x02, 0x4A, 0x75, 0x73, 0x74, 0x69, 0x6E, 0x20, 0x48, 0x61, 0x6C, 0x6C, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x56, 0x4F, 0x49, 0x43, 0x45, 0x20, 0x41, 0x43, 0x54, 0x4F, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x03, 0x52, 0x69, 0x63, 0x68, 0x61, 0x72, 0x64, 0x20, 0x53, 0x6D, 0x69, 0x74, 0x68, 0x20, 0x61, 0x73, 0x05, 0x04, 0x4B, 0x49, 0x4E, 0x47, 0x20, 0x52, 0x49, 0x43, 0x48, 0x41, 0x52, 0x44, 0x05, 0x0D, 0x03, 0x45, 0x72, 0x69, 0x63, 0x20, 0x47, 0x6F, 0x6F, 0x63, 0x68, 0x20, 0x61, 0x73, 0x05, 0x04, 0x47, 0x45, 0x52, 0x4F, 0x4E, 0x05, 0x0D, 0x03, 0x53, 0x63, 0x6F, 0x74, 0x69, 0x61, 0x20, 0x61, 0x73, 0x05, 0x04, 0x68, 0x65, 0x72, 0x73, 0x65, 0x6C, 0x66, 0x05, 0x0D, 0x03, 0x46, 0x72, 0x61, 0x6E, 0x6B, 0x20, 0x4B, 0x6C, 0x65, 0x70, 0x61, 0x63, 0x6B, 0x69, 0x20, 0x61, 0x73, 0x05, 0x04, 0x50, 0x49, 0x47, 0x4C, 0x45, 0x54, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4A, 0x41, 0x50, 0x41, 0x4E, 0x45, 0x53, 0x45, 0x20, 0x56, 0x45, 0x52, 0x49, 0x53, 0x49, 0x4F, 0x4E, 0x05, 0x0D, 0x0D, 0x0D, 0x02, 0x50, 0x52, 0x4F, 0x47, 0x52, 0x41, 0x4D, 0x4D, 0x45, 0x52, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x59, 0x75, 0x6B, 0x69, 0x6F, 0x20, 0x53, 0x65, 0x6B, 0x69, 0x67, 0x75, 0x63, 0x68, 0x69, 0x05, 0x0D, 0x02, 0x4E, 0x61, 0x6F, 0x73, 0x68, 0x69, 0x20, 0x4E, 0x6F, 0x67, 0x75, 0x63, 0x68, 0x69, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x41, 0x52, 0x54, 0x49, 0x53, 0x54, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x4D, 0x61, 0x73, 0x61, 0x6B, 0x69, 0x20, 0x54, 0x6F, 0x67, 0x61, 0x73, 0x68, 0x69, 0x05, 0x0D, 0x02, 0x52, 0x69, 0x73, 0x61, 0x6B, 0x6F, 0x20, 0x53, 0x65, 0x74, 0x6F, 0x05, 0x0D, 0x02, 0x52, 0x65, 0x69, 0x67, 0x61, 0x20, 0x59, 0x61, 0x73, 0x75, 0x64, 0x61, 0x05, 0x0D, 0x02, 0x4D, 0x61, 0x73, 0x75, 0x6D, 0x69, 0x20, 0x53, 0x68, 0x69, 0x6E, 0x62, 0x6F, 0x05, 0x0D, 0x02, 0x4E, 0x61, 0x6F, 0x6B, 0x6F, 0x20, 0x4E, 0x69, 0x74, 0x74, 0x61, 0x05, 0x0D, 0x02, 0x4B, 0x69, 0x79, 0x6F, 0x66, 0x75, 0x6D, 0x69, 0x20, 0x48, 0x69, 0x6E, 0x6F, 0x05, 0x0D, 0x02, 0x48, 0x69, 0x72, 0x6F, 0x6D, 0x69, 0x20, 0x53, 0x61, 0x6B, 0x61, 0x65, 0x05, 0x0D, 0x02, 0x4B, 0x79, 0x6F, 0x75, 0x6B, 0x6F, 0x20, 0x4D, 0x69, 0x79, 0x61, 0x6D, 0x6F, 0x74, 0x6F, 0x05, 0x0D, 0x02, 0x53, 0x68, 0x6F, 0x6B, 0x6F, 0x20, 0x4D, 0x75, 0x72, 0x61, 0x6B, 0x61, 0x6D, 0x69, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4D, 0x55, 0x53, 0x49, 0x43, 0x20, 0x26, 0x20, 0x53, 0x4F, 0x55, 0x4E, 0x44, 0x53, 0x05, 0x0D, 0x0D, 0x02, 0x54, 0x61, 0x6B, 0x65, 0x73, 0x68, 0x69, 0x20, 0x41, 0x62, 0x6F, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x4A, 0x41, 0x50, 0x41, 0x4E, 0x45, 0x53, 0x45, 0x20, 0x54, 0x52, 0x41, 0x4E, 0x53, 0x4C, 0x41, 0x54, 0x4F, 0x52, 0x05, 0x0D, 0x0D, 0x02, 0x59, 0x75, 0x72, 0x69, 0x20, 0x49, 0x74, 0x6F, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x02, 0x53, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6C, 0x20, 0x74, 0x68, 0x61, 0x6E, 0x6B, 0x73, 0x20, 0x74, 0x6F, 0x3A, 0x05, 0x0D, 0x0D, 0x02, 0x48, 0x69, 0x72, 0x6F, 0x6B, 0x6F, 0x20, 0x59, 0x6F, 0x72, 0x6F, 0x69, 0x7A, 0x75, 0x6B, 0x61, 0x05, 0x0D, 0x02, 0x59, 0x75, 0x6A, 0x69, 0x20, 0x4F, 0x64, 0x61, 0x77, 0x61, 0x72, 0x61, 0x05, 0x0D, 0x02, 0x4F, 0x68, 0x73, 0x68, 0x75, 0x6E, 0x20, 0x4C, 0x65, 0x65, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x01, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x33, 0x2C, 0x20, 0x57, 0x65, 0x73, 0x74, 0x77, 0x6F, 0x6F, 0x64, 0x20, 0x53, 0x74, 0x75, 0x64, 0x69, 0x6F, 0x73, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x05, 0x0D, 0x01, 0x43, 0x6F, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, 0x43, 0x29, 0x20, 0x31, 0x39, 0x39, 0x34, 0x2C, 0x20, 0x53, 0x74, 0x61, 0x72, 0x43, 0x72, 0x61, 0x66, 0x74, 0x2C, 0x20, 0x49, 0x6E, 0x63, 0x2E, 0x05, 0x0D, 0x01, 0x41, 0x6C, 0x6C, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2E, 0x05, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x0D, 0x00, 0x00, 0x00, 0x00 }; static const ByteProvider kLoLCreditsFMTownsProvider = { ARRAYSIZE(kLoLCreditsFMTowns), kLoLCreditsFMTowns };