делать паузу? sleep() например.
ну функцию я нашел, примера - шишь.
Вид для печати
Славочка newart так и не поделился тем, что написал. Однако сервис заработал:
http://www.codeforge.com/dlpre/21747...?go_blog_box=1
кроме эмуляции в исходнике ГОВНОКОД!
Vitamin, спасибо, что ты сделал утилитку, мы с Гоблином так и не осилили её использовать:(
Хотелось бы твое мнение о качестве движка, как специалиста.
Сочувствую.
Потратили кучу своих сил на уговаривание, несколько моих сил на выполнение, а на использование утилиты по своему же собственному ТЗ сил уже не хватило.
Я не специалист в качестве движков. И скачать хоть что-то с вышеупомянутого *****ресурса так и не смог.
Вложение 52321
Вот моя эмуляция, на С простая по сути в одну функцию + одну структуру с контекстом
Пашет норм ваще =)
Если кому надо - юзайте не жалко
в коде ZXMAK2 можно посмотреть эмуляцию AY, код там из двух частей - одна общая для всех звуковых устройств - ресэмплер в SoundDeviceBase и вторая, PsgChip - собственно сама эмуляция счетчиков и миксера AY. Раздельный код будет легче понять. Т.к. в эмуляции AY не накручено фильтров и всяких мэджик функций - только сама логика AY. На выходе набор вызовов UpdateDac, с указанием частоты дискретизации, времени относительно фрейма и сэмплами. Остальным занимается ресэмплер, формируя из набора этих вызовов выходной поток с нужной частотой дискретизации.
Эмуляция проца тоже с анрила попячена. Пруф: 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 посматриваю...
Оказывается, программисты иногда используют чужие исходники. Какой кошмар! А мужики-то не знают!
СКАНДАЛЫ ИНТРИГИ РАССЛЕДОВАНИЯ
да, часть кода взята из 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, т.к. сейчас все слишком сложно и запутано.