冒险解谜游戏中文网 ChinaAVG

标题: 英雄无敌四风之战争的汉化分析 [打印本页]

作者: jinxin8866    时间: 2010-3-15 20:37
标题: 英雄无敌四风之战争的汉化分析
以下是英雄无敌四风之战争的汉化分析:! _% a  a2 K! E+ u
! T1 C/ J5 p# ]8 G& I) Q' o
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
' T1 a2 y( ^1 Z; ?3 O: h& z00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 / l- i- `1 U" v2 z3 e, T4 P
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
: D* P8 a8 |8 b3 Q/ m4 D00 00 40 00 00 00 00 00 00 00 00 00 00 30 002 r- Y- B6 A+ _$ t7 e- s3 v
90 F0 F0 54 00 00 00 00 00 00 00 00 F0 F0 03 4 N) H/ \/ s, e& ~) F( X  E
B0 F0 F0 F0 45 00 00 00 00 00 00 30 F0 DF 0F
4 F6 Q) H  w. i/ l2 h, ]4 |2 V5 g7 ~90 F0 F0 F0 EF 24 00 00 00 00 00 30 F0 BF 0D- x" b1 u' A* {& |+ y- {
70 F0 EF F0 F0 EE 22 00 00 00 00 30 F0 BF 0B   S0 h$ |: j1 m  J  h6 s! d+ ?4 _2 _
70 F0 4F 9E F0 F0 EE 22 00 00 00 30 F0 AF 0B
; t4 M( _/ J% S, K70 F0 3F 04 99 F0 F0 EE 22 00 00 30 F0 7F 0A , ?% i$ m6 ?2 B7 j1 }6 F. |
70 F0 3F 03 00 99 F0 F0 EE 22 00 30 F0 7F 07 $ A" ?, {: S3 F: y! }+ D6 a  ]
70 F0 3F 03 00 00 99 F0 F0 EE 22 30 F0 7F 07 . T3 {, y" x6 L* \8 o: s+ B& u
70 F0 3F 03 00 00 00 99 F0 F0 EE 62 F0 7F 07
5 n: _; _/ i) N5 B0 ]8 h" \70 F0 3F 03 00 00 00 00 99 F0 F0 F0 F0 7F 07
: y0 t6 \! s! {5 x$ w% ?1 Q, c90 F0 3F 03 00 00 00 00 00 99 F0 F0 F0 7F 07 1 F9 P2 y; N. L: y% U( l* [; }
B0 F0 3F 03 00 00 00 00 00 00 99 F0 F0 7F 07  
  k' D4 b9 r4 DD0 9B 1F 03 00 00 00 00 00 00 00 89 AF 1F 07 : U5 ^, w- o8 s! J2 a0 s
10 0D 09 01 00 00 00 00 00 00 00 00 08 0A 01 6 ~3 Z3 f1 E! A' X$ ]: M5 {6 f
00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
! t9 i0 S7 J6 R- q  p( [, d& m, i00 00 00 00 00 00 00 00 00 00 00 00 00 00 00   O$ P3 g1 [3 R- L
这是本人从内存中导出N的点阵字库,一个字节表示一个点,数值越大,颜色越深,
6 c, z* H$ t' n% o# d) u8 ?8 ]6 [7 K
0071BD50  /$  51                    push ecx4 s# Z2 D, b, @" N4 Z2 p5 E
0071BD51  |.  53                    push ebx- I# r( p$ N0 O& `7 Y
0071BD52  |.  55                    push ebp: B5 J4 {( |9 j* [
0071BD53  |.  8B6C24 1C             mov ebp,dword ptr ss:[esp+1C]
( n" @' a; s- s! y  \: z# P0 u. X6 E, X0071BD57  |.  894C24 08             mov dword ptr ss:[esp+8],ecx) v. I. d5 q$ A0 l5 W
0071BD5B  |.  B3 01                 mov bl,1! o0 t* H0 X' p+ o8 f. T
0071BD5D  |.  8A45 00               mov al,byte ptr ss:[ebp]
$ z5 }2 t1 Z, [4 W, C; `0071BD60  |.  84C0                  test al,al
% x6 C: H( s* D/ A4 r# c% e0071BD62  |.  74 69                 je short heroes4.0071BDCD
4 v2 T0 Y. ~" ]" C7 l) M( H0071BD64  |.  56                    push esi
* K( R, I# Z6 u" [7 n' }7 E: Y( X0071BD65  |.  57                    push edi! U# Y! B2 o# V0 x# h* }
0071BD66  |.  8B7C24 1C             mov edi,dword ptr ss:[esp+1C]
4 P0 X9 {. K: f/ T3 @# z0071BD6A  |.  EB 04                 jmp short heroes4.0071BD70* U( s$ r, Z3 ?- x5 N
0071BD6C  |>  8B4C24 10             /mov ecx,dword ptr ss:[esp+10]
2 A3 c+ Q% M  ]% G$ P1 Z" P0071BD70  |>  8B51 08                mov edx,dword ptr ds:[ecx+8]
. i3 ]3 k- n/ P) C' L$ p0071BD73  |.  25 FF000000           |and eax,0FF4 ?) e% y, v8 ^7 {" x2 b0 ]
0071BD78  |.  2BC2                  |sub eax,edx
6 E4 y2 v, ?3 Z7 F3 X3 R0071BD7A  |.  78 05                 |js short heroes4.0071BD81  A* m) W  c/ @- Q
0071BD7C  |.  3B41 14               |cmp eax,dword ptr ds:[ecx+14]
  I; [! q" _& {" H0 {  L1 b( U0071BD7F  |.  7C 02                 |jl short heroes4.0071BD83
- `& f, X6 u+ C+ K8 A/ h0071BD81  |>  33C0                  |xor eax,eax
, O6 \$ S+ s, t' n$ w5 V0071BD83  |>  8B49 18               |mov ecx,dword ptr ds:[ecx+18]* H# H. Z6 [' ^0 A% R
0071BD86  |.  8D1480                |lea edx,dword ptr ds:[eax+eax*4]        ;  字符编码基地址存到edx' }% e, G) A$ k- n& T9 W) ~
0071BD89  |.  84DB                  |test bl,bl3 z& I$ L/ j" d. X. \
0071BD8B  |.  8D0450                |lea eax,dword ptr ds:[eax+edx*2]
# I& M+ b3 s3 o+ p/ s0071BD8E  |.  8D3481                |lea esi,dword ptr ds:[ecx+eax*4]
: P0 p% `7 `( u- t; q  c0071BD91  |.  75 03                 |jnz short heroes4.0071BD96
$ [) `6 g- {5 l7 ]3 o. X% t0071BD93  |.  037E 14               |add edi,dword ptr ds:[esi+14]
) B* y8 y" G3 M* A; V* X0071BD96  |>  8B5424 30             |mov edx,dword ptr ss:[esp+30]
( S6 G; {& o2 i3 F/ R) F: ~0 ]" B* y! f0071BD9A  |.  8B4424 2C             |mov eax,dword ptr ss:[esp+2C]4 ?* I4 J% G1 d  I& S- Q
0071BD9E  |.  8B4C24 28             |mov ecx,dword ptr ss:[esp+28]  Z8 o0 M% o( V( F' H! o0 M  k9 D: r
0071BDA2  |.  52                    |push edx                                ; /Arg61 C$ }& z/ a( c
0071BDA3  |.  8B5424 24             |mov edx,dword ptr ss:[esp+24]           ; |! i/ U6 B+ n$ B2 g3 j: |
0071BDA7  |.  50                    |push eax                                ; |Arg5
% \# g9 \9 B$ D( z( `. k0071BDA8  |.  8B4424 20             |mov eax,dword ptr ss:[esp+20]           ; |
* F% W. F. P. s0 K  B  J* k0071BDAC  |.  51                    |push ecx                                ; |Arg4
" Y" E1 m% e- w# `. s: {  k0071BDAD  |.  52                    |push edx                                ; |Arg3
: f# W4 u9 q- p0071BDAE  |.  57                    |push edi                                ; |Arg2
1 x, w0 z7 }" u7 C; j  c; d, P0071BDAF  |.  50                    |push eax                                ; |Arg1
6 M% {4 Q, G1 u8 L% ~: ?0071BDB0  |.  8BCE                  |mov ecx,esi                             ; |
& X9 ~4 @* S2 [; @$ f) m& A0 L' k0071BDB2  |.  32DB                  |xor bl,bl                               ; |% F( }# N3 k1 }4 k
0071BDB4  |.  E8 67FAFFFF           |call heroes4.0071B820                   ; \字库读取函数# J3 G/ a; h1 v8 `
0071BDB9  |.  8B4E 18               |mov ecx,dword ptr ds:[esi+18]5 ?4 A, j: y8 w3 d/ g: p# S
0071BDBC  |.  8B46 04               |mov eax,dword ptr ds:[esi+4]  C& n" I9 @' R/ @6 a; \) N* {
0071BDBF  |.  03C8                  |add ecx,eax
  I& l0 f' A- h0 r1 }0071BDC1  |.  8A45 01               |mov al,byte ptr ss:[ebp+1]
$ A) O) h6 c; ~$ N- ]# b+ @$ s# {1 U9 f0071BDC4  |.  03F9                  |add edi,ecx8 j* j% Y+ b# R# R$ V, r! q
0071BDC6  |.  45                    |inc ebp" |* [4 x( ~2 b5 w7 q7 ^4 ]  h
0071BDC7  |.  84C0                  |test al,al
+ a  g4 V( T% {& f4 ?. T0071BDC9  |.^ 75 A1                 \jnz short heroes4.0071BD6C/ C7 J) B7 \, L6 n( `
0071BDCB  |.  5F                    pop edi
6 ?9 c$ @) @- _4 v: R! D" i0071BDCC  |.  5E                    pop esi, z8 u% M- J: Z) d9 p
0071BDCD  |>  5D                    pop ebp
+ m) L* T1 u# D! a; i0071BDCE  |.  5B                    pop ebx
5 {2 d3 d2 a" B4 y5 K0071BDCF  |.  59                    pop ecx3 V& `- b& a" O  B
0071BDD0  \.  C2 1C00               retn 1C
- u' }: u$ e7 C/ W% p1 r1 {5 D. G# [
edx为字符编码基地址,每个字符占2C个字节,+ Y6 t2 a" X% l! @' L
edx+4表示字宽' Z- L2 E% c9 n: p7 s3 p% z
edx+8表示字高* r" H; m# i! h- \! c2 n
edx+10表示该字符点阵在内存的地址,0 \7 Q# U( L6 j4 b! D: r
edx+14表示该字符前面的间距
$ L5 s, Q5 _' Zedx+18表示该字符后面的间距: P- t* p' G& H0 N$ q

# o3 }+ @, I& ?5 T1 V& X$ r字库文件位于data目录下的heroes4.h4r,可用H4ResEx解包器打开,打开之的文件名为font.Small Fonts5,font.Small Fonts7,
8 I& U( H. V0 @0 x但是字库文件的内容与导出点阵对不上,还有待继续分析。。。。。。。。。。。。。。。。
作者: shane007    时间: 2010-3-15 20:42
哇,又来了一位懂汇编的高手。关注中。。。
# ]% m1 X  l. K7 @. d4 C对了,楼主,你不妨把字库文件什么的发上来,大家也可以帮你看看。
作者: jinxin8866    时间: 2010-3-15 20:46
接下来的任务:5 u3 ~. z" k$ U" a3 m7 T, Z
1、扩充中文字库1 f6 N" o; O! g0 w
2、扩充中文编码表6 G5 }( [' b; B
3、修改字符读取函数,支持双字节读取
作者: jinxin8866    时间: 2010-3-15 20:52
以下是解压出来的字库文件:
作者: jinxin8866    时间: 2010-3-15 21:01
本游戏的字库是不等宽的点阵字库,一个点用一个字节表示,本人对字库文件不是很了解,希望各位帮我分析一下。
作者: shane007    时间: 2010-3-15 21:05
我感觉有点类似断剑1的字库,你可以看看以下帖子
4 V# h$ ^. W0 k' U% D, C  |; n8 E3 J) X+ l3 ^
【断剑1汉化项目】字体资源文件彻底解说
8 G0 ]8 ]- Q8 uhttps://www.chinaavg.com/read.php?tid=18959
9 X, M! ?. |, a: ~4 X; n9 K, B, r- @$ o8 O) ]
【断剑1汉化项目】中文字库设计
4 d( h* @  k7 c8 c7 T% D8 A, ^3 l; Yhttps://www.chinaavg.com/read.php?tid=18975
作者: shane007    时间: 2010-3-15 21:22
你的字体的头部有一些信息,应该是字符的高度,宽度等信息。; w- c" Y; }5 r; A6 l6 f! r
然后下面是连续存放的一连串字符,每个字符都是n个字节。' X9 H2 O, r4 Q! a' I. f. x8 k
0xF0是有色点,其他的颜色,如边框,估计是游戏动态生成的。
* U# `; E4 |+ v0 Z2 x; z/ x2 m就像断剑那样。
作者: jinxin8866    时间: 2010-3-16 11:07
本人用CrystalTile打开了font.Small Fonts7,宽度、高度调整为8*15,可以很清楚的看到好几个大写字母的图片,其中0F表示字体颜色,F0表示阴影颜色,每个字模前面标有该字模的宽度,高度,文件头部的信息搞不清楚
作者: shane007    时间: 2010-3-16 11:45
是这样的吗?
作者: jinxin8866    时间: 2010-3-16 16:51
是的,字符是不等宽的,经过调整大写字母都能看清,其他的就看不清楚了,不知道怎么回事
作者: jinxin8866    时间: 2010-4-24 06:54
本人的第一个汉化作品终于出炉了,庆祝一下!!!!!!!!!!!!!
作者: jinxin8866    时间: 2010-4-24 06:59
标题: H4mod中文版
下载地址如下:(解压出来后放在游戏目录下就可以了)
作者: shane007    时间: 2010-4-24 07:08
热烈祝贺楼主!
' k5 N9 k! t6 @+ H' `另外请楼主在有时间的时候把它的汉化分析补充完整。5 y. S  j+ `, W' F/ r2 b0 Y4 u
字库结构分析,汇编代码修改等等,谢谢!
作者: 夜雨    时间: 2010-4-24 07:44
LZ辛苦了
作者: cx2005    时间: 2010-4-24 09:15
不支持中文地图,中文地图一放就去就游戏崩溃。
作者: aids0079    时间: 2010-4-24 19:31
疾风战场不是有中文版了吗?
作者: jinxin8866    时间: 2010-4-24 21:17
疾风战场有的是繁体中文版,本人是根据英文版汉化成简体中文版,读取简体中文的地图不会产生乱码
作者: shane007    时间: 2010-4-24 21:25
引用第16楼jinxin8866于2010-04-24 21:17发表的 : 5 @' t0 l8 x9 b9 d
疾风战场有的是繁体中文版,本人是根据英文版汉化成简体中文版,读取简体中文的地图不会产生乱码

. n9 N; T, b7 q1 E! i- O8 N+ l! t7 `) F3 P. i& \8 q! i

8 ~4 Y% }1 g0 B' S9 d/ Bjinxin8866,希望把静物2的XCPK格式再研究一下,谢谢了!




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