STA $44
loop1:;Move the screen up a line;
LDA #$C0 ;$19C0 The first line of the screen.
STA $40
LDA #$19
STA $41
LDA #$D4 ;$19D4 The second line of the screen.
STA $42
LDA #$19
STA $43
LDX #$00
loop2:;Move a line up.
LDY #$00
LDA ($42),Y
STA ($40),Y
INY
CPY #$14
BCC loop2 ;If y<#$14 then goto loop2.
CLC;$40+#$14 Next line.
LDA $40
ADC #$14
STA $40
LDA $41
ADC #$00
STA $41
CLC;$42+#$14 Next line.
LDA $42
ADC #$14
STA $42
LDA $43
ADC #$00
STA $43
INX
CPX #$50
BCC loop2 ;If x<#$50 then goto loop1
DEC $44
BNE loop1
RTS
[此贴子已经被作者于2004-11-29 13:06:07编辑过]
屏幕缓存怎么半 如果是左右移动的话:<左移>
1.设置控制屏幕每行的变量,放入堆栈
2.对每行进行操作:
a。将本行前8个点对应的地址值左移1位
b。将下8个点对应的地址值左移1位
c。检查状态标志,如果溢出的话,前一个地址的最后1位加上1
b。判断是否退出循环
d。行中每个地址循环
3.行循环
[此贴子已经被作者于2004-12-4 14:39:18编辑过]
左右滚屏用循环移位的话就不必判断是否溢出了~ 为什么? “向左移”如果换一种思路去想,算法会简单很多:
每一行都从最后一个字节(8个像素)开始,往左位移(ROL),这时倒数第8个像素会存入C中,然后再ROL倒数第二个字节(8个像素),这时C标志会自动添加到这个字节的第0位。依此类推,即可实现向左位移。
[此贴子已经被作者于2004-12-11 12:16:42编辑过]
就是这样~因为用循环位移~就是ROL ROR 的话~C会先移入而本来会溢出的位会移进C~这样就不必要判断了~一行全部循环移动一下就可以了~ 我就是这个意思
只是很久没有用了
快忘了
呵呵
因为你说判断~其实不必~ 呵呵
不好意思了
哈哈
我看不明 2600应该也可以用上面的代码吧.呵呵,昨天还在想怎么写象英雄坛说的开头那样的效果呢,看来不用自己写了!! 英雄坛说开头那个滚屏中的文字是图像还是字符数据呢?? 应该是字符,如果是图片该有多大啊。 若是字符该如何做到那样的效果呢
为此郁闷了N久了
字符可以通过字符读取中断将点阵数据读取出来。当然2K的中断地址我不知道……
P.S.很久没来了……WQX已经报废了~以后……
露一次脸,真是不容易啊!!
有一个中断能定位到Y轴的任意坐标·!
--------------------------------------------------------------------------------------
混乱,上了大学也不要玩这么疯!~~~~
PS:WOW几级了?
哪一个中断啊,
3K的。
谁能说一下。
我对系统很不了解啊,查也无从下手…… 白金的序幕的那段滚屏程序貌似是是用图片的.
页:
[1]
2