这是有关移植游戏“另一个世界”的系列文章中的第三篇。 与Atari ST合作时 ,它将讨论技巧 。 建议您先阅读前面的文章。
温和地说,雅达利ST的诞生令人不安。 这一切都始于童话故事,但以战争和背叛结束,Amiga Corp,Commodore,Atari和Atari Computer参与其中。

系列文章
- 多边形另一个世界 。
- 多边形另一个世界:Amiga 500 。
- 多边形另一个世界:Atari ST。
ATARI ST的历史
1983年,Hi-Toro是圣塔克拉拉(Santa Clara)的一家创业公司,开发了一款名为Lorraine的游戏机。 凭借强大的68,000强大功能和惊人的图形处理能力,它是一项技术奇迹,远超其所有竞争对手。 但是,Hi-Toro的钱用光了。 当时的视频游戏巨头Atari投资50万美元继续开发,以换取添加键盘和将控制台作为计算机出售的权利。
与宾夕法尼亚州的加利福尼亚州相距甚远,Commodore的权力斗争导致创始人Jack Tramiel离开。 在吸引Commodore工程师的过程中,他立即创立了Tramel Technology。 不用说,这种分离远非友好。
到1984年中,轮到Atari经历金融动荡了。 当杰克·特拉米耶尔(Jack Tramiel)表示有意收购Atari计算机部门时,Commodore看到了反对他的前首席执行官的机会。 他们购买了Hi-Toro(当时已将其更名为Amiga Corporation),但只将Atari的“贷方”返还给[1] 。
Tramiel完成了对Atari Computers的收购,并立即起诉Amiga Corporation。 直到1987年3月,这个问题才得以解决[2] 。 同时,雅达利没有新的技术来帮助再次获利[3] 。
一段时间以来,杰克·特拉米耶尔(Jack Tramiel)考虑从世嘉公司收购Genesis,后者正在寻找在北美有经验的合作伙伴。 最终,这个想法被拒绝了。 接下来发生了什么,DadHacker [4] [5]说 。 在Atari的10,000名员工中,杰克只留下了900名。 其余的人参加了死亡游行,目标是在一年内开发和发布新车。
令人惊讶的是,他们做到了。 Atari ST于1985年6月推出,比Amiga 1000早一个月进入市场。

该设备深受用户好评。 到1985年11月,杰克·特拉米耶尔(Jack Tramiel)宣布Atari已售出50,000套。 价格令人惊讶。 520ST售价999美元,Amiga 1000售价1285。
从具有相同处理器和相同RAM的两台机器中进行选择,增加300美元是不值得的。 许多消费者选择了ST。
除了主要的价格优势之外,这款汽车在竞争者中还具有其他显着优势。 640x480高分辨率单色模式非常适合程序员。 内置MIDI受到音乐家的赞赏。 一个可能有所作为的小细节,操作系统(TOS)和内核实际上位于ROM中。 无需从软盘启动!
Atari ST迅速聚集了一批追随者,特别是在欧洲。 演示场景的创建者着迷于尝试过度扫描的方法[6] [7] [8] [9],以消除黑屏的边界。 最后,这些尝试都是成功的[10] 。
从1985年到1993年,雅达利计算机公司在其生命中共售出了200万台设备[11] 。 对于在这个时代幸存下来的许多人来说,这被认为是臭名昭著的Amiga对抗Atari ST的战争。

雅达利街
从计算机图形学,动画和视频游戏的角度来看,没有这样的战争。 甚至很难打仗。 多亏了其Agnus和Denise协处理器,Amiga明显优于Atari ST。 例如,当试图在屏幕上移动精灵时,使用Atari ST帧缓冲区的内存会很痛苦。
为了缓解其缺点,Atari Computers在1989年更新了Atari ST系列,推出了520 ST E和1040 STE 。 改进之处包括:Genlock,12位颜色,PCM音频,最重要的是BLiTTER [12] 。 这些创新使Atari ST成为了与Amiga竞争的技术。
建筑学
Blitter的功能对游戏开发人员来说是无价的。 不幸的是,他来不及了。 Atari ST拥有庞大的基础,可避免开发人员浪费时间为少数用户提供更好的游戏。 更不用说没有人敢在ST E上独家发行游戏。 根据Jaguar版本的开发者(看到了Atari ST源代码),另一个世界也不例外。
完全编辑了《另一个世界》的程序,使其可以在68000上运行。根本没有使用ST E功能。
-塞巴斯蒂安·布里埃(SébastienBriais)
请注意,在所有Atari ST上都有一个DMA控制器,但是它只能从软盘/硬盘驱动器传输到RAM,这在开发游戏时没有太大帮助。 程序员剩下的不多了。 即,具有8 MHz时钟频率和512 KiB RAM的Motorola 68000处理器。

影像系统
负责产生视频信号的GLUE芯片每个通道使用3位(每个像素9位),提供512种颜色。

注意:通过操纵Shifter,GLUE和MMU,演示制作程序设法消除了Atari屏幕臭名昭著的黑色边框。 过扫描和全屏技术人员在50 Hz和60 Hz之间切换刷新率,并且也从hiRes切换到LowRes,直到完成行扫描以强制GLUE延迟VSYNC / HSYNC信号[13] !
Atari ST上的另一个世界
埃里克·沙伊(Eric Shayi)与《阿米加》(Amiga)平行编写了《雅达利ST统治下的另一个世界》。 与Amiga相似,68000处理器简化了端口,因为大多数ASM VM可以重复使用。 图形部分有所不同,其中提供了三种模式。 高分辨率(640x400 2色),非常适合编程;中等分辨率(640x200 4色),在这种情况下不太有趣;低分辨率(320x200 16色[14] ),非常适合另一个世界。

每个帧缓冲区的所有权限都使用32 KB。 没有像上一篇文章中提到的Amiga这样的节拍计划。 在高分辨率下,每个位对应一个像素。 在低分辨率下,像素索引分为4位,分布在64位上。
小地狱
对于使用精灵的游戏,这样的底层布局是一个问题。 试想一下,当总线分辨率为一个字节(8位)时,使用分辨率为一位的掩码/记录的任务。 现在想象一下精灵如何越过字节边界,任务变成一场噩梦[15] 。 CPU负载是如此之大,以至于游戏不使用遮罩/记录,而是更喜欢使用预旋转的精灵(每个位对齐一组),以Atari ST的名义,考虑到RAM上的大量内存,这并不是什么大问题。董事会。
有趣的是,在“另一个世界”中,当要绘制相同颜色的长线时,交替出现的图形图层会变成天堂。 让我们看看为什么。
填充和复制
仅使用处理器执行FILL和COPY,即可以最简单的方式执行此任务。 这里没有棘手的技巧,但是帧缓冲区的非平面布局允许68,000个“行进”。 有了32 KB的move.l
,在这两种情况下8000(32位) move.l
操作move.l
完成这项工作。 在68000th上记录的COPY操作的一部分输出如下。
... move.w #49,d0 ;50*160*4 = 32000 octets .copy_loop: rept 160 move.l (a1)+,(a0)+ endr dbra d0,.copy_loop ...
由于记录了68000的时间[16] [17] ,因此我们可以准确地计算完成COPY操作所需的时间。 由于move.l
需要20个循环,因此所需的循环总数为20 * 160 * 50 = 160,000个循环。 以8,000,000周期/秒的速度,COPY需要20毫秒。
FILL的想法相同,只是move.l
的第一个操作数是“数据直接”,而不是“通过后递增间接寻址的地址寄存器”,这仅需要12个周期。 这样,总共需要12 ms的填充时间。
... move.w #49,d0 ;50*160*4 = 32000 octets .fill_loop: rept 160 ; d1 = color repeated 8 times since d1=32 bits and color index=4 bits) move.l d1,(a0)+ endr dbra d0,.fill_loop ...
注意:如果您查看第二个游戏屏幕,则可以轻松地区分Atari ST版本和Amiga版本。
在Amiga版本中发现的可爱圣甲虫在Atari ST上消失了。 实际上,它在所有其他端口中都不存在[18] ,出于某种不清楚的原因,这使其成为Amiga专有的。

用渲染解决问题
如果没有“线条绘制”和“区域填充”模式,Atari ST下的端口将使用简单的Bresenham算法[22]来跟踪多边形的边缘。 使用两条边缘和水平线,创建屏幕空间的开始和结束坐标。 然后68,000填充了它们之间的空间[19] 。 通常,操作原理与Amiga阻击器相似,除了此处的所有操作均以编程方式完成。
乍一看,这种方法非常慢,但是在这里也可以利用编织布局实现“巡航速度”。 如果仔细看,“另一个世界”的大多数帧都包含相同颜色的长水平线。 这使68000可以使用我们之前介绍的move.l
指令以16个像素为单位写入行。
莱斯特遇到他的“救世主”的屏幕就是一个很好的例子。

在这里,我们看到由于帧缓冲区的位置和对齐方式,行的红色部分无法以16像素块显示。 这些“慢”像素仅占多边形边缘的帧缓冲区的23%。 77%的帧缓冲区使用“快速”的16像素块记录进行渲染。

解决调色板问题
要解决的最后一个问题是Atari ST的色深较浅。 Amiga每种颜色允许12位,而AtariST只能提供9位。
解决方案是将游戏与Amiga调色板配合使用,让68,000负责在启动时为每个通道通过简单的1位移位(LRS)从12位转换为9位。
与Amiga相比,最终的图片看起来要暗一些,但差别几乎不明显[20] 。
总结
尽管存在明显缺陷,但Atari ST还是成功发布了“另一个世界”的确切版本。 尽管如此,游戏也不应偏离Amiga版本。 较小的色彩空间几乎没有引起注意,并且引擎的工作速度仅比Amiga(每秒工作近24帧)慢一点[21] 。
参考文献
- Amiga的故事:构思于Atari,生于Commodore 。
- Amiga公司 。
- 维基百科:Atari ST Origins 。
- Dadhacker,Atari ST,第1部分 。
- Dadhacker,The Atari ST,第2部分 。
- ST杂志51:Shengan Short撰写的“ Les Techniques de l'Overscan part 1” 。
- ST杂志51:Shengan Short撰写的“ Les Techniques de l'Overscan part 2” 。
- ST杂志55:Shengan Short撰写的“ Les technique de l'Overscan 3” 。
- ST杂志70:Shengan Short撰写的“ Les Techniques de l'Overscan 4” 。
- Atari ST全屏演示历史记录 。
- Atari ST计算机销售和市场份额:比较 。
- ST杂志70:马蒂亚斯·阿格皮安(Mathias Agopian)的作品“乐霸,动画tres grande vitesse” 。
- Atari过扫描技术 。
- Atari ST的实时3d图形 。
- 为什么Atari ST游戏比Amiga版本慢 。
- 移动指令执行时间 。
- 68000的指令集 。
- 书呆子的乐趣 。
- 另一个世界源代码:Video :: fillPolygon 。
- Nerdy Pleasures,“ ST的色彩比Amiga稍暗。” 。
- Nerdy Pleasures,“ Atari ST版本的运行速度比Amiga慢” 。
- 布雷森纳姆算法 。