Как использовать предопределенную константу в качестве адреса памяти?
У меня есть игра для NES. Я определяю несколько констант, чтобы помочь мне в управлении спрайтами. у меня есть
spriteyposition = $0200
spritetile = $0201
spriteattribute = $0202
spritexposition = $0203
sprite1 = $00
sprite2 = $04
sprite3 = $08
sprite4 = $0c
sprite5 = $10
sprite6 = $14
sprite7 = $18
sprite8 = $1c
Мой вариант использования выглядит следующим образом:
Я хочу изменить позицию у спрайта 1
Я делаю:
ldx sprite1
lda spriteyposition, x
adc #$8
sta spriteyposition, x
В моем сценарии использования spriteyposition должен быть указателем на память, но у меня есть ощущение, что ассемблер рассматривает его как обычное число
Как я называю спрайт-позицию адресом памяти, а не числом?
1 ответ
В моем случае использования
spriteyposition
должен быть указатель памяти, но у меня есть ощущение, что ассемблер рассматривает его как обычное число
Ваше чувство неверно. Этот код собирается в соответствии с предполагаемым кодом операции BD (LDA ABS,x
) -- здесь нет IMM,x
режим адресации.
Что неверно
ldx sprite1
sprite1
определяется как $00
, так что это в конечном итоге загружает X со значением адреса $0000
, Что вы хотите ldx #sprite1
,