Закрывая гештальт … ZX Spectrum

Jan 16, 2025 00:44


Давним давно, в очень далёкой галактике …

Когда я ещё ходил в школу, у меня появился домашний комп - Синтез-М (клон Спектрума). Короче то да сё, с тех времён у меня осталось незавершённое дело.

Сделать релиз загрузки нескольких игр с кассеты. С двумя фичами - прорисовкой заставки в виде змейки и счётчик на экране во время загрузки.

В те далёкие года это было офигительно круто. Наша команда «крутых кулхакеров» остановилась на других эффектах для загрузки игр. До счётчика так и не дошли. А змейка была другой модификации, не как у всех. У нас в руках даже побывала кассета от Родионова и Панюшкина с их исходниками некоторых загрузчиков. И прога конвертор по созданию эффекта змейки. Жаль она канула в лету. И все исходники тоже.

Прошло больше 30 лет. И … мозг сказал «хочу удовлетворения».

Сначала всё было плохо. Я прямо местами подзабыл ассемблер для процессора Z80. Потом долго перебирал эмуляторы в поисках хорошего дебаггера. Если честно - дебаггеры везде говно. Но часика за три-четыре я провёл для себя курс молодого бойца.

Короче. Из всех вариантов счётчиков при загрузке мне всегда нравился вид от конторы Hewson. До простоты элегантное решение. Пол дня вгрызался в код и вырезал решение. Там же ведь тоже не дураки сидели. Зашифровали, запутали. Но ничего, всё решаемо.



И вот тут я дошёл до момента - дисассемблирования. Это мрак. В 2025 году хорошего дизассемблера для Z80 я так и не нашёл. Просто потому, что - «он нам и нафиг ваш интернет никому не нужен». Даже IDA Pro - тупил и тупил и тупил. Всякие нейронки тоже не помогли. Это вообще отдельная тема - нейронки и программирование. Когда нибудь будет большой пост про ИИ и программирование. Весь смех и слёзы в том, что современные ИИ не знают о структуре Спектрума практически ничего. И предлагаемый ими код - уже изначально просто не рабочий.

Продолжаем. Я же ведь ленивая жопа. Поэтому поиски привели меня в статье в ранее популярном журнале за 95 год на целую статью, посвящённую именно «этому счётчику». Автора хочется расцеловать и надавать лещей одновременно. Он хорошо описал алгоритм и даже сделал дисассемблирование проги. Но есть одно - НО. Он сделал дисассемблирование тупо с привязкой к адресам, и без внятного описания структуры переменных. Это означает что скомпилировав код с другой точкой старта, или добавя в прогу пару новых строк - получаем «всё летит в п….». Поэтому потратив ещё несколько часов. Методом реверсивной инженерии и «какой-то матери» код на ассемблере обзавёлся полноценными метками, детально восстановленной структурой переменных, исправленной местами логикой по привязке шаблона символов в памяти. Короче - захерачил как надо.

Часом позже попивая пивко, я наткнулся сначала на статью про «змейку». Потом на код загрузчика, а потом и на софтину для конвертацию экрана. Очень похожую что была у Родионова. Ну как бы алгоритм был всегда один, а реализаций возможно много.

Короче старый новый год, стал самым продуктивным прорывом. Осталось сделать пару релизов игр и всё. Кул хакинг на спекки можно считать закрытым.

Previous post Next post
Up