冒险解谜游戏中文网 ChinaAVG

标题: 【汉化与汇编】游戏汉化中的双字节问题处理原理 [打印本页]

作者: shane007    时间: 2009-8-21 00:00
标题: 【汉化与汇编】游戏汉化中的双字节问题处理原理
在网上找到一篇很稀有珍贵的关于游戏汉化中的双字节问题处理原理的文章。
, F; i- C, r- l9 f4 l原文 ' S1 J5 ]& Y  _) F$ \
http://www.cnblogs.com/Sunwayking/articles/1380777.html 6 w4 b) k# X3 R2 M0 ?) l; ^
; m) H9 d1 J* ?2 X& H
假设原始字库引擎如下(单字节字库引擎,不支持双字节):
5 ^/ ^! m0 O% {) {# ^6 H# e9 X1 z( \7 H# k( X; L5 Z
@begin:
. z8 `5 A7 E+ ~; q....
  f4 f5 g9 a: x0 H' X! c1 vmov al,byte ptr[ecx] ;把要单字节字符取出来放在al中 . W( {0 C! Y8 \
movzx eax,al ;零扩展一下 8 ]4 Y; a7 N7 X2 C# O2 N8 o0 ^
push eax ;要处理的字符压栈
2 y' g; n! m  Fcall 贴字的函数 ;查询字库并控制显卡绘制出字符
! U2 |! N, ]8 e/ `inc ecx # p8 F7 B, g6 o5 k- a
jmp @begin
% n5 T* Y0 n2 T) ~- J, q: \: s7 h% ?# L; d# K  b

; ~* h8 W; |/ W# e- w7 o现在想让他支持中文,需要对双字节特别处理: . p6 b5 |+ g- m' |. ?% @
/ R& W8 i' r  Z# N! Q9 E2 y
@begin: % h: [6 Y5 U7 q# v
.... - _  Y: r7 c5 s* B( G
mov al,byte ptr[ecx] ;把要单字节字符取出来放在al中 + s& T7 B0 L/ _* d9 W" k; @, c4 w  e

: j( R3 N  G5 m8 R/*双字节处理代码*/ + ~, p7 m$ i  ^. T6 ]5 w& l
test al,80h ;判断是否是中文gb2312编码. : S* f/ A: N% U
je @单字节
) r7 n9 z5 q% B- m* x- q0 Fshl eax,08h
, H& m$ x# F/ L5 R) }% z; e! Pinc ecx ' q( z3 Q9 T% f$ F* |- W
mov al,byte ptr[ecx] ;再取出一个单字节字符放在al中 9 d) ^) [( J0 O* K( B' n
jmp @双字节 ; E+ @5 ~' W" O0 ~
/*双字节处理代码*/ 1 M, W3 {3 F$ a3 X0 N

5 ~* l/ s9 P, |1 n@单字节: - k, F; G5 _9 X5 R& A
movzx eax,al ;零扩展一下
3 |# l. A- x# _- S5 Q@双字节: $ B, W( ~. v2 F) H1 f5 ^7 b( b) u
push eax ;要处理的字符压栈 6 Y- p  q4 @6 J' |3 ^+ I# L1 x
call 贴字的函数 ;查询字库并控制显卡绘制出字符 " E* l9 V7 a+ Q# T6 ^
inc ecx
2 n1 V$ K. b3 V7 Ljmp @begin
作者: shane007    时间: 2009-10-12 17:02
2009.10.12  更新标题




欢迎光临 冒险解谜游戏中文网 ChinaAVG (https://chinaavg.com/) Powered by Discuz! X3.2