A9VG电玩部落论坛

 找回密码
 注册
搜索
12
返回列表 发新帖
楼主: navyakula

[求助] 我不明白为什么玩游戏要强制升级系统

[复制链接]

精华
0
帖子
14433
威望
0 点
积分
14592 点
种子
12 点
注册时间
2007-10-28
最后登录
2023-3-23
发表于 2013-7-11 03:10  ·  北京 | 显示全部楼层
强制升级还有另一个重要作用就是防倒版!

精华
0
帖子
10
威望
0 点
积分
10 点
种子
0 点
注册时间
2013-7-10
最后登录
2014-12-27
 楼主| 发表于 2013-7-11 20:50  ·  广东 | 显示全部楼层
stanlywang 发表于 2013-7-11 01:16
比如系统版本1.0拥有指令1,2,3
而在系统版本1.1的时候加入了指令4
在运行一个新游戏的时候,首先机器会去读 ...

嗯。你说的我明白。但是我觉得应该不是增加指令。 指令集(ISA)是cellbe规定的, 除非有硬件升级,否则是不可能增加指令集的。但是系统可以提供api和系统调用,这些是软件可以改的。 有可能游戏调用了某些yyy版本才加进去的系统调用, 而低版本xxx没有,运行时自然会挂掉。

我关心其实就是你描述的过程, game loader是如何判断游戏对版本的依赖的。 如果仅仅是用sfo的某个字段来判断,自然我们可以骗过loader。现在看起来好像没这么简单。那个判断版本的逻辑,对应的代码是哪里?

关于我的实况玩不了的问题,我最近又得到一个解释。有些游戏必须要刻录到光盘上才能玩。 复制到硬盘里是断然玩不了的。实况就是这个类型。 是这个情况么?这个哪位大牛给个解释。

精华
0
帖子
371
威望
0 点
积分
513 点
种子
5 点
注册时间
2004-10-21
最后登录
2023-10-10
发表于 2013-7-12 00:30  ·  美国 | 显示全部楼层
navyakula 发表于 2013-7-11 20:50
嗯。你说的我明白。但是我觉得应该不是增加指令。 指令集(ISA)是cellbe规定的, 除非有硬件升级,否则是 ...

我指的指令不是最底层的CPU指令集,可能用"函数"这个名字来表达比较合适.
举例说打开一个文件在1.0版本的时候你是通过open(filename)这个函数(这只是个例子,PS3的命令应该是不同的)来完成的,到了1.1版本,你就必须通过openfile(filename)来完成.
这样一来任何需要1.1版本的游戏在你1.0的机器上就找不到openfile()这个函数,最后只能会错误返回.
解决方法只有2个
1是把机器升级到1.1版本,这样机器里就有了openfile()这个函数,这样就可以运行新游戏了.这就是1.1游戏强制里升级的理由.
2是把游戏里的openfile()函数改变成open()函数,这里就需要编译和反编译eboot.bin文件了.修改玩后,由于游戏里不需要1.1版本中的openfile()函数,而只需要1.0版本的open()函数.这样游戏就能在1.0版本的机器上运行了.

game loader是很容易骗,但是即使你骗过去了,但是真实运行游戏时候,游戏需要用到的命令和函数不存在的时候,游戏是跑不起来的.
好比你让一个普通的初一生,通过假文件去另外一个同等实力的学校就读初二,那么这个学生是肯定听不懂老师在讲什么东西.

至于游戏要刻盘才能玩,我是没听说过,我只有听说某些游戏需要引导盘.
至于实况足球我是不玩的,所以不了解盗 版玩有什么特别要求.

精华
3
帖子
8814
威望
13 点
积分
11419 点
种子
1357 点
注册时间
2003-6-12
最后登录
2025-1-14
发表于 2013-7-12 09:34  ·  上海 | 显示全部楼层
说简单点就是高版本固件里加了一些接口函数调用,如果你在低版本固件上运行高版本的游戏
游戏的EBOOT调用到那些函数,就会发生错误,典型的情况是无限loading,死机,关机重启
所以把高版本的游戏EBOOT重签后依然无法在3.55上完美运行就是这个原因
不过国外有些人热衷于修正EBOOT里的接口函数调用,也使那些高版本游戏可以在3.55上完美运行了,这个是题外话

启动游戏时的版本检测就是在PARAM.SFO没错,不过你要是装过补丁,会先找补丁文件夹的PARAM.SFO
不过即使patch了PARAM.SFO,EBOOT没重签的话依然会弹回XMB,注意是直接弹回,不是进去以后黑屏死机
原因是EBOOT header里还写入了游戏所需系统版本号,你在4.21以上自制用MM第一次运行游戏时会看见提示给游戏打补丁,其实就是patch了header里的信息。
做完PARAM.SFO和EBOOT的header patch,如果EBOOT调用的接口函数当前的固件都支持,那么游戏就能完美运行了

精华
0
帖子
705
威望
0 点
积分
714 点
种子
12 点
注册时间
2012-5-9
最后登录
2021-12-18
发表于 2013-7-12 18:01  ·  江西 | 显示全部楼层
navyakula 发表于 2013-7-10 20:58
我想弄明白为什么游戏依赖系统版本?如何修改游戏rom去掉这种依赖。

这,防盗啊, 系统要求,eboot.bin里有吧

精华
0
帖子
10
威望
0 点
积分
10 点
种子
0 点
注册时间
2013-7-10
最后登录
2014-12-27
 楼主| 发表于 2013-7-13 10:39  ·  广东 | 显示全部楼层
雨鱼 发表于 2013-7-12 09:34
说简单点就是高版本固件里加了一些接口函数调用,如果你在低版本固件上运行高版本的游戏
游戏的EBOOT调用到 ...

谢谢版主回复, 解释的很详细。

我知道eboot.bin其实就是个self文件。请问这个self文件到底执行什么程序啊?

游戏胁迫玩家升级系统这招太狠了,这就是强制自制系统要不断的hack找高版本ofw的keys啊,然后玩家也痛苦,没事升级玩。 要是能做个万能eboot.bin就好了。 国外能有人把美国末日那个游戏的eboot.bin改的只要求3.55?他们怎么看懂这个程序在搞什么的。

求败者

poi~

精华
0
帖子
20645
威望
0 点
积分
26546 点
种子
5 点
注册时间
2010-10-15
最后登录
2015-8-14
发表于 2013-7-13 12:44  ·  安徽 | 显示全部楼层
昨天刚升级4.46           
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-1-15 06:29 , Processed in 0.166920 second(s), 15 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部