Традиционно на ресурсе публикуют списки Top(считай - популярности). В этом году я заколебался ждать и разобрал список по аналогии. Только категорий не будет, останутся мои работы.
Работа делалась по приглашению superogue на демопати. Поскольку подобный эффект уже применялся, то он попал и здесь: на экране строятся точки, координаты которых вычисляются как X=X-Y/2, Y=Y+X/2. Немного возни вызвал beeper, в итоге подобрал способ пищания.
Интро писалось в тот момент, когда я изучал TIC-80. Способ экономии размера файлов был неизвестен, поэтому я решил сделать минимальное интро - это файл LUA, который можно запускать из командной строки. Экономия на байтах привела к самым решениям: я избавился от двух циклов по координатам и свел в один цикл. Каким-то усилием удалось подобрать цвета кругов и уложиться в 128 байт.
Идея выросла из демки на TIC-80. Алгоритм оказался простым, и я стал втыкать его повсюду(: Первым был интро 64б для msdos .
Неожиданное перво место в wild на Di:Halt. При разработке я позаимствовал набор цветов из chunkypaint(так веселее) и позже добавил функцию undo. Часто слышал, что лучше не пользоваться программой - это мудаки типа art-top не поняли суть и не осилили, как работать.
Идею заимствовал у Атари, часа два попыхтел над отладчиком, пытаясь понять, как эффект реализован. Оказалось очень просто.
Работа показывалась с описанием "Как я выбираю платформу". Естественно, это просто шутка. Идея кода в случайном перемещении точки и в зеркальном отображении. Хвост следа тут же стирается.
Этот эффект я видел давно, если не ошибаюсь, он мелькнул в какой-то программе на диске "Спектрофона". Дизассемблированный листинг у меня сохранился, я потратил много времени на поиски описания алгоритма. Однажды увидел гифку с подписью Daemons from cyclic space. Этот алгоритм описан Дьюдни, в книге есть немало интересного. Готовый код получился 70+ байт, с оптимизацией помог Jin X, он подсказал немало. Например inc al(2 байта) заменился на inc ax(1 байт). Еще одна экономия - это отображение каждого второго поколения клеточного автомата. До кучи Женя добавил звук. Я предложил отправить интро на LoveByte 2021 и указать авторов вдвоем, он согласился.
Ремейк старой работы моей интро Mistake, только улучшенный.
Еще один ремейк интро для msdos. Суть алгоритма: цвет точки определяется как сумма цветов четырех соседей, деленная на 15. Понятно, что это клеточный автомат.
Программу я написал давно, в 90х, на Пентагоне. Выложил ремейк на TIC-80, народ стал предлагать сократить до 256 байт. Но до конца я не смог довести, помог HellMood.
Похожий эффект использовался в интро RuGuevara, и он же в TIC-80, где приводится ссылка на описание алгоритма. почему-то орги исключили интро из показа LoveByte.
Как раз сроки проведения LoveByte совпали с периодом, когда я копался с вновь найденным компьютером Orao. Пострадал я с ним порядочно: не удалось создать образ кассеты или загрузить его. Поэтому я нашел способ записи кода в сохраненный дамп памяти эмулятора. При чтении документации увидел описания адресов, в том числе и адрес процедуры построения точки. Полез в монитор и дизассемблировал процедуру. Выяснилось, что число в ячейке $020A определяет способ построения точки. Сейчас уже вижу, что интро можно сократить.
и снова LoveByte. bfox попросил помощи - подсказать идею для 64 байта. Я просто вывалил массу наработок, на одном он остановился. Код был сокращен(вместо генерации синуса - вычисление), а способ рисования реализован гениально.
Что-то вроде попытки изобрести клеточный автомат. Вышло так себе.
.Алгоритм был найден среди набросков языка Processing. Позже я попытался сделать интро для Chaos Constructions.Понятно, что при использовании тупого способа "написать код на PureBasic, транслировать в .ASM, переписать код и сократить" попытка потерпела неудачу. Сейчас я решил потренироваться в использовании инструкций FPU, вот и получилось подобное. Цвет определяется как xor двух значений, но способ можно изменить(догадайтесь, кто и где использовал).
Подобный эффект использовался в одной из демо, но я решил использовать "падение рядового Райана" иначе.
Эффект похож на HiRes, но я его написал, когда знакомился с венгерским TVC Videoton. Не самое приятное занятие, но это некоторая ачивка.
Эффект был взят из 16К интро на Атари, у меня просто не было никаких идей. Откуда взял набор символов не помню.
Еще одна попытка уложиться в интро 8б без мерцания бордером и биперного пердежа. Сейчас я нашел некоторый способ, но в то время решение задачи показалось сложным.
снова LoveByte и попытка попасть в showcase неведанной категории 16байт. Только показа не было.
Долго пострадал над кодом, но в итоге я был просто счастлив от полученного результата - вывод на экран немного сложнее, чем на Спектруме.
Игра с аппаратным сдвигом экрана на БК-0010. 128б сделать не так и легко.
Снова знакомый эффект? Да, CoMa=Color Mash, Да еще и на комодури. Сделать вывод цветом оказалось непросто, зато реализация алгоритма упрощена. Знакомство с С64 пошло на пользу.
Те же Daemons from cyclic space, но попроще.
Написал код, когда тренировался для LoveByte BattleGrounds. Как работает несложно догадаться.
Похожий эффект использовал в демке для сайта ААА, пострадал над ним порядочно. Взглянул позже, решил сократить и вот результат.
Трудно вспоминается, как сделан эффект. Наверное, при подготовке астроиды что-то пошло не так. Удалось уместить пару вариаций рисования точек для готовых наборов параметров.
Треугольник Рило использовался в демо :3(tri), теперь вернулся к исследованию. Меня интересовало, как он рисуется? Гугл подбросил ссылку на длиннющую формулу, но позже я увидел это:
За день поломал голову, написал модель на PureBasic, идея реализации постепенно проявилась. За вечер написал код рисования окружности Брезенхема, и стал готовиться к написанию интро. Утром проснулся в 6 часов и сел за код.
Только я рисовал залитую окружность. Я решил, что достаточно инкремента для заливки. в итоге получаю:
У меня все опустилось - не работает задумка. после перекура пришла идея: при заливке выполнять OR color(здесь 1,2,4). В итоге точки цвета 15 можно выводить, другие значения - обнулять. Теперь вылезла еще ошибка: при рисовании проверка попадания точек с нужными координатами в экран не работает. Исправил, код стал расти. Кое как воткнул поворот центров окружностей и заменил обнуление цветов на закраску текстурой XOR. прошло 6 часов, и я уже ничему не рад. superogue шлет сообщение - не будешь делать интро на @party? О, я как раз написал одно. Отправляю письмо, приходит ответ о получении интро. Второе место, однако.
Решил потроллить БК-шников и начал работу над картинкой. Текст у меня был готов, я просто нарисовал в текстовом редакторе, имея скриншот. Печать не заработала, ребята подсказали, в чем ошибка(писал в блоге). Потом решил поиграть со сжатием: нашел компрессор RLE для TI-Calc, размер вышел маленький. после мучений выяснилось, что компрессор кривой и ничего путного не выйдет. Печать текста тоже не подошла, так как используется высота символа 10 точек. Переписал печать и по совету Manwe использовал пакер. Готовое 1к отправил на Chaos Constructions в категорию 4к.
просто решил собрать знания, полученные при изучении С64. Заодно запустил Goat Tracker и пустил кота погулять по клавиатуре. Со спрайтами вышел очередной косяк, исправил. Немного мучений с кодом и с пакером - получено 1к. Ушло туда же на СС.
Эффект увидел на Oric и решил портировать. Не вышло, интро использует готовую процедуру ROM для рисования окружности. Две недели ушло на попытки изобрести процедуру рисования круга заданного радиуса. Когда способы исчерпаны, я вспомнил про окружность Минского. Этот алгоритм заработал, но медленно, так как не удалось определить количество итераций. Позже переписал код на C64, исправлений было мало.
Треугольник Серпинского можно рисовать разными способами. На Атари и на С64 он реализован ас помощью алгоритма под названием Chaos Game:
(X1,Y1),(X2,Y2),(X3,Y3) - вершины треугольника
центр треугольника (или центр тяжести):
XC=(X1+X2+X3)/3
YC=(Y1+Y2+Y3)/3
повторять много раз
построить точку (XC,YC)
выбрать случайное число N-1,2,3
XC=(XC+XN)/2, YC=(YC+YN)/2
конец цикла.
Я применил такой алгоритм на БК-0010 с вариацией цветов, а позже сделал вариант на TIC-80.
Только вращались всего три точки. И тут же я решил попробовать в 3d. Нужно выбрать 4 точки(позже до меня дошло, что это вершины тетраэдра- возьмите куб и в противоположных гранях нарисуйте пересекающиеся диагонали). Самое сложное было в повороте координат 3d. Я рискнул перейти на сферические координаты, но плавного вращения не получил.
Снова утро, 6 часов. Сел за код и за FPU, при каждой команде пишу комментарии состояние стека. Работает, но криво. Три раза я искал ошибки, находил и переписывал снова. Через 8 часов я получил картинку. Но я снова не рад результату. Хотел добавить глубину цвета, но не получилось.
Задачу больших чисел я писал раньше, но код любого вгонит в депрессию. Сейчас я переписал код вычисления степеней двойки заново. И снова Serzhsoft показал свою крутизну: сократил код до 32 байт! я посрамлен(:
Нашел в интернетах эффект, реализованный на PowerBasic. Переписал код, упростил и начал писать. Немного помог Jin X, хоть эффект 256б пожиже оригинала.
Год начался неудачно, после ковида ничего не хотелось делать. Да и задумки не получались, поэтом разморозил заброшенный проект в 2017 году - может, на DiHalt и выиграли при слабых работах. Первый хит - анимация из 140 кадров. Остальные эффекты я переписал и пострадал над sinedots. Все остальное делалось через силу. Отходная так сказать.
Идея эффекта возникла после просмотра демок на HP48G. Кое-как сохранил скриншот демо и после просмотра картинки понял, как она реализована. Пара часов, эффект готов. В идеале можно сделать oone frame, но без 128 байт.
Итоге 36 работ плюс две совместных работ. Что будет дальше - время покажет.
Комментарии
Отправить комментарий