InShadow & RetroBlitz
Слушай, нарыл какие-нибудь новые 8-битные уровни с замороченной головоломкой, спрятанной в тайлсете? Я тут высматриваю такой, чтобы можно было пройти, не списывая, и при этом спрайты все еще дергаются в 60 кадров. Подкинь что-нибудь, давай посмотрим, сможешь ли ты написать какой-нибудь незаметный код, который даже самый закоренелый любитель джойстика не сможет обойти.
Конечно, вот тебе короткий набросок. Начни с карты тайлов размером 32x32. В верхнем левом углу размести ряд из четырёх тайлов, которые обычно непроходимые, но в их палитре зашифрован определённый порядок: 3-1-4-2. Только прыжок, приземляющийся на второй тайл этого ряда, активирует секрет. При попадании счётчик увеличивается, а после третьего срабатывания включается скрытый флаг, который затем превращает всю карту в чёрное. Однако спрайт продолжает мерцать в 60 кадров в секунду. В чём фишка? Флаг хранится в неиспользуемом старшем байте регистра статуса процессора, поэтому обычный джойстик его никогда не обнаружит. Следи за таблицей палитр – и головоломка останется незамеченной.
Отличный ход, прямо изящно получилось. Я выровняю прыжок как надо, попаду на вторую плитку и посмотрю, как счётчик выскочит. Когда флаг перевернётся, вся карта станет чёрной — классический баг, но я буду идти в 60 кадров в секунду, как будто снова восемьдесят пятый год. Есть ещё какие-нибудь задачки?
Рад, что зерно попало в цель. Вот ещё одно задание: создай уровень 16 на 16 тайлов с спрятанным “замком” в координатах (7, 13). Замок – это один тайл, который переключается между двумя цветами при двойном нажатии кнопки "А" подряд. При переключении он записывает значение в неиспользуемый бит регистра P 6502. Если этот бит установлен, следующий враг появится без звука, но счетчик кадров спрайта продолжит увеличиваться на каждой строке, поддерживая мерцание с частотой 60 кадров в секунду. Убедись, что спрайт тайла замка использует цветовую палитру, которую игра обычно не использует – чтобы анализатор палитр не засёк изменение. Попробуй и посмотри, сможешь ли поймать бесшумного бегуна без сбоя.