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

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
40楼  发表于: 2022-02-27 12:54

Re:回 105楼(YZB) 的帖子

引用
引用第106楼hutianlu于2022-02-26 13:11发表的 回 105楼(YZB) 的帖子 :
厉害厉害!请问这个是咋找的呢?我看到有一个作弊码搜索列表但是不会用,大概是观察内存地址数据变化猜出来?


使用内存搜索或者借助其他内存软件搜索,比较有名的有EmuCheat和CheatMaker。

网上教程很多,当然你熟悉了用模拟器自带的搜索也可以

原理很简单,那些数值在内存中都是动态的,多变化几次多搜索几次就能定位到大概的地址了,然后尝 试 修 改那些地址的数值,看看游戏中是否有变化即可锁定具体地址和数值
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
41楼  发表于: 2022-03-03 11:06

引用
引用第109楼zengzidane于2022-03-03 10:02发表的  :


请教这种搜出来的地址,是否是游戏本身的Raw address? 
发现Action Replay,Yabause,EC转化后的代码,几乎和这个是一样的;而通用工具如CE,GM搜出来的明显不一样


是的
其他修改器不一样吗?
一般只是去掉了内存的头地址吧,比如这个
16097D4A 0188
其他修改器不知道,不过一般只是把前面的16去掉改成00或者其他数值了吧
因为ss内存就2m,不是6开头的1M就是2开头的1m,很多修改器都会去掉这个头改成00表示06开头或者01表示20开头什么的

如果连后面的地址不一样,那就是基址不一样吧,但是经过计算以后,实际的游戏地址肯定是97D4A
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
42楼  发表于: 2022-03-26 20:55

非常不错,翻译技术文档是最枯燥的,特别是这种巨复杂的说明文档,还是vdp2的,老实说ss的这些文档我很多都看不懂,只能在游戏中慢慢摸索.............

非常感谢你和你的哥们。

话说你是想翻译这些来提高你的英文水平吗?
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
43楼  发表于: 2022-03-26 23:02

大致看了一下,目录翻译还行吧,用词这种东,我们不是官方不一定非要完全准确,主要是意思到了就行了

关键是详细的说明不能翻译出错,ss的vdp寄存器可以说是非常非常多,估计就算是看中文也会被绕晕吧

你还年轻,可以多学点英文,以后看文档也会比较容易,不像我,得用翻译软件
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
44楼  发表于: 2022-06-30 21:44

Re:回 117楼(老陆) 的帖子

引用
引用第118楼hutianlu于2022-06-30 20:18发表的 回 117楼(老陆) 的帖子 :
主要是~比较忙没有时间,我自己想汉化的游戏还有不少呢   我把花组方块1汉化完之后就能完全掌握图片汉化了,字库汉化接着会有游戏练的


在帖子里面学挺好的,方便回顾,也方便后人学习
况且看你发布的BETA0.2汉化版说明还没封装,那还得把第一个教程消化一下,毕竟里面有提过iso+音轨是可以简单重新生成一个完整的bin+cue镜像的
ps:你选的这个游戏用来做示范非常好,里面不仅有很多图片字幕,还有字库的字幕,而且还包含有压缩过的文件,学会这个,其他游戏应该会比较容易上手
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
45楼  发表于: 2022-07-03 12:52

1 窗口信息要复制完整,你这样复制一半,我想猜也猜不到

2 哪个游戏?在哪个界面出现的?

3 很多地方我也不会,只能边进游戏查看内存,边goo搜索
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
46楼  发表于: 2022-07-03 15:50

引用
引用第123楼hutianlu于2022-07-03 13:54发表的  :
还是花组方块,进灰姑娘模式之后开场有一段剧情,一图片形式存在于VDP2中
NBG1 信息:
8-bit(256 colors)
Tile(1H x 1V)
Plane Size = 1H x 1V
.......


恭喜你,开始接触到ss另外一种显示方式了
首先,因为ss是md的强化升级版,所以md那种为节约显存用编号显示的方式也继承下来了,下面我就用你这个图来简单讲讲
因为ss的显存也不是很大,所以很多游戏都会使用这种方法来达到节约显存的目的(忘记前面是否有讲过了,这里再重新说一次吧)


这种方法首先会以整个vdp2的内存(512kb,0x80000字节)为基础,划分成若干个8x8的小方块,每个方块的大小32字节,然后游戏按照一个信息表格开始把这些小方块组合成一个大图


比如你这个游戏:
8-bit(256 colors)     256个颜色

Tile(1H x 1V)          8x8方块

Plane Size = 1H x 1V      大小

Pattern Name data size = 2 words        2个words,就是指4个字节一组
Plane A Address = 00078000              表格地址
Plane B Address = 00078000
Plane C Address = 00078000
Plane D Address = 00078000


所以把上面信息综合起来就是,用8x8的小正方形方块组合成大图,表格位置在vdp2 内存的78000处

用模拟器整个内存dump下来,跳转到表格位置(vdp2地址+78000)




看图,从红框开始一直往下就是表格数据了,因为前面有写过Pattern Name data size = 2 words       那就是 2个words,4个字节一组来表示小方块的信息
所以我们可以算出第一组红框的实际方块一共是0xa0/4=0x28=40个小方块,因为每个小方块是8x8的,所以大图的宽度就是40x8=320,因为这种显示方式需要固定每行显示512个

像素,所冶Ρ﹁要丢弃320后面的表格数据,那就是512-320=192,192/8=24,也就是24个方块的信息需要填充,所以后面蓝框里面出现的就是24x4个00字节的填充数据

我们先看第一组的4字节 0010 2000

这里需要分成3部分来看

首先看2000,这里的2000是指在vdp2内存里面的小方块编号,就是第0x2000个小方块,那么因为前面已知一个小方块是32字节,所以这个方块实际地址是在VDP2里面的0x2000*0x20=0x40000这个位置

然后看0010中最低位的10,这里没说错的话,这个10是表示使用的颜色表编号起始位置,因为每个颜色表是0x20字节,所以就是0x10*0x20=0x200

最后看0010中的高位00,我没记错的话这里可以是表示方块的显示方式,可以是正常显示00,或者左右对调01  上下颠倒02,或者左右+上下颠倒03来显示,这里是00,所以表示正常显示

方块分析完了,因为这些小方块的显示位置是从左到右,从上到下,那么接下来的第2组方块也是用上面相同的方法就可以拼凑出一张完整的大图片了



分析完了,那么我们先跳到颜色表起始位置5f00000+0x200的位置,因为前面已经知道是这个图片是使用的256色颜色,又因为颜色表是2个字节表示一个颜色,所以我们需要复制256x2个数据,然后去我们sggg官网使用在线转换,选择bgr进行数据转换,转换完成以后,在通ct2导入颜色表,然后在跳到图片数据的实际位置5e00000+0x40000




然后就可以看见正常显示图片了,接下来根据vdp2里面的图片数据,去镜像里面搜索相同的数据,来定位是在哪个文件里面,然后就按照原来的方法修改图片导入即可

以上只是个人分析结果,如果哪里有说错,欢迎指出
[ 此帖被YZB在2022-07-04 09:18重新编辑 ]
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
47楼  发表于: 2022-07-04 09:14

引用
引用第125楼hutianlu于2022-07-03 22:39发表的  :
破解新方式get   
那个,512KB应该是0x80000个字节吧,貌似多打了一个0;最后说计算图片位置的时候又少打一个0(5e00000+0x4000,应该是0x40000)
为什么每个方块32字节啊?这个应该怎么算
2个words,4个字节一组来表示方块的信息这句话我没理解,每个方块32字节为什么变成4字节一组表示方块信息了?   不过我知道2字节=1word,这个换算我会(等等我好像理解了,小方块的大小固定是32字节,但是调用的时候给每个方块都定了编号,编号和小方块都储存于内存中,编号大小只有4字节,想要调用方块只需要调用内存里的表格编号?这么想应该是对的吧……不过小方块和编号都在内存里,为啥不直接调用小方块?还有为啥用CT2加载表格却能显示出小方块?CT2应该加载出来的是表格信息啊我觉得,难道他能自己看出来表格指向那些小方块?)
为什么每行固定显示512个像素?这里的“行”指的是哪里的行?这里没理解   



手误,已经更正,明白意思就好

1  为什么每个方块32字节啊?这个应该怎么算
你可以直接理解为这种显示方式都是按32字节一组来划分的,如果是4bit颜色的话,那么一个方块就正好是32字节,每个方块的编号直接+1递增就可以了
如果是8bit显示的话,那么一个方块是64字节,那么在方块编号那里就需要每次+2来递增,查看这个图片的方块编号内存,你可以看到编号都是以双数来表示的,不会出现单数的编号
同理如果是16bit显示的话,那么编号继续加倍,每次+4来递增


2 2个words,4个字节一组来表示方块的信息,这里你理解的没错,就是用4个字节来记录每个方块的信息,至于为什么不直接调用图片,是因为为了节约显存
先看看原游戏画面
 


如果直接显示的话,是下面这个样子的 
 
看到屏幕四周一大片的的区域了吗?在那里其实是作为透明色显示,如果直接放一张大图到显存的话,会浪费掉很多的空间,而以8x8小方块编号显示的话,可以节约很多,更何况那些8x8的小方块还可以上下左右翻转来显示



3   为啥用CT2加载表格却能显示出小方块?
ct2好像不能加载表格吧,那张图只是显示小方块的实际数据而不是编号数据,按原游戏320/8每一行40个小方块就可以正常显示了




4 为什么每行固定显示512个像素?这里的“行”指的是哪里的行?
这种显示方式只支持2的次方,2 4 8 16 32 64 128 256 512 1024.......,所以遇到不够的只能递增一个,然后在填充多余的部分

这里的行是指用8x8组合的小方块,从左到右依次排列显示的一行的宽度,因为游戏显示方式是320x224,但是图块只支持2的次方,256的方式显然不够,所以只能用512的方式所以你可以想象成用64个(512/8)8*8的小方块组合成一个512*8的长方形图片,然后在算一下整张512*224的图如果直接显示8bit的话会占用多少内存,这还只是一张图片而已一个图层,整个vdp2是可以有5个图层的  

所以用8*8的方块编号来显示可以节约很多内存
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
48楼  发表于: 2022-07-04 11:56

Re:回 126楼(YZB) 的帖子

引用
引用第127楼hutianlu于2022-07-04 10:25发表的 回 126楼(YZB) 的帖子 :
感谢讲解,这么说我就懂了~
最后对于“行”的讲解,意思是不是:受限于画面宽度必须表示为2的N次方,画面宽度此时规定为320,而512满足且接近于320,所以选择采用每行512个像素,同时做减法运算删去多余无用的192个像素?   
另外想问一下,SS的画面输出有分辨率限制吗?比如我看有些游戏的分辨率就很高,有些游戏的分辨率就很低,你们汉化组还曾经将低分辨率字库改成过高分辨率字库,这种更改输出分辨率操作是怎么实现的?


改分辨率需要查看vdp2的技术文档第2章
http://docs.exodusemulator.com/Archives/SSDDV1R1E/b/b02/hon/p012.htm
知道原理就可以改了,具体的修改方法可以参考 paul_met写的这个帖子https://www.emu-land.net/forum/index.php/topic,73826.0.html

但是注意某些游戏如果程序限制的话会出现花屏bug,而某些游戏在模拟器上正常但是在实机上可能也会出现一些bug
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
49楼  发表于: 2022-07-20 18:28

回 129楼(hutianlu) 的帖子

shift+左右方向键调整每一行的块数

看起来ct2的操作还不熟练啊。
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
50楼  发表于: 2022-07-20 18:43

回 130楼(hutianlu) 的帖子

【概述】
使用图像查看工具“Pig Viewer”查看SS版“Hanagumi Taisen Columns”的图像。
使其可见的插件。要执行,图像查看工具“Pig View”
“哇”是必需的。


[如何使用]将 hanacol.pig 放在适当的目录中,并在启动 Pig Viewer 后加载它。让我试试。有关如何执行此操作的详细信息,请参阅 Pig Viewer 的帮助。
需要设置插件,然后设置这个游戏的光盘目录,这样才可以显示图片


看说明是专门针对这个游戏做的插件而已,不过有参考价值,可以直接看到哪些图片需要汉化。
至于其他破解方面的问题,还是等你慢慢来吧
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
51楼  发表于: 2022-07-20 21:18

回 133楼(hutianlu) 的帖子

做为一名破解,首先找到需要颜色表的图片以后,如果颜色表不在同一个文件里面的话,那么先按文件名排列去观察该文件夹里面旁边是否有类似的同文件名不同后缀的文件,很幸运,这个游戏就有,如果没有则只能去用模拟器调试来追颜色表的出处了)

经过简单判断,同名的a后缀文件名为map表,同名的cg文件为图片数据,同名的CL文件为颜色表

所以只要在程序里面把文件名列出来了,就可以根据文件名和后缀把图片显示出来。当然你甚至可以直接把所有的颜色表 图片数据和map表整合在程序里面,这样就不用去设置光驱了
程序是死的,人是活的,想怎么写完全看人  
ps:忘了说,如果遇到使用map表拼图的游戏,如果不会写程序,那这里会被卡住,你先祈祷一下其他图片是否也是顺序排列就可以显示完整的图片吧
[ 此帖被YZB在2022-07-20 21:40重新编辑 ]
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
52楼  发表于: 2022-07-20 22:46

回 135楼(hutianlu) 的帖子

不能~
你怎么定位读取文本的程序段在哪里?除非你知道文本在内存哪个位置,然后设置一个读中断
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
53楼  发表于: 2022-07-21 09:12

简单点说就是你如何从几十万行汇编代码里面定位哪里是读取文本的代码

我觉得你应该得熟悉一下yaba模拟器的调试器操作....
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
54楼  发表于: 2022-07-21 14:49

回 139楼(hutianlu) 的帖子

模拟器调试教学自己上网搜一下吧,任何模拟器都可以,原理都是一样的

附件是ss模拟器的汇编指令集,中文的,边看边学吧,这个没有捷径.......
附件: sh4汇编指令集.rar (877 K) 下载次数:6
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
55楼  发表于: 2022-07-25 21:35

回 141楼(hutianlu) 的帖子

因为这张图片有大量的8x8小块可以重复使用,所以直接拼不出来的

至于怎么确定是否有重复使用的8x8小图块,可以先看图片的数据部分是否有足够大,可以直接在ct2里面拼好的图片,因为每个8x8都是单独使用,没有重复使用过的,所以图片数据应该是N个8x8的小图块
当然最好是直接看map表保险一点,比如这张图片




随便看了一下,红色部分都是重复使用的图   

所以想把图拼出来,除了写程序,要不就用模拟器截图
附件: GPR_G03.rar (9 K) 下载次数:4
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
56楼  发表于: 2022-07-25 23:37

前面我不是说过原理了吗?感情你还没理解。

每一个8*8的小方块都有一个单独的数字编号,从00开始,因为这个图是256bit色,所以每个8*8的小图块就需要64个字节,因为ss如果是使用map表来显示的话,只能以32字节为单位做编号,所以你看见这个图的编号都是双数显示的。

怎么查看是否重复使用,当然就是看编号是否重复使用了。

导入其实不用按照原方法,因为其他图有的是完整显示的,你把完整显示的图的map表复制一份过来应该可以的。
人不能被尿憋死,方法有的是,如果不会写程序,你甚至可以自己去找其他你认为比原版更清晰的图来代替它
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 33 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18727(时)
注册时间: 2004-10-02
最后登录: 2024-04-27
57楼  发表于: 2022-07-28 20:36

回 145楼(hutianlu) 的帖子

前面我就说了,理论上是可以直接用没有重复的map表来替换的,你只需要把没有重复编号的map表,复制一份改名,然后图片数据的cg文件也改成没有重复的即可

很多事情都是大胆假设,实践测试,在那猜100次还不如动手测试一次来得快,况且你这个测试也方便
上一主题下一主题
«123»Pages: 3/3     Go