Page 1 of 1

Немного о Beeper

PostPosted: 12 May 2009, 16:01
by Doronetty
Давно хотел сказать, но всё как-то забывал. Есть одна игра (может это и ещё где-то встречается, но не встечал) - Galaxian, звук бипера в которой эмулируется почти всеми известными эмуляторами (и Unreal не исключение) неправильно: это происходит при выборе уровня или между попытками - в эмуляторах звучит один звук, а в реале - два (если не ошибаюсь увеличенная кварта). Единственный эмулятор, который корректно воспроизводил эти звуки, был ДОСовский R80 (ксатати, он хорошо работает под DosBox, так что можно послушать).
Отсюда вопрос: можно ли в Unreal'е сделать корректный звук? У меня даже где-то исходники звука от R80 валялись, если надо happy

Re: Немного о Beeper

PostPosted: 12 May 2009, 17:07
by deathsoft
Унриал эмулирует звук потактово с одного бита порта FE, т.ч. эмуляция вполне точная, если игра использует 2 бита, то вот и причина другого звучания, на скорпионе например на выход бипера подключены 2 бита, собственно бипер и выход магнитофона через резисторы с разным весом.

Но это на столько минорная проблема, что ее вес при фиксе остальных багов будет минимальный. Есть куда более существенные баги.

Можно кстати посмотреть что игра выводит в порт ФЕ и сколько бит там меняется (в унриале поставить брекпоинт на порт ФЕ). Если все дело в 2х битах - то это легко эмулируется.

Re: Немного о Beeper

PostPosted: 12 May 2009, 18:09
by Black_Cat
deathsoft wrote:если игра использует 2 бита, то вот и причина другого звучания

Действительно, в оригинальных Спектрумах выход бипера имеет 4 уровня амплитуды, но два дополнительных уровня амплитуды отличаются очень незначительно от уровней определяемых битом D4. Сомнительно, что это можно услышать просто так, тем более через внутренний спикер, который к тому же из-за порога открытия транзистора делает невозможным различие нижних двух уровней амплитуды. Т.е. внутренний спикер оригинального Спектрума может воспроизводить только три градации амлитуды сигнала, при том второй голос, определяемый битом D3 имеет раз в 20-30 меньшую амплитуду и сомнительно что его так уж хорошо слышно через спикер. Скорее всего дело в том, что эмуляторов, делающих правильное смешения по амплитуде D3 И D4 просто не существует. Среди отечественных компьютеров тоже нет ни одного, который делает это смешение правильно, поэтому если сделать точную эмуляцию амплитуды, то полученный сигнал ты скорее всего не узнаешь, т.к. он будет отличаться от того, к которому ты привык. Т.е. суть в том, что ты привык к неправильному сигналу. Компромиссным решением может быть вариант, реализованный в компьютере Феникс, где D3 даёт половинную амплитуду от D4, образуя 2х битый линейный ЦАП. Вопрос токо будет ли deathsoft этим заморачиваться.

Re: Немного о Beeper

PostPosted: 12 May 2009, 19:57
by нолька
нафлудили тут.. вопрос шел про конкретную игрушку, вот конкретно по ней и надо копать.

Re: Немного о Beeper

PostPosted: 12 May 2009, 22:23
by deathsoft
Посмомтрел я galaxian. Под унриалом звук пик, под r80 пик-пик-пик. Частота звука везде одинаковая. Все отличия только в том что в r80 фрагмент проигрывается 3 раза.

Для генерации звука используется следующий код (1 бит):
Code: Select all
ld a,(bc)
xor 10
out (fe),a
ld (bc),a


Посмотрел, в r80 3 писка просто из за тормозов с клавиатурой, т.е. это 3 писка уже после начала уровня. А не на выборе уровня.

Re: Немного о Beeper

PostPosted: 12 May 2009, 23:12
by deathsoft
Doronetty wrote:Отсюда вопрос: можно ли в Unreal'е сделать корректный звук? У меня даже где-то исходники звука от R80 валялись, если надо

Приаттач wav файл с реала, посмотрю чем там звук отличается от унриаловского.

Re: Немного о Beeper

PostPosted: 06 Oct 2009, 13:40
by Doronetty
Немного задержался с ответом biggrin
Ввиду отсутствия рабочего реала кидал реквест в говнофорум, чтобы помогли оцифровать звуки с бипера. В итоге так никто и не помог sad
Посему выкладываю оцифровку с R80 (поверьте на слово, на реальном 48 всё звучало именно так) и для сравнения что выдаёт Unreal. Звуковысотность отличается, но это скорее всего разница в таймингах.

Re: Немного о Beeper

PostPosted: 06 Oct 2009, 15:54
by deathsoft
Ну я могу проверит на реальном ленинград 1 - 48к. Думаю разницы не будет никакой ибо все совковые (распространенные) клоны без тормозной памяти и звук везде будет такойже как в унриале. В R80 я смотрел и вриал спектруме - и вроде даже картинки выкладывал сюда.

Построю график из аттча и из униала для сравнения.

Re: Немного о Beeper

PostPosted: 11 Oct 2009, 18:13
by deathsoft
Собственно вот звук записаный из этой игры на реальном ленинграде-1 мною.
оцифровка 192кгц, float32 для прослушивания можно сконвертировать в любой доступный для звуковой карты формат. Просматривать в редакторе audacity (http://audacity.sourceforge.net/) (или в любом другом понимающием такой формат)
galaxians-sound.rar

Посмотрел что в приаттаченых wav файлах от унриала и R80 - в R80 на прямоугольных импльсах наблюдается "паразитная" широтно импульсная модуляция, которая обусловлена "медленной" памятью фирменного спектрума, в унриаэе и в отечественных клонах "медленной" памяти нету в принципе, поэтому и звук другой - полностью соответствует коду по его генерации.