Всё же графика в Диззи ближе к копии, чем к оригинальной работе. Да, техническая часть выполнена заново. Но художественная — решить, что рисовать, как оно будет выглядеть, какие детали иметь, что и где будет располагаться, какую цветовую гамму выбрать, вообще в каком направлении думать — в значительной мере подсказано графикой и дизайном оригинальной игры. До бессознательного, типа как диагональная палка на ящике наклонена в ту же сторону. Имхо, первое (техника, ставим пиксели, чтобы было красиво) несколько проще, чем второе (придумать, когда есть только чистый лист). Ну или не проще, но второстепеннее, типа если знать, что именно рисовать, осталось только нарисовать, а если не знать, ничего и не нарисуется.
С основной мыслью, от расшифровки 'компо', согласен.
Музыка в Lotus III конечно же не ужасна, но звучит весьма своеобразно. И это прекрасно.
Идея с управлением реальным спикером через VSTi отличная. Я тоже об этом думал. Но есть проблема, в современных Windows (7 и выше, наверное) Beep вместо реального спикера играет синусоиду из колонок.
Такой глубокой конкретики у меня нет. Едва ли кто-то додумывался с наскока до крутых процедур. Факт, что ковыряние кода было обычной практикой. Даже на приставках, там в коде встречаются сообщения для ковырятелей.
Шаговые секвенсоры на ZX были в довольно большом количестве в 1985-86 годах, но никакой информации о применении их для игр нет, а сами они MIA. Музыканты тех лет обычно говорят — наигрывал на дешёвом синте, потом набирал в коде.
До ZX Spectrum были другие домашние компьютеры, причём даже с аппаратными спрайтами. А до них были другие штуковины, показывающие графику, от понгов до аркадных машин, и всякие радиолюбительские и компьютерные журналы, где всё это обсуждалось. Так что у первых программистов на ZX перед глазами был вполне устоявшийся пример, как это должно быть в принципе. Оставалось только повторить хоть как-нибудь, а потом постепенно улучшать. Даже в рамках платформы, прямо в ПЗУ уже был пример вывода знакоместных спрайтов — было от чего отталкиваться.
Касательно редактора. Я не знаю насчёт этого движка в варианте 'от Code Masters' (про Special FX явно говорилось, что редактора не было). Whittaker пришёл с C64, и рано сел на Amiga, а трекеры первым делом появились там, так что в принципе мог сделать свой редактор. С другой стороны, пишут, что он любил копипастить свою музыку, и причина — что писал вручную в коде. Возможно, его подход менялся со временем.
Но вообще, по разным платформам, большинство игровых музыкантов до расцвета трекеров, да и после него, писали вручную. Ближе к началу 90-х некоторые конвертили MIDI или трекерную музыку с Amiga, и очень немногие делали свои редакторы. Навскидку помню только один пример — Alberto Gonzalez сделал себе личный трекер на ZX, и писал на нём под разные платформы, в том числе NES и GB/GBA, но с ручной доработкой. Вообще, сама концепция музыкального редактора, где что-то можно набирать-рисовать визуально, а не записывать живую игру, в 80-е была нетривиальна, люди просто не думали, что это нужно. Большинство MIDI-секвенсоров того времени только записывали ноты, не показывая ничего на экране. А японцы, похоже, не осиливали концепцию редакторов до середины 90-х, писали всё на MML или в коде, и только на PS1 начали использовать MIDI. Трекеры же у них почти не взлетели, до сих пор не в ходу. Но у них было разделение труда, музыку часто сочиняли люди с музыкальным образованием, но не программисты, а писали плееры и набирали код программисты, но не музыканты. В Европе же типично были универсалы 'программист-музыкант'.
Информация о том, кто как чего делал, есть в старых журналах, новых интервью и мемуарах. Например, если не для ZX — www.nesworld.com/content.php?data=interviews,dutycyclegenerator.com/. В целом, до середины 80-х типичной была разработка на бумаге, в том числе рисование спрайтов и экранов на листах в клеточку. Так делались даже Super Mario Bros и Legend of Zelda. А уже в середине 80-х общим трендом среди профи, в том числе на ZX, стало использование для разработки других, более удобных и мощных компьютеров. Хотя бы даже Amstrad CPC, или часто упоминаемый Tatung Einstein (хорошая клавиатура, CP/M-совместимая система и дисководы). Для графики часто использовали Atari ST и Amiga, с местными редакторами. И как только PC поднялся с 8086-ых колен, основной платформой для разработки стал он.
Однако, нигде не читал про фурор по Plip Plop. Зато он когда-то вызвал фурор среди меня, впечатлил звук и пщщщщ в конце. Нам надо бы систематизировать всю эту информацию по возможной генеалогии движок и где-то записать.
Про линии заимствования касательно моих движков — а вот мимо. Я всегда очень не любил ковырять чужой код, не из принципа, а просто не хватало ума. Только в последнее время осилил до конца разбирать небольшие чужие процедуры типа движков Lyndon Sharp'а. Когда писал свои, вообще не подсматривал в код, но иногда смотрел на форму сигналов в аудиоредакторе и думал, как можно было бы получить что-то похожее. QChan был оригинальной идеей (изначально она в Stocker), т.к. я на тот момент в упор не понимал объяснений AlCo про движок Фоллина и Beep Tracker, но понимал идею ШИМ, до которой додумался сам в конце 90-х (в поделках тех лет у меня была 'громкость' в биперных эффектах). В Tritone чередование из Phaser, а в Phaser, пожалуй да, из Wham, но контроль скважности пришёл в голову самостоятельно, уже не помню, как. В Octode идея тоже возникла спонтанно, в процессе экспериментов, так как я тогда не понимал идею с буфером в ZX-7 и попробовал сделать более тупо. Ну и до биперных движков я написал несколько эмуляторов разных звуковых чипов, пару MOD-плееров, софтовый MIDI-синт с сэмплами и всякое подобное. То есть подходил к теме с несколько другой стороны.
Есть две разных процедуры с очень похожим по коду циклом генерации звука, и собственно звуком. Наиболее явно они отличаются звучанием ударных.
Одна скорее всего впервые появилась в первом Dizzy, 1987 год. Кто её написал — непонятно. Среди авторов, помимо братьев Оливеров, фигурирует Jon Paul Eldridge — может быть он. Далее она регулярно встречается в играх Code Masters, и автор музыки там практически всегда David Whittaker. Возможно, процедура всё же его (и музыка в первом Dizzy), так как известно, что он писал свои плееры. Он на контакт не идёт. Может быть, можно узнать что-то у братьев Оливеров, но они тоже не очень открыты для общения.
Вторую написал Jonathan 'Joffa' Smith. Впервые замечена в 1988 году. Она называется Fuzz Click, но в биперных кругах её часто называют Special FX Engine, так как оригинальное имя долгое время было неизвестно, и она регулярно применялась в играх Special FX, с музыкой Keith Tinman'а (известно, что он писал её вручную в виде текста, но сам программировать не умел). В 1990 её выдернули чехи и сделали редактор Orfeus Music Assembler, там минимальные отличия в наборе ударных. В 2010 версия процедуры из Fire Fly стала первым движком в Beepola. К сожалению, Jonathan умер тогда же, в 2010, и мы не узнали у него, почему такое сходство. Но он говорил на форуме WoS (сообщения утеряны при обновлении форума), что написал движок сам, и не возражал против его использования.
Обе процедуры довольно похожи по устройству на движки Tim Follin'а. Возможно, уши растут оттуда. А может, Jonathan подсмотрел код в Dizzy и сделал аналог по мотивам. А может, в порядке безумной теории, был какой-нибудь древний компьютерный журнал, где рассматривался подобный способ генерации звука, например для Apple II — ведь там тоже был только бипер, и были многоканальные движки, а платформа заметно более старая.
Ещё надо добавить, что у Jonathan'а до Fuzz Click был одноканальный движок Plip Plop, похожий на одноканальный движок Follin'а. Его использовали в куче игр Ocean, а потом, судя по всему, взяли и доработали испанцы из Topo Soft. Испанцы же часто использовали доработанный движок Wham The Music Box. Так что версия с подглядыванием-заимствованием наиболее вероятна, это было в порядке вещей.
Вдогонку. Внезапно обнаружилось, что у Lyndon Sharp'а была ещё одна версия движка, почти как в Mig-29, но другой код и ударные сэмплами. Похоже, что она использовалась только в игре Bubble Dizzy. Добавил поддержку, без изменения номера версии редактора.
Обновил до v0.26. Главное улучшение — значительно ускорен скриптовый ассемблер Z80 (он написан на AngelScript и очень примитивен). Также исправлены некоторые проблемы, включая упомянутый выше экспорт некоторых движков в AY.
Спасибо за репорт, буду разбираться. Сам редактор играет точно тот же самый экспортируемый AY-файл встроенным сторонним AY-плеером, но у формата много косяков, плохая совместимость между плеерами.
Это экспериментальный проект, за пять лет существования набравший активную пользовательскую базу примерно в полтора человека. Главная его цель, помимо обкатки концептуальных фич для других проектов — возможность быстрого обеспечения любых (от ZX до SNES) музыкальных движков 'хоть каким-нибудь' редактором, силами авторов движков (просто пишется скрипт). Вот он и есть 'хоть какой-нибудь'. Не ждите от него многого. Но это немного лучше, чем голый ассемблер или конвертор из XM.
Формат мультитрекера позволяет писать разные фронтенды с любыми наворотами. Мой предельно минималистичен, в нём нет даже поддержки мыши, не говоря о второстепенных фичах. Экспорт в WAV возможно будет, пока в далёких планах. Одна из причин в том, что в редакторе вообще нет кода экспорта, он делается чисто скриптами движков, форматы экспорта каждого движка могут быть произвольными. А экспорт в WAV надо уже делать на стороне фронтенда.
Редактор биперной музыки и прочего чиптюна, сделанный, чтобы было в чём писать для последующего использования на реале. MIDI, WAV, MP3. Как же я люблю комментарии.
Я делал поддержку MIDI во всех других моих редакторах. Хорошо, если ей пользовались 2-3 человека. До сих пор ума не приложу, кому и зачем она вообще понадобилась в трекерах, где нет полифонии в пределах канала записи, но есть жёсткий квантайз или ручное перемещение позиции записи, и необходимость постоянно вводить числовые значения (дёргаться от клавиатуры к клавиатуре).
Электронная пресса для реалов — это классно, но в наше время уже просто необходимо иметь и онлайн-копию текста, чтобы можно было почитать с любого устройства, не имея под рукой эмулятора. Да и вообще, почитать с комфортом для глаз.
На самом деле, отличная идея — вернуться к звуку старых MIDI WT-карт. Есть в нём свой особый шарм, и его легко отличить на слух от всех видов чиптюна и от приставочных сэмплеров эпохи SNES-N64-PS1. Правда, не очень понравилось решение сделать кач на гитарных рифах за счёт сильных скачков громкости, но наверное в установленных рамках ничего лучше и не придумать (если не двигаться в сторону XG). В общем, круто.
Справедливое замечание, демонстрация довольно уныла, да и 3xAY не особо удачная и полезная идея. Но насколько я помню, этот трек был сделан в староглиняные времена, когда ещё не набрал популярность TurboSound, и не было никаких многочиповых редакторов.
По ссылке не увидел ни слова про соревнование, места, голосования, и всё такое. Зато ограничения по длине кода и очень сжатые сроки. Непонятно, в чём тогда мотивация?
У SMD достаточно видеопамяти, чтобы заполнить весь экран уникальными тайлами, получив 16-цветный растр с уникальными точками. Так что да, в принципе можно. Проблема в том, что прямого доступа к видеопамяти у процессора нет (порт с автоинкрементом), и доступ через видеоконтроллер или DMA возможен только во время обратного хода луча. Значит надо рисовать в буфере в ОЗУ, причём довольно неудобно организованном (в формате графики тайлов), потом пересылать его в видеопамять. Но пропихнуть туда за один кадр можно около 7 килобайт, а растр 320x224x4 занимает 35 килобайт. То есть на полное обновление экрана надо 7 кадров. Отсюда главная заморочка с быстрой 3D графикой — как уменьшить объём пересылок. Никакими внешними сопроцессорами и железом в этой ситуации не помочь, видеосистема закрыта от внешнего мира, остаётся только урезать размер области отображения, пытаться заполнять одноцветные тайлы изменением карты тайлов, или делать ещё более хитроумные системы обновления, в которых места тайлов на экране постоянно меняются.
С основной мыслью, от расшифровки 'компо', согласен.
Идея с управлением реальным спикером через VSTi отличная. Я тоже об этом думал. Но есть проблема, в современных Windows (7 и выше, наверное) Beep вместо реального спикера играет синусоиду из колонок.
Я думаю, в журналах типа archive.org/details/micromagazine было что-то такое. Сам его ещё не копал.
Шаговые секвенсоры на ZX были в довольно большом количестве в 1985-86 годах, но никакой информации о применении их для игр нет, а сами они MIA. Музыканты тех лет обычно говорят — наигрывал на дешёвом синте, потом набирал в коде.
Касательно редактора. Я не знаю насчёт этого движка в варианте 'от Code Masters' (про Special FX явно говорилось, что редактора не было). Whittaker пришёл с C64, и рано сел на Amiga, а трекеры первым делом появились там, так что в принципе мог сделать свой редактор. С другой стороны, пишут, что он любил копипастить свою музыку, и причина — что писал вручную в коде. Возможно, его подход менялся со временем.
Но вообще, по разным платформам, большинство игровых музыкантов до расцвета трекеров, да и после него, писали вручную. Ближе к началу 90-х некоторые конвертили MIDI или трекерную музыку с Amiga, и очень немногие делали свои редакторы. Навскидку помню только один пример — Alberto Gonzalez сделал себе личный трекер на ZX, и писал на нём под разные платформы, в том числе NES и GB/GBA, но с ручной доработкой. Вообще, сама концепция музыкального редактора, где что-то можно набирать-рисовать визуально, а не записывать живую игру, в 80-е была нетривиальна, люди просто не думали, что это нужно. Большинство MIDI-секвенсоров того времени только записывали ноты, не показывая ничего на экране. А японцы, похоже, не осиливали концепцию редакторов до середины 90-х, писали всё на MML или в коде, и только на PS1 начали использовать MIDI. Трекеры же у них почти не взлетели, до сих пор не в ходу. Но у них было разделение труда, музыку часто сочиняли люди с музыкальным образованием, но не программисты, а писали плееры и набирали код программисты, но не музыканты. В Европе же типично были универсалы 'программист-музыкант'.
Информация о том, кто как чего делал, есть в старых журналах, новых интервью и мемуарах. Например, если не для ZX — www.nesworld.com/content.php?data=interviews, dutycyclegenerator.com/. В целом, до середины 80-х типичной была разработка на бумаге, в том числе рисование спрайтов и экранов на листах в клеточку. Так делались даже Super Mario Bros и Legend of Zelda. А уже в середине 80-х общим трендом среди профи, в том числе на ZX, стало использование для разработки других, более удобных и мощных компьютеров. Хотя бы даже Amstrad CPC, или часто упоминаемый Tatung Einstein (хорошая клавиатура, CP/M-совместимая система и дисководы). Для графики часто использовали Atari ST и Amiga, с местными редакторами. И как только PC поднялся с 8086-ых колен, основной платформой для разработки стал он.
Про линии заимствования касательно моих движков — а вот мимо. Я всегда очень не любил ковырять чужой код, не из принципа, а просто не хватало ума. Только в последнее время осилил до конца разбирать небольшие чужие процедуры типа движков Lyndon Sharp'а. Когда писал свои, вообще не подсматривал в код, но иногда смотрел на форму сигналов в аудиоредакторе и думал, как можно было бы получить что-то похожее. QChan был оригинальной идеей (изначально она в Stocker), т.к. я на тот момент в упор не понимал объяснений AlCo про движок Фоллина и Beep Tracker, но понимал идею ШИМ, до которой додумался сам в конце 90-х (в поделках тех лет у меня была 'громкость' в биперных эффектах). В Tritone чередование из Phaser, а в Phaser, пожалуй да, из Wham, но контроль скважности пришёл в голову самостоятельно, уже не помню, как. В Octode идея тоже возникла спонтанно, в процессе экспериментов, так как я тогда не понимал идею с буфером в ZX-7 и попробовал сделать более тупо. Ну и до биперных движков я написал несколько эмуляторов разных звуковых чипов, пару MOD-плееров, софтовый MIDI-синт с сэмплами и всякое подобное. То есть подходил к теме с несколько другой стороны.
Одна скорее всего впервые появилась в первом Dizzy, 1987 год. Кто её написал — непонятно. Среди авторов, помимо братьев Оливеров, фигурирует Jon Paul Eldridge — может быть он. Далее она регулярно встречается в играх Code Masters, и автор музыки там практически всегда David Whittaker. Возможно, процедура всё же его (и музыка в первом Dizzy), так как известно, что он писал свои плееры. Он на контакт не идёт. Может быть, можно узнать что-то у братьев Оливеров, но они тоже не очень открыты для общения.
Вторую написал Jonathan 'Joffa' Smith. Впервые замечена в 1988 году. Она называется Fuzz Click, но в биперных кругах её часто называют Special FX Engine, так как оригинальное имя долгое время было неизвестно, и она регулярно применялась в играх Special FX, с музыкой Keith Tinman'а (известно, что он писал её вручную в виде текста, но сам программировать не умел). В 1990 её выдернули чехи и сделали редактор Orfeus Music Assembler, там минимальные отличия в наборе ударных. В 2010 версия процедуры из Fire Fly стала первым движком в Beepola. К сожалению, Jonathan умер тогда же, в 2010, и мы не узнали у него, почему такое сходство. Но он говорил на форуме WoS (сообщения утеряны при обновлении форума), что написал движок сам, и не возражал против его использования.
Обе процедуры довольно похожи по устройству на движки Tim Follin'а. Возможно, уши растут оттуда. А может, Jonathan подсмотрел код в Dizzy и сделал аналог по мотивам. А может, в порядке безумной теории, был какой-нибудь древний компьютерный журнал, где рассматривался подобный способ генерации звука, например для Apple II — ведь там тоже был только бипер, и были многоканальные движки, а платформа заметно более старая.
Ещё надо добавить, что у Jonathan'а до Fuzz Click был одноканальный движок Plip Plop, похожий на одноканальный движок Follin'а. Его использовали в куче игр Ocean, а потом, судя по всему, взяли и доработали испанцы из Topo Soft. Испанцы же часто использовали доработанный движок Wham The Music Box. Так что версия с подглядыванием-заимствованием наиболее вероятна, это было в порядке вещей.
Формат мультитрекера позволяет писать разные фронтенды с любыми наворотами. Мой предельно минималистичен, в нём нет даже поддержки мыши, не говоря о второстепенных фичах. Экспорт в WAV возможно будет, пока в далёких планах. Одна из причин в том, что в редакторе вообще нет кода экспорта, он делается чисто скриптами движков, форматы экспорта каждого движка могут быть произвольными. А экспорт в WAV надо уже делать на стороне фронтенда.
Электронная пресса для реалов — это классно, но в наше время уже просто необходимо иметь и онлайн-копию текста, чтобы можно было почитать с любого устройства, не имея под рукой эмулятора. Да и вообще, почитать с комфортом для глаз.