making of "blash" - пролог

опять монитор :)

… сегодня я пересматривал очередную пачку релизов, свежескачанных с pouet.net, пытаясь побороться со скукой, как внезапно я вспомнил про папку SRC\WATCOM\!NEW. Буквально три недели назад в ней бурлила жизнь — писались килобайты кода, оптимизировались процедуры, писалась музыка (ну тут немножко приврал — писал ее я на основной машине :), а за день до дедлайна все спешно упаковывалось и фиксилось…

… Именно так и писалась blash — MS-DOS-дема, занявшая первое место в Retro democompo на Demosplash'2o15. И сегодня мне бы хотелось приоткрыть некоторые тайны, осветить некоторые интересные моменты, да и вообще — растряхнуть как всегда заснувший Хайп ;)


Предыстория

… однажды я, как и сегодня, пересматривал очередную пачку релизов, свежескачанных с pouet.net, пытаясь найти идеи для дальнейших продов. Перед Мультиматографом я решил попробовать написать дему под тсконфу, чисто ради фана (ну и попрактиковаться :), ибо двух треков под AY мне было недостаточно. Начались поиски эффектов…

Достаточно давно я увидел в dazzle\eternity industry, 4к-интре под DOS, несколько интересных идей и эффектов, в особенности — table-mapped: туннели, различные «глючные плазмообразные цветки :)» (для понятности я их буду называть просто — twirl), линзы. Да, к тому времени на спеке эти эффекты давно были забоянены, но на TSConf я не видел, чтобы кто-то их пробовал сделать.

Но, увы не хватило то ли времени, то ли навыков (ибо я кодил под Z80 в первый раз), но дему в срок закончить не удалось — написано было только два эффекта.
Я расстраиваться не стал, благо был объявлено еще и Fast&Wild компо, в котором можно было сделать прод буквально под любой утюг :) Старые наработки пришлось забросить, взять в руки старый добрый Turbo Pascal 7.0 (на Си тогда кодить еще не умел) и попробовать написать… кхм… интру :)

Так получилась #vologda8df (немного грязноватый ютуп, но все равно спасибо brightentayle за видео):


Чуть позже, в преддверии DiHalt, решил вернуться к старой идее. Правда, под конфу кодить я не стал, решил опять-таки, чисто для фана, реализовать данную задумку под DOS (где эти эффекты также забаянены до ужаса).
Я засел за Watcom C и начал писать. Часть кода взял со своих старых демок, написанных еще на FreeBasic (и под Windows! Мда, парадокс… :), часть написал с нуля. Через пять дней в релиз ушел void (видео, увы, нет).

Однако свою идею я не бросил, и на Chaos Constructions я начал готовить дему на конфу. Выход SYNCHRONIZATION еще сильнее замотивировал меня — я увидел, на что способна платформа, и хотел внести свой вклад. На этот раз я решил не зацикливаться на этих надоедивых twirl'ax и слегка разнообразил набор эффектов — добавил меташарики (работающие на основе BLT2-магии ;) и немного простенького 3D (разумеется, с прекалком). В итоге после недели дедлайн-кодинга (побочным продуктом которого стала 256-байт-интра fhofr) в свет вышла ldi:

Третье место — тоже неплохой результат, ящитаю :)
Вообще, честно скажу, мне очень понравилось кодить под TSConf — прежде всего, очень впечатляют аппаратные возможности и простота написания продов, поэтому, надеюсь, я продолжу писать под конфу.

Еще одной моей любимой демой является Zombie TV \ g0blinish. Неизгладимое впечатление, оставленное этой демой (музыка из которой фактически открыла мне творчество C-jeff , что в итоге и повлекло за собой мою взрывную активность в AY-музыке) и вдохновило меня на участие в Demosplash в этом году. Нужно было написать прод.

После ознакомления с правилами выбор платформы был очевиден — PC\MS-DOS. Откопав исходники void, я начал работу над новой демой. Нужно было продумать дизайн, написать код для эффектов, подобрать саундтрек, собрать все в единое целое…

Но об этом — в следующей части. COMING SOON! :)

11 комментариев

avatar
Ах, опять «making of...». Просто прекрасно!

А за упоминание Wacom'а вот сразу лови жырный плюс. Такой пласт воспоминаний нахлынул…
  • nyuk
  • +4
avatar
waTcom ;)
avatar
Блин переобщался с дизайнерами.
Watcom C, планшеты Wacom. А не наоборот.
avatar
меташарики (работающие на основе BLT2-магии ;)
А вот, кстати, интересно. Я сообразил недавно, что сделать такие шарики полноэкранным пиксельным эффектом у тебя бы не вышло, просто нет столько производительности у машины. Поэтому я понял, что трюк скорее всего в том, что шарики выводятся как что-то вроде спрайтов, суммированием с содержимым экрана, с правильным выбором палитры. Я угадал?

Или ты хочешь сказать, что ты ещё и блиттер как-то применил в дело? :)
avatar
Ну, разумеется, чистить экран в любом случае эффективнее всего блиттером, но про очистку мы сейчас не говорим.
avatar
Да, в ldi я использовал предрассчитанные спрайты с палитрой плюс блиттер, так как рисовать в один фрейм только процессором просто нереально, несмотря даже на 14 МГц. В версии конфы под VDAC появился режим BLT2 (сложение либо сложение с насыщением):
dest =+ src либо dest = ((dest + src) > maxcolor ? maxcolor : dest + src)
maxcolor = 15\255 в зависимости от режима
который я и заюзал (правда пришлось попинать tsl , чтобы он впилил BLT2 в эмулятор :)
Итого вывод четырех спрайтов 128x128 + очистка фреймбуфера занимают около 1/4 кадра. В общем, блиттер рулит :)
Из минусов — запись идет только словами по 16 бит по четным адресам, так что точность координат слегка падает по горизонтали. Примерно так же работает и вывод спрайтов в 3D-части.
avatar
Эх, а при написании SYNCHRO ещё не было BLT2, и xor всего экрана в шариках с черепом приходилось делать практически руками.
Единственный человеческий компилятор СИ был от watcom'а. Присоединяюсь к Нюку, на меня то же воспоминания нахлынули, и не планшетные =).
avatar
Пиши подробнее!
Можешь даже по кодингу написать статью про реализацию твирлов! Было бы очень интересно.
  • sq
  • +5
avatar
в процессе :)
avatar


тизер :)
avatar
wbc, а не хочешь вывалить гигаэпический прод под Orange pi pc, конкретно под Mali400, например? Ну просто мащина такой звэр, что я даже не представляю, що там ваще.
Тока не надо писать MVV перелогинься =)
  • tsl
  • +2
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.