所以我一直在尝试在 6502 中绘制位图(对于 Commodore 64)。当我将图像加载到地址2000时,它工作正常,但是一旦尝试像2400这样的不同地址,它就不再工作了。
此外,我使用 CBM prg Studio 作为我的 IDE,并使用 Vice 作为我的 C64 模拟器......不知道这是否重要。
这是我的代码
*=$0801
BYTE $0E, $08, $0A, $00, $9E, $20, $28
BYTE $32, $33, $30, $34, $29, $00, $00, $00
*=$0900
; **************************************************************
; VARIABLES
; **************************************************************
TITLE_CHARMEM = $4340
TITLE_COLRMEM = $4728
TITLE_BACKMEM = $4B10
; **************************************************************
; MACROS
; **************************************************************
; **************************
; KEYWAIT
defm KEYWAIT ; Paramters: [Key]
@WAITLOOP
lda #$CB
cmp /1
bne @WAITLOOP
endm
; **************************
; PRINT
defm PRINT ; Paramters: [String]
lda #</1
ldy #>/1
jsr $AB1E
endm
; **************************************************************
; GAME CODE
; **************************************************************
INIT
lda #%00111011 ; Enable bitmap mode
sta $D011
lda #%11011000 ; Enable multicolor mode
sta $D016
lda TITLE_BACKMEM ; Load background data from
sta $D020 ; Store it in the background addresses
sta $D021
ldx #$00
TITLE
; Load the image and store it in memory
; -- Image data
lda TITLE_CHARMEM,x
sta $0400,x
lda TITLE_CHARMEM + $0100,x
sta $0500,x
lda TITLE_CHARMEM + $0200,x
sta $0600,x
lda TITLE_CHARMEM + $0300,x
sta $0700,x
; -- Color data
lda TITLE_COLRMEM,x
sta $D800,x
lda TITLE_COLRMEM + $0100,x
sta $D900,x
lda TITLE_COLRMEM + $0200,x
sta $DA00,x
lda TITLE_COLRMEM + $0300,x
sta $DB00,x
inx
bne TITLE
lda #$19
sta $D018
FOREVER
jmp FOREVER
*=$23FE ; 2400 - 2 bytes for the header
INCBIN "bitmaps/title.prg"