易码技术论坛

 找回密码
 加入易码
搜索
查看: 272660|回复: 11

[讨论]我的滚屏代码,不知行得通不

[复制链接]
发表于 2005-7-5 10:47:00 | 显示全部楼层
稍微看了下 可以发现你的地址减子程序不对 应该是
地址减:
Z2EC$80
   LDA$80
   CMP#$FF
   BNE L2[/COLOR]
   DEC$81
L2DA$80
   CMP#$BF
   BNE L3
   LDA$81
   CMP#$19
L3:RTS
发表于 2005-7-5 10:48:00 | 显示全部楼层
以下是引用qyfcool在2005-7-5 10:26:57的发言:

地址减:

Z2EC$80
   BNE L2[/COLOR]
   DEC$81
L2DA$80
   CMP#$BF
   BNE L3
   LDA$81
   CMP#$19
L3:RTS


标红色 的地方错了吧.

汗,楼上比我快了一步。


不过全屏滚屏(上,下,左,右),都不是很难的。
楼主有兴趣就弄弄在一个小区域内的滚屏吧,相对有难度多。
发表于 2005-7-5 10:50:00 | 显示全部楼层
这样写更简练
Z2DA$80
   BNE xxx
   DEC$81
xxx:
   DEC$80
发表于 2005-7-5 10:55:00 | 显示全部楼层
还有左滚屏注意对最左边的一列点清零 不然旁边的符号会乱闪……
发表于 2005-7-5 10:58:00 | 显示全部楼层
如果是小范围滚屏 这里是我写的一个任意范围4方向滚屏的子程序 程序并不算很好 但可以作为参考
http://www.emsky.net/bbs/dispbbs.asp?boardID=13&ID=4243&page=4
P.S.lee的那个方法不错 很简单 学到了 呵呵
 楼主| 发表于 2005-7-5 11:40:00 | 显示全部楼层
5555555555555555555555~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
好好感动啊,这么多人回帖!
LEE的改法果然厉害,之前闻所未闻啊,好好记住先。
 楼主| 发表于 2005-7-7 09:14:00 | 显示全部楼层
这个滚屏代码除了上面说的问题外,还有别的问题吗?如果没有的话,我就用在XX上了.
高手们顺便帮看一下这个问题,谢谢.
http://www.emsky.net/bbs/dispbbs.asp?boardID=13&ID=7336&page=1
不过全屏滚屏(上,下,左,右),都不是很难的。
楼主有兴趣就弄弄在一个小区域内的滚屏吧,相对有难度多。

我回家写了下,不知道能不能用.特别是地址的运算,我不大有把握:

入口  X:80 Y:81 X长:82 Y长:83
占用  偏移:84 地址:85,86 计数87

$85,$86加:
Z1DA#$14
L2:CLC
   ADC$85
   BNE$L1
   INC$86
L1EX
   BNE L2
   RTS
计算地址(1),计算偏移
Z2DA#$00
   STA$87
   LDA#$BF
   STA$85
   LDA#$19
   STA$86
   LDA$80
   LDX#$01
   JSR Z1+1
   LDX$81
   JSR Z1
   LDA#$14
   SEC
   DEC$82
   STA$84
   RTS

计算地址(2)
Z3:JSR Z2
   LDA$82
   LSX#$01
   JSR Z1+1
   LDX$83
   JSR Z1
   RTS

地址加
Z4:INC$85
   BNE L3
   INC$86
   DEX
   BNE$L4
   LDA$84
   LDX#$01
   JSR Z1+1
   INC$87
   LDX$82
   CLC
L4:RTS

地址减
Z5DA$85
   BNE L5
   DEC$86
L5EC$85
   DEX
   BNE L7
   INC$87
   SEC
   LDA$85
   SBC$84
   STA$85
   BPL L6
   DEC$86
L6:CLC
L7:RTS

上滚
   DEC$83
   JSR Z1
   LDX$82
L8:LDY#$14
   LDA($85),Y
   LDY#$00
   STA($85),Y
   JSR Z4
   LDA$87
   CMP$83
   BNE L8
   INC$83
   RTS

下滚
   DEC$83
   JSR$ Z3
   LDX$82
L9:LDY#$00
   LDA($85),Y
   LDY#$14
   STA($85),Y
   JSR Z5
   LDA$87
   CMP$83
   BNE L9
   INC$83
   RTS
左滚
   JSR Z3
   LDX$82
   CLC
   LDY#$00
L10:LDA($85),Y
   ROL
   STA($85),Y
   JSR Z5
   LDA$87
   CMP$83
   BNE L10
   RTS

右滚
   JSR Z2
   LDX$82
   CLC
   LDY#$00
L11:LDA($85),Y
   ROR
   STA($85),Y
   JSR Z4
   LDA$87
   CMP$83
   BNE L11
   RTS
 楼主| 发表于 2005-7-7 10:03:00 | 显示全部楼层
对了,X取1——160,Y取1——80。而且上下滚屏时顶行或底行的图像没有清除。
 楼主| 发表于 2005-7-9 11:19:00 | 显示全部楼层
哦哦哦,那个局部左右滚屏有个致命的错误啊,看来我是做不出来了.
发表于 2005-7-14 20:28:00 | 显示全部楼层
没有多大用处的创意!!!
我想谁会把一个屏幕滚来滚去的,除非是幻灯片,文曲星上用它干什么!!
注意:文曲星的纵行只有1-159,没有0行,注意屏蔽调,要不然,图标会出洋相的!!!
 楼主| 发表于 2005-7-15 10:36:00 | 显示全部楼层
没有多大用处的创意!!!
我想谁会把一个屏幕滚来滚去的,除非是幻灯片,文曲星上用它干什么!!
注意:文曲星的纵行只有1-159,没有0行,注意屏蔽调,要不然,图标会出洋相的!!!

不是啦,偶只想练习一下汇编的算法之类.也想做做GVBASIC++.不过不成功.

 楼主| 发表于 2005-7-5 10:26:57 | 显示全部楼层 |阅读模式
看了某人写的滚屏代码,感觉不大好用,于是自己写了一个,大家看看怎样,如果可以,我将会用在XX上.


这是我写的



地址加:

Z1:INC$80
   BNE L1
   INC$81
L1DA$81
   RTS

地址减:

Z2EC$80
   BNE L2
   DEC$81
L2DA$80
   CMP#$BF
   BNE L3
   LDA$81
   CMP#$19
L3:RTS

下滚屏:

   LDA#$EB
   STA$80
   LDA#$1F
   STA$81
L4DY#$00
   LDA($80),Y
   LDY#$14
   STA($80),Y
   JSR Z2
   BNE L4
   RTS

上滚屏:

   LDA#$C0
   STA$80
   LDA#$19
   STA$81
L5:LDY#$14
   LDA($80),Y
   LDY#$00
   STA($80),Y
   JSR Z1
   CMP#$1F
   BNE$L5
   LDA$80
   CMP#$EB
   BNE L5
   RTS

左滚屏:

   LDA#$FF
   STA$80
   LDA#$1F
   STA$81
   LDX#$14
L6:CPX#$14
   BEQ L7
   LDX#$00
   CLC
L7:LDA($80),Y
   ROL
   STA($80),Y
   JSR Z2
   BNE L6
   RTS

右滚屏:

   LDA#$19
   STA$80
   LDA#$C0
   STA$81
   LDX#$14
L8:CPX#$14
   BEQ L9
   LDX#$00
   CLC
L9:LDA($80),Y
   ROR
   STA($80),Y
   JSR Z1
   CMP#$20
   BNE L8
   RTS




这是别人写的:




560 下滚屏:
570 LDA #$FF
580 STA $80
590 LDA #$1F
600 STA $81
610 LDA #$EB
620 STA $82
630 LDA #$1F
640 STA $83
650 LDY #$00
660 L1:LDA ($82),Y
670 STA ($80),Y
680 DEC $80
690 LDA $80
700 CMP #$FF
710 BNE L2
720 DEC $81
730 L2EC $82
740 LDA $82
750 CMP #$FF
760 BNE L3
770 DEC $83
780 L3:LDA $82
790 CMP #$BF
800 BNE L1
810 LDA $83
820 CMP $19
830 BNE L1
840 RTS
850 上滚屏
860 LDA #$C0
870 STA $80
880 LDA #$19
890 STA $81
900 LDA #$D4
910 STA $82
920 LDA #$19
930 STA $83
940 LDY #$00
950 L1:LDA ($82),Y
960 STA ($82),Y
970 INC $80
980 BNE L2
990 INC $81
1000 L2:INC $82
1010 BNE L3
1020 INC $83
1030 L3:LDA $83
1040 CMP #$20
1050 BNE L1
1060 RTS
1070 左滚屏
1080 LDX #$36
1090 LDA #$8C
1100 STA $80
1110 LDA #$1B
1120 STA $81
1130 L1:CLC
1140 LDY #$13
1150 L2:LDA ($80),Y
1160 ROL
1170 STA ($80),Y
1180 DEY
1190 BNE L2
1200 LDA ($80),Y
1210 ROL
1220 AND #$7F
1230 STA ($80),Y
1240 CLC
1250 LDA $80
1260 ADC #$14
1270 STA $80
1280 BCC L3
1290 INC $81
1300 L3EX
1310 BNE L1
1320 RTS
1330 右滚屏
1340 LDX #$50
1350 LDA #$D4
1360 STA $80
1370 LDA #$18
1380 STA $81
1390 L1:CLC
1400 LDY #$EC
1410 L2:LDA ($80),Y
1420 ROR
1430 STA ($80),Y
1440 INY
1450 BNE L2
1460 CLC
1470 LDA $80
1480 ADC #$14
1490 STA $80
1500 BCC L3
1510 INC $81
1520 L3:DEX
1530 BNE L1
1540 RTS
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2024-4-20 20:14 , Processed in 0.012096 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表