Page 6 of 7

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 02:46
by Grey
отправил тесты в личку , но уже и сам проверил - вроде все нормально.
Спецкоманлы в плеере ещё не раелизованы, поэтому ноты лажают, но звук во всех 8 канала есть

https://cloud.mail.ru/public/AZgd/jHYbPbW8p

'эмулятор использовать этот https://dlcorp.nedopc.com/viewtopic.php?p=38826#p38826

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 18:42
by deathsoft
Круто, и музон прикольный из демки unreal2/second reality.
Только както непонятно в эмуляторе индикаторы громкости каналов работают, как будто какойто рандом показывают (те которые вверху слева).

PS. Налажал я там вчера с копипастом, каналы мапятся неверно:
Code: Select all
  // ngs 8ch
  if(ngs_cfg0 & M_8CHANS)
  {
      l += gs_v[4] + gs_v[5];
      l += gs_v[6] + gs_v[7]; <=====
  }

Все суммируется в левый канал, а вторая строчка должна быть в правый.

Перезалил пофикшенный эмуль в тот же пост.

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 22:12
by Grey
обновление https://cloud.mail.ru/public/7CK4/waB5xtTac

ещё https://cloud.mail.ru/public/Ek5Z/2jZvxvsXc

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

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 22:28
by Grey
deathsoft wrote:Все суммируется в левый канал

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

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 23:03
by deathsoft
Grey wrote:В настройках эмулятора на максимум и все равно намного тише всех остальных звуков в винде,

Это потому что общая громкость 16бит поделена на целую кучу источников звука (там в ини файле задаются максимальные громкости каждого источника)
типа такого (если у остальных источников поставить громкость 0, то думаю можно для GS поставить чтото типа 65000):
GSVol=8000 ; general sound (for both high- and low- level emulation modes)

Исправил тут рисование статистики (рисовалась полная ахинея, мгновенные значения которые брались 1 раз вкадр, статистика обнулялась при каждой записи в ЦАП, а должна была обнуляться только после вывода статистики (1 раз в кадр)). При этом обнаружил, что s3m_2 использует не полный диапазон громкости, вместо 0-255, использует только 0-127, регистры громкости выставляются на полную 63, а вот сами выводимые байты в ЦАПы видимо никогда полный диапазон не получают, потому что после деления суммы байтов в канале на число выводов в ЦАП больше 127 не получается.

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 23:13
by Grey
я не понял, это в эмлуторе так или в памяти №6000-7fff буфер подготовлен уже с заниженной громокостью ? У меня там программно до 3 унможений громкости может быть, но для s3m 2 - глобальная 0-64 умноженная на громоксть канала 0-63 , но вроде трассировал, там нормально умножается

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 23:15
by deathsoft
Вот версия с отладочной печатью громкости (печатает в консоль в виде горизонтальных столбиков и в начале пишет значение громкости приведенное к диапазону 0-15, на s3m больше 7 не выводит).

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 23:16
by deathsoft
Grey wrote:я не понял, это в эмлуторе так или в памяти №6000-7fff буфер подготовлен уже с заниженной громокостью ?

Это я смотрю то что приходит в ЦАП (видимо да, байты из памяти). Байты то в буфере должны быть от 0 до 255, а по статистике за несколько кадров получается что там 0-127, иначе бы результирующая громкость на графиках была бы не 7 а 15.

Сейчас статистика подсчитывается так:
Code: Select all
   for (int ch = 0; ch < 8; ch++)
   {
      gsleds[ch].level = (led_gssum[ch] * gsvol[ch]) / (led_gscnt[ch]*((255*63)/15)+1);
      gsleds[ch].attrib = 0x0F;
   }

led_gssum - сумма выводимых байтов
led_gscnt - число выводов в ЦАП
gsvol - громкость канала
255 - максимальное значение байта (соответствует единице)
63 - максимальное значение громкости (соответствует единице)
15 - максимальное значение приведенной громкости (соответствует единице) (результаты приводятся к показометру для AY у которого диапазон 0-15).
1 - хак чтобы не было деления на ноль

Обнуление статистики делается раз в кадр (после вывода на экран).

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 23:23
by deathsoft
Для проверки того что в буфере надо сделать тестовый s3m в котором во всех каналах будет звук с максимальной громкостью, и посмотреть что выводят показометры статистики, должны выводить 15.

Кроме того надо учесть что (цитата из доки про 8 каналов):
Внимание! В 8-канальном режиме относительная громкость отдельно взятого канала в 2
раза меньше, чем в 4-канальном.


Т.е. сейчас громкость получается в 4 раза ниже.

Re: Есть задачи для программистов для НГС

PostPosted: 07 Oct 2018, 23:42
by deathsoft
Вообще странно, запустил игры для GS, там проигрыввание mod и эффектов тоже громкости больше 7 не дает, возможно гдето в эмуляторе статистика неверно считается.