【问题标题】:CA65 NES issue with INY STYINY STY 的 CA65 NES 问题
【发布时间】:2022-11-03 19:10:16
【问题描述】:

我是 CA65 的新手,正在尝试将 NEASM 项目转移到它。我翻译了所有东西,它就建立起来了。当我跑步时,我什么也得不到。只是黑屏。潜水更深我有一个无限循环。增加 Y (INY) 似乎有问题,然后我设置的任何东西都不需要。

您可以看到,在 8505 处的 INY 之后,Y 变为 1。将我在 $84A8 处的变量设置为 Y 应该将其更改为 $01,但事实并非如此。因此,我进入了一个无限循环。我在这里做错了吗?自从我编写汇编程序以来已经有一段时间了,但这似乎很容易。

如果我做错了什么或者您需要更多信息,请告诉我。

【问题讨论】:

  • “我有 $84A8 的变量”.您使用的是哪个映射器? IIRC 所有常用的映射器都有 ROM(可能还有映射器控制寄存器),价格为 8xxx 美元。
  • 谢谢您的答复。我现在应该使用 Mapper 0,这就是我在 NEASSM 中使用的。这是一个很好的观点。我想我不明白的是我们如何控制我们的变量在内存中的哪个位置被分配给 CA65。我知道我在“ZEROPAGE”段中有一些指针变量,因为那是它们需要的地方。但是我的其余变量都在“CODE”段中,这是我认为它们需要的位置。我认为链接器在此之外处理了内存放置。我想我需要对 CA65 做更多的研究。
  • CODE 段将在 ROM 中。对于变量,您可能应该使用 DATA 或 BSS 段。
  • 如果您使用的是 Mapper 0,那么您的 RAM 就是 $0000-$07FF 范围,这就是您所得到的。其他一切都是 ROM 或硬件寄存器。

标签: assembly 6502 ca65 nes


【解决方案1】:

您需要确保您的变量在可写内存中。

NES 通常有 2KB 的 RAM,所以你最好使用低于 0800 美元的地址。

因为您正在写入 $84a8,您实际上并没有将寄存器保存到任何内存,因为该地址已映射到 ROM。所以那个位置实际上不会改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-27
    • 2011-03-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多