Sharpnull, точно, я как-то не подумал, что в названии PRG-ROM слово ROM не просто так присутствует, причем еще и двигать пытался спрайт их таблицы. Просто фейспалм. Как-то я еще значит не привык к особенностям NES, 5 дней значит мало для формирования привычки

Спасибо, что заморочились с подробным ответом. Все заработало сразу, когда последовал вашим советам. Работает даже без const, компилятор не ругается.
Структура проекта там вообще спорная у меня, ибо я за основу брал чужой скелет, а в него уже лепил свои эксперименты. Отсюда #include "DEFINE.c" и прочие приколы.
Разработкой я занимаю я в VS Code. Я прописал универсальный батник, которому я хоткеем передаю текущий .с файл на компиляцию и автоматически запускается эмулятор после сборки. Очень удобно. И студия приятная, хороший редактор.
И почти в эту же тему есть еще небольшой вопрос.
Вот я описываю сегмент кода PRG-ROM:
PRG: start = $c000, size = $3ffa, file = %O ,fill = yes, define = yes;
Тут я храню PRG во второй половине доступной ROM. А если пытаюсь использовать всю память:
PRG: start = $8000, size = $7f00, file = %O ,fill = yes, define = yes;
То серый экран и программа висит, при этом больше ничего не менял, только адреса сегмента.
Я предполагаю, что это нужно еще прописывать в сегменте HEADER. У меня он такой:
.segment "HEADER"
.byte $4e,$45,$53,$1a
.byte 01
.byte 01
.byte 00
.byte 00
.res 8,0
Но документацию на параметры HEADER я почему-то не смог найти. Как мне использовать всю доступную ROM в проекте?
Пробовал разбивать на два сегмента PRG1 и PRG2, но тогда компилятор ругается на переопределение.