Текст книги "Ретро бит 4 (СИ)"
Автор книги: Seva Soth
Жанры:
Альтернативная история
,сообщить о нарушении
Текущая страница: 12 (всего у книги 15 страниц)
– Но я ничего не делаю, – невинно хлопала длинными ресницами Изабелла. Не виноватая она, они сами приходят. – Мальчики приносят регалос по своей воле, не хочу их обижать. Сабэс? Линда, Тобалито, пор фавор, угощайтесь, вкусные дульсес.
Кушать принесенные «дульсес», то есть сладости, традиционно приходилось мне или Линде, как не боящимся потолстеть, а даже стремящимся набрать немного веса. Никогда еще столько рафаэлок не кушал, точнее, конфет и шоколадок от «Херши», некоторые из которых по вкусу получились один в один как те самые лакомства с белым шоколадом и кокосовой стружкой.
Иногда еще Джон помогал. Тихий разраб в гости зачастил, но ко мне и Атари 2600, а не к прекрасной «Белль». Хм… эту песню я помню довольно-таки хорошо, англоязычную ее вариацию похуже, но додумаю, если что. Готовый мировой хит, который надо лишь как-то обосновать для «Бесконечности тьмы». Подождет, дойдет еще очередь.
В мою сторону, кроме регулярных попыток накормить, Изабелла никаких поползновений не совершала, соблюдая договор с сестрой. И даже футболку начала носить без оголенного плеча. А с Линдой даже почти подружилась, найдя общие женские темы. Косметика и парни, внезапно!
Не знаю, кто подсказал Белле аналогию, не исключаю, что сама додумалась. Но когда фигуристая латина сказала «представь, что твоё лицо – это картина», обычно равнодушная к макияжу азиатка поплыла и вскоре они начали обсуждать «как нарисовать себе красоту».
С мужчинами еще понятнее, тут логика безупречна. Линда давно у меня чуточку сводница. Найти же Изабелле постоянную пару – значит, окончательно обезопасить меня от теоретических притязаний. А потому моя красавица, пользуясь расположением Роберты, выполняла роль шпионки и поставляла охотнице на парней сведения.
Так вот, Джон искренне старался помочь в моем сражении против детища Атари. Эта консоль ужасна! Настоящая миерда! Если существует ад для программистов, то там пишут именно под Атари 2600. Хм. А не в нём ли я в итоге оказался? И вся моя жизнь в роли Криса – лишь подводка к персональному котлу.
И проблема даже не в 128 байтах оперативной памяти. Тетрис влезает в них с небольшим запасом, если массивы игрового поля и фигур делать чисто булевскими, из нулей и единичек, не пытаясь хранить для ячеек еще и цвет.
Вся проблема в видеопамяти. Если кратко – её нет. Ну, не то, чтобы совсем нет – три регистра, суммарным объемом в двадцать байт при ширине игрового поля в сорок символов. Хватает на одну строку половины экрана. Но все, что рисуется слева – тут же повторяется в правой части дисплея в зеркальном отражении.
То есть Макаронный монстр или Омниссия посылали мне намёки на грядущие кошмары, отзеркалив мой фингал на лице Монтгомери Синклера. Вот и не верь после такого в предсказания. То-то экран в Питфоле, в который я чуточку погонял, дабы немного понять консоль, подозрительно симметричный.
И как же этот кошмар обходят? Оказывается, нужно поймать ту самую наносекунду, когда луч находится четко посередине экрана и сменить в нее содержимое всех трех регистров видеопамяти.
Просчитать математику тетриса тут не сложнее, чем для любой другой консоли. А вот вывести игровое поле на дисплей – задача не то, что со звездочкой, а и целого звездного неба будет мало. Сэкономили, блин, пару баксов на чипах памяти! Да роскошная отделка консоли под дерево и хром стоят дороже, чем эта их экономия, приди к ним во сны великий Ктулху! Какая-то Тардис наоборот! Снаружи красиво, дорого-богато, а внутри подлинные тлен и отчаяние.
В нормальных железках ты кладешь кадры в видеопамять и аппаратная часть всё сама нарисует. Тут же натуральная порнография! Приходится разбираться в физике работы электронно-лучевой трубки!
Естественно, поток исполнения кода единственный и синхронный, то есть посылать команды на отрисовку нужно в промежутках между выполнением остальной программы? Семьдесят шесть тактов процессора на каждую строку развертки кинескопа! Верните мне рваную видеопамять Эппл 2! Там она хотя бы в принципе есть! Я всё понял и осознал!
– Наверняка эту миерду придумал какой-нибудь Стив! – раздраженно бросил я, когда при помощи Джона и документации осознал, как глубока кроличья нора. В шутку, естественно, нет у меня никакой стивофобии.
– Стив Майер, – флегматично подтвердил мою шуточную версию Джон, – один из трех разработчиков видеочипа. И еще Стив Джобс в Атари также работал с железом. И Стив Возняк. Но не уверен, занимались ли они домашними консолями или только аркадными автоматами.
Теперь понятно стало, почему несложные казуальные игры под старые консоли писались годы и месяцы. Я, помнится, вспоминал производственный ад, в который угодил разработчик ET, создавший забагованное чудовище. Я попал туда же. И нафиг я вообще под это подвязался? Мог бы оставаться в зоне комфорта, вместе с адекватным железом. VVVVVV писать бы начал. Но нет, купила баба порося, то есть приставку.
Ладно-ладно. Если есть ад, то нам необходим крутой парень с дробовиком и бензопилой, который вынесет всех демонов, раздавая им пинками чингасос. Не на того напали! Кажется, я уже придумал, как выйду из ситуации.
Глава 22
– Джон, я не рассказывал тебе, что такое безумие? Безумие – это повторение одного и того же действия раз разом в надежде на изменение. Разработка под Атари 2600 – вот что есть безумие, – обратился я к молчаливому программеру, пришедшему с распечаткой своего порта Тетриса под Атари 800 и начавшего карандашиком проставлять такты процессора в листинге, прикидывая, как уместить нехитрую логику в концепцию «нарисовать половину экрана за заданное число команд».
Веселья добавляло то, что действия стоимостью в один такт у процессора MOS6507, слегка урезанной версии 6502, как, собственно, и у изначального предка, нет. Минимум два. То есть нам надо нарисовать половину стакана за действия, оцененные четко в 38 попугаев, и добить остальные за оставшуюся длину удава, чтобы в итоге получилось заветное 76.
– Да, очень сложная платформа, я потому и вызвался помогать, так как это вызов, интересная задача, – подтвердил юноша, – мистер Уильямс был против, но я его убедил.
– И решать ее при помощи карандаша и бумаги – истинное безумие.
– Так делали разработчики, которых Кен нанял для переноса моей Зубодробилки. Да, он занял полгода, но получилось хорошо. Не представляю, как ты собираешься справиться за два месяца.
– Мы же программисты, подобную муторную миерду нам сам великий Ктулху велел автоматизировать. Написать утилиту, которая будет считать такты вместо нас.
Идея моя оказалась проста, как двадцать пять центов – запилить анализатор синтаксиса, который подсчитает такты вместо меня. Пройдется по коду модуля, проставит накладные затраты на каждое действие и подобьет итог. Линтер – так подобные скрипты называют в светлом айтишном будущем. Но, кажется, в нынешние лохматые времена хотя бы сам термин уже придумали. Скармливаем ему ассемблерный код и видим прогноз, сколько процессорных действий он займет. Пожалуй, я преуменьшил, когда говорил про дробовик. У нас выйдет если и не БФГ, то, по крайней мере, ракетная установка.
Обстоятельно изложил Джону концепцию.
– Но у тебя ведь очень сжатые сроки, – напомнил коллега, – разумно ли тратить время на инструмент, который не факт, что поможет?
– Лучше день потерять, затем за пять минут долететь, – цитату из советского мультфильма собеседник понять шансов не имел даже теоретически, так как на экранах знаменитое «Главное – хвост!» появится только через несколько лет. – Распиши мне количество процессорных тактов в каждой ассемблерной команде, я их наизусть не помню.
Да вообще не помню, кроме того, что взятая как из лексикона Трейси команда NOP, то есть «ничего не делать», стоит два такта, а однотактовых совсем нет, что очень усложняет жизнь и заставляет ненавидеть саму математическую концепцию четности и нечетности!
Ночь – она звала меня. И Джона вместе со мной. Справились ли мы с задуманным к утру? Решительное нет. Я, может быть, благословлен Омниссией и вообще инженер, но если бы подобные в чем-то революционные штуки писались за одну ночь, то их бы уже кто-нибудь создал. Нельзя просто так взять и написать парсер до рассвета.
Я почти уверен, что нечто подобное уже существует и активно используется разрабами, находящимися в рабстве у Атари и прикованных кандалами на корпоративной галере. Наверняка есть тот же инструмент и у беглых рабов, ныне основавших Активижн.
Джон реально умный парень, быстро понял мою идею и, притащив из дома свой собственный Эппл 2, начал помогать: сначала заполнять таблицу со стоимостью действий в виде структуры на Паскале, а затем еще и отдельные процедуры писать.
Именно Паскаль я выбрал в качестве инструмента для реализации идеи. Во-первых, идеальный компромисс между быстродействием и легкостью кодинга. Во-вторых – удобный доступ к файлам. Читаем листинг построчно, выделяем ключевые слова, оцениваем их стоимость. Материмся на ветвлениях, которые стоят разное число действий, если условие выполнилось или нет.
У нас ушли две недели практически безостановочной разработки с редкими перерывами на сон и еду. Есть такая шутка, что если один программист напишет программу за неделю, то два – за две! Не наш случай. Помощь Джона на самом деле бесценной оказалась, главным образом за счет досконального знания ассемблера под процессоры семейства 6502. Я, со своей стороны, вкладывался знанием приемов командной разработки и общим пониманием принципов устройства линтеров. Мои навыки из будущего и его из прошлого, которое для меня настоящее, отлично друг друга дополнили.
Вообще, групповая разработка на технологиях 1982 – та еще боль, сопоставимая с фрустрацией от столкновения с недоконсолью. Джон с ухмылкой назвал её «Сникернет». То есть кроссовочная сеть. Ты записываешь код на дискету и несешь ее к соседнему столу ножками, после чего другой программер наполовину вручную объединяет ваши листинги.
Банальный копипаст «выделить-скопировать-вставить» в эпоху ретро-компьютеров выглядит, как тот еще цирк с конями. Нельзя просто так взять, открыть файл, скопировать кусок текста и вставить в другой файл. Не умеют так редакторы, в том числе самый продвинутый из имеющихся, включенный в среду UCSD Pascal.
Тут Скопировать/Вставить даже внутри файла нельзя! И это при том, что у меня есть древняя привычка копипаcтитть ключевые слова, включая банальный PRINT. Каменный век предлагает лишь Вырезать/Вставить. В чем здесь логика – я не выкупил. Так что и горячие клавиши для работы с текстом я тоже создам и в обиход введу. Причем сразу угодные богу-машине Ctrl-C и Ctrl-V, а не Ctrl-Ins и Shift-Ins, привычные всяким староверам. Если успею себе честь присвоить раньше Стива Джобса. Всегда есть какой-то Стив, который вводит инновации быстрее тебя!
Но система контроля версий и совместного написания кода станет одним из первых нововведений в офисе Каналья Геймс, когда я развернусь в Эль-Серрито. На полноценный версионник по типу Гит возможностей железа не хватит. А вот что-то похожее на SVN почему бы и не изобразить. И мне ведь не обязательно всё делать в одно лицо – найму разрабов.
В случае с Паскалем мы пришли к самому простому решению: разделению зон ответственности по файлам. Джон писал модуль JH.PAS, я – СС.PAS и периодически передавали друг дружке дискету со стола на стол.
И я бы даже не сказал, что это было мучительно, хотя и тяжело физически света белого не видеть. Всё компенсировал чистый кайф от понимания того, что создаешь нечто особенное, а уж когда скрипт заработал и четко раскидал нам тайминги, а затем и подсветил проблемы, где мы не укладываемся – вообще песня. Мы с Джоном аж пятюню друг другу отбили, когда поняли, что готово. Крутой он кодер, гениальный, почище Синклера. Может быть, мне его схантить, раз Кен у меня мистера Лоу увёл?
Очень перспективный инструмент, между прочим, создали, учитывая, какую бездну времени, иногда целые минуты, занимает компиляция. На основе нашего линтера, который и так разбирает код, не так сложно сделать утилиту для раннего обнаружения ошибок и опечаток. Для чего в моём будущем статические анализаторы кода и используются.
Джона у меня Кен отобрал и еще около двух недель ушли уже у меня одного на доводку и тестирование созданного при помощи нового инструмента прототипа. Он выглядел откровенно неказистым, примитивным, монохромным, но работал безукоризненно – плавно и без мерцания. А геймплей – тот самый. Никогда бы не подумал, что найду повод для гордости в написании тетриса. А вон оно как. Кажется, я под конец уже начал видеть Матрицу. Смотрю в экран и вместо падающего L-блока вижу такты и тайминги. Я избранный и нет никакой ложки!
Прекрасным летним утром 20 августа я вооружился тросточкой и сел вместе с Линдой в Короллу, чтобы поехать к Уильямсам. Жизненные события прошедшего месяца вылетели у меня из головы. Мозг сохранил лишь два вида информации: код линтера на Паскале и код Тетриса на Ассемблере. В кармане у меня лежал отладочный картридж для Атари 2600, на который я при помощи притараненного моим братаном Джоном программатора прошил созданную игру.
– Ну, парень, покажи, ради чего ты отнял у меня больше чем на неделю нашего лучшего программиста, – с легким нажимом предложил Кен.
– Дорогой! – вступилась Роберта. – Ты же знаешь, какой Джон Харрис упрямый.
Добрый и злой полицейский, всё по классике. Меня сейчас будут разводить на уступки. Например, скажут, что если Джон сделал половину работы, то и половина роялти тоже ему причитается. А нифига. Не виноватый я, он сам пришел!
– Сэр, Джон очень уважает вас и я уверен, что если бы вы ему сказали, он бы вернулся к другим задачам. Давайте к демонстрации.
И мы вернулись к показу. Я подключил кусок миерды от Атари, по недосмотру великих Древних названный игровой консолью, к телевизору и дал в руки Кену джойстик.
– Паузу, увы, сделать не смог, для нее не хватает элементов управления, – начал рассказывать я. У Атари 2600 кнопка на джойстике всего одна и она пошла на поворот фигуры по часовой стрелке.
На половине консолей, что показывали парни, развлекавшиеся портированием, та же беда – ужасные, отвратительные геймпады. Нет, точно нужно заняться патентованием прототипа сонивского «Дуалшока».
– Да кому нужна эта пауза! – с внезапной эмоциональностью воскликнула Роберта. – Как вы с Джоном убрали мерцание? У меня от Атари 2600 голова всегда болит, так как картинка дрожит.
– Никакого секрета тут нет, мэм – идеальные тайминги. Все спрайты успевают четко прорисовываться в промежутках между игровой логикой. Нет нужды рисовать их через кадр.
Всё ведь они знают, наверняка ж уже батька расспросил Джона, чем они занимались. Я подсознательно ожидал разговора о лицензировании линтера, но молчок. Что, мой напарник так хорошо запомнил весь код? Ну так-то да, быть может, даже получше меня самого.
– Очень впечатляющая работа, парень, – признал Кен спустя десять минут тестирования, когда женщины решили, что им интереснее с графическим планшетом и рисованием. – Ты заслужил награду. Во-первых, отдохни, как следует, во-вторых, я закачу в твою честь вечеринку. У тебя ведь день рождения через несколько дней. Семнадцать исполняется раз в жизни.
От одного упоминания о праздновании нога ныть начала, хотя в последнюю неделю лодыжка меня уже почти не беспокоила – сказывался малоподвижный образ жизни с низкими физическими нагрузками. Но мужик я или нет? Не бегать же мне всю жизнь теперь от корпоративов? Но пить не буду!
– Во-вторых, новость, которая тебя порадует. Мы разместим на Тайване заказ на сто тысяч картриджей под Атари и пятьдесят тысяч – под другие платформы суммарно. Ты, приятель, заработаешь миллион. Ничего так награда за месяц работы? Каково это – чувствовать себя миллионером? Присмотрел уже машину? Я вот Феррари себе возьму.
Меня аж затошнило от неприятного предчувствия. Вспомнилась забагованная версия ET и захоронение картриджей в пустыне. Ну что, «сеньор разработчик», изменил историю видеоигр?
Почему я такой идиот? Зачем вообще взялся за портирование, не оценив перспективы? Сейчас у народа откроются глаза, все поймут, какая миерда приставка Атари 2600 и мои картриджи с тетрисом отправятся в ту же братскую могилу, рядом с Инопланетянином и прочим дерьмом. Никто из покупателей не станет разбираться, где «игра всех времен», а где забагованный кусок шлака. Или пронесет? У меня же суперхит! Что, если он спасет индустрию и никакого кризиса не состоится?
– Сэр, а вы не поспешили? – все же высказал сомнения. – Может быть, стоит начать с малых партий? Изучить спрос.
– Опоздали, приятель! Весь наш бизнес с играми на кассетах и дискетах – это мелкая возня по сравнению с оборотами картриджей. С приходом инвесторов мы наконец-то сможем получать настоящие прибыли, не такие, как у Атари, но все одно огромные. По правде, я бы не смог отказаться от консольного рынка, даже если бы очень захотел. Совет директоров сожрёт меня вместе с ботинками и галстуком, если хотя бы заикнусь о такой вероятности. Поставят на моё место напыщенного идиота в дорогом пиджаке, закончившего бизнес-школу Гарварда. Тебе такое нужно?
– А если бы я вам сказал, что грядет огромный кризис индустрии консольных игр?
– То я бы рассмеялся тебе в лицо, дружок. Ты гениальный программист, сравнимый с Джоном, но ты семнадцатилетний пацан. Что ты можешь понимать в кризисах и рынке? Инвесторы готовы вкладывать в картриджи сотни тысяч долларов, а у этих парней всё всегда просчитано. Если бы не ты со своей хитовой игрой, мы бы разместили на Тайване те же объемы заказов, но с Зубодробилкой и другими нашими консольными хитами. Вопрос был решен в тот самый момент, когда мы прекратили называться Онлайн Системс и стали Сьеррой Онлайн. Ты считаешь, почему я так мотивировал тебя для работы над портом, что даже Джону головомойку не устроил, когда он бросился помогать?
Ну да, ну да. Если бы батьке не нравилось, что его лучший программист пропадает у канальи Криса дома вместо того, чтобы арбайтен – примчался бы ко мне лично и утащил бы Харриса за ушко да на солнышко.
И что мне остается делать? Я знаю, что Сьерра точно кризис переживет и протянет до конца девяностых, когда уже окажется не в рынке, но успеет напоследок громко хлопнуть дверью, издав Халфу.
«Говорил я вам! Не прислушались! Так и получилось!» – поется в песне группы Громыка. А я, пожалуй, продолжу токсично нудеть при удобном случае по поводу ошибки. Денег Кену это не вернет, но зато добавит веса мне лично. Начнет батька понимать, что меня нужно слушать. Или обидится, что я не смог убедить, как постоянно случается с менеджерами, когда внезапно выясняется, что программист прав и нельзя физически нарисовать семь красных линий зеленым цветом в форме котёнка строго перпендикулярно друг дружке.
– Я бы предпочел сосредоточиться на разработке для персональных компьютеров, сэр. Поверьте моей интуиции – консольный рынок сейчас опасен.
– Компьютеры никто забывать не собирается. Пойдем перекурим, я тебе кое-что расскажу, – батька повел меня на террасу, где немедленно достал пачку Мальборо.
– Недавно на нас вышли ребята из IBM. Они собираются выпустить новый игровой компьютер с революционными возможностями.
Кен подался вперед, опершись локтями о перила террасы, и понизил голос до шепота, словно собираясь сообщить, что «сие тайна великая есть».
– Проект пока держится в строжайшем секрете. Внутри компании его называют кодовым словом «Арахис». Крис, полные спецификации я тебе не назову, но поверь, они готовы перевернуть весь домашний рынок видеоигр. И это всё, о чем я тебе могу пока что сказать. По правде, подробные спецификации и девкиты нового железа у нас будут только в начале следующего года.
Манипуляция, но лайтовая, попытка соблазнить передовым железом. Очередное «оставайся, мальчик, с нами». Вот только королём мне в Оукхерсте не стать никогда, тут батька самый главный альфач.
– Заманчиво, сэр, но мы все равно переезжаем в окрестности Беркли, всё уже решено. Буду периодически приезжать к вам с прототипами новых игр.
– В таком случае, закончили о делах. И ты до сих пор не сказал самого главного – какую машину собираешься купить, когда разбогатеешь. Видел Датсун у Рокки? Красавец, да?
Понял, не дурак. Был бы дурак – не понял бы. Кен решил закруглить разговор, поняв, что за арахис меня не купишь, и переключиться на мужицкие темы. Ну, я не против. Что сказать по поводу автомобилей – у меня есть.
– Я вижу в своём гараже Делореан DMC-12, – ответил на ранее заданный вопрос. – Этой машине суждено стать абсолютной легендой, на мой взгляд.














