Inspired by #tsohnz
У меня тут короче ностальгия. 13 лет назад я писал под dos какую-то ОХУИТЕЛЬНУЮ ИГРУ на турбопасцале, что-то там с летающими по экрану фигурами, не суть важно. И вот, спустя полгода, когда у меня наконец-то появилась звуковая карта, я захотел сделать yoba-озвучку к ней, вестимо. Для этого начал ебать всех вокруг на тему "где мне раздобыть учебник по программированию звуковой карты?!". Все посылали этого малолетнего уебана нахуй, конечно, но потом я настолько доебал соседа, что он у себя в офисе спросил у программиста, и тот записал ему на дискету какой-то мануал.
Мануал был охуительным переводом из какого-то буржуйского езина, видимо — до сих пор помню, что семплы там назывались кусочками, частота дискретизации, соответственно, кусочной частотой, и тд. Я на радостях взялся его читать и пытаться реализовать описанное там.
Под dos было два способа программировать sb-совместимую карту — правильный (через dma) и для лохов (напрямую, когда для проигрывания каждого следующего куска дергалось irq). Первый был отброшен почти сразу — про каналы dma я услышал оттуда впервые, испугался и забил, тем более еще одного сеанса ебли на тему "дайте мне учебник по программированию dma" окружающий социум мог не пережить. Или я, что вероятнее. Второй же способ был чуть проще — перехватывать прерывания я тогда уже умел, даже пару резидентных софтин на ассемблере написать успел, потому с энтузиазмом взялся за работу. До сих пор помню, что для сброса карты нужно захуярить с небольшим интервалом единицу и ноль в порт 0x226, эх.
Конечно же, мой выстраданный модуль в итоге так и не заработал. Лет в 15 я случайно наткнулся на тот код и нашел как минимум одну ошибку — в обработчике irq я не посылал контроллеру сигнал о завершении прерывания. Ну а тогда я погрустил, попробовал еще раз и временно забил.
Но выход был найден — среди куч всякого хлама я обнаружил охуительную программу play_voc.exe, которая умела, очевидно, проигрывать файлы типа .voc. Я даже смог надергать этих файлов из какой-то игры (dark forces, кажется), радостно захуярил вызов этой play_voc в свою игрушку, и все было отлично...
На самом деле нет. Было три проблемы. Во-первых, поскольку это был дос, запуск сторонней софтины происходил синхронно — моя игра блочилась, пока звук не проиграет до конца. Во-вторых, я не мог проиграть два звука одновременно. В-третьих, play_voc завершала проигрывание при нажатии любой клавиши, что было плохо для моей игры.
Первую проблему я попытался худо-бедно решить, перехватив прерывание таймера, и что-то полезное делая в обработчике. Но тут была подстава — ебучий play_voc тоже зачем-то его перехватывал несовместимым со мной образом, потому пришлось смириться и рассматривать синхронность как фичу.
Вторую проблему мой пытливый детский ум решил быстрее. Проиграть несколько звуков? Нет ничего проще! Нужно просто записать все возможные комбинации в отдельные файлы, и проигрывать уже их! Программы для слияния двух звуков у меня не было, как вы уже наверняка догадались. Пришлось писать ее самому. Описание формата .voc у меня было, к счастью, а вот описания алгоритма слияния не было. Но в один дождливый осенний вечер, выпив с пацанами на районе пива, я подумал "нет ничего проще: нужно просто побайтно просуммировать звуковые данные двух файлов!". Пришел домой, попробовал — работает! Звуки были восьмибитными, потому сплошь и рядом случалось переполнение (про нормализацию я тогда не слышал, конечно), но в целом все было очень круто, я собой даже гордился.
Осталась только одна проблема — ненужная остановка проигрывания при нажатии клавиши. После всех предыдущих приключений я даже не посчитал это проблемой, просто отключил обработчик прерывания от клавиатуры на время выполнения play_voc. И получилась она, озвучка моей мечты!
Так вот, к чем у я написал все это. Каждый раз, когда я вижу охуительное дизайнерское решение кутима вроде вот этого, или рекурсивной загрузки плагинов, или еще чего-то подобного — первым порывом руки тянутся написать им все, что о них думаю. Но потом я вспоминаю про свой охуительный дизайн. Думаю "постой, не ругай их, ты ведь сам был таким в 11-12 лет". И желание обосрать куда-то уходит, вытесненное светлой ностальгией. Действительно, нет ведь ничего хорошего в том, чтобы обижать детей.
Cthulhu
21.02.2013 18:35 Miranda
Do you really want to delete ?
понравилось.
тоже был таким же дебилом.
ну и остался, только другим.
все кто выше — умны и проницательны
обижать детей это модно
блять
где срач, ктулху уже не торт
Так не будет тут срача, ца нулевая же. Кутимочеловеки все равно не придут сюда.
паасибки!1111
а я думал тут будут тереть за АРХИТЕКТУРУ
Сколько чсв-то. По-моему, «взрослые» люди не должны заниматься самовосхвалением.
а как иначе получить холошую залплату если не понтоваться?
теплый ламповый псто.
Ппц ты кагами мудила ебаная.
не пали плиз, неудачник
быть дедфудом, очевидно
#tsohef/6
Почему же. Я стал невероятно охуенным, в сравнении с разработчиками кутима. Почему бы не похвастаться этим?!
У меня весьма средняя зарплата, Пётр. Потому что я ленивый малоамбициозный хуй, предпочитающий деньгам интересность проекта.
Вон пацаны говорят что это чсв-пост, хотя я не могу понять почему. Пичаль (
ъ пацаны до сих пор даже не прочитали (как я)
отсутствие понта это понт более высокого левела)
Все правильно сделал же
в первых буквах послание
мессидж
но ведь разработчики кутима – опущенцы, не стоит оценивать себя по ним!
модные стартапы руби хайлоад
я всё равно завидую
работа в киеве дружная команда