Isn't silly?





История началась два года назад: один из оргов, Grey/MSB, активно искал кодеров, способных написать прод на пати. Он прислал письмо и мне. Хорошо, говорю, у меня нет музыканта. Нет музыканта? Без проблем!

Летом этого года получаю письмо такого содержания: «Планируешь ли ты участвовать? Нужна ли помощь с графикой и музыкой?». Настроение у меня было паршивое, ответил, что занят другими проектами, возможно создам. К тому же обещанные призы я не получил. Нет, дело не в жадности а в принципе.

Настроение снова изменилось как переменчивая погода. Для разминки я сел за две задумки для 256б, получилось пара этаких баянов:


Geometry
все вместе состояло из созданных заранее набора символов и из готовой процедуры, которую написал Денис Попов. Выглядело достаточно бодро: символы меняются, картинка тоже.


Freax

Слегка популярный, но измененный алгоритм: на экран выводятся разноцветные узоры, еще и со звуком.

Всё, не столь важные цели но достигнуты, теперь можно вернуться к созданию 16К intro. Остался вопрос в выборе музыки.

Когда-то я разбирался с raster эффектами, я увидел древнее демо Bonanza:


Так вышло, что музыка прочно засела в память и назойливо вертелась в голове. Стал искать автора, чтобы заполучить разрешение на использование. Вышел на Seb'a(Sebastian Igelski), он был настолько любезен, что пояснил, где можно найти мелодию и как скомпилировать её. Далее идет диалог, который то ли забавный то ли грустный:
— Спасибо, я всего лишь хотел получить разрешение на использование…
— Пацан, я не автор музыки, я просто взял её от балды…

Поиски продолжаются, обращаюсь к JAC!'у, он поясняет, что автор музыки Benjy с которым он знаком и что он постарается помочь.

Возвращаюсь к прежней мелодии, снова напоминаю JAC! Он отвечает, что помнит, но ответа еще не получил.

Иду ва-банк и начинаю кодить. Уже сейчас я вижу ошибки, которые я допустил:
— для удобства использовались ячейки памяти в нулевой странице $CB-$EF, я не озадачил себя написанием меток.
— Часть эффектов были запланированы в textmode, поэтому данные шрифта и область видеопамяти были раскиданы абы где, удобнее было привязать их к нужным адресам.
— изначально я понадеялся на адаптированный к 6502 код упаковщика zx7, но качество сжатия не подошло и код, предоставленный Eimar Sauskas'ом(он не автор кода) был не для 6502 а для 65С02. Проблема решена pucrunch.


Еще одна вариация эффекта, делается примерно так:


Dim t1.a(40,24)
Dim t2.a(40,24)
Dim s.a(256)
Dim c.a(256)

amp.a=32
For i=0 To 255
    s(i)=Int(amp+(amp-1)*Sin(i*#PI/128))
    c(i)=Int(amp+(amp-1)*Cos(i*#PI/128))
Next i

For y=0 To 23
  For x=0 To 39
    xx=x-20
    yy=y-12
    t1(x,y)=Int(255*Degree(ATan2(xx,yy))/180)
    t2(x,y)=255-(xx*xx+yy*yy)>>1
;    Debug 255-t2(x,y)
  Next x
Next y

da.a=0
dr.a=0
If InitSprite() And OpenWindow(0,0,0,640,480,"SineWave",#PB_Window_SystemMenu) And OpenWindowedScreen(WindowID(0),0,0,640,480,0,0,0) 
  Repeat 
    
    StartDrawing(ScreenOutput()) 
    Box (0,0,640,480,0)
    
For y=0 To 23
  For x=0 To 39
    
    t1(x,y)+7
    t2(x,y)+5
    an.a=t1(x,y);+da
    ra.a=t2(x,y);+dr
    
;    co.a=ra
;    If s(ra)>s(an):co=an:EndIf
    
    
 ;   co.a=(s(an)-c(an))+ra
    co.a=(s(an)+c(ra))
;    co.a=s(an)+ra
  ;  co.a=(s((an+ra)&255)-c((an-ra)&255));cool

    
    Box (x*8,y*8,8,8,RGB(co,0,0))
  Next x
Next y
    da=da+7;;;;1 if +ra,7 if &ra
    dr=dr+2
        StopDrawing() 
      FlipBuffers() 
  Until WindowEvent()=#PB_Event_CloseWindow 
EndIf

CreateFile(0,"coolsin.bin")
For i=0 To 255
  WriteAsciiCharacter(0,s(i))
Next i
CloseFile(0)

CreateFile(0,"cooldata.bin")
For y=0 To 23
  For x=0 To 39
    WriteAsciiCharacter(0,t1(x,y))
    WriteAsciiCharacter(0,t2(x,y))
  Next x
Next y
CloseFile(0)

; IDE Options = PureBasic 5.30 (Windows - x86)
; CursorPosition = 5

имея похожую таблицу, можно экспериментировать с формулами и получать различные эффекты(Thing и Award)

Шрифт создан с помощью dithering.

[2016-06-27 11:18:07] <ШынилБог> есть одна заморочка. пишу дему для атари и нужны сиськи. я сконверчу в картинку для демы

Собственно, фраза в чятике не была шуткой, поскольку был написан вот такой эффект:


поэтому картинка подобного содержания заполняет паузу для вычислений, заодно сделана на зрителей. (diver4d когда-то скинул ссылку на ютуб со стримом, отсюда атмосфера ясна).


Эффект с шахматами вышел случайно, во время экспериментов с эффектом.


Анимация, созданная на публику. Забавно, что при создании эффекта вышло два танцора:

А суть всего одна дурацкая ошибка в самом алгоритме, до которой я докопался, когда уже собирался перейти с текстового режима на графический.


С плазмой было проделано немало работы: нарисовал с помощью Envision набор символов в 4 цвета и помучался с подбором цветов.

На том эпизоде, когда мне стал нравится вот такой вариант:


я решил остановиться на разработке. Кому-то нравится эффект, кто-то не любит плазму.


Два текстовых сообщения, обойдусь на этот раз без гритсов. Идея генерации символов вылезли из одной гифки. Самое печальное в том, что в процедуре была еще одна ошибка!


Этот эффект возник в результате экспериментов с кодом, я внес вариацию цветов, мне понадобилось модифицировать процедуру построения точек.



Нет, это не конец, а последняя заставка, которая никак не хотела выводиться.

Код готов, придраться уже не к чему, отправляю три работы Grey и жду ответа. Ответ начинается с ложки меда «Вау! три работы офигезные!» и заканчивается порцией дегтя «Да, мне тоже нравится музыка Benjy, но смотри сам: музыка довольно старая, это сейчас не популярно, тебя просто обвинят в рипперстве».

Я не стал спорить, просто сказал, что нужна музыка стиля техно, примерно на 2 минуты и по возможности размером 1-2К.
Не самые сложные требования, через неделю Mch присылает готовую музыку формата .rmt

Как тут быть? Я планировал дему под музыку Benjy и как мне кажется лучше её не может быть.
Однако эти терзания всего лишь усилились. Во-первых, raster player использует те же адреса — $CB-$D0, поэтому код надо переделывать. Меток для процедур нет, придется просматривать 1600 строчек и править значения.
Фикс под части. С ним самое противное, фикс подстроен под счетчики VBI(это вектор прерывания Vblank, а не дядьВова).

Поэтому пришлось прогонять демо заново и править код под новые значения.
Работа готова и можно отправлять. Но тут сваливается два письма: от Mch и от Grey — «лови финалку!». Ловлю и слушаю — карамба, музон поменялся совсем!


Еще два дня ушло на мучения с фиксами(две никак не синхронизировались) и вот прод готов. Отправляю готовую и теперь остается время до объявленных сроков в ноябре.

И все же, для меня загадка: что было глупым — рогами упереться в прежний вариант, или согласиться на новой музыке?


спасибо nyuk за запись на реале и за критику и подсказку.

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

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.