Sunwayking

导航

游戏汉化中的双字节问题处理原理

假设原始字库引擎如下(单字节字库引擎,不支持双字节):

@begin:
    ....
    mov al,byte ptr[ecx]    ;把要单字节字符取出来放在al中
    movzx eax,al    ;零扩展一下
    push eax    ;要处理的字符压栈
    call 贴字的函数    ;查询字库并控制显卡绘制出字符
    inc ecx
    jmp @begin


现在想让他支持中文,需要对双字节特别处理:

@begin:
    ....
    mov al,byte ptr[ecx]    ;把要单字节字符取出来放在al中

/*双字节处理代码*/
    test al,80h    ;判断是否是中文gb2312编码.
    je @单字节
    shl eax,08h
    inc ecx
    mov al,byte ptr[ecx]    ;再取出一个单字节字符放在al中
    jmp @双字节
/*双字节处理代码*/

@单字节:
    movzx eax,al    ;零扩展一下
@双字节:
    push eax    ;要处理的字符压栈
    call 贴字的函数    ;查询字库并控制显卡绘制出字符
    inc ecx
    jmp @begin

posted on 2009-01-24 20:54  Sunwayking  阅读(1692)  评论(1编辑  收藏  举报