冒险解谜游戏中文网 ChinaAVG

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

作者: shane007    时间: 2009-8-21 00:00
标题: 【汉化与汇编】游戏汉化中的双字节问题处理原理
在网上找到一篇很稀有珍贵的关于游戏汉化中的双字节问题处理原理的文章。
7 h/ ~, h. Q8 j' h3 P- D! a, N" d原文 ' L+ }: y# S+ x" o3 Z
http://www.cnblogs.com/Sunwayking/articles/1380777.html ; y* h2 ~: S6 J$ e* ~
+ _; I9 j+ T6 i* r- a( d4 m
假设原始字库引擎如下(单字节字库引擎,不支持双字节): - M+ j& N0 O# W* n' V" {& O

1 ^( ?6 [- X3 ^( \7 N  l@begin:
$ Q" R6 G& ~  ]: |" u6 P....
* c  K( }5 |6 x$ b  N6 p9 Mmov al,byte ptr[ecx] ;把要单字节字符取出来放在al中 ! b% K: f# A. F5 M# W4 Z- c
movzx eax,al ;零扩展一下 0 l1 t5 |) G' V8 U; q
push eax ;要处理的字符压栈 - }% E" `2 Y% C! a# y
call 贴字的函数 ;查询字库并控制显卡绘制出字符
. Y+ U" ]) s$ h6 |inc ecx
' f8 ~" s& N8 b  c/ hjmp @begin
. ]. N9 c! y2 G0 [0 r* |
  U; q. `# S3 i$ K0 R' |& I" \/ |1 L; {8 M5 i9 {/ @5 U6 c
现在想让他支持中文,需要对双字节特别处理:
+ P. U4 `. t$ f$ p
, l, i8 |/ {1 g; G# x@begin: 8 c" x- A! j  P8 l$ ~
....
2 z2 x! w/ A+ P2 m8 Fmov al,byte ptr[ecx] ;把要单字节字符取出来放在al中 " j7 n- m9 Q: Q" J7 w5 M+ z

/ ~* H7 }1 G8 F+ |/*双字节处理代码*/
$ i! x# M# \+ }0 u& M9 |" @5 atest al,80h ;判断是否是中文gb2312编码.
8 l  ?0 X: W* ?7 d6 S% b' y7 ^je @单字节   [0 \6 q/ g- g1 K" ~3 k; [
shl eax,08h
- Y1 e9 F$ j, V' b2 v' Winc ecx
9 D+ h  G) J$ h/ f+ x$ ~. ?8 Tmov al,byte ptr[ecx] ;再取出一个单字节字符放在al中
3 J& _: n$ D$ t0 y! n  Sjmp @双字节
' t/ C: K. `& ?* w9 |9 u: D/*双字节处理代码*/
( {  y+ W- b7 t8 L3 _8 G, \) z, G5 m0 _8 [& E: s: I
@单字节:
, i& i% H# T! v) P7 ~  Mmovzx eax,al ;零扩展一下 5 S6 j& R' D) @( k- Y
@双字节: ( H5 I: r/ P# s( a
push eax ;要处理的字符压栈
1 e7 Z1 j- p" H7 ?8 ~; [( vcall 贴字的函数 ;查询字库并控制显卡绘制出字符
' B; c# k" @  B+ ?- G/ H  Winc ecx
, \" A* g7 N, Vjmp @begin
作者: shane007    时间: 2009-10-12 17:02
2009.10.12  更新标题




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