问题标签 [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.

0 投票
1 回答
1868 浏览

assembly - 在 C64/Assembly 中更改没有颜色记忆的文本颜色

我有一个类似下面的代码,它工作正常。它清除屏幕,将一些颜色放入屏幕前 12 个字符的颜色记忆中,然后在屏幕上打印文本。

我想知道的是,如果有更简单的方法来更改 C64 程序集中的文本颜色,就像POKE 646,color在 BASIC 中一样?

编辑:我想我需要更清楚,我可以使用

但它不会影响 1024+ 中的汇编代码在屏幕上显示的文本。

是否有影响屏幕上所有字符的地址?

编辑:我想我知道答案,不。

0 投票
2 回答
256 浏览

assembly - 自动填充以将某些指令组装到预定地址中

我想用 CA65 组装一个需要自己运行的 6502 ROM,即没有其他可用的内核。我希望我的程序从$C000. 但这意味着我还需要$00 $C0$FFFC. 有没有办法让 CA65 在程序结尾和重置向量之间用零填充我的程序?

即我想做的是写类似

并得到一个.prg可以直接用作连续ROM区域的文件,从$C000一路到$FFFF.

我想我能做的一件事就是写

但这意味着每次我更改程序时都必须更新该数字。

0 投票
1 回答
364 浏览

assembly - 在 Commodore 64 上动态更新磁贴数据的更好方法

我计划在我的新 C64 项目中使用多色字符模式下的软件精灵。我的想法是使用叠加“子弹”精灵数据来平铺数据。

我想我可以在地址 'TILESET' 上拥有tileset 数据,在地址'SPRITE' 上拥有精灵数据。我可以将这两者结合起来准备一个具有动态计算背景的子弹字符并存储在地址“SUPERIMPOSED”中

我写了以下代码和循环计数来检查它是否可行。我认为不是。循环消耗了 219 个周期。近四个光栅线。而且我没有包括在此循环之前所需的其他必要计算。就像计算目标地址一样。

当我想在屏幕上显示 16 个项目符号时,需要 64 个栅格或 8 个字符行。于是我开始怀疑。这是正确的方法吗?或者有没有其他更优化的方式来做同样的工作?

我正在考虑在背景中有重复模式。这样我就可以使用相同的子弹图块而无需重新计算。

0 投票
2 回答
651 浏览

assembly - 在 C64 上瞄准玩家的敌人子弹

我正在扫描互联网和旧的 C64 书籍以寻找这个问题,但没有找到答案,所以最后我不得不把它贴在这里。我喜欢 C64 编码的美好时光,虽然我目前没有在这个平台上编写游戏,但我想知道当时是如何克服一些硬件限制的。

在所有现代游戏编程书籍和教程中,找到向玩家发射敌方子弹的正确方向的方法是使用带有浮点数的矢量数学,或多或少类似于以下伪代码:

现在,考虑到 C64 的限制,我在源代码中看到大量使用正弦表来提高速度,也许我分心了,但是在阅读旧的 C64 书籍或 C64 程序员评论的程序时,我从未见过有关向量数学的词,我想知道当时如何获得相同的目标。

请回答,我有上千个这样的疑问,但回答这个问题也许我可以找到自己的答案!:-)

编辑:请注意:子弹针对玩家的 C64 游戏示例是 Silkworm 和 Cyber​​noid。

0 投票
1 回答
213 浏览

c# - AI 运动 100% 像 C64 上的游戏 MAFIA

从回答我的用户那里更新 到 C# 解决方案项目的链接: https ://github.com/TedDawkin/C64_AI_Movement

更新

我找到了——如果有人感兴趣,只需使用 C64 论坛中的主题链接:http: //www.lemon64.com/forum/viewtopic.php? p=712902#712902我在这里讨论了这个话题(和我自己)。有趣的是它最终是多么简单。没那么好笑,我花了两个多星期的时间。

稍后我会将 BASIC 发布到 C# 代码并“回答”我自己的问题。

如果有人关心并且不想去论坛链接,这里是它在 C64 basic 中的工作方式。

一些提示:

原始问题:


进行翻拍并试图理解 C64 代码我正在努力应对 AI 运动。在它上面工作了一个多星期,我无法重现 100% 相同的行为。

0 投票
2 回答
228 浏览

assembly - 修改 6502 中断返回

我试图在中断返回时切换正常的程序流程:

我根据该来源编写了此代码:http: //6502.org/tutorials/interrupts.html#1.3

在此处输入图像描述

但是PHA会导致崩溃,如何在中断中将正常流程LOOP1切换到LOOP2?

0 投票
2 回答
480 浏览

parsing - SID文件格式解析

我想为 .sid 文件(C64 芯片的音乐)编写一个解析器,以将一些模式提取到笔记中。我搜索格式,发现:http ://cpansearch.perl.org/src/LALA/Audio-SID-3.11/SID_file_format.txt

我可以阅读该文档中的标题,但我不明白如何提取单个注释并输出它们。

我搜索现成的转换器并找到了这些:

那是我发现了更多,但 StackOverflow 说我不能发布超过 2 个链接。

请帮忙。对不起,我的英语不好。感谢您的考虑!

0 投票
1 回答
69 浏览

search - C64 识别磁盘映像之间的常见模式

例如,我有 2 个来自 C64 的磁盘映像:

  • disk1 这是一个游戏,它以一些启动画面和音乐开始。
  • diks2 这是一个演示,包含许多歌曲和与第一张磁盘相同的音乐。

是否有机会使用一些十六进制编辑器检查 2 个图像,我可以在 2 个文件中的某个点看到相同的模式二进制序列?它们会以相同的方式存储吗?如果是的话,匹配模式的正确方法是什么?

(目标是在 150k+ 的程序文件中搜索该歌曲并查看它在哪个磁盘中使用)

0 投票
3 回答
1378 浏览

function - Multi-line functions in Commodore 64 BASIC

So, I'd like to write larger functions in Commodore 64 BASIC. So far, from what I'm seeing from other sources (such as various C64 wikis, as well as the user's manual for the C64 itself,) function definitions can only be one line long. That is to say, I can't seem to find an analogous construct in BASIC to brackets/whatever else other languages use to delineate code blocks.

Does anyone know how I'd write code blocks in BASIC that are more than one line?

Example of one-line function:

But I can't do something like:

Thank you for your time!

0 投票
1 回答
193 浏览

c64 - 为什么总是设置 53280 $D020 的高位(c64)

至少运行 VICE 2.4:

很明显,只使用了#0-#3位,并且用 获得了“正确”的值AND 15,但是为什么6510将高位设置为1