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


发新话题
打印

PAL制和NTSC制的画面,到底有没有差别

引用:
原帖由 风流盲侠花满楼 于 2009-4-24 14:55 发表
如果不是pal制下玩ntsc的游戏会慢那么多,当年我也不会费劲搞个原装md再改电视机制式了。不过现在想来真是蛋疼。。。
如果你不是欧版MD的话把MD打开可以很容易找到Pal/NTSC跳线和JPN/USA(Export)跳线,台湾版的机器就是跳在PAL+JPN,美版是NTSC+USA,欧版机的大多数型号把这个跳线隐掉了但还是很容易找到跳线点,实际是跳在PAL+USA的组合


TOP

其实早期游戏机的部分专注用户喜欢PAL50,因为PAL是240线,NTSC色彩空间大但是只有224线,对于由sprite组成游戏图案的8位机16位机时代来说,就缺少了32线,按8个dot边长的方块来算,高度上就少了4个,所以N制游戏按P制玩玩起来会上下有黑边(对于那种会对画面作自动变形处理的电视机忽略不谈。。。。)
同时Pal50游戏,是50贞/秒的,每贞或者说每个V中断留给CPU的时间更多,可以做更多复杂的运算,部分demo小组根据这一点做了很多对机能要求比较高的demo,一般都要求用PAL50去运行,因为他们的汇编代码很多都在每一贞都占足了CPU时间片,如果用NTSC去跑,每秒就少了至少千分之三秒,对于以兆赫记速度的CPU来说,这是很大的损失,你会发觉很多Demo不是黑频,就是反而变慢,照例来说N制游戏放到Pal50里会变慢,那Pal50里正常的游戏在N制里应改变快才对,其实不完全是这样,如果游戏的每贞数据的计算方式给予贞,而每贞的起始运算又取决于V中断,那么如果在一贞里无法运算出画面结果,而下一个V中断信号又来了,那么又会开始新一贞的计算,如此往复就会造成黑屏,如果在一贞里无法运算出画面结果,同时在一贞计算完毕前忽略新来的V中断,那么本来在Pal50里一贞刚好可以计算完的量到N制里要1.2贞,这样在N制里只有第二个V中断到来时才会开始算下一贞,这样整个画面速度会降一半。

当然对于大多数一般游戏来说,Pal50里的游戏到N制里玩是会变快,因为大多数游戏基于贞运算画面,并且运算量都不大,在1/60秒内都可以算完,这样本来1秒50贞就真的变成1秒60贞了,速度快1.2倍

而一些比较有技术的公司,比如Rare和Core,他们的游戏都基于时间渲染画面,也就是说,比如主角以每秒100像素往前跑,那么不管主机工作在Pal50/Ntsc/Sceam,不管这100像素的移动花了多少贞去描画,最终总是1秒钟跑到位,不会快也不会慢。类似游戏可以参考Rare的忍者蛙和Core的MD游戏Cool Spot也叫七喜小子,这两个游戏不管你在什么模式下跑,速度是一样的,而Sega的Sonic 3就是速度会变的。

到了近几年,越来越多的游戏采用基于时间的描画,所以用什么制式输出对于游戏本身已经不怎么重要了,游戏机的开发文档中也不会特意注明其中的区别,只有极少数依然对V中断和画面比例很讲究的游戏机才会注重制式,比如Wii,就我遇到过的开发问题就有,一个圆环在Pal制画面和N制画面上显示不同,一个会变椭圆,主要原因是Wii的宽屏是靠拉伸填充全屏做出来的,而它又不支持原生720P,和360/PS3有一定区别;另外因为色彩空间不同,部分在两种制式间差异明显能够被肉眼识别的颜色是不建议美工使用的。对于360和PS3这方面问题比较少,几乎可以忽略



TOP

引用:
原帖由 aquasnake 于 2009-5-1 17:16 发表

VRAM里面的画面用VGA输出,然后再编码成PAL或者NTSC,对于游戏,快慢是以桢率来表示的。因为VRAM里面的像素编码成PAL或者NTSC都是模拟方式,所以不会出现PAL用1/50秒渲染的画面在NTSC中会多1/5时间的现象。不会出现 ...
其实我主要说的就是16位以前的游戏机对于输出制式的敏感源于硬件设计导致,你所说的行缓冲其实就是H中断,每绘制一行产生这一中断,一般用于早期的赛车游戏绘制横向扭曲的画面(参考FC的Namco的Final Lap和MD的Street Racer是利用HINT的典型);而每绘制完一屏(隔行,且行数取决于制式),就产生一个V中断,对于一般程序员来讲可以以此决定这是这一贞的结束,下一贞可以按新的坐标绘制屏内各物体。这样,如果程序员在写程序的时候,不先确定当前游戏的工作制式,而仅靠每秒产生多少次V中断就决定游戏的行进速度就会造成在某一个制式下测试开发的游戏到另一个制式下速度改变。而如果这些游戏的画面绘制所占用的CPU周期又正好超过一定临界值,就会出现可以在PAL下运行,却在NTSC下过慢甚至黑屏

而32位游戏机大多有framebuffer,所以最终输出都交给scaler芯片输出,所以几乎可以忽略
当然PS时代(SS/PS,DC基本没有)依然有很多程序员按照以前的开发方式,以VINT作为绘制新贞的入口,这样依然会造成和以前一样的问题

综上,对于老游戏(16bit时代的,甚至包括一些PS时代的),最好还是分清版本,因为大多数游戏的开发人员不注意,或者都是用宏定义制定当前build版本的贞率,会造成游戏速度在非对应的制式上强行游戏时产生变化。


而对于现在的游戏机,其实不用故意考虑这一点,比如XBOX360就支持PAL PAL60 NTSC-J NTSC-M,而对于程序员来说完全透明。

题外话:
对于PC,比较特殊,开发人员其实既可以根据时间来决定游戏速度(当机器配置比较低算不过来时,会看到跳贞,但人物移动速度不变)也可以根据贞渲染(当机器算不过来时,整个游戏不掉贞,但游戏行进速度变慢)来描画游戏,找个三国无双3PC版到它的选项里可以调整这两种渲染方式,体会一下,大致可以理解之前说的变快变慢问题,因为16bit时代之前的游戏机大多可以理解为是基于贞渲染,当然,他们实际上是不具备framebuffer的,只是会有一个类似于一贞描画完成的信号--V中断,而这个信号在当时的游戏机上又依赖于输出制式的不同

[ 本帖最后由 SONIC3D 于 2009-5-2 01:34 编辑 ]


TOP

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