» 您尚未登录:请 登录 | 注册 | 标签 | 帮助 | 小黑屋 |


发新话题
打印

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

基于行缓冲表现的游戏机,一般通过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 编辑 ]


TOP

发新话题
     
官方公众号及微博