设为首页收藏本站官方微博

汉化任务 UV坐标暴力扫描工具(scgame请进)

[复制链接]
查看: 2098|回复: 4
打印 上一主题 下一主题

[汉化任务] UV坐标暴力扫描工具(scgame请进)

跳转到指定楼层
楼主
发表于 2010-1-22 11:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

UV坐标暴力扫描工具(scgame请进)

在很多游戏里都采用UV坐标来保存每个字符的坐标,如果字体定义文件是一个单独的文件, 1 a( B9 |7 v; |0 \4 H
分析起来还是比较容易的,比如神秘岛4和福尔摩斯觉醒等等。但是如果字体定义是以数组的
" h2 N& `) N; F: D- C0 q形式编译到exe文件或存在于其他数据文件里面的话,寻找起来就比较麻烦了。 & y6 q% V, W' s2 S6 V1 T
- _* A% B2 N; v1 l; a
本工具就是我设计的暴力扫描文件里的疑似UV坐标的工具。 # i5 l2 B2 n# y
我们假设有一张256X256大小的图片,如果字库定义采用UV坐标的话, : `3 w* r; q+ x% W+ s; v# K6 ?
在字库定义文件中肯定会存在1/256-256/256这样的UV坐标。 2 u) W; T6 l) C& f) y1 V) }
(当然,都是以4个字节的16进制数的形式存在的)
% y+ l9 h( s) V我们的工具就是来个256次的循环扫描在文件中寻找是否存在1/256-256/256的16进制数。 0 d9 E: \5 ~- M. |/ Q
如果找到的话,就在画面上表示出来。 ! c/ ~. n% \- y
表现形式是这样的在屏幕上画一个很长的矩形,代表一个文件,扫描到疑似UV坐标的话, 2 w& t6 t2 E* e: H
就在相应的位置画上一条纵向的竖线。
; f. U0 N0 b8 S6 U1 ^如果这个文件里存在图片字库的UV坐标的话,将会在某一个区域集中且均匀地画上很多竖线。
5 c- Q0 |- J/ n" m9 H1 s用肉眼就可以很直观地看出来。当然,我们可能会扫描到一些其实并不是UV坐标的数据,但是 7 `0 x/ U) x* f* z0 T' k  D
由于这些数据是分散,非均匀分布的所以可以很直观地排除。 # ^, _5 J0 K& y' F# R, n# k
这个工具主要是针对exe和其他数据文件的,但是基本上来说,可以扫描任意文件。 7 f9 L2 ?9 k6 k
有了这个工具,可以大大加快寻找图片字库定义的过程。 9 ~& s9 Z) s! _7 y9 g5 w0 L
另外,不是所有图片字库都使用UV坐标的,有个小技巧,如果在游戏中发现使用不同大小的同一种字体,但是找到的图片字库只有1种大小的话,就很可能是使用了UV坐标。
2 {0 V/ ]2 A" b& P5 ]对于非UV坐标图片字库,我以后会设计另一个暴力扫描工具。 : f( X' d5 k- Q( J; A' L0 c
( B% L& Z- u! m# W% x0 @9 |
不知道有没有懂技术的热心朋友来完成这个工具?
# G! Z$ G- N" T, z! s" Y- ]$ b
  V! l) {' B( {0 H2 }1 I6 A, u----------------------------------------------------------
/ j$ q; R( q( N+ ~" [6 c* T! {9 W2010.4.15  更新 7 J2 y  T/ c4 t
scgame,你好,想把这个任务安排给你来作。
5 c8 {, u# T4 ~' }* r3 Z# K最近如果事情比较多的话,可以等有空的时候再做,不着急。 " z! R$ V! C6 i! O8 U& V
我把工具的设计再修改一下,就是依次扫描字体定义文件,步长1个字节,如果每4个字节转化为浮点数再乘以2048是一个整数的话。 就输出1行log,要求有这四个字节的第1个字节的offset,和乘以2048后的结果。 & B( s! z' f4 x6 N" X
有不懂的话,请提问。
( R) `7 k0 q) A; K. O, T0 P2 t9 [$ O  _5 q& ]5 M- [! d% z  G' T* i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
 楼主| 发表于 2010-4-15 22:26 | 只看该作者
2010.4.15  更新
回复 支持 反对

使用道具 举报

板凳
发表于 2010-4-17 09:58 | 只看该作者
哦,我知道了,好多任务啊,哈哈,先把第一个做掉再慢慢来
回复 支持 反对

使用道具 举报

地板
发表于 2010-4-17 10:14 | 只看该作者
为什么是乘2048
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2010-4-17 10:26 | 只看该作者
引用第3楼scgame于2010-04-17 10:14发表的  :
# h! A7 y# Z# \$ y为什么是乘2048
7 K2 x1 p4 ^8 o- R$ p
因为乘256为整数的话,乘2048 也必为整数,反过来则不成立。
; a6 j6 {' m. t所以我们要选较大的1个,就选2048吧,游戏里面的图片字库的宽度一般没有更大的了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表