You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Commodore 64 Sprite无法显示问题排查求助(附汇编代码)

Commodore 64汇编Sprite不显示问题排查与修复

以下是你的代码中导致Sprite无法正常显示的关键问题及修复方案:

核心错误点

  • Sprite指针未完整配置:Sprite 0( paddle)的指针存储在$07F8,Sprite 1(ball)的指针存储在$07F9。你仅给$07F8赋值#$20,但未设置$07F9的#$21,导致系统无法定位球的Sprite数据。
  • Sprite颜色寄存器遗漏:仅设置了Sprite 0的颜色寄存器$D028,Sprite 1的颜色寄存器$D029未赋值,球会使用默认颜色(可能与背景色一致,导致不可见)。
  • Sprite数据末尾冗余字节:每个Sprite的图形数据固定为64字节,你在两组Sprite数据末尾添加的$01会破坏图形结构,必须删除。
  • 重复赋值冗余:连续两次给$D027(Sprite 0颜色寄存器)赋值,第二次的#$01覆盖了第一次的#$21,虽不影响显示,但属于无效代码。
  • 主循环X寄存器逻辑错误:颜色循环中的resetx分支直接强制将X置0,导致Sprite 0的颜色永远无法变化,需调整为仅在X达到$0F时重置。

修正后的完整代码

* = $1000

jsr init
jsr mainloop

init:
jsr $E544 ; KERNAL清屏例程

; 设置Sprite指针:Sprite0在$2000,Sprite1在$2100
lda #$20  
sta $07F8
lda #$21
sta $07F9

; 设置Sprite颜色:Sprite0为白色,Sprite1为白色
lda #$01 
sta $D027
lda #$01
sta $D029

lda #$30 ; paddle的X坐标
sta $D000
lda #$20 ; paddle的Y坐标
sta $D001

lda #$A0 ; 球的X坐标
sta $D002
lda #$64 ; 球的Y坐标
sta $D003

lda #%00000011 ; 启用Sprite0和Sprite1
sta $D015

rts

mainloop:
wait:
iny
cpy #$ff
beq nowait
jmp wait
nowait:

; 循环改变Sprite0颜色
cpx #$0f
beq resetx
inx
stx $D028
jmp color_done
resetx:
ldx #$00
stx $D028
color_done:

; 读取右键(右箭头)
lda $DC01
and #%00001000
beq If_right

; 读取左键(左箭头)
lda $DC01
and #%00000100
beq If_left

jmp mainloop ; 无按键时直接回到主循环

If_left:
lda $D000
sec
sbc #$01
sta $D000
jmp mainloop

If_right:
lda $D000
clc
adc #$01
sta $D000
jmp mainloop

jmp mainloop

* = $2000
!byte $00,$00,$00,$00,$38,$00,$00,$38
!byte $00,$00,$38,$00,$00,$38,$00,$00
!byte $38,$00,$00,$38,$00,$00,$38,$00
!byte $00,$38,$00,$00,$38,$00,$00,$38
!byte $00,$00,$38,$00,$00,$38,$00,$00
!byte $38,$00,$00,$38,$00,$00,$38,$00
!byte $00,$38,$00,$00,$38,$00,$00,$38
!byte $00,$00,$38,$00,$00,$00,$00,$00
* = $2100
!byte $00,$00,$00,$00,$00,$00,$00,$00
!byte $00,$00,$00,$00,$00,$00,$00,$00
!byte $00,$00,$00,$00,$00,$00,$fe,$00
!byte $00,$fe,$00,$00,$fe,$00,$00,$fe
!byte $00,$00,$fe,$00,$00,$fe,$00,$00
!byte $fe,$00,$00,$00,$00,$00,$00,$00
!byte $00,$00,$00,$00,$00,$00,$00,$00
!byte $00,$00,$00,$00,$00,$00,$00,$00

内容的提问来源于stack exchange,提问作者Karolina Sadowska

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 12:00:05