问题标签 [c64]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
audio - Commodore 64 程序员,如何在 C++ 游戏中使用 ReSid?
是否可以在我正在制作的游戏中使用 ReSID 仿真源代码?我想要一个像过去那样的视频游戏声音引擎。不是 wav/mp3。有什么想法吗?http://en.wikipedia.org/wiki/ReSID
bash - C64 代码艺术的 Bash 版本:10 PRINT CHR$(205.5+RND(1));: 转到 10
我拿起一本书10 PRINT CHR$(205.5+RND(1)); : 转到 10
本书讨论了 Commodore 64 BASIC 单行所产生的艺术:
这只是从 PETSCII 集合中重复地将字符 205 或 206 随机打印到屏幕上:
我不确定为什么原版使用字符 205 和 206 而不是相同的 109 和 110。另外,我更喜欢在开头添加一个 clear。这是我通常在 C64 中输入的内容:
您可以在模拟器中自己尝试这一切,例如使用 Flash 或 JavaScript 的模拟器:
- http://codeazur.com.br/stuff/fc64_final/
http://www.kingsquare.nl/jsc64
将上述代码输入到列出的模拟器中时,您需要意识到
- ( 是 *
- ) 是 (
- + 是 ]
我决定写一个 bash 行来做类似的事情会很有趣。
我目前有:
两个问题:
- 有什么建议可以让这个更简洁吗?
- 对更好的输出字符有什么建议吗?正斜杠和反斜杠几乎没有那么漂亮,因为它们的点不对齐。PETSCII 中使用的字符是特殊字符,而不是斜线。我没有在 ASCII 中看到任何可以正常工作的东西,但也许你可以建议一种从 UTF-8 或其他东西中提取字符的方法?
迄今为止最好的答案
bash 最短(40 个字符):
这是一个简短的 zsh(53 个字符):
这是我喜欢在 .bashrc 或 .profile 中添加的别名
有趣的是,将此与我可以为 C64 BASIC(23 个字符)做的最短比较:
下划线分别为 shift+H、shift+N 和 shift+O。我无法在此处粘贴字符,因为它们是 PETSCII 特有的。此外,C64 输出看起来更漂亮;)
您可以在此处阅读有关 C64 BASIC 缩写的信息:
assembly - CBM Program Studio 汇编器语法
我正在尝试学习 CBM Program Studio。但我无法让宏为我工作。没有宏,代码就可以了。但是当我添加宏部分时,它会在第 7 行给出“No Matching End Definition”。
任何的想法?
macos - 适用于 Mac OS X 的 Commodore 64 开发工具
您使用哪些工具在 OSX 上对 C64 进行交叉开发?
哪些汇编器、文本编辑器或 IDE、gfx、sprite、字符集编辑器?
或者您只是更喜欢通过 parallels 桌面或 bootcamp 的 Windows 环境?
assembly - CA65:来自 16 位计算地址的“范围错误”
给定以下 CA65 代码:
我收到此错误消息:
有趣的是,以下版本按预期工作:
那么我如何让这个在 a 中工作.scope
呢?
interrupt - 如果我关闭了两个 CIA,谁在调用我的中断处理程序?
我正在尝试设置一个简单的光栅中断处理程序来更改给定条纹中的背景颜色。但是,我的中断处理程序似乎一直被调用。(代码使用CA65的格式)
如果我在上面的代码中注释掉标记为“解决方法”的三行,那么我的中断处理程序会一直被调用,而不仅仅是在(开始)行ROW
:
如果我取消注释这三行,那么它可以工作,但它非常不稳定,我猜是因为那些相同的意外中断:
assembly - 等待 $D012 上的更改(C64 汇编器)
我在模拟 C64 机器上玩 asm 时遇到了一些问题。
我要做的是检查是否按下了键盘上的键“N”,然后程序应该等待地址 $D012 上出现更改。现在我不明白的是我如何“等待”改变出现?谁能告诉我这是怎么一回事?
检查键盘上的 N 按钮是否被按下很简单 - 只需使用子程序 FFE4(输入)和 FFD2(输出)。
我真的不要求为我做任何事情,但如果我能快速了解 D012 的工作原理以及如何“等待”更改,我将非常感激。
提前致谢!
coordinate-transformation - 在屏幕任意位置打印字母
根据 C64 手册,您可以使用“POKE 1024, 1”打印一个字符,其中 1024 是起始地址 (C64-BASIC)。屏幕是 40*25,也就是说 2024 是屏幕结束的位置。这给出了以下公式,用于从头开始(1024,屏幕左上角)在任何行和列中写入字母:1024 + x + 40 * y其中 x 是行,y 是列。现在,大多数情况下,当您创建这样的游戏时,您希望从左下角开始(应该是地址 1984)。现在,是否有一个“公式”可以真正使 X 和 Y 从这一点开始工作?
示例:假设您有一个角色或某物从左侧移动并且需要跳跃,因此我们需要进行一些物理计算并更改 X 和 Y 值并写入屏幕。如果 X 用 3 更新,Y 用 4 更新,则需要计算这些值,以便在屏幕上正确(从屏幕左下角作为起点)。
我希望我已经解释得很好,这不是太模糊。否则,就问吧。
提前感谢您的帮助!
c - CC65:四行坏,两行好?
我正在尝试stdio.h
在 Commodore 64 上使用 IO,但我正在使用以下程序:
问题是,如果我不加printf
注释 2 ,那么它会按预期工作。如果我取消注释所有四个,那么它根本不起作用:如果我RUN
这样做了,我只会看到在屏幕重置为仅显示READY.
在空屏幕上之前闪烁的线条。
如果我有三个,那么它第一次不起作用(闪烁到空READY.
屏幕),但如果我RUN
再次使用它,那么它就起作用了......
我应该补充一点,我只在 VICE 上测试过这个,而不是真正的 C64。
assembly - 我可以通过一些 16 位魔术把它变成一个循环吗?
我现在开始使用 6502 Assembly,并且在处理需要处理大于 8 位的数字的循环时遇到了问题。
具体来说,我想遍历一些内存位置。在伪 c 代码中,我想这样做:
因此,从$44AD
我想写入$01
ram 的地址开始,然后向前跳转$28
,写入$01
该地址,然后$28
再次向前跳转,直到我完成了 20 次(最后写入的地址是$47A5
)。
我目前的方法是循环展开,这写起来很乏味(尽管我猜汇编器可以使它更简单):
我知道绝对寻址(使用累加器而不是 Y 寄存器 - sta $44AD, x
),但这只能给我一个 0 到 255 之间的数字。我真正认为我想要的是这样的:
基本上,从最高地址开始,然后向下循环。问题是 $14 * $28 = $320 或 800 dec,这比我实际存储在 8 位 X 寄存器中的要多。
有没有一种优雅的方式来做到这一点?