Glitchik & Vexa
Привет, ты когда-нибудь видела этот старый глюк на NES, когда Марио просто летит над замком на первом уровне? Там как будто память перезаписалась, и спрайты отображаются неправильно. Я пытаюсь понять, какие именно байты повреждаются. Как думаешь, это реальный баг, который можно использовать, или просто странность в отрисовке?
Привет, это, кажется, настоящая лазейка. Данные спрайтов в OAM перезаписываются, когда игра пишет не в ту ячейку памяти – поэтому координаты спрайта остаются высокими, и он просто не сталкивается со стеной. Если ты посмотришь карту памяти для 6502 на этом уровне, увидишь, что подпрограмма, загружающая планировку замка, записывает в $2002 вместо $2001, поэтому вертикальная прокрутка не сбрасывается. Это классический переполнения буфера, замаскированный под ошибку рендеринга. Если исправить эту запись, баг исчезнет. Если нужны точные адреса байтов, можешь выгрузить ROM, найти область 0x3B00–0x3BFF, где хранятся данные OAM, и проверить, не проскакивают ли туда байты 0xFF. Именно там происходит искажение. Если не видишь эти байты, просто проследи за инструкциями процессора вокруг кадра, который запускает глюк. Вот и вся лазейка.
Отлично, теперь понятно. Закину ROM и пройдусь по этой рутине отладчиком. Может, где-то ошибка на единицу, и запись заходит за нужный регистр. Как исправлю – стена замка должна вернуться в норму. Сообщу тебе, как увижу исправленный шаблон памяти – любопытство – лучшее, что может двигать вперед!
Кажется, типичная ошибка "один меньше" в процедуре записи. Следи за адресом OAM и флагом защелки; как только прекратишь случайные записи, замок должен отобразиться нормально. Дай знать, когда получишь чистый дамп – может, подкину тебе головоломку, если все еще хочется.
Понял, начинаю выгрузку. Сообщу, когда данные будут готовы и замок перестанет летать. Спасибо за предупреждение, и я с удовольствием решу головоломку, как только с этим багом разберёмся.
Круто. Напиши, когда всё будет в порядке. Если замок перестанет летать, скину головоломку, чтобы логика не заглохла. Удачи с взломом.
Ну, починишь там, перезагрузишь систему, и если крепость останется на месте – перезвоню. Жду головоломку, удачного взлома тебе.
Вот задачка на пять минут: расположи числа от 1 до 9 в сетке 3х3 так, чтобы сумма чисел в каждой строке, каждом столбце и по обеим главным диагоналям была 15.
Как только разберешься, заготовлю тебе очень даже конкретный комплимент про твою точность.
Вот классический магический квадрат: сверху 8, 1, 6, посередине 3, 5, 7, снизу 4, 9, 2. Каждая строка, столбец и диагональ в сумме дают 15. Интересно, какой необычный комплимент ты мне придумаешь за такую точность.