问题标签 [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 投票
2 回答
384 浏览

random - 在 C64 Basic 中生成随机方向

我已经运行了 C64 用户手册第 5 章中的“More Bouncing Balls”基本程序,并在该章的最后一页添加了内容。代码如下:

为此在末尾添加了行,ɔ:

这些行与问题无关,但为了完整起见,我将它们包括在内。

我想为球的方向添加随机性chr$(81)(当然,将 DX 和 DY 都设置为 1,会使它们都以垂直相反的方向“推动”球,ɔ:在两者之间,等于 45°。DXDY

但是当尝试使用随机数时,我会得到真正奇怪的行为。我假设这个数字必须在 0 和 1 之间,所以尝试(INT(10*RND(1))+1)/10了 ,并将第 40 行更改为设置DXDY这个随机数。相反,我得到的是一些非常奇怪的行为。球会以可预测的角度快速移动,在右侧消失并在左侧重新出现,向下移动几行,然后完全消失,然后在屏幕顶部出现水平方向一个接一个地绘制不动的球,然后坠毁. 当设置DXorDY为整数,即 2 时,我仍然会得到一些奇怪的行为,例如球在一端消失并在另一端重新出现,在这种情况下,程序将在几秒钟后结束。

是什么导致了这种不稳定的行为?以及如何设置第 40 行中的参数以允许球在撞到墙上时向不同方向移动(有点像 Pong 中的)?

DX注意 1:在第 80 行和第 100 行进行更改时DY,我得到了一些有趣的抖动运动,但正如预期的那样,就好像在屏幕上绘制的球是一个不均匀的球体。

注 2:我知道通常不应在标题中包含标签,但不确定如果我将它们排除在外,这个问题是否会变得难以搜索。如果需要,请随意编辑标题;我很高兴接受教育。

0 投票
0 回答
89 浏览

basic - 即使使用“启用运行停止”戳也无法启用列表

好吧,我下载了一个旧的非英语文本冒险,当然,“为了专业性”已经禁用列表。即使在输入启用“运行停止/恢复”和启用“列表”的戳后,它也会不断地询问输入(在游戏中)。我什至尝试在开始屏幕上输入列表,但它认为模拟的“运行/停止-恢复”就像任何其他按钮一样。“按任意键”(仅用我们的语言......)。

与可下载的 .prg 链接:

http://retrospec.sgn.net/users/tomcat/yu/C64/MiscGames/Html/BezMilosti.php

PS:由于在 VICE 中拖动屏幕时会自动加载 .prg 格式,我什至制作了一个新的 .d64 磁盘,因此引发了臭名昭著的“正在加载。准备就绪”。状态。从那个地方我确实进入了戳。

PS 2:我已经在“lemon”的“场景”类别下发布了一个关于这个问题的主题和主题,这是专门针对 Commodore 的顶级网站

*编辑(导入链接):

https://www.lemon64.com/forum/viewtopic.php?t=69043

0 投票
1 回答
399 浏览

assembly - commodore 64 smooth scroller on line 1 - is jumping around on the screen if interrupt set on line #0

I have this horizontal smooth scrolling text on line 1 on the screen. the smooth scrolling effect is made using the $d016 hardware scrolling effect by iterating on the 7 lowest bits of $d016). The scroller runs on line 1 of the screen. I have set up two raster interrupts.

The "noScroller" interrupt is the part of the screen that should not be scrolled - which is whole screen except line 1.

The "scroller" is the interrupt that happens on line 1. I have set this interrupt to #50 even though I think it would make sense to set it to #0 since the scroll should only happen on line 1, but if I do set it to #0 then the scrolling text jumps around.

The "noscroller" interrupt is set to happen on line #66 - if I set it to #58 which seems to be the place where line 1 happens then the scrolling text starts to jump around strangely.

My problem is that I don't know what is wrong with my 2 interrupts. I would like to have the $d016 smooth scrolling only happen on line 1 but I have to make a larger area of the screen scroll than just line 1 otherwise the text will jump around. Here is my working code (with a too large scrolling screen area):

0 投票
2 回答
309 浏览

assembly - 迭代字节并将它们作为 ascii 打印到屏幕上

所以我试图通过将 ascciASCIIcodes 存储在一个字节数组中来将 ASCII 打印到屏幕上,但它只会在屏幕上呈现很多垃圾。

0 投票
2 回答
149 浏览

assembly - 如何在 2 列中显示交替的文本行?

我有这部分代码,所有文本行都同时出现在屏幕上。现在我希望每一行从另一侧出现在屏幕上(即左起第一行,右起第二行等)。任何人都可以帮忙吗?

我在这里尝试了一些改变..

又在这里...

0 投票
1 回答
478 浏览

c64 - “?Out of data error in 60”在我的 C64 mini 上基本

我一直在将“Commodore 64 的六十个程序”(R. Erskine 等人)一书中的“决斗”编码到我的 C64 mini 中。我不断收到以下错误:“?60 中的数据错误”。我检查了代码中的拼写错误,但找不到任何错误。有没有其他人遇到过这个问题,你有解决办法吗?谢谢

我检查了代码中的拼写错误,但找不到任何错误。

第 5-60 行:

0 投票
1 回答
304 浏览

assembly - 修改 C64 PRG BASIC 标头?

我最近买了一个 c64 mini 并尝试使用 Turbo Macro Pro v1.2 编写一些程序集。

在编写 hello world 程序时,我发现了一个使用自动运行 BASIC 标头的教程。

我还尝试包含 PRINT CHR$(147) 以清除屏幕,但出现内存不足错误。

原始的 BASIC 标头是:

我将其修改为:

当我从 TMP 组装并运行然后键入 LIST 时,我得到了,

但是当运行时,我在第 10 行得到 OUT OF MEMORY ERROR。

难道我做错了什么?还是这条指令真的内存不足?

TMP 仍然在后台加载到内存中。我目前正在 VICE 中运行它。

0 投票
1 回答
338 浏览

assembly - ca65:包含防护生成“错误:预期标识符”

试图学习如何使用 ca65 汇编器,我一直在努力使包含警卫工作。谷歌搜索和阅读ca65 用户指南没有帮助。这是产生错误的最小示例。

如果我只在其中包含65.inc 一次test.s则可以毫无问题地组装,如下所示:

我错过了什么?

0 投票
2 回答
1054 浏览

assembly - C64 程序集渲染精灵

我使用ca65 汇编器ld65 链接器在 Commodore 64 的 6502 汇编器中编写了一个短程序。该程序应该在显示器中心附近的某处渲染一个实心方形精灵,但我没有看到任何正在渲染的东西。

这是我的组装:

这是我的链接器脚本,改编自ca65 推荐的链接器脚本,用于 c64 上的手写汇编程序。我所做的唯一更改是添加“GFXDATA”段,以便我可以将我的精灵存储在 address $2000

这是我用来编译和链接的命令:

这是编译后的mapfile的内容:

以及最终二进制文件的十六进制转储:

“GFXDATA”段是我的精灵。精灵是 64 字节的$FF,所以它应该看起来像一个实心正方形。该精灵数据位于 address $2000

“CODE”段从通常的 BASIC 开始位置开始,ca65 正在为我插入一个 BASIC 加载程序,所以我可以run在加载程序后输入。

我没有切换 VIC 的银行,所以屏幕仍然在它的默认地址范围 ( $0400-$07FF),这个范围的最后 8 个字节是我的精灵指针。我只使用精灵指针 0 ( $07f8) 因为我只有一个精灵。

当我运行程序时,一切都被锁定了——这是意料之中的,因为程序以无限循环结束。但我在屏幕上的任何地方都看不到精灵:

在 VICE 中运行的程序

我错过了什么?

0 投票
1 回答
81 浏览

unicode - 用于重新创建 C64 随机迷宫程序的 Unicode 字符

我想使用 Unicode 字符重新创建一个简单的 C64 随机迷宫。

https://www.youtube.com/watch?v=m9joBLOZVEo

我找不到好的线条字符,总是产生一致的、倾斜的线条。/ 和 \ 对我不起作用,更接近 "\u2571" 和 "\u2572"。