我打算在我的新C64项目中使用多色字符模式下的软件精灵。我的想法是使用叠加'子弹'精灵数据来平铺数据。更好的方式来动态更新平铺数据上的Commodore 64
我想我可以在地址'TILESET'的地图集数据,地址'SPRITE'的地图数据。我可以结合这两个准备子弹字符与动态计算的背景和存储地址'SUPERIMPOSED'
我写了下面的代码和循环次数来检查它是否可行。我认为这不是。循环吃了219个周期。近四条光栅线。而且我没有在此循环之前包含其他必要的计算。就像计算目标地址一样。
当我想在屏幕上有16个项目符号时,它将需要64个栅格或8个字符的行。所以我变得怀疑。这是正确的方法吗?还是有没有其他更优化的方式来做同样的工作?
cycles
---------
ldy #$07 4 x1 = 4
- LDA TILESET,x 3 x8 = 24
AND SPRITE,x 4 x8 = 32
STA SUPERIMPOSED,x 5 x8 = 40
dey 2 x8 = 16
cpy 4 x8 = 32
bne - 3 x8-1 = 71
----------
219 Cycle
我正在考虑在背景中有重复模式。这样我就可以使用相同的子弹图块而无需重新计算。
展开循环以摆脱代码增加代价的开销。你似乎还在使用'x'进行索引,但是'y'用于循环? – Jester
如果您的精灵的大小超过一个像素,并且您希望能够定位任何像素,则需要更多代码,包括叠加2或4个字符(拼贴)的功能。如果精灵只是一个像素,您可以简化代码。 –
@RossRidge我还没有找到精灵。所以我不确定这个尺寸,但是它的大小约为4x4。 – wizofwor