Выбрать главу

Просчитать математику тетриса тут не сложнее, чем для любой другой консоли. А вот вывести игровое поле на дисплей — задача не то, что со звездочкой, а и целого звездного неба будет мало. Сэкономили, блин, пару баксов на чипах памяти! Да роскошная отделка консоли под дерево и хром стоят дороже, чем эта их экономия, приди к ним во сны великий Ктулху! Какая-то Тардис наоборот! Снаружи красиво, дорого-богато, а внутри подлинные тлен и отчаяние.

В нормальных железках ты кладешь кадры в видеопамять и аппаратная часть всё сама нарисует. Тут же натуральная порнография! Приходится разбираться в физике работы электронно-лучевой трубки!

Естественно, поток исполнения кода единственный и синхронный, то есть посылать команды на отрисовку нужно в промежутках между выполнением остальной программы? Семьдесят шесть тактов процессора на каждую строку развертки кинескопа! Верните мне рваную видеопамять Эппл 2! Там она хотя бы в принципе есть! Я всё понял и осознал!

— Наверняка эту миерду придумал какой-нибудь Стив! — раздраженно бросил я, когда при помощи Джона и документации осознал, как глубока кроличья нора. В шутку, естественно, нет у меня никакой стивофобии.

— Стив Майер, — флегматично подтвердил мою шуточную версию Джон, — один из трех разработчиков видеочипа. И еще Стив Джобс в Атари также работал с железом. И Стив Возняк. Но не уверен, занимались ли они домашними консолями или только аркадными автоматами.

Теперь понятно стало, почему несложные казуальные игры под старые консоли писались годы и месяцы. Я, помнится, вспоминал производственный ад, в который угодил разработчик ET, создавший забагованное чудовище. Я попал туда же. И нафиг я вообще под это подвязался? Мог бы оставаться в зоне комфорта, вместе с адекватным железом. VVVVVV писать бы начал. Но нет, купила баба порося, то есть приставку.

Ладно-ладно. Если есть ад, то нам необходим крутой парень с дробовиком и бензопилой, который вынесет всех демонов, раздавая им пинками чингасос. Не на того напали! Кажется, я уже придумал, как выйду из ситуации.

Глава 22

— Джон, я не рассказывал тебе, что такое безумие? Безумие — это повторение одного и того же действия раз разом в надежде на изменение. Разработка под Атари 2600 — вот что есть безумие, — обратился я к молчаливому программеру, пришедшему с распечаткой своего порта Тетриса под Атари 800 и начавшего карандашиком проставлять такты процессора в листинге, прикидывая, как уместить нехитрую логику в концепцию «нарисовать половину экрана за заданное число команд».

Веселья добавляло то, что действия стоимостью в один такт у процессора MOS6507, слегка урезанной версии 6502, как, собственно, и у изначального предка, нет. Минимум два. То есть нам надо нарисовать половину стакана за действия, оцененные четко в 38 попугаев, и добить остальные за оставшуюся длину удава, чтобы в итоге получилось заветное 76.

— Да, очень сложная платформа, я потому и вызвался помогать, так как это вызов, интересная задача, — подтвердил юноша, — мистер Уильямс был против, но я его убедил.

— И решать ее при помощи карандаша и бумаги — истинное безумие.

— Так делали разработчики, которых Кен нанял для переноса моей Зубодробилки. Да, он занял полгода, но получилось хорошо. Не представляю, как ты собираешься справиться за два месяца.

— Мы же программисты, подобную муторную миерду нам сам великий Ктулху велел автоматизировать. Написать утилиту, которая будет считать такты вместо нас.

Идея моя оказалась проста, как двадцать пять центов — запилить анализатор синтаксиса, который подсчитает такты вместо меня. Пройдется по коду модуля, проставит накладные затраты на каждое действие и подобьет итог. Линтер — так подобные скрипты называют в светлом айтишном будущем. Но, кажется, в нынешние лохматые времена хотя бы сам термин уже придумали. Скармливаем ему ассемблерный код и видим прогноз, сколько процессорных действий он займет. Пожалуй, я преуменьшил, когда говорил про дробовик. У нас выйдет если и не БФГ, то, по крайней мере, ракетная установка.

Обстоятельно изложил Джону концепцию.

— Но у тебя ведь очень сжатые сроки, — напомнил коллега, — разумно ли тратить время на инструмент, который не факт, что поможет?

— Лучше день потерять, затем за пять минут долететь, — цитату из советского мультфильма собеседник понять шансов не имел даже теоретически, так как на экранах знаменитое «Главное — хвост!» появится только через несколько лет. — Распиши мне количество процессорных тактов в каждой ассемблерной команде, я их наизусть не помню.

Да вообще не помню, кроме того, что взятая как из лексикона Трейси команда NOP, то есть «ничего не делать», стоит два такта, а однотактовых совсем нет, что очень усложняет жизнь и заставляет ненавидеть саму математическую концепцию четности и нечетности!