нет, эмулятор использует старую версию SharpZipLib, в новой этого кода не вижу. с кодировкой не вижу, видимо он куда-то переехал в другое место. Нужно разбираться.
Вид для печати
Хм... внезапно стало
- - - Добавлено - - -Код:$ LANG=ru_RU.UTF-8 mono --debug ZXMAK2.exe
AL lib: (EE) ALCpulsePlayback_contextStateCallback: Received context failure!
AL lib: (EE) ALCpulsePlayback_streamStateCallback: Received stream failure!
и вдруг
и какие-то дичайшие тормоза.Код:$ LANG=C mono --debug ZXMAK2.exe
AL lib: (EE) ALCplaybackAlsa_open: Could not open playback device 'default': Host is down
Вложение 81625
звук при этом работает?
флаг --debug запускает приложение в отладочном режиме, могут выводиться отладочные сообщения которые в обычном режиме не выводятся.
Вероятно у вас не настроен OpenAL. вы можете настроить какую аудиоподсистему использовать в alsoft.conf рядом с эмулятором, по умолчанию там все закоменчено и по дефолту. Потом можно скопировать этот конфиг в систему, чтобы он для всех приложений работал
Блин по ходу пульса отвалилась нафиг. Странно...
если у вас OpenAL не хочет нормально работать с драйвером по умолчанию, попробуйте задать ей другой драйвер. Например alsa.Это можно указать в alsoft.conf
Перезагрузил, LANG=C mono --debug ZXMAK2.exe пока работает нормально и со звуком, при старте выдаёт в окне сообщение об ошибке, но работает.
Вложение 81626
Мыши не хватает ))
это нормально для линукс пока нет OpenGL рендерера, поэтому используется от DirectX, который из-за недоступности падает с ошибкой и приводит к переключению в режим отрисовки на форме средствами WinForms. Это не очень эффективно и может иногда приводить к остановке обновления изображения, но пока как есть. С мышью и джойстиком аналогичная ситуация.
- - - Добавлено - - -
Для DirectSound устанавливается режим DSSCL_PRIORITY, далее указанная частота дискретизации прописывается в формат используемый для SoundBuffer.
В Windows можно и OpenAL использовать, только нужно чтобы в системе или в папке с эмулятором был доступен openal32.dll. Если эмулятор запущен на 64-битной системе, то openal32.dll должен быть 64 битный. Если на 32-битной системе, то 32-битный. Если надо, могу выложить эти файлы. Правда сейчас эмулятор автоматически не выбирает соответствующий файл в зависимости от архитектуры и нужно подложить правильный вручную. Но можно приделать, чтобы автоматически грузил из соответствующей папки.
Я думаю, что это не работает начиная с Висты, т.к. DirectSound эмулируется через WASAPI, а WASAPI позволяет управлять форматом воспроизведения только в эксклюзивном режиме, когда кроме выбранного приложение, никакое другое приложение звук выводить не может.
- - - Добавлено - - -
Не нашел, где в эмуляторе настройка частоты дискретизации, чтобы попробовать.
Если у вас есть готовый вариант кода для вывода звука используя другие API, я могу добавить. Пока есть только вариант с DirectSound и OpenAL.
Но OpenAL позволяет настроить работу через разные бекенды, включая PipeWire, PulseAudio, ALSA, WASAPI, OpenSL, CoreAudio, OSS, JACK, DirectSound, WinMM, Solaris, SoundIO, PortAudio, SDL2. OpenAL настраивается через alsoft.conf.
В Linux OpenAL используется по умолчанию, для переключения на OpenAL в Windows нужно в файле unity.config, в секции <container name="win32"> заменить вот этот кусок:
на такой (его можно просто скопировать из секции <container name="linux">):Код:<register type="IHostSound" mapTo="HostSound_Mdx">
<constructor>
<param name="form" />
<param name="sampleRate" value="44100" />
<param name="bufferCount" value="4" />
</constructor>
<lifetime type="transient" />
</register>
открываете блокнотом файл unity.config и прописываете желаемый sampleRate в вышеуказанной секции IHostSound, главное не перепутать - их там несколько в разных контейнерах, для windows нужно смотреть контейнер "win32".Код:<register type="IHostSound" mapTo="HostSound_OAL">
<constructor>
<param name="sampleRate" value="48000" />
<param name="bufferCount" value="4" />
</constructor>
<lifetime type="transient" />
</register>
Готового для WASAPI нет. А всякие прослойки типа OpenAL в нативных системах я не люблю. Они, на мой взгляд, всегда чем-то хуже. Или тормознее, или урезанные по возможностям относительно нативных систем.
- - - Добавлено - - -
Прописал. Разумеется, ничего не меняется.
Так как на Vista и выше поменять битрейт буфера микширования системы можно только в эксклюзивном режиме владения звуковухой.
Либо же, если пользователь поменяет это сам в настройках виндовс.