Новая версия Unreal Speccy

emulators

Postby deathsoft » 01 Feb 2009, 14:21

molodcov_alex wrote:держи список моих изменений в анриле.

Так я уже качнул сорцы с ГЯФ, и выделил оттуда дифом изменения. Теперь осталось только их добавить. Но за сорцы спасибо.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby Las » 01 Feb 2009, 18:31

deathsoft wrote:П.С. Пока актуальной остается проблема со звуковыми устройствами выдающими постоянную составляющую в звуке (вместо нуля), из за этого при остановке/возобновлении звука (например при таскании окна за рамку или при входе/выходе из оталдчика) слышны щелчки.

Могу кинуть кусок кода, я делал для эмулятора AY типа фильтр, как раз убирает постоянную составляющую. Ну типа через кондер звук пропустить.
Las
 
Posts: 1
Joined: 28 Jul 2007, 21:50
Group: Registered users

Postby molodcov_alex » 01 Feb 2009, 18:47

Бл***, не под тем аккаунтом написал... Las это я же, можете тот акк (Las) кикать, я им пользоваться не буду.

В плане фильтра. У меня все с плавающей точкой, так что...
double inval=0; //предыдущее значение, без фильтра, можно и без плавающей точки
double outval=0; //предыдущее значение, с фильтром

для каждого значения:
Code: Select all

           outval/=k; // k подбирается на глаз, у меня 1.01
           outval+=(tmps-inval); // tmps - текущее значение
           inval=tmps;
           // в outval теперь отфильтрованное значение


Вот так выглядит до и после обработки
5409944.png


При возвращении к эмуляции (из дебаггера, паузы и т.д.) outval можно смело обнулять. Для каждого канала естественно свое значение inval и outval

P.S. Уже даже удалось реализовать енто в анриле biggrin
Last edited by molodcov_alex on 01 Feb 2009, 20:41, edited 1 time in total.
User avatar
molodcov_alex
 
Posts: 61
Joined: 01 Feb 2009, 11:12
Group: Registered users

Postby molodcov_alex » 01 Feb 2009, 20:54

Вот так вот (надеюсь так правильно)
sound.cpp

где-нибудь:
Code: Select all
float outval[2]={0};
unsigned short inval[2]={0};


в процедуре flush_snd_frame() после sndcounter.end(bufplay, n_samples);
Code: Select all
   for (unsigned k = 0; k < n_samples; k++, bufplay++) {
        outval[0]/=1.01; outval[1]/=1.01;
        unsigned short tmpv[2];
        *((unsigned long*)tmpv)=sndbuf[bufplay & (SNDBUFSIZE-1)];
        outval[0]+=(tmpv[0]-inval[0]);
        outval[1]+=(tmpv[1]-inval[1]);
        inval[0]=tmpv[0]; inval[1]=tmpv[1];
        sndplaybuf[k]=((((signed short)(outval[1]))&0xFFFF)<<16)|
          (((signed short)(outval[0]))&0xFFFF);
        sndbuf[bufplay & (SNDBUFSIZE-1)] = 0;
     }
Last edited by molodcov_alex on 01 Feb 2009, 21:06, edited 1 time in total.
User avatar
molodcov_alex
 
Posts: 61
Joined: 01 Feb 2009, 11:12
Group: Registered users

Postby deathsoft » 01 Feb 2009, 21:27

molodcov_alex wrote:Вот так вот (надеюсь так правильно)
sound.cpp

Большое спасибо, посмотрим, заюзаем. Проблема там не только с АУ, но и с GS и с битом TapeOut (при нажатии на любую кнопку процедура из ПЗУ выставляет TapeOut в 1).

П.С. Если будут какието пожелания, доработки и т.п. по поводу унриала, ты их лучше сюда пиши а не на ГЯФ. На ГЯФ народ в основном кричит только дай дай дай, но сам ничего не делает. Единственный кто по унриалу дельную инфу говорил - это Александр Медведев, но его так никто и не услышал, и длина дорожки у всех была хз какая (хотя в документации Макеева даже формула дана как считать длину дорожки).

Еще кстати из актуальных задач по унриалу - парсер конфига на чтение/запись - без использования виндовых функций (GetPrivateProfile...), и чтобы при записи все комментарии - тоже записывались на место.
Last edited by deathsoft on 01 Feb 2009, 21:28, edited 1 time in total.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby molodcov_alex » 01 Feb 2009, 21:34

deathsoft wrote:Большое спасибо, посмотрим, заюзаем. Проблема там не только с АУ, но и с GS и с битом TapeOut (при нажатии на любую кнопку процедура из ПЗУ выставляет TapeOut в 1).

Ну какбы, то что выше написано обрабатывает конечный сигнал, я так понимаю, при пересылке "накопившегося сигнала" в буфер звуковухи.
User avatar
molodcov_alex
 
Posts: 61
Joined: 01 Feb 2009, 11:12
Group: Registered users

Postby deathsoft » 01 Feb 2009, 22:43

molodcov_alex wrote:Ну какбы, то что выше написано обрабатывает конечный сигнал, я так понимаю, при пересылке "накопившегося сигнала" в буфер звуковухи.

Да, так и есть.

Коэффициент k видимо зависит от настроек в конфиге (максимальных громкостей отдельных девайсов), т.к. постоянку носит только часть девайсов и пропорционально максимальной громкости.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby deathsoft » 01 Feb 2009, 23:36

Кстати нашел бажок в твоих сорцах:
Code: Select all

   if (conf.mem_model == MM_PROFI)
   {
         if(comp.p7FFD&0x10 && comp.pDFFD&0x20)
        {    // modified ports

А должно быть
if((comp.p7FFD & 0x10) && (comp.pDFFD & 0x20))

т.к. битовые операции имеют приоритет ниже чем логические.
User avatar
deathsoft
 
Posts: 4744
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby robat_e » 02 Feb 2009, 03:20

deathsoft wrote:кричит только дай дай дай

Дай релиз! smile
robat_e
 
Posts: 1269
Joined: 08 Apr 2007, 07:34
Group: Registered users

Postby molodcov_alex » 02 Feb 2009, 08:21

deathsoft wrote:Коэффициент k видимо зависит от настроек в конфиге (максимальных громкостей отдельных девайсов), т.к. постоянку носит только часть девайсов и пропорционально максимальной громкости.

Коэффициент k показывает скорей насколько быстро будет сигнал возвращаться в ноль (разумеется, чем громче, тем дольше). Функция (для постоянного значения сигнала A) вообще должна быть типа f(t)=A*e^(-<какой-то_там_коэффициент>*t).
Кстати, этот k должен зависеть (в данном случае) от частоты дискретизации, что-то типа k=1+<нечто, скажем, 441>/fq. Расчитать достаточно, естесствено, всего один раз, например в applyconfig().

P.S. Тут Kurles говорит, что надо бы загрузку bpl (если конечно делать будешь) до applyconfig() вызывать, иначе "брикпоинты аплятся только при входе в дебагер или в окно настроек".
User avatar
molodcov_alex
 
Posts: 61
Joined: 01 Feb 2009, 11:12
Group: Registered users

PreviousNext

Return to Эмуляторы

Who is online

Users browsing this forum: No registered users and 0 guests