好的。我希望它不会被关闭,因为我 25 年来一直有这种好奇心,我很想了解这个技巧。

在 Commodore 64 中,6569 VIC 无法寻址边界。您所能做的就是在中心区域(光标移动的区域)绘制像素。边框总是统一的,尽管你可以用 poke 53280 改变它的颜色,如果我没记错的话,颜色。

尽管如此,我清楚地记得游戏介绍中的边框带有图形,就像它是完全可寻址的一样。我试图了解它是如何工作的,但从未抓住要点。传说这是对精灵的巧妙运用,在某些情况下可以将精灵绘制在边界上,但我不知道这是否是都市传说。

编辑: :只需从提供的链接之一阅读此内容

将精灵跨垂直栅格线(超过8个精灵,有时多达120个精灵)多路复用。直到该集团的冠军在2007年5月发布了Brestage 3之前,人们普遍认为,不超过8个精灵在一条栅格线上出现,但是分配了新的Y坐标使其在屏幕上进一步出现。

这是邪恶的......你击败了光栅并在精灵到达那里之前重新定位它......

有帮助吗?

解决方案

首先只精灵可以显示在所述边界区域或从视频组的最后一个字节读取,通常是$ 3FFF重复8位模式(8个像素宽)。注意你只能看到这些精灵或8位模式,当你欺骗VIC芯片进入“不显示”的边界。见下文。

在边界具有比精灵更高的优先级,因此通常当一个子画面中的边界区域被绘制的边界覆盖精灵。与位VIC芯片弄虚作假的可以转动的边界关闭。

可以转动的顶部和底部边界关闭很容易(我将在下面解释),并且侧具有非常关键的时序边界关闭。

在VIC芯片的工作原理上的C64信息的首先一点点。

在VIC芯片绘制画面从左右上方的顶部,然后向下的线,和从左至右再次直到整个屏幕被绘制。它执行该重绘50次(对于PAL单元)或60倍的第二对(NTSC单元)。

有是一个8位寄存器VIC包含光栅中的任何给定时间的垂直位置。 $ D012。其实有超过255个可能的位置,所以第九位保存在第7位(最高位)或寄存器$ D011。因此,在任何时候,你可以读取这些寄存器,并找出光栅的垂直位置。没有可用的读取光栅的x位置寄存器。

的VIC芯片的另一个特征凉爽使用使用硬件滚动时解决的一个问题。基本垂直滚动通过使用硬件寄存器垂直移动屏幕0-7像素来实现。一旦你(取决于滚动方向0或7)达到极限,你会垂直移动每个字符块(8×8像素)一个块并绘制在顶部(或底部取决于方向)将被显示的新的数据。这个作品非常好,除了滚动,你会看到数据“流行”到屏幕上的每8个像素这一点。为了解决这个问题,你可以使边境地区的8个像素垂直增长由寄存器$ D011清零3。这就是所谓的24行模式。默认情况下,屏幕被设置为25行的8×8像素字符。在24行模式下,你仍然可以画出人物到底行,他们也只是在边境隐藏的。

因此,技巧到关闭的顶部和底部边界是:

1)设置屏幕25行模式

2)等待光栅到$ f2和$之间到达垂直位置的FA(其中边界在开始之间的8个像素24都行模式和25行模式)。

3)设置屏幕24行模式...移动当前光栅位置上方的边界的垂直起动

4)等待直到垂直光栅位置之后($ FA)

5)重复每一帧

步骤3)花样VIC芯片以为它已经开始绘制边框,所以它永远不会开始绘制它。瞧,顶部和底部边界是开放的。

关于侧边界可以做同样的事情与不同的寄存器,但作为光栅的水平运动是更快了很多然后垂直运动的定时需要被更紧密。还有另外一个问题要考虑到所谓的抖动。 <哪位我不会在这里解释。搜索“稳定的光栅C64”网络为在这一问题的深入的解释。

其他提示

请注意,Krestage 3 所做的(如问题中提到的)是不同的。

技巧的一个级别是在刚刚绘制“纸张”(工作区矩形,边框内的东西)的底部时弄乱边框。这使您可以在上边框和下边框中拥有精灵。

更高的级别是在纸张的右侧边缘、每条光栅线中将其弄乱,所有这些都如上面 JohnD 的答案中所解释的那样。这使您可以在左右边框中拥有精灵。

这些都不能让您在一行中拥有超过 8 个精灵。这就是克雷斯特的魔法。

到目前为止,(据我所知)VIC 芯片的最佳资源是 “MOS 6567/6569 视频控制器 (VIC-II) 及其在 Commodore 64 中的应用” 作者:Christian Bauer,一个有用的附录是 “MOS 6569 VIC-II 和 MOS 8566 VIC-IIe 视频接口控制器的存储器访问” 作者:马尔科·马克拉。
警告讲师:这些有些技术性,在您自己编写了一些 VIC 效果后,您可能会发现它们更容易理解。

如果链接失效了,只需按标题搜索文章,它们就会被无休止地复制。

可以打开上部和下部的边界用一个简单的BASIC程序:

    1 poke56334,0:poke53266,212:poke53265,27:poke16383,0
    2 h=53265:i=53273:h1=19:h2=27:i1=1
    3 pokei,i1:waiti,i1:pokeh,h1:pokeh,h2:goto3

我要去走在黑暗中刺这里(还没有这样做我自己)。我发现这个维基百科上。

c64demo部分解释说:

  

效果认为不可能是   在演示实现的,这主要是由于   有关无证副作用   到 MOS技术VIC-II芯片。   为VIC-诡计一些例子:

其中提到黑客是:

  

的Sprite滚动条被放置在   边界。通过欺骗的硬件不   绘制边框的屏幕上,   精灵可以移到这个区域   并显示。

当然,这个问题的有趣的部分是如何做。我建议在寻找一些演示数据库,其中包括源代码搜索,它采用了一个演示破解。

PRINT “这是53280,DUDE。”

据我了解,这是唯一可能的精灵。

精灵被允许是在边界区域中,并且边界被越顶绘制。通过一些诡计,边界可以被删除。

图形边境:无论是精灵或使用$ 3FFF效果(这实际上不是精灵的话)。要进入具体需要更多的空间,比我可以在这里的时间。

您还可以得到精灵基本边境: BASIC精灵在边境

IIRC,也有一些方法来混淆视频芯片因此,它绘制文本的第26行。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top