如何在两个不同的DOSBox上同时播放声音?

时间:2019-05-08 14:01:21

标签: assembly x86-16 dosbox background-music

我已经在程序集8086中创建了“愤怒的小鸟”游戏。我现在的主要问题是我想在主循环运行时播放游戏的歌曲。我已经写了音乐代码。我考虑过使用多线程,但是发现用于创建线程的程序集中断仅在 cmd 上有效,而在DOSBox上无效。

但是,我发现执行多线程的另一种方法是从C ++ Windows.h文件中调用一个创建线程的命令。那太复杂了。

现在,我设法使用中断14h通过LAN端口发送消息,从而在两个不同的DOSBox窗口之间进行通信。基本上,我已经为音乐编写了单独的代码。这两个代码都运行,并且只有当音乐代码获得签名时,它才开始播放音乐。

但是,我发现当打开两个DOSBox窗口时,只有主窗口的声音起作用。您必须切换窗口才能收听音乐,这意味着您听不到声音。

有人知道如何解决这个问题,或者一般在主循环运行时播放音乐吗?

谢谢

1 个答案:

答案 0 :(得分:1)

如前所述,您可以使用多声道声音设备(未具体说明,请参阅Soundchip文档),但是基于PWM的DOS扬声器输出是单波形输出,没有第二频率的概念,除非您想对PWM波形进行数字合并并输出合并后的数据(这将是令人讨厌的工作,可能在边缘之间可能需要数十微秒的时间,您必须手动进行填充。 DMA应该可以工作,但是缓冲区可能会很大,这意味着声音滞后将是几毫秒。