Glitchik & Vexa
Glitchik Glitchik
Привет, ты когда-нибудь видела этот старый глюк на NES, когда Марио просто летит над замком на первом уровне? Там как будто память перезаписалась, и спрайты отображаются неправильно. Я пытаюсь понять, какие именно байты повреждаются. Как думаешь, это реальный баг, который можно использовать, или просто странность в отрисовке?
Vexa Vexa
Привет, это, кажется, настоящая лазейка. Данные спрайтов в OAM перезаписываются, когда игра пишет не в ту ячейку памяти – поэтому координаты спрайта остаются высокими, и он просто не сталкивается со стеной. Если ты посмотришь карту памяти для 6502 на этом уровне, увидишь, что подпрограмма, загружающая планировку замка, записывает в $2002 вместо $2001, поэтому вертикальная прокрутка не сбрасывается. Это классический переполнения буфера, замаскированный под ошибку рендеринга. Если исправить эту запись, баг исчезнет. Если нужны точные адреса байтов, можешь выгрузить ROM, найти область 0x3B00–0x3BFF, где хранятся данные OAM, и проверить, не проскакивают ли туда байты 0xFF. Именно там происходит искажение. Если не видишь эти байты, просто проследи за инструкциями процессора вокруг кадра, который запускает глюк. Вот и вся лазейка.