A9VG电玩部落论坛

 找回密码
 注册
搜索
楼主: 幽灵小队

[求助] 如何定位WII游戏汉化文本?

[复制链接]

精华
1
帖子
379
威望
1 点
积分
580 点
种子
25 点
注册时间
2013-3-2
最后登录
2024-11-14
发表于 2014-11-24 20:59  ·  陕西 | 显示全部楼层
幽灵小队 发表于 2014-11-24 13:40
无压缩且结构清晰。
呵呵,这句话点醒我了。我研究一下头部结构,尝试下个解包程序吧。BIN里面对应的都是 ...

没错,那个Bin文件里面就是一个一个单独的图片文件。
正常的做法就是写程序,循环查找关键图片开始的关键字,把图片导出来,然后就可以使用专用工具处理了。

当然,还必须要了解GCIX相关信息,不然处理过的图片,该怎么导回去。。。。。。
conan***e兄研究过吗?

骑士

原来我还活着

精华
0
帖子
911
威望
6 点
积分
1636 点
种子
590 点
注册时间
2008-7-3
最后登录
2024-11-12
发表于 2014-11-24 21:49  ·  辽宁 | 显示全部楼层
xjsxjs197 发表于 2014-11-24 20:59
没错,那个Bin文件里面就是一个一个单独的图片文件。
正常的做法就是写程序,循环查找关键图片开始的关键 ...

puyotool就能导回去

http://code.google.com/p/puyotools/

精华
0
帖子
35
威望
0 点
积分
35 点
种子
5 点
注册时间
2014-11-24
最后登录
2022-8-3
 楼主| 发表于 2014-11-25 08:18  ·  江苏 | 显示全部楼层
conan***e 发表于 2014-11-24 21:49
puyotool就能导回去

http://code.google.com/p/puyotools/

puyotool是能导回去。但是在ENCODE的时候遇到一个问题。
如果按原始的图片,GVR的格式是采用GVRT,GCIX的FORMAT,然后DATAFORMAT是4-bit Intensity with Alpha。这样ENCODE之后的文件头部正确,但是数据段不对,我观察了一下原始文件,是大段的0F代替了00作为空白数据,而重新ENCODE的文件里面全是00.这样直接导致的结果是,文件大小是正确的,也能被PUYOTOOL的VIEWER读出来,但是里面的文字全变样了。
如果数据段也采用RGB5A3,那么VIEWER能读取,但是文件大小不对,头部也不对。
看来似乎是在选择4bit intensity with alpha时,puyotool没有正确的进行编码造成的?

骑士

原来我还活着

精华
0
帖子
911
威望
6 点
积分
1636 点
种子
590 点
注册时间
2008-7-3
最后登录
2024-11-12
发表于 2014-11-25 11:06  ·  辽宁 | 显示全部楼层

RE: 如何定位WII游戏汉化文本?

幽灵小队 发表于 2014-11-25 08:18
puyotool是能导回去。但是在ENCODE的时候遇到一个问题。
如果按原始的图片,GVR的格式是采用GVRT,GCIX的F ...

这个还真没观察过,晚上回去看眼

精华
0
帖子
35
威望
0 点
积分
35 点
种子
5 点
注册时间
2014-11-24
最后登录
2022-8-3
 楼主| 发表于 2014-11-25 17:35  ·  江苏 | 显示全部楼层
现在的问题就是导出来导不回去了。
这是我的ENCODE设置


下面是原文件和导出再导入的文件比对。


文件倒都提取出来了,只要这个导入能搞定,就可以手动翻译了。好在只有500个文件。。。
写个汉字转PNG的小程序,按原来大小导回去就行了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

骑士

原来我还活着

精华
0
帖子
911
威望
6 点
积分
1636 点
种子
590 点
注册时间
2008-7-3
最后登录
2024-11-12
发表于 2014-11-25 18:48  ·  辽宁 | 显示全部楼层
幽灵小队 发表于 2014-11-25 17:35
现在的问题就是导出来导不回去了。
这是我的ENCODE设置

确实有问题……
我也不知道该怎么解决了。
如现行无更好的解决方法,我有个想法,但是更麻烦了。
导出的图片先作成TPL,再将TPL的文件头替换掉。

精华
1
帖子
379
威望
1 点
积分
580 点
种子
25 点
注册时间
2013-3-2
最后登录
2024-11-14
发表于 2014-11-25 21:10  ·  陕西 | 显示全部楼层
Wii方面的图像处理代码我都了解,但是GVR格式的就不懂了。
估计需要看源代码了,我家里得先下个VS2014,不然打不开工程文件。

精华
0
帖子
35
威望
0 点
积分
35 点
种子
5 点
注册时间
2014-11-24
最后登录
2022-8-3
 楼主| 发表于 2014-11-26 08:03  ·  江苏 | 显示全部楼层
conan***e 发表于 2014-11-25 18:48
确实有问题……
我也不知道该怎么解决了。
如现行无更好的解决方法,我有个想法,但是更麻烦了。

你是说把导出来的PNG转成TPL,再把TPL的文件头替换成GVR的?怎么感觉绕不过来了,呵呵

精华
0
帖子
35
威望
0 点
积分
35 点
种子
5 点
注册时间
2014-11-24
最后登录
2022-8-3
 楼主| 发表于 2014-11-26 08:09  ·  江苏 | 显示全部楼层
xjsxjs197 发表于 2014-11-25 21:10
Wii方面的图像处理代码我都了解,但是GVR格式的就不懂了。
估计需要看源代码了,我家里得先下个VS2014,不 ...

VS2012就能打开PUYOTOOL的代码。
我看了下它的ENCODE和DECODE似乎有点不同。我贴出来。
我调试了viewer的decode过程。原文件是的数据段编码应该是Intensity 4-bit with Alpha。
public override byte[] Decode(byte[] input, int offset, int width, int height, VrPixelCodec PixelCodec)
            {
                byte[] output = new byte[width * height * 4];

                for (int y = 0; y < height; y += 4)
                {
                    for (int x = 0; x < width; x += 8)
                    {
                        for (int y2 = 0; y2 < 4; y2++)
                        {
                            for (int x2 = 0; x2 < 8; x2++)
                            {
                               output[((((y + y2) * width) + (x + x2)) * 4) + 3] = (byte)(((input[offset] >> 4) & 0x0F) * 0xFF / 0x0F);
                                output[((((y + y2) * width) + (x + x2)) * 4) + 2] = (byte)((input[offset] & 0x0F) * 0xFF / 0x0F);
                                output[((((y + y2) * width) + (x + x2)) * 4) + 1] = (byte)((input[offset] & 0x0F) * 0xFF / 0x0F);
                                output[((((y + y2) * width) + (x + x2)) * 4) + 0] = (byte)((input[offset] & 0x0F) * 0xFF / 0x0F);


                                offset++;
                            }
                        }
                    }
                }

                return output;
            }

            public override byte[] Encode(byte[] input, int width, int height, VrPixelCodec PixelCodec)
            {
                int offset = 0;
                byte[] output = new byte[width * height];

                for (int y = 0; y < height; y += 4)
                {
                    for (int x = 0; x < width; x += 8)
                    {
                        for (int y2 = 0; y2 < 4; y2++)
                        {
                            for (int x2 = 0; x2 < 8; x2++)
                            {
                                int loc    = ((y + y2) * width) + (x + x2);
                                byte entry = (byte)(((0.30 * input[loc + 2]) + (0.59 * input[loc + 1]) + (0.11 * input[loc + 0])) * 0x0F / 0xFF);
                                entry      = (byte)(((((input[loc + 3]) * 0x0F / 0xFF) & 0x0F) << 4) | (entry & 0x0F));

                                output[offset] = entry;

                                offset++;
                            }
                        }
                    }
                }

                return output;
            }
        }

骑士

原来我还活着

精华
0
帖子
911
威望
6 点
积分
1636 点
种子
590 点
注册时间
2008-7-3
最后登录
2024-11-12
发表于 2014-11-26 10:53  ·  辽宁 | 显示全部楼层

RE: 如何定位WII游戏汉化文本?

幽灵小队 发表于 2014-11-26 08:03
你是说把导出来的PNG转成TPL,再把TPL的文件头替换成GVR的?怎么感觉绕不过来了,呵呵 ...

至少tpl的数据没错误
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|A9VG电玩部落 川公网安备 51019002005286号

GMT+8, 2024-11-14 14:36 , Processed in 0.176276 second(s), 12 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部