Ahoj,
po dlouhe dobe jsem zase trochu ladil emulator. Snazil jsem se prijit na to, proc zvuk v Linuxu tolik "škyta". Zjistil jsem, ze pulseaudio si narozdil od bufferu ve WIN32, loaduje data v takovych intervalech, jake se mu zrovna hodi. Prepsal jsem tedy malinko synchronizaci snimku se zvuknou. Vysledkem je, ze emulator sice nebezi stale ve 100% synchronizaci s realnym Sharpem, ale aspon je stale synchronni se zvukem.
Podle toho jak jsem to tu u sebe zkousel, tak obcas se nejake skobrtnuti ozve - zrejme i v zavislosti na tom, jak se pocukava cely system. Spoustim to totiz navic ve virtualizovanem desktopu. Zkousel jsem vsak nekolik her a zvuk mi u nich prakticky neskobrtal a to dokonce ani kdyz jsem si zapnul debugger s povolenou animaci stavu registru a pameti.
Zmenu v synchronizaci jsem udelal globalne pro WIN32, i pro Linux verzi. Ve WIN32 to nyni zda-se bezi stale stejne, jako predtim. V Linuxu to melo ovsem takovy side efekt, ze po ALT+P, kdy po dobu pausy chodily do zvukoveho bufferu same nuly se pulseaudio zblazni a zacne pak prekotne loadovat, takze treba 5 vzorku (snimku) projde strasne rychle, jako kdyby emulator chtel dohnat co v dobe pauzy zameskal :)
Vyresil jsem to zatim tak, ze jsem bajocko od pasu zkusil pribrzdit vsechny snimky, ktere byly dokonceny drive, nez za 17 ms pomoci usleep().
Pokud se budete chtit podivat jak to vypada bez usleep() synchronizace, tak v souboru ./src/iface_sdl/iface_sdl_audio.c zakomentujte 27. radek s obsahem "#define USE_USLEEP_SYNC ".
Kdyz tak mi dejte vedet, jak to ted u vas skyta, ci neskyta...
Michal
po dlouhe dobe jsem zase trochu ladil emulator. Snazil jsem se prijit na to, proc zvuk v Linuxu tolik "škyta". Zjistil jsem, ze pulseaudio si narozdil od bufferu ve WIN32, loaduje data v takovych intervalech, jake se mu zrovna hodi. Prepsal jsem tedy malinko synchronizaci snimku se zvuknou. Vysledkem je, ze emulator sice nebezi stale ve 100% synchronizaci s realnym Sharpem, ale aspon je stale synchronni se zvukem.
Podle toho jak jsem to tu u sebe zkousel, tak obcas se nejake skobrtnuti ozve - zrejme i v zavislosti na tom, jak se pocukava cely system. Spoustim to totiz navic ve virtualizovanem desktopu. Zkousel jsem vsak nekolik her a zvuk mi u nich prakticky neskobrtal a to dokonce ani kdyz jsem si zapnul debugger s povolenou animaci stavu registru a pameti.
Zmenu v synchronizaci jsem udelal globalne pro WIN32, i pro Linux verzi. Ve WIN32 to nyni zda-se bezi stale stejne, jako predtim. V Linuxu to melo ovsem takovy side efekt, ze po ALT+P, kdy po dobu pausy chodily do zvukoveho bufferu same nuly se pulseaudio zblazni a zacne pak prekotne loadovat, takze treba 5 vzorku (snimku) projde strasne rychle, jako kdyby emulator chtel dohnat co v dobe pauzy zameskal :)
Vyresil jsem to zatim tak, ze jsem bajocko od pasu zkusil pribrzdit vsechny snimky, ktere byly dokonceny drive, nez za 17 ms pomoci usleep().
Pokud se budete chtit podivat jak to vypada bez usleep() synchronizace, tak v souboru ./src/iface_sdl/iface_sdl_audio.c zakomentujte 27. radek s obsahem "#define USE_USLEEP_SYNC ".
Kdyz tak mi dejte vedet, jak to ted u vas skyta, ci neskyta...
Michal