СКАНДАЛЫ ИНТРИГИ РАССЛЕДОВАНИЯ
СКАНДАЛЫ ИНТРИГИ РАССЛЕДОВАНИЯ
Прихожу без разрешения, сею смерть и разрушение...
да, часть кода взята из Unreal - таблицы для флагов z80, код реcэмплера для звука, также недавно заюзал миксер AY, т.к. в старом ZXMAK2 миксер работал некорректно. Код ресэмплера и миксера отрефакторен, ресэмплер был немного пофикшен т.к. в оригинале индекс иногда вылетал за пределы массивов. В ресэмплере unreal были какие-то костыли, насколько понял для обхода проблем с индексами, но они не работали при изменении частот. Ну и "говна" выброшены
Да, еще амплитуда AY выровнена до полного диапазона, т.к. в оригинале используется только половина диапазона, поэтому звук тихий.
Так что звук в ZXMAK2 сейчас такой-же как в Unreal, есть какие-то мелкие отличия из-за фиксов и рефакторинга, но в общем должно быть одинаково.
Захардкоженые таблицы z80 хотел заменить на вычисляемые, но пока до этого не дошел.
Сейчас сделал новый многопоточный рендерер для видео, проблемы с ошибками при ресайзе удалось полностью устранить. Тестирую... нужно еще пофиксить детектирование перемещения окна на другой дисплей, чтобы рендерер автоматически перестраивался на другой адаптер. Новый вариант пока не комиттил, в процессе тестирования
Новый рендерер цепляется за HWND и поток UI может вообще не использовать - все плавненько и красиво
Решение оказалось простым - сабклассинг hwnd для перехвата сообщений, поэтому странно что несмотря на обилие вопросов в инете по проблемам Direct3D в многопоточном режиме, ни одного решения не опубликовано.
Теперь рендер видео, рендерер звука, эмуляция машины и UI - все работают асинхронно, в отдельных независимых потоках синхронизируясь только во время смены кадров
После фикса для поддержки смены видеоадаптера на лету, хочу добавить интерполяцию цвета для ресемплера частоты кадров дисплея и поддержку фильтров на шейдерах, которые можно будет просто подсовывать эмулятору в виде исходного текста на HLSL. Будет типа эмуляция сетки ЭЛТ трубки, всякие цветовые эффекты (black'n'white, sepia, inverse, etc), motion blur и т.п.
Дальше планирую отрефакторить архитектуру, в особенности UI, т.к. сейчас все слишком сложно и запутано.
Последний раз редактировалось ZXMAK; 03.06.2015 в 13:10.
ZXMAK2 - Виртуальная Машина ZX Spectrum https://github.com/zxmak/ZXMAK2 (старая ссылка http://zxmak2.codeplex.com)
ZXMAK.NET - спектрум на C# http://sourceforge.net/projects/zxmak-dotnet
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)