VOGONS


First post, by Makus

User metadata
Rank Newbie
Rank
Newbie

Hi to all!
in this post they speculate the issue is caused by inaccurate 8088 CPU emulation: https://github.com/86Box/86Box/issues/705
In this video you can hear the sounds missing: https://www.youtube.com/watch?v=krb4ave2_Mg
There is any setting I can try?
Many thanks.

Reply 1 of 10, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

I suspect it has more to do with speaker emulation than CPU timing.

The ECE build has a speaker patch with some improvements, so you might try the game there to see if the sounds are audible.

Reply 2 of 10, by Makus

User metadata
Rank Newbie
Rank
Newbie

Thank you for your answer ripsaw8080!
I just tried DOSbox ECE with default settings and the sounds are missing also in this version.

Reply 3 of 10, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Well, default settings are not quite right for this game. Use machine=cga and cycles=270 (or thereabouts).

Reply 4 of 10, by Makus

User metadata
Rank Newbie
Rank
Newbie

I tried the settings you suggested, but the helicopter sounds are always missing.
Thanks anyway!

Reply 5 of 10, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

For the helicopter sound, the game alternates between square wave counter values of 1 and 2, which are not audible frequencies, but just the re-programming of the timer counter value apparently causes a subtle noise. I suppose it could be considered an undesirable artifact, like the "snow" effect seen on old CGA hardware, but the game is making use of it and DOSBox does not emulate it.

Reply 6 of 10, by Makus

User metadata
Rank Newbie
Rank
Newbie

Thank you for the technical insight, ripsaw8080.
I love these old programming tricks!

Reply 8 of 10, by Marty2dos

User metadata
Rank Newbie
Rank
Newbie
		if (p->write_latch == 0)
{
if (p->bcd == false)
p->cntr = 0x10000;
else
p->cntr=9999;

/* ========================================= BEGIN === */
}

else if (p->write_latch == 1 && p->mode == 3)
{

if (p->bcd == false)
p->cntr=0x10001;
else
p->cntr=10000;

/* =========================================== END === */

} else p->cntr = p->write_latch;

if ((!p->new_mode) && (p->mode == 2) && (counter == 0)) {

Is this OK?
I Modifed and Compare ist with the Video. Now I hear the sounds.

Reply 9 of 10, by ripsaw8080

User metadata
Rank DOSBox Author
Rank
DOSBox Author

Maybe. An alternate idea is:

     if (p->bcd==true) BCD2BIN(p->write_latch);
if (p->write_state != 0) {
+ if (p->mode == 3) p->write_latch &= 0xfffe;
if (p->write_latch == 0) {
if (p->bcd == false) p->cntr = 0x10000;
else p->cntr=9999;
} else p->cntr = p->write_latch;

Seems like what the hardware might do instead of making special cases, but has implications for limiting possible frequencies, so needs to be checked.

Reply 10 of 10, by Makus

User metadata
Rank Newbie
Rank
Newbie

I tried DOSBox-X (dosbox-x-windows-20200502-170825-windows.zip) and the helicopter sound is there!
However, while the game is playing sounds there is a slight background hum.
Thanks to all.