Спрайты NES (сборка 6502) не двигаются

Я пытаюсь написать игру на языке ассемблера 6502, но мой спрайт не хочет двигаться: мой спрайт стоит 200 долларов, поэтому я сделал следующее:

Spriteloop:
    LDX $200 ;loading content of $200 address in X register
    INX  ;increment the number
    JMP Spriteloop ;loop back to move again

Однако это не работает, мой спрайт не двигается.

Спасибо


person J.Wilson    schedule 21.10.2015    source источник


Ответы (2)


Вам нужно сохранить X обратно в регистр памяти. Я думаю, что это STOX или STX? Давненько я не пользовался ни одной сборкой 6502.

person TeasingDart    schedule 21.10.2015
comment
Это STX, но я только что попробовал, и все равно ничего? Однако, спасибо - person J.Wilson; 22.10.2015
comment
Убедитесь, что у вас правильная косвенность. После LDX $200 X содержит 0x200 или содержимое регистра спрайтов? - person TeasingDart; 22.10.2015
comment
Я нашел этот классный сайт: skilldrick.github.io/easy6502 Ваш код выглядит нормально, если вы вставите Инструкция STX $0200. - person TeasingDart; 22.10.2015
comment
Также нашел этот документ, описывающий программирование спрайтов: nesdev.com/NESprgmn.txt - person TeasingDart; 22.10.2015

Вы используете OAMDMA для копирования страницы 2 в VRAM в PPU? Если вы этого не сделаете, спрайты не будут двигаться. Системная оперативная память не подключена к PPU, поэтому ее необходимо скопировать.

Имейте в виду, что обновления VRAM должны выполняться во время VBlank, чтобы предотвратить графические сбои.

person NMITIMEN    schedule 20.10.2019
comment
Добро пожаловать в Stack Overflow. К вашему сведению, этому вопросу уже 4 года, и пользователь, который его задал, не входил в систему примерно через месяц после того, как опубликовал это. (Вы можете увидеть это, нажав на их имя пользователя: stackoverflow.com/users/5464282/j-wilson). Стоит иметь в виду, прежде чем отвечать на старые вопросы. Я думаю, что ваш вопрос риторический и предназначен для (маловероятных) будущих читателей, на самом деле не надеясь на ответ от ОП, так что все в порядке. Но разбрасывание полезных лакомых кусочков по множеству простых вопросов делает их маловероятными. - person Peter Cordes; 20.10.2019
comment
В любом случае, я думаю, что это похоже на дубликат другого вопроса, на который вы недавно отвечали (среди прочего, я следую тегу [assembly], поэтому я видел, как ваши ответы поднимают оба этих вопроса в списке недавних действий.) - person Peter Cordes; 20.10.2019