至少运行 VICE 2.4:
PRINT PEEK(53280)
254
POKE 53280,14
PRINT PEEK(53280)
254
Run Code Online (Sandbox Code Playgroud)
很明显,只使用了位#0-#3,并且使用 获得了“正确”值AND 15,但是为什么6510 将高位设置为1?
我是汇编程序新手,所以这是一个简单的问题:
我的自定义子例程更改X、Y和A寄存器。他们操纵这些来产生期望的结果。在例程启动时将这些值推入堆栈并在之前恢复它们是一个好主意吗RTS?
我的意思是,这样我就可以编写可以从任何地方调用的例程,而不会弄乱“状态”或影响其他例程。但是这样使用栈可以吗?或者有更好的方法来做到这一点吗?
我在没有找到答案的情况下扫描互联网和旧的C64书籍,所以最后我不得不在这里发布.我喜欢C64编码的美好时光,虽然我目前还没有在这个平台上编写游戏,但我想知道当时是如何克服某些硬件限制的.
在所有现代游戏编程书籍和教程中,找到向玩家发射敌人子弹的正确方向的方法是使用向量数学与浮点数,或多或少像这个伪代码:
bullet_velocity = (player.position - bullet.position).normalize();
Run Code Online (Sandbox Code Playgroud)
现在,考虑到C64的限制,我在源代码中大量使用正弦表来提高速度,也许我分心了,但是当我从C64程序员那里阅读旧的C64书籍或评论程序时,我从未见过关于矢量数学的一个词,我想知道如何在同一时间获得同样的目标.
请回答,我有这样的一千个疑问,但回答这个问题也许我可以发现自己对其余的回应!:-)
编辑:只是一个注释:用针对玩家的子弹的C64游戏的例子是Silkworm和Cybernoid.
我想在 cc65 程序中包含和播放 .sid 文件(C64 芯片音乐的音乐)。通常 sid 文件包含一个起价为 1000 美元的播放程序,我如何将其链接到我的 cc65 程序?目前我使用以下命令用 cc65 编译我的代码:
cl65 -O -o C64test.prg -t c64 C64test.c
Run Code Online (Sandbox Code Playgroud) 为了学习如何使用ca65汇编程序,我一直在努力使include guards起作用。谷歌搜索和阅读《ca65用户指南》无济于事。这是产生错误的最小示例。
$ ls -l
total 16
-rw-r--r-- 1 me staff 60 Oct 22 19:40 65.inc
-rw-r--r-- 1 me staff 55 Oct 22 20:01 test.s
$
$ cat 65.inc
.ifndef _65_INC_
.define _65_INC_
.define NUMBER 1
.endif
$
$ cat test.s
.include "65.inc"
.include "65.inc"
lda #NUMBER
rts
$
$ ca65 test.s
65.inc(1): Error: Identifier expected
65.inc(2): Error: Identifier expected
65.inc(4): Error: Identifier expected
65.inc(4): Note: Macro was defined here
$
$ ls -l
total 16 …Run Code Online (Sandbox Code Playgroud) 致力于一些 C64 介绍性想法。我使用下面的代码和正弦表根据预先生成的正弦表移动精灵。
子程序
ldx counter
cmx #100
jmp +
ldx #00
stx counter
+ lda sprite_sinus,x
inc counter
rts
Run Code Online (Sandbox Code Playgroud)
窦表
sprite_sinus
!by 25,23,21,20,18,17,15,14,12,11,10,8,7,6,5,4
!by 3,2,2,1,1,0,0,0,0,0,0,0,0,0,1,1
!by 2,3,4,5,6,7,8,9,10,12,13,14,16,17,19,21
!by 22,24,25,27,28,30,32,33,35,36,37,39,40,41,42,43
!by 44,45,46,47,48,48,49,49,49,49,49,49,49,49,49,48
!by 48,47,47,46,45,44,43,42,41,39,38,37,35,34,32,31
!by 29,28,26,25
Run Code Online (Sandbox Code Playgroud)
但我需要一些不同的东西。在循环路径中移动精灵的 x 和 y 方向。我还可以使用哪些其他功能?
我想知道如何进入 Commodore 64 上的程序集编辑器。您输入命令吗?
我在 YouTube 上看到过这种情况,但发生得太快了,我跟不上!
我想在commodore 64中编写一个非常简单的基本程序,输入其他基本命令。
这是一个例子:
10 print"list"+chr$(13)
这会打印列表但不会按 Enter 键。
我的期望是得到 list 命令的结果。
我怎样才能实现这个目标?