Приветствую Вас Гость | RSS


Главная страница » Новая версия Unreal Speccy - Страница 6 - ZX-Форум » Регистрация » ВходЧетверг
2024-03-28
14:11:49
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
ZX-Форум » Разное » Эмуляторы » Новая версия Unreal Speccy
Новая версия Unreal Speccy
нолькаДата: Суббота, 2009-01-31, 14:36:50 | Сообщение # 76
рОвный
Группа: Человеки
Сообщений: 712
Репутация: 5
Статус: Offline
робат, в нумлоке кол-во фпс сильно зависит от проца

я проснулся среди ночи и понял, что всё...
всё идет по плану
 
robat_eДата: Суббота, 2009-01-31, 16:32:21 | Сообщение # 77
Младший одепт
Группа: Человеки
Сообщений: 610
Репутация: 5
Статус: Offline
Quote (нолька)
робат, в нумлоке кол-во фпс сильно зависит от проца

А, ну если в этом смысле. Я редко этим ускорением пользуюсь.


Мы, роботы-бездельники, не любим понедельники.
 
deathsoftДата: Воскресенье, 2009-02-01, 03:16:30 | Сообщение # 78
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Упдэйт №4:

Исправлена обработка nmi для скорпиона, теперь сигнал nmi активен в течение 1 кадра.

Переименованы настройки в ini файле
(Добавлен суффикс Vol)
BeeperVol
MicOutVol
MicInVol
AYVol
CovoxFBVol
CovoxDDVol
SDVol
GSVol
BASSVol

Добавлены настройки для отключения soundrive и covox:
SD=0 ;1
CovoxFB=0 ;1
CovoxDD=0 ;1

Исправлена ошибка в эмуляции дисковода. Не везде делалась проверка на превышение
максимального номера дорожки. (В ADS30 заработал тест на максимальное количество дорожек).

Доработки по NGS
vs1001:
Сделана поддержка регулировки громкости.
Реализован регистр содержащий текущее время проигрывания трека.
Сделана обработка soft reset. Сделана фильтрация нулей перед сбросом.
Заработал плеер neo lt 0.42

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

Сообщение отредактировал deathsoft - Воскресенье, 2009-02-01, 17:52:07
 
molodcov_alexДата: Воскресенье, 2009-02-01, 11:17:35 | Сообщение # 79
Осваивается
Группа: Человеки
Сообщений: 36
Репутация: 0
Статус: Offline
deathsoft, держи список моих изменений в анриле.
Единственное, что не написал - это что править в gui и config по части добавления настроек, изменения их названий и добавления новых вариантов значений
Прикрепления: mod.rar (4.9 Kb)


Сообщение отредактировал molodcov_alex - Воскресенье, 2009-02-01, 11:26:09
 
deathsoftДата: Воскресенье, 2009-02-01, 14:21:31 | Сообщение # 80
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Quote (molodcov_alex)
держи список моих изменений в анриле.

Так я уже качнул сорцы с ГЯФ, и выделил оттуда дифом изменения. Теперь осталось только их добавить. Но за сорцы спасибо.
 
LasДата: Воскресенье, 2009-02-01, 18:31:58 | Сообщение # 81
Юзер
Группа: Человеки
Сообщений: 1
Репутация: 0
Статус: Offline
Quote (deathsoft)
П.С. Пока актуальной остается проблема со звуковыми устройствами выдающими постоянную составляющую в звуке (вместо нуля), из за этого при остановке/возобновлении звука (например при таскании окна за рамку или при входе/выходе из оталдчика) слышны щелчки.

Могу кинуть кусок кода, я делал для эмулятора AY типа фильтр, как раз убирает постоянную составляющую. Ну типа через кондер звук пропустить.
 
molodcov_alexДата: Воскресенье, 2009-02-01, 18:47:00 | Сообщение # 82
Осваивается
Группа: Человеки
Сообщений: 36
Репутация: 0
Статус: Offline
Бл***, не под тем аккаунтом написал... Las это я же, можете тот акк (Las) кикать, я им пользоваться не буду.

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

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

Code

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

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

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

P.S. Уже даже удалось реализовать енто в анриле biggrin

Прикрепления: 5409944.png (16.4 Kb)


Сообщение отредактировал molodcov_alex - Воскресенье, 2009-02-01, 20:41:10
 
molodcov_alexДата: Воскресенье, 2009-02-01, 20:54:05 | Сообщение # 83
Осваивается
Группа: Человеки
Сообщений: 36
Репутация: 0
Статус: Offline
Вот так вот (надеюсь так правильно)
sound.cpp

где-нибудь:

Code
float outval[2]={0};
unsigned short inval[2]={0};

в процедуре flush_snd_frame() после sndcounter.end(bufplay, n_samples);

Code
   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;
     }


Сообщение отредактировал molodcov_alex - Воскресенье, 2009-02-01, 21:06:19
 
deathsoftДата: Воскресенье, 2009-02-01, 21:27:37 | Сообщение # 84
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Quote (molodcov_alex)
Вот так вот (надеюсь так правильно)
sound.cpp

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

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

Еще кстати из актуальных задач по унриалу - парсер конфига на чтение/запись - без использования виндовых функций (GetPrivateProfile...), и чтобы при записи все комментарии - тоже записывались на место.

Сообщение отредактировал deathsoft - Воскресенье, 2009-02-01, 21:28:14
 
molodcov_alexДата: Воскресенье, 2009-02-01, 21:34:42 | Сообщение # 85
Осваивается
Группа: Человеки
Сообщений: 36
Репутация: 0
Статус: Offline
Quote (deathsoft)
Большое спасибо, посмотрим, заюзаем. Проблема там не только с АУ, но и с GS и с битом TapeOut (при нажатии на любую кнопку процедура из ПЗУ выставляет TapeOut в 1).

Ну какбы, то что выше написано обрабатывает конечный сигнал, я так понимаю, при пересылке "накопившегося сигнала" в буфер звуковухи.
 
deathsoftДата: Воскресенье, 2009-02-01, 22:43:21 | Сообщение # 86
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Quote (molodcov_alex)
Ну какбы, то что выше написано обрабатывает конечный сигнал, я так понимаю, при пересылке "накопившегося сигнала" в буфер звуковухи.

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

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

 
deathsoftДата: Воскресенье, 2009-02-01, 23:36:30 | Сообщение # 87
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
Кстати нашел бажок в твоих сорцах:
Code

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

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

т.к. битовые операции имеют приоритет ниже чем логические.

 
robat_eДата: Понедельник, 2009-02-02, 03:20:25 | Сообщение # 88
Младший одепт
Группа: Человеки
Сообщений: 610
Репутация: 5
Статус: Offline
Quote (deathsoft)
кричит только дай дай дай

Дай релиз! smile


Мы, роботы-бездельники, не любим понедельники.
 
molodcov_alexДата: Понедельник, 2009-02-02, 08:21:56 | Сообщение # 89
Осваивается
Группа: Человеки
Сообщений: 36
Репутация: 0
Статус: Offline
Quote (deathsoft)
Коэффициент k видимо зависит от настроек в конфиге (максимальных громкостей отдельных девайсов), т.к. постоянку носит только часть девайсов и пропорционально максимальной громкости.

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

P.S. Тут Kurles говорит, что надо бы загрузку bpl (если конечно делать будешь) до applyconfig() вызывать, иначе "брикпоинты аплятся только при входе в дебагер или в окно настроек".

 
deathsoftДата: Понедельник, 2009-02-02, 11:40:58 | Сообщение # 90
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 1587
Репутация: 9
Статус: Offline
формула то f(t)=A*e^(-t/tau)
где tau = 1/(RC)

На счет bpl - не совсем понял зачем оно нужно? Намного лучше сделать возможность реакции на команду ld b,b как на брекпоинт (котоую либо включать либо выключать в конфиге), тогда можно делать любые условные брекпоинты прямо в коде (как на ПЦ с int3). Собственно при отладке АТМ демы - нечто подобное и делали.

Сообщение отредактировал deathsoft - Понедельник, 2009-02-02, 11:43:42
 
ZX-Форум » Разное » Эмуляторы » Новая версия Unreal Speccy
Поиск:

the DLCorp © 2006