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 комментариев