上一主题下一主题
«45678»Pages: 7/8     Go
主题 : 【原创】【讨论】世嘉土星游戏汉化教程2(图片汉化)
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
120楼  发表于: 2022-07-03 00:06

老哥请问VDP2图像的颜色表怎么搞啊?在VDP2的信息里没有看到过color bank相关的信息
OK兄弟们!全体目光向我看齐!看我看我!
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
121楼  发表于: 2022-07-03 00:12

回 120楼(hutianlu) 的帖子

求教一下,我在 NBG1 信息里看到
Plane A Address = 00078000
Plane B Address = 00078000
Plane C Address = 00078000
Plane D Address = 00078000
这些编号是什么?

我还在 常规信息 里看到
Back Screen Stuff
-----------------
Mode = Single color
Address = 05E7FFFE
这串地址是什么?

以及二者中都出现的
R = -8, G = -8, B = -8
是什么意思?
OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

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

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

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

3 很多地方我也不会,只能边进游戏查看内存,边goo搜索
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
123楼  发表于: 2022-07-03 13:54

还是花组方块,进灰姑娘模式之后开场有一段剧情,一图片形式存在于VDP2中
NBG1 信息:
8-bit(256 colors)
Tile(1H x 1V)
Plane Size = 1H x 1V
Pattern Name data size = 2 words
Plane A Address = 00078000
Plane B Address = 00078000
Plane C Address = 00078000
Plane D Address = 00078000
Coordinate Increments x = 1.000000, y = 1.000000
Window disabled whole screen
Color Ram Address Offset = 0
Priority = 6
Color Offset A Enabled
R = -8, G = -8, B = -8
Special Color Calculation 0

常规信息:
Border Color Mode = Black
Display Resolution = 320 x 224(NTSC)
Interlace Mode = Non-Interlace
Latches HV counter when external latch flag is read
H Counter = 0
V Counter = 0

Line Color Screen Stuff
-----------------------
Mode = Single color
Address = 05E00000

Back Screen Stuff
-----------------
Mode = Single color
Address = 05E7FFFE
Color Offset A Enabled
R = -8, G = -8, B = -8

Sprite Stuff
------------
Sprite Type = 0
VDP1 Framebuffer Data Format = Palette only
Window disabled whole screen
Color RAM Offset = 0
Priority 0 = 7
Priority 1 = 7
Priority 2 = 7
Priority 3 = 7
Priority 4 = 7
Priority 5 = 7
Priority 6 = 7
Priority 7 = 7
Color Offset A Enabled
R = -8, G = -8, B = -8

OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 28 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18719(时)
注册时间: 2004-10-02
最后登录: 2024-04-25
124楼  发表于: 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重新编辑 ]
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
125楼  发表于: 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个像素?这里的“行”指的是哪里的行?这里没理解
OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 28 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18719(时)
注册时间: 2004-10-02
最后登录: 2024-04-25
126楼  发表于: 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的方块编号来显示可以节约很多内存
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
127楼  发表于: 2022-07-04 10:25

回 126楼(YZB) 的帖子

感谢讲解,这么说我就懂了~
最后对于“行”的讲解,意思是不是:受限于画面宽度必须表示为2的N次方,画面宽度此时规定为320,而512满足且接近于320,所以选择采用每行512个像素,同时做减法运算删去多余无用的192个像素?
另外想问一下,SS的画面输出有分辨率限制吗?比如我看有些游戏的分辨率就很高,有些游戏的分辨率就很低,你们汉化组还曾经将低分辨率字库改成过高分辨率字库,这种更改输出分辨率操作是怎么实现的?
OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

UID: 12451
精华: 6
发帖: 19009
威望: 173 星
金钱: 28 浮游币
贡献值: 9859 点
好评度: 54617 点
人气: 4322 点
在线时间: 18719(时)
注册时间: 2004-10-02
最后登录: 2024-04-25
128楼  发表于: 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
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
129楼  发表于: 2022-07-20 14:50

Y大,我按照方法去操作还是挺顺利的,但是图片加载出来所有tail都是错位的,CT2里应该怎么操作才可以把他们排列整齐啊

OK兄弟们!全体目光向我看齐!看我看我!
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
130楼  发表于: 2022-07-20 18:27

对了Y大,我朋友发现了一个神奇的软件,这款软件可以搭配插件查阅SS游戏光碟中的图片 感觉远离很神奇,咱们费劲九牛二虎之力提取图片结果他们一下子就提取出来了……
pigview100.rar (237 K) 下载次数:2
pig_hanacol.rar (41 K) 下载次数:1
第一个文件是图片提取软件的本体,第二个文件是对应《花组方块》游戏的插件,打开程序后加载插件即可获得游戏内所有有用的图片内容~
希望Y大观察分析一下这个程序,我感觉他或许会对花组方块的破解有帮助
OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

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

回 129楼(hutianlu) 的帖子

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

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

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

回 130楼(hutianlu) 的帖子

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


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


看说明是专门针对这个游戏做的插件而已,不过有参考价值,可以直接看到哪些图片需要汉化。
至于其他破解方面的问题,还是等你慢慢来吧
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
133楼  发表于: 2022-07-20 20:58

回 132楼(YZB) 的帖子

感谢指导~那么这个软件是怎么做到提取出图片信息的呢?或许他们自己就能算出颜色表和图片所在文件一类的?
OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

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

回 133楼(hutianlu) 的帖子

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

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

所以只要在程序里面把文件名列出来了,就可以根据文件名和后缀把图片显示出来。当然你甚至可以直接把所有的颜色表 图片数据和map表整合在程序里面,这样就不用去设置光驱了
程序是死的,人是活的,想怎么写完全看人  
ps:忘了说,如果遇到使用map表拼图的游戏,如果不会写程序,那这里会被卡住,你先祈祷一下其他图片是否也是顺序排列就可以显示完整的图片吧
[ 此帖被YZB在2022-07-20 21:40重新编辑 ]
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
135楼  发表于: 2022-07-20 22:19

回 134楼(YZB) 的帖子

原来如此,之前一直看不出来A和CL后缀是什么意思,现在终于懂了
另外关于寻找文本位置这个事情,能否通过查看CPU的汇编指令来寻找?穷举法找文件太爽了,如果看汇编就能短时间找到文本位置,那我就趁着假期的尾巴学一下汇编,用处不大的话我就先不学了
OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

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

回 135楼(hutianlu) 的帖子

不能~
你怎么定位读取文本的程序段在哪里?除非你知道文本在内存哪个位置,然后设置一个读中断
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
137楼  发表于: 2022-07-20 23:43

回 136楼(YZB) 的帖子

程序段和读中断都是啥啊〒▽〒程序段是不是加载到内存里的程序内容?读中断不知道是什么怎么操作啊
OK兄弟们!全体目光向我看齐!看我看我!
YZB
无广告位,看帖子签名
级别: 超级版主

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

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

我觉得你应该得熟悉一下yaba模拟器的调试器操作....
Internet那么大,哪里不是我的家
级别: 模拟小生
UID: 321917
精华: 0
发帖: 123
威望: 0 星
金钱: 7 浮游币
贡献值: 17 点
好评度: 367 点
人气: 0 点
在线时间: 193(时)
注册时间: 2022-01-03
最后登录: 2023-01-14
139楼  发表于: 2022-07-21 11:11

回 138楼(YZB) 的帖子

Yabause的调试功能我确实知之甚少,有相关功能资料吗?我去学习用一下
[ 此帖被hutianlu在2022-07-21 13:11重新编辑 ]
OK兄弟们!全体目光向我看齐!看我看我!
上一主题下一主题
«45678»Pages: 7/8     Go