bestm80eva / unrealspeccyp

Automatically exported from code.google.com/p/unrealspeccyp
0 stars 0 forks source link

Sound mixer bug #75

Closed GoogleCodeExporter closed 8 years ago

GoogleCodeExporter commented 8 years ago
В некоторых случаях хрипит звук при 
наложении AY+Beep. Это наложение (хрипы) хорошо 
заметно на слух в играх Dizzy 4 и The Untouchables.
В редких случаях хрипит просто AY без Beep/Tape 
(с кодом воспроизведения только AY без 
микшера хрипов нет - сам проверял). Это 
очень хорошо слышно в игре Tetris 2 если в 
главном меню включить AY-музыку.

Original issue reported on code.google.com by volga...@gmail.com on 26 Nov 2012 at 7:07

GoogleCodeExporter commented 8 years ago
Кажется я разобрался в этой проблеме.

Сдается мне, что в "sound_mixer.cpp" в строках "*p++ = 
(*s0++) + (*s1++) + (*s2++);" возникает элементарное 
переполнение.

В Tetris 2 это заметно потому, что 
соответствующий бит бипера там установлен 
в 1 и получается, что к максимальной 
громкости AY (по дефолту 32767) добавляется 
значение spk_vol (по дефолту = 8192), что и 
вызывает закономерное переполнение 
знакового int'а => слышимые хрипы и щелчки.

Если приглушить бипер (spk_vol в "beeper.cpp") и/или AY 
(ay->SetVolumes()) чтобы суммарная громкость не 
привышала 32767, то хрипы пропадают! Еще на 
это теоретически может Tape влиять (с ним я 
вообще не разбирался), так что его тоже 
необходимо учитывать чтобы не было 
переполнения.

Original comment by volga...@gmail.com on 26 Nov 2012 at 9:50

GoogleCodeExporter commented 8 years ago
Нашел время опять вернутся к данному 
вопросу.
Пофиксить переполнение в "sound_mixer.cpp" можно 
так (см diff в аттаче).
Частоты за пределами допустимых просто 
обрезаются. На слух эта обрезка не заметна 
и щелчков/хрипов больше нет.
Считать сумму частот пришлось в short - 
отдельно для левого/правого канала. Код 
получается правда значительно тормознее, 
но моя динга и так все тянет (а Андроид имхо 
тем более должен потянуть), и не надо 
уменьшать громкость саунддевайсов.
Просьба включить этот diff в репозиторий, а 
также включить микширование звука на динге 
(опцию выбора саунддевайса имхо лучше 
вообще убрать). На освободившуюся кнопку 
"правый шифт" повесьте плз паузу. И будет 
все круто.

Original comment by volga...@gmail.com on 28 Nov 2012 at 10:14

Attachments:

GoogleCodeExporter commented 8 years ago
Привет :) обязательно все прикрутим, только 
.rzx доделаем...

Original comment by djd...@gmail.com on 29 Nov 2012 at 6:58

GoogleCodeExporter commented 8 years ago
Да, rzx - это супер. Я накачал с www.rzxarchive.co.uk 
файликов и смотрю как мультики. :)
Багрепорты на эту тему нужны (когда в игре 
что-то идет не так)?

Original comment by volga...@gmail.com on 30 Nov 2012 at 5:22

GoogleCodeExporter commented 8 years ago
А ты собирал версию с новым .rom-ом?)
Пока еще тестирую и вылавливаю 
рассинхронизацию...

Original comment by djd...@gmail.com on 30 Nov 2012 at 10:43

GoogleCodeExporter commented 8 years ago
Вроде бы да - я скомпилил под дингу 
последнюю версию с репозитория (плюс мои 
патчи для микшера).
Надеюсь в андроид-версии будет функция 
онлайн загрузки rzx?

Original comment by volga...@gmail.com on 1 Dec 2012 at 6:45

GoogleCodeExporter commented 8 years ago
угу)

Original comment by djd...@gmail.com on 1 Dec 2012 at 11:28

GoogleCodeExporter commented 8 years ago
Когда этот баг пофиксите?

Original comment by volga...@gmail.com on 11 Mar 2013 at 3:31

GoogleCodeExporter commented 8 years ago
Сейчас посмотрим...

Original comment by djd...@gmail.com on 11 Mar 2013 at 7:44

GoogleCodeExporter commented 8 years ago
Странно - послушал dizzy 4, untouchables the, tetris 2 - 
щелчков не услышал %) а есть возможность 
протестить на другом девайсе?

Original comment by djd...@gmail.com on 11 Mar 2013 at 8:19

GoogleCodeExporter commented 8 years ago
Я сей глюк слышу на телефоне LG Optimus One P500, на 
планшете Samsung Galaxy Tab 7.0+ P6200, и на Dingoo A320 (под 
дингу я собрал версию со своим патчем и 
стало нормально). Особенно хорошо заметно в 
наушниках. Попробуй загрузить Tetris 2 и в меню 
нажать 4 (включить AY-музыку) - в мелодии 
будут временами слышны хрипы.
Там реально переполнение в микшере 
возникает.

Original comment by volga...@gmail.com on 12 Mar 2013 at 6:13

GoogleCodeExporter commented 8 years ago
Да я понял, что переполнение есть. Вопрос в 
том, почему я его не слышу. Ведь там треск 
должен быть нереальный. Плюс если там сразу 
2 канала одним сложением складываются, и 
возникает переполнение, оно должно с 
левого на правый перекидывать треск и 
наоборот.

Original comment by djd...@gmail.com on 12 Mar 2013 at 8:50

GoogleCodeExporter commented 8 years ago
Я понял почему ты треск не слышишь! 
Послушай в режиме mono AY. В стерео 
действительно треска нет. Сорри, что не 
сообразил сразу сказать про моно.

Original comment by volga...@gmail.com on 12 Mar 2013 at 11:41

GoogleCodeExporter commented 8 years ago
О, теперь слышу))

Original comment by djd...@gmail.com on 12 Mar 2013 at 1:18

GoogleCodeExporter commented 8 years ago
пофиксил нормализацией громкости в режиме 
моно (оно было громче, чем в других режимах)
http://code.google.com/p/unrealspeccyp/issues/detail?id=48#c21

Original comment by djd...@gmail.com on 12 Mar 2013 at 11:06

GoogleCodeExporter commented 8 years ago
Отлично! Спасибо!

Original comment by volga...@gmail.com on 13 Mar 2013 at 4:58

GoogleCodeExporter commented 8 years ago

Original comment by djd...@gmail.com on 14 Mar 2013 at 4:35