问题标签 [6502]
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.
assembly - 6502 汇编程序随机数问题
我在这里玩 6502 汇编器:http: //skilldrick.github.io/easy6502
我所做的只是将随机颜色像素放在屏幕上的随机位置:
我正在尝试使用尽可能少的指令。我的问题是,如果我不在子例程中添加额外LDA $fe
的genPos
像素,则像素将以非常奇怪的模式绘制,如果我确实有额外的 LDA,则代码可以完美运行。我不明白为什么 - 任何人都可以给我一个提示吗?
问候,雅各布
assembly - Commodore PET BASIC 从 $00C2 起组装什么?
我发现的 PET 的零页内存映射声称零页地址范围$00C2..$00D9
用于静态数据,例如http://www.classiccmp.org/dunfield/pet/petmem.txt说:
但是,查看ROM反汇编,可以找到地址$00C2
跳转的地方,例如http://www.zimmers.net/anonftp/pub/cbm/firmware/computers/pet/d/rom-1.html# C70A:
查看$00C2
启动 PET 后开始的反汇编,我可以看到看起来合理的代码:
这个区域是做什么用的?将这个程序组装到这个区域的代码在哪里?这段代码应该做什么?(它似乎正在扫描从$0400
for:
和characters 开始的区域?)
assembly - 如何创建汇编语言?
就像标题说的如何创建汇编语言?我是这个编程的新手。我尝试学习 Ruby、Python、Java、c 等,但由于我目前没有电脑,所以我仅限于我的手机。我用这个问题一遍又一遍地搜索网络,但我没有找到答案!我知道,由于我对所有这一切都非常陌生,从汇编语言开始,我会经历一段漫长的挫折之路,但我是一个老派的人,我个人相信从底层开始就像 6502 一样,但我对此感到很困惑,我不明白其中的真正含义是什么,所以我想如果我可以用 6502 创建自己的汇编语言,我可能会更好地理解它?!
无论如何,我的问题是:如何创建自己的汇编语言?我可以用 6502 创建它吗?
PS 我之所以选择 6502 汇编语言是因为我对 Apple II、Atari 和 NES 非常感兴趣。我绝对爱他们!如果可以的话,请不要对这个新手这么苛刻?!哈哈
assembly - 在 Commodore 64 上动态更新磁贴数据的更好方法
我计划在我的新 C64 项目中使用多色字符模式下的软件精灵。我的想法是使用叠加“子弹”精灵数据来平铺数据。
我想我可以在地址 'TILESET' 上拥有tileset 数据,在地址'SPRITE' 上拥有精灵数据。我可以将这两者结合起来准备一个具有动态计算背景的子弹字符并存储在地址“SUPERIMPOSED”中
我写了以下代码和循环计数来检查它是否可行。我认为不是。循环消耗了 219 个周期。近四个光栅线。而且我没有包括在此循环之前所需的其他必要计算。就像计算目标地址一样。
当我想在屏幕上显示 16 个项目符号时,需要 64 个栅格或 8 个字符行。于是我开始怀疑。这是正确的方法吗?或者有没有其他更优化的方式来做同样的工作?
我正在考虑在背景中有重复模式。这样我就可以使用相同的子弹图块而无需重新计算。
assembly - 为什么 ASM 6502 中的条件分支限制为 128 个字节
例程必须在发出的分支指令的 128 或 -127 字节内的硬件原因是什么?
assembly - NES(6502组装)精灵运动
我目前正在开发 NES(6502) 组装游戏,但我不明白如何进行精灵移动。以下是我认为它应该如何工作的方式:
但是,您似乎无法增加 A 寄存器累加器,因为在尝试使用 INA 指令进行汇编时出现错误。所以我有点迷失了。我应该使用 STA 代替 LDA 吗?但我想使用地址 $200 的内容,而不是在其中放置我选择的值。我不知道如何让我的精灵移动。
loops - NES(6502 组件)精灵不移动
我试图用 6502 汇编语言编写游戏,但我的精灵不想移动:我的精灵是 200 美元,所以我做了以下操作:
但是,它不起作用,我的精灵不动。
谢谢
assembly - 在 C64 上瞄准玩家的敌人子弹
我正在扫描互联网和旧的 C64 书籍以寻找这个问题,但没有找到答案,所以最后我不得不把它贴在这里。我喜欢 C64 编码的美好时光,虽然我目前没有在这个平台上编写游戏,但我想知道当时是如何克服一些硬件限制的。
在所有现代游戏编程书籍和教程中,找到向玩家发射敌方子弹的正确方向的方法是使用带有浮点数的矢量数学,或多或少类似于以下伪代码:
现在,考虑到 C64 的限制,我在源代码中看到大量使用正弦表来提高速度,也许我分心了,但是在阅读旧的 C64 书籍或 C64 程序员评论的程序时,我从未见过有关向量数学的词,我想知道当时如何获得相同的目标。
请回答,我有上千个这样的疑问,但回答这个问题也许我可以找到自己的答案!:-)
编辑:请注意:子弹针对玩家的 C64 游戏示例是 Silkworm 和 Cybernoid。
assembly - CA65 段内存映射问题
我在 CA65 中工作一个 6502 项目,我无法理解一些指令。
我想要做的是定义一个段,就好像它在内存的另一部分一样,以便该代码的所有寻址都好像它在编译期间已经在该内存段中,但它将被加载主程序并且需要在加载后移动到位......对于这些旧机器来说这是一个非常基本的模型,但我无法让段命令中的 DEFINE 指令正常工作。
因此,我在 cfg 文件中创建了一个名为 MYMEM 的 MEMORY 定义,作为程序实际加载位置之外的位置,如下所示:
然后在我创建一个名为 MYMEMSEG 的段
然后,我尝试访问它声称它创建的 _ _MYMEMSEG_LOAD__ 或 _ _MYMEMSEG_RUN__ 或 _ _MYMEMSEG_SIZE__ 值,但它们都是未定义的......生成的 MAP 文件不包含任何带有 MYMEM 或 MYMEMSEG 的东西......那我是什么不明白这里?
assembly - 修改 6502 中断返回
我试图在中断返回时切换正常的程序流程:
我根据该来源编写了此代码:http: //6502.org/tutorials/interrupts.html#1.3
但是PHA会导致崩溃,如何在中断中将正常流程LOOP1切换到LOOP2?