1
Разработка игр / [NES] Изучаем Ассемблер 6502
« : Вчера в 21:16:24 »Как видим, работа очень сильно зависит от эмулятораПример palette.nes, о котором писал выше, работает нормально и в ужасном VirtuaNES, и в среднеточном FCEUX и в Mesen. Судя по коду, вы не поняли, что важен тайминг, откл. и вкл. экрана нужно в HBlank (за пределами видимой области scanline), а т. к. успеть нельзя за один HBlank, нужно откл. в 1-м и дождаться следующего HBlank и там записать цвета и вкл. экран придётся уже на 3-м HBlank. Получается, что у вас должно быть 2 scanline сплошного цвета $3F00, пока отключен экран (можно попробовать его тоже изменить сразу на цвет от фона "клавиша").
UPD: Я попробовал для примера переключать внизу палитры то на красную, то на синюю и у меня получилось. Я растянул на 3 HBlank и использовал цвет из PPU $3F04 для полос при откл. экране, но в FCEUX и VirtuaNES не знают про The_background_palette_hack и 2 scanline не того цвета. Вообще, удивительно, что у вас почти правильно работает, но не понял:
Цитата
; пропускаю цвета, чтобы вернутьсЯ на цвет фона (иначе фон зальет этим цветом)Там же нужен один BIT PPUDATA для возврата к цвету фона, а вторая запись в $2006 должна быть #$40.
BIT PPUDATA
BIT PPUDATA
; возвращаем адрес на позицию экрана (тот знакомест, где у нас нулевой спрайт)
LDA #$23
STA PPUADDR
LDA #$3f
STA PPUADDR
Придётся ещё для PAL адаптировать. Не для всех это.