Ticket #8490: cjkfix.diff

File cjkfix.diff, 2.0 KB (added by SF/wonst719, 18 years ago)

the patch

  • charset.cpp

    RCS file: /cvsroot/scummvm/scummvm/scumm/charset.cpp,v
    retrieving revision 2.161
    diff -u -r2.161 charset.cpp
     
    156156                else if (kanjiType == EKANJI) chunk = 144;
    157157                break;
    158158        default:
    159                 error("Invalid Char! f %x s %x base %x c %d p %d", f, s, base, c, p);
     159                debug(4, "Invalid Char! f %x s %x base %x c %d p %d", f, s, base, c, p);
    160160                return 0;
    161161        }
    162162
  • string.cpp

    RCS file: /cvsroot/scummvm/scummvm/scumm/string.cpp,v
    retrieving revision 1.313
    diff -u -r1.313 string.cpp
     
    455455
    456456                _charset->_left = _charset->_nextLeft;
    457457                _charset->_top = _charset->_nextTop;
    458                 if (c & 0x80 && _useCJKMode) {
    459                         if (_language == Common::JA_JPN && !checkSJISCode(c)) {
    460                                 c = 0x20; //not in S-JIS
    461                         } else {
    462                                 byte *buffer = _charsetBuffer + _charsetBufPos;
    463                                 c += *buffer++ * 256; //LE
    464                                 _charsetBufPos = buffer - _charsetBuffer;
    465                         }
    466                 }
     458
    467459                if (_version >= 7) {
    468460#ifndef DISABLE_SCUMM_7_8
    469461                        if (subtitleLine == subtitleBuffer) {
     
    474466                        *subtitleLine = '\0';
    475467#endif
    476468                } else {
     469                        if (c & 0x80 && _useCJKMode) {
     470                                if (_language == Common::JA_JPN && !checkSJISCode(c)) {
     471                                        c = 0x20; // not in S-JIS
     472                                } else {
     473                                        byte *buffer = _charsetBuffer + _charsetBufPos;
     474                                        c += *buffer++ * 256; // 16bit LE
     475                                        _charsetBufPos = buffer - _charsetBuffer;
     476                                }
     477                        }
    477478                        if (_version <= 3) {
    478479                                _charset->printChar(c);
    479480                        } else {
     
    988989                for (i = 0; i < lineCount; i++) {
    989990                        if (*ptr == '!') {
    990991                                // Don't know what a line with '!' means, just ignore it
     992                        } else if (*ptr == 'h') {
     993                                // File is containing Korean text (Hangul). Igonre it
    991994                        } else if (*ptr == 'e') {
    992995                                // File is encoded!
    993996                                enc = 0x13;