#01 — И целого байта мало… | Какими бывают intro?

    Дамы, господа, сегодня отличный день!

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

    image

    Одной из форм соревнования на демосцене является sizecoding — программирование визуальных эффектов в крайне ограниченном объеме машинного кода. Прежде чем мы перейдем к достижениям сегодняшнего дня (а они есть и более чем масштабные), давайте очень быстро пробежимся по наследию дедов. Все приведенные ниже работы сделаны в разные годы, объединяет их требование к платформе — PC, x86, DOS (никакого GPU, обычная видеокарта). В идеале вам стоит поставить DosBox и запускать каждую работу самостоятельно, благо авторы не особенно озадачиваются созданием видео и загрузкой его на YouTube. Мы постарались выбрать по одной показательной работе в каждой номинации.

    Для начала посмотрим на «крупные» релизы, те, которые занимают килобайты. Здесь золотым стандартом является 64 килобайта. Категория 40 килобайт популярна на компьютере Commodore Amiga, а в случае с PC здесь обычно лежат работы, которые авторы не захотели дописывать до 64k. Говоря про 32k и 16k — это чаще всего cracktro и bbs intro, которые формально тоже можно отнести к демосцене.

    64k introheaven seven by Exceed



    40k introAlien Incident Cracktro by Hybrid & Superior Art Creations



    32k introQuake 3 Cracktro (RZR #07) by Razor 1911 & Superior Art Creations



    16k introBlastersound BBS (2) by Iguana



    А вот отсюда начинается настоящая демосцена, здоровенная, демосцена моей мечты!

    8k intromars by Tim Clarke



    4k introOmniscent by Sanction



    1k intropaleozoa by fsqrt



    512b introAFLAtoxin



    256b introPuls by Rrrola



    128b introcross by Queue Members Group



    64b introinto a new era by Desire



    32b introProjektbeschreibung by Desire



    На этом официальны градации на Pouet заканчиваются, но не заканчивается погоня за эффектами в минимальном объеме кода. Вот в качестве примера всем знакомый «дождь из символов в Матрице» размеров всего восемь (8) байт:

    8b introm8trix 8b



    Вопрос дня: может ли быть интро размером в 4 байта? А в 2 байта?
    Ответ: ДА.

    Вот машинный код для процессора x86:

    0xEB 0x80

    Или на более понятном языке:

    ; 2B or not 2B - main environment code
    ; (c) 2020 / ShakeSpirt / RMDA
    
    ; fasm 1
    
    org $100
    
    	jmp short $82		; jump to command line to launch the code :)

    А вот результат на экране:



    Заинтригованы? Во второй части мы детально расскажем как такое возможно! Уж такой сегодня
    день…

    Продолжение статьи можно и не ждать, если вы умеете держать ассемблер в руках и язык вероятного противника вам знаком. Вот ссылка на ответ: www.pouet.net/prod.php?which=85118

    Пишите в комментариях что поняли, что не поняли и что хотели бы понять из прочитанного выше. Ассемблер вовсе не черная магия! Просто НОРМАЛЬНЫЙ мужской язык программирования, а не это все «для девочек», на чем вы обычно каждый день пишите.

    Архив выпусков нашей научно-популярной передачи:

    И целого байта мало… (Часть #0)
    И целого байта мало… (Часть #-1, пилот)
    И целого байта мало… (Часть #1)
    И целого байта мало… (Часть #2)

    image

    На иллюстрациях в статье PC-демонстрация obsoleet by Unreal Voodoo победившая на Assembly в 2004 году. И наверное, если вы дочитали до этого места, вам стоит посмотреть саму работу, она очень трогательная:



    ---EOF---

    #FF — И целого байта мало… | Пилот)
    #00 — ИЦБМ… | Приглашение на Revision Online 2020
    #01 — ИЦБМ… | Какими бывают intro?
    #02 — ИЦБМ… | The Cross of Changes
    #03 — ИЦБМ… | 2B or not 2B
    #04 — ИЦБМ… | Берем БК за рога
    #05 — ИЦБМ… | Анимэ
    #06 — ИЦБМ… | Метеоризмы
    #07 — ИЦБМ… | Revision Online
    #08 — ИЦБМ… | Голосуем на Revision

    Развлекательный канал деда в Телеграм: teleg.run/bornded

    Рядом с каналом есть чат. В нем можно попробовать поднять вопросы за демосцену, ассемблер, пиксель-арт, трекерную музыку и другие аспекты процессы. Вам могут ответить либо отправят в другие, более тематические чаты.

    ТАК ПОБЕЖДАЛИ — ТАК ПОБЕДИМ!
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 66

      +2
      #EB #80, говорите? Было дело, да. Сам когда-то использовал буфер для аргументов в своих корыстных целях.
        0
        надеюсь, это не секретные технологии и за нами уже не выехали :-)
          +3
          Т.е. фишка в том, что делается прыжок на аргументы командной строки в PSP?

          P.S. Да, точно :)
            0
            я календарь переверну и снова… ну вы поняли
            +1

            Я правильно понимаю, что команде передаётся аргумент, представляющий собой, по сути, shell-код? Он и выполняется по факту?

              –2
              Я не автор, я не знаю, но суть в .BAT которым запускается .COM — изучите полный архив, он по ссылке там в конце статьи. Если автор напишет тест — будет вторая часть, там разложим все честь по чести.
                +4
                Аргумент (вернее даже, полная командная строка, если не ошибаюсь) — набор ASCII-символов, которые представляют собой машинный код. Т.е. команды должны быть еще подобраны таким образом, чтобы среди символов не оказалось специальных.

                P.S. EB 80 — это jmp по смещению 80h, а первые 100h (256) байтов в com-программе — это Program Segment Prefix со всякими структурами, и по смещению 80h находится командная строка, выполнение которой и запустило эту программу.

                P.P.S. Ну и напоследок, всего программа таким образом занимает 128 + 2 = 130 байт, исходники я не смотрел но весьма вероятно что основной цикл так и сделан, что выполняется итерация в этих 128 байтах (байт длины + 127 байт) и после снова выполняется та же инструкция EB 80, когда IP доходит до 100h.
                  +1
                  ну вот, автор может теперь уже ничего и не писать :-)

                  спасибо!
                    +1

                    Поглядел архив. Точно так. Сейчас сам шел-код можно при помощи какого-нибудь radare2/rasm2 сделать. У него это отдельные исходники, что генерируют шел-код.


                    Ну и не знаю за DOS, в Unix формального ограничения, что за байты могут быть в параметрах ком-строки нет. Главное найти способ их передать :) Но судя по всему, у DOS тоже жёстких ограничений нет.

                      0
                      ну вот и разобрались… То что это можно использовать в военных целях сомнений нет, может быть даже и использовалось уже. У нас демосцена и она легальна — в вирусной сцене я не разбираюсь.
                        0

                        Ну я не хацкер тоже. Radare2 помогает во всяком закрытом embedded разбираться, когда исходников библиотеки нет, но нужно разобраться.

                +4
                Эх, mars by Tim Clarke — легендарная вещь.
                  –1
                  Есть мнение, что пора его переписать на новых технологиях. Возможно займемся на днях этим проектом, исходник комментированный у нас уже есть.
                    +4
                    Я ему в свое время палитру менял. Землю делал зеленой, а небо синим. Получалось Earth :-)
                    Экзешник сейчас точно не найду, но там совсем просто было. Палитра прям в чистом виде хранится…
                    ПС: Таки нашел!
                    drive.google.com/open?id=1QIMefgyOpgESJpBBLiAOwKQbretsIC7G
                      0
                      а исходник есть у тебя?
                        +2
                        Не, нету. Насколько я помню, я его даже не дезассемблировал. Сразу экзешник правил.
                          +1
                          Исходники Mars-а или что-то Mars-о подобного по его мотивам были. Ушел искать. (Память упорно пытается делать пассы руками и шепчет «C--», но я не уверен)
                            +2
                            Вот что нашлось по закромам:
                            Mars_src.zip дисассемблированный / прокомментирован вручную
                            MARSKIT.ZIP дисассемблированный Sourcer-ом / судя по комментариям / внутри архива есть «MARSPAL is a simple little utility to allow you to view Tim Clarke's excellent mars demo in different colors.»
                            и OTMVOXEL.ZIP voxel landscape explanation/demo
                              0
                              отлично! спасибо!
                        +2
                        Марс же 5 kb, а после упаковки каким-нибудь apack’ом – 3.5 kb. Ему место в предыдущей номинации.
                          0
                          на Pouet он в 8k — отсюда и текущее его местоположение

                          если кто то захочет сделать Mars 2020 он и в 1к его смело сможет переписать ибо деды об оптимизации особо не думали
                          +2
                          2b это все-таки трюк, в чем-то отдаленно похожий на современные хакерские эксплойты (только здесь мы сами передаем управление на данные в буфере).
                          А вот 8b matrix — это супер! программа полностью самодостаточна.
                            0
                            все так, все так
                            +3
                            Дед жжёшь, даёшь демосцены в молодые массы!!!
                              +1
                              поучаю…
                                +1
                                Два байта это неспортивно. Вот мы тут поджались, и зарелизили аж целый язык программирования размером в 1 байт для ZX-Spectrum — www.pouet.net/prod.php?which=85125
                                  0

                                  Запуск бейсика из ПЗУ? :)

                                    0
                                    я то тебе лайк там поставил, а вот ты наши работы игнорируешь — негоже это

                                    https://www.pouet.net/groups.php?which=14823

                                    И изучи внимательно 2b — там существенно больше чем ресет. Существенно…
                                      0
                                      А что этот код делает? А то я в спеке никакущЪ.
                                        +1
                                        мы вообще люди простые — видим хорошую работу без YouTube — делаем его: www.youtube.com/watch?v=jxhq3WY_aLU
                                      +1
                                      Вот тебе раз
                                      image
                                      +2
                                      Суровая мужская слеза ностальгии сползла по щеке. Помню, как завидовали демомейкерам на Амиге, у которых в распоряжении уже тогда было, хотя бы, 2D аппаратное ускорение. Помню Watcom C и вставки на ассемблере для оптимизации вычислений. Затенение Гуро, Фонга, интерполирование нормалей, прямой доступ к видеопамяти…
                                        0
                                        на то и расчет! Но можно не только плакать, а брать в руки современные средства разработки и быстренько вспоминать былое. Благо много исходного кода опубликовано и собрать свою первую работу не так сложно. А дальше оно уже само…
                                        +1

                                        Вспомнились минимально возможные программы для AVR. Вроде самая минимальная… 0 байт. Кажый такт счётчик инкрементируется и бежишь по ячейкам памяти, потом переполняешься и сначала.


                                        upd: вот https://habr.com/ru/post/240517/

                                          +3
                                          Вот эта вещь нравится youtu.be/ZfuierUvx1A
                                          Chaos Theory — Awesome 64k Intro
                                          При желании можно найти саму демку, а так-же её код.
                                          Это демо наверное единственное из всех 64к, что обладает динамичной осмысленной графикой, и вполне нормальной музыкой.
                                            0
                                            это все отлично, но это GPU

                                            про GPU мы еще поговорим, сейчас речь про PC, DOS, non-GPU
                                              0
                                              Почему не рассказали про это и как они подгоняли размер, чтобы программа была не такая маленькая
                                                0
                                                GPU.
                                                Мы сегодня говорим про software rendering — это принципиально разные штуки…
                                                  +1
                                                  А Heaven7 это всё таки software?! Ух, ёлки!
                                                    +1
                                                    конечно. H7 это 2000 год, это пограничный момент и это последняя (одна из последних) работ такого уровня для non-GPU
                                              +1

                                              Да, первый раз когда увидел тоже сразу понравилась, какой-то смысл глубокий есть в ней и сюжет.

                                                +1
                                                Все демки Conspiracy смотрятся крайне круто даже сейчас.
                                                А уж про Farbrausch и говорить нечего, надо просто смотреть:
                                                  0
                                                  еще раз повторюсь — это GPU и мы обязательно поговорим про это…
                                                  сегодняшняя тема — работы без GPU
                                                0

                                                unbeliever Mesha зря не упомянул, всё-таки из 4К для DOS пожалуй самая крутая. Omniscent конечно впечатляет, но чисто технически он не настолько сложен.


                                                PS: Привет, кстати :)

                                                  0
                                                  Привет! Я старался брать самые старые работы в каждой номинации — в остальном, да, работ достойных очень много.

                                                  Видал? www.pouet.net/prod.php?which=85103
                                                    0

                                                    Да, видел, правда не очень понял смысл происходящего… :)

                                                      0
                                                      Ну в вашем случае мы просто архивируем на YouTube вашу работу, обе версии в отличном качестве. Чуть позже сделаем финальную версию, там будет все еще лучше. Если есть какие доп.материалы — сообщай, включим туда. Арти не хочет на это тратить время :-(
                                                        0

                                                        Именно из спектрумовского кода, относящегося к Forever вроде ничего нет. Есть куча наработок с тестами эффектов на Pascal'е, я обычно сначала на нём всё оттачивал чтобы потом переносить, но не уверен насколько это может быть интересно. Сорцы тоже есть.

                                                          0
                                                          У нас же видео + файлы. Мы на видео, после работы можем все что угодно показать, от фоторафий и кусков фильма Funtop до всякого. А в архив можем положить кроме самих работ опять же все что угодно. Важно чтобы это было понимаемо, собираемо, с комментами. Подумай! Пиши в телеграмм если что @muchkaev
                                                            0

                                                            Фотографии какие-то есть, но немного и это сканы сделанные в 90-е, так что разрешение у них мелкое и качество хреновое.


                                                            Про "собираемое, с комментами" — сомневаюсь что есть что-то подобное т.к. всё-таки это демка, а не продукт с долгосрочной поддержкой :)


                                                            Telegram не использую

                                                  +2

                                                  По идее, 512b-intro можно закатывать прямо вместо MBR и запускать на голом железе без этих ваших новомодных DOS-ов

                                                    0
                                                    Нельзя. В МБР доступно только 510 байт, последние 2 байта сигнатура. И без неё этот сектор не загрузится на исполнение.
                                                      0

                                                      Да, точно. Но ради такого дела можно и сильнее ужаться :)

                                                      0
                                                      я старался брать самые старые работы в каждой номинации — в остальном, да, работ достойных очень много
                                                        0
                                                        большинство ограничений в sizecoding связаны с размерами секторов или областей диска/памяти которые всегда свободны и не используются. В BIOS вы точно можете зашить ту или иную интру как скринсейвер после небольшой модификации кода.
                                                        0
                                                        Немного не в тему, но кмк небезынтересно было бы реализовать в виде демосцены нечто подобное (включая бесконечное генерирование музыки или напротив — генерирование анимации под произвольную музыку):
                                                        Animusic

                                                          +2
                                                          Правильно писать «в виде демо». Демосцена (она моя) это название самой субкультуры, а не отдельной работы. Мы тут 10 лет назад пошутили так неудачно и теперь еще 10 лет будем переучивать всех обратно как правильно говорить и писать.

                                                          Ссылку я посмотрю отдельно.
                                                            0
                                                            Да, www.animusic.com очень интересная штука, надо с ним разбираться, что так к чему…
                                                              +2
                                                              Я слежу за AniMusic с самого первого диска. Это вообще вещь в себе. ATi под свой Radeon тогда выпустила 3D демку «Pipe Dream»:

                                                              Сама демка пропала с их сайта после того, как их поглотили AMD, но она несложно ищется в гугле. К слову, она работает и на nVidia, только есть местами какие-то графические огрехи, например окантовка на тарелочках не золотистая а чёрная. Не знаю, с чем это связано, возможно даже вендор лок. Ролик выше как раз отрендерен на nVidia.
                                                              Для сравнения она же, но на Radeon



                                                              Так же Intel воплотили эту демку в железе. Ну, насколько это возможно физически.

                                                              Другой ракурс

                                                              С комментариями на английском:

                                                                0
                                                                Спасибо, не знал — поленился, видимо поискать физические реализации.
                                                                Эх, было же время, у Intel были ресурсы для таких, казалось бы, забав.
                                                                Интересно, а ссылка на Animusic была?
                                                                Сейчас можно было бы воплотить ролик Animusic про оркестр музыкальных инструментов а-ля гусли-самогуды, едущих по дорожкам и исполняющих композицию, добавив код в прошивку дронов на основе моноколёс.
                                                                  0
                                                                  Ну, это же не совсем забава была. Там же Atom не просто так упоминается. :)
                                                                    0
                                                                    казалось бы, забав
                                                                    На самом деле, красивейшая демонстрация возможностей ИТ, когда (вместо откровенных свистелок и погремушек), основываясь на досконально проработанной физической модели демонстрируется нарочито игрушечная система. Просто, как BB-8.
                                                                    BB-8
                                                                    После такой инсталляции, как в интеловском видео, умный дом видится простым и логичным.
                                                                    Про Atom подчитаю.
                                                                0
                                                                Когда-то статью о них читал — они вроде бы сначала описывают полную физическую модель, после чего реализация в любом виде уже не составляет проблемы.

                                                            Only users with full accounts can post comments. Log in, please.