Прошу обратить внимание на то, что не Alt+F1..F4, а Alt+1..4
Вид для печати
Вопрос по DXSoundNotify:
как я понял, это фича генерирует события, которые нужно как то периодически сканировать загадочной функцией WaitForMultipleObjects(2, m_pHEvent, FALSE, 0); которая есть в С++, в Delphi я такую функцию ненаблюдаю вообще, че посоветуете заюзать?
У меня уже башню сносит, как эти эвенты получить?
Эта функция не может быть в одном языке и не быть в другом. Это же API, оно существует независимо от языков программирования. :)
Получаются эвенты при помощи CreateEvent, их нужно передать DXSoundNotify, а DX будет переодически их устанавливать (signaled state). А ждать возникновения нужно, как ты правильно подметил, при помощи WaitForMultipleObjects.
Ура! :v2_yahoo: с саунд буфером все получилось более менее как надо,
Удивляет только одно, как мало информации на эту тему, а примеров на дельфи ваще нет, пришлось в Сишных кодах разбираться, про книги я ваще молчу :mad:
b2m, Если не секрет, как ты решал проблему синхронизации звукового буффера и самого эмулятора?
у меня прерывание Вектора повешано на MMTimer, а DXBuffer с этим таймером конечно ничего общего неимеет, и хотя их скорости теоретически равны, на практике они немного отличаются, что приводит к тому, что звук постепенно пытается либо убежать вперед, либо отстать, но буффер то небесконечный
Да нет, у меня и на практике скорости равны :) Нет, бывает, что из-за временной нехватки ресурсов процессора эмуляция отстаёт, появляется повторение звукового буфера, но если эмулируется нужное количество тактов - то всё нормально. Или в момент переключения режима экрана, я не стал прерывать звук, тоже заметно.
В раздел "Эмуляторы" выложена новая версия эмулятора Ramiros. Таймер и бипер переведены на новый движок, пауза теперь дублируется на PauseBreak, в настройках клавиатуры разделены.