Skip to content

Commit

Permalink
GBK fix
Browse files Browse the repository at this point in the history
  • Loading branch information
silas1037 committed Aug 29, 2021
1 parent e04a7a2 commit cfcda1c
Show file tree
Hide file tree
Showing 8 changed files with 704 additions and 189 deletions.
6 changes: 3 additions & 3 deletions src/common.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
#define EMSCRIPTEN_KEEPALIVE
#endif

#define FONT_RESOURCE_NAME "MTLc3m.ttf"
#define FONT_RESOURCE_NAME "simhei.ttf"

// type definition
typedef uint8_t uint8;
Expand Down Expand Up @@ -73,11 +73,11 @@ inline void strcpy_s(char* dst, size_t n, const char* src)
#endif // !WIN32

static inline bool is_1byte_message(uint8_t c) {
return c == ' ' || (0xa1 <= c && c <= 0xdd);
return c == ' '; // || (0xa1 <= c && c <= 0xdd);
}

static inline bool is_2byte_message(uint8_t c) {
return (0x81 <= c && c <= 0x9f) || 0xe0 <= c;
return (0x81 <= c && c <= 0xfe) || 0xe0 <= c;
}

// resource.cpp
Expand Down
515 changes: 515 additions & 0 deletions src/s2utbl_gbk.h

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion src/sdlmain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ int main(int argc, char *argv[])
const char* title = nact->get_title();
if (title) {
char buf[128];
sprintf_s(buf, 128, "Scenario Decoder SYSTEM%d: %s", nact->sys_ver, title);
sprintf_s(buf, 128, "【卡拉保护协会】 %s", title);
#ifdef __EMSCRIPTEN__
EM_ASM_ARGS({ xsystem35.shell.setWindowTitle(UTF8ToString($0)); }, buf);
#else
Expand Down
320 changes: 160 additions & 160 deletions src/sys/ags_text.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ void AGS::draw_text(const char* string, bool text_wait)
}

// 文字出力
if((0xeb9f <= code && code <= 0xebfc) || (0xec40 <= code && code <= 0xec9e)) {
if((0xff40 <= code && code <= 0xff9d) || (0xff9e <= code && code <= 0xfffc)) {
// Use unadjusted dest_y here.
draw_gaiji(screen, dest_x, draw_menu ? menu_dest_y : text_dest_y, code, font_size, font_color);
dest_x += font_size;
Expand Down Expand Up @@ -197,7 +197,7 @@ void AGS::draw_char_antialias(int dest, int dest_x, int dest_y, uint16 code, TTF

void AGS::draw_gaiji(int dest, int dest_x, int dest_y, uint16 code, int size, uint8 color)
{
int index = (0xeb9f <= code && code <= 0xebfc) ? code - 0xeb9f : (0xec40 <= code && code <= 0xec9e) ? code - 0xec40 + 94 : 0;
int index = (0xff40 <= code && code <= 0xff9d) ? code - 0xff40 : (0xff9e <= code && code <= 0xfffc) ? code - 0xff9e + 94 : 0;
bool pattern[16][16];

// パターン取得
Expand Down Expand Up @@ -236,164 +236,164 @@ void AGS::draw_gaiji(int dest, int dest_x, int dest_y, uint16 code, int size, ui
uint16 AGS::convert_zenkaku(uint16 code)
{
switch(code) {
case 0x20: return 0x8140; // ' '
case 0x21: return 0x8149; // '!'
case 0x22: return 0x8168; // '”'
case 0x23: return 0x8194; // '#'
case 0x24: return 0x8190; // '$'
case 0x25: return 0x8193; // '%'
case 0x26: return 0x8195; // '&'
case 0x27: return 0x8166; // '’'
case 0x28: return 0x8169; // '('
case 0x29: return 0x816a; // ')'
case 0x2a: return 0x8196; // '*'
case 0x2b: return 0x817b; // '+'
case 0x2c: return 0x8143; // ','
case 0x2d: return 0x817c; // ''
case 0x2e: return 0x8144; // '.'
case 0x2f: return 0x815e; // '/'
case 0x30: return 0x824f; // '0'
case 0x31: return 0x8250; // '1'
case 0x32: return 0x8251; // '2'
case 0x33: return 0x8252; // '3'
case 0x34: return 0x8253; // '4'
case 0x35: return 0x8254; // '5'
case 0x36: return 0x8255; // '6'
case 0x37: return 0x8256; // '7'
case 0x38: return 0x8257; // '8'
case 0x39: return 0x8258; // '9'
case 0x3a: return 0x8146; // ':'
case 0x3b: return 0x8147; // ';'
case 0x3c: return 0x8183; // '<'
case 0x3d: return 0x8181; // '='
case 0x3e: return 0x8184; // '>'
case 0x3f: return 0x8148; // '?'
case 0x40: return 0x8197; // '@'
case 0x41: return 0x8260; // 'A'
case 0x42: return 0x8261; // 'B'
case 0x43: return 0x8262; // 'C'
case 0x44: return 0x8263; // 'D'
case 0x45: return 0x8264; // 'E'
case 0x46: return 0x8265; // 'F'
case 0x47: return 0x8266; // 'G'
case 0x48: return 0x8267; // 'H'
case 0x49: return 0x8268; // 'I'
case 0x4a: return 0x8269; // 'J'
case 0x4b: return 0x826a; // 'K'
case 0x4c: return 0x826b; // 'L'
case 0x4d: return 0x826c; // 'M'
case 0x4e: return 0x826d; // 'N'
case 0x4f: return 0x826e; // 'O'
case 0x50: return 0x826f; // 'P'
case 0x51: return 0x8270; // 'Q'
case 0x52: return 0x8271; // 'R'
case 0x53: return 0x8272; // 'S'
case 0x54: return 0x8273; // 'T'
case 0x55: return 0x8274; // 'U'
case 0x56: return 0x8275; // 'V'
case 0x57: return 0x8276; // 'W'
case 0x58: return 0x8277; // 'X'
case 0x59: return 0x8278; // 'Y'
case 0x5a: return 0x8279; // 'Z'
case 0x5b: return 0x816d; // '['
case 0x5c: return 0x818f; // '¥'
case 0x5d: return 0x816e; // ']'
case 0x5e: return 0x814f; // '^'
case 0x5f: return 0x8151; // '_'
case 0x60: return 0x8165; // '‘'
case 0x61: return 0x8281; // 'a'
case 0x62: return 0x8282; // 'b'
case 0x63: return 0x8283; // 'c'
case 0x64: return 0x8284; // 'd'
case 0x65: return 0x8285; // 'e'
case 0x66: return 0x8286; // 'f'
case 0x67: return 0x8287; // 'g'
case 0x68: return 0x8288; // 'h'
case 0x69: return 0x8289; // 'i'
case 0x6a: return 0x828a; // 'j'
case 0x6b: return 0x828b; // 'k'
case 0x6c: return 0x828c; // 'l'
case 0x6d: return 0x828d; // 'm'
case 0x6e: return 0x828e; // 'n'
case 0x6f: return 0x828f; // 'o'
case 0x70: return 0x8290; // 'p'
case 0x71: return 0x8291; // 'q'
case 0x72: return 0x8292; // 'r'
case 0x73: return 0x8293; // 's'
case 0x74: return 0x8294; // 't'
case 0x75: return 0x8295; // 'u'
case 0x76: return 0x8296; // 'v'
case 0x77: return 0x8297; // 'w'
case 0x78: return 0x8298; // 'x'
case 0x79: return 0x8299; // 'y'
case 0x7a: return 0x829a; // 'z'
case 0x7b: return 0x816f; // '{'
case 0x7c: return 0x8162; // '|'
case 0x7d: return 0x8170; // '}'
case 0x7e: return 0x8160; // ''
case 0xa1: return 0x8142; // '。'
case 0xa2: return 0x8175; // '「'
case 0xa3: return 0x8176; // '」'
case 0xa4: return 0x8141; // '、'
case 0xa5: return 0x8145; // '・'
case 0xa6: return 0x82f0; // 'を'
case 0xa7: return 0x829f; // 'ぁ'
case 0xa8: return 0x82a1; // 'ぃ'
case 0xa9: return 0x82a3; // 'ぅ'
case 0xaa: return 0x82a5; // 'ぇ'
case 0xab: return 0x82a7; // 'ぉ'
case 0xac: return 0x82e1; // 'ゃ'
case 0xad: return 0x82e3; // 'ゅ'
case 0xae: return 0x82e5; // 'ょ'
case 0xaf: return 0x82c1; // 'っ'
case 0xb0: return 0x815b; // 'ー'
case 0xb1: return 0x82a0; // 'あ'
case 0xb2: return 0x82a2; // 'い'
case 0xb3: return 0x82a4; // 'う'
case 0xb4: return 0x82a6; // 'え'
case 0xb5: return 0x82a8; // 'お'
case 0xb6: return 0x82a9; // 'か'
case 0xb7: return 0x82ab; // 'き'
case 0xb8: return 0x82ad; // 'く'
case 0xb9: return 0x82af; // 'け'
case 0xba: return 0x82b1; // 'こ'
case 0xbb: return 0x82b3; // 'さ'
case 0xbc: return 0x82b5; // 'し'
case 0xbd: return 0x82b7; // 'す'
case 0xbe: return 0x82b9; // 'せ'
case 0xbf: return 0x82bb; // 'そ'
case 0xc0: return 0x82bd; // 'た'
case 0xc1: return 0x82bf; // 'ち'
case 0xc2: return 0x82c2; // 'つ'
case 0xc3: return 0x82c4; // 'て'
case 0xc4: return 0x82c6; // 'と'
case 0xc5: return 0x82c8; // 'な'
case 0xc6: return 0x82c9; // 'に'
case 0xc7: return 0x82ca; // 'ぬ'
case 0xc8: return 0x82cb; // 'ね'
case 0xc9: return 0x82cc; // 'の'
case 0xca: return 0x82cd; // 'は'
case 0xcb: return 0x82d0; // 'ひ'
case 0xcc: return 0x82d3; // 'ふ'
case 0xcd: return 0x82d6; // 'へ'
case 0xce: return 0x82d9; // 'ほ'
case 0xcf: return 0x82dc; // 'ま'
case 0xd0: return 0x82dd; // 'み'
case 0xd1: return 0x82de; // 'む'
case 0xd2: return 0x82df; // 'め'
case 0xd3: return 0x82e0; // 'も'
case 0xd4: return 0x82e2; // 'や'
case 0xd5: return 0x82e4; // 'ゆ'
case 0xd6: return 0x82e6; // 'よ'
case 0xd7: return 0x82e7; // 'ら'
case 0xd8: return 0x82e8; // 'り'
case 0xd9: return 0x82e9; // 'る'
case 0xda: return 0x82ea; // 'れ'
case 0xdb: return 0x82eb; // 'ろ'
case 0xdc: return 0x82ed; // 'わ'
case 0xdd: return 0x82f1; // 'ん'
case 0xde: return 0x814a; // '゛'
case 0xdf: return 0x814b; // '゜'
case 0x20: return 0xa1a1; // ' '
case 0x21: return 0xa3a1; // '!'
case 0x22: return 0xa1b1; // '”'
case 0x23: return 0xa3a3; // '#'
case 0x24: return 0xa1e7; // '$'
case 0x25: return 0xa3a5; // '%'
case 0x26: return 0xa3a6; // '&'
case 0x27: return 0xa1af; // '’'
case 0x28: return 0xa3a8; // '('
case 0x29: return 0xa3a9; // ')'
case 0x2a: return 0xa3aa; // '*'
case 0x2b: return 0xa3ab; // '+'
case 0x2c: return 0xa3ac; // ','
case 0x2d: return 0xa3ad; // ''
case 0x2e: return 0xa3ae; // '.'
case 0x2f: return 0xa3af; // '/'
case 0x30: return 0xa3b0; // '0'
case 0x31: return 0xa3b1; // '1'
case 0x32: return 0xa3b2; // '2'
case 0x33: return 0xa3b3; // '3'
case 0x34: return 0xa3b4; // '4'
case 0x35: return 0xa3b5; // '5'
case 0x36: return 0xa3b6; // '6'
case 0x37: return 0xa3b7; // '7'
case 0x38: return 0xa3b8; // '8'
case 0x39: return 0xa3b9; // '9'
case 0x3a: return 0xa3ba; // ':'
case 0x3b: return 0xa3bb; // ';'
case 0x3c: return 0xa3bc; // '<'
case 0x3d: return 0xa3bd; // '='
case 0x3e: return 0xa3be; // '>'
case 0x3f: return 0xa3bf; // '?'
case 0x40: return 0xa3c0; // '@'
case 0x41: return 0xa3c1; // 'A'
case 0x42: return 0xa3c2; // 'B'
case 0x43: return 0xa3c3; // 'C'
case 0x44: return 0xa3c4; // 'D'
case 0x45: return 0xa3c5; // 'E'
case 0x46: return 0xa3c6; // 'F'
case 0x47: return 0xa3c7; // 'G'
case 0x48: return 0xa3c8; // 'H'
case 0x49: return 0xa3c9; // 'I'
case 0x4a: return 0xa3ca; // 'J'
case 0x4b: return 0xa3cb; // 'K'
case 0x4c: return 0xa3cc; // 'L'
case 0x4d: return 0xa3cd; // 'M'
case 0x4e: return 0xa3ce; // 'N'
case 0x4f: return 0xa3cf; // 'O'
case 0x50: return 0xa3d0; // 'P'
case 0x51: return 0xa3d1; // 'Q'
case 0x52: return 0xa3d2; // 'R'
case 0x53: return 0xa3d3; // 'S'
case 0x54: return 0xa3d4; // 'T'
case 0x55: return 0xa3d5; // 'U'
case 0x56: return 0xa3d6; // 'V'
case 0x57: return 0xa3d7; // 'W'
case 0x58: return 0xa3d8; // 'X'
case 0x59: return 0xa3d9; // 'Y'
case 0x5a: return 0xa3da; // 'Z'
case 0x5b: return 0xa3db; // '['
case 0x5c: return 0xa3a4; // ''
case 0x5d: return 0xa3dd; // ']'
case 0x5e: return 0xa3de; // '^'
case 0x5f: return 0xa3df; // '_'
case 0x60: return 0xa1ae; // '‘'
case 0x61: return 0xa3e1; // 'a'
case 0x62: return 0xa3e2; // 'b'
case 0x63: return 0xa3e3; // 'c'
case 0x64: return 0xa3e4; // 'd'
case 0x65: return 0xa3e5; // 'e'
case 0x66: return 0xa3e6; // 'f'
case 0x67: return 0xa3e7; // 'g'
case 0x68: return 0xa3e8; // 'h'
case 0x69: return 0xa3e9; // 'i'
case 0x6a: return 0xa3ea; // 'j'
case 0x6b: return 0xa3eb; // 'k'
case 0x6c: return 0xa3ec; // 'l'
case 0x6d: return 0xa3ed; // 'm'
case 0x6e: return 0xa3ee; // 'n'
case 0x6f: return 0xa3ef; // 'o'
case 0x70: return 0xa3f0; // 'p'
case 0x71: return 0xa3f1; // 'q'
case 0x72: return 0xa3f2; // 'r'
case 0x73: return 0xa3f3; // 's'
case 0x74: return 0xa3f4; // 't'
case 0x75: return 0xa3f5; // 'u'
case 0x76: return 0xa3f6; // 'v'
case 0x77: return 0xa3f7; // 'w'
case 0x78: return 0xa3f8; // 'x'
case 0x79: return 0xa3f9; // 'y'
case 0x7a: return 0xa3fa; // 'z'
case 0x7b: return 0xa3fb; // '{'
case 0x7c: return 0xa3fc; // '|'
case 0x7d: return 0xa3fd; // '}'
case 0x7e: return 0xa1ab; // ''
case 0xa1: return 0xa1a3; // '。'
case 0xa2: return 0xa1b8; // '「'
case 0xa3: return 0xa1b9; // '」'
case 0xa4: return 0xa1a2; // '、'
case 0xa5: return 0xa1a4; // '・'
case 0xa6: return 0xa4f2; // 'を'
case 0xa7: return 0xa4a1; // 'ぁ'
case 0xa8: return 0xa4a3; // 'ぃ'
case 0xa9: return 0xa4a5; // 'ぅ'
case 0xaa: return 0xa4a7; // 'ぇ'
case 0xab: return 0xa4a9; // 'ぉ'
case 0xac: return 0xa4e3; // 'ゃ'
case 0xad: return 0xa4e5; // 'ゅ'
case 0xae: return 0xa4e7; // 'ょ'
case 0xaf: return 0xa4c3; // 'っ'
case 0xb0: return 0xa960; // 'ー'
case 0xb1: return 0xa4a2; // 'あ'
case 0xb2: return 0xa4a4; // 'い'
case 0xb3: return 0xa4a6; // 'う'
case 0xb4: return 0xa4a8; // 'え'
case 0xb5: return 0xa4aa; // 'お'
case 0xb6: return 0xa4ab; // 'か'
case 0xb7: return 0xa4ad; // 'き'
case 0xb8: return 0xa4af; // 'く'
case 0xb9: return 0xa4b1; // 'け'
case 0xba: return 0xa4b3; // 'こ'
case 0xbb: return 0xa4b5; // 'さ'
case 0xbc: return 0xa4b7; // 'し'
case 0xbd: return 0xa4b9; // 'す'
case 0xbe: return 0xa4bb; // 'せ'
case 0xbf: return 0xa4bd; // 'そ'
case 0xc0: return 0xa4bf; // 'た'
case 0xc1: return 0xa4c1; // 'ち'
case 0xc2: return 0xa4c4; // 'つ'
case 0xc3: return 0xa4c6; // 'て'
case 0xc4: return 0xa4c8; // 'と'
case 0xc5: return 0xa4ca; // 'な'
case 0xc6: return 0xa4cb; // 'に'
case 0xc7: return 0xa4cc; // 'ぬ'
case 0xc8: return 0xa4cd; // 'ね'
case 0xc9: return 0xa4ce; // 'の'
case 0xca: return 0xa4cf; // 'は'
case 0xcb: return 0xa4d2; // 'ひ'
case 0xcc: return 0xa4d5; // 'ふ'
case 0xcd: return 0xa4d8; // 'へ'
case 0xce: return 0xa4db; // 'ほ'
case 0xcf: return 0xa4de; // 'ま'
case 0xd0: return 0xa4df; // 'み'
case 0xd1: return 0xa4e0; // 'む'
case 0xd2: return 0xa4e1; // 'め'
case 0xd3: return 0xa4e2; // 'も'
case 0xd4: return 0xa4e4; // 'や'
case 0xd5: return 0xa4e6; // 'ゆ'
case 0xd6: return 0xa4e8; // 'よ'
case 0xd7: return 0xa4e9; // 'ら'
case 0xd8: return 0xa4ea; // 'り'
case 0xd9: return 0xa4eb; // 'る'
case 0xda: return 0xa4ec; // 'れ'
case 0xdb: return 0xa4ed; // 'ろ'
case 0xdc: return 0xa4ef; // 'わ'
case 0xdd: return 0xa4f3; // 'ん'
case 0xde: return 0xa961; // '゛'
case 0xdf: return 0xa962; // '゜'
}
return code;
}
Expand Down
2 changes: 1 addition & 1 deletion src/sys/nact.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -487,7 +487,7 @@ void NACT::wait_after_open_menu()
{
// 連打による誤クリック防止
Uint32 dwTime = SDL_GetTicks();
Uint32 dwWait = dwTime + 400;
Uint32 dwWait = dwTime + 100;

while(dwTime < dwWait) {
if(terminate) {
Expand Down
Loading

0 comments on commit cfcda1c

Please sign in to comment.