上一主题下一主题
«12»Pages: 1/2     Go
主题 : 【原创】【讨论】世嘉土星游戏汉化教程2(图片汉化)
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
楼主  发表于: 2022-01-14 09:05

【原创】【讨论】世嘉土星游戏汉化教程2(图片汉化)

管理提醒: 本帖被 YZB 执行加亮操作(2022-01-14)
大家好,世嘉土星的汉化教程又来了,这次我们讲讲游戏中图片的汉化
以下说明全部是我个人经验以及猜测,如果有说得不对的地方,欢迎指正

本来是想用上次教程中提到的游戏做为例子的,但是在那个帖子里有朋友遇到汉化的问题,所以正好用他说的那个游戏先来做个教程示范

本贴会涉及到以下几个软件,软件的使用和下载请妆Ρπ搜索学习 ,本贴不做过多的介绍

1 yabause(ss模拟器)


2  winhex(16进制编辑软件)


3  CrystalTile2  以下简称ct2(国内汉化组大佬写的软件,主要用途是生成 查看以及编辑点阵字库)


4 Photoshop(图像编辑软件)


以上3款软件可以用你自己熟悉的其他软件代替,主要能达到目的就可以





首先是运行模拟器打开游戏,然后当游戏运行到出现需要修改的画面的时候







因为 yabause模拟器提供了打开和关闭显存图层的快捷键

在这里可以查看各自图层对应的快捷键,分别为右边小数字键盘1 2 3 4 5 6 






所以,在游戏画面中尝试打开或者关闭某一个图层来确定文字是使用了哪一个图层
在这个游戏中当我们按下 小键盘的 1键以后,文字图层全部都消失了,所以可以确定文字图层在VDP1里面





然后我们进入模拟器的vdp1选项里面查看




在vdp1的左边窗口界面,我们依次浏览不同的活动块,然后在其中找到显示文字的那一个活动块
注意了,找到具体的活动块以后,在中间的vdp命令信息窗口里面有很多参数需要自己记录一下

Texture address  :该图片数据 在vdp1里面的地址 12280(vdp1 起始地址为5c00000,所以实际地址为5c0000+12280 = 5c12280)


Texture width : 图片宽度 176


Texture  height: 图片高度  32


color mode: 图片显示方式 (这里是4bpp 16bank)也就是半个字节显示一个像素,1个字节显示2个像素,半个字节最大值是0xf,所以最多只能显示16个颜色


color bank : 该图片使用颜色表的编号   3380(不清楚编号转成具体地址的详细算法,好像是除以4就可以?)  (颜色表起始地址为5f0000+3380/4=5f00ce0)




所有信息记录完毕以后,我们先把运行中的游戏数据dump下来
 

然后设置好存放dump的地址和名字,起始地址就填0,结束地址默认,选择下载,最后点一下OK,就可以了 
 



接下来,我们用ct2打开刚才dump的文件
先切换到图形显示模式,然后按图中箭头处设置好参数,可以看到文字显示出来了,只是显示的颜色不对



接着因为我们在前面已经算出调色板的具体地址(5f0000+3380/4=5f00ce0)

所以我们用winhex打开原来模拟器dump的文件,直接跳到5f00ce0这个地址
 

红框圈住的就是这个图片的颜色表了,(因为ss的颜色表一般都是16bit,2个字节表示一个颜色,所以16个颜色就是16x2=32个字节)



那么问题又来了,因为ct2的颜色表导入导出只支持3字节rgb的act格式,或者4字节rgba的pal格式,所以我们需要把原游戏的2字节的颜色表转成3字节的act或者4字节的pal格式

具体应该怎么转呢

大部分的ss颜色表使用的格式为xrgb 1555(1+5+5+5=16bit=2个字节)
所以这里需要自己转换
具体算法为:

ss 色表格式,2个字节代表一个颜色  
第一个字节 byte1
 
第二个字节 byte2
 r=(byte1&0x7c)<<1;  // 第一个字节丢掉最高位,然后取接下来的5bit位,结果x2    

 g=((byte1&0x3)<<6)+((byte2&0xe0)>>2);//   第一个字节最低2bit位乘以64)+ (第2个字节最高3bit除以4)

 b=(byte2&0x1f)<<3;// 第二个字节取最低的5bit,结果乘以8

算出来的rgb就是act格式中的第一个颜色了,以此类推,继续算下一个颜色..............

感谢我们的sky0611大大写了个在线转换的网页端,这样配合教程就方便多了
详细的使用方法在本贴的11楼.


按照这个方法把16个颜色全部转换出来以后,把文件保存为act
然后在ct2里面选择颜色表加载这个文件



可以看见图片基本显示正常了,但是为什么背景显示不对呢?

其实是因为在游戏中调色板的第一个颜色会默认显示为透明色,但是在ct2里面直接把第一个颜色显示出来了




既然已经在dump文件里面找到图片数据了,那么接下来我们需要找到图片数据具体是在哪一个文件里面


首先我们用winhex打开dumo文件,跳到这张图片的具体地址
 

红框内就是这个图片的数据了我们先在其中选择不是0000数值的一些连续数据,然后在选好的数据里面按鼠标右键,

选择编辑


然后继续选择复制选块,16进制数值,这样这些选择的数据就复制到剪贴板了



接着用winhex把游戏文件夹里面若干数量的文件一次拖到winhex里面,然后进行批量搜索(数量多少随意,只要电脑不卡,我这台i7 3770k 16g内存的古董机一次也可以拖几百个文件)

 


运气不错,还真在一个文件里面找到了



接下来用ct2打开这个文件,跳到找到的地址DDC0 
细心的朋友可能已经看见在地址ddc0的前面也就是dda0会发现2字节组的颜色表数据了




果然有显示,那么把原来做好的act色表也加载进来,就显示正常了(调色板----导入act)




也可以看见这张图片后面往下还有几张显示不完整的文字图片,这些需要手动调整该图片的宽度和高度,然后一个一个导出来(不会看汇编 不会写程序只能这样           )


这时候我们可以使用ct2把第一个文字图片导出来了
先鼠标左键选择第一张显示完整的图片,然后点编辑--导出--另外存为bmp






接下来就可以打开ps进行图片修改了
 



ps操作本人水平有限,就不说了,需要注意的是保存的时候需要导入原来的色表,并且另存为bmp需要设置




 









图片改好了,现在自然是把图片导入到原文件里面去了

ct2打开图片文件,跳到原图片位置,设置好相关的参数,鼠标左键点一下原图片,然后点编辑,导入,选择改好的图片





可以看见图片导入进来了,但是还没结束,需要在导入图片上双击鼠标左键(红框内),然后点保存,这样才是把图片写入到原文件中






文件写入进去了,那么重构iso测试一下吧




可以看见文字正常显示了          


最后说下总结,上面说了一大堆,发了一堆的图片,看似复杂,其实真正懂了,熟练操作起来很快
以上教程适用于那些图片数据没加密或者压缩的游戏,如果加密压缩了,整个游戏文件夹里都搜索不到的话,那可能就是压缩或者加密过了


汉化是个考验细心和耐心的力气活,三分钟热度和半途而废的人比比皆是
所以古语有云,珍惜生命,远离汉化。
[ 此帖被YZB在2022-01-15 21:05重新编辑 ]
级别: 模拟菜鸟
UID: 321911
精华: 0
发帖: 14
威望: 0 星
金钱: 25 浮游币
贡献值: 0 点
好评度: 42 点
人气: 0 点
在线时间: 15(时)
注册时间: 2022-01-02
最后登录: 2022-01-20
沙发  发表于: 2022-01-14 15:26

天书啊
gxb
级别: 见习斑竹
UID: 12457
精华: 9
发帖: 750
威望: 38 星
金钱: 125158 浮游币
贡献值: 1350 点
好评度: 4764 点
人气: 14 点
在线时间: 731(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
板凳  发表于: 2022-01-14 16:21

看了开头,我说樱大战这游戏这么嚣张,文本敢用4bpp的字库,看到后面才发现一整段对话原来是一张图片。这种游戏汉化起来很麻烦,要改很多图。
SS上的樱大战1和2和DC的字库应该是一样的吧,编码很麻烦的
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
地板  发表于: 2022-01-14 20:23

回 2楼(gxb) 的帖子

ss的樱花大战没看过,dc版的字库的确是4bpp的,不过是pvr类型的4bpp
级别: 模拟菜鸟
UID: 321917
精华: 0
发帖: 23
威望: 0 星
金钱: 66 浮游币
贡献值: 0 点
好评度: 69 点
人气: 0 点
在线时间: 33(时)
注册时间: 2022-01-03
最后登录: 2022-01-20
草席  发表于: 2022-01-14 21:28

大佬!SS颜色表转换那一块完全没看懂QAQ
xrgb中的x是啥意思?
rgb的act、rgba的pal都有啥区别?
转换那一块也没明白,我是谁我在哪?我应该怎么转换?是写一个bat转换?还是用草稿纸转换?(划掉)
act里有多少颜色?
是不是转换完一个颜色表之后整个游戏都可以使用这一个颜色表?
我太笨了,但是我会努力坚持学习的,大佬带带我吧QwQ


hutianlu 于 2022-01-14 21:36 补充内容:
还有那些运算方法,运算符我也完全没搞懂
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
5楼  发表于: 2022-01-14 22:37

颜色表转换那里不用深究,写给会程序的人看的(sky0611说帮我写个网页版的在线转换)  

使用颜色表的情况下,一般最多256个颜色,用16进制表示就是用00-FF一共255个编码来代表这256个颜色,如果超过了1个字节的颜色表编码,那么就到2个字节了,那么2个字节的话就可以直接使用2个字节来直接表示rgb颜色了,就不需要颜色表了,所以颜色表最多是使用1个字节的编码来表示256个颜色

比如如果颜色编码是10,就表示使用了颜色表的第10个颜色
比如如果颜色编码是50,就表示使用了颜色表的第50个颜色

至于怎么使用颜色表,这个视游戏来定,一个游戏是不可能只使用256个颜色的,一般情况下只是会一张或者多张图片使用相同的一个颜色表

x你可以看成1bit,因为1+5+5+5=16bit正好是2个字节,这个1bit就是最高位的bit,可以是1(0x80),也可以是0(0x00),算是表示透明0或者不透明1的符号吧

rgb 和rgba的区别当然是后者有个a了,这个a就是alph透明图层的意思,和上面的x=1相对应,如果最高位是1则不透明,是0则透明

不过在ss游戏里面,好像一般都不会这样用的,使用转换的时候只需要留着rgb颜色就可以了,当然也是视游戏来定,具体怎么用还得看原游戏是怎么用的

如果你会写bat程序的话,当然也可以用bat写啊

    
[ 此帖被YZB在2022-01-14 22:45重新编辑 ]
级别: 模拟小生
UID: 141306
精华: 0
发帖: 95
威望: 0 星
金钱: 290 浮游币
贡献值: 4 点
好评度: 284 点
人气: 0 点
在线时间: 137(时)
注册时间: 2006-09-11
最后登录: 2022-01-20
6楼  发表于: 2022-01-15 09:57

不知道生化危机有没有加密,要是哪天重玩的时候发现有错字,不知道能不能按这个教程做修改。
感谢Y大的教程!
级别: 模拟菜鸟
UID: 321917
精华: 0
发帖: 23
威望: 0 星
金钱: 66 浮游币
贡献值: 0 点
好评度: 69 点
人气: 0 点
在线时间: 33(时)
注册时间: 2022-01-03
最后登录: 2022-01-20
7楼  发表于: 2022-01-15 14:01

回 5楼(YZB) 的帖子

原来是这样啊……我还是个小屁孩的时候学过两年C++,颜色表转换那里懂一些皮毛,能看个一知半解,但是实际操作起来就懵逼了
然后我到底也没想懂怎么转换,只能先等着sky0611大佬的网页转换器了,如果网页写好了请立马告诉我
如果可以的话,能不能先把您转换好的act表上传一下,我拿过来尝试操作呢?真是非常感谢啦
(我突然感觉我应该把以前学的那些VB6.0、C++捡起来了,因为会写程序的话真的能轻松不少,可是自从进入初二之后就再也没有时间深究了,今年6月份还得中考啊啊啊啊啊啊啊啊啊啊啊……)
saturnboy
级别: DCLT汉化组

UID: 83685
精华: 7
发帖: 842
威望: 28 星
金钱: 6756 浮游币
贡献值: 75 点
好评度: 2327 点
人气: 80 点
在线时间: 1556(时)
注册时间: 2005-12-06
最后登录: 2022-01-20
8楼  发表于: 2022-01-15 14:29

这样一张对话图一般需要多久能导出?
或者说以花组方块举例,剧情文本需要多久才能重构?
看上去很麻烦的样子,破解真不是我能追逐的目标。。
AUSU
级别: 模拟小生
UID: 318971
精华: 0
发帖: 57
威望: 0 星
金钱: 126 浮游币
贡献值: 9 点
好评度: 167 点
人气: 0 点
在线时间: 72(时)
注册时间: 2010-10-07
最后登录: 2022-01-20
9楼  发表于: 2022-01-15 15:04

直接膜拜大佬。。。
gxb
级别: 见习斑竹
UID: 12457
精华: 9
发帖: 750
威望: 38 星
金钱: 125158 浮游币
贡献值: 1350 点
好评度: 4764 点
人气: 14 点
在线时间: 731(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
10楼  发表于: 2022-01-15 19:28

回 3楼(YZB) 的帖子

DC内存是16MB,显存8MB,字库的颜色用得多问题不大
SS/PS级别一般是不可能用16色的字库的,这太浪费了,除非是生化危机那样的小场景字库
生化危机没记错应该也只是4色的字库吧
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
11楼  发表于: 2022-01-15 20:58

Re:回 5楼(YZB) 的帖子

感谢我们的sky0611大大写了个在线转换的网页端,这样配合教程就方便多了

https://sgcn.games/other.html界面点击
SS RGB颜色表在线转换就可以进入了





以下是使用此网页端把16位rbg转换成24bit的教程


首先需要把16位的数据复制到剪贴板

先用winhex打开16bit的颜色表文件,用鼠标左键把颜色表数据选择好(一般是32或者1024个字节),然后在选好的数据里面按鼠标右键,选择编辑
然后继续选择复制选块,16进制数值,这样这些选择的数据就复制到剪贴板了







复制完数据到剪贴板以后,打开转换的网页端
https://sgcn.games/hex2rgb.html

在输入的窗口里面,鼠标右键把数据粘贴进去,然后下面的选项选择rgb,最后选择转换以后,输出窗口就会把那些数据全部转换出来

这里注意一下,输入窗口的数值必须是16进制的0-F,长度必须是4的倍数,这样转换才不会出错




数据转换出来以后,把输出窗口里面的数值复制到剪贴板(ctrl+c),然后打开winhex,新建一个文件,把数据按如下设置写入进去,另存为.act的后缀文件就可以了










YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
12楼  发表于: 2022-01-15 21:12

引用
引用第8楼saturnboy于2022-01-15 14:29发表的  :
这样一张对话图一般需要多久能导出?
或者说以花组方块举例,剧情文本需要多久才能重构?
看上去很麻烦的样子,破解真不是我能追逐的目标。。


如果图片没压缩的话,用模拟器调试大概半小时都不用就可以把图片定位出来

花组方块这个游戏应该都是使用了图片来当文本,这些图片非常变态,大部分图片的高宽都是记录在主程序里面的,除非是去看程序,不然一张一张调估计得好几天去了吧


引用
引用第10楼gxb于2022-01-15 19:28发表的 回 3楼(YZB) 的帖子 :
DC内存是16MB,显存8MB,字库的颜色用得多问题不大
SS/PS级别一般是不可能用16色的字库的,这太浪费了,除非是生化危机那样的小场景字库
生化危机没记错应该也只是4色的字库吧 


我记得ss的生化1就是使用了8bpp的字库,128kb非常奢侈
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
13楼  发表于: 2022-01-15 21:16

引用
引用第6楼aliang于2022-01-15 09:57发表的  :
不知道生化危机有没有加密,要是哪天重玩的时候发现有错字,不知道能不能按这个教程做修改。
感谢Y大的教程!


生化这个游戏的大部分文件是压缩过的,对于这种压缩加密游戏,这个教程不适合,因为你根本不可能在游戏的文件夹内部找到图片数据的明文


引用
引用第7楼hutianlu于2022-01-15 14:01发表的 回 5楼(YZB) 的帖子 :
原来是这样啊……我还是个小屁孩的时候学过两年C++,颜色表转换那里懂一些皮毛,能看个一知半解,但是实际操作起来就懵逼了  
然后我到底也没想懂怎么转换,只能先等着sky0611大佬的网页转换器了,如果网页写好了请立马告诉我  
如果可以的话,能不能先把您转换好的act表上传一下,我拿过来尝试操作呢?真是非常感谢啦  
(我突然感觉我应该把以前学的那些VB6.0、C++捡起来了,因为会写程序的话真的能轻松不少,可是自从进入初二之后就再也没有时间深究了,今年6月份还得中考啊啊啊啊啊啊啊啊啊啊啊……) 


学一下比较好,可以扩展自己的思维,不需要太精,只需要常规性的那些操作就可以了
级别: 模拟菜鸟
UID: 321917
精华: 0
发帖: 23
威望: 0 星
金钱: 66 浮游币
贡献值: 0 点
好评度: 69 点
人气: 0 点
在线时间: 33(时)
注册时间: 2022-01-03
最后登录: 2022-01-20
14楼  发表于: 2022-01-15 21:51

YZB和Sky0611大佬太敬业啦,这我要是不好好去学习的话天理难容
我这就去尝试一下
级别: 模拟菜鸟
UID: 321917
精华: 0
发帖: 23
威望: 0 星
金钱: 66 浮游币
贡献值: 0 点
好评度: 69 点
人气: 0 点
在线时间: 33(时)
注册时间: 2022-01-03
最后登录: 2022-01-20
15楼  发表于: 2022-01-15 22:14

回 11楼(YZB) 的帖子

等等……好像11楼的前两张贴图有点小问题???
教程上说选择32或1024个字节的颜色表,但是图片上却选择了48个字节?
而且这两张图和1楼的14、15图重复了
没猜错的话应该就是贴图时小失误,贴重复了
级别: 模拟小生
UID: 141306
精华: 0
发帖: 95
威望: 0 星
金钱: 290 浮游币
贡献值: 4 点
好评度: 284 点
人气: 0 点
在线时间: 137(时)
注册时间: 2006-09-11
最后登录: 2022-01-20
16楼  发表于: 2022-01-16 08:27

回 13楼(YZB) 的帖子

谢谢Y大,不知道后续还会不会有处理压缩加密游戏的教学,期待……
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
17楼  发表于: 2022-01-16 23:27

Re:回 13楼(YZB) 的帖子

引用
引用第16楼aliang于2022-01-16 08:27发表的 回 13楼(YZB) 的帖子 :
谢谢Y大,不知道后续还会不会有处理压缩加密游戏的教学,期待……


数据压缩 加密的游戏,需要会用模拟器的调试器追踪游戏的解压或者解密程序,所以 需要能看懂土星的汇编程序,并且逆向出原游戏的解压或者解密流程,然后在电脑上根据这个流程,写一套压缩 解压或者加密 解密的程序才行

这些已经涉及到编写程序的相关知识了,不是发汉化教程就能说得清楚的


如果上面这些都会的话,也根本不需要什么教程了 


当然也可以直接搜索网上是否有该游戏的现成工具.........
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 18342
威望: 171 星
金钱: 17154 浮游币
贡献值: 8997 点
好评度: 52346 点
人气: 4293 点
在线时间: 15076(时)
注册时间: 2004-10-02
最后登录: 2022-01-20
18楼  发表于: 2022-01-16 23:31

Re:回 11楼(YZB) 的帖子

引用
引用第15楼hutianlu于2022-01-15 22:14发表的 回 11楼(YZB) 的帖子 :
等等……好像11楼的前两张贴图有点小问题???
教程上说选择32或1024个字节的颜色表,但是图片上却选择了48个字节?   
而且这两张图和1楼的14、15图重复了   
没猜错的话应该就是贴图时小失误,贴重复了   



11楼的图片我只是借用1楼的来用用而已,这些基础操作就不重新上传新图了
级别: 模拟菜鸟
UID: 321917
精华: 0
发帖: 23
威望: 0 星
金钱: 66 浮游币
贡献值: 0 点
好评度: 69 点
人气: 0 点
在线时间: 33(时)
注册时间: 2022-01-03
最后登录: 2022-01-20
19楼  发表于: 2022-01-17 14:03

不懂就问,教程里举的例子能够得知图片文件的起始位置是5c12280,那么结束位置是怎么得知的呢?
上一主题下一主题
«12»Pages: 1/2     Go