assembly 当ld65提示内存和配置错误时,我该怎么办?它只是关闭

llycmphe  于 2023-05-07  发布在  其他
关注(0)|答案(1)|浏览(167)

我正在使用cc65开发我的第一个内斯游戏,以及其他工具。我创建了一个原始代码,以便在Assembly中对其进行快速测试。设法使它的对象,但使用ld65作为链接器,一条消息说“内存和配置错误”,它只是关闭。这是我正在使用的代码:

.segment "HEADER"
.byte $4e, $45, $53, $1a, $02, $01, $00, $00
.segment "CODE"
.proc irq_handler
  RTI
.endproc
.proc nmi_handler
RTI
.endproc
.proc reset_handler
  SEI
  CLD
  LDX #$00
  STX $2000
  STX $2001
vblankwait:
  BIT $2002
  BPL vblankwait
  JMP main
.endproc
.proc main
  LDX $2002
  LDX #$3f
  STX $2006
  LDX #$00
  STX $2006
  LDA #$29
  STA $2007
  LDA #%00011110
  STA $2001
forever:
  JMP forever
  .endproc
  .segment "VECTORS"
  .addr nmi_handler, reset_handler, irq_handler
  .segment "CHARS"
  .res 8192
  .segment "STARTUP"

有谁知道是什么问题吗?

9bfwbjaz

9bfwbjaz1#

问题不在于你的汇编代码,而在于你给链接器的东西。
链接器的工作是获取目标文件,并根据内存配置对它们的数据进行布局。
您可以使用-t选择预先存在的平台配置,例如-t nes
或者,您可以进行自定义配置并为其提供-C
对于内斯项目,我认为大多数人使用自定义配置,因为cc65提供的配置主要适合编写带文本输出的C程序。面向游戏的程序可能需要特定的内存自定义,特别是如果您想使用扩展墨盒内存大小和功能的墨盒Map器类型之一。
您的ld65命令行应该类似于:
ld65 -o game.nes -C nrom.cfg myassembly.o
下面是一个示例程序,包括链接器配置:NES ca65 example
如果你想参考,官方文档在这里:ld65 documentation

相关问题