Epic coder demo - демо для кодеров

Добрый день!


Хочу представить вам мою новую дему — Epic coder demo.
Если вас заинтерисовало — прошу под кат.

На создание данного продукта меня натолкнул многолетний спор code vs desing, а также сообщение непомню кого в непомню какой теме на форуме zx-pk.ru.
Вот что дема из себя представляет —
В качестве музыки использован кавер известной композиции Джона Кейджа4:33.
В качестве графики используется репродукция известного полотна Казимира МалевичаЧёрный квадрат.
Код. Самое главное код. В этой деме процессор выполняет бесконечное, цикличиское вычисление md5-хэша. Алгоритм следующий:
  1. Берётся неинициализируемый участок памяти
  2. Вычисляется md5 хеш от него
  3. Вычисляется md5 хеш из полученного md5 хеша
  4. Переходим к пункту 3
  5. ...
  6. Получаем первое место на любом пати
Дема не выводит ничего ни на экран ни на какие другие устройства вывода, но ведь это и не надо. Вы должны понимать суть и величие происходящего в данный момент.
Как видите, данный прод сочетает в себе огромный опыт суперматизма, минимализма и абстрактного искусства, при этом гармонично соединённого со сложный кодом, порождённым глубокими исследованиями в криптологии. Также, это новая ветвь в демостроении, некий антизапилятор. Если в запиляторе доминирует анимация без кода, то здесь — чистый код без анимации.
Наслаждайтесь
kabardcomp.retroscene.org/epiccoder.rar

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

avatar
Оставлю багрепорт и здесь тоже. При запуске trd «классическим» способом: из Spectaculator, или из TR-DOS, картинка на экране не отображается. Только музыка.

При запуске trd из UnrealSpeccy через GLUK, или при запуске tap-файла всё нормально: есть и картинка и музыка.

Надеюсь, автор скоро пофикисит.
avatar
Ящитаю, это гениальнейшее демо всех времен!
Квадрат Малевича правда инвертирован, видимо требуется запуск из командера, где установлена соответствующая цветовая гамма окружения.
  • tsl
  • +3
avatar
tsl , да, есть косяк. Автор в курсе. Пока можно запускать tap, в нем всё отлично.
avatar
В тапе поверх графики есть артефакты от загрузки.
avatar
Я считаю что квадрат мог бы быть и поквадратнее.
Готов приготовить свою пиксельную версию «Чёрного квадрата», возможно автору она приглянётся.
avatar
Это будет уже не совсем тру, эта дема ценна своей идеальной минималистичнойстью выразительных средств, а в спектруме она выражается именно таким квадратом.
avatar
а по мне так не хватает динамики в этой демки
но фикс под музыку отличный
avatar
Не очень оригинально, из разряда 0-байтного интро, которое лежит где-то на Pouet.
avatar
Действительно, не оригинально, но актуально — очень.
avatar
На первый взгляд может быть и да. Но я вижу подмену понятий. Спор 'анимация против кода' всё-таки имеет контекст — как лучше показывать действие на экране. Здесь же получается выход из контекста, наличию анимации не-кодом противопоставлено отсутствие анимации кодом.
avatar
Как я лично понимаю этот спор, разговор тут даже не совсем о запиляторе, а о некоторых кодеров, которые любой нематан тоже считают в некотором роде анимацией. Здесь эта тенденция просто доведена до абсурда — раз внешний вид эффекта такому условному кодеру менее важен чем его сложность, давайте забьём на внешний вид окончательно.

Т.е. критика, как это не абсурдно, пойдёт скорее не по линии, оригинально-неоригинально, а по линии: (а) MD5 — это недостаточно сложно и (б) картинка размещена в центре экрана, в то время как настоящие преданные своему делу кодеры обязательно должны строить кадр асимметрично.

Это почти не шутка!
avatar
Что интересно, любой матан — тоже вполне себе анимация. Одинаковые входные данные дадут одинаковую последовательность в результате.
avatar
К сожалению, некоторые виды прописных истин пока ещё не стали универсальными.
avatar
Если бы только сцена под анимацией подразумевала ещё и «наборы алгоритмов, обеспечивающие движуху на экране», а не только «набор растровых изображений, играющий кадр за кадром».

Я уже молчу про векторные анимации. А ведь это уже нифига не запилятор, народ!
avatar
Ну как, если кто-то напишет векторизатор автоматический из растровых кадров, то будет запилятор. Все векторные анимашки, которые я знаю — конвертились вручную, покадрово в специальных утилитах.
avatar
это нереально!

Kakos_nonos, слышал такое слово майнинг?
  • VBI
  • +7
avatar
О, да эта супер идея! Доход со следующей демы поделим пополам.
avatar
Исправил ошибки, перевыложил. Просьба опробовать.
avatar
нет мне первая версия больше понравилась там прямоугольник черный а тут белый и на фоне бордера не видно
avatar
А где ты запускал? Я протестировал и тап и трд на Unreal, EmuzWin и Пентеве, везде правильно — черный прямоугольник на бером бордюре.
avatar
Trd в Unreal
отсюда по ссылке и 34.trd с Яедекс диска
avatar
ну собственно я в отладчике хотел глянуть че то то оно там считает
avatar
Неправда! В основе кавера лежит совсем не великая композиция Джона Кейджа! В основе лежит трек электронщика Джеймса Холдена «Intentionally Left Blank», поскольку из Спектрума не слышно посторонних шумов! Нас надули, чуваки!
avatar
А, и ещё момент: вычисление md5 в деме происходит не честным путём, а через RND. Я начинаю сомневаться в том, что это истинная кодерская дема.
avatar
Неверие!
Вот исходник:
#include <string.h>
#define F(X,Y,Z)((X&Y)|(~X&Z))
#define G(X,Y,Z)((X&Z)|(Y-Z))
#define H(X,Y,Z)(X^Y^Z)
#define I(X,Y,Z)(Y^(X &(~Z)))
#define R1(A,B,C,D,X,S,T)B+((A+F(B,C,D)+X+T)<<S|(A+F(B,C,D)+X+T)>>(32-S))
#define R2(A,B,C,D,X,S,T)B+((A+G(B,C,D)+X+T)<<S|(A+G(B,C,D)+X+T)>>(32-S))
#define R3(A,B,C,D,X,S,T)B+((A+H(B,C,D)+X+T)<<S|(A+H(B,C,D)+X+T)>>(32-S))
#define R4(A,B,C,D,X,S,T)B+((A+I(B,C,D)+X+T)<<S|(A+I(B,C,D)+X+T)>>(32-S))

unsigned long int a,b,c,d;
char buka[16];
int cl;

void gooo()
{
unsigned long int a0,b0,c0,d0;
int slen,wlen,i,j=4;
long int X[256];
long int r;

if(1==1)
{
slen=16;
wlen=4;

for(i=0;(i*4)<slen;i++)
{
X[i]=0;
for(j=0;(j<4)&&((i*4+j)<slen);j++)
{
switch(j)
{
case 2: r=buka[i*4+j]<<8;r<<=8;break;
case 3: r=buka[i*4+j]<<8;r<<=8;r<<=8;break;
default: r=buka[i*4+j]<<(j*8);break;
}
X[i]+=r;
}
}
if(j==4)
X[i++]=0x80;
else
{
switch(j)
{
case 2:r=0x80L<<8;r<<=8;break;
case 3:r=0x80L<<8;r<<=8;r<<=8;break;
default:r=0x80L<<(j*8);break;
}
X[i-1]+=r;
}
X[wlen-2]=slen*8;
a=0x67452301;
b=0xefcdab89;
c=0x98badcfe;
d=0x10325476;

i=0;

a0=a;
b0=b;
c0=c;
d0=d;
a=R1(a,b,c,d,X[i+0],7,0xd76aa478);
d=R1(d,a,b,c,X[i+1],12,0xe8c7b756);
c=R1(c,d,a,b,X[i+2],17,0x242070db);
b=R1(b,c,d,a,X[i+3],22,0xc1bdceee);
a=R1(a,b,c,d,X[i+4],7,0xf57c0faf);
d=R1(d,a,b,c,X[i+5],12,0x4787c62a);
c=R1(c,d,a,b,X[i+6],17,0xa8304613);
b=R1(b,c,d,a,X[i+7],22,0xfd469501);
a=R1(a,b,c,d,X[i+8],7,0x698098d8);
d=R1(d,a,b,c,X[i+9],12,0x8b44f7af);
c=R1(c,d,a,b,X[i+10],17,0xffff5bb1);
b=R1(b,c,d,a,X[i+11],22,0x895cd7be);
a=R1(a,b,c,d,X[i+12],7,0x6b901122);
d=R1(d,a,b,c,X[i+13],12,0xfd987193);
c=R1(c,d,a,b,X[i+14],17,0xa679438e);
b=R1(b,c,d,a,X[i+15],22,0x49b40821);
a=R2(a,b,c,d,X[i+1],5,0xf61e2562);
d=R2(d,a,b,c,X[i+6],9,0xc040b340);
c=R2(c,d,a,b,X[i+11],14,0x265e5a51);
b=R2(b,c,d,a,X[i+0],20,0xe9b6c7aa);
a=R2(a,b,c,d,X[i+5],5,0xd62f105d);
d=R2(d,a,b,c,X[i+10],9,0x2441453);
c=R2(c,d,a,b,X[i+15],14,0xd8a1e681);
b=R2(b,c,d,a,X[i+4],20,0xe7d3fbc8);
a=R2(a,b,c,d,X[i+9],5,0x21e1cde6);
d=R2(d,a,b,c,X[i+14],9,0xc33707d6);
c=R2(c,d,a,b,X[i+3],14,0xf4d50d87);
b=R2(b,c,d,a,X[i+8],20,0x455a14ed);
a=R2(a,b,c,d,X[i+13],5,0xa9e3e905);
d=R2(d,a,b,c,X[i+2],9,0xfcefa3f8);
c=R2(c,d,a,b,X[i+7],14,0x676f02d9);
b=R2(b,c,d,a,X[i+12],20,0x8d2a4c8a);
a=R3(a,b,c,d,X[i+5],4,0xfffa3942);
d=R3(d,a,b,c,X[i+8],11,0x8771f681);
c=R3(c,d,a,b,X[i+11],16,0x6d9d6122);
b=R3(b,c,d,a,X[i+14],23,0xfde5380c);
a=R3(a,b,c,d,X[i+1],4,0xa4beea44);
d=R3(d,a,b,c,X[i+4],11,0x4bdecfa9);
c=R3(c,d,a,b,X[i+7],16,0xf6bb4b60);
b=R3(b,c,d,a,X[i+10],23,0xbebfbc70);
a=R3(a,b,c,d,X[i+13],4,0x289b7ec6);
d=R3(d,a,b,c,X[i+0],11,0xeaa127fa);
c=R3(c,d,a,b,X[i+3],16,0xd4ef3085);
b=R3(b,c,d,a,X[i+6],23,0x4881d05);
a=R3(a,b,c,d,X[i+9],4,0xd9d4d039);
d=R3(d,a,b,c,X[i+12],11,0xe6db99e5);
c=R3(c,d,a,b,X[i+15],16,0x1fa27cf8);
b=R3(b,c,d,a,X[i+2],23,0xc4ac5665);
a=R4(a,b,c,d,X[i],6,0xf4292244);
d=R4(d,a,b,c,X[i+7],10,0x432aff97);
c=R4(c,d,a,b,X[i+14],15,0xab9423a7);
b=R4(b,c,d,a,X[i+5],21,0xfc93a039);
a=R4(a,b,c,d,X[i+12],6,0x655b59c3);
d=R4(d,a,b,c,X[i+3],10,0x8f0ccc92);
c=R4(c,d,a,b,X[i+10],15,0xffeff47d);
b=R4(b,c,d,a,X[i+1],21,0x85845dd1);
a=R4(a,b,c,d,X[i+8],6,0x6fa87e4f);
d=R4(d,a,b,c,X[i+15],10,0xfe2ce6e0);
c=R4(c,d,a,b,X[i+6],15,0xa3014314);
b=R4(b,c,d,a,X[i+13],21,0x4e0811a1);
a=R4(a,b,c,d,X[i+4],6,0xf7537e82);
d=R4(d,a,b,c,X[i+11],10,0xbd3af235);
c=R4(c,d,a,b,X[i+2],15,0x2ad7d2bb);
b=R4(b,c,d,a,X[i+9],21,0xeb86d391);
a+=a0;
b+=b0;
c+=c0;
d+=d0;

}
}

void boo(unsigned long int aaz)
{
char i;
for(i=0;i<4;i++)
{
buka[cl++]=aaz&0xff;
aaz>>=8;
}
}

void main()
{
char i;
char* p;

#asm
push af
push bc
push de
push hl
ld a,7
out(254),a
ld a,0
ld hl,22528
ld (hl),a
ld de,22529
ld bc,768
ldir
pop hl
pop de
pop bc
pop af
#endasm

for(;;)
{
cl=0;
buka[9]=144;
p=16384+6144;
gooo();
boo(a);boo(b);boo(c);boo(d);
}
}
avatar
Согасно Кейджу, музыку составляют посторонние шумы вокруг, то есть — шум кулера, наводки 50 гц, шум дисковода.
avatar
… треск пуканов.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.