EMU618社区

 找回密码
 立即注册
搜索
查看: 12909|回复: 0

[转贴] PS2游戏合集制作攻略《基础篇》

[复制链接]

该用户从未签到

发表于 2007-4-20 08:50:30 | 显示全部楼层 |阅读模式
去年1月我曾发布过《PS2工具集 18in1》,也连带发布了如何制作的教程,也涉及对于ELF内绝对路径的修改,不过可能是并非使用游戏做实例的原因,后来还是很多人没弄懂,正好我最近做了一个“日本一”公司的合集,现在这篇教程就拿其中的《魔界战记》跟《魔界战记 2》这两个游戏来做一个例子说明一下吧。


准备工作


首先我们须要以下工具,括号内的数字表示我目前所使用的版本号,只做参考(教程中写到的软件选项以英文版为准)。

WinRAR (3.60):基本上地球人都知道这个软件了,也是装机必备的软件之一,这里主要是用来把网上下载的工具、ISO等解压出来。

CloneCD (4.2.0.2) 或 任意CD ISO生成工具:制作CD游戏的ISO。

DVD Decrypter (3.5.4.0):如果没能力下载的话,只有自己用盘来做ISO了(虽然说我们要的东西一般可以直接在光盘上提取,不过为了方便调试,还是建议先做ISO),那么我强烈推荐这个工具。

IsoBuster Pro (1.9.1 Build 1.9.1.1):打开ISO、导出文件文件、导出LBA的列表。

UltraEdit-32 (12.10a):HEX编辑软件,修改ELF内部的必要工具,一个合集成功与否的关键。

任意图片编辑软件:主要用来修改游戏的预览图片。

MultiLoader:合集的主程序,有3个版本1.02不推荐;1.33启动快;1.41的界面漂亮但启动比1.33慢,而且这个版本网上能找到的不是很好用,我是用技术群内部的修改版;初学者建议先玩玩1.33。
注:因为MuliLoader这个合集的主程序在兼容性方面不如老的那个PS2Loader,不同的版本有着不同的兼容性,而1.41可以切换回旧的1.02、1.33版本(用过《PS2工具集 30in1》的人应该知道是怎么一回事),所以理论上这个版本的兼容面应该是最广的,不过实际操作中我们发现1.33的兼容性比1.02、1.41要好,所以我们使用1.33其实已经能满足基本的需要。

DVD Scan (3.7):把CD游戏的ELF转换成DVD。

CDGenPS2 3.0:CD ISO文件结构及ISO生成工具。

CD DVD Generator (2.00):DVD ISO文件结构制作工具。

DVD Iml2Iso (4.02):DVD ISO生成工具。

PCSX2 (0.9 非官方编译版):PC上的PS2模拟器,至少要找一个能够查看log的版本,用来调试ISO能否正常运行。

任意ISO刻录工具:这个当然是用来刻录的啦。



处理游戏的实际操作


首先我们必须得到这两个游戏的ISO,如果无法从网上下载或者手上有现成的盘的,可以使用自己喜欢的工具作成ISO。




《魔界战记》为CD游戏,如果使用CloneCD作成ISO,只需要点选Read to image file然后选择路径即可。



《魔界战记 2》为DVD游戏,如果使用DVD Decrypter作成ISO,记住把Mode下的ISO设置成Read,选择路径后按下面光盘->硬盘的图标即可。

这样我们手上就有了这两个游戏,然后我们运行一下PC上的PS2模拟器,先看一下这两个游戏在模拟器上的运行情况。


模拟器测试及导出log:
这个步骤主要是方便以后我们把ELF修改后做测试,如果出问题了也方便找出问题出在什么地方。




运行模拟器,点选Run CD,然后选择之前作好的ISO。




能运行至看见游戏的标题画面,OK,我们看到这里基本上已经足够,可以退出模拟器,有条件的也可以进一步试下去,只是我的PC上运行PS2的模拟器速度实在不太行,所以我只会测试到这里。

进入模拟器的目录,进入logs,会看到一个叫emulog.txt的文件,为了方便查找,我把它改名为log1.txt。




很好,看来2代的运行同样没有问题。模拟器会生成一个属于2代的emulog.txt,把它改名为log2.txt。




如果想在模拟器运行的时候实时查看log的,可以在模拟器的Misc下把Enable Console打钩,这样就会多出一个窗口实时显示log(就象上面的两个游戏运行图片)。


导出LBA列表及所有文件:
这个步骤的作用是把所有我们需要的文件导出来;导出LBA列表可以让我们知道原始的文件排序,同时如果遇到需要按LBA排序的游戏时可以按照原始的顺序了排列文件。

(这个步骤还有一个作用,就是遇到使用LBA寻址的游戏时的调试,但本文讲述的对象并不涉及LBA寻址,更加不会出现多个LBA寻址的游戏出现LBA冲突的情况,关于如何修正LBA寻址的问题,我将会在《PS2游戏合集制作全攻略 - 进阶篇》中说明。)

退出模拟器后,我们接着用ISO Buster打开这两个游戏的ISO。




打开《魔界战记》的ISO,在图上红色的ISO标志右边那一个“-”那里按鼠标右键(实际上这个位置是游戏的名称,只是游戏制作公司制作的时候并没有输入而已)。




按以上步骤把游戏的LBA列表导出为一个txt文件,为了方便查找,我把它改名为lba1.txt;用同样的方法把2代的LBA导出并命名为lba2.txt



分别打开这两个LBA列表,我们会发现2代的LBA列表里并不是安装LBA的顺序来排列,这是因为导出的LBA是以文件名来排序而不是安装LBA的先后,而且多数游戏都是这样的。
所以我们应该养成习惯,先用UltraEdit-32来打开这种记录LBA的文本(Word也可以),然后选择File -> Sort -> Sort File (Using Current Options),这样就可以把列表中的内容按LBA的先后排序,保存后退出。




LBA导出后我们还要把游戏的内容也导出来,建一个文件夹D1,打开《魔界战记》的ISO,全选图中右边的文件,按鼠标右键选Extract Objects,然后放到D1中;建一个文件夹D2,用同样的方法把2代的文件放到里面。


做新的ISO:
这个步骤主要是在我们动手修改ELF前,通过只改变ISO内文件的LBA位置来验证一下这个游戏是否使用LBA寻址,别到以后修改完ELF后才发现运行不了,到时候也不知道是改错了还是什么问题。

这里提供两个方法:
方法1:用UltraISO另存,方法就是用UltraISO这个软件打开原来的ISO然后选令存,这样新的ISO的LBA就跟原来的完全不一样,但要注意的是这个方法生成的新ISO不是100%能正常运行的,所以我一般会直接重做。

无论是用UltraISO另存还是打算重做,至次,我们需要的东西已经全部到手,可以把两个原ISO删掉,如果考虑到以后的制作过程中还需要调试的,保留ISO也无妨,前提是硬盘空间够大。

方法2:自己重做ISO。




因为《魔界战记》是CD游戏,我们要重做ISO需要使用CDGenPS2,运行软件,把1代的所有文件拉进去右边的窗口,注意这里我们要刻意去把文件的LBA搞得跟原始的不一样(要修改LBA,在文件名处按鼠标右键选Edit,然后钩上Fix Lba再输入数值即可),最后按左边的IMG按钮即可。




《魔界战记 2》是DVD游戏,我们要重做ISO需要使用CD DVD Generator,这个软件比前面那个稍微麻烦,首先要新建一个DVD项目,然后在Volume页中输入一些基本的信息,如无特殊需要,随便输也可。




然后转到Directory页,把2代的文件都拉进去。




同样地,我们把LBA搞的跟原始的ISO不一样(如果要修改某个文件的LBA,可以Layout页中在某一文件处按按鼠标右键选Location,然后输入数值即可)。




一切都妥当后点选File -> Export iml file,这样会生成一个.iml文件,这时可以退出CD DVD Generator。




最后用DVD Iml2Iso打开刚做的.iml,按iml2iso,待进度条加满后ISO制作完成。

做了两个新的ISO后,我们需要使用模拟器再一次测试这两个ISO,非常幸运的是,这两个ISO同样能够运行至游戏的标题画面,也就是说改变了文件的LBA后并没有影响到游戏的运行,也就是说我们几乎可以100%肯定这两个游戏并没有使用LBA寻址!

根据我过往制作合集的经验,游戏运行到了标题画面时,其实已经或多或少调用过了除动画以外的大部分文件,而使用LBA寻址的游戏其主要的数据包一定是要锁定某个LBA的,所以我们只需要运行到这里就基本上已经得到结论了,不过世事总是有例外的......但我这里要讲述的是绝大多数的情况下。

如果这里的结果是相反,游戏是无法正常运行的,即表示这个游戏使用了LBA寻址,在制作合集的最后一步制作ISO时需要把该游戏的文件安装原始的LBA来排列。


修改ELF
因为游戏跟应用软件不一样,游戏往往会调用多个文件/文件夹,而且这些文件/文件夹往往会出现一些重复的(如:MODULE),为了避免文件/文件夹名称的重复,我们必须把出现重复的文件/文件夹名称改成别的名字,并用HEX编辑软件修改ELF内部调用这些文件/文件名的路径,这一步是制作一个合集的关键。

(本文只讲述使用绝对路径的情况,关于相对路径的引用,我将会在《PS2游戏合集制作全攻略 - 进阶篇》中说明。)




我们首先比较一下这两个游戏的文件/文件夹,可以看到名字重复的有:

文件:
SYSTEM.CNF(这个文件不需要理会)
DATA.DAT
SECTOR.H

文件夹:
SYSTEM(实际上里面的文件并没有重名,所以如果只做这两个游戏的合集则不需要理会)
SOUND(由于里面只有一个文件SNDPAK.PAK,所以也可以视作是这个文件重名了)

OK,目标明确,我们需要处理的有DATA.DAT、SECTOR、SNDPAK.PAK。




用UltraEdit-32打开《魔界战记》的ELF:SLPS_202.51,会看见一个满屏HEX数据的画面,这里按下Ctrl + F(或Search -> Find)出现搜索栏,记住要钩上Find ASCII,然后输入我们第一个要解决的文件名:DATA.DAT。




按下搜索后会自动来到0012d660这个位置,看到右边的“DATA.DAT”。



把它改成DATA1.DAT,同时把手上的文件也重命名为DATA1.DAT。




这时按下F3(继续搜索),出现写着Search string not found!的对话框,也就是说调用DATA.DAT的地方就这一处,只需要改这里就OK了。
(如果出现多处符合的数据的,我们可以都改成需要的数值,但有些时候有些数据是我们不需要的,这里可以根据数据前后的语句来判断,实在看不懂的也可以借助模拟器调试。)

这里除了可以使用搜索功能外,还可以使用HEX编辑软件的替换功能直接替换,但要主要替换时我们输入的原始数据与新数据的长度必须一致,而且在替换前我们还是应该先用搜索功能查找一下ELF内有多少出符合的数值,并找出应该修改的地方。
因为替换功能很容易出错,尤其是在游戏有比较多文件的时候,所以并不建议初学者使用。




用同样的方法查找SECTOR.H跟SNDPAK.PAK,分别改为SECTOR1.H、SNDPA1.PAK。

由于“日本一”公司的战记系列所用的文件/文件夹都比较少,我们轻松搞定了一个游戏,如果对自己的操作不放心的,可以先把修改过后的1代做一个ISO,在模拟器上测试能不能运行。
(其实多少文件都一样,原理是一样的,不过文件多了自然体力活会比较多。)

如果此时在模拟器验证修改是否成功时,在运行过程中出现卡死在某个地方的情况,可以先退出模拟器,然后查看模拟器生成的emulog.txt,看是运行到哪一行的时候卡死了。再打开我们之前保留的log1.txt,比较看看模拟器的log在同一行的位置是在读取了哪一个LBA的位置,再在lba1.txt里面看看那个LBA是属于哪一个文件的,这样就可以知道是哪个文件的修改上出错了。




用同样的方法处理一下2代的ELF:SLPS_256.08。
DATA.DAT -> DATA2.DAT
SECTOR.H -> SECTOR2.H
SNDPAK.PAK -> SNDPA2.PAK
修改后模拟器测试也没有问题。

OK,至此我们已经令这两个游戏没有重名的文件了(虽然有重名的文件夹,但里面的文件没重名,无所谓),把两个游戏的文件都放在一起也无所谓了。




但要记住,因为1代是一个CD游戏,而我们制成的合集是DVD格式的,所以我们要用DVDScan这个软件处理一下。
运行DVDSacn后在图中位置点选DVD,然后打开游戏的ELF:SLPS_202.51及SYSTEM目录下的IOPRP255.IMG,程序就会把这两个文件从CD格式转为DVD格式,OK后退出程序即可。

要转换哪些文件视游戏而定,一般是ELF、IORRP***.IMG、部分.irx文件。



处理合集的主程序




现在轮到了我们制作合集必须的主程序MultiLoader了,这个程序有3个文件+1个文件夹组成:
SYSTEM.CNF - PS2光盘上必要的引导文件。
MultiLoader.ELF - 主要程序。
MULTI.XML - 游戏名称、启动文件路径等信息,我们要花工夫的就是这个文件。
IMAGES - 用来存放游戏预览图片的文件夹(可改别的名字)。




现在看看我做好了的MULTI.XML,实际上我们可以把这个文件视为2+N部分(N=合集的游戏数目)。
这个文件固定的2个部分包括一头一尾与,这表示这个文件的开始与结束;另一部分就是在上面的******,这里我们可以在中间添加一个图片地址,用作选择游戏后的读取画面(注意只有1.33才支持background,如果是用1.41的可以不要这个标记)。




接下来看看游戏的部分,实际上每个游戏的信息都由5种标记所组成:
item:游戏信息的开始/结束。
name:显示在游戏选择画面的游戏名称(注意这个名称最好不要超过16个字符,否则会影响美观)。
path:该游戏的ELF的文件路径。
description:对该游戏的描述,我一般是写游戏的全称,1.33版是按手柄的方键后显示,1.41则是自动在画面上访滚动。
image:显示在游戏选择画面的游戏预览图片的文件路径。

注意两种图片的格式:
游戏预览图:130x155 jpg
选择游戏后的读取画面:512x512 jpg(实际上到了真正出现这幅图片时只会看到512x448的部分,所以我们可以把一幅4:3的图片改成512x448的,然后在下面用单色填充至512x512)

把这些都做好后我们可以制作合集的文件结构与ISO了。




这里有个重点要说明一下,如果是HDL用户并且家里是没条件用PC灌游戏而必须刻盘用PS2直灌的必须紧记,由于这个合集的主程序文件名为MultiLoader.ELF,而PS2直灌是不认这种***.ELF的主程序的,会显示为非PS2游戏,所以我们必须是把MultiLoader.ELF重名为符合PS2的主程序名称格式,就是 4字母 + 下划线 + 3数字 + 点 + 2数字,如“ABCD_123.45”或“PSTG_800.08”,同时修改SYSTEM.CNF内指向的文件名。




最后,我们现在来制作这个ISO,运行CD DVD Generator,先输入一些游戏信息。




按照SYSTEM.CNF(这时只要MultiLoader的CNF,各游戏自己的不用理会) -> MultiLoader的主程序 -> MULTI.IML -> 图片目录 -> 游戏的ELF -> 游戏系统文件 -> 大文件(如数据包、动画、音乐)的顺序把文件拖到Directory页面。



再次用DVD Iml2Iso来制作游戏的ISO,做好后有条件的可以先传到HDL里面测试一下看是否运行正常。
在上面这幅图中我们可以看到游戏的名称超出了背景的蓝色框架位置,这个原因我之前已经说过了,这是因为在MULTI.XML中的标签的游戏名称过长所至,只要重新编辑一下MULTI.XML后重做ISO即可。




小知识

1、记住PS2直灌HDL不能识别.ELF的主程序。
2、CD游戏需要转成DVD,但非官方的游戏或应用程序一般没有检测CD/DVD的代码,所以一般不用转换。
3、光盘的根目录下的文件/文件夹加起来不要超过30个,子目录下的可读的文件最大数目由调用的程序决定,建议也不要超过30个。
4、前文说过,MultiLoader的兼容性没有旧的PS2Loader好,如果在确认自己修改及制作ISO过程中没有出现错误(可以先作成单个游戏的ISO测试),但做到合集里后不能运行的,很可能是该游戏跟MultiLoader不兼容,可以换别的版本试试,不过这只是很个别的情况。
5、制作合集不会影响游戏的HDL兼容性,一个原本支持HDL的游戏作成合集后要么就刻盘、HDL均正常,要么就完全不能玩(就是上面第4点),如果一个原本支持HDL的游戏在作成合集后出现 只能用盘玩而不能HDL 或者 只能HDL而无法用盘玩 的情况的,绝对是制作上出了问题。
6、遇到模拟器不能运行到标题画面的游戏,其实我们就算看不见画面也可以根据修改游戏前后所得到的emulog.txt来做一定程度的判断,不过这当然是比较难的。如果遇到完全不能运行的,有条件可以传到HDL里面做测试。

制作PS2游戏合集的《基础篇》就写到这里了,其实要做一个普通的游戏合集原理很简单,只是操作起来非常繁琐,而且容易出错,这里还得靠有点耐心才行,不过做多了有经验自然也会变得更轻松。

关于制作更复杂的游戏合集的技术,我会在将来的《进阶篇》为大家讲解。
---------------------------------------------------------------------------------------------

原创内容,转载转载请注明作者与出处。
Masaki Anton
安东的个人小筑 http://blog.sina.com.cn/u/1256730392

转A9VG Masaki Anton
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|国治模拟精品屋 ( 沪ICP备15012945号-1 )

GMT+8, 2024-11-23 21:32 , Processed in 1.072266 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表