Я думаю что там всего два оружия в игре - 1е базука, 2е гранаты и всё
Оказалось, что пистолет на 3-м уровне и спрайты доступны только там (не считая в качестве мусора на 1-м уровне), поэтому на остальных уровнях кривые спрайты. Исправить не просто из-за нехватки места в CHR RAM, разве что вместо шрифта.
Вместо CMP #$20 лучше сделать AND #$20, заменив BNE на BEQ, на случай если в этом же кадре была нажата еще какая-то кнопка вместе с Select, тогда твой CMP не пройдет проверку.
Не совсем, в этой игре, если идти и переключать оружие, то спрайт персонажа будет неверный.
sergei1204, вот мой исправленный вариант, с пропуском неверного оружия (остались ракетница, граната, пистолет). Я не делал CMP #$20 для нажатий, потому что всё равно сменялось оружие во время ходьбы, у меня другое место вставки кода. В версии от
krocki не всегда меняется оружие, там проверка не однократного нажатия ($04), а нажатия текущего кадра ($06).
Т.е. почему AND а не CMP, почему BEQ а не BNE, почему (как ты написал) LDA с адресом в конец перед RTS.
1-е и 2-е: AND для проверки одного бита, а CMP для сравнения всего байта, BEQ и BNE меняются, потому что установка регистра Z обратная. 3-е: Потому что вместо LDA $051C вставляли JSR $FB54, оригинальный код нужно оставить, а значит после нашего кода. Чтобы это понять, видео по этой игре не нужно, только здравый смысл и знание ассемблера.
Только про Krocki не понял почему конец 3 часа ночи если он написал по времени в 21:39 и того же дня, не стыковочка какая то...
Часовые пояса.