Board logo

标题: [专题讨论] NTSC版的游戏出PAL版时,会把游戏的时钟频率改成50HZ吗? [打印本页]

作者: md2    时间: 2017-11-19 22:55     标题: NTSC版的游戏出PAL版时,会把游戏的时钟频率改成50HZ吗?

我一直以为所谓P制拖慢,是因为把N制卡带插在P制主机上,游戏内部还按照每秒60帧计算逻辑,所以才变慢

但是看视频的例子,是欧版PAL马里奥插在欧版SFC上,比NTSC卡带配NTSC主机要慢10%以上

也就是说当年的PAL版,内部逻辑还是以每秒60帧来计算?

画面慢,音乐音调变低,这是不把欧洲人当人啊

https://weibo.com/tv/v/FvRlkCGZX
作者: 老五    时间: 2017-11-19 23:12

港版SFC(SNES)带开关切换50 60HZ 可以同时享受到PAL的色彩+NTSC的流畅
但是我忘记是改造的还是自带的了 当年有过一台
作者: nvnv-sunny    时间: 2017-11-20 09:14

建议LZ在MD日版机上玩一下的欧版龙珠
作者: 2012啊    时间: 2017-11-20 09:37

posted by wap, platform: Android
港版sfc自带的,日版那个切射频频道的改成50,60切换
作者: masterking    时间: 2017-11-20 13:59

这个要具体问题具体分析了~
单从主机上来说,早期比如FC MD 的输出制式完全由机器版本决定,比如NTSC机器即便运行了PAL版游戏也都会按照NTSC格式去显示。后期主机如PS2,NGC等都是按照游戏的制式去输出的,跟主机版本没关系。而同时期的SS则属于前者,PS属于后者(早期的NTSC版PS无法输出PAL)。
作者: SONIC3D    时间: 2017-11-20 14:27

基于行缓冲表现的游戏机,一般通过HINT和VINT中断向量对应的函数来执行逻辑。HINT每显示完1行触发一次,VINT没显示完1场触发一次,所以一般对于游戏逻辑帧都放在VINT中,在这种情况下,这样的中断触发机制和画面的扫描信号有等同的时序关系,否则图形芯片的输出信号和视频编码芯片对每行画面的编码输出工作就无法契合。

所以有些开发商,根据发卖地区版本的不同,把可预知的VINT触发的间隔直接作为宏定义值,写死在了程序里,比如对于N制地区的版本,就写死1/60秒,对于P制地区就写死1/50秒,游戏的每个逻辑帧就以这个间隔来作为标准。比如上面提到的MD的龙珠就是这种写死的方式,这会导致游戏在不同制式的主机上出现非预期的速度。

而更好的写法自然是通过获取主机内的计时信息,但当时的主机往往没有这样的硬件I/O去获取这样的信息。所以往往采用每帧获取主机的区码、制式的标志位,然后在两套不同的时间间隔参数内按需切换的方式来做到VINT间隔时间的自适应,比如CORE的Cool Spot就是这样。这样的编写方式无论在什么制式主机上都可以正常速度运行。

到了帧缓冲时代的主机,因为画面是首先是完整一帧描画完毕后,再传送给视频编码芯片的,画面的描画可以与视频信号的编码输出工作完全分离,所以往往不再以HINT和VINT来作为描画代码的触发机制,不同制式版本的主机的主频也完全相同,并且提供完善的获取时钟信息的I/O,这样游戏的逻辑帧可以直接根据时钟信息确定本帧与上一帧的间隔时间,自然也就不容易再发生上面所说的情况了。

[ 本帖最后由 SONIC3D 于 2017-11-20 14:28 编辑 ]
作者: 模拟新兵    时间: 2017-11-20 16:28

posted by wap, platform: 小米NOTE
游戏机有了HDMI输出之后,就没有n制p制之分了吧?
作者: md2    时间: 2017-11-20 16:55

引用:
原帖由 模拟新兵 于 2017-11-20 16:28 发表
posted by wap, platform: 小米NOTE
游戏机有了HDMI输出之后,就没有n制p制之分了吧?
光有数字输出不行
必须不支持模拟输出才可以
XBOX 360的游戏对应PAL或者NTSC的时钟要分别设置
作者: yangjuniori    时间: 2017-11-21 13:35

posted by wap, platform: iPad
欧版PS玩 ddr3的时候看起来是60hz  实际上还是有问题
作者: ydy135    时间: 2017-11-21 18:40

从小玩FC游戏,一直是PAL,以至于很多经典的游戏音乐只记得PAL版拖慢后的节奏,听原版觉得非常不舒服




欢迎光临 TGFC Lifestyle (http://tgfcer.com/) Powered by Discuz! 6.0.0