diff --git a/src/controller.h b/src/controller.h index a52726e..126dfcd 100644 --- a/src/controller.h +++ b/src/controller.h @@ -57,7 +57,6 @@ struct IGame { virtual TR::Level* getLevel() { return NULL; } virtual MeshBuilder* getMesh() { return NULL; } - virtual Texture* getAtlas() { return NULL; } virtual ICamera* getCamera(int index = -1) { return NULL; } virtual Controller* getLara(int index = 0) { return NULL; } virtual Controller* getLara(const vec3 &pos) { return NULL; } diff --git a/src/inventory.h b/src/inventory.h index 1737f25..597f7e7 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -83,7 +83,7 @@ struct OptionItem { } float drawBar(float x, float y, float w, bool active, uint8 value) const { - UI::renderBar(UI::BAR_WHITE, vec2(x + (32.0f + 2.0f), y - LINE_HEIGHT + 6 + 2), vec2(w - (64.0f + 4.0f), LINE_HEIGHT - 6 - 4), value / float(maxValue), color, 0xFF000000, 0xFFA0A0A0, 0xFFA0A0A0, 0xFF000000); + UI::renderBar(CTEX_WHITE_SPRITE, vec2(x + (32.0f + 2.0f), y - LINE_HEIGHT + 6 + 2), vec2(w - (64.0f + 4.0f), LINE_HEIGHT - 6 - 4), value / float(maxValue), color, 0xFF000000, 0xFFA0A0A0, 0xFFA0A0A0, 0xFF000000); UI::specOut(vec2(x + 16.0f, y), icon); if (active) { if (value > 0) UI::specOut(vec2(x, y), 108); @@ -94,13 +94,13 @@ struct OptionItem { float render(float x, float y, float w, bool active, Core::Settings *settings) const { if (active) - UI::renderBar(UI::BAR_OPTION, vec2(x, y - LINE_HEIGHT + 6), vec2(w, LINE_HEIGHT - 6), 1.0f, 0xFFD8377C, 0); + UI::renderBar(CTEX_OPTION, vec2(x, y - LINE_HEIGHT + 6), vec2(w, LINE_HEIGHT - 6), 1.0f, 0xFFD8377C, 0); const uint8 &value = *(uint8*)(intptr_t(settings) + offset); switch (type) { case TYPE_TITLE : - UI::renderBar(UI::BAR_OPTION, vec2(x, y - LINE_HEIGHT + 6), vec2(w, LINE_HEIGHT - 6), 1.0f, 0x802288FF, 0, 0, 0); + UI::renderBar(CTEX_OPTION, vec2(x, y - LINE_HEIGHT + 6), vec2(w, LINE_HEIGHT - 6), 1.0f, 0x802288FF, 0, 0, 0); UI::textOut(vec2(x, y), title, UI::aCenter, w, 255, UI::SHADE_GRAY); case TYPE_EMPTY : break; case TYPE_BUTTON : { @@ -1472,7 +1472,7 @@ struct Inventory { float y = ( UI::height - height ) * 0.5f + LINE_HEIGHT; // background - UI::renderBar(UI::BAR_OPTION, vec2(x, y - 16.0f), vec2(width, height), 0.0f, 0, 0xC0000000); + UI::renderBar(CTEX_OPTION, vec2(x, y - 16.0f), vec2(width, height), 0.0f, 0, 0xC0000000); x += 8.0f; width -= 16.0f; @@ -1562,7 +1562,7 @@ struct Inventory { } } - UI::renderBar(UI::BAR_HEALTH, pos, size, health); + UI::renderBar(CTEX_HEALTH, pos, size, health); } } @@ -1946,9 +1946,9 @@ struct Inventory { } if (page == PAGE_SAVEGAME) { - UI::renderBar(UI::BAR_OPTION, vec2(-eye + UI::width / 2 - 120, 240 - 14), vec2(240, LINE_HEIGHT - 6), 1.0f, 0x802288FF, 0, 0, 0); + UI::renderBar(CTEX_OPTION, vec2(-eye + UI::width / 2 - 120, 240 - 14), vec2(240, LINE_HEIGHT - 6), 1.0f, 0x802288FF, 0, 0, 0); UI::textOut(vec2(-eye, 240), pageTitle[page], UI::aCenter, UI::width); - UI::renderBar(UI::BAR_OPTION, vec2(-eye - 48 * slot + UI::width / 2, 240 + 24 - 16), vec2(48, 18), 1.0f, 0xFFD8377C, 0); + UI::renderBar(CTEX_OPTION, vec2(-eye - 48 * slot + UI::width / 2, 240 + 24 - 16), vec2(48, 18), 1.0f, 0xFFD8377C, 0); UI::textOut(vec2(-eye - 48 + UI::width / 2, 240 + 24), STR_YES, UI::aCenter, 48); UI::textOut(vec2(-eye + UI::width / 2, 240 + 24), STR_NO, UI::aCenter, 48); return; diff --git a/src/lang.h b/src/lang.h index 707ba41..f2e6ab4 100644 --- a/src/lang.h +++ b/src/lang.h @@ -245,7 +245,7 @@ enum StringID { , "Polski" \ , "Portugu)es" \ , "Ðóññêè{è" \ - , "\x01\x02\x70\x01\x98\x01\xCD\xFF\xFF" \ + , "\x11\x02\x70\x01\x98\x01\xCD\xFF\xFF" \ #define LANG_PREFIXES "_EN", "_FR", "_DE", "_ES", "_IT", "_PL", "_PT", "_RU", "_JA" diff --git a/src/lang/ja.h b/src/lang/ja.h index de51f67..e85da5d 100644 --- a/src/lang/ja.h +++ b/src/lang/ja.h @@ -6,7 +6,7 @@ #include "glyph_jap.h" bool isJapaneseStart(char c) { - return c == '\x01'; + return c == '\x11'; } uint16 getJapaneseGlyph(const char *text) { @@ -293,30 +293,30 @@ const char *STR_JA[] = { "日本語" #define JAP_MAP_COUNT 453 -const char *STR_JA[] = { "\x01\x02\x70\x01\x98\x01\xCD\xFF\xFF" +const char *STR_JA[] = { "\x11\x02\x70\x01\x98\x01\xCD\xFF\xFF" // help - , "\x01\x01\x52\x01\x03\x01\x2E\x01\x4D\x01\x06\x01\x06\x01\x06\xFF\xFF" - , "H\x01\x01\x1B\x01\x13\x01\x02\x01\x1D\x02\x71\x01\x22\x01\x36\x01\x07\x02\x6E\x02\x6F\xFF\xFF" + , "\x11\x01\x52\x01\x03\x01\x2E\x01\x4D\x01\x06\x01\x06\x01\x06\xFF\xFF" + , "H\x11\x01\x1B\x01\x13\x01\x02\x01\x1D\x02\x71\x01\x22\x01\x36\x01\x07\x02\x6E\x02\x6F\xFF\xFF" , helpText , "%s@@@" - "\x01\x02\x74\x01\x04\x01\x0E\x02\x75\x01\xAF\xFF\xFF"" %d@@" - "\x01\x02\x72\x01\x15\x01\x0E\x01\x23\x01\x3B\x01\x21\x01\x30\x01\xAF\xFF\xFF"" %d@@" - "\x01\x01\x2D\x01\x03\x01\x34\x01\x3D\x01\x2C\x01\x1F\xFF\xFF"" %d / %d@@" - "\x01\x02\x73\x01\x9A\x02\x68\x01\x7C\xFF\xFF"" %s" - , "\x01\x01\x5C\x01\x03\x01\x4F\x01\x4D\x01\x06\x01\x06\x01\x06\xFF\xFF" - , "\x01\x01\x5C\x01\x03\x01\x4F\x01\x04\x01\x19\x01\x04\x01\x0E\x01\x42\xFF\xFF" - , "\x01\x01\x5C\x01\x03\x01\x4F\x01\x1D\x01\x2F\x01\x19\x01\x4A\x01\x2B\x01\x1D\x01\x04\x01\x0E\x01\x42\xFF\xFF" - , "\x01\x01\x16\x01\x0C\xFF\xFF" - , "\x01\x01\x0C\x01\x0C\x01\x48\xFF\xFF" - , "\x01\x01\x39\x01\x46\xFF\xFF" - , "\x01\x01\x39\x01\x02\xFF\xFF" - , "\x01\x02\x69\x02\x66\x01\xC3\x02\x67\xFF\xFF" + "\x11\x02\x74\x01\x04\x01\x0E\x02\x75\x01\xAF\xFF\xFF"" %d@@" + "\x11\x02\x72\x01\x15\x01\x0E\x01\x23\x01\x3B\x01\x21\x01\x30\x01\xAF\xFF\xFF"" %d@@" + "\x11\x01\x2D\x01\x03\x01\x34\x01\x3D\x01\x2C\x01\x1F\xFF\xFF"" %d / %d@@" + "\x11\x02\x73\x01\x9A\x02\x68\x01\x7C\xFF\xFF"" %s" + , "\x11\x01\x5C\x01\x03\x01\x4F\x01\x4D\x01\x06\x01\x06\x01\x06\xFF\xFF" + , "\x11\x01\x5C\x01\x03\x01\x4F\x01\x04\x01\x19\x01\x04\x01\x0E\x01\x42\xFF\xFF" + , "\x11\x01\x5C\x01\x03\x01\x4F\x01\x1D\x01\x2F\x01\x19\x01\x4A\x01\x2B\x01\x1D\x01\x04\x01\x0E\x01\x42\xFF\xFF" + , "\x11\x01\x16\x01\x0C\xFF\xFF" + , "\x11\x01\x0C\x01\x0C\x01\x48\xFF\xFF" + , "\x11\x01\x39\x01\x46\xFF\xFF" + , "\x11\x01\x39\x01\x02\xFF\xFF" + , "\x11\x02\x69\x02\x66\x01\xC3\x02\x67\xFF\xFF" , "VR" - , "\x01\x02\x6C\xFF\xFF" - , "\x01\x01\x4D\xFF\xFF" - , "\x01\x02\x6D\xFF\xFF" + , "\x11\x02\x6C\xFF\xFF" + , "\x11\x01\x4D\xFF\xFF" + , "\x11\x02\x6D\xFF\xFF" , STR_LANGUAGES - , "\x01\x02\x6A\x02\x6B\xFF\xFF" + , "\x11\x02\x6A\x02\x6B\xFF\xFF" , "Gamepad 1" , "Gamepad 2" , "Gamepad 3" @@ -324,56 +324,56 @@ const char *STR_JA[] = { "\x01\x02\x70\x01\x98\x01\xCD\xFF\xFF" , "Not Ready" , "Player 1" , "Player 2" - , "\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x37\x01\x3E\x01\x38\x01\x0C\xFF\xFF" - , "%s - \x01\x02\x80\x01\x7E\xFF\xFF" - , "%s - \x01\x01\xC2\x01\x08\xFF\xFF" + , "\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x37\x01\x3E\x01\x38\x01\x0C\xFF\xFF" + , "%s - \x11\x02\x80\x01\x7E\xFF\xFF" + , "%s - \x11\x01\xC2\x01\x08\xFF\xFF" // inventory pages - , "\x01\x01\x39\x01\x36\x01\x2D\x01\x64\x01\x02\xFF\xFF" - , "\x01\x01\xC9\x01\x49\x01\xB6\xFF\xFF" - , "\x01\x01\x23\x01\x3B\x01\x21\x01\x30\xFF\xFF" + , "\x11\x01\x39\x01\x36\x01\x2D\x01\x64\x01\x02\xFF\xFF" + , "\x11\x01\xC9\x01\x49\x01\xB6\xFF\xFF" + , "\x11\x01\x23\x01\x3B\x01\x21\x01\x30\xFF\xFF" // save game page - , "\x01\x01\x5C\x01\x03\x01\x4F\x01\x04\x01\x19\x01\x2A\x01\x14\x01\x41\xFF\xFF" - , "\x01\x01\xBE\x02\x81\x02\x7E\x02\x7F\xFF\xFF" + , "\x11\x01\x5C\x01\x03\x01\x4F\x01\x04\x01\x19\x01\x2A\x01\x14\x01\x41\xFF\xFF" + , "\x11\x01\xBE\x02\x81\x02\x7E\x02\x7F\xFF\xFF" // inventory option - , "\x01\x01\x68\x01\x03\x01\x30\xFF\xFF" - , "\x01\x01\x50\x01\x2C\x01\x36\xFF\xFF" - , "\x01\x01\x5E\x01\x02\x01\x60\x01\x18\xFF\xFF" - , "\x01\x01\x18\x01\x21\x01\x03\x01\x13\x01\x18\xFF\xFF" - , "\x01\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" - , "\x01\x02\x84\x02\x85\x01\x9D\x01\x7E\xFF\xFF" - , "\x01\x01\xB1\x01\x63\x01\x02\x01\x2E\xFF\xFF" - , "\x01\x01\x5E\x01\x02\x01\x1F\x01\x52\x01\x03\x01\x17\xFF\xFF" - , "\x01\x01\x7F\x01\x08\x01\x38\xFF\xFF" + , "\x11\x01\x68\x01\x03\x01\x30\xFF\xFF" + , "\x11\x01\x50\x01\x2C\x01\x36\xFF\xFF" + , "\x11\x01\x5E\x01\x02\x01\x60\x01\x18\xFF\xFF" + , "\x11\x01\x18\x01\x21\x01\x03\x01\x13\x01\x18\xFF\xFF" + , "\x11\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" + , "\x11\x02\x84\x02\x85\x01\x9D\x01\x7E\xFF\xFF" + , "\x11\x01\xB1\x01\x63\x01\x02\x01\x2E\xFF\xFF" + , "\x11\x01\x5E\x01\x02\x01\x1F\x01\x52\x01\x03\x01\x17\xFF\xFF" + , "\x11\x01\x7F\x01\x08\x01\x38\xFF\xFF" // passport menu - , "\x01\x01\x52\x01\x03\x01\x2E\xFF\xFF" - , "\x01\x01\xB0\x01\x04\x01\x0C\x01\x68\x01\x03\x01\x30\xFF\xFF" - , "\x01\x01\x29\x01\x36\x01\x3D\x01\x3B\xFF\xFF" - , "\x01\x01\x71\x01\xAB\x01\x4B\x01\x03\x01\x0D\x01\xC2\x01\x08\xFF\xFF" - , "\x01\x01\x68\x01\x03\x01\x30\x01\x07\x02\x82\x01\x1E\x01\x08\xFF\xFF" - , "\x01\x01\x3D\x01\x6D\x01\x22\x01\x07\x02\x83\x02\x78\x01\x2A\x01\x08\xFF\xFF" + , "\x11\x01\x52\x01\x03\x01\x2E\xFF\xFF" + , "\x11\x01\xB0\x01\x04\x01\x0C\x01\x68\x01\x03\x01\x30\xFF\xFF" + , "\x11\x01\x29\x01\x36\x01\x3D\x01\x3B\xFF\xFF" + , "\x11\x01\x71\x01\xAB\x01\x4B\x01\x03\x01\x0D\x01\xC2\x01\x08\xFF\xFF" + , "\x11\x01\x68\x01\x03\x01\x30\x01\x07\x02\x82\x01\x1E\x01\x08\xFF\xFF" + , "\x11\x01\x3D\x01\x6D\x01\x22\x01\x07\x02\x83\x02\x78\x01\x2A\x01\x08\xFF\xFF" // detail options - , "\x01\x01\x58\x01\x26\x01\x21\x01\x03\x01\x22\x02\x79\x02\x76\xFF\xFF" - , "\x01\x01\x46\x01\x26\x01\x22\x01\x13\x01\x29\x01\x02\x01\x3F\xFF\xFF" - , "\x01\x01\x17\x01\x3B\x01\x21\x01\x26\x01\x02\x01\x3F\x01\x34\x01\x39\x01\x29\x01\x21\x01\x26\xFF\xFF" - , "\x01\x01\x2D\x01\x4E\x01\x2E\x01\x63\x01\x34\x01\x39\x01\x29\x01\x21\x01\x26\xFF\xFF" - , "\x01\x01\x66\x01\x34\x01\x39\x01\x29\x01\x21\x01\x26\xFF\xFF" + , "\x11\x01\x58\x01\x26\x01\x21\x01\x03\x01\x22\x02\x79\x02\x76\xFF\xFF" + , "\x11\x01\x46\x01\x26\x01\x22\x01\x13\x01\x29\x01\x02\x01\x3F\xFF\xFF" + , "\x11\x01\x17\x01\x3B\x01\x21\x01\x26\x01\x02\x01\x3F\x01\x34\x01\x39\x01\x29\x01\x21\x01\x26\xFF\xFF" + , "\x11\x01\x2D\x01\x4E\x01\x2E\x01\x63\x01\x34\x01\x39\x01\x29\x01\x21\x01\x26\xFF\xFF" + , "\x11\x01\x66\x01\x34\x01\x39\x01\x29\x01\x21\x01\x26\xFF\xFF" , "VSync" - , "\x01\x01\x60\x01\x17\x01\x3D\x01\x22\x01\x65\x01\x4B\x01\x03\xFF\xFF" - , "2D\x01\x01\x23\x01\x3B\x01\x21\x01\x30\xFF\xFF" + , "\x11\x01\x60\x01\x17\x01\x3D\x01\x22\x01\x65\x01\x4B\x01\x03\xFF\xFF" + , "2D\x11\x01\x23\x01\x3B\x01\x21\x01\x30\xFF\xFF" // sound options - , "\x01\x02\x77\x02\x7C\x01\x9D\x01\x7E\xFF\xFF" - , "\x01\x01\x29\x01\x45\x01\x03\x01\x4F\x01\x3D\x01\x03\x01\x2D\x01\x64\x01\x02\xFF\xFF" - , "\x01\x02\x7D\x02\x7A\xFF\xFF" - , "\x01\x01\xEF\x01\xCD\xFF\xFF" + , "\x11\x02\x77\x02\x7C\x01\x9D\x01\x7E\xFF\xFF" + , "\x11\x01\x29\x01\x45\x01\x03\x01\x4F\x01\x3D\x01\x03\x01\x2D\x01\x64\x01\x02\xFF\xFF" + , "\x11\x02\x7D\x02\x7A\xFF\xFF" + , "\x11\x01\xEF\x01\xCD\xFF\xFF" // controls options - , "\x01\x01\x5E\x01\x02\x01\x1F\x01\x52\x01\x03\x01\x17\x01\x9D\x01\x7E\xFF\xFF" - , "\x01\x01\x20\x01\x03\x01\x1B\x01\x03\x01\x2E\xFF\xFF" - , "\x01\x01\x68\x01\x03\x01\x30\x01\x60\x01\x2C\x01\x2E\xFF\xFF" - , "\x01\x01\x45\x01\x3B\x01\x4F\x01\x3D\x01\x03\x01\x2D\x01\x64\x01\x02\xFF\xFF" - , "\x01\x01\x29\x01\x13\x01\x03\x01\x68\x01\x21\x01\x26\x01\x02\x01\x3F\xFF\xFF" - , "\x01\x01\x50\x01\x22\x01\x5B\x01\x6A\x01\x3B\x01\x55\x01\x02\x01\x3F\xFF\xFF" + , "\x11\x01\x5E\x01\x02\x01\x1F\x01\x52\x01\x03\x01\x17\x01\x9D\x01\x7E\xFF\xFF" + , "\x11\x01\x20\x01\x03\x01\x1B\x01\x03\x01\x2E\xFF\xFF" + , "\x11\x01\x68\x01\x03\x01\x30\x01\x60\x01\x2C\x01\x2E\xFF\xFF" + , "\x11\x01\x45\x01\x3B\x01\x4F\x01\x3D\x01\x03\x01\x2D\x01\x64\x01\x02\xFF\xFF" + , "\x11\x01\x29\x01\x13\x01\x03\x01\x68\x01\x21\x01\x26\x01\x02\x01\x3F\xFF\xFF" + , "\x11\x01\x50\x01\x22\x01\x5B\x01\x6A\x01\x3B\x01\x55\x01\x02\x01\x3F\xFF\xFF" // controls - , "\x01\x02\x7B\xFF\xFF", "\x01\x01\x9C\xFF\xFF", "\x01\x01\x31\xFF\xFF", "\x01\x01\x67\xFF\xFF", "\x01\x01\x35\x01\x4E\x01\x02\x01\x36\xFF\xFF", "\x01\x01\x78\x01\x37\xFF\xFF", "\x01\x01\x23\x01\x34\x01\x2D\x01\x64\x01\x02\xFF\xFF", "\x01\x01\xD3\x01\x07\x02\x50\x01\x37\xFF\xFF", "\x01\x01\x99\x01\x08\xFF\xFF", "\x01\x01\x04\x01\x96\x01\x1A\x01\xD5\xFF\xFF", "\x01\x01\x5A\x01\x2C\x01\x2D\x01\x4B\xFF\xFF", "\x01\x02\x51\x01\x1A\x01\x08\xFF\xFF", "\x01\x01\xC9\x01\x49\x01\xB6\x01\x07\x01\x99\x01\x08\xFF\xFF", "\x01\x01\x18\x01\x13\x01\x03\x01\x1F\xFF\xFF" + , "\x11\x02\x7B\xFF\xFF", "\x11\x01\x9C\xFF\xFF", "\x11\x01\x31\xFF\xFF", "\x11\x01\x67\xFF\xFF", "\x11\x01\x35\x01\x4E\x01\x02\x01\x36\xFF\xFF", "\x11\x01\x78\x01\x37\xFF\xFF", "\x11\x01\x23\x01\x34\x01\x2D\x01\x64\x01\x02\xFF\xFF", "\x11\x01\xD3\x01\x07\x02\x50\x01\x37\xFF\xFF", "\x11\x01\x99\x01\x08\xFF\xFF", "\x11\x01\x04\x01\x96\x01\x1A\x01\xD5\xFF\xFF", "\x11\x01\x5A\x01\x2C\x01\x2D\x01\x4B\xFF\xFF", "\x11\x02\x51\x01\x1A\x01\x08\xFF\xFF", "\x11\x01\xC9\x01\x49\x01\xB6\x01\x07\x01\x99\x01\x08\xFF\xFF", "\x11\x01\x18\x01\x13\x01\x03\x01\x1F\xFF\xFF" // keys , "NONE", "LEFT", "RIGHT", "UP", "DOWN", "SPACE", "TAB", "ENTER", "ESCAPE", "SHIFT", "CTRL", "ALT" , "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" @@ -382,185 +382,185 @@ const char *STR_JA[] = { "\x01\x02\x70\x01\x98\x01\xCD\xFF\xFF" // gamepad , "NONE", "A", "B", "X", "Y", "L BUMPER", "R BUMPER", "SELECT", "START", "L STICK", "R STICK", "L TRIGGER", "R TRIGGER", "D-LEFT", "D-RIGHT", "D-UP", "D-DOWN" // inventory items - , "\x01\x02\x4E\x01\x7F\xFF\xFF" - , "\x01\x02\x4F\x01\x72\xFF\xFF" - , "\x01\x01\x54\x01\x18\x01\x1F\x01\x22\xFF\xFF" - , "\x01\x01\x2D\x01\x64\x01\x2C\x01\x1F\x01\x77\x01\x02\xFF\xFF" - , "\x01\x01\x50\x01\x3F\x01\x51\x01\x30\xFF\xFF" - , "\x01\x01\x63\x01\x03\x01\x35\x01\x03\xFF\xFF" - , "\x01\x01\x54\x01\x18\x01\x1F\x01\x22\x01\x72\xFF\xFF" - , "\x01\x01\x2D\x01\x64\x01\x2C\x01\x1F\x01\x77\x01\x02\x01\x72\xFF\xFF" - , "\x01\x01\x50\x01\x3F\x01\x51\x01\x30\x01\x72\xFF\xFF" - , "\x01\x01\x63\x01\x03\x01\x35\x01\x03\x01\x72\xFF\xFF" - , "\x01\x01\x71\x01\x58\x01\x26\x01\x60\x01\x2C\x01\x34\x01\xE1\x02\x54\x01\xE0\xFF\xFF" - , "\x01\x01\x71\x01\x58\x01\x26\x01\x60\x01\x2C\x01\x34\x01\xE1\x01\x53\x01\xE0\xFF\xFF" - , "\x01\x02\x55\x01\x01\x01\xDE\x01\xDC\xFF\xFF" - , "\x01\x01\x2D\x01\x39\x01\x02\xFF\xFF" + , "\x11\x02\x4E\x01\x7F\xFF\xFF" + , "\x11\x02\x4F\x01\x72\xFF\xFF" + , "\x11\x01\x54\x01\x18\x01\x1F\x01\x22\xFF\xFF" + , "\x11\x01\x2D\x01\x64\x01\x2C\x01\x1F\x01\x77\x01\x02\xFF\xFF" + , "\x11\x01\x50\x01\x3F\x01\x51\x01\x30\xFF\xFF" + , "\x11\x01\x63\x01\x03\x01\x35\x01\x03\xFF\xFF" + , "\x11\x01\x54\x01\x18\x01\x1F\x01\x22\x01\x72\xFF\xFF" + , "\x11\x01\x2D\x01\x64\x01\x2C\x01\x1F\x01\x77\x01\x02\x01\x72\xFF\xFF" + , "\x11\x01\x50\x01\x3F\x01\x51\x01\x30\x01\x72\xFF\xFF" + , "\x11\x01\x63\x01\x03\x01\x35\x01\x03\x01\x72\xFF\xFF" + , "\x11\x01\x71\x01\x58\x01\x26\x01\x60\x01\x2C\x01\x34\x01\xE1\x02\x54\x01\xE0\xFF\xFF" + , "\x11\x01\x71\x01\x58\x01\x26\x01\x60\x01\x2C\x01\x34\x01\xE1\x01\x53\x01\xE0\xFF\xFF" + , "\x11\x02\x55\x01\x01\x01\xDE\x01\xDC\xFF\xFF" + , "\x11\x01\x2D\x01\x39\x01\x02\xFF\xFF" // keys - , "\x01\x01\x40\xFF\xFF" - , "\x01\x02\x52\x01\x01\x01\x40\xFF\xFF" - , "\x01\x02\x53\x01\x89\x01\x0E\x01\x40\xFF\xFF" - , "\x01\x01\xD9\x01\x01\x01\x40\xFF\xFF" - , "\x01\x01\xB1\x01\x46\x02\x48\x01\x3B\x01\x23\x01\x20\x01\x03\xFF\xFF" - , "\x01\x01\xDB\x01\x36\x01\x1F\x01\xE2\x01\x03\x01\xE3\x01\x18\x01\x01\x01\x40\xFF\xFF" - , "\x01\x01\x23\x01\x1F\x01\x17\x01\x03\x01\x18\x01\x01\x01\x40\xFF\xFF" - , "\x01\x01\x5A\x01\xE4\x01\x34\x01\x3D\x01\x18\x01\x01\x01\x40\xFF\xFF" - , "\x01\x01\x1F\x01\x03\x01\x22\x01\x01\x01\x40\xFF\xFF" - , "\x01\x02\x49\x02\x46\x01\x09\x01\x40\xFF\xFF" + , "\x11\x01\x40\xFF\xFF" + , "\x11\x02\x52\x01\x01\x01\x40\xFF\xFF" + , "\x11\x02\x53\x01\x89\x01\x0E\x01\x40\xFF\xFF" + , "\x11\x01\xD9\x01\x01\x01\x40\xFF\xFF" + , "\x11\x01\xB1\x01\x46\x02\x48\x01\x3B\x01\x23\x01\x20\x01\x03\xFF\xFF" + , "\x11\x01\xDB\x01\x36\x01\x1F\x01\xE2\x01\x03\x01\xE3\x01\x18\x01\x01\x01\x40\xFF\xFF" + , "\x11\x01\x23\x01\x1F\x01\x17\x01\x03\x01\x18\x01\x01\x01\x40\xFF\xFF" + , "\x11\x01\x5A\x01\xE4\x01\x34\x01\x3D\x01\x18\x01\x01\x01\x40\xFF\xFF" + , "\x11\x01\x1F\x01\x03\x01\x22\x01\x01\x01\x40\xFF\xFF" + , "\x11\x02\x49\x02\x46\x01\x09\x01\x40\xFF\xFF" // puzzles - , "\x01\x01\x60\x01\x86\x01\x22\xFF\xFF" - , "\x01\x01\x88\x01\x03\x01\x22\x01\x2E\x01\x23\x01\x3B\x01\x2E\x01\x22\xFF\xFF" - , "\x01\x01\xD9\x01\x01\x01\xDE\x01\xDC\xFF\xFF" - , "\x01\x02\x47\x02\x4C\xFF\xFF" - , "\x01\x02\x4D\x01\x4B\x01\x03\x01\x86\xFF\xFF" - , "\x01\x01\x23\x01\x02\x01\x34\xFF\xFF" - , "\x01\x01\x75\x01\x22\x01\x18\x01\x01\x01\xD0\xFF\xFF" - , "\x01\x01\x23\x01\xE3\x01\x65\x01\x18\x01\x01\x02\x4A\x02\x4B\xFF\xFF" - , "\x01\x01\x18\x01\x43\x01\x17\x01\x6D\xFF\xFF" - , "\x01\x01\x54\x01\x17\x01\x55\x01\x2C\x01\x2E\x01\x01\x01\x40\xFF\xFF" + , "\x11\x01\x60\x01\x86\x01\x22\xFF\xFF" + , "\x11\x01\x88\x01\x03\x01\x22\x01\x2E\x01\x23\x01\x3B\x01\x2E\x01\x22\xFF\xFF" + , "\x11\x01\xD9\x01\x01\x01\xDE\x01\xDC\xFF\xFF" + , "\x11\x02\x47\x02\x4C\xFF\xFF" + , "\x11\x02\x4D\x01\x4B\x01\x03\x01\x86\xFF\xFF" + , "\x11\x01\x23\x01\x02\x01\x34\xFF\xFF" + , "\x11\x01\x75\x01\x22\x01\x18\x01\x01\x01\xD0\xFF\xFF" + , "\x11\x01\x23\x01\xE3\x01\x65\x01\x18\x01\x01\x02\x4A\x02\x4B\xFF\xFF" + , "\x11\x01\x18\x01\x43\x01\x17\x01\x6D\xFF\xFF" + , "\x11\x01\x54\x01\x17\x01\x55\x01\x2C\x01\x2E\x01\x01\x01\x40\xFF\xFF" // TR1 subtitles /* 22 */ , - "[04000]\x01\x01\x19\x01\x0E\x01\xCE\x01\x0E\x01\x01\x01\x41\xFF\xFF" - "[05500]\x01\x01\x32\x01\x1C\x01\x24\x01\x56\x01\x3C\x01\x09\x01\x0E\x01\x01\x02\x60\x02\x61\x01\x07\x02\x5E\x01\x0C\x01\x0D\x01\x33\x01\x05\xFF\xFF" - "[09000]\x01\x01\xD4\x01\xE5\x01\x01\x01\x83\x01\x84\x01\x16\x01\x5D\x01\x2F\x02\x5F\x01\x15\x01\x0B\x01\x04\x01\x19\x01\x0C\x01\x0A\x01\xE9\x02\x64\x02\x65\x02\x62\x01\x16\x02\x63\x01\x37\x02\x58\x02\x59\x01\x04\x01\x09\x01\x37\x01\x09\x01\x15\x01\x0B\x01\x0C\x01\x08\x01\x05\xFF\xFF" - "[14000]\x01\x01\x04\x01\x14\x01\x04\x01\x0A\x02\x56\x02\x57\x01\x0F\x01\x47\x01\x09\x01\x08\x01\xB0\x02\x5C\x01\x07\x01\xEB\x01\x0D\x01\xEC\x01\x3A\x02\x5D\x01\x4A\x01\x80\x01\x0A\x01\x6F\x01\x7C\x01\x16\x01\x7C\x02\x5A\x01\x2F\x01\x38\x01\x27\x01\x0A\xFF\xFF" - "[18000]\x01\x02\x5B\x01\xB3\x01\xB4\x01\x0D\x01\x16\x02\x86\x01\xB2\x01\x07\x01\x24\x01\x3A\x01\x8D\x01\x37\x01\x0A\xFF\xFF" - "[20500]\x01\x01\x24\x01\x3A\x01\x83\x01\x84\x01\x38\x01\x4A\x01\x08\x01\x05\xFF\xFF" - "[22500]\x01\x01\x09\x01\x2B\x01\x3E\x01\x14\x01\x2E\x01\x03\x01\x54\x01\x02\x01\x3F\x01\x04\x01\x0E\x01\x83\x01\x84\x02\xB1\x01\x15\x01\x0B\x01\x12\x01\x0F\x01\x33\xFF\xFF" - "[24500]\x01\x01\x8D\x01\x0C\x02\xB2\x02\xAF\x01\x1A\x02\xB0\x01\x9A\x01\x09\x01\x01\x01\x24\x01\x05\x01\x3E\x01\x14\x01\x11\x01\x0A\x01\x53\x01\x81\x01\x07\x02\xB5\x02\xB6\x01\x38\x01\x4A\x01\x0A\xFF\xFF" - "[29500]\x01\x02\xB3\x01\x7F\x01\x01\x02\xB4\x02\xA9\x01\x0D\x02\xAA\x01\x3A\x02\xA7\x01\x15\x01\x0B\x01\x0C\x01\x0E\x01\xA6\x01\x0E\x01\x49\x01\x0D\x01\x0A\xFF\xFF" - "[33000]\x01\x01\xA5\x01\x47\x02\xA8\x01\x98\x01\xB4\x01\x09\x01\xD4\x02\xAD\x02\xAE\x01\xC5\x01\x07\x01\x8D\x01\x0C\x01\x0E\x01\x2B\x01\x3E\x01\x05\xFF\xFF" - "[37000]\x01\x01\x73\x01\x01\x01\x36\x01\x17\x01\x02\x01\x1A\x02\xAB\x01\x07\x02\xAC\x01\x1C\x01\x01\x01\x24\x01\x05\xFF\xFF" - "[39000]\x01\x01\x32\x01\x1C\x01\x31\x01\x93\x01\x37\x01\x0C\x01\x37\x01\x14\x01\x04\x01\x11\x01\x05\x01\x05\x01\x05\xFF\xFF" - "[40000]\x01\x02\xC1\x01\x84\x02\xC2\x02\xBF\x01\x19\x01\x1D\xFF\xFF""15\x01\x01\xC0\x01\x79\x01\x05\xFF\xFF" - "[43000]\x01\x01\x4D\x02\xC0\x01\x2A\x01\x08\x01\x0D\x01\x16\x01\xB7\x01\x2A\x01\xB5\x01\x08\x01\x1E\x01\x33\x01\x05\xFF\xFF" - "[45000]\x01\x01\x93\x02\xC5\x01\x16\x01\x0A\x01\xBF\x01\x01\x01\x0F\x01\x12\x01\x0D\x02\xC6\x01\x2A\x01\x1E\x01\x05\xFF\xFF" - "[47000]\x01\x01\x5A\x01\x71\x01\x42\x01\x1C\x01\x1E\x02\xC3\x01\x56\x01\x42\x01\x42\x01\x42\xFF\xFF" - "[50000]10\x01\x01\xC0\x01\x79\xFF\xFF" - "[54000]5\x01\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[55500]4\x01\x01\x06\x01\x06\x01\x06\xFF\xFF""3\x01\x01\x06\x01\x06\x01\x06\xFF\xFF""2\x01\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[60000]1\x01\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[04000]\x11\x01\x19\x01\x0E\x01\xCE\x01\x0E\x01\x01\x01\x41\xFF\xFF" + "[05500]\x11\x01\x32\x01\x1C\x01\x24\x01\x56\x01\x3C\x01\x09\x01\x0E\x01\x01\x02\x60\x02\x61\x01\x07\x02\x5E\x01\x0C\x01\x0D\x01\x33\x01\x05\xFF\xFF" + "[09000]\x11\x01\xD4\x01\xE5\x01\x01\x01\x83\x01\x84\x01\x16\x01\x5D\x01\x2F\x02\x5F\x01\x15\x01\x0B\x01\x04\x01\x19\x01\x0C\x01\x0A\x01\xE9\x02\x64\x02\x65\x02\x62\x01\x16\x02\x63\x01\x37\x02\x58\x02\x59\x01\x04\x01\x09\x01\x37\x01\x09\x01\x15\x01\x0B\x01\x0C\x01\x08\x01\x05\xFF\xFF" + "[14000]\x11\x01\x04\x01\x14\x01\x04\x01\x0A\x02\x56\x02\x57\x01\x0F\x01\x47\x01\x09\x01\x08\x01\xB0\x02\x5C\x01\x07\x01\xEB\x01\x0D\x01\xEC\x01\x3A\x02\x5D\x01\x4A\x01\x80\x01\x0A\x01\x6F\x01\x7C\x01\x16\x01\x7C\x02\x5A\x01\x2F\x01\x38\x01\x27\x01\x0A\xFF\xFF" + "[18000]\x11\x02\x5B\x01\xB3\x01\xB4\x01\x0D\x01\x16\x02\x86\x01\xB2\x01\x07\x01\x24\x01\x3A\x01\x8D\x01\x37\x01\x0A\xFF\xFF" + "[20500]\x11\x01\x24\x01\x3A\x01\x83\x01\x84\x01\x38\x01\x4A\x01\x08\x01\x05\xFF\xFF" + "[22500]\x11\x01\x09\x01\x2B\x01\x3E\x01\x14\x01\x2E\x01\x03\x01\x54\x01\x02\x01\x3F\x01\x04\x01\x0E\x01\x83\x01\x84\x02\xB1\x01\x15\x01\x0B\x01\x12\x01\x0F\x01\x33\xFF\xFF" + "[24500]\x11\x01\x8D\x01\x0C\x02\xB2\x02\xAF\x01\x1A\x02\xB0\x01\x9A\x01\x09\x01\x01\x01\x24\x01\x05\x01\x3E\x01\x14\x01\x11\x01\x0A\x01\x53\x01\x81\x01\x07\x02\xB5\x02\xB6\x01\x38\x01\x4A\x01\x0A\xFF\xFF" + "[29500]\x11\x02\xB3\x01\x7F\x01\x01\x02\xB4\x02\xA9\x01\x0D\x02\xAA\x01\x3A\x02\xA7\x01\x15\x01\x0B\x01\x0C\x01\x0E\x01\xA6\x01\x0E\x01\x49\x01\x0D\x01\x0A\xFF\xFF" + "[33000]\x11\x01\xA5\x01\x47\x02\xA8\x01\x98\x01\xB4\x01\x09\x01\xD4\x02\xAD\x02\xAE\x01\xC5\x01\x07\x01\x8D\x01\x0C\x01\x0E\x01\x2B\x01\x3E\x01\x05\xFF\xFF" + "[37000]\x11\x01\x73\x01\x01\x01\x36\x01\x17\x01\x02\x01\x1A\x02\xAB\x01\x07\x02\xAC\x01\x1C\x01\x01\x01\x24\x01\x05\xFF\xFF" + "[39000]\x11\x01\x32\x01\x1C\x01\x31\x01\x93\x01\x37\x01\x0C\x01\x37\x01\x14\x01\x04\x01\x11\x01\x05\x01\x05\x01\x05\xFF\xFF" + "[40000]\x11\x02\xC1\x01\x84\x02\xC2\x02\xBF\x01\x19\x01\x1D\xFF\xFF""15\x11\x01\xC0\x01\x79\x01\x05\xFF\xFF" + "[43000]\x11\x01\x4D\x02\xC0\x01\x2A\x01\x08\x01\x0D\x01\x16\x01\xB7\x01\x2A\x01\xB5\x01\x08\x01\x1E\x01\x33\x01\x05\xFF\xFF" + "[45000]\x11\x01\x93\x02\xC5\x01\x16\x01\x0A\x01\xBF\x01\x01\x01\x0F\x01\x12\x01\x0D\x02\xC6\x01\x2A\x01\x1E\x01\x05\xFF\xFF" + "[47000]\x11\x01\x5A\x01\x71\x01\x42\x01\x1C\x01\x1E\x02\xC3\x01\x56\x01\x42\x01\x42\x01\x42\xFF\xFF" + "[50000]10\x11\x01\xC0\x01\x79\xFF\xFF" + "[54000]5\x11\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[55500]4\x11\x01\x06\x01\x06\x01\x06\xFF\xFF""3\x11\x01\x06\x01\x06\x01\x06\xFF\xFF""2\x11\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[60000]1\x11\x01\x06\x01\x06\x01\x06\xFF\xFF" /* 23 */ , - "[00001]\x01\x02\xC4\x01\xBB\x01\x16\x01\x98\x01\xBC\x01\x0D\x01\x3C\x01\x0E\x01\x04\x01\x07\x02\xB9\x01\x11\x01\x4A\x01\x0B\x01\x04\x01\x19\x01\x15\x01\x0E\x01\x24\x01\x1C\x01\x33\x01\x05\xFF\xFF" - "[04000]\x01\x02\xBA\x02\xB7\x01\x0C\x01\x0E\x01\x14\x01\x09\x01\x41\xFF\xFF" - "[06000]\x01\x01\x0B\x01\x69\x02\xB8\x01\x01\x01\x67\x01\x93\x01\x09\x01\xD3\x01\x01\x01\x61\x01\x14\x01\xA4\x01\x1D\x01\xA0\x01\x14\x01\x15\x01\x0E\x01\xA9\x01\x05\xFF\xFF" - "[09000]\x01\x01\x32\x01\x27\x01\x16\x01\x5F\x01\x1C\x01\x47\xFF\xFF" - "[10000]\x01\x01\x61\x01\x69\x01\x48\x01\x38\x01\x2B\x01\x0A\x01\x3C\x01\x01\x01\x34\x02\xBD\x02\xBE\x01\xB2\x01\x04\x01\x0C\x01\x2D\x01\x39\x01\x02\x01\x01\x01\x14\x01\x44\x01\x11\x01\x1A\x01\x32\x01\x2B\x01\x09\x01\x0D\x02\xBB\x01\x04\x01\x0C\x01\x01\x01\x14\x01\x0C\x01\x41\xFF\xFF" - "[13500]\x01\x01\x09\x01\x11\x01\x32\x01\x27\x01\x07\x01\x23\x01\x02\x01\x13\x01\x01\x01\x7B\x01\x7D\x01\x01\x02\xBC\x01\x0D\x01\xB9\x01\x49\x02\x91\x01\x2B\x01\x1D\x01\x8A\x01\x15\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[17000]\x01\x01\x49\x01\x62\x01\x15\x01\x0F\x01\xCB\x01\x15\x01\x0B\x01\x06\x01\x06\x01\x06\x01\x3C\x01\x09\x01\x0E\x01\x3C\x01\x01\x01\x61\x01\xCA\x01\x3A\x01\x01\x02\x92\x01\x04\x01\x0B\x01\x08\x01\x01\x01\x41\xFF\xFF" - "[20000]\x01\x01\xBC\x01\x0E\x01\x3A\x01\x79\x01\x3E\x01\x24\x01\x06\x01\x06\x01\x06\x01\xD0\x01\x01\x01\x7B\x01\x7D\x01\x01\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[21500]\x01\x01\x3C\x01\x15\x01\x0A\x01\x49\x01\x62\x01\x15\x01\x0F\x01\xCB\x01\x15\x01\x0B\xFF\xFF"" - \x01\x01\x8E\x01\x69\x01\x2B\x01\x09\x01\x38\x01\x0C\x01\x05\xFF\xFF" - "[24000]\x01\x01\x12\x01\x01\x01\x2D\x01\x39\x01\x02\x01\x0F\x01\x61\x01\xCA\x01\x3A\x01\x01\x01\x14\x01\x44\x01\x11\x01\x16\x01\xBF\x01\x0D\x01\x5F\x01\x12\x01\x0D\x01\x3C\x01\x08\x01\x01\xFF\xFF" - "[26500]\x01\x01\x55\x01\x18\x01\x06\x01\x51\x01\x1F\x01\x17\x01\x1A\x01\x54\x01\x6A\x01\x03\x01\x22\x01\x06\x01\x2E\x01\xE2\x02\x8F\x01\x02\x01\x15\x01\x0B\x01\xC4\x01\x7D\x01\x07\x01\xA8\x01\x15\x01\x0B\x02\x90\x01\x38\x01\x4A\x01\x0B\x01\x0C\x01\x08\x01\x05\xFF\xFF" - "[29500]\x01\x01\x32\x01\x27\x01\x16\x01\x5F\x01\x12\x01\x09\x01\x01\x01\x41\xFF\xFF" - "[30500]\x01\x01\x16\x01\x03\x01\x42\x01\x61\x01\x69\x01\x48\x01\x38\x01\x2B\x01\x15\x01\x0B\x01\xC4\x01\x7D\x02\x95\x01\x0C\x01\x70\x01\x37\x01\x12\x01\x0F\x01\x16\x01\x1D\x01\x2F\x01\x33\x01\x48\x01\x24\x01\x05\xFF\xFF" - "[34000]\x01\x01\x5F\x01\x12\x01\x15\x01\x0B\x01\x9F\x01\x0C\x01\x0B\x01\x08\x01\x33\x01\x2B\x01\x42\xFF\xFF" - "[37000]\x01\x01\x0C\x01\x8A\x01\x56\x01\x3C\x01\x01\x01\x46\x01\x17\x01\x02\x01\x18\x02\x96\x02\x93\x01\x1A\x01\x5F\x01\x12\x01\x0C\x01\x15\x01\x0E\x01\x14\x01\x1E\x01\x14\x01\x2B\x01\x33\x01\x48\x01\x2B\x01\x3E\x01\x24\x01\x05\xFF\xFF" - "[41500]\x01\x01\x55\x01\x18\x01\x06\x01\x51\x01\x1F\x01\x17\x01\x0D\x01\x9F\x01\x37\x01\x04\x01\x14\x01\x33\x01\x48\x01\x85\x01\x96\x01\x33\x01\x03\x01\x14\x01\x41\xFF\xFF" + "[00001]\x11\x02\xC4\x01\xBB\x01\x16\x01\x98\x01\xBC\x01\x0D\x01\x3C\x01\x0E\x01\x04\x01\x07\x02\xB9\x01\x11\x01\x4A\x01\x0B\x01\x04\x01\x19\x01\x15\x01\x0E\x01\x24\x01\x1C\x01\x33\x01\x05\xFF\xFF" + "[04000]\x11\x02\xBA\x02\xB7\x01\x0C\x01\x0E\x01\x14\x01\x09\x01\x41\xFF\xFF" + "[06000]\x11\x01\x0B\x01\x69\x02\xB8\x01\x01\x01\x67\x01\x93\x01\x09\x01\xD3\x01\x01\x01\x61\x01\x14\x01\xA4\x01\x1D\x01\xA0\x01\x14\x01\x15\x01\x0E\x01\xA9\x01\x05\xFF\xFF" + "[09000]\x11\x01\x32\x01\x27\x01\x16\x01\x5F\x01\x1C\x01\x47\xFF\xFF" + "[10000]\x11\x01\x61\x01\x69\x01\x48\x01\x38\x01\x2B\x01\x0A\x01\x3C\x01\x01\x01\x34\x02\xBD\x02\xBE\x01\xB2\x01\x04\x01\x0C\x01\x2D\x01\x39\x01\x02\x01\x01\x01\x14\x01\x44\x01\x11\x01\x1A\x01\x32\x01\x2B\x01\x09\x01\x0D\x02\xBB\x01\x04\x01\x0C\x01\x01\x01\x14\x01\x0C\x01\x41\xFF\xFF" + "[13500]\x11\x01\x09\x01\x11\x01\x32\x01\x27\x01\x07\x01\x23\x01\x02\x01\x13\x01\x01\x01\x7B\x01\x7D\x01\x01\x02\xBC\x01\x0D\x01\xB9\x01\x49\x02\x91\x01\x2B\x01\x1D\x01\x8A\x01\x15\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[17000]\x11\x01\x49\x01\x62\x01\x15\x01\x0F\x01\xCB\x01\x15\x01\x0B\x01\x06\x01\x06\x01\x06\x01\x3C\x01\x09\x01\x0E\x01\x3C\x01\x01\x01\x61\x01\xCA\x01\x3A\x01\x01\x02\x92\x01\x04\x01\x0B\x01\x08\x01\x01\x01\x41\xFF\xFF" + "[20000]\x11\x01\xBC\x01\x0E\x01\x3A\x01\x79\x01\x3E\x01\x24\x01\x06\x01\x06\x01\x06\x01\xD0\x01\x01\x01\x7B\x01\x7D\x01\x01\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[21500]\x11\x01\x3C\x01\x15\x01\x0A\x01\x49\x01\x62\x01\x15\x01\x0F\x01\xCB\x01\x15\x01\x0B\xFF\xFF"" - \x11\x01\x8E\x01\x69\x01\x2B\x01\x09\x01\x38\x01\x0C\x01\x05\xFF\xFF" + "[24000]\x11\x01\x12\x01\x01\x01\x2D\x01\x39\x01\x02\x01\x0F\x01\x61\x01\xCA\x01\x3A\x01\x01\x01\x14\x01\x44\x01\x11\x01\x16\x01\xBF\x01\x0D\x01\x5F\x01\x12\x01\x0D\x01\x3C\x01\x08\x01\x01\xFF\xFF" + "[26500]\x11\x01\x55\x01\x18\x01\x06\x01\x51\x01\x1F\x01\x17\x01\x1A\x01\x54\x01\x6A\x01\x03\x01\x22\x01\x06\x01\x2E\x01\xE2\x02\x8F\x01\x02\x01\x15\x01\x0B\x01\xC4\x01\x7D\x01\x07\x01\xA8\x01\x15\x01\x0B\x02\x90\x01\x38\x01\x4A\x01\x0B\x01\x0C\x01\x08\x01\x05\xFF\xFF" + "[29500]\x11\x01\x32\x01\x27\x01\x16\x01\x5F\x01\x12\x01\x09\x01\x01\x01\x41\xFF\xFF" + "[30500]\x11\x01\x16\x01\x03\x01\x42\x01\x61\x01\x69\x01\x48\x01\x38\x01\x2B\x01\x15\x01\x0B\x01\xC4\x01\x7D\x02\x95\x01\x0C\x01\x70\x01\x37\x01\x12\x01\x0F\x01\x16\x01\x1D\x01\x2F\x01\x33\x01\x48\x01\x24\x01\x05\xFF\xFF" + "[34000]\x11\x01\x5F\x01\x12\x01\x15\x01\x0B\x01\x9F\x01\x0C\x01\x0B\x01\x08\x01\x33\x01\x2B\x01\x42\xFF\xFF" + "[37000]\x11\x01\x0C\x01\x8A\x01\x56\x01\x3C\x01\x01\x01\x46\x01\x17\x01\x02\x01\x18\x02\x96\x02\x93\x01\x1A\x01\x5F\x01\x12\x01\x0C\x01\x15\x01\x0E\x01\x14\x01\x1E\x01\x14\x01\x2B\x01\x33\x01\x48\x01\x2B\x01\x3E\x01\x24\x01\x05\xFF\xFF" + "[41500]\x11\x01\x55\x01\x18\x01\x06\x01\x51\x01\x1F\x01\x17\x01\x0D\x01\x9F\x01\x37\x01\x04\x01\x14\x01\x33\x01\x48\x01\x85\x01\x96\x01\x33\x01\x03\x01\x14\x01\x41\xFF\xFF" "[46000]" - "[50500]\x01\x01\x3C\x01\x3A\x01\x1A\x01\x0F\x01\x1C\x01\x05\x01\xA1\x01\x2B\x01\x01\x01\x61\x02\x94\x01\x05\xFF\xFF" + "[50500]\x11\x01\x3C\x01\x3A\x01\x1A\x01\x0F\x01\x1C\x01\x05\x01\xA1\x01\x2B\x01\x01\x01\x61\x02\x94\x01\x05\xFF\xFF" /* 24 */ , "" /* 25 */ , - "[03000]\x01\x01\x12\x01\x12\x01\x0D\x02\x89\x01\x08\x01\x16\x01\x92\x01\x90\x01\x21\x01\x26\x01\x75\x01\x43\x01\x02\xFF\xFF" - "[06000]\x01\x01\x06\x01\x06\x01\x06\x01\x53\x01\x81\x01\x23\x01\x1F\x01\x17\x01\x02\x01\x21\x01\x26\x01\x18\x01\x07\x02\x8A\x02\x87\x01\x04\x01\x0E\x02\x88\x01\x6F\x01\x01\x02\x8D\x01\x7F\x02\x8E\x01\x53\x01\x09\x02\x8B\x02\x8C\x01\xA6\x01\x01\x01\x76\x01\x6F\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[11000]\x01\x01\x92\x01\x90\x01\x16\x01\x53\x01\x81\x01\x01\x02\xA1\x01\x0C\x01\x0D\x02\xA2\x01\xD5\x01\x14\x01\x01\x01\x24\x01\x1C\x01\x0D\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[14000]\x01\x01\x06\x01\x06\x01\x06\x01\x12\x01\x01\x02\x9F\x01\x27\x01\xB3\x01\x0B\x01\x0C\x01\x0E\x02\xA0\x01\x0D\x02\xA5\x02\xA6\x01\x0F\x01\xD7\x01\x07\x01\xD6\x01\x11\x01\x32\x01\x1C\x01\x0F\x01\x04\x01\x0E\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[18000]\x01\x02\xA3\x02\xA4\x01\x01\x01\x87\x01\x38\x01\xCC\x02\x99\x01\x15\x01\x0E\x01\x92\x01\x90\x01\x16\x01\x32\x01\x01\x02\x9A\x01\xD7\x01\x01\x02\x97\x02\x98\x01\x07\x01\xDF\x01\xEB\x02\x9D\x02\x9E\x01\x48\x01\x08\x01\x12\x01\x0F\x01\x16\x01\x09\x01\x14\x01\x15\x01\x0E\x01\x06\x01\x06\x01\x06\xFF\xFF" - "[25000]\x01\x02\x9B\x01\x53\x01\x09\x01\x08\x01\x21\x01\x26\x01\x75\x01\x43\x01\x02\x02\x9C\x01\x0A\x01\x73\x01\x0E\x01\x49\x01\x0D\x01\x8E\x02\x45\x01\xF7\x01\x07\x01\x05\xFF\xFF" -/* 26 */ , "\x01\x01\x73\x01\x01\x01\x4C\x01\x0D\x01\x24\x01\x1C\x01\x12\x01\x32\x01\x05\xFF\xFF""@\x01\x01\x4C\x01\x01\x01\x4D\x01\x07\x01\xDD\x01\xDA\x01\x2A\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 27 */ , "\x01\x01\x25\x01\x28\x01\x20\x01\x03\x01\x10\x01\x04\x01\x0B\x01\x0A\x01\x55\x01\x4B\x01\x03\x01\x35\x01\x2C\x01\x34\x01\x22\x01\x03\x01\x30\x01\x0D\x02\x0A\x01\x15\x01\x0B\x01\x05\xFF\xFF" -/* 28 */ , "OK\x01\x01\x05\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x01\x01\xD8\x01\xD1\x01\x04\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x05\xFF\xFF""@\x01\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" -/* 29 */ , "\x01\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x14\x01\x11\x01\x2A\x01\x6C\x01\x0D\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x01\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x25\x01\x28\x01\x0D\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x2A\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 30 */ , "\x01\x01\x1C\x01\xD2\x01\xD2\x01\x0A\x01\x12\x01\x12\x01\x16\x01\xF9\x01\xFE\x01\x7C\x01\x24\xFF\xFF""@\x01\x02\x04\x01\x11\x01\x14\x01\x15\x01\x0B\x01\x0C\x01\x0B\x01\x8E\x01\x69\x01\x2B\x01\x09\x01\x38\x01\x0C\x01\x33\x01\x05\xFF\xFF""@\x01\x01\xE6\x01\xEC\x01\xFF\x01\x1A\x01\x19\x01\x3E\x01\xCE\x01\x09\x01\x0C\x01\x01\x01\x24\x01\x05\xFF\xFF" -/* 31 */ , "\x01\x01\x74\x01\x16\x01\x5E\x01\x02\x01\x21\x01\x51\x01\x0D\x01\x24\x01\x85\x01\x6B\x01\x15\x01\x0B\x01\xF6\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x05\xFF\xFF""@\x01\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\xFF\xFF""x\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" -/* 32 */ , "\x01\x01\x12\x01\x01\x01\xFC\x01\xFB\x01\x16\x01\x73\x01\x01\x01\x35\x01\x30\x01\x24\x01\x05\xFF\xFF""@\x01\x01\x5F\x01\x1C\x01\x41\xFF\xFF" -/* 33 */ , "R1\x01\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x01\x01\xAE\x01\xAC\x01\x01\x01\x0F\x01\x12\x01\x59\x01\x19\x01\x1D\x01\x78\x01\x0C\x01\x0B\x01\x05\xFF\xFF" -/* 34 */ , "R1\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0C\x01\x08\x01\x0F\x01\x0A\x01\x82\x01\x14\x01\x11\x01\x9E\x01\x49\x01\x09\x01\x0C\x01\x1E\x01\x24\x01\x05\xFF\xFF" -/* 35 */ , "\x01\x01\xFD\x01\x3A\x01\x07\x01\x99\x01\xA3\x01\x04\x01\x0E\x01\x0C\x01\x0F\x01\x2F\x01\x16\xFF\xFF""L1\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF""1\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" -/* 36 */ , "\x01\x01\x19\x01\xCC\x01\x16\x01\x0A\x01\xAE\x01\xAC\x01\x01\x01\x0F\x01\x12\x01\x59\x01\x19\x01\x1D\x01\x78\x01\x0C\x01\x0B\x01\x0A\xFF\xFF""@\x01\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x2A\x01\x6C\x01\x0D\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x01\x01\xA7\x01\x4D\x01\x0D\x01\x0C\x01\x08\x01\x0F\x01\x2F\x01\x0D\xFF\xFF""x\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x15\x02\x08\x01\x09\x01\x04\x01\x0D\x01\x2A\x01\x08\x01\x0F\x01\x0A\xFF\xFF""@\x01\x01\x46\x01\x5B\x01\x0D\x01\x70\x01\x14\x01\x19\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 37 */ , "x\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x31\x01\x07\x01\x10\x01\x2A\x01\x0F\x01\x6B\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 38 */ , "\x01\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x2A\x01\x0F\x01\x8C\x01\x3A\x01\x09\x01\x1A\x01\x11\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x1A\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 39 */ , "\x01\x01\xB8\x01\x2F\x01\x1A\x02\x06\x01\x19\x01\x08\x01\x19\x01\x1D\x01\x78\x01\x0C\x01\x0B\x01\x79\x01\x83\x01\x04\x01\x0A\xFF\xFF""R1\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\xF8\x01\x04\x01\x0B\x01\x14\x01\x11\xFF\xFF""@\x01\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x67\x01\x07\xFF\xFF""1\x01\x02\x32\x01\x10\x01\x04\x01\x0B\x01\x0A\x01\x12\x01\x27\x01\x1D\x01\xA0\x01\x8C\x01\x1A\x01\x1D\x01\x2F\x01\x08\x01\x24\x01\x1C\x01\x0D\x01\x09\x01\x08\x01\x1E\x01\x05\xFF\xFF""@\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x0A\x01\x2A\x01\x6C\x01\x0D\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\xAA\x01\x44\x01\x08\x01\x05\xFF\xFF""@\x01\x01\x32\x01\x1C\x01\x2A\x01\x08\x01\x0F\x01\xC6\x01\x29\x01\xC6\x01\x29\x01\x01\x01\x0F\x01\x12\x01\x59\x01\x1D\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 40 */ , "\x01\x01\x32\x01\x04\x01\x0B\x01\x74\x01\x16\x01\xA5\x01\x47\x02\x30\x01\x9A\x01\x09\x01\x12\x01\x0F\x01\x05\xFF\xFF""@\x01\x01\x8C\x01\x3A\x01\x09\x01\x1A\x01\x11\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x07\x01\x04\x01\x0B\x01\xA7\x01\x4D\x01\x0D\x01\x0C\x01\x08\x01\x0F\x01\x2F\x01\x0A\xFF\xFF""@x\x01\x01\x1B\x01\x13\x01\x02\x01\x3E\x01\x44\x01\x07\x01\x10\x01\x04\x01\xAA\x01\x44\x01\x08\x01\x0F\x01\x82\x01\x01\x01\x46\x01\x5B\x01\x0D\x01\x70\x01\x14\x01\x19\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 41 */ , "\x01\x01\x0C\x01\x0C\x01\x1E\x01\x56\x01\x7A\xFF\xFF""OK\x01\x01\x05\xFF\xFF" -/* 42 */ , "\x01\x01\x24\x01\x85\x01\x6B\x01\x08\x01\x0D\x01\x16\xFF\xFF""x\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" -/* 43 */ , "\x01\x01\x31\x01\x01\x01\x18\x01\x91\x01\x03\x01\x18\x01\x1A\x02\x33\x01\x37\x01\x0B\x01\x0A\x01\x12\x01\x12\x01\x14\x01\x11\x01\x16\x01\x6B\x01\x27\x01\x09\x01\x0C\x01\x1E\x01\x05\xFF\xFF""@x\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x9C\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x01\x01\x9C\x02\x36\x01\x19\x01\x1D\x01\x5D\x01\x15\x01\x0E\x01\x11\x01\x0A\xFF\xFF""x\x01\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x4A\x01\x80\x01\x6B\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 44 */ , "\x01\x01\x0C\x01\x0C\x01\x1E\x01\x56\x01\x7A\x01\x47\x01\x04\x01\x7B\x01\x77\x01\x07\x01\x04\x01\x0E\x01\x37\x01\x09\x01\x14\x01\x15\x01\x0E\x01\x11\x01\x0A\x01\xBD\x01\xBA\x01\x01\x01\x4D\x01\x1D\x01\x16\x02\x35\x02\x2B\x02\x2A\x01\x37\x01\x5D\x01\xB8\x01\x2A\x01\x08\x01\x12\x01\x0F\x01\x33\x01\x05\xFF\xFF" -/* 45 */ , "\x01\x01\xE9\x01\xC3\x01\x01\x01\xDF\x01\x59\x01\x0D\x01\x82\x01\x1A\x01\x3C\x01\x08\x01\x0F\x01\x2F\x01\x0A\xFF\xFF""@\x01\x01\x76\x01\xBB\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x67\x01\x07\x01\x10\x01\x04\x01\x0A\x01\x2A\x01\x6C\x01\x0D\xFF\xFF""x\x01\x01\x1B\x01\x13\x01\x02\x01\x3E\x01\x44\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x01\x01\x82\x01\x01\x01\x46\x01\x5B\x01\x0D\x01\xB9\x01\x11\x01\x67\x01\x1A\x01\x08\x01\x12\x01\x0F\x01\x47\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 46 */ , "\x01\x01\x85\x01\x96\x01\x3C\x01\x0A\x01\x74\x01\x0D\x01\x5D\x01\x2F\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x05\xFF\xFF" -/* 47 */ , "\x01\x01\x74\x01\x16\x01\x94\x01\xB5\x01\x01\x01\xD8\x01\xD1\x01\x33\x01\x05\xFF\xFF" -/* 48 */ , "\x01\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x0F\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\xA8\x01\x15\x01\x0B\x01\x0A\xFF\xFF""@\x01\x01\x94\x01\xA4\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 49 */ , "\x01\x02\x2C\x01\x04\x01\x14\x01\x15\x01\x0E\x01\x56\xFF\xFF""@\x01\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x0A\xFF\xFF""L2\x01\x01\x1B\x01\x13\x01\x02\x01\x0F\xFF\xFF""R2\x01\x01\x1B\x01\x13\x01\x02\x01\x1D\x01\x66\x01\x31\x01\x94\x01\x6C\x01\x12\x01\x0F\x01\x1A\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF""@\x01\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x1D\x01\x19\x01\x0E\x01\xC1\x01\x27\x01\x08\x01\x01\x01\x05\xFF\xFF""@\x01\x01\x36\x01\x03\x01\x22\x01\x01\x01\x46\x01\x5B\x01\x0D\x01\x5D\x01\x15\x01\x0B\x01\x0A\xFF\xFF""x\x01\x01\x1B\x01\x13\x01\x02\x01\x0F\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x2A\x01\x0F\x01\x66\x01\x14\x01\x11\x01\x31\x01\x1A\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" -/* 50 */ , "\x01\x01\x32\x01\x59\x01\x32\x01\x59\x02\x2E\x02\x2D\x01\x0D\x01\x5D\x01\x2F\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x14\x01\x41\xFF\xFF" -/* 51 */ , "\x01\x01\x12\x01\x01\x01\x71\x01\x18\x02\x40\x01\x1A\x01\x06\x01\x06\x01\x06\x01\x42\xFF\xFF" -/* 52 */ , "\x01\x01\x12\x01\x0C\x01\x70\x01\x11\x01\x76\x01\x6F\x01\x76\x01\x6F\x01\xDD\x01\xDA\x01\x04\x01\x33\x01\x48\x01\x0F\x01\x09\x01\x05\xFF\xFF" -/* 53 */ , "\x01\x01\x32\x01\x0C\x01\x70\x01\xA3\x01\x4A\x01\x0F\x01\x16\x01\xEF\x01\x1E\x01\x33\x01\x48\x01\x42\xFF\xFF""@\x01\x01\x09\x01\xA9\x01\x09\x01\x11\x01\x0A\x01\x12\x01\x12\x01\x1D\x02\x3F\x01\x2B\x01\x1D\x01\x47\x01\x11\x01\x1C\x01\x14\x01\x11\x01\x38\x01\x3C\x01\x05\xFF\xFF" -/* 54 */ , "\x01\x01\x73\x01\x1A\x01\x32\x01\x2B\x01\x09\x01\x0D\x02\x3E\x02\x41\x01\x0D\x01\x8A\x01\x11\x01\x27\x01\x08\x01\x0F\x02\x44\x01\x1C\x01\x41\xFF\xFF" -/* 55 */ , "\x01\x01\x65\x01\x02\x01\x88\x01\x01\x02\x43\x02\x42\x01\x07\x02\x39\x01\x44\x01\xA2\x01\x08\x01\x0D\x01\x16\x02\x37\x01\x04\x01\xB7\x01\x14\x01\x15\x01\x0E\x01\x24\x01\x1C\x01\x3E\x01\x09\x01\x7A\x01\x50\x01\x2E\x01\xE4\x02\x3A\x02\x3D\x01\x22\x01\x05\xFF\xFF""@\x01\x01\x12\x01\x1C\x01\x0C\x01\x1C\x01\x47\x01\x01\x01\x16\x02\x3C\x01\x49\x01\xA2\x01\x11\x01\x09\x01\x44\x01\x27\x01\x80\x01\x09\x01\x11\x01\x09\x01\x0C\x01\x14\x01\x11\x01\x33\x01\x05\xFF\xFF""@\x01\x01\x1C\x01\x56\x01\x7A\x01\xD6\x01\x0D\x01\x87\x02\x3B\x01\x3E\x01\x05\x02\x28\x01\x0F\x01\x12\x01\x1C\x01\x04\x01\x0B\x01\xC5\x01\x1E\x01\x09\x01\x44\x01\x27\x01\x80\x01\x09\x01\x11\x01\x09\x01\x0C\x01\x09\x01\x2B\x01\x0B\x01\x05\xFF\xFF""@\x01\x01\x1D\x01\x47\x01\x0A\x01\x12\x01\x27\x01\x1A\x01\xE6\x01\xE5\x01\x09\x01\x01\x01\x38\x01\x05\xFF\xFF" + "[03000]\x11\x01\x12\x01\x12\x01\x0D\x02\x89\x01\x08\x01\x16\x01\x92\x01\x90\x01\x21\x01\x26\x01\x75\x01\x43\x01\x02\xFF\xFF" + "[06000]\x11\x01\x06\x01\x06\x01\x06\x01\x53\x01\x81\x01\x23\x01\x1F\x01\x17\x01\x02\x01\x21\x01\x26\x01\x18\x01\x07\x02\x8A\x02\x87\x01\x04\x01\x0E\x02\x88\x01\x6F\x01\x01\x02\x8D\x01\x7F\x02\x8E\x01\x53\x01\x09\x02\x8B\x02\x8C\x01\xA6\x01\x01\x01\x76\x01\x6F\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[11000]\x11\x01\x92\x01\x90\x01\x16\x01\x53\x01\x81\x01\x01\x02\xA1\x01\x0C\x01\x0D\x02\xA2\x01\xD5\x01\x14\x01\x01\x01\x24\x01\x1C\x01\x0D\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[14000]\x11\x01\x06\x01\x06\x01\x06\x01\x12\x01\x01\x02\x9F\x01\x27\x01\xB3\x01\x0B\x01\x0C\x01\x0E\x02\xA0\x01\x0D\x02\xA5\x02\xA6\x01\x0F\x01\xD7\x01\x07\x01\xD6\x01\x11\x01\x32\x01\x1C\x01\x0F\x01\x04\x01\x0E\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[18000]\x11\x02\xA3\x02\xA4\x01\x01\x01\x87\x01\x38\x01\xCC\x02\x99\x01\x15\x01\x0E\x01\x92\x01\x90\x01\x16\x01\x32\x01\x01\x02\x9A\x01\xD7\x01\x01\x02\x97\x02\x98\x01\x07\x01\xDF\x01\xEB\x02\x9D\x02\x9E\x01\x48\x01\x08\x01\x12\x01\x0F\x01\x16\x01\x09\x01\x14\x01\x15\x01\x0E\x01\x06\x01\x06\x01\x06\xFF\xFF" + "[25000]\x11\x02\x9B\x01\x53\x01\x09\x01\x08\x01\x21\x01\x26\x01\x75\x01\x43\x01\x02\x02\x9C\x01\x0A\x01\x73\x01\x0E\x01\x49\x01\x0D\x01\x8E\x02\x45\x01\xF7\x01\x07\x01\x05\xFF\xFF" +/* 26 */ , "\x11\x01\x73\x01\x01\x01\x4C\x01\x0D\x01\x24\x01\x1C\x01\x12\x01\x32\x01\x05\xFF\xFF""@\x11\x01\x4C\x01\x01\x01\x4D\x01\x07\x01\xDD\x01\xDA\x01\x2A\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 27 */ , "\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x10\x01\x04\x01\x0B\x01\x0A\x01\x55\x01\x4B\x01\x03\x01\x35\x01\x2C\x01\x34\x01\x22\x01\x03\x01\x30\x01\x0D\x02\x0A\x01\x15\x01\x0B\x01\x05\xFF\xFF" +/* 28 */ , "OK\x11\x01\x05\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x01\x01\xD8\x01\xD1\x01\x04\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x05\xFF\xFF""@\x11\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" +/* 29 */ , "\x11\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x14\x01\x11\x01\x2A\x01\x6C\x01\x0D\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x25\x01\x28\x01\x0D\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x2A\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 30 */ , "\x11\x01\x1C\x01\xD2\x01\xD2\x01\x0A\x01\x12\x01\x12\x01\x16\x01\xF9\x01\xFE\x01\x7C\x01\x24\xFF\xFF""@\x11\x02\x04\x01\x11\x01\x14\x01\x15\x01\x0B\x01\x0C\x01\x0B\x01\x8E\x01\x69\x01\x2B\x01\x09\x01\x38\x01\x0C\x01\x33\x01\x05\xFF\xFF""@\x11\x01\xE6\x01\xEC\x01\xFF\x01\x1A\x01\x19\x01\x3E\x01\xCE\x01\x09\x01\x0C\x01\x01\x01\x24\x01\x05\xFF\xFF" +/* 31 */ , "\x11\x01\x74\x01\x16\x01\x5E\x01\x02\x01\x21\x01\x51\x01\x0D\x01\x24\x01\x85\x01\x6B\x01\x15\x01\x0B\x01\xF6\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x05\xFF\xFF""@\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\xFF\xFF""x\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" +/* 32 */ , "\x11\x01\x12\x01\x01\x01\xFC\x01\xFB\x01\x16\x01\x73\x01\x01\x01\x35\x01\x30\x01\x24\x01\x05\xFF\xFF""@\x11\x01\x5F\x01\x1C\x01\x41\xFF\xFF" +/* 33 */ , "R1\x11\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x11\x01\xAE\x01\xAC\x01\x01\x01\x0F\x01\x12\x01\x59\x01\x19\x01\x1D\x01\x78\x01\x0C\x01\x0B\x01\x05\xFF\xFF" +/* 34 */ , "R1\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0C\x01\x08\x01\x0F\x01\x0A\x01\x82\x01\x14\x01\x11\x01\x9E\x01\x49\x01\x09\x01\x0C\x01\x1E\x01\x24\x01\x05\xFF\xFF" +/* 35 */ , "\x11\x01\xFD\x01\x3A\x01\x07\x01\x99\x01\xA3\x01\x04\x01\x0E\x01\x0C\x01\x0F\x01\x2F\x01\x16\xFF\xFF""L1\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF""@1\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" +/* 36 */ , "\x11\x01\x19\x01\xCC\x01\x16\x01\x0A\x01\xAE\x01\xAC\x01\x01\x01\x0F\x01\x12\x01\x59\x01\x19\x01\x1D\x01\x78\x01\x0C\x01\x0B\x01\x0A\xFF\xFF""@\x11\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x2A\x01\x6C\x01\x0D\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x11\x01\xA7\x01\x4D\x01\x0D\x01\x0C\x01\x08\x01\x0F\x01\x2F\x01\x0D\xFF\xFF""x\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x15\x02\x08\x01\x09\x01\x04\x01\x0D\x01\x2A\x01\x08\x01\x0F\x01\x0A\xFF\xFF""@\x11\x01\x46\x01\x5B\x01\x0D\x01\x70\x01\x14\x01\x19\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 37 */ , "x\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x31\x01\x07\x01\x10\x01\x2A\x01\x0F\x01\x6B\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 38 */ , "\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x09\x01\x1A\x01\x11\x01\x0A\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x2A\x01\x0F\x01\x8C\x01\x3A\x01\x09\x01\x1A\x01\x11\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x1A\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 39 */ , "\x11\x01\xB8\x01\x2F\x01\x1A\x02\x06\x01\x19\x01\x08\x01\x19\x01\x1D\x01\x78\x01\x0C\x01\x0B\x01\x79\x01\x83\x01\x04\x01\x0A\xFF\xFF""R1\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\xF8\x01\x04\x01\x0B\x01\x14\x01\x11\xFF\xFF""@\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x67\x01\x07\xFF\xFF""1\x11\x02\x32\x01\x10\x01\x04\x01\x0B\x01\x0A\x01\x12\x01\x27\x01\x1D\x01\xA0\x01\x8C\x01\x1A\x01\x1D\x01\x2F\x01\x08\x01\x24\x01\x1C\x01\x0D\x01\x09\x01\x08\x01\x1E\x01\x05\xFF\xFF""@\x11\x01\x31\x01\x07\x01\x10\x01\x04\x01\x0A\x01\x2A\x01\x6C\x01\x0D\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\xAA\x01\x44\x01\x08\x01\x05\xFF\xFF""@\x11\x01\x32\x01\x1C\x01\x2A\x01\x08\x01\x0F\x01\xC6\x01\x29\x01\xC6\x01\x29\x01\x01\x01\x0F\x01\x12\x01\x59\x01\x1D\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 40 */ , "\x11\x01\x32\x01\x04\x01\x0B\x01\x74\x01\x16\x01\xA5\x01\x47\x02\x30\x01\x9A\x01\x09\x01\x12\x01\x0F\x01\x05\xFF\xFF""@\x11\x01\x8C\x01\x3A\x01\x09\x01\x1A\x01\x11\x01\x35\x01\x4E\x01\x02\x01\x36\x01\x07\x01\x04\x01\x0B\x01\xA7\x01\x4D\x01\x0D\x01\x0C\x01\x08\x01\x0F\x01\x2F\x01\x0A\xFF\xFF""@x\x11\x01\x1B\x01\x13\x01\x02\x01\x3E\x01\x44\x01\x07\x01\x10\x01\x04\x01\xAA\x01\x44\x01\x08\x01\x0F\x01\x82\x01\x01\x01\x46\x01\x5B\x01\x0D\x01\x70\x01\x14\x01\x19\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 41 */ , "\x11\x01\x0C\x01\x0C\x01\x1E\x01\x56\x01\x7A\xFF\xFF""OK\x11\x01\x05\xFF\xFF" +/* 42 */ , "\x11\x01\x24\x01\x85\x01\x6B\x01\x08\x01\x0D\x01\x16\xFF\xFF""x\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x05\xFF\xFF" +/* 43 */ , "\x11\x01\x31\x01\x01\x01\x18\x01\x91\x01\x03\x01\x18\x01\x1A\x02\x33\x01\x37\x01\x0B\x01\x0A\x01\x12\x01\x12\x01\x14\x01\x11\x01\x16\x01\x6B\x01\x27\x01\x09\x01\x0C\x01\x1E\x01\x05\xFF\xFF""@x\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x9C\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x11\x01\x9C\x02\x36\x01\x19\x01\x1D\x01\x5D\x01\x15\x01\x0E\x01\x11\x01\x0A\xFF\xFF""x\x11\x01\x1B\x01\x13\x01\x02\x01\x07\x01\x10\x01\x04\x01\x0E\x01\x19\x01\x19\x01\x0A\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x4A\x01\x80\x01\x6B\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 44 */ , "\x11\x01\x0C\x01\x0C\x01\x1E\x01\x56\x01\x7A\x01\x47\x01\x04\x01\x7B\x01\x77\x01\x07\x01\x04\x01\x0E\x01\x37\x01\x09\x01\x14\x01\x15\x01\x0E\x01\x11\x01\x0A\x01\xBD\x01\xBA\x01\x01\x01\x4D\x01\x1D\x01\x16\x02\x35\x02\x2B\x02\x2A\x01\x37\x01\x5D\x01\xB8\x01\x2A\x01\x08\x01\x12\x01\x0F\x01\x33\x01\x05\xFF\xFF" +/* 45 */ , "\x11\x01\xE9\x01\xC3\x01\x01\x01\xDF\x01\x59\x01\x0D\x01\x82\x01\x1A\x01\x3C\x01\x08\x01\x0F\x01\x2F\x01\x0A\xFF\xFF""@\x11\x01\x76\x01\xBB\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x67\x01\x07\x01\x10\x01\x04\x01\x0A\x01\x2A\x01\x6C\x01\x0D\xFF\xFF""x\x11\x01\x1B\x01\x13\x01\x02\x01\x3E\x01\x44\x01\x07\x01\x10\x01\x04\x01\x0B\x01\x0A\xFF\xFF""@\x11\x01\x82\x01\x01\x01\x46\x01\x5B\x01\x0D\x01\xB9\x01\x11\x01\x67\x01\x1A\x01\x08\x01\x12\x01\x0F\x01\x47\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 46 */ , "\x11\x01\x85\x01\x96\x01\x3C\x01\x0A\x01\x74\x01\x0D\x01\x5D\x01\x2F\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x05\xFF\xFF" +/* 47 */ , "\x11\x01\x74\x01\x16\x01\x94\x01\xB5\x01\x01\x01\xD8\x01\xD1\x01\x33\x01\x05\xFF\xFF" +/* 48 */ , "\x11\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x0F\x01\x25\x01\x28\x01\x20\x01\x03\x01\x07\x01\xA8\x01\x15\x01\x0B\x01\x0A\xFF\xFF""@\x11\x01\x94\x01\xA4\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 49 */ , "\x11\x02\x2C\x01\x04\x01\x14\x01\x15\x01\x0E\x01\x56\xFF\xFF""@\x11\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x0A\xFF\xFF""L2\x11\x01\x1B\x01\x13\x01\x02\x01\x0F\xFF\xFF""R2\x11\x01\x1B\x01\x13\x01\x02\x01\x1D\x01\x66\x01\x31\x01\x94\x01\x6C\x01\x12\x01\x0F\x01\x1A\x01\x1D\x01\x2F\x01\x08\x01\x1E\x01\x05\xFF\xFF""@\x11\x01\x57\x01\x1B\x01\x13\x01\x02\x01\x1D\x01\x19\x01\x0E\x01\xC1\x01\x27\x01\x08\x01\x01\x01\x05\xFF\xFF""@\x11\x01\x36\x01\x03\x01\x22\x01\x01\x01\x46\x01\x5B\x01\x0D\x01\x5D\x01\x15\x01\x0B\x01\x0A\xFF\xFF""x\x11\x01\x1B\x01\x13\x01\x02\x01\x0F\x01\x25\x01\x28\x01\x20\x01\x03\x01\x01\x01\x31\x01\x07\x01\x10\x01\x2A\x01\x0F\x01\x66\x01\x14\x01\x11\x01\x31\x01\x1A\x01\x27\x01\x08\x01\x1E\x01\x05\xFF\xFF" +/* 50 */ , "\x11\x01\x32\x01\x59\x01\x32\x01\x59\x02\x2E\x02\x2D\x01\x0D\x01\x5D\x01\x2F\x01\x19\x01\x04\x01\x62\x01\x1C\x01\x14\x01\x41\xFF\xFF" +/* 51 */ , "\x11\x01\x12\x01\x01\x01\x71\x01\x18\x02\x40\x01\x1A\x01\x06\x01\x06\x01\x06\x01\x42\xFF\xFF" +/* 52 */ , "\x11\x01\x12\x01\x0C\x01\x70\x01\x11\x01\x76\x01\x6F\x01\x76\x01\x6F\x01\xDD\x01\xDA\x01\x04\x01\x33\x01\x48\x01\x0F\x01\x09\x01\x05\xFF\xFF" +/* 53 */ , "\x11\x01\x32\x01\x0C\x01\x70\x01\xA3\x01\x4A\x01\x0F\x01\x16\x01\xEF\x01\x1E\x01\x33\x01\x48\x01\x42\xFF\xFF""@\x11\x01\x09\x01\xA9\x01\x09\x01\x11\x01\x0A\x01\x12\x01\x12\x01\x1D\x02\x3F\x01\x2B\x01\x1D\x01\x47\x01\x11\x01\x1C\x01\x14\x01\x11\x01\x38\x01\x3C\x01\x05\xFF\xFF" +/* 54 */ , "\x11\x01\x73\x01\x1A\x01\x32\x01\x2B\x01\x09\x01\x0D\x02\x3E\x02\x41\x01\x0D\x01\x8A\x01\x11\x01\x27\x01\x08\x01\x0F\x02\x44\x01\x1C\x01\x41\xFF\xFF" +/* 55 */ , "\x11\x01\x65\x01\x02\x01\x88\x01\x01\x02\x43\x02\x42\x01\x07\x02\x39\x01\x44\x01\xA2\x01\x08\x01\x0D\x01\x16\x02\x37\x01\x04\x01\xB7\x01\x14\x01\x15\x01\x0E\x01\x24\x01\x1C\x01\x3E\x01\x09\x01\x7A\x01\x50\x01\x2E\x01\xE4\x02\x3A\x02\x3D\x01\x22\x01\x05\xFF\xFF""@\x11\x01\x12\x01\x1C\x01\x0C\x01\x1C\x01\x47\x01\x01\x01\x16\x02\x3C\x01\x49\x01\xA2\x01\x11\x01\x09\x01\x44\x01\x27\x01\x80\x01\x09\x01\x11\x01\x09\x01\x0C\x01\x14\x01\x11\x01\x33\x01\x05\xFF\xFF""@\x11\x01\x1C\x01\x56\x01\x7A\x01\xD6\x01\x0D\x01\x87\x02\x3B\x01\x3E\x01\x05\x02\x28\x01\x0F\x01\x12\x01\x1C\x01\x04\x01\x0B\x01\xC5\x01\x1E\x01\x09\x01\x44\x01\x27\x01\x80\x01\x09\x01\x11\x01\x09\x01\x0C\x01\x09\x01\x2B\x01\x0B\x01\x05\xFF\xFF""@\x11\x01\x1D\x01\x47\x01\x0A\x01\x12\x01\x27\x01\x1A\x01\xE6\x01\xE5\x01\x09\x01\x01\x01\x38\x01\x05\xFF\xFF" /* 56 */ , "" // TR1 levels - , "\x01\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" - , "\x01\x02\x13\x02\x16\xFF\xFF" - , "\x01\x02\x18\x02\x17\x01\xEE\x01\xED\x01\x65\x01\x22\x01\x43\x01\x45\x01\x02\x01\x45\xFF\xFF" - , "\x01\x01\x52\x01\x18\x01\x1F\x01\x06\x01\x45\x01\x3D\x01\x03\xFF\xFF" - , "\x01\x01\x34\x01\x23\x01\x52\x01\x91\x01\x2C\x01\x34\x01\xEA\x01\x8B\xFF\xFF" - , "\x01\x01\x8F\x01\x46\x01\x17\x01\x02\x01\x2D\x01\x18\x01\x8F\x02\x0D\xFF\xFF" - , "\x01\x01\x5E\x01\x52\x01\x2D\x01\x23\x01\x30\xFF\xFF" - , "\x01\x01\x55\x01\x5A\x01\x18\x01\x01\x02\x0C\x02\x11\xFF\xFF" - , "\x01\x02\x10\x01\x66\x02\x23\xFF\xFF" - , "\x01\x01\x21\x01\x26\x01\x75\x01\x43\x01\x02\x01\xEA\x01\x8B\xFF\xFF" - , "\x01\x01\x43\x01\x03\x01\x30\x01\x03\x01\x02\x01\x01\x01\xEE\x01\xED\x01\xBD\x01\xBA\xFF\xFF" - , "\x01\x01\x43\x01\x03\x01\x30\x01\x03\x01\x02\x01\x01\x01\x39\x01\x6D\x01\x29\x01\x18\x01\x34\xFF\xFF" - , "\x01\x01\x2D\x01\x39\x01\x02\x01\x01\x01\x8F\x02\x27\xFF\xFF" - , "\x01\x01\x51\x01\x1F\x01\x17\x01\x01\x02\x26\x02\x25\xFF\xFF" - , "\x01\x01\x23\x01\x1F\x01\x17\x01\x02\x01\x21\x01\x26\x01\x18\xFF\xFF" - , "\x01\x01\x3F\x01\x3D\x01\x03\x01\x1F\x01\x06\x01\x54\x01\x17\x01\x55\x01\x2C\x01\x2E\xFF\xFF" - , "\x01\x01\x6A\x01\x35\x01\x36\x01\x1F\x02\x1C\x02\x1B\xFF\xFF" - , "\x01\x02\x1A\x01\x01\x01\x6E\xFF\xFF" - , "\x01\x01\x23\x01\x1F\x01\x17\x01\x02\x01\x21\x01\x26\x01\x18\x02\x20\x02\x1F\x02\x1E\x01\x01\x02\x1D\x01\x97\xFF\xFF" - , "\x01\x01\xCF\x02\x24\xFF\xFF" + , "\x11\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" + , "\x11\x02\x13\x02\x16\xFF\xFF" + , "\x11\x02\x18\x02\x17\x01\xEE\x01\xED\x01\x65\x01\x22\x01\x43\x01\x45\x01\x02\x01\x45\xFF\xFF" + , "\x11\x01\x52\x01\x18\x01\x1F\x01\x06\x01\x45\x01\x3D\x01\x03\xFF\xFF" + , "\x11\x01\x34\x01\x23\x01\x52\x01\x91\x01\x2C\x01\x34\x01\xEA\x01\x8B\xFF\xFF" + , "\x11\x01\x8F\x01\x46\x01\x17\x01\x02\x01\x2D\x01\x18\x01\x8F\x02\x0D\xFF\xFF" + , "\x11\x01\x5E\x01\x52\x01\x2D\x01\x23\x01\x30\xFF\xFF" + , "\x11\x01\x55\x01\x5A\x01\x18\x01\x01\x02\x0C\x02\x11\xFF\xFF" + , "\x11\x02\x10\x01\x66\x02\x23\xFF\xFF" + , "\x11\x01\x21\x01\x26\x01\x75\x01\x43\x01\x02\x01\xEA\x01\x8B\xFF\xFF" + , "\x11\x01\x43\x01\x03\x01\x30\x01\x03\x01\x02\x01\x01\x01\xEE\x01\xED\x01\xBD\x01\xBA\xFF\xFF" + , "\x11\x01\x43\x01\x03\x01\x30\x01\x03\x01\x02\x01\x01\x01\x39\x01\x6D\x01\x29\x01\x18\x01\x34\xFF\xFF" + , "\x11\x01\x2D\x01\x39\x01\x02\x01\x01\x01\x8F\x02\x27\xFF\xFF" + , "\x11\x01\x51\x01\x1F\x01\x17\x01\x01\x02\x26\x02\x25\xFF\xFF" + , "\x11\x01\x23\x01\x1F\x01\x17\x01\x02\x01\x21\x01\x26\x01\x18\xFF\xFF" + , "\x11\x01\x3F\x01\x3D\x01\x03\x01\x1F\x01\x06\x01\x54\x01\x17\x01\x55\x01\x2C\x01\x2E\xFF\xFF" + , "\x11\x01\x6A\x01\x35\x01\x36\x01\x1F\x02\x1C\x02\x1B\xFF\xFF" + , "\x11\x02\x1A\x01\x01\x01\x6E\xFF\xFF" + , "\x11\x01\x23\x01\x1F\x01\x17\x01\x02\x01\x21\x01\x26\x01\x18\x02\x20\x02\x1F\x02\x1E\x01\x01\x02\x1D\x01\x97\xFF\xFF" + , "\x11\x01\xCF\x02\x24\xFF\xFF" // TR2 levels - , "\x01\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" - , "\x01\x02\x21\x02\x22\x01\x01\x02\x12\x01\x97\xFF\xFF" - , "\x01\x01\x6D\x01\xAB\x01\x18\xFF\xFF" - , "\x01\x01\x45\x01\x22\x01\x1F\x01\x03\x01\x29\x01\x01\x02\x0F\x01\x27\x01\x4C\xFF\xFF" - , "\x01\x01\x39\x01\x91\x01\x17\x01\xE8\x01\x63\x01\x18\xFF\xFF" - , "\x01\x01\xE7\x01\x31\x02\x0E\x02\x19\xFF\xFF" - , "\x01\x01\xC1\x01\x66\x01\x9B\xFF\xFF" - , "\x01\x01\xE7\x01\xAD\xFF\xFF" - , "\x01\x01\x50\x01\x29\x01\x23\x02\x14\x01\x01\x01\x87\x02\x15\xFF\xFF" - , "\x01\x02\x38\x01\xAD\xFF\xFF" - , "\x01\x01\x58\x01\x2C\x01\x20\xFF\xFF" - , "\x01\x01\x5B\x01\x6D\x01\x2C\x01\x1F\x01\x01\x02\x2F\x02\x29\xFF\xFF" - , "\x01\x01\x45\x01\x03\x01\x43\x01\x02\x01\x3F\x01\x6E\x01\x95\xFF\xFF" - , "\x01\x01\x13\x01\x29\x01\x39\x01\x02\x01\x01\x01\x8B\xFF\xFF" - , "\x01\x02\x34\x01\x01\x01\x97\xFF\xFF" - , "\x01\x02\x31\x01\xFA\x01\x01\x01\x6E\xFF\xFF" - , "\x01\x01\xF1\x02\x07\xFF\xFF" - , "\x01\x01\x2E\x01\x17\x01\x88\x01\x02\x01\x01\x01\xCF\xFF\xFF" - , "\x01\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" + , "\x11\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" + , "\x11\x02\x21\x02\x22\x01\x01\x02\x12\x01\x97\xFF\xFF" + , "\x11\x01\x6D\x01\xAB\x01\x18\xFF\xFF" + , "\x11\x01\x45\x01\x22\x01\x1F\x01\x03\x01\x29\x01\x01\x02\x0F\x01\x27\x01\x4C\xFF\xFF" + , "\x11\x01\x39\x01\x91\x01\x17\x01\xE8\x01\x63\x01\x18\xFF\xFF" + , "\x11\x01\xE7\x01\x31\x02\x0E\x02\x19\xFF\xFF" + , "\x11\x01\xC1\x01\x66\x01\x9B\xFF\xFF" + , "\x11\x01\xE7\x01\xAD\xFF\xFF" + , "\x11\x01\x50\x01\x29\x01\x23\x02\x14\x01\x01\x01\x87\x02\x15\xFF\xFF" + , "\x11\x02\x38\x01\xAD\xFF\xFF" + , "\x11\x01\x58\x01\x2C\x01\x20\xFF\xFF" + , "\x11\x01\x5B\x01\x6D\x01\x2C\x01\x1F\x01\x01\x02\x2F\x02\x29\xFF\xFF" + , "\x11\x01\x45\x01\x03\x01\x43\x01\x02\x01\x3F\x01\x6E\x01\x95\xFF\xFF" + , "\x11\x01\x13\x01\x29\x01\x39\x01\x02\x01\x01\x01\x8B\xFF\xFF" + , "\x11\x02\x34\x01\x01\x01\x97\xFF\xFF" + , "\x11\x02\x31\x01\xFA\x01\x01\x01\x6E\xFF\xFF" + , "\x11\x01\xF1\x02\x07\xFF\xFF" + , "\x11\x01\x2E\x01\x17\x01\x88\x01\x02\x01\x01\x01\xCF\xFF\xFF" + , "\x11\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" // TR3 levels - , "\x01\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" - , "\x01\x01\x35\x01\x4E\x01\x02\x01\x3F\x01\x22\xFF\xFF" - , "\x01\x01\xC8\x01\x89\x01\x0E\x01\x6E\x01\x95\xFF\xFF" - , "\x01\x01\x77\x01\x02\x01\x35\x01\x18\x01\xC7\xFF\xFF" - , "\x01\x01\x43\x01\x29\x01\x23\x01\x7B\x01\x03\x01\x4F\xFF\xFF" - , "\x01\x01\x5E\x01\x03\x01\x18\x01\x1F\x01\x65\x01\x3D\x01\x2C\x01\x35\xFF\xFF" - , "\x01\x02\x0B\x01\x9E\x01\xBE\x01\x9B\xFF\xFF" - , "\x01\x01\x50\x01\x58\x01\x4B\x01\x45\x01\x01\x01\xF4\xFF\xFF" - , "\x01\x01\x54\x01\x4B\x01\x51\x01\x6E\x01\x95\xFF\xFF" - , "\x01\x01\x21\x01\x30\x01\x86\x01\xC7\x01\x01\x01\xA1\x01\x0F\x01\x3A\xFF\xFF" - , "\x01\x01\x23\x01\x02\x01\x5A\x01\x03\x01\x3F\x01\x17\x01\x63\x01\x02\x01\x2E\xFF\xFF" - , "\x01\x01\x22\x01\x2C\x01\x2E\x01\x01\x02\x03\xFF\xFF" - , "\x01\x01\x2D\x01\x21\x01\x26\xFF\xFF" - , "\x01\x01\xDB\x01\x45\x01\x5A\x02\x09\x02\x05\xFF\xFF" - , "\x01\x01\xE8\x01\x3B\x01\x5C\x01\x20\x01\x4B\x01\x29\x01\x21\x01\x26\x01\x6A\x01\x29\x01\x23\xFF\xFF" - , "\x01\x01\x6A\x01\x29\x01\x23\xFF\xFF""51" - , "\x01\x01\xF2\x01\xF0\x01\x53\x01\x81\xFF\xFF" - , "RX-TECH\x01\x01\xF5\x02\x01\x02\x02\x01\x9B\xFF\xFF" - , "\x01\x01\xC8\x01\x89\x01\x0E\x01\x21\x01\x26\x01\xF3\x01\x18\xFF\xFF" - , "\x01\x01\x34\x01\x3D\x01\x03\x01\x13\x01\x03\xFF\xFF" - , "\x01\x01\x5C\x01\x3B\x01\x02\x01\x1F\x01\x58\x01\x3B\xFF\xFF" + , "\x11\x01\x17\x01\x17\x01\x01\x01\x4C\xFF\xFF" + , "\x11\x01\x35\x01\x4E\x01\x02\x01\x3F\x01\x22\xFF\xFF" + , "\x11\x01\xC8\x01\x89\x01\x0E\x01\x6E\x01\x95\xFF\xFF" + , "\x11\x01\x77\x01\x02\x01\x35\x01\x18\x01\xC7\xFF\xFF" + , "\x11\x01\x43\x01\x29\x01\x23\x01\x7B\x01\x03\x01\x4F\xFF\xFF" + , "\x11\x01\x5E\x01\x03\x01\x18\x01\x1F\x01\x65\x01\x3D\x01\x2C\x01\x35\xFF\xFF" + , "\x11\x02\x0B\x01\x9E\x01\xBE\x01\x9B\xFF\xFF" + , "\x11\x01\x50\x01\x58\x01\x4B\x01\x45\x01\x01\x01\xF4\xFF\xFF" + , "\x11\x01\x54\x01\x4B\x01\x51\x01\x6E\x01\x95\xFF\xFF" + , "\x11\x01\x21\x01\x30\x01\x86\x01\xC7\x01\x01\x01\xA1\x01\x0F\x01\x3A\xFF\xFF" + , "\x11\x01\x23\x01\x02\x01\x5A\x01\x03\x01\x3F\x01\x17\x01\x63\x01\x02\x01\x2E\xFF\xFF" + , "\x11\x01\x22\x01\x2C\x01\x2E\x01\x01\x02\x03\xFF\xFF" + , "\x11\x01\x2D\x01\x21\x01\x26\xFF\xFF" + , "\x11\x01\xDB\x01\x45\x01\x5A\x02\x09\x02\x05\xFF\xFF" + , "\x11\x01\xE8\x01\x3B\x01\x5C\x01\x20\x01\x4B\x01\x29\x01\x21\x01\x26\x01\x6A\x01\x29\x01\x23\xFF\xFF" + , "\x11\x01\x6A\x01\x29\x01\x23\xFF\xFF""51" + , "\x11\x01\xF2\x01\xF0\x01\x53\x01\x81\xFF\xFF" + , "RX-TECH\x11\x01\xF5\x02\x01\x02\x02\x01\x9B\xFF\xFF" + , "\x11\x01\xC8\x01\x89\x01\x0E\x01\x21\x01\x26\x01\xF3\x01\x18\xFF\xFF" + , "\x11\x01\x34\x01\x3D\x01\x03\x01\x13\x01\x03\xFF\xFF" + , "\x11\x01\x5C\x01\x3B\x01\x02\x01\x1F\x01\x58\x01\x3B\xFF\xFF" }; #endif diff --git a/src/level.h b/src/level.h index e793c66..608ff1b 100644 --- a/src/level.h +++ b/src/level.h @@ -34,6 +34,7 @@ struct Level : IGame { TR::Level level; Texture *atlas; + Texture *glyphs; MeshBuilder *mesh; Lara *players[2], *player; @@ -419,10 +420,6 @@ struct Level : IGame { return mesh; } - virtual Texture* getAtlas() { - return atlas; - } - virtual ICamera* getCamera(int index = -1) { if (index == -1) return camera; @@ -949,6 +946,7 @@ struct Level : IGame { delete zoneCache; delete atlas; + delete glyphs; delete mesh; Sound::stopAll(); @@ -1202,8 +1200,8 @@ struct Level : IGame { return 0; } - static void fillCallback(int id, int tileX, int tileY, int atlasWidth, int atlasHeight, Atlas::Tile &tile, void *userData, void *data) { - static const uint32 barColor[UI::BAR_MAX][25] = { + static void fillCallback(Atlas *atlas, int id, int tileX, int tileY, int atlasWidth, int atlasHeight, Atlas::Tile &tile, void *userData, void *data) { + static const uint32 CommonTexData[CTEX_MAX][25] = { // flash bar { 0x00000000, 0xFFA20058, 0xFFFFFFFF, 0xFFA20058, 0x00000000 }, // health bar @@ -1216,7 +1214,9 @@ struct Level : IGame { 0x00000000, 0x80808080, 0x80808080, 0x80808080, 0x00000000, 0x00000000, 0x60606060, 0x60606060, 0x60606060, 0x00000000, 0x00000000, 0x20202020, 0x20202020, 0x20202020, 0x00000000 }, - // white bar (white tile) + // white tile + { 0xFFFFFFFF }, + // white sprite { 0xFFFFFFFF }, }; @@ -1272,16 +1272,17 @@ struct Level : IGame { uvCount = 4; switch (id) { - case UI::BAR_FLASH : - case UI::BAR_HEALTH : - case UI::BAR_OXYGEN : - case UI::BAR_OPTION : - case UI::BAR_WHITE : - src = (Color32*)&barColor[id][0]; - tex = &barTile[id]; - if (id != UI::BAR_WHITE) { + case CTEX_FLASH : + case CTEX_HEALTH : + case CTEX_OXYGEN : + case CTEX_OPTION : + case CTEX_WHITE_TILE : + case CTEX_WHITE_SPRITE : + src = (Color32*)&CommonTexData[id][0]; + tex = &CommonTex[id]; + if (id != CTEX_WHITE_TILE && id != CTEX_WHITE_SPRITE) { mm.w = 4; // height - 1 - if (id == UI::BAR_OPTION) { + if (id == CTEX_OPTION) { stride = 5; mm.z = 4; } @@ -1305,25 +1306,25 @@ struct Level : IGame { int w = mm.z - mm.x + 1; int h = mm.w - mm.y + 1; dst += tileY * atlasWidth + tileX; - for (int y = -ATLAS_BORDER; y < h + ATLAS_BORDER; y++) { - for (int x = -ATLAS_BORDER; x < w + ATLAS_BORDER; x++) { + for (int y = -atlas->border.y; y < h + atlas->border.w; y++) { + for (int x = -atlas->border.x; x < w + atlas->border.z; x++) { Color32 *p = &src[mm.y * stride + mm.x]; - ASSERT((x + ATLAS_BORDER + tileX) >= 0 && (x + ATLAS_BORDER + tileX) < atlasWidth); - ASSERT((y + ATLAS_BORDER + tileY) >= 0 && (y + ATLAS_BORDER + tileY) < atlasHeight); + ASSERT((x + atlas->border.x + tileX) >= 0 && (x + atlas->border.x + tileX) < atlasWidth); + ASSERT((y + atlas->border.y + tileY) >= 0 && (y + atlas->border.y + tileY) < atlasHeight); p += clamp(x, 0, w - 1); p += clamp(y, 0, h - 1) * stride; if (isSprite && (y < 0 || y >= h || x < 0 || x >= w)) { - dst[x + ATLAS_BORDER] = Color32(0, 0, 0, 0); + dst[x + atlas->border.x] = Color32(0, 0, 0, 0); } else { - dst[x + ATLAS_BORDER] = *p; + dst[x + atlas->border.x] = *p; } } dst += atlasWidth; } - cx += tileX + ATLAS_BORDER; - cy += tileY + ATLAS_BORDER; + cx += tileX + atlas->border.x; + cy += tileY + atlas->border.y; } for (int i = 0; i < uvCount; i++) { @@ -1452,7 +1453,8 @@ struct Level : IGame { } // repack texture tiles - Atlas *tiles = new Atlas(level.objectTexturesCount + level.spriteTexturesCount + UI::BAR_MAX, this, fillCallback); + Atlas *tAtlas = new Atlas(level.objectTexturesCount + level.spriteTexturesCount + CTEX_MAX, short4(8, 8, 8, 8), this, fillCallback); + Atlas *gAtlas = new Atlas(level.spriteTexturesCount + CTEX_MAX, short4(0, 0, 1, 1), this, fillCallback); // add textures for (int i = 0; i < level.objectTexturesCount; i++) { TR::TextureInfo &t = level.objectTextures[i]; @@ -1464,7 +1466,7 @@ struct Level : IGame { uv.z = max(max(t.texCoord[0].x, t.texCoord[1].x), t.texCoord[2].x) + 1; uv.w = max(max(t.texCoord[0].y, t.texCoord[1].y), t.texCoord[2].y) + 1; - tiles->add(i, uv, &t); + tAtlas->add(i, uv, &t); } // add sprites for (int i = 0; i < level.spriteTexturesCount; i++) { @@ -1484,19 +1486,30 @@ struct Level : IGame { uv.w += offset; } - tiles->add(level.objectTexturesCount + i, uv, &t); + if (level.extra.glyphs != -1) { + TR::SpriteSequence &seq = level.spriteSequences[level.extra.glyphs]; + if ((i >= seq.sStart && i < seq.sStart + seq.sCount) || i >= UI::advGlyphsStart) { + gAtlas->add(level.objectTexturesCount + i, uv, &t); + continue; + } + } + tAtlas->add(level.objectTexturesCount + i, uv, &t); } // add common textures - const short2 bar[UI::BAR_MAX] = { short2(0, 4), short2(0, 4), short2(0, 4), short2(4, 4), short2(0, 0) }; - for (int i = 0; i < UI::BAR_MAX; i++) { - barTile[i].type = TR::TEX_TYPE_SPRITE; - tiles->add(level.objectTexturesCount + level.spriteTexturesCount + i, short4(i * 32, ATLAS_PAGE_BARS, i * 32 + bar[i].x, ATLAS_PAGE_BARS + bar[i].y), &barTile[i]); + const short2 CommonTexOffset[] = { short2(0, 4), short2(0, 4), short2(0, 4), short2(4, 4), short2(0, 0), short2(0, 0) }; + ASSERT(COUNT(CommonTexOffset) == CTEX_MAX); + for (int i = 0; i < CTEX_MAX; i++) { + CommonTex[i].type = TR::TEX_TYPE_SPRITE; + Atlas *dst = (i == CTEX_FLASH || i == CTEX_WHITE_TILE) ? tAtlas : gAtlas; + dst->add(level.objectTexturesCount + level.spriteTexturesCount + i, short4(i * 32, ATLAS_PAGE_BARS, i * 32 + CommonTexOffset[i].x, ATLAS_PAGE_BARS + CommonTexOffset[i].y), &CommonTex[i]); } // get result texture tileData = new TR::Tile32(); - atlas = tiles->pack(); + atlas = tAtlas->pack(true); + glyphs = gAtlas->pack(false); + delete[] tileData; tileData = NULL; @@ -1506,11 +1519,15 @@ struct Level : IGame { glyphsJap = NULL; atlas->setFilterQuality(Core::settings.detail.filter); + glyphs->setFilterQuality(Core::settings.detail.filter); - delete tiles; + delete tAtlas; + delete gAtlas; - LOG("atlas: %d x %d\n", atlas->width, atlas->height); + LOG("atlas : %d x %d\n", atlas->width, atlas->height); + LOG("glyphs : %d x %d\n", glyphs->width, glyphs->height); PROFILE_LABEL(TEXTURE, atlas->ID, "atlas"); + PROFILE_LABEL(TEXTURE, glyphs->ID, "glyphs"); #else ASSERT(level.tilesCount); @@ -2949,8 +2966,11 @@ struct Level : IGame { UI::begin(); UI::updateAspect(camera->aspect); + atlas->bind(sDiffuse); UI::renderPickups(); + glyphs->bind(sDiffuse); + Core::resetLights(); if (!level.isCutsceneLevel()) { @@ -2974,12 +2994,12 @@ struct Level : IGame { pos = vec2(UI::width - 32 - size.x - eye, 32); if (!player->dozy && (player->stand == Lara::STAND_ONWATER || player->stand == Character::STAND_UNDERWATER)) { - UI::renderBar(UI::BAR_OXYGEN, pos, size, oxygen); + UI::renderBar(CTEX_OXYGEN, pos, size, oxygen); pos.y += 16.0f; } if ((!inventory->active && ((player->wpnReady() && !player->emptyHands()) || player->damageTime > 0.0f || health <= 0.2f))) { - UI::renderBar(UI::BAR_HEALTH, pos, size, health); + UI::renderBar(CTEX_HEALTH, pos, size, health); pos.y += 32.0f; if (!inventory->active && !player->emptyHands()) { // ammo @@ -3018,6 +3038,7 @@ struct Level : IGame { UI::begin(); UI::updateAspect(aspect); + glyphs->bind(sDiffuse); inventory->renderUI(); UI::end(); } @@ -3055,7 +3076,7 @@ struct Level : IGame { Core::setTarget(NULL, NULL, RT_CLEAR_COLOR | RT_STORE_COLOR); UI::begin(); UI::updateAspect(float(Core::width) / float(Core::height)); - UI::textOut(vec2(0, 480 - 16), STR_LOADING, UI::aCenter, UI::width); + glyphs->bind(sDiffuse); UI::textOut(vec2(0, 480 - 16), STR_LOADING, UI::aCenter, UI::width); UI::end(); return; } diff --git a/src/mesh.h b/src/mesh.h index 9405c60..4c669b2 100644 --- a/src/mesh.h +++ b/src/mesh.h @@ -4,8 +4,19 @@ #include "core.h" #include "format.h" -TR::TextureInfo barTile[5 /* UI::BAR_MAX */]; -TR::TextureInfo &whiteTile = barTile[4]; // BAR_WHITE +enum CommonTexType { + CTEX_FLASH, + CTEX_HEALTH, + CTEX_OXYGEN, + CTEX_OPTION, + CTEX_WHITE_TILE, + CTEX_WHITE_SPRITE, + CTEX_MAX, +}; + +TR::TextureInfo CommonTex[CTEX_MAX]; +TR::TextureInfo &whiteTile = CommonTex[CTEX_WHITE_TILE]; +TR::TextureInfo &whiteSprite = CommonTex[CTEX_WHITE_SPRITE]; #define PLANE_DETAIL 48 #define CIRCLE_SEGS 16 @@ -485,7 +496,7 @@ struct MeshBuilder { quad.iStart = iCount; quad.iCount = 2 * 3; - addQuad(indices, iCount, vCount, vStartCommon, vertices, &whiteTile, false, false); + addQuad(indices, iCount, vCount, vStartCommon, vertices, &whiteSprite, false, false); vertices[vCount + 0].coord = short4( -32767, 32767, 0, 1 ); vertices[vCount + 1].coord = short4( 32767, 32767, 1, 1 ); vertices[vCount + 2].coord = short4( 32767, -32767, 1, 0 ); @@ -517,7 +528,7 @@ struct MeshBuilder { pos.rotate(cs); v.coord = short4( short(pos.x), short(pos.y), 0, 0 ); v.normal = short4( 0, 0, 0, 32767 ); - v.texCoord = short4( whiteTile.texCoordAtlas[0].x, whiteTile.texCoordAtlas[0].y, 32767, 32767 ); + v.texCoord = short4( whiteSprite.texCoordAtlas[0].x, whiteSprite.texCoordAtlas[0].y, 32767, 32767 ); v.color = ubyte4( 255, 255, 255, 255 ); v.light = ubyte4( 255, 255, 255, 255 ); @@ -1263,7 +1274,7 @@ struct MeshBuilder { int &iCount = dynICount; int &vCount = dynVCount; - short4 uv = short4( whiteTile.texCoordAtlas[0].x, whiteTile.texCoordAtlas[0].y, 32767, 32767 ); + short4 uv = short4( whiteSprite.texCoordAtlas[0].x, whiteSprite.texCoordAtlas[0].y, 32767, 32767 ); int16 minX = int16(pos.x); int16 minY = int16(pos.y); diff --git a/src/texture.h b/src/texture.h index 0af9109..4b42c17 100644 --- a/src/texture.h +++ b/src/texture.h @@ -709,7 +709,6 @@ struct Texture : GAPI::Texture { } }; -#define ATLAS_BORDER 8 struct Atlas { struct Tile { @@ -718,7 +717,7 @@ struct Atlas { short4 uv; } *tiles; - typedef void (Callback)(int id, int tileX, int tileY, int atalsWidth, int atlasHeight, Tile &tile, void *userData, void *data); + typedef void (Callback)(Atlas *atlas, int id, int tileX, int tileY, int atalsWidth, int atlasHeight, Tile &tile, void *userData, void *data); struct Node { Node *child[2]; @@ -734,21 +733,21 @@ struct Atlas { delete child[1]; } - Node* insert(const short4 &tile, int tileIndex) { + Node* insert(Atlas *atlas, const short4 &tile, int tileIndex) { ASSERT(tile.x != 0x7FFF); if (child[0] != NULL && child[1] != NULL) { - Node *node = child[0]->insert(tile, tileIndex); + Node *node = child[0]->insert(atlas, tile, tileIndex); if (node != NULL) return node; - return child[1]->insert(tile, tileIndex); + return child[1]->insert(atlas, tile, tileIndex); } else { if (this->tileIndex != -1) return NULL; int16 w = rect.z - rect.x; int16 h = rect.w - rect.y; - int16 tx = (tile.z - tile.x) + ATLAS_BORDER * 2; - int16 ty = (tile.w - tile.y) + ATLAS_BORDER * 2; + int16 tx = (tile.z - tile.x) + atlas->border.x + atlas->border.z; + int16 ty = (tile.w - tile.y) + atlas->border.y + atlas->border.w; if (w < tx || h < ty) return NULL; @@ -769,7 +768,7 @@ struct Atlas { child[1] = new Node(rect.x, rect.y + ty, rect.z, rect.w); } - return child[0]->insert(tile, tileIndex); + return child[0]->insert(atlas, tile, tileIndex); } } } *root; @@ -777,10 +776,11 @@ struct Atlas { int tilesCount; int size; int width, height; + short4 border; void *userData; Callback *callback; - Atlas(int maxTiles, void *userData, Callback *callback) : root(NULL), tilesCount(0), size(0), userData(userData), callback(callback) { + Atlas(int maxTiles, short4 border, void *userData, Callback *callback) : root(NULL), tilesCount(0), size(0), border(border), userData(userData), callback(callback) { tiles = new Tile[maxTiles]; } @@ -804,19 +804,19 @@ struct Atlas { tilesCount++; if (uv.x != 0x7FFF) - size += (uv.z - uv.x + ATLAS_BORDER * 2) * (uv.w - uv.y + ATLAS_BORDER * 2); + size += (uv.z - uv.x + border.x + border.z) * (uv.w - uv.y + border.y + border.w); } bool insertAll(int *indices) { for (int i = 0; i < tilesCount; i++) { int idx = indices[i]; - if (tiles[idx].uv.x != 0x7FFF && !root->insert(tiles[idx].uv, idx)) + if (tiles[idx].uv.x != 0x7FFF && !root->insert(this, tiles[idx].uv, idx)) return false; } return true; } - Texture* pack() { + Texture* pack(bool mipmaps) { // TODO TR2 fix CUT2 AV // width = 4096;//nextPow2(int(sqrtf(float(size)))); // height = 2048;//(width * width / 2 > size) ? (width / 2) : width; @@ -835,7 +835,7 @@ struct Atlas { short4 &a = tiles[indices[i - 1]].uv; short4 &b = tiles[indices[i]].uv; //if ((a.z - a.x + ATLAS_BORDER * 2) * (a.w - a.y + ATLAS_BORDER * 2) < (b.z - b.x + ATLAS_BORDER * 2) * (b.w - b.y + ATLAS_BORDER * 2)) { - if ((a.z - a.x + ATLAS_BORDER * 2) < (b.z - b.x + ATLAS_BORDER * 2)) { + if ((a.z - a.x) < (b.z - b.x)) { swap(indices[i - 1], indices[i]); swapped = true; } @@ -863,7 +863,7 @@ struct Atlas { fill(root, data); fillInstances(); - Texture *atlas = new Texture(width, height, 1, FMT_RGBA, OPT_MIPMAPS, data); + Texture *atlas = new Texture(width, height, 1, FMT_RGBA, mipmaps ? OPT_MIPMAPS : 0, data); //Texture::SaveBMP("atlas", (char*)data, width, height); @@ -878,13 +878,13 @@ struct Atlas { fill(node->child[0], data); fill(node->child[1], data); } else - callback(tiles[node->tileIndex].id, node->rect.x, node->rect.y, width, height, tiles[node->tileIndex], userData, data); + callback(this, tiles[node->tileIndex].id, node->rect.x, node->rect.y, width, height, tiles[node->tileIndex], userData, data); } void fillInstances() { for (int i = 0; i < tilesCount; i++) if (tiles[i].uv.x == 0x7FFF) - callback(tiles[i].id, tiles[i].uv.y, 0, width, height, tiles[i], userData, NULL); + callback(this, tiles[i].id, tiles[i].uv.y, 0, width, height, tiles[i], userData, NULL); } }; diff --git a/src/trigger.h b/src/trigger.h index f20aa44..e7436d0 100644 --- a/src/trigger.h +++ b/src/trigger.h @@ -1205,9 +1205,10 @@ struct Lightning : Controller { } void setVertex(Vertex &v, const vec3 &coord, int16 joint, int idx) { + TR::TextureInfo &tex = CommonTex[CTEX_FLASH]; v.coord = toCoord(coord, joint); v.normal = short4( 0, -1, 0, 0 ); - v.texCoord = short4( barTile[0].texCoordAtlas[idx].x, barTile[0].texCoordAtlas[idx].y, 32767, 32767 ); + v.texCoord = short4( tex.texCoordAtlas[idx].x, tex.texCoordAtlas[idx].y, 32767, 32767 ); v.color = ubyte4( 255, 255, 255, 255 ); } diff --git a/src/ui.h b/src/ui.h index 7095798..0c68ed4 100644 --- a/src/ui.h +++ b/src/ui.h @@ -202,15 +202,6 @@ namespace UI { return short2(w, h); } - enum BarType { - BAR_FLASH, - BAR_HEALTH, - BAR_OXYGEN, - BAR_OPTION, - BAR_WHITE, - BAR_MAX, - }; - #ifdef SPLIT_BY_TILE uint16 curTile, curClut; #endif @@ -605,15 +596,15 @@ namespace UI { Core::setDepthTest(true); } - void renderBar(BarType type, const vec2 &pos, const vec2 &size, float value, uint32 fgColor = 0xFFFFFFFF, uint32 bgColor = 0x80000000, uint32 brColor1 = 0xFF4C504C, uint32 brColor2 = 0xFF748474, uint32 fgColor2 = 0) { + void renderBar(CommonTexType type, const vec2 &pos, const vec2 &size, float value, uint32 fgColor = 0xFFFFFFFF, uint32 bgColor = 0x80000000, uint32 brColor1 = 0xFF4C504C, uint32 brColor2 = 0xFF748474, uint32 fgColor2 = 0) { MeshBuilder *mesh = game->getMesh(); if (brColor1 != 0 || brColor2 != 0) mesh->addDynFrame(pos - 2.0f, size + 4.0f, brColor1, brColor2); if (bgColor != 0) - mesh->addDynBar(whiteTile, pos - 1.0f, size + 2.0f, bgColor); + mesh->addDynBar(whiteSprite, pos - 1.0f, size + 2.0f, bgColor); if ((fgColor != 0 || fgColor2 != 0) && value > 0.0f) - mesh->addDynBar(barTile[type], pos, vec2(size.x * value, size.y), fgColor, fgColor2); + mesh->addDynBar(CommonTex[type], pos, vec2(size.x * value, size.y), fgColor, fgColor2); } void renderHelp() {