游戏汉化中的双字节问题处理原理
假设原始字库引擎如下(单字节字库引擎,不支持双字节):
@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 阅读(1712) 评论(1) 编辑 收藏 举报