精灵是如何工作的?

Ala*_*lan 5 animation sprite

精灵是如何工作的?

我见过《超级马里奥兄弟》等老派游戏中的精灵,想知道如何将它们制作成动画来制作游戏。

它们总是以一张大图像图的形式呈现,那么它们是如何使用的呢?

对于马里奥(作为示例),是否有预先计算的图像坐标来勾画马里奥的轮廓,并在各种马里奥精灵之间交换以生成动画?

或者是在游戏初始化期间使用预先计算的图像坐标预先“剪切”精灵并将其存储在内存中的某处?

显然我对游戏开发一无所知。

sup*_*cat 4

在许多较旧的视频游戏和计算机系统上,精灵是一种硬件功能,可以将小图像覆盖到更大的屏幕上。尽管 Atari 7800 的精灵实现与维基百科文章中描述的类似,但它在这方面实际上是独一无二的。大多数精灵系统为它们可以在扫描线上显示的每个精灵使用一组单独的电路,包括水平位置触发器和移位寄存器或顺序发送数据的其他装置。当光栅扫描到达线上的适当位置时,电路将开始移出精灵的形状数据。

有些机器(如 Odyssey2)包含视频芯片硬件以保存屏幕上所有精灵的形状。Atari 2600 仅保存每个精灵的 8 位形状数据,并且要求处理器在数据需要更改的任何地方实时加载数据。然而,最常见的模式是视频芯片自动从内存中计时精灵数据。通常,硬件期望数据采用特定格式,或者在某些情况下,采用两种格式之一。

在某些机器上,无需 CPU 干预即可在帧上同时显示的精灵数量等于精灵电路的数量。其他机器的精灵电路数量较少,但可以显示更多的精灵;一旦电路完成显示精灵,它就会从内存中加载下一个精灵的参数。NES 就符合这种模式。