PDA

Просмотр полной версии : Нужна помощь в эмуляции звука



denpopov
09.04.2014, 11:46
Попробовал написать для теста небольшую прогу, которая:
-инициализировала эмулятор
-записывала в регистр АУ данные, и чтобы звук менялся

исходников эмулятора AY8910 много, но ничего не компилируется.
Нужна помощь.

Kakos_nonos
09.04.2014, 11:54
Есть YMEngine от Сергея бульбы. Вставляется в делфи на раз-два. Я, правда, не пробовал, как там в регистры писать, но .ym файлы играть легко.

denpopov
09.04.2014, 12:10
.YM меня не интересует, как раз интересно было бы записывать в AY отдельные значения регистров.

Vitamin
10.04.2014, 13:56
.YM меня не интересует, как раз интересно было бы записывать в AY отдельные значения регистров.
Чтоб играть .ym файлы как раз нужен эмулятор AY с возможностью записи регистров. Так что посмотри YMEngine.

denpopov
10.04.2014, 17:32
Так что посмотри YMEngine.
оно елееле компилится и я не вижу записей данных в регистры.

Vitamin
10.04.2014, 17:48
я не вижу записей данных в регистры.
А может не смотрел?

CYmGlobals.pas:
SetMixerRegister
SetEnvelopeRegister
SetAmplA/B/C
RegisterAY.Noise
RegisterAY.Index[...]

denpopov
10.04.2014, 17:54
А может не смотрел?
не смотрел, запутался просто..


SetAmplA/B/C
а с этим мало понятно.

Vitamin
10.04.2014, 18:06
не смотрел, запутался просто..
Ну вот посмотри сначала. Там всего 5 файлов.


а с этим мало понятно.
Что именно непонятно?

psb
10.04.2014, 18:07
denpopov, посмотри еще Ayumi. https://github.com/true-grue/ayumi

denpopov
10.04.2014, 18:23
Что именно непонятно?
непонятно вот это:


// Defines the AY register structure
TRegisterAY = packed record
case Integer of
0: (Index: array [0..15] of byte);
1: (TonA, TonB, TonC: word;
Noise: byte;
Mixer: byte;
AmplitudeA, AmplitudeB, AmplitudeC: byte;
Envelope: word;
EnvType: byte);
end;

синтаксис Делфи я не знаю.

---------- Post added at 18:23 ---------- Previous post was at 18:22 ----------


denpopov, посмотри еще Ayumi. https://github.com/true-grue/ayumi

много возни с Питоном. хочется все-таки гуевину с фичами, которые описал выше.

Vitamin
10.04.2014, 18:28
синтаксис Делфи я не знаю.
Ну тогда ayumi. Питон там для гуи и конверсии, можно без него обойтись.

denpopov
10.04.2014, 18:52
Питон там для гуи и конверсии, можно без него обойтись.
то есть весь движок переписать?
имхо проще в Delphi разобраться.

Vitamin
10.04.2014, 18:56
то есть весь движок переписать?
имхо проще в Delphi разобраться.
facepalm.jpg

Ты хоть внятно опиши что тебе надо и для каких целей.

psb
10.04.2014, 19:23
то есть весь движок переписать?
там на си движок, вроде бы генерит сигнал как раз по регистрам. написано очень даже внятно.

denpopov
10.04.2014, 19:38
Ты хоть внятно опиши что тебе надо и для каких целей.
просто нужно запись данных в регистры AY, чтобы получить результат.
Цель? эксперимент, наверное...


написано очень даже внятно.
мне непонятно, я в Сях не шарю(

Vitamin
10.04.2014, 20:15
Откуда эти данные будут поступать?
Куда пойдет результат генерации?
Какие языки ты вообще знаешь?

denpopov
10.04.2014, 20:31
какой-то молчок после набранного кода:


procedure TFrmYmPlayerExample.FormCreate(Sender: TObject);
begin
// Create a player instance
m_player := CYmEngine.Create;

// Get the current mixer mode
m_mode := m_player.MixerChannels;
lblMixerMode.Caption := mixerModeToString(TYmMixerMode(m_mode));
RegisterAY.Noise:=6;
SetMixerRegister(31);
SetAmplA(255);
SetAmplB(255);
SetAmplC(255);
SetEnvelopeRegister(31);

нашел ещё одну:
http://www.codeforge.com/article/217474

наверняка фейк какой-то, скачать нельзя.Зарегистрировался, гноворят - ждите 3 дня, когда одобрят для пойнтов ваш *****код..

Может, кому повезет?

---------- Post added at 20:31 ---------- Previous post was at 20:29 ----------


Откуда эти данные будут поступать?
Скажем так я буду пересылать.


Куда пойдет результат генерации?
результат нужен звук. Т.е. нужен эмулятор - пишешь в регистры, получаешь звук.


Какие языки ты вообще знаешь?
Си знаю немного, но в разработке я полный нуб.

Vitamin
10.04.2014, 20:52
По почте пересылать будешь?


Кароч как обычно- хочу чего не знаю кого.

denpopov
10.04.2014, 21:24
Кароч как обычно- хочу чего не знаю кого.
Ты знаешь, как AYfly работает?
вызываешь .dll для инициализации, отправляешь данные музона, молча сидишь, .dll-ка воспроизводит.

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

не знаю, как по-другому объяснить.,

Vitamin
10.04.2014, 21:44
Ну так бери ayfly и вперед. Раз там все что надо.

denpopov
11.04.2014, 10:12
Коекак получилось запустить дамп через ayfly, хотя это не решение..
и с функцией


void *ay_initsongindirect(unsigned char *module, unsigned long sr, AY_CHAR *type, unsigned long size, AbstractAudio *player = 0);

выходит косяк...

denpopov
13.04.2014, 12:49
http://www.codeproject.com/Questions/358822/callback-funtion-in-waveOutOpen-API

непонятно, зачем мне WIM_DATA?
по идее проще пересчитать буфер вывода при смене параметров.

Vitamin
13.04.2014, 14:23
непонятно, зачем мне WIM_DATA?
Тебе- незачем. Кури мануалы:
http://msdn.microsoft.com/en-us/library/windows/desktop/dd743869(v=vs.85).aspx

denpopov
13.04.2014, 16:46
Тебе- незачем. Кури мануалы:
кажется, теперь я врубаюсь про waveOutProc...

denpopov
14.04.2014, 08:33
у ayumi render недоделанный, параметр frame_rate принимает за 48.828125.
или это так и задумано?

psb
14.04.2014, 11:56
у ayumi render недоделанный, параметр frame_rate принимает за 48.828125.
или это так и задумано?
все он доделанный. параметр как у настоящего пентагона, но всяко его можно менять.

alone
14.04.2014, 12:04
Пентагона какой версии? На версии от Микроарта стоит кварц на 14.3 МГц. http://alonecoder.nedopc.com/zx/pent_1.jpg

denpopov
14.04.2014, 12:52
все он доделанный. параметр как у настоящего пентагона, но всяко его можно менять.
У меня из psg Wav странный выходит..

psb
14.04.2014, 12:59
Пентагона какой версии?
сгинь.

denpopov
14.04.2014, 14:23
psb, между делом, а не мог бы ты написать такую программу, которая по состоянию данных регистров выводила звук, или генерировала правильный .WAV?

psb
14.04.2014, 16:35
между делом, а не мог бы ты написать такую программу, которая по состоянию данных регистров выводила звук, или генерировала правильный .WAV?
так ayumi именно вав и генерит из регистров (из psg, но его он распаковывает на регистры).

denpopov
14.04.2014, 16:48
ясна. никто намеков не понимает(

/*всем влом..

Vitamin
14.04.2014, 16:53
Без четкого ТЗ результат- ХЗ.

denpopov
14.04.2014, 18:05
Без четкого ТЗ результат- ХЗ.
как минимум нужна GUI:
вводишь значения регистров, в зависимости от данных меняется звук.
Как объяснить я не знаю уже..

Vitamin
14.04.2014, 18:17
вводишь значения регистров, в зависимости от данных меняется звук.
Т.е. программа постоянно звучит, но характер звучания меняется после обновления значений регистров?

denpopov
14.04.2014, 18:51
Т.е. программа постоянно звучит, но характер звучания меняется после обновления значений регистров?

да. наподобие генератора тона - меняешь параметры, звук меняется.

denpopov
15.04.2014, 14:57
уважаемый Vitamin, есть прогресс?

Vitamin
15.04.2014, 15:05
уважаемый Vitamin, есть прогресс?
Прогресс чего?

denpopov
15.04.2014, 15:34
Прогресс чего?
ТЗ, что я описал

Vitamin
15.04.2014, 15:39
ТЗ, что я описал
1) не ты описал, а я из тебя вытянул
2) нахрена там гуй?

denpopov
15.04.2014, 15:42
2) нахрена там гуй?

эмуляция звука же с разными параметрами.

Vitamin
15.04.2014, 15:50
эмуляция звука же с разными параметрами.
И что? Без гуя никак? Указательный палец к мышке прирос?

denpopov
15.04.2014, 15:52
И что? Без гуя никак? Указательный палец к мышке прирос?
а какой есть вариант? cli-интерфейс?

Vitamin
15.04.2014, 15:52
а какой есть вариант? cli-интерфейс?
Он самый. Минимум трудозатрат, максимум гибкости.

denpopov
15.04.2014, 15:56
Он самый. Минимум трудозатрат, максимум гибкости.
хотелось бы увидеть, если не затруднит, конечно же..

Vitamin
15.04.2014, 16:30
хотелось бы увидеть, если не затруднит, конечно же..
1) Интерактивный. Команды start/stop запускают/останавливают звучание. Команды вида xx=yy записывают в регистр xx значение yy.
2) Потоковый. На вход поступает текстовый файл, каждая строка которого размером 26 символов и содержит hex значения, записываемые в регистры или пробелы, если записи нет.

Выбирай. Только предупреждаю сразу- если я возьмусь это сделать, никаких допиливаний в стиле "я хотел совсем другое/а теперь вот эту хрень сделать".

denpopov
15.04.2014, 17:20
Выбирай. Только предупреждаю сразу- если я возьмусь это сделать, никаких допиливаний в стиле "я хотел совсем другое/а теперь вот эту хрень сделать".
вариант 1 устраивает.

Vitamin
15.04.2014, 18:23
вариант 1 устраивает.
На скорую руку (1 час) под 64 битную винду:
https://dl.dropboxusercontent.com/u/2393036/zxtune/aycli/aycli.exe (2.5Мб)

denpopov
15.04.2014, 18:49
Версия "C:\lcc\projects\ayfly\aycli.exe" не совместима с версией Windows, работа
ющей на этом компьютере. Проверьте сведения о системе, чтобы узнать, какая версия программы x86 (32-разрядная) или x64 (64-разрядная) вам нужна, и получите ее у поставщика программного обеспечения.

у меня 7ка..можно для 32?

Vitamin
15.04.2014, 18:50
у меня 7ка..
У меня тоже. Разрядность какая?

denpopov
15.04.2014, 18:54
32

Vitamin
15.04.2014, 18:55
32
Перевыложил с тем же урлом (360кб). Если потребует msvc120.dll или чтото наподобие, ищи их в 32-битной версии zxtune под windows.

denpopov
15.04.2014, 19:04
заработало кажись.

глянуть бы на исходники..

Vitamin
15.04.2014, 19:05
глянуть бы на исходники..
Исходники проекта открыты. Исходники тулзы пока не заливал- там ничено интересного, тупо *****код обвязки вокруг имеющихся компонентов.

denpopov
15.04.2014, 19:07
Исходники тулзы пока не заливал- там ничено интересного, тупо *****код обвязки вокруг имеющихся компонентов
ну меня тулза больше интересует. кинь в личку, если не жалко, пожалуйста..

Vitamin
15.04.2014, 19:11
ну меня тулза больше интересует. кинь в личку, если не жалко, пожалуйста..
Не понимаю что ты там хочешь найти
https://github.com/vitamin-caig/zxtune/blob/develop/src/devices/test/aycli/main.cpp

denpopov
15.04.2014, 19:15
Не понимаю что ты там хочешь найти
может, повезет и тогда попробую собрать то, что планировал... А какая среда разработки?

Vitamin
15.04.2014, 19:16
А какая среда разработки?
Никакой. FAR+make

denpopov
15.04.2014, 19:27
Никакой. FAR+make
miniGW?

Vitamin
15.04.2014, 19:39
С ним тоже можно собрать. Не понимаю нахрена тебе это? Ты же получил что заказывал.

denpopov
15.04.2014, 20:04
С ним тоже можно собрать. Не понимаю нахрена тебе это? Ты же получил что заказывал.

Ты развиваешь во мне комплекс косноязычия. спасибо за утилитку.

denpopov
16.04.2014, 08:27
Как я ни пытался, но без стакана тут не разберешься...:v2_dizzy_facepalm:


Системе не удается найти указанный путь.
Building
MAKE Version 5.3 Copyright (c) 1987, 2008 CodeGear
Error makefile 13: Command syntax error
*** 1 errors during make ***
Failed
ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\home\AppData\Roaming
arch=x86
COMMANDER_DRIVE=C:
COMMANDER_INI=C:\tools\Total_Commander_7.55_PowerP ack_2010.5a_Portable\wincmd.in
i
COMMANDER_PATH=C:\tools\Total_Commander_7.55_Power Pack_2010.5a_Portable
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=HOME-ПК
ComSpec=C:\Windows\system32\cmd.exe
FP_NO_HOST_CHECK=NO
HOMEDRIVE=C:
HOMEPATH=\Users\home
include=C:\Program Files\Microsoft Visual Studio\VC98\atl\include;C:\Program Fil
es\Microsoft Visual Studio\VC98\mfc\include;C:\Program Files\Microsoft Visual St
udio\VC98\include
lib=C:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;C:\Program Files\Micro
soft Visual Studio\VC98\lib
LOCALAPPDATA=C:\Users\home\AppData\Local
LOGONSERVER=\\HOME-ПК
MOZ_PLUGIN_PATH=C:\tools\FoxitReaderPortable\App\F oxit Reader\plugins\
NUMBER_OF_PROCESSORS=4
OpenXXApp=C:\tools\openXX\OpenXX.exe
OpenXXDir=C:\tools\openXX\
OpenXXDll=C:\tools\openXX\OpenXX.dll
OS=Windows_NT
Path=\git\bin;C:\Build;C:\Program Files\ImageMagick-6.8.7-Q16;C:\Windows\system3
2;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\S ystem32\WindowsPowerShell\v1.0
\;C:\Program Files\EmEditor;C:\PBWin70\BIN;C:\Program Files\MySQL\MySQL Server 5
.5\bin;C:\PROGRA~1\TIEDUC~1\TI-83P~1\UTILS;C:\Program Files\ASAP\;D:\!!_________
___prj\GUItasm\BIN;C:\Program Files\Borland\Delphi7\Bin;C:\Program Files\Borland
\Delphi7\Projects\Bpl;C:\Program Files\Microsoft Visual Studio\Common\Tools\WinN
T;C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;C:\Program Files\M
icrosoft Visual Studio\Common\Tools;C:\Program Files\Microsoft Visual Studio\VC9
8\bin;C:\Program Files\Boriel Tm\ZX Basic Compiler\;C:\Program Files\Borland\Del
phi7\Bin;C:\Program Files\Borland\Delphi7\Projects\Bpl
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WS F;.WSH;.MSC
platform=windows
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 42 Stepping 7, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=2a07
ProgramData=C:\ProgramData
ProgramFiles=C:\Program Files
PROMPT=$P$G
PSModulePath=C:\Windows\system32\WindowsPowerShell \v1.0\Modules\
PUBLIC=C:\Users\Public
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\Windows
TARGET=C:\MinGW\zxtune-develop\src\devices\test\aycli
TEMP=c:\Temp
TMP=c:\Temp
USERDOMAIN=home-ПК
USERNAME=home
USERPROFILE=C:\Users\home
VBOX_INSTALL_PATH=c:\Program Files\Oracle\VirtualBox\
windir=C:\Windows
windows_tracing_flags=3
windows_tracing_logfile=C:\BVTBin\Tests\installpac kage\csilogfile.log
Для продолжения нажмите любую клавишу . . .

Vitamin
16.04.2014, 08:38
Не влезай- убъет.
Ты и с более простыми вещами справиться не смог, на что сейчас надеешься?

denpopov
16.04.2014, 09:07
Ты и с более простыми вещами справиться не смог, на что сейчас надеешься?
на то же самое, о чем и начал разговор: нужна dll-ка, где доступен в функциях вызов:
1.ctrl->Play();
2.data->Data[static_cast<Devices::AYM::Registers::Index>(reg)] = val;
3.ctrl->Stop();

Vitamin
16.04.2014, 09:13
Т.е. тулза тебе была не нужна?

denpopov
16.04.2014, 09:22
Т.е. тулза тебе была не нужна?
Тулза как раз нужна, просто на все цели её не зватит.
Забыл упомянуть, что static library нужна.
Тебя обременять просто неудобно.

Vitamin
16.04.2014, 10:26
Тулза как раз нужна, просто на все цели её не зватит.
Забыл упомянуть, что static library нужна.
Тебя обременять просто неудобно.
Так тебе dll нужна или static library?

Кури каналы ввода-вывода, поймешь как заюзать тулзу вместо длл.

denpopov
16.04.2014, 10:30
Так тебе dll нужна или static library?
в идеале обе


Кури каналы ввода-вывода, поймешь как заюзать тулзу вместо длл.
ну если я с простой задачей не справился, то я не знаю, что и курить.

denpopov
16.04.2014, 14:15
Vitamin, будб добр, сделай доброе дело, пожалуйстаhttp://www.picgifs.com/smileys/smileys-and-emoticons/praying/smileys-praying-000125.gif

среди моих знакомых никто в сях не шарит

Vitamin
16.04.2014, 16:52
Может ты конечную цель опишешь?

denpopov
16.04.2014, 16:54
Может ты конечную цель опишешь?
что описать?
нужна .dll, чтобы из нее можно вызвать три функции:
1.ctrl->Play();
2.data->Data[static_cast<Devices::AYM::Registers::Index>(reg)] = val;
3.ctrl->Stop();

функция 2 - запись в регистр значение.

Vitamin
16.04.2014, 17:01
что описать?
нужна .dll, чтобы из нее можно вызвать три функции:
1.ctrl->Play();
2.data->Data[static_cast<Devices::AYM::Registers::Index>(reg)] = val;
3.ctrl->Stop();

функция 2 - запись в регистр значение.
Нахрена все это нужно, включая длл. Тулзу я согласился делать потому что сам могу ее юзать для тестов. Писать вслепую ненужный *****код на выброс не хочу.

denpopov
16.04.2014, 17:12
Писать вслепую ненужный *****код на выброс не хочу
т.е. ты не знаешь, как написать .dll?
и потом, зачем на выброс?

Vitamin
16.04.2014, 17:16
и потом, зачем на выброс?
Затем что ты сам не знаешь что хочешь и будет постоянно просить допилить что-то (уже начинается). А мне это нахрен не надо.

denpopov
16.04.2014, 17:23
Затем что ты сам не знаешь что хочешь и будет постоянно просить допилить что-то (уже начинается)
ну.. если сделаешь, то это наверняка то, что было изначально в треде.
Тогда уж я от тебя отстану.

Vitamin
16.04.2014, 17:27
ну.. если сделаешь, то это наверняка то, что было изначально в треде.
Вот я и сделал то, что было изначально в треде- прогу-эмулятор аука с возможностью записи в регистры и прослушивания результата.

Если ты не знаешь С, на каком языке собрался писать клиента для длл?

denpopov
16.04.2014, 18:04
Если ты не знаешь С, на каком языке собрался писать клиента для длл?
хоспаде, какая разница? PureBasic или ассемблер - оба позволяют юзать гуи и обращаться к библиотекам.


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

Vitamin
16.04.2014, 18:17
хоспаде, какая разница? PureBasic или ассемблер - оба позволяют юзать гуи и обращаться к библиотекам.
Ну вот с тем же успехом PureBasic позволяет обращаться к бинарям, переопределяя их stdin.


да, верно, но простой сэмпл как будет выглядеть в тулзе?
Поток команд на входе stdin. А как ты собрался выдерживать темп записи в регистры?

denpopov
16.04.2014, 18:33
А как ты собрался выдерживать темп записи в регистры?
ой, это наверное медленно, да?


Ну вот с тем же успехом PureBasic позволяет обращаться к бинарям, переопределяя их stdin.

ни разу не видел примера.

Vitamin
16.04.2014, 18:36
ой, это наверное медленно, да?
Нет, это быстро. Очень. В этом и проблема- тебе надо писать от 0 до 13 регистров и держать паузу. Как ты это все собирался делать?


ни разу не видел примера.
Поищи в документации.

denpopov
16.04.2014, 18:53
Как ты это все собирался делать?
делать паузу? sleep() например.



Поищи в документации.
ну функцию я нашел, примера - шишь.

Vitamin
16.04.2014, 18:54
ну функцию я нашел, примера - шишь.
Экспериментируй. Дллку я делать не буду- считай что не умею.

denpopov
16.04.2014, 19:15
Экспериментируй
с моей тз это будет *****код.



Дллку я делать не буду- считай что не умею.
жаль( будем ждать подходящего момента значит..

---------- Post added at 19:15 ---------- Previous post was at 19:00 ----------

может, таки найдешь время?

denpopov
02.05.2015, 17:43
Славочка newart так и не поделился тем, что написал. Однако сервис заработал:

http://www.codeforge.com/dlpre/217474/319b2c7a4ec8.zip__.html?go_blog_box=1

кроме эмуляции в исходнике ГОВНОКОД!

Vitamin, спасибо, что ты сделал утилитку, мы с Гоблином так и не осилили её использовать:(
Хотелось бы твое мнение о качестве движка, как специалиста.

Rindex
02.05.2015, 17:52
Vitamin, спасибо, что ты сделал утилитку, мы с Гоблином так и не осилили её использовать
Хотелось бы твое мнение о качестве движка, как специалиста.

Ммммм, а может это вы не смогли запустить мелодию?

denpopov
02.05.2015, 17:55
Ммммм, а может это вы не смогли запустить мелодию
а ты большой специалист штоле?

Vitamin
02.05.2015, 18:14
Vitamin, спасибо, что ты сделал утилитку, мы с Гоблином так и не осилили её использовать
Сочувствую.
Потратили кучу своих сил на уговаривание, несколько моих сил на выполнение, а на использование утилиты по своему же собственному ТЗ сил уже не хватило.


Хотелось бы твое мнение о качестве движка, как специалиста.
Я не специалист в качестве движков. И скачать хоть что-то с вышеупомянутого *****ресурса так и не смог.

denpopov
02.05.2015, 18:23
Потратили кучу своих сил на уговаривание, несколько моих сил на выполнение, а на использование утилиты по своему же собственному ТЗ сил уже не хватило

лана, пропущу шпильку так и быть. Одних экспортированных функций хватает.

Rindex
02.05.2015, 18:29
а ты большой специалист штоле?

Нет. Но раньше у Витамина кое-чего не правильно работало. Однако всё было сделано как надо, а ущербные вроде тебя, пускай проходят мимо. Надоели вы... Вот ZXTune сделайте для начала.

denpopov
02.05.2015, 18:38
Однако всё было сделано как надо, а ущербные вроде тебя, пускай проходят мимо. Надоели вы...

прими эфтаназии жывотворящей и вали спать, пьянь:)

Rindex
02.05.2015, 18:41
прими эфтаназии жывотворящей и вали спать, пьянь:)

Что, правда глаза заколола? :) Я не обижаюсь, просто. Просто на всякую хрень внимания не обращаю.

denpopov
02.05.2015, 18:43
Что, правда глаза заколола

какая правда-то? ты каждой бочке затычка что ли?

Rindex
02.05.2015, 18:44
какая правда-то? ты каждой бочке затычка что ли?

Ну вот и обидеть хочешь. Не взлетит. Я не пробиваем. ;)

denpopov
02.05.2015, 18:58
Не взлетит. Я не пробиваем.

Желаешь быть умным - вали кукарекать во флейме.

medvdv
28.05.2015, 00:15
52321

Вот моя эмуляция, на С простая по сути в одну функцию + одну структуру с контекстом

Пашет норм ваще =)

Если кому надо - юзайте не жалко

ZXMAK
28.05.2015, 00:51
в коде ZXMAK2 можно посмотреть эмуляцию AY, код там из двух частей - одна общая для всех звуковых устройств - ресэмплер в SoundDeviceBase и вторая, PsgChip - собственно сама эмуляция счетчиков и миксера AY. Раздельный код будет легче понять. Т.к. в эмуляции AY не накручено фильтров и всяких мэджик функций - только сама логика AY. На выходе набор вызовов UpdateDac, с указанием частоты дискретизации, времени относительно фрейма и сэмплами. Остальным занимается ресэмплер, формируя из набора этих вызовов выходной поток с нужной частотой дискретизации.

Vitamin
28.05.2015, 15:12
Пашет норм ваще =)
Есть косяки:

1) шум сделан неправильно.
2) ЕМНИП, счетчики с периодом 0 работают как с периодом 1 (а не с периодом 2^32).
3) перезапись регистров делителей не сбрасывает счетчики

denpopov
28.05.2015, 15:29
в коде ZXMAK2 можно посмотреть эмуляцию AY, код там из двух частей - одна общая для всех звуковых устройств - ресэмплер в SoundDeviceBase

на #z80 видел утверждение, что ты стырил код с Унрыла. Это так?

Screw
28.05.2015, 15:51
на #z80 видел утверждение, что ты стырил код с Унрыла. Это так?

Эмуляция проца тоже с анрила попячена. Пруф: https://dlcorp.nedopc.com/viewtopic.php?p=35811#p35811

А вот пруф про тыренье кода AY: https://dlcorp.nedopc.com/viewtopic.php?p=33362#p33362

"Мегабугага, код воспроизведения звука тоже взят из унриала, и даже алко-говна заботливо скопированы:"

zxmak>>вг93, hdd и фильтр для звука из unreal взяты. Еще миксер каналов для AY тоже из unreal, но в миксере каша, нужо переделывать. Сам AY свой.
Фильтр для звука не так и давно был прикручен - после жалоб на некачественный бипер. Сейчас на AY в unreal посматриваю...

Vitamin
28.05.2015, 15:57
Оказывается, программисты иногда используют чужие исходники. Какой кошмар! А мужики-то не знают!

Lethargeek
28.05.2015, 19:39
СКАНДАЛЫ ИНТРИГИ РАССЛЕДОВАНИЯ

ZXMAK
03.06.2015, 12:36
на #z80 видел утверждение, что ты стырил код с Унрыла. Это так?

да, часть кода взята из Unreal - таблицы для флагов z80, код реcэмплера для звука, также недавно заюзал миксер AY, т.к. в старом ZXMAK2 миксер работал некорректно. Код ресэмплера и миксера отрефакторен, ресэмплер был немного пофикшен т.к. в оригинале индекс иногда вылетал за пределы массивов. В ресэмплере unreal были какие-то костыли, насколько понял для обхода проблем с индексами, но они не работали при изменении частот. Ну и "говна" выброшены :smile:
Да, еще амплитуда AY выровнена до полного диапазона, т.к. в оригинале используется только половина диапазона, поэтому звук тихий.

Так что звук в ZXMAK2 сейчас такой-же как в Unreal, есть какие-то мелкие отличия из-за фиксов и рефакторинга, но в общем должно быть одинаково.
Захардкоженые таблицы z80 хотел заменить на вычисляемые, но пока до этого не дошел.

Сейчас сделал новый многопоточный рендерер для видео, проблемы с ошибками при ресайзе удалось полностью устранить. Тестирую... :smile: нужно еще пофиксить детектирование перемещения окна на другой дисплей, чтобы рендерер автоматически перестраивался на другой адаптер. Новый вариант пока не комиттил, в процессе тестирования :)
Новый рендерер цепляется за HWND и поток UI может вообще не использовать - все плавненько и красиво :smile:
Решение оказалось простым - сабклассинг hwnd для перехвата сообщений, поэтому странно что несмотря на обилие вопросов в инете по проблемам Direct3D в многопоточном режиме, ни одного решения не опубликовано.

Теперь рендер видео, рендерер звука, эмуляция машины и UI - все работают асинхронно, в отдельных независимых потоках синхронизируясь только во время смены кадров :smile:

После фикса для поддержки смены видеоадаптера на лету, хочу добавить интерполяцию цвета для ресемплера частоты кадров дисплея и поддержку фильтров на шейдерах, которые можно будет просто подсовывать эмулятору в виде исходного текста на HLSL. Будет типа эмуляция сетки ЭЛТ трубки, всякие цветовые эффекты (black'n'white, sepia, inverse, etc), motion blur и т.п. :biggrin:

Дальше планирую отрефакторить архитектуру, в особенности UI, т.к. сейчас все слишком сложно и запутано.

medvdv
02.05.2017, 23:44
прошло пару лет и я нашел этот пост ахахах слушай а как шум правильный сделать? в чем неверность?

- - - Добавлено - - -


Есть косяки:

1) шум сделан неправильно.
2) ЕМНИП, счетчики с периодом 0 работают как с периодом 1 (а не с периодом 2^32).
3) перезапись регистров делителей не сбрасывает счетчики

напиши если помнишь что не так с шумом - поправлю счас как раз понадобилось =))