我在这里有一个相当大的问题,我发现仅用几本参考书、互联网和你的真正难以回答。
- 我只想显示一个位图。等待几秒钟。
- 把它从记忆中抹去。
- 显示另一个位图。再等等。
- 从记忆中抹去那个。
- 显示最终位图。等最后一次。
- 而且,你已经猜到了,把它从记忆中抹去。
- 然后进入标准字符模式。 &继续运行我的代码 - 从屏幕空白开始,然后进入询问用户一些文本输入等......
粗体字我遇到了真正的麻烦!
这是我用来运行显示位图部分的代码,它只是进入一个无限循环......
*=$1000
lda $4710
sta $d020
sta $d021
ldx #$00
loaddccimage
lda $3f40,x
sta $0400,x
lda $4040,x
sta $0500,x
lda $4140,x
sta $0600,x
lda $4240,x
sta $0700,x
lda $4328,x
sta $d800,x
lda $4428,x
sta $d900,x
lda $4528,x
sta $da00,x
lda $4628,x
sta $db00,x
inx
bne loaddccimage
lda #$3b
sta $d011
lda #$18
sta $d016
lda #$18
sta $d018
jsr *
*=$1FFE
incbin "ASTRO1.prg"
到目前为止,我已经尝试重复代码,认为它可以覆盖所有内容,但 *=$1FFE 似乎无法按时间顺序工作,对于每个文件,我都会收到内存覆盖错误,并且它始终默认为显示我用 incbin 函数调用的最后一个位图。有没有办法在每个位图帧之间重置所有内容(但只是变黑)?还是我只是错误地加载了这些图像?
然后进入字符模式也将是棘手的,因为即使使用一个位图我也找不到这样做的方法。也许这整个代码结构是错误的方式,idk...
或者这仅仅是c64无法做到的事情?我不愿意去这里,因为我确信我以前在游戏介绍中看到过位图循环——只是真的挠头想知道怎么做。
再次感谢伙计们,很抱歉在这里缺乏理解,我一般是编程新手,但认为我走在正确的轨道上。我希望很多人可以从您的回答中学习,因为这确实是我认为没有任何信息的东西。
你爱准将的朋友,
詹姆斯(Smokeyparkin)