- 博客(39)
- 资源 (4)
- 收藏
- 关注
原创 PlayStation显存字库扩容
<br /> 这个东西不是什么新鲜玩意儿了,Agemo很早就使用过,并且在他的主页上写过一个标题《字库扩容2 字库4色变2色,仅用于显存字库》,但状态一直是写作中。Koro也用这个方法扩容过字库,只是都没有具体的说明文章。<br /> <br /> 这次手头碰到一个显存字库的游戏需要扩容,自己硬想总算是想出来了。这里写一下大约的思路。<br /> <br /> 首先说一下PS的机能。显存字库一般是游戏在一开始loading的时候从光盘载入到显存中,载入之后就无法直接对显存
2011-01-28 13:20:00
2046
原创 (PS)かまいたちの夜•特別篇 汉化笔记 十三
<br />13. 字库扩容和一些小的代码修改<br />字库我前面说过,是bin.pac的第一个子文件,bin_0000.bin,原始大小35800。要扩容的话有两个方案,一个是文件直接变大,修改ISO镜像。<br />但这个方案非常得不好,首先ISO镜像扇区都是连续的,如果一个文件变大,那么后面所有内容顺延,这个时候比较两文件的话几乎处处不同,补丁会和原始镜像一样大。<br />第二个方案就是压缩,其实原始程序打开子文件的时候本来就会先判断是不是压缩文件,如果可以压缩到35800内,
2010-12-06 10:09:00
1104
原创 (PS)かまいたちの夜•特別篇 汉化笔记 十二
<br />12. Sub Pac<br />字库和文本都搞定了,下面再看看其他文件。<br /> <br />Sub pac是pac文件的一段,但里面仍然打包了其他文件。在anm.pac中可以见到,bin.pac中也有。<br /> <br />这是ANM_0001.bin的头部:<br />Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F<br /> <br />00000000 00 00 00 1A 00
2010-12-06 10:03:00
795
原创 (PS)かまいたちの夜•特別篇 汉化笔记 十一
<br />11. 文本导入<br />我一般文本导出的代码写好之后,就觉得略有成果了,想怠工几天。其实文本导入代码也要写起来,没写好的时候几乎不能把文本交给翻译。<br />之后应该让翻译快点搞定一章,尝试导入,这时很可能会发现各种问题,到时候要增加控制符什么的。这都要早期发现早期改正,否则所有文本都出来了再让你往里面嵌控制符,工作量不是一般的大。<br /> <br />文本导入之前要做的事情是文本检查,检查其实很重要,比如是否有单字节的字符,是否有括号没有闭合,是否有控制符被删除,
2010-12-06 09:56:00
936
原创 (PS)かまいたちの夜•特別篇 汉化笔记 十
<br />10. 文本导出<br />文本导出是很重要的一步,而且需要和翻译互相配合,尽快修改其中的问题。<br />由于这个游戏的控制符很复杂,而且脚本格式也复杂,所以关于文本导出成什么样子我也考虑了很久。<br /> <br />文本导出有几个要点:<br />1、要尽量和游戏显示差不多<br />2、保持每个文本、每一段落的文本量适宜<br />3、方便翻译<br />4、方便导入<br /> <br />首先分文本很简单,sce.pac本来就分成若干的子文件,每一个子文件对应一
2010-12-06 09:53:00
833
原创 (PS)かまいたちの夜•特別篇 汉化笔记 九
<br />9. 控制符分析<br />控制符分析也是很重要的一步,影响到导出文本的质量,甚至影响到汉化质量。<br />分析的方式也无非是观察和逆向。很多颜色变化,换行换页都能观察出来,但是复杂一些的就要看源代码了。<br /> <br />这些东西都在指令00对应的函数中,所以也不算难找。<br /> <br />关于分析,我还要说多说一些。首先全脚本都已经能够导出了,那么要多做一些统计和检查。比如说总共有哪些控制符,有哪些控制符组合,这些控制符一般出现在什么字符后面等等。<br /
2010-12-06 09:48:00
1024
原创 (PS)かまいたちの夜•特別篇 汉化笔记 八
8. 脚本文件分析 II各个指令的参数可分成5种:1、文本,以0结尾,只出现在指令00中;2、段号,2byte,出现在段跳转指令中;说明见上3、地址,2byte,指向某条指令的地址,出现在段内跳转指令中。4、文件号,2byte,相应pac的子文件号,出现在显示声音、背景、阴影的指令中。5、其他。同时也有部分指令没有参数。之后为了更好地分析脚本,将脚本文件导出成html格式,对各个段加上锚点,段跳转指令中加上超链接。然后就可以一边游戏一边分析各个指令的大致含义。这里面还有一个问题,就是脚本
2010-12-06 09:32:00
930
1
原创 (PS)かまいたちの夜•特別篇 汉化笔记 七
<br />7. ike格式分析<br />分析解压算法的过程其实都差不多,一般是先下一个cd-rom访问断点,然后是内存访问断点。或者是反过来,已知明文位置的情况,下一个内存写入断点。<br /> <br />Sce.pac中有不少段有ike的签名,指明这个数据被压缩过。<br /> <br />Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F<br /> <br />00000000 9D 89 69 6B 6
2010-12-06 09:27:00
3479
原创 (PS)かまいたちの夜•特別篇 汉化笔记 六
6. 脚本文件分析下面开始具体分析脚本文件,这里又要用到agemo_debugger了。 下CD-ROM访问断点,可以看到程序将Sce.pac中的一段载入到800C89B8,一开始是读取sce.pac中的1f段。然后下内存访问断点,范围大约是800C89B8 - 800D07C0。根据第2节的分析也可知1f段也分成了若干段,这里读取的是第4段00 91。(注意,段号是基0的)Offset 0 1 2 3 4 5 6 7 8 9 A B C
2010-12-06 09:24:00
628
原创 (PS)かまいたちの夜•特別篇 汉化笔记 五
<br />5. 系统文字<br />系统文字是我的说法,就是在主程序中的文本,一般都是明文的,而且没什么格式。<br />一般是菜单,选项,说明,提示之类的东西。别人也叫做浮动文本。<br /><br />这些东西就靠找,没什么其他办法。<br /> <br />偏移<br />说明<br /> <br />800 – 20f0<br />人物介绍、游戏说明,系统文本<br /> <br />27b0 – 2ca0<br />人名<br />核对犯人名字用<br />58280 – 5
2010-12-06 09:21:00
1479
原创 (PS)かまいたちの夜•特別篇 汉化笔记 四
<br />4. Bin的其他文件<br />字库中在bin.pac中,那么再观察一下这个包中的其他文件。当然,一开始观察的时候还没能把数据解压出来。<br /> <br />Bin_0000.bin 已经确认是字库<br />Bin_0001.bin 开头是入口,看到pBAV签名,估计是声音,格式见Sub Pac一段。<br />Bin_0002.bin 开头是入口,子文件中看到ike的签名,格式见Sub Pac一段。解压之后是tim文件,是工作人员名单。<br />Bin_0003.
2010-12-06 09:19:00
799
原创 (PS)かまいたちの夜•特別篇 汉化笔记 三
3. 字库分析字库首先要知道是自带字库还是bios字库,这个一看就知道不是bios字库了。用Agemo的debugger载入游戏,以前一载入就死掉,最后发现是一定要载入bios。吓死,还以为要改代码了。载入后进入说明页面,随便找个人的说明,pause后,dump,打开ram找文本,这些文本是在程序中的,圈一块文本,下内存访问断点。然后离开这个页面,此时断下,在ram中看看断在“登场人物绍介”的“登”字上,点中asm log,打开ida参照。一直点resume,直到访问下一个字“场”为止。
2010-12-06 09:16:00
1118
原创 (PS)かまいたちの夜•特別篇 汉化笔记 二
<br />2. Sce.Pac文件分析<br />这一部分还是属于观察,使用拆包程序将pac文件拆成若干个子文件,现在对子文件进行分析。<br /> <br />Sce_0000.bin:脚本文件,头部如下:<br /> <br />Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F<br /> <br />00000000 E4 00 DB 01 CD 02 D0 03 E7 04 8F 05 92 06 C3
2010-12-06 08:59:00
1159
原创 (PS)かまいたちの夜•特別篇 汉化笔记 一
关于这个游戏 原名:かまいたちの夜•特別篇 译名:镰鼬之夜•特别篇(旧译恐怖惊魂夜,不用) 镜像命名:[PS][SLPS-01794].Sound.Novel.Evolution.2.Kamaitachi.No.Yoru.Tokubetsu.Hen.(J).(AVG).(Chunsoft).恐怖惊魂夜.-.特别篇引言:这应该是我处理的第二个PS游戏,比起第一个游戏更顺手一些,我尽量把研究的笔记还原出来,不过我个人觉得一个具体游戏的资料对其他破解者来说意义不大,重要的恐怕是一些思路和方法。所以会在每个小
2010-12-06 08:56:00
2512
原创 [译文]GBAGuy的GBA ASM教材 第八章 BIOS
<br />第八章 BIOS<br /> <br />BIOS是一些GBA中预先写好的函数集。我们能使用指令SWI来调用它们。<br /> <br />SWI<br /> <br />SWI是SoftWare Interrupt(软件中断)。SWI的实质就是调用那些内置的函数,只要给出函数号就能工作了。比如:<br />mov r0, #0x10<br />swi 0x80000 @ SWI编号8是SQRT(SQuare RooT,开根号)。它会对r0开根号,然后把结果放到r0。<br />注意虽说SWI编
2010-11-18 22:55:00
1640
原创 [译文]GBAGuy的GBA ASM教材 第七章 乘法
<br />还算幸运,GBA处理器有一些乘法指令。它们是:MUL, MLA, UMULL, UMLAL, SMULL, SMLAL。这些指令都能通过S来指明是否要影响状态标志。还有这些指令只能使用寄存器作为操作数,并且都没有位移部分。<br /> <br />指令MUL是最基本的。它进行一个32位的乘法,格式如下:<br />MUL DEST, OP1, OP2 @ DEST = OP1 * OP2。结果可能会大于32位,但是使用MUL指令的话,多出来的部分就丢失了。<br />指令MLA和MUL很相似,只
2010-11-18 20:27:00
1095
原创 [译文]GBAGuy的GBA ASM教材 第六章 更多指令
<br />第六章 更多指令<br /> <br />在这一章中,我们将探索更多的ARM指令,尤其是ADD,SUB,AND,ORR,EOR,BIC这些。这些指令非常相似,都包含一个位移指令,比如:<br /><br /><br />add r0, r1, r2, LSR# 2 @ r0 = r1 + (r2 逻辑右移 2)<br />bic r9, r7, r3, ROR#16 @ r9 = r7 &~ (r3 循环右移 16)<br /> <br />你不必非要位移,也可以简单地这样做:<br /><
2010-11-18 20:08:00
1052
原创 [译文]GBAGuy的GBA ASM教材 第四章 分析第一个程序
<br />四章 分析第一个程序<br /> <br />今天我们会讨论一下第二章的那段程序,不过之前我们要再多学点指令。<br />我们要学的第一条指令是STR的另一种形式。我们能以32位方式工作,其实也能以16位,8位方式工作,不过你要确定你使用的地址是不是按照32位,16位对齐了。这里几个例子演示了如果读取和写入16位和8位的值:(我这里只用了寄存器寻址方式,其实都可以用)<br /><br />ldrh r0, [r1] LDR后面的H意思是halfword(半字,word=32,half=16,b
2010-11-18 19:22:00
1449
原创 [译文]GBAGuy的GBA ASM教材 第三章 一些ARM指令
第3章 一些ARM指令今天我们开始学习一些ARM指令,不过之前有些事情你要记住(和执行速度有关):·对齐你的数据。使用.align命令,比如.align 4,.align 2。如果你使用了没有对齐的地址,CPU会做一些汗死人的操作绝对把速度降下来。·不访问内存的指令总是快一些,最大限度地使用寄存器,不要从内存载入数据。用MOV和ADD指令载入32位立即数,不要用LDR指令。指令LDR指令LDR还蛮多用途的,尽管它主要的功能是从内存中load(读取)一个值。它有多种寻址模式,有些我都不太清楚...你去翻手册吧
2010-11-18 16:37:00
1924
原创 [译文]GBAGuy的GBA ASM教材 第一章 概述
<br />第一章:概述<br /> <br />GBA的处理器是一块任天堂定制的CPU。很多人称之为ARM7tdmi,也可以说是对的,不过ARM7只是一个核,还有其他很多东西在这块芯片上。另一个有趣的事情是ARM公司并没有制造这块芯片,他只是授权了设计。不过总的来说(我们不在意 ;)),GBA里面有个32位的ARM7tdmi。<br /> <br />这块CPU有两个指令集,ARM和THUMB。(现在只是一个概述,如果不明白这些东西也没关系。)<br /> <br />ARM指令集都是多功用的,大多都内置
2010-11-18 15:33:00
1491
原创 [译文]GBAGuy的GBA ASM教材 目录
原教材首页在:http://patater.com/gbaguy/gbaasm.htm作者GBAGuy写于2004年。译者说明:对ARM做了一些介绍,用来入门不错,比看ARM手册好很多。可惜的是最后一章THUMB太监了,不过估计也很简单,所以觉得没啥好写的。第五章讲图片模式,我觉得同题材的文章太多了,没必要翻译。第一章:概述(不断更新中。。)
2010-11-18 15:28:00
1041
原创 [译文]使用VBA-SDL-H寻找图片
<br />原文地址:http://www.romhacking.net/docs/361/<br />工具下载:http://www.romhacking.net/utils/297/<br />ROM下载:这个自行baidu,我承认这方面比google强<br /> <br />某些没翻译的地方:<br />术语如sprite, char, tile。如果不懂也不用看这篇文章了。<br />其他如debugging console,翻译成调试控制台也很难过,知道意思就行了。<br /> <br />一个
2010-11-17 11:32:00
933
原创 (PS)賭博黙示録カイジ汉化笔记(五)(完)
<br />五.文本导出和导入B<br /> <br />程序员要有一种体谅翻译人员的心情,一个好的编辑器肯定是必要的。Agemo的主页上有一个AgemoEditor就是一个还不错的软件。当然我觉得还是差一点,比如没有专有名词统一的工具,没有版本控制,不支持小组合作。<br /> <br />蓝山魔导导出的文本,由于没有找到文本指针,文字零落,分段也不明确,而且只能用一般的文本编辑器进行编辑。感觉还是很差的。当然转成AgemoEditor专用格式的话,也不是很困难,可问题是文本指针的问题。Agemo在使用说
2010-11-08 11:17:00
2283
原创 (PS)賭博黙示録カイジ汉化笔记(四)
<br />四.Course.dat的分析I<br />仔细观察Course.dat会发现,每一块数据分成两个部分,第一部分全是二进制数据,第二部分有可读的文字。对前几个块进行分析,得到以下结论:<br />块1:<br />数据部分:00000000-00001ce7<br />文字部分:00001ce8-00003835(似乎以FFFF作为结束标志)<br />Offset 0 1 2 3 4 5 6 7 8 9 A B C D E F<br /> <br />
2010-11-08 10:52:00
1806
原创 (PS)賭博黙示録カイジ汉化笔记(三)
<br />三.文本导出和导入A<br /> <br />这一部分称为A,是因为我最早是用了一个工具进行文本导出和导入。这仅是用来实验,最后我还是编程导出了文本,这个部分放到B来描述。A和B部分都是独立,并不是上下篇。<br /> <br />文本导出导入工具也有不少,oz01的文章中推荐的是CrystalScript、菜鸟工具,我这里推荐一下蓝山魔导,同样是蓝山老妖的作品,将很多工具进行了合成,界面也比较友好。虽然有部分bug,也停止了更新,但还是推荐。<br /> <br />蓝山魔导的使用参考说明书,
2010-11-07 18:23:00
1549
原创 (PS)賭博黙示録カイジ汉化笔记(二)
二.码表和文本确认字库后,下面的工作是找到文本并且确认文本使用的码表。不过庆幸的是《賭博黙示録カイジ》使用的就是SHIFT-JIS编码,非常地简单,所以我觉得很适合我这样的新人上手。查看的方法oz01的教程中有介绍,先用虚拟光驱软件加载镜像,然后将文件拖到UltraEdit中查看即可。光盘的文件和目录命名还算是友好,基本上可以了解该文件的作用。其中system.cnf是System Setting File。内容如下:BOOT=cdrom:/SLPS_027.49;1 (启动程序)TCB=4 (TCB数量,
2010-11-07 08:50:00
1885
原创 (PS)賭博黙示録カイジ汉化笔记(一)
前言 本文记录我的第一个尝试汉化的作品《賭博黙示録カイジ》的汉化过程,希望对想要加入到PS汉化行列的人能够提供一些帮助。这个笔记写成于去年,也就是2009年的10月份左右,由于是第一次接触汉化,很多东西都不了解,所以写的内容也比较基础。适合没有接触过汉化且对PS汉化有兴趣的程序员。 但是本文提到的基础知识需要事先看过,基本上其他游戏教程提到过的东西我都不会再提起。相对于其他教程,我认为难度属于中上。〇.基础知识和资源施柯昱的教程是一定要看的,名字就叫做《PS游戏汉化教程》,他的主站已经关闭,网上有梁文豪
2010-11-07 08:39:00
3376
1
原创 Agemo_debugger的一点增强
<br />下载在:http://download.youkuaiyun.com/source/2792642<br /><br /> <br />·CD-ROM Read Monitor<br />这个功能类似于filemon,只是显示的内容是扇区号和扇区时间,基本上没有什么可读性。新功能是可以读取filelist目录下的文件列表,然后显示文件名和在文件中的偏移。<br /> <br />另外下这个断点经常会碰到的问题,一个是某个文件很大,几百扇区,不停地读取,点resume都累死。另一个是片头往往会放一段视频,这个
2010-10-29 09:25:00
1314
1
原创 PlayStation的CD格式
前言本文的内容算是一个学习笔记,主要资料来源于张晓波(pinokio)翻译的《Everything You Have Always Wanted to Know about the Playstation But Were Afraid to Ask.》,这个资料Agemo的主页那边有下载,在【新手必读硬件资料】目录下面。里面有两个章节和CD有关,一个是CDROM,另一个是CD,其中CDROM主要讲PS中和CD相关的各种指令和设置。CD这章才描述CD格式,另外这一章并不存在于原版的《Everything》中
2010-09-25 09:30:00
2089
原创 EnumFontFamilies
<br /> PC的文字游戏一般在设置界面中有选择字体的地方,一般来说是从系统字体中筛选出合适的字体,很少会给玩家字体对话框来选择的。这个筛选是靠EnumFontFamilies。<br /> <br /> int EnumFontFamilies(<br /> HDC hdc, // handle to device control <br /> LPCTSTR lpszFamily, // pointer to fam
2010-08-09 14:27:00
4168
原创 如何修改窗口名字
<br />一个很简单的pe diy,一般人都知道怎么把长标题改短,但是不知道怎么改长,写了个步骤给新人参考。<br /> <br />1)窗口一般来说是由CreateWindow/CreateWindowEx这两个函数创建的。<br />打开OD,加载程序,Ctrl+N(或者右键 Search for -> Name (lable) in current module)<br />输入CreateWindow,其实不用输入完整就可以看到本程序使用的是CreateWindowExA<br />下硬件执行断点
2010-08-09 14:06:00
7822
原创 文字游戏的汉化
这篇文章的定位有点困难,大约是针对有点RE能力,看过些教程,又没有实际搞过汉化的人。 里面没啥技术性的东西,都是些小经验。 ----------------------------------------------------------------------------------------------------------- 1)哪些部分要汉化 大约有4个部分,人名、文本、选择项和章节名。各个游戏不同,并不一定都有。人名和文本比较显而易见,选择项一般来说不会出现在序章中,有时
2010-07-13 16:18:00
2008
原创 Blowfish
<br /> Blowfish是个加密算法,具体的细节我多说无益,可以参考pediy的这篇教材<Crack Tutorial 2001> - 第6章 软件保护技术 - 第三节 加密算法 - 《BLOWFISH算法》。<br /> <br /> 主要的特点是它有个pbox和一个sbox,定义如下:<br />ungigned long pbox[18]<br />unsigned long sbox[4256]<br /> <br /> 这两个box的初始值是固定的,然后用key去处理pbox和sbox
2010-07-09 15:15:00
726
原创 用GetGlyphOutline搞字模
<br /> GetGlyphOutline <br />制作字模是汉化的一个基本能力吧,不过有很多好用的软件,比如Crystal Tile2,以至于我一直没高兴去研究。<br /> <br /> 搞字模大约这么两条路,一个是TextOut出来,然后一个点一个点读取。另一个就是调用GetGlyphOutline。<br /> <br /> 我这次是使用GetGlyphOutline这个函数,原型如下:<br /> <br />DWORD GetGlyphOutline(<br /> HDC hd
2010-07-08 14:54:00
11435
原创 PropertySheet
汉化分两块,一个和封包有关,另一个就是搞程序。这部分和一般的软件汉化差不多,我这方面经验实在是少,什么时候把汉化新世纪的教材拿出来看看。 今天研究一个程序,找了半天没有DialogBox,或者CreateDialog。最后调下来觉得在comctl32里面,里面就一个函数PropertySheetA。于是拿出api手册,原来如此,还有这么一个东西。int PropertySheet( LPCPROPSHEETHEADER lppsph); 这玩意儿只有一个参数 LPCPROPSHEETHEADER
2010-06-30 00:00:00
928
原创 Mng和Png
<br /> 研究某社的游戏,里面用到了mng格式的文件。<br /> <br /> mng是用来杀掉gif的格式,但现在还不流行,不过表现力的确不错。XnView可以直接打开,但是支持得还不完美。能编辑mng的软件实在是少,很多只能输出成mng格式的文件。修图反应使用PNG MNG Construction Set编辑,导入后游戏崩溃。我估计肯定是里面放了什么信息,编辑后被丢掉了。<br /> <br /> 我找来这个软件想看一下丢了点什么东西,居然完全不知道怎么编辑。- -b。又找了不少软件,里面
2010-06-26 16:59:00
3925
1
原创 MD5笔记
<br /> MD5是个hash算法,具体的内容我也不想多说,其实我也没有仔细看到底4轮64次变换是怎么一回事。可以参考一下百度百科的md5词条。(http://baike.baidu.com/view/7636.htm?fr=ala0_1),我感觉比中文版的wiki写得详细点。另外子清行的《MD5算法实现注意点》这篇文章也很不错,说实话要学习这个算法真的是要自己写一遍为好。真要仔细研究的话,就看rfc1321.txt,这个最权威了。<br /><br /> 当然,我的角度略有不同,我只是要用md5,调
2010-06-17 10:01:00
899
原创 Muv-Luv Alternative分析文档 Part 〇—四
<br />〇. 游戏安装和运行 & Alterdec编译<br />1)游戏安装和运行<br /> 游戏有三个版本,DVD版,CD版和全年龄版,这里研究的是DVD版,大小是4.33G。<br />使用NTLEA安装,0.82以上版本即可。个人不喜欢AppLocale。<br />安装之后执行桌面的快捷方式会报错,这是因为原始的主程序的功能只是调用一下:<br />rugp.exe ;PF:UGPAPP={age/マブラヴオルタネイティヴ/}<br />这个マブラヴオルタネイティヴ是SJIS编码。
2010-06-11 11:11:00
2613
原创 LZSS的笔记
昨天看了下LZSS.C,就是那个4/6/1989 Haruhiko Okumura的经典代码。 很久没有研究算法了,又没有详细的描述,只能从代码和注释里面去理解。还真花了我不少时间。 首先讲解压,LZSS的编码是1 byte的flag,从低到高,如果bit=1,原样输出1 byte,如果bit=0,读取2 byte,输出长度和缓冲区位置保存在这2 byte中。 其实标准的LZSS我还是第一碰到,以前碰到的多是输出长度和回溯距离的组合。LZSS则多了一个缓冲区,一般大小N = 4096(0x1000
2010-06-10 10:50:00
6236
Parasite Eve 2分析资料
2011-01-03
かまいたちの夜·特別篇 汉化分析文档和源代码
2010-12-06
agemo的ps_debugger扩展
2010-10-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人