在典型的C64游戏中,究竟是什么构成了屏幕?


10

我试图通过BASIC来了解C64游戏开发的基础知识,并且我可以针对一些非常基本但很重要的内容使用一些建议:屏幕上的所有内容实际上是什么,以及如何绘制?

看看Katakis / Denaris

Katakis屏幕截图

屏幕上至少有9种不同的东西:

  1. 得分栏,具有不同的字体
  2. 船本身
  3. 附属于船的卫星,可拆卸
  4. 次要武器弹丸
  5. 初级武器弹丸
  6. 移动物体(可以是敌舰)
  7. 状态栏,显示船舶图像,生命数量和可填充的三个区域
  8. 主武器充电条,可以填满
  9. 背景中的滚动星空
  10. (在屏幕上未编号)作为背景一部分的坚硬物体,例如岩石或金属墙

C64每条水平扫描线仅支持8个Sprite,所以我认为屏幕中间的所有内容都不是Sprite吗?我以为任何需要碰撞的东西都将是一个精灵(因为我可以使用精灵进行硬件碰撞检测),但是即使那样我也很快达到了8个精灵的限制。而且,我的武器可以发射的弹子不止一个-我的飞船,卫星和6枚子弹已经是连续8个子弹了(看录像时约50秒)。

另外,像这样的游戏会使用哪种图形模式?《编程手册》列出了位图模式,它实际上直接修改了屏幕存储器。这是我通常应该使用的模式吗?我如何将所有非精灵元素组合在一起以使其出现在屏幕上?

分数和状态栏中的很多内容都是静态的(“ Area:01”或“ frame”),因此我猜我将在级别开始时将它们填充一次。需要更新的内容(得分,底部的充电条)是否会通过用黑色填充屏幕内存,然后在每一帧绘制新得分来进行更新?

还是我必须在每一帧上绘制整个屏幕?

Answers:


13

在c64上,您可以“多路”精灵。绘制它们之后,您可以将它们移到新位置并重新使用它们。中间的大多数对象很可能是多重精灵。在c64中,只要不占用相同的水平扫描线,就可以轻松使用8个以上的精灵。除此之外,如果需要,您实际上可以使用字体图形制作软件精灵(在这种情况下,弹丸最少)。

2、3、6。这些很可能是精灵。

4、5、9。这些很可能是字符图形(8x8像素)软件“ sprites”

游戏将不使用位图模式,它将需要过多的内存移动(除非您做一些VIC芯片技巧...)。使用的模式将是字符图形模式。

您需要绘制的内容取决于。在这种情况下,如果仔细观察,就会重复出现一定大小(x * y像素)的图案星,因此基本上您将更新这些字体的字符存储以模拟星空滚动。

开始时填充的分数/状态,然后在需要时进行更新。

您将必须在每帧更新精灵及其位置。您还将更新弹丸。同样,您将更新该x * y像素星空图案。


5
在Katakis视频上仔细观察了一下。这些对象实际上是字体图形。您实际上可以通过查看使用的颜色来查看。同样,星空实际上并不只是X * Y像素,而是稍有不同,但仍然在字体图形中。您必须每8像素更新一次滚动的字体图形,因为在软件欺骗之后,硬件滚动寄存器只能将图形移动8像素。另外,您也不想使用硬件精灵冲突。如果涉及两个以上的精灵,它们将无法区分哪些精灵实际发生碰撞。只需简单的数学就可以在碰撞中派上用场。
刚老的c64 geezer 2012年

2

我前一段时间在《德国C64杂志》上读过一篇文章。项目符号是已经有人指出的充当精灵的角色。船和敌人都是精灵。

关卡也由字符组成,但有所不同。由于级别如此之大,并且内存是宝贵的,Trenz编写了自己的一套工具来将字符分组为模块。

因此,他可以使用更大的模块并进行组合。而且他会使用某些补丁模块来使模块的交集变得整洁。

总而言之,这是一种压缩,其中级别是用构建块而不是逐个字符描述的。

您可能还会注意到,在Katakis中某些级别具有视差背景。

这是通过以下方式实现的:填充背景(通常由2x2或3x3字符组成)并针对滚动方向设置动画效果(位移)。例如,级别向左滚动2个像素,背景图案向右滚动1个像素,因此它似乎以较慢的速度滚动。

希望能有所帮助

您实际上可以看到的另一件事是单个模块,例如https://archive.org/details/64er_1989_10/page/n27滚动到第24页

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.