Как стать автором
Обновить

Комментарии 29

Спасибо за шикарную хабратортную статью! Я и не думал, что на сеге возможно проигрывать звук, и не понимал почему нет диалогов и используется только MIDI.

У меня возник вопрос, по теме увеличения частоты дискретизации: почему нельзя было использовать интерполяцию? Линейную, кубическую, сплайнами Акимы? Хотя скользящее среднее - это хороший фильтр.

Любой алгоритм интерполяции требует хотя бы операции умножения. Операция умножения на процессоре M68000 очень медленная и может занимать разное количество тактов в зависимости от умножаемых чисел. Она настолько тормозная, что одна эта команда может выполняться дольше одного цикла декодера. Классические алгоритмы интерполяции не реализовать. Существуют специальные методы интерполяции, использующие предвычисленные таблицы. Но они содержат множество операций, и скорости процессора не хватит чтобы в паузе между сэмплами частотой 22 кГц успеть рассчитать новую точку.

А про линейную интерполяцию и среднее написано в статье:

Линейная интерполяция, конечно, не сильно помогла.

Резкие перепады сигнала линейная интерполяция не сглаживает, звук почти не отличается от исходного.

добавил бегущее среднее в 3 строчки

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

Операция умножения на процессоре M68000 очень медленная и может занимать разное количество тактов в зависимости от умножаемых чисел.

Обожаю старое железо, которое позволяет пошерстеть мозгом. Великолепные высокотехнологические ребусы.

Атмега :) Там ещё и практический выхлоп есть :)

А вообще я всё ещё мечтаю об идеальном 4-битном MCU с кэшем-стеком и ручной выборкой строк флэша и DRAM, чтобы можно было оптимизировать до последнего транзистора/такта даже эту, обычно прозрачную, сторону вопроса :)

Заранее послать RAS, посчитать пока что-то в стеке (он же SRAM-кэш), пройтись CAS'ами по тому, что прочиталось, зарефрешить всё это обратно, послать ещё один RAS…

А если DRAM ещё и троичная (можно зарядить в одну или другую сторону), то нужно два чтения CAS (для положительных и отрицательных зарядов) и два рефреша, а потом софтово разбираться в полученном :) Но возможность такой DRAM пока под вопросом — изоляция в микрухах в основном сделана по принципу «p-n переход, повёрнутый своей „закрытой“ стороной», я немного заказные микрухи делал по молодости :) Такое «задом наперёд» фиг зарядишь :) А жаль, можно было бы ещё больше выжать из каждого ключа!

Как-то слишком сложно даже для меня, но я вот курю документацию на четырёхбитный микроконтроллер тетриса . На хабре было много статей по теме его реверса. Недостаток только один: нет sdk и он масочный, но уже есть эмуляторы ;)

Только не midi, а FM (YM2612) каналы. Если под диалогами имеются ввиду озвучки с использованием pcm канала (который заменяет FM6), это есть чуть ли не в каждой второй игре (dune, rrr, vectorman). Обычно качество 10,4 Кгц. В MK3 и UMK3 6,5 Кгц c 4-bit дельта сжатием. В другой половине игр, в которых 'озвучки' нет, pcm канал всё равно используется для сэмплов ударных (kick, snare, tom и т.д.) и звуков, которые сложно сделать используя FM или PSG. Так что стандартная конфигурация - это 5xFM+1xPCM+3xPSG. А вот PSG каналы как раз не все игры используют. Например , Contra Hard Corps не использует, но при этом она программно микширует до 3 pcm, то есть выходит 5xFM+3xPCM (8,7 Кгц). И это всё работает (как правило) только на процессоре z80, без участия основного процессора mc68000.

Спасибо за ответ. Я вообще не в теме, и половина того что вы написали для меня непонятно. Не то чтобы я не занимался звуком (демку для Микроши делал), но так глубоко не копал.

Аплодирую стоя.

Как было бы шикарно в какой-нибудь аркаде поймать стоп-кадр и услышать по «рации» вот таким вот голосом указания на следующий этап ^______^ Иногда мне кажется, что железо развивалось слишком быстро %) Так много упустили %)

На сеге было много игр с PCM голосом, одна из самых запомнившихся - Rock n Roll Racing с очень харизматичным голосом комментирующим происходящее в гонке.

Ларри там был великолепен.

Тут ещё не раскрыт огромный, но очень интересный пласт, который может потянуть несколько статей: это вообще архитектура приставки Sega, особенности разработки под неё. Какие кросскомпиляторы, как записывать Rom на приставку, как сделать свой хелло ворд и т.п. Ах, ассемблер, это же так круто.

В идеале бы еще зацепить и другие платформы тех лет, например, PSX. Там тоже было много чего интересного. До сих пор вспоминаю с содроганием "reverse engineering" (96-97 года) с возможностью проверить гипотезу только записав образ на болванку. Для записи, помню, можно было использовать только резак "Teac" за штукарь зеленых и болванки проигрывались только обычные (без перезаписи). Потом, с годами, стало все просто и понятно, но первые годы,... Ж)

На Genesis на ассемблере сейчас пишет полтора человека. Для 68K есть вполне нормальный GCC, которым в основном и пользуются.

Напомнило, как дофига лет назад мне попался .mod, в котором было NN сэмплов из Mo-Do - Eins Zwei Polizei и с их помощью реконструировали всю песню. Размер не помню, но с учётом того, что принесли на 5-дюймовой дискетке несколько .mod — вряд ли мегабайт :-)

Кстати, да. Ваш комментарий напомнил мне, что я забыл написать что-либо про трекерную музыку. Sega - это отличная консоль для прослушивания трекерной музыки и когда-нибудь появится возможность запускать большинство существующих композиций на ней.

Интересно было бы сделать некоторый плеер на базе консоли. Это забавная идея, надо сделать только на контроллере возможность доступа к файлам. Другое дело, какая скорость мапинга там требуется?

Нонче, правда. весьма шустрые МК есть за 200 рублей, так что успеют мапить.

Существуют разные варианты насилия над Сегой, мне кажется неспортивным расширение девайсами, которые нельзя было бы купить в 90х. Интересно жить в понятных рамках. А контроллеры, FPGA, это всё превращает сегу в терминал и она исчезает как бы.

Я искренне разделяю эти чувства. Но в таком случае надо отказываться от эмуляторов и универсальных картриджей. Ведь эти картриджи содержат контроллер.

Тут интерес чуточку иной, мы же вместе понимаем что задействуем железо именно сеги для этих целей, а реализацию переноса файлов на устройство удобно и в стиле "тех лет" не знаю как реализовать, так чтобы это было просто и доступно. Не дискетку же городить?

Универсальный картридж переливает образ в ПЗУ, и остаётся за кадром, система работает без изменений. А читать музыкальные треки с внешнего устройства это уже вызывает вопросы. Подобное устройство могло тогда существовать, но было бы оно у 80% владельцев приставки? Наверное это уже личный выбор, удобство против каноничности. С другой стороны в старших моделях универсальных картриджей более высокие лимиты(~32мб) на размер ROM, может и не надо ничего придумывать

Ну можно архитектурно что-то такое и придумать, чтобы не было мучительно больно :)

хехе

Какой стильный комбайн :) Я бы купил

Роботы сгенерили сей прекрасный образ?

Спасибо, точно!
Нашел на авито похожее.

Не знал.

Вот так выглядит относительно недавний плеер .mod файлов для Megadrive (4 канала, 26.4КГц). Там, конечно, просто ROM, без доступа к файлам. Вообще флеш-картриджи по идее дают шариться по SD, но куда читать?

А вот так, например, звучит тот же самый Tom's Diner, только 13 лет назад и на Commodore 64 (64К RAM, мегагерц тактовой, а DAC, строго говоря, вообще отсутствует). Ещё и со спецэффектами сверху)

И напоследок кластерный поиск, которым невозможно, но если очень хочется, то можно. Пациент тот же.

Характер звучания получается интересный: лёгкий цифровой перегруз (усреднение периодов работает как компрессор) и артефакты, похожие на погрешности плёночных носителей

В качестве демки просится это:

Тут уж если пилить такую демку, то надо полноценную делать, типа такой.

А тут уже и писиспикер более-менее справляется.

Без Bad Apple не считается! :)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий