Commodore 64上的“切换”雪碧

2020-05-11 04:38:39

问问任何一个面包头都做了什么(或者还在做什么!)。准将64是最高级的8位计算机,你和你几乎肯定会有几个标准答案中的一个或多个来回答这个问题:

VIC-II芯片有16种颜色(是Sclair ZX Spectrum的两倍)和8个硬件精灵。

当然,其他一些8位机器也可以赶上或超过这些功能中的一个或多个,但就我和其他许多人而言,没有人像C64那样将它们全部捆绑在一起。然而,就个人而言,如果你拿枪指着我的头,告诉我把面包盒的吸引力降低到一种非常具体的核心天才成分,我只能说是硬件精灵。遗憾的是,C64在本地只提供了其中的8个。当然,通过我们称为多路复用的众所周知的权宜之计,这一限制已经得到了极大的扩展。

在继续之前,如果我不指出多路复用/多路复用器这个术语的模糊和历史争议的本质,那将是疏忽的,在C64的遗产时代,这个术语往往被那种相互冲突的定义所分裂,即只有编码势利者才会费心去挑拨离间。(这句话的意思是:“多路复用器/多路复用器”)在C64的传统时代,往往会因为相互矛盾的定义而被撕裂,只有编码势利者才会费心去挑拨离间。在接下来的几年里,这种情况在很大程度上已经变得成熟起来,因为迂腐的语义已经被更普遍的共识所取代:多路复用指的是任何使用中断重新绘制已经绘制的精灵的措施,通常是用一个新的指针(即定义)在屏幕下方更远的地方,从而产生一个或多个额外的精灵(有关如何最大限度地利用这种方法产生的精灵数量的超级核心技术论文,请参阅Linus Akesson&39;的详细文章)。无论如何,就本文而言,多路复用和多路复用器采用了今天大多数人(包括我自己)使用的更广泛的含义。当然,正如您所期待的那样,我在开发中的下一代游戏Parallaxian中使用了多路复用器技术,其临时的精灵模式如下所示:

黑色文字表示精灵区域1,红色表示精灵区域2&34;如果你知道蓝色意味着什么,那就给你自己一颗金星,直奔谚语的顶端吧!。这说明,与之前的许多其他例子(如Armalyte和Turrican)一样,当涉及到扩展同时在屏幕上可见的硬件精灵的数量时,光栅中断的绝对威力。事实上,从Parallaxian捕捉到静止帧(下面将进一步定义,仅供外行使用)显示,VIC-II在没有一次使用精灵4、5、6或7的情况下绘制了10个硬件精灵,同时处理视差平滑滚动处理程序和软件精灵的需求,这些精灵以小人的形式在前景和铬合金圆顶激光柱体中奔跑……这再次提醒人们为什么会有这样的精灵,这也提醒了我们为什么会有这样的软件精灵,这些精灵以小人物的形式奔跑在前景和铬色圆顶激光地堡中。但我真正想从这张图片中强调的是:多路复用是一种垂直偏向的技术。换句话说,您只能在y方向上多路复用,而不能在x方向上多路复用。这是因为每个帧都由VIC-II组成,VIC-II从屏幕顶部(实际上远高于可见屏幕)开始,然后在屏幕上运行渲染光束(也称为光栅),在瞬间跳回到最左侧并向下移动一个像素深度,然后重复该过程312次(在我们在欧洲使用的PAL机器上;在美国的NTSC上,仅262次),直到整个屏幕渲染完成为止,然后重复该过程312次(在我们在欧洲使用的PAL机器上;在美国的NTSC上,仅262次),直到整个屏幕被渲染完为止(在我们在欧洲使用的PAL机器上,在美国的NTSC上,仅262次),然后在瞬间跳回最左侧并向下跳跃1个像素深度。这意味着每个屏幕刷新帧都是一个完整的自上而下的序列,在PAL机器上每秒重复50次-有关光栅上更详细的入门知识(并将这种离题的切线扼杀在萌芽状态),请参阅这篇Dustlayer文章。现在你可能在想,为什么我们不能在光栅光束沿着水平扫描线快速移动时,在某个点上触发重新绘制一个精灵,以创建一个水平光栅分割呢?这就是为什么我们不能在某个点上触发重新绘制一个精灵,因为光栅光束沿着一条水平扫描线快速移动,从而产生一个水平光栅分割?毕竟,市面上有很多带有垂直光栅条效果的演示,这表明x方向的精灵多路复用器可能是可能的。答案是,我们不能以任何值得玩游戏的实用方式来做这件事;精灵渲染是VIC-II不那么琐碎的琐事之一,而让这样的拆分保持稳定并持续几条扫描线的硬件资源是不存在的-有关这个主题的详细处理,请参见帕西·奥贾拉(Pasi Ojala)的最好的文章,《遗失的循环》(Missing Cycle&34;)。

撇开对李小龙老电影名称的模糊引用不谈,如果遵守某些条件,就有可能在屏幕上的其他地方重复使用已经绘制的精灵,而不需要求助于脑筋急转弯的多路复用技术。它仍然远不容易执行(从新手程序员的角度来看),但它可能比多路复用稍微容易一些,并且不受垂直偏见或

为了示意性地说明原理,下图显示了Parallaxian的加力燃烧器效果是如何由与飞机的激光器相同的精灵(精灵2)提供服务的,但它只在游戏中起作用,因为加力燃烧器的火焰无论如何都必须闪烁,而且激光必须在屏幕上移动,从而揭示了切换方法的两个关键规则或条件:

由切换复杂的精灵渲染的任何对象都不能固定在位置和实体上;如果它不是移动的,它必须像火焰一样闪烁。

但是,由切换复杂的精灵渲染的任何对象在移动时都可以表面上是实体的,例如坠落的炸弹(虽然它的坚固性是一种光学错觉,但实际上,它在每隔一帧上都是不可见的。