diff options
Diffstat (limited to 'engines/tony')
-rw-r--r-- | engines/tony/font.cpp | 1426 | ||||
-rw-r--r-- | engines/tony/tony.cpp | 92 | ||||
-rw-r--r-- | engines/tony/tony.h | 12 |
3 files changed, 113 insertions, 1417 deletions
diff --git a/engines/tony/font.cpp b/engines/tony/font.cpp index a3d253a52c..55e3b7627a 100644 --- a/engines/tony/font.cpp +++ b/engines/tony/font.cpp @@ -222,387 +222,10 @@ void RMFontDialog::init() { _lDefault = 13; _hDefault = 18; Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); - for (i = 0; i < 256; i++) { - _cTable[i] = -1; - _lTable[i] = _lDefault; - } - for (i = 0; i < 26; i++) - _cTable['A' + i] = i + 0; - - for (i = 0; i < 26; i++) - _cTable['a' + i] = i + 26; - - for (i = 0; i < 10; i++) - _cTable['0' + i] = i + 52; - - _cTable[';'] = 62; - _cTable[','] = 63; - _cTable['.'] = 64; - _cTable[':'] = 65; - _cTable['-'] = 66; - _cTable['_'] = 67; - _cTable['+'] = 68; - _cTable['<'] = 69; - _cTable['>'] = 70; - _cTable['!'] = 71; - //_cTable['!'] = 72; Exclamation countdown - _cTable['?'] = 73; - //_cTable['?'] = 74; Question down - _cTable['('] = 75; - _cTable[')'] = 76; - _cTable['\"'] = 77; - _cTable['^'] = 77; - _cTable['/'] = 78; - _cTable[(byte)''] = 79; - _cTable['$'] = 80; - _cTable['%'] = 81; - _cTable['&'] = 82; - _cTable['='] = 83; - _cTable[(byte)''] = 84; - _cTable[(byte)''] = 85; - _cTable[(byte)''] = 86; - _cTable[(byte)''] = 87; - _cTable[(byte)''] = 88; - _cTable[(byte)''] = 89; - _cTable[(byte)''] = 89; - _cTable[(byte)''] = 90; - _cTable[(byte)''] = 91; - _cTable[(byte)''] = 92; - _cTable[(byte)''] = 93; - _cTable[(byte)''] = 94; - _cTable[(byte)''] = 95; - _cTable[(byte)''] = 96; - _cTable[(byte)''] = 97; - _cTable[(byte)''] = 98; - _cTable[(byte)''] = 99; - //_cTable[' '] = 100; e circlet - //_cTable[' '] = 101; i circlet - //_cTable[' '] = 102; o circlet - //_cTable[' '] = 103; u circlet - _cTable[(byte)''] = 104; - _cTable[(byte)''] = 105; - _cTable[(byte)''] = 106; - _cTable[(byte)''] = 107; - _cTable[(byte)''] = 108; - _cTable[(byte)''] = 109; - //_cTable[''] = 110; integral - _cTable['\''] = 111; - - // Little lengths - _lTable[' '] = 9; - _lTable['\''] = 5; - _lTable['.'] = 5; - _lTable[','] = 5; - _lTable[':'] = 5; - _lTable[';'] = 5; - _lTable['!'] = 5; - _lTable['?'] = 10; - _lTable['\"'] = 5; - _lTable['^'] = 5; - _lTable['('] = 7; - _lTable[')'] = 7; - - _lTable['4'] = 10; - - _lTable['a'] = 14; - _lTable['b'] = 15; - _lTable['c'] = 12; - _lTable['e'] = 12; - _lTable['i'] = 6; - _lTable[''] = 6; - _lTable['l'] = 5; - _lTable['m'] = 16; - _lTable['n'] = 12; - _lTable['o'] = 11; - _lTable['p'] = 11; - _lTable['s'] = 12; - _lTable['u'] = 12; - - _lTable['E'] = 10; - _lTable['F'] = 11; - - if (g_vm->getLanguage() == Common::PL_POL) { - // Polish characters - //AaCcEeLlNnOoSsZzZz - //ꣳ - - _cTable[(byte)''] = 112; - _cTable[(byte)''] = 113; - _cTable[(byte)''] = 114; - _cTable[(byte)''] = 115; - _cTable[(byte)''] = 116; - _cTable[(byte)''] = 117; - _cTable[(byte)''] = 118; - _cTable[(byte)''] = 119; - _cTable[(byte)''] = 120; - _cTable[(byte)''] = 121; - _cTable[(byte)''] = 122; - _cTable[(byte)''] = 123; - _cTable[(byte)''] = 124; - _cTable[(byte)''] = 125; - _cTable[(byte)''] = 126; - _cTable[(byte)''] = 127; - _cTable[(byte)''] = 128; - _cTable[(byte)''] = 129; - - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 13; - - } else if (g_vm->getLanguage() == Common::RU_RUS) { - - // Russian Characters - // WARNING: The Russian font uses many of the ISO-Latin-1 font, - // allowing for further translations. To support Tonyin other langauges, - // these mappings could be used as a basis - - _cTable[(byte)''] = 130; - _cTable[(byte)''] = 131; - _cTable[(byte)''] = 132; - _cTable[(byte)''] = 133; - _cTable[(byte)''] = 134; - _cTable[(byte)''] = 135; - _cTable[(byte)''] = 136; - _cTable[(byte)''] = 137; - _cTable[(byte)''] = 138; - _cTable[(byte)''] = 139; - _cTable[(byte)''] = 140; - _cTable[(byte)''] = 141; - _cTable[(byte)''] = 142; - _cTable[(byte)''] = 143; - _cTable[(byte)''] = 144; - _cTable[(byte)''] = 145; - _cTable[(byte)''] = 146; - _cTable[(byte)''] = 147; - _cTable[(byte)''] = 148; - _cTable[(byte)''] = 149; - _cTable[(byte)''] = 150; - _cTable[(byte)''] = 151; - _cTable[(byte)''] = 152; - _cTable[(byte)''] = 153; - _cTable[(byte)''] = 154; - _cTable[(byte)''] = 155; - _cTable[(byte)''] = 156; - _cTable[(byte)''] = 157; - _cTable[(byte)''] = 158; - _cTable[(byte)''] = 159; - _cTable[(byte)''] = 160; - _cTable[(byte)''] = 161; - _cTable[(byte)''] = 162; - - _cTable[(byte)''] = 163; - _cTable[(byte)''] = 164; - _cTable[(byte)''] = 165; - _cTable[(byte)''] = 166; - _cTable[(byte)''] = 167; - _cTable[(byte)''] = 168; - _cTable[(byte)''] = 169; - _cTable[(byte)''] = 170; - _cTable[(byte)''] = 171; - _cTable[(byte)''] = 172; - _cTable[(byte)''] = 173; - _cTable[(byte)''] = 174; - _cTable[(byte)''] = 175; - _cTable[(byte)''] = 176; - _cTable[(byte)''] = 177; - _cTable[(byte)''] = 178; - _cTable[(byte)''] = 179; - _cTable[(byte)''] = 180; - _cTable[(byte)''] = 181; - _cTable[(byte)''] = 182; - _cTable[(byte)''] = 183; - _cTable[(byte)''] = 184; - _cTable[(byte)''] = 185; - _cTable[(byte)''] = 186; - _cTable[(byte)''] = 187; - _cTable[(byte)''] = 188; - _cTable[(byte)''] = 189; - _cTable[(byte)''] = 190; - _cTable[(byte)''] = 191; - _cTable[(byte)''] = 192; - _cTable[(byte)''] = 193; - _cTable[(byte)''] = 194; - _cTable[(byte)''] = 195; - - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 18; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 17; - _lTable[(byte)''] = 18; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 18; - _lTable[(byte)''] = 19; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 14; - - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 8; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 14; - - } else if (g_vm->getLanguage() == Common::CZ_CZE) { - // Czech - _cTable[(byte)''] = 196; - _cTable[(byte)''] = 197; - _cTable[(byte)''] = 198; - _cTable[(byte)''] = 199; - _cTable[(byte)''] = 200; - _cTable[(byte)''] = 201; - _cTable[(byte)''] = 202; - _cTable[(byte)''] = 203; - _cTable[(byte)''] = 204; - _cTable[(byte)''] = 205; - _cTable[(byte)''] = 206; - _cTable[(byte)''] = 207; - _cTable[(byte)''] = 208; - _cTable[(byte)''] = 209; - _cTable[(byte)''] = 210; - - _cTable[(byte)''] = 211; - _cTable[(byte)''] = 212; - _cTable[(byte)''] = 213; - _cTable[(byte)''] = 214; - _cTable[(byte)''] = 215; - _cTable[(byte)''] = 216; - _cTable[(byte)''] = 217; - _cTable[(byte)''] = 218; - _cTable[(byte)''] = 219; - _cTable[(byte)''] = 220; - _cTable[(byte)''] = 221; - _cTable[(byte)''] = 222; - _cTable[(byte)''] = 223; - _cTable[(byte)''] = 224; - _cTable[(byte)''] = 225; - - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 19; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 7; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 17; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - - } else if (g_vm->getLanguage() == Common::FR_FRA) { - // French - - _cTable[(byte)''] = 226; - _cTable[(byte)''] = 227; - _cTable[(byte)''] = 228; - _cTable[(byte)''] = 229; - _cTable[(byte)''] = 230; - _cTable[(byte)''] = 231; - _cTable[(byte)''] = 232; - _cTable[(byte)''] = 233; - - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - - } else if (g_vm->getLanguage() == Common::DE_DEU) { - _cTable[(byte)''] = 234; - // 'SS' = 235 - _cTable[(byte)''] = 236; - _cTable[(byte)''] = 237; - _cTable[(byte)''] = 238; - - _lTable[(byte)''] = 15; + for (i = 0; i < 256; i++) { + _cTable[i] = g_vm->_cTableDialog[i]; + _lTable[i] = g_vm->_lTableDialog[i]; } } @@ -632,342 +255,8 @@ void RMFontMacc::init() { Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); for (i = 0; i < 256; i++) { - _cTable[i] = -1; - _lTable[i] = _lDefault; - } - - for (i = 0; i < 26; i++) - _cTable['A' + i] = i + 0; - - for (i = 0; i < 26; i++) - _cTable['a' + i] = i + 26; - - for (i = 0; i < 10; i++) - _cTable['0' + i] = i + 52; - - _cTable['!'] = 62; - //_cTable['!'] = 63; // ! rovescia - _cTable['\"'] = 64; - _cTable['$'] = 65; - _cTable['%'] = 66; - _cTable['&'] = 67; - _cTable['/'] = 68; - _cTable['('] = 69; - _cTable[')'] = 70; - _cTable['='] = 71; - _cTable['?'] = 72; - //_cTable['?'] = 73; // ? rovescia - _cTable['*'] = 74; - _cTable['+'] = 75; - _cTable[(byte)''] = 76; - _cTable[';'] = 77; - _cTable[','] = 78; - _cTable['.'] = 79; - _cTable[':'] = 80; - _cTable['-'] = 81; - _cTable['<'] = 82; - _cTable['>'] = 83; - _cTable['/'] = 84; - _cTable[(byte)''] = 85; - _cTable[(byte)''] = 86; - _cTable[(byte)''] = 87; - _cTable[(byte)''] = 88; - _cTable[(byte)''] = 89; - _cTable[(byte)''] = 90; - //_cTable[(byte)''] = 91; // e with ball - _cTable[(byte)''] = 92; - _cTable[(byte)''] = 93; - //_cTable[(byte)''] = 94; // i with ball - _cTable[(byte)''] = 95; - _cTable[(byte)''] = 96; - //_cTable[(byte)''] = 97; // o with ball - _cTable[(byte)''] = 98; - _cTable[(byte)''] = 99; - //_cTable[(byte)''] = 100; // u with ball - _cTable[(byte)''] = 101; - - if (g_vm->getLanguage() == Common::PL_POL) { - // Polish characters - //AaCcEeLlNnOoSsZzZz - //ꣳ - - _cTable[(byte)''] = 102; - _cTable[(byte)''] = 103; - _cTable[(byte)''] = 104; - _cTable[(byte)''] = 105; - _cTable[(byte)''] = 106; - _cTable[(byte)''] = 107; - _cTable[(byte)''] = 108; - _cTable[(byte)''] = 109; - _cTable[(byte)''] = 110; - _cTable[(byte)''] = 111; - _cTable[(byte)''] = 112; - _cTable[(byte)''] = 113; - _cTable[(byte)''] = 114; - _cTable[(byte)''] = 115; - _cTable[(byte)''] = 116; - _cTable[(byte)''] = 117; - _cTable[(byte)''] = 118; - _cTable[(byte)''] = 119; - - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 13; - - } else if (g_vm->getLanguage() == Common::RU_RUS) { - // Russian Characters - // WARNING: The Russian font uses many of the ISO-Latin-1 font, - // allowing for further translations. To support Tonyin other langauges, - // these mappings could be used as a basis - _cTable[(byte)''] = 120; - _cTable[(byte)''] = 121; - _cTable[(byte)''] = 122; - _cTable[(byte)''] = 123; - _cTable[(byte)''] = 124; - _cTable[(byte)''] = 125; - _cTable[(byte)''] = 126; - _cTable[(byte)''] = 127; - _cTable[(byte)''] = 128; - _cTable[(byte)''] = 129; - _cTable[(byte)''] = 130; - _cTable[(byte)''] = 131; - _cTable[(byte)''] = 132; - _cTable[(byte)''] = 133; - _cTable[(byte)''] = 134; - _cTable[(byte)''] = 135; - _cTable[(byte)''] = 136; - _cTable[(byte)''] = 137; - _cTable[(byte)''] = 138; - _cTable[(byte)''] = 139; - _cTable[(byte)''] = 140; - _cTable[(byte)''] = 141; - _cTable[(byte)''] = 142; - _cTable[(byte)''] = 143; - _cTable[(byte)''] = 144; - _cTable[(byte)''] = 145; - _cTable[(byte)''] = 146; - _cTable[(byte)''] = 147; - _cTable[(byte)''] = 148; - _cTable[(byte)''] = 149; - _cTable[(byte)''] = 150; - _cTable[(byte)''] = 151; - _cTable[(byte)''] = 152; - - _cTable[(byte)''] = 153; - _cTable[(byte)''] = 154; - _cTable[(byte)''] = 155; - _cTable[(byte)''] = 156; - _cTable[(byte)''] = 157; - _cTable[(byte)''] = 158; - _cTable[(byte)''] = 159; - _cTable[(byte)''] = 160; - _cTable[(byte)''] = 161; - _cTable[(byte)''] = 162; - _cTable[(byte)''] = 163; - _cTable[(byte)''] = 164; - _cTable[(byte)''] = 165; - _cTable[(byte)''] = 166; - _cTable[(byte)''] = 167; - _cTable[(byte)''] = 168; - _cTable[(byte)''] = 169; - _cTable[(byte)''] = 170; - _cTable[(byte)''] = 171; - _cTable[(byte)''] = 172; - _cTable[(byte)''] = 173; - _cTable[(byte)''] = 174; - _cTable[(byte)''] = 175; - _cTable[(byte)''] = 176; - _cTable[(byte)''] = 177; - _cTable[(byte)''] = 178; - _cTable[(byte)''] = 179; - _cTable[(byte)''] = 180; - _cTable[(byte)''] = 181; - _cTable[(byte)''] = 182; - _cTable[(byte)''] = 183; - _cTable[(byte)''] = 184; - _cTable[(byte)''] = 185; - - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 8; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - - } else if (g_vm->getLanguage() == Common::CZ_CZE) { - // Czech - - _cTable[(byte)''] = 186; - _cTable[(byte)''] = 187; - _cTable[(byte)''] = 188; - _cTable[(byte)''] = 189; - _cTable[(byte)''] = 190; - _cTable[(byte)''] = 191; - _cTable[(byte)''] = 192; - _cTable[(byte)''] = 193; - _cTable[(byte)''] = 194; - _cTable[(byte)''] = 195; - _cTable[(byte)''] = 196; - _cTable[(byte)''] = 197; - _cTable[(byte)''] = 198; - _cTable[(byte)''] = 199; - _cTable[(byte)''] = 200; - - _cTable[(byte)''] = 201; - _cTable[(byte)''] = 202; - _cTable[(byte)''] = 203; - _cTable[(byte)''] = 204; - _cTable[(byte)''] = 205; - _cTable[(byte)''] = 206; - _cTable[(byte)''] = 207; - _cTable[(byte)''] = 208; - _cTable[(byte)''] = 209; - _cTable[(byte)''] = 210; - _cTable[(byte)''] = 211; - _cTable[(byte)''] = 212; - _cTable[(byte)''] = 213; - _cTable[(byte)''] = 214; - _cTable[(byte)''] = 215; - - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 9; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - - } else if (g_vm->getLanguage() == Common::FR_FRA) { - // French - - _cTable[(byte)''] = 226; - _cTable[(byte)''] = 227; - _cTable[(byte)''] = 228; - _cTable[(byte)''] = 229; - _cTable[(byte)''] = 230; - _cTable[(byte)''] = 231; - _cTable[(byte)''] = 232; - _cTable[(byte)''] = 233; - - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 8; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - - } else if (g_vm->getLanguage() == Common::DE_DEU) { - // German - - _cTable[(byte)''] = 234; - // 'SS' = 235 - _cTable[(byte)''] = 236; - _cTable[(byte)''] = 237; - _cTable[(byte)''] = 238; - - _lTable[(byte)''] = 11; + _cTable[i] = g_vm->_cTableMacc[i]; + _lTable[i] = g_vm->_lTableMacc[i]; } } @@ -996,430 +285,8 @@ void RMFontCredits::init() { Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); for (i = 0; i < 256; i++) { - _cTable[i] = -1; - _lTable[i] = _lDefault; - } - - for (i = 0; i < 26; i++) - _cTable['A' + i] = i + 0; - - for (i = 0; i < 26; i++) - _cTable['a' + i] = i + 26; - - - - _cTable[(byte)''] = 52; - _cTable[(byte)''] = 53; -// _cTable[''] = 54; // a ^ -// _cTable[''] = 55; // a pallini - _cTable[(byte)''] = 56; - _cTable[(byte)''] = 57; -// _cTable[''] = 58; // e ^ -// _cTable[''] = 59; // e pallini - _cTable[(byte)''] = 60; - _cTable[(byte)''] = 61; -// _cTable[''] = 62; // i ^ -// _cTable[''] = 63; // i pallini - _cTable[(byte)''] = 64; - _cTable[(byte)''] = 65; -// _cTable[''] = 66; // o ^ -// _cTable[''] = 67; // o pallini - _cTable[(byte)''] = 68; - _cTable[(byte)''] = 69; -// _cTable[''] = 70; // u ^ -// _cTable[''] = 71; // u pallini -// _cTable[''] = 72; // y pallini - _cTable[(byte)''] = 73; - _cTable[(byte)''] = 74; -// _cTable[''] = 75; // o barrato -// _cTable[''] = 76; // ac - _cTable[(byte)''] = 77; -// _cTable[''] = 78; // ? rovesciato - _cTable['?'] = 79; -// _cTable[''] = 80; // ! rovesciato - _cTable['!'] = 81; -// _cTable[''] = 82; // 1/2 -// _cTable[''] = 83; // 1/4 - _cTable['('] = 84; - _cTable[')'] = 85; - _cTable[(byte)''] = 86; - _cTable[(byte)''] = 87; -// _cTable[''] = 88; // AE - _cTable[':'] = 89; - _cTable['%'] = 90; - _cTable['&'] = 91; - _cTable['/'] = 92; - _cTable['+'] = 93; - _cTable[';'] = 94; - _cTable[','] = 95; - _cTable['^'] = 96; - _cTable['='] = 97; - _cTable['_'] = 98; - _cTable['*'] = 99; - _cTable['.'] = 100; - - for (i = 0; i < 10; i++) - _cTable['0' + i] = i + 101; - _cTable['\''] = 111; - - _lTable[' '] = 11; - _lTable[(byte)''] = _lTable['A'] = 19; - _lTable['B'] = 15; - _lTable['C'] = 14; - _lTable['D'] = 13; - _lTable['E'] = 14; - _lTable['F'] = 13; - _lTable['G'] = 16; - _lTable['H'] = 15; - _lTable['I'] = 5; - _lTable['J'] = 8; - _lTable['K'] = 15; - _lTable['L'] = 13; - _lTable['M'] = 17; - _lTable['N'] = 15; - _lTable[''] = _lTable['O'] = 14; - _lTable['P'] = 12; - _lTable['Q'] = 14; - _lTable['R'] = 14; - _lTable['S'] = 15; - _lTable['T'] = 11; - _lTable[''] = _lTable['U'] = 12; - _lTable['V'] = 12; - _lTable['W'] = 16; - _lTable['X'] = 12; - _lTable['Y'] = 13; - _lTable['Z'] = 14; - - _lTable['a'] = 11; - _lTable['b'] = 9; - _lTable['c'] = 9; - _lTable['d'] = 10; - _lTable['e'] = 9; - _lTable['f'] = 8; - _lTable['g'] = 9; - _lTable['h'] = 10; - _lTable['i'] = 5; - _lTable['j'] = 6; - _lTable['k'] = 12; - _lTable['l'] = 6; - _lTable['m'] = 14; - _lTable['n'] = 10; - _lTable['o'] = 11; - _lTable['p'] = 11; - _lTable['q'] = 9; - _lTable['r'] = 9; - _lTable['s'] = 9; - _lTable['t'] = 6; - _lTable['u'] = 9; - _lTable['v'] = 10; - _lTable['w'] = 14; - _lTable['x'] = 9; - _lTable['y'] = 10; - _lTable['z'] = 9; - - _lTable['0'] = 12; - _lTable['1'] = 8; - _lTable['2'] = 10; - _lTable['3'] = 11; - _lTable['4'] = 12; - _lTable['5'] = 11; - _lTable['6'] = 12; - _lTable['7'] = 10; - _lTable['8'] = 11; - _lTable['9'] = 10; - - _lTable['/'] = 10; - _lTable['^'] = 9; - _lTable[','] = 5; - _lTable['.'] = 5; - _lTable[';'] = 5; - _lTable[':'] = 5; - _lTable['\''] = 5; - - if (g_vm->getLanguage() == Common::PL_POL) { - // Polish characters - //AaCcEeLlNnOoSsZzZz - //ꣳ - - _cTable[(byte)''] = 112; - _cTable[(byte)''] = 113; - _cTable[(byte)''] = 114; - _cTable[(byte)''] = 115; - _cTable[(byte)''] = 116; - _cTable[(byte)''] = 117; - _cTable[(byte)''] = 118; - _cTable[(byte)''] = 119; - _cTable[(byte)''] = 120; - _cTable[(byte)''] = 121; - _cTable[(byte)''] = 122; - _cTable[(byte)''] = 123; - _cTable[(byte)''] = 124; - _cTable[(byte)''] = 125; - _cTable[(byte)''] = 126; - _cTable[(byte)''] = 127; - _cTable[(byte)''] = 128; - _cTable[(byte)''] = 129; - - _lTable[(byte)''] = 20; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - - } else if (g_vm->getLanguage() == Common::RU_RUS) { - // Russian Characters - // WARNING: The Russian font uses many of the ISO-Latin-1 font, - // allowing for further translations. To support Tonyin other langauges, - // these mappings could be used as a basis - _cTable[(byte)''] = 130; - _cTable[(byte)''] = 131; - _cTable[(byte)''] = 132; - _cTable[(byte)''] = 133; - _cTable[(byte)''] = 134; - _cTable[(byte)''] = 135; - _cTable[(byte)''] = 136; - _cTable[(byte)''] = 137; - _cTable[(byte)''] = 138; - _cTable[(byte)''] = 139; - _cTable[(byte)''] = 140; - _cTable[(byte)''] = 141; - _cTable[(byte)''] = 142; - _cTable[(byte)''] = 143; - _cTable[(byte)''] = 144; - _cTable[(byte)''] = 145; - _cTable[(byte)''] = 146; - _cTable[(byte)''] = 147; - _cTable[(byte)''] = 148; - _cTable[(byte)''] = 149; - _cTable[(byte)''] = 150; - _cTable[(byte)''] = 151; - _cTable[(byte)''] = 152; - _cTable[(byte)''] = 153; - _cTable[(byte)''] = 154; - _cTable[(byte)''] = 155; - _cTable[(byte)''] = 156; - _cTable[(byte)''] = 157; - _cTable[(byte)''] = 158; - _cTable[(byte)''] = 159; - _cTable[(byte)''] = 160; - _cTable[(byte)''] = 161; - _cTable[(byte)''] = 162; - - _cTable[(byte)''] = 163; - _cTable[(byte)''] = 164; - _cTable[(byte)''] = 165; - _cTable[(byte)''] = 166; - _cTable[(byte)''] = 167; - _cTable[(byte)''] = 168; - _cTable[(byte)''] = 169; - _cTable[(byte)''] = 170; - _cTable[(byte)''] = 171; - _cTable[(byte)''] = 172; - _cTable[(byte)''] = 173; - _cTable[(byte)''] = 174; - _cTable[(byte)''] = 175; - _cTable[(byte)''] = 176; - _cTable[(byte)''] = 177; - _cTable[(byte)''] = 178; - _cTable[(byte)''] = 179; - _cTable[(byte)''] = 180; - _cTable[(byte)''] = 181; - _cTable[(byte)''] = 182; - _cTable[(byte)''] = 183; - _cTable[(byte)''] = 184; - _cTable[(byte)''] = 185; - _cTable[(byte)''] = 186; - _cTable[(byte)''] = 187; - _cTable[(byte)''] = 188; - _cTable[(byte)''] = 189; - _cTable[(byte)''] = 190; - _cTable[(byte)''] = 191; - _cTable[(byte)''] = 192; - _cTable[(byte)''] = 193; - _cTable[(byte)''] = 194; - _cTable[(byte)''] = 195; - - _lTable[(byte)''] = 20; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 22; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 20; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 22; - _lTable[(byte)''] = 18; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 23; - _lTable[(byte)''] = 23; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 20; - _lTable[(byte)''] = 15; - - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 11; - - } else if (g_vm->getLanguage() == Common::CZ_CZE) { - // CZECH Language - - _cTable[(byte)''] = 196; - _cTable[(byte)''] = 197; - _cTable[(byte)''] = 198; - _cTable[(byte)''] = 199; - _cTable[(byte)''] = 200; - _cTable[(byte)''] = 201; - _cTable[(byte)''] = 202; - _cTable[(byte)''] = 203; - _cTable[(byte)''] = 204; - _cTable[(byte)''] = 205; - _cTable[(byte)''] = 206; - _cTable[(byte)''] = 207; - _cTable[(byte)''] = 208; - _cTable[(byte)''] = 209; - _cTable[(byte)''] = 210; - - _cTable[(byte)''] = 211; - _cTable[(byte)''] = 212; - _cTable[(byte)''] = 213; - _cTable[(byte)''] = 214; - _cTable[(byte)''] = 215; - _cTable[(byte)''] = 216; - _cTable[(byte)''] = 217; - _cTable[(byte)''] = 218; - _cTable[(byte)''] = 219; - _cTable[(byte)''] = 220; - _cTable[(byte)''] = 221; - _cTable[(byte)''] = 222; - _cTable[(byte)''] = 223; - _cTable[(byte)''] = 224; - _cTable[(byte)''] = 225; - - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 14; - _lTable[(byte)''] = 20; - _lTable[(byte)''] = 7; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 20; - _lTable[(byte)''] = 19; - _lTable[(byte)''] = 16; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 13; - _lTable[(byte)''] = 13; - - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 6; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 15; - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - - } else if (g_vm->getLanguage() == Common::FR_FRA) { - // French - - _cTable[(byte)''] = 226; - _cTable[(byte)''] = 227; - _cTable[(byte)''] = 228; - _cTable[(byte)''] = 229; - _cTable[(byte)''] = 230; - _cTable[(byte)''] = 231; - _cTable[(byte)''] = 232; - _cTable[(byte)''] = 233; - - _lTable[(byte)''] = 12; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 6; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 10; - _lTable[(byte)''] = 11; - _lTable[(byte)''] = 11; - - } else if (g_vm->getLanguage() == Common::DE_DEU) { - // German - - _cTable[(byte)''] = 234; - // 'SS' = 235 - - // old chars overrides - _cTable[(byte)''] = _cTable[(byte)''] = 55; - _cTable[(byte)''] = _cTable[(byte)''] = 67; - _cTable[(byte)''] = _cTable[(byte)''] = 71; - - _lTable[(byte)''] = 11; + _cTable[i] = g_vm->_cTableCred[i]; + _lTable[i] = g_vm->_lTableCred[i]; } } @@ -1461,112 +328,10 @@ void RMFontObj::init() { Common::fill(&_l2Table[0][0], &_l2Table[0][0] + (256 * 256), '\0'); for (i = 0; i < 256; i++) { - _cTable[i] = -1; - _lTable[i] = _lDefault; - } - - for (i = 0; i < 26; i++) { - _cTable['A' + i] = i + 0; - _cTable['a' + i] = i + 0; + _cTable[i] = g_vm->_cTableObj[i]; + _lTable[i] = g_vm->_lTableObj[i]; } - for (i = 0; i < 10; i++) - _cTable['0' + i] = i + 26; - - _cTable[','] = 36; - _cTable[';'] = 37; - _cTable['.'] = 38; - _cTable[':'] = 39; - _cTable['-'] = 40; - _cTable['+'] = 41; - _cTable['!'] = 42; - // _cTable['!'] = 43; Exclamation countdown - _cTable['?'] = 44; - // _cTable['?'] = 45; Interrogativo alla rovescia - _cTable['/'] = 46; - _cTable['('] = 47; - _cTable[')'] = 48; - _cTable['='] = 49; - _cTable['\''] = 50; - _cTable['\"'] = 51; - _cTable[(byte)''] = 52; - _cTable[(byte)'$'] = 53; - _cTable[(byte)'%'] = 54; - _cTable[(byte)'&'] = 55; - _cTable[(byte)'^'] = 56; - _cTable[(byte)'*'] = 57; - _cTable[(byte)'<'] = 58; - _cTable[(byte)'>'] = 59; - _cTable[(byte)''] = 60; - _cTable[(byte)''] = 61; - _cTable[(byte)''] = 62; - _cTable[(byte)''] = 63; - //_cTable[(byte)''] = 64; integral - _cTable[(byte)''] = 65; - _cTable[(byte)''] = 66; - _cTable[(byte)''] = 67; - _cTable[(byte)''] = 68; - _cTable[(byte)''] = 69; - _cTable[(byte)''] = _cTable[(byte)''] = 70; - _cTable[(byte)''] = 71; - _cTable[(byte)''] = 72; - _cTable[(byte)''] = 73; - //_cTable[(byte)' '] = 74; e circlet - _cTable[(byte)''] = 75; - _cTable[(byte)''] = 76; - //_cTable[(byte)' '] = 77; i circlet - _cTable[(byte)''] = 78; - _cTable[(byte)''] = _cTable[(byte)''] = 79; - //_cTable[(byte)' '] = 80; o circlet - _cTable[(byte)''] = 81; - _cTable[(byte)''] = _cTable[(byte)''] = 82; - //_cTable[' '] = 83; u circlet - //_cTable[' '] = 84; y dieresi - - /* Little lengths */ - _lTable[' '] = 11; - _lTable['.'] = 8; - _lTable['-'] = 12; - _lTable['\''] = 8; - _lTable['0'] = 20; - _lTable['1'] = 20; - _lTable['2'] = 15; - _lTable['3'] = 20; - _lTable['4'] = 20; - _lTable['5'] = 20; - _lTable['6'] = 20; - _lTable['7'] = 20; - _lTable['8'] = 20; - _lTable['9'] = 20; - - - _lTable['a'] = _lTable['A'] = _lTable[''] = _lTable[''] = 17; - _lTable['b'] = _lTable['B'] = 17; - _lTable['c'] = _lTable['C'] = 19; - _lTable['d'] = _lTable['D'] = 17; - _lTable['e'] = _lTable['E'] = 15; - _lTable['f'] = _lTable['F'] = 17; - _lTable['g'] = _lTable['G'] = 19; - _lTable['i'] = _lTable['I'] = 16; - _lTable['h'] = _lTable['H'] = 17; - _lTable['k'] = _lTable['K'] = 17; - _lTable['l'] = _lTable['L'] = 14; - _lTable['m'] = _lTable['M'] = 19; - _lTable['n'] = _lTable['N'] = 17; - _lTable['o'] = _lTable['O'] = _lTable[''] = _lTable[''] = 19; - _lTable['p'] = _lTable['P'] = 17; - _lTable['q'] = _lTable['Q'] = 19; - _lTable['r'] = _lTable['R'] = 14; - _lTable['s'] = _lTable['S'] = 13; - _lTable['t'] = _lTable['T'] = 15; - _lTable['u'] = _lTable['U'] = _lTable[''] = _lTable[''] = 15; - _lTable['v'] = _lTable['V'] = 13; - _lTable['x'] = _lTable['X'] = 15; - _lTable['y'] = _lTable['Y'] = 13; - _lTable['w'] = _lTable['W'] = 19; - _lTable['z'] = _lTable['Z'] = 20; - _lTable[(byte)''] = 17; - /* Casi particolari */ setBothCase('C', 'C', 2); setBothCase('A', 'T', -2); @@ -1579,179 +344,6 @@ void RMFontObj::init() { setBothCase('Z', 'A', -1); setBothCase('R', 'R', 1); setBothCase('R', 'U', 3); - - if (g_vm->getLanguage() == Common::PL_POL) { - // Polish characters - //ꣳ - //AaCcEeLlNnOoSsZzZz - _cTable[(byte)''] = _cTable[(byte)''] = 85; - _lTable[(byte)''] = _lTable[(byte)''] = 20; - - _cTable[(byte)''] = _cTable[(byte)''] = 86; - _lTable[(byte)''] = _lTable[(byte)''] = 22; - - _cTable[(byte)''] = _cTable[(byte)''] = 87; - _lTable[(byte)''] = _lTable[(byte)''] = 17; - - _cTable[(byte)''] = _cTable[(byte)''] = 88; - _lTable[(byte)''] = _lTable[(byte)''] = 19; - - _cTable[(byte)''] = _cTable[(byte)''] = 89; - _lTable[(byte)''] = _lTable[(byte)''] = 17; - - _cTable[(byte)''] = _cTable[(byte)''] = 90; - _lTable[(byte)''] = _lTable[(byte)''] = 22; - - _cTable[(byte)''] = _cTable[(byte)''] = 91; - _lTable[(byte)''] = _lTable[(byte)''] = 15; - - _cTable[(byte)''] = _cTable[(byte)''] = 92; - _lTable[(byte)''] = _lTable[(byte)''] = 21; - - _cTable[(byte)''] = _cTable[(byte)''] = 93; - _lTable[(byte)''] = _lTable[(byte)''] = 21; - - } else if (g_vm->getLanguage() == Common::RU_RUS) { - // Russian Characters - // WARNING: The Russian font uses many of the ISO-Latin-1 font, - // allowing for further translations. To support Tonyin other langauges, - // these mappings could be used as a basis - - _cTable[(byte)''] = _cTable[(byte)''] = 85; - _lTable[(byte)''] = _lTable[(byte)''] = 20; - - _cTable[(byte)''] = _cTable[(byte)''] = 94; - _cTable[(byte)''] = _cTable[(byte)''] = 95; - _cTable[(byte)''] = _cTable[(byte)''] = 96; - _cTable[(byte)''] = _cTable[(byte)''] = 97; - _cTable[(byte)''] = _cTable[(byte)''] = 98; - _cTable[(byte)''] = _cTable[(byte)''] = 99; - _cTable[(byte)''] = _cTable[(byte)''] = 100; - _cTable[(byte)''] = _cTable[(byte)''] = 101; - _cTable[(byte)''] = _cTable[(byte)''] = 102; - _cTable[(byte)''] = _cTable[(byte)''] = 103; - _cTable[(byte)''] = _cTable[(byte)''] = 104; - _cTable[(byte)''] = _cTable[(byte)''] = 105; - _cTable[(byte)''] = _cTable[(byte)''] = 106; - _cTable[(byte)''] = _cTable[(byte)''] = 107; - _cTable[(byte)''] = _cTable[(byte)''] = 108; - _cTable[(byte)''] = _cTable[(byte)''] = 109; - _cTable[(byte)''] = _cTable[(byte)''] = 110; - _cTable[(byte)''] = _cTable[(byte)''] = 111; - _cTable[(byte)''] = _cTable[(byte)''] = 112; - _cTable[(byte)''] = _cTable[(byte)''] = 113; - _cTable[(byte)''] = _cTable[(byte)''] = 114; - _cTable[(byte)''] = _cTable[(byte)''] = 115; - _cTable[(byte)''] = _cTable[(byte)''] = 116; - _cTable[(byte)''] = _cTable[(byte)''] = 117; - _cTable[(byte)''] = _cTable[(byte)''] = 118; - _cTable[(byte)''] = _cTable[(byte)''] = 119; - _cTable[(byte)''] = _cTable[(byte)''] = 120; - _cTable[(byte)''] = _cTable[(byte)''] = 121; - _cTable[(byte)''] = _cTable[(byte)''] = 122; - _cTable[(byte)''] = _cTable[(byte)''] = 123; - _cTable[(byte)''] = _cTable[(byte)''] = 124; - _cTable[(byte)''] = _cTable[(byte)''] = 125; - _cTable[(byte)''] = _cTable[(byte)''] = 126; - - - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 17; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 20; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 15; - _lTable[(byte)''] = _lTable[(byte)''] = 22; - _lTable[(byte)''] = _lTable[(byte)''] = 15; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 22; - _lTable[(byte)''] = _lTable[(byte)''] = 19; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - _lTable[(byte)''] = _lTable[(byte)''] = 21; - _lTable[(byte)''] = _lTable[(byte)''] = 20; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - _lTable[(byte)''] = _lTable[(byte)''] = 19; - _lTable[(byte)''] = _lTable[(byte)''] = 22; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 19; - _lTable[(byte)''] = _lTable[(byte)''] = 19; - _lTable[(byte)''] = _lTable[(byte)''] = 15; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - - } else if (g_vm->getLanguage() == Common::CZ_CZE) { - // Czech - - _cTable[(byte)''] = _cTable[(byte)''] = 127; - _cTable[(byte)''] = _cTable[(byte)''] = 128; - _cTable[(byte)''] = _cTable[(byte)''] = 129; - _cTable[(byte)''] = _cTable[(byte)''] = 130; - _cTable[(byte)''] = _cTable[(byte)''] = 131; - _cTable[(byte)''] = _cTable[(byte)''] = 132; - _cTable[(byte)''] = _cTable[(byte)''] = 133; - _cTable[(byte)''] = _cTable[(byte)''] = 134; - _cTable[(byte)''] = _cTable[(byte)''] = 135; - _cTable[(byte)''] = _cTable[(byte)''] = 136; - _cTable[(byte)''] = _cTable[(byte)''] = 137; - _cTable[(byte)''] = _cTable[(byte)''] = 138; - _cTable[(byte)''] = _cTable[(byte)''] = 139; - _cTable[(byte)''] = _cTable[(byte)''] = 140; - _cTable[(byte)''] = _cTable[(byte)''] = 141; - - _lTable[(byte)''] = _lTable[(byte)''] = 17; - _lTable[(byte)''] = _lTable[(byte)''] = 15; - _lTable[(byte)''] = _lTable[(byte)''] = 22; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 21; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - _lTable[(byte)''] = _lTable[(byte)''] = 18; - _lTable[(byte)''] = _lTable[(byte)''] = 19; - _lTable[(byte)''] = _lTable[(byte)''] = 17; - _lTable[(byte)''] = _lTable[(byte)''] = 23; - _lTable[(byte)''] = _lTable[(byte)''] = 24; - _lTable[(byte)''] = _lTable[(byte)''] = 17; - _lTable[(byte)''] = _lTable[(byte)''] = 22; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - _lTable[(byte)''] = _lTable[(byte)''] = 16; - - } else if (g_vm->getLanguage() == Common::FR_FRA) { - // French - - // Translate accented characters as normal letters - - _cTable[(byte)''] = _cTable[(byte)''] = _cTable[(byte)''] = 0; // a - _lTable[(byte)''] = _lTable[(byte)''] = _lTable[(byte)''] = 17; - - _cTable[(byte)''] = _cTable[(byte)''] = 4; // e - _lTable[(byte)''] = _lTable[(byte)''] = 15; - - _cTable[(byte)''] = _cTable[(byte)''] = _cTable[(byte)''] = 8; // i - _lTable[(byte)''] = _lTable[(byte)''] = _lTable[(byte)''] = 16; - - _cTable[(byte)''] = _cTable[(byte)''] = _cTable[(byte)''] = _cTable[(byte)''] = 14; // o - _lTable[(byte)''] = _lTable[(byte)''] = _lTable[(byte)''] = _lTable[(byte)''] = 19; - - _cTable[(byte)''] = _cTable[(byte)''] = 20; // u - _lTable[(byte)''] = _lTable[(byte)''] = 15; - - } else if (g_vm->getLanguage() == Common::DE_DEU) { - // German - - _cTable[''] = 142; - // SS = 143 - - _lTable[''] = 24; - } } diff --git a/engines/tony/tony.cpp b/engines/tony/tony.cpp index ec2ee49ba2..9124bed50d 100644 --- a/engines/tony/tony.cpp +++ b/engines/tony/tony.cpp @@ -111,6 +111,10 @@ Common::Error TonyEngine::run() { * Initialize the game */ Common::ErrorCode TonyEngine::init() { + // Load DAT file (used by font manager) + if (!loadTonyDat()) + return Common::kUnknownError; + if (isCompressed()) { Common::SeekableReadStream *stream = SearchMan.createReadStreamForMember("data1.cab"); if (!stream) @@ -177,6 +181,94 @@ Common::ErrorCode TonyEngine::init() { return Common::kNoError; } +bool TonyEngine::loadTonyDat() { + Common::String msg; + Common::File in; + + in.open("tony.dat"); + + if (!in.isOpen()) { + msg = "You're missing the 'tony.dat' file. Get it from the ScummVM website"; + GUIErrorMessage(msg); + warning("%s", msg.c_str()); + return false; + } + + // Read header + char buf[4+1]; + in.read(buf, 4); + buf[4] = '\0'; + + if (strcmp(buf, "TONY")) { + msg = "File 'tony.dat' is corrupt. Get it from the ScummVM website"; + GUIErrorMessage(msg); + warning("%s", msg.c_str()); + return false; + } + + int majVer = in.readByte(); + int minVer = in.readByte(); + + if ((majVer != TONY_DAT_VER_MAJ) || (minVer != TONY_DAT_VER_MIN)) { + msg = Common::String::format("File 'tony.dat' is wrong version. Expected %d.%d but got %d.%d. Get it from the ScummVM website", TONY_DAT_VER_MAJ, TONY_DAT_VER_MIN, majVer, minVer); + GUIErrorMessage(msg); + warning("%s", msg.c_str()); + + return false; + } + + int expectedLangVariant = -1; + switch (g_vm->getLanguage()) { + case Common::IT_ITA: + expectedLangVariant = 0; + break; + case Common::PL_POL: + expectedLangVariant = 1; + break; + case Common::RU_RUS: + expectedLangVariant = 2; + break; + case Common::CZ_CZE: + expectedLangVariant = 3; + break; + case Common::FR_FRA: + expectedLangVariant = 4; + break; + case Common::DE_DEU: + expectedLangVariant = 5; + break; + default: + msg = Common::String::format("Font variant not present in 'tony.dat'. Get it from the ScummVM website"); + GUIErrorMessage(msg); + warning("%s", msg.c_str()); + + return false; + } + + int numVariant = in.readUint16BE(); + if (expectedLangVariant > numVariant) { + msg = Common::String::format("Font variant not present in 'tony.dat'. Get it from the ScummVM website"); + GUIErrorMessage(msg); + warning("%s", msg.c_str()); + + return false; + } + + in.seek(in.pos() + (2 * 256 * 8 * expectedLangVariant)); + for (int i = 0; i < 256; i++) { + _cTableDialog[i] = in.readSint16BE(); + _lTableDialog[i] = in.readSint16BE(); + _cTableMacc[i] = in.readSint16BE(); + _lTableMacc[i] = in.readSint16BE(); + _cTableCred[i] = in.readSint16BE(); + _lTableCred[i] = in.readSint16BE(); + _cTableObj[i] = in.readSint16BE(); + _lTableObj[i] = in.readSint16BE(); + } + + return true; +} + void TonyEngine::initCustomFunctionMap() { INIT_CUSTOM_FUNCTION(_funcList, _funcListStrings); } diff --git a/engines/tony/tony.h b/engines/tony/tony.h index 18cddf3f2a..f8358b15a7 100644 --- a/engines/tony/tony.h +++ b/engines/tony/tony.h @@ -70,6 +70,8 @@ enum { struct TonyGameDescription; #define MAX_SFX_CHANNELS 32 +#define TONY_DAT_VER_MAJ 0 +#define TONY_DAT_VER_MIN 1 struct VoiceHeader { int _offset; @@ -81,6 +83,7 @@ struct VoiceHeader { class TonyEngine : public Engine { private: Common::ErrorCode init(); + bool loadTonyDat(); void initMusic(); void closeMusic(); bool openVoiceDatabase(); @@ -106,6 +109,15 @@ public: Globals _globals; Debugger *_debugger; + int16 _cTableDialog[256]; + int16 _lTableDialog[256]; + int16 _cTableMacc[256]; + int16 _lTableMacc[256]; + int16 _cTableCred[256]; + int16 _lTableCred[256]; + int16 _cTableObj[256]; + int16 _lTableObj[256]; + enum DataDir { DD_BASE = 1, DD_SAVE, |