MaddTheSane / Boxer

The DOS game emulator that's fit for your Mac.
http://boxerapp.com/
GNU General Public License v2.0
423 stars 39 forks source link

Audio pitch instability with PC Speaker Game on Apple Silicon #23

Open schmingy opened 3 years ago

schmingy commented 3 years ago

Mac mini, 16 GB Ram, 1 TB SSD, Big Sur 11.1/2

After installing the Boxer binary build, we fired up some old games to give them a try. Games, such as Tank Wars, that ramp up and down the pitch on the PC Speaker during game play experience strange behavior of what I can only think to describe as wow and flutter like old cassettes.

Prior builds on an Intel machine did not have this behavior and performed the operation without problem. We've tried speeding up and slowing down the VM, optimizing for new games, and the like. It seems that the game actually slows down while trying to play the audio because the game play slows with the pitches warbling.

kcgen commented 3 years ago

@schmingy ,

If you set pcrate in your conf to match your [mixer] rate (typically 48000 or 44100):

[speaker]
pcrate = 44100

Does that help?

schmingy commented 3 years ago

@kcgen , I tried both 48000 and 44100. I found no difference; however, I noticed that [mixer] wasn't defined in the Dosbox conf that boxer creates inside the package it makes for the dos games.

Maybe I'm still missing something.

kcgen commented 3 years ago

Thanks @schmingy, It was just a hunch if you were hearing harmonics between the PC rate versus mixer rate (which can happen); but I guess isn't.

If your window reports cycles 100% or max this could be interplay between your machine's dynamic clock spooling up and down. You could try setting a fixed number of cycles:

cycles = 3000 (which should be fine for a ~1990 game and minimally tax your system)

schmingy commented 3 years ago

Thanks @kcgen, I had been increasing the cycles from the starting point of 3000 to 6000 to see if any of that made a difference. The game is particular sensitive to CPU cycles as it gets too fast to play as the cycles get too high in that the controls become quite twitchy; however the audio and the tracking of the shots, for the particular game in example, all continues to do the same weird audio glitches. Is it possible something is strange with the way Apple Silicon runs the x86 core VM causing this behavior?