I am trying to play Army Men: Sarge's War for the nostalgia value. The game looks and sounds fine on my computer, with consistent 33ms frame times at 3x native resolution with anti-aliasing and default settings. With the emulator running around 400% max speed, I don't notice any slowdowns. However, while normal game audio and menu music are reproduced without issue, the dynamic music that plays during a level is largely messed up. Whenever the music gets a cue to change from moving to new a location (on the same map or through a loading screen) or from combat starting/ending, the new music/transition will stutter and play itself twice or more within a second or two before continuing normally. When nothing is going on and I am not moving to trigger any audio cues, it starts to plays fine, without an apparent change in emulation performance. This behavior is consistent every time I play the game on Dolphin.
Here are some Youtube videos I found that demonstrate the problem. The first is gameplay from an older version of Dolphin where the music issue is present. The second is a playthrough of the game recorded from physical GameCube hardware. Notably, the music is fine.
https://www.youtube.com/watch?v=KWKHsJjomcE&t=96s
https://www.youtube.com/watch?v=rZS29eRtDsA&t=11m37s
So far I have tried all combinations of the three audio emulation engines, the three APIs, and with and without Dolby Pro Logic II decoding and audio stretching, when applicable. I also tried all three engines with Cubeb in single core mode. I have also tried running the game with faster and slower CPU clock overrides, using the cached interpreter instead of JIT recompiler, and other options, but none have achieved anything. I have terrible performance using the cached interpreter with all other settings default, so I don't know how the game would play when using the LLE CPU engines alongside various other settings. I am thinking the issue is not audio playback itself, but maybe the handling of audio files that are segmented in some fashion. I am not exactly in my depth debugging emulators or console games.
After running through all of those options, I then played the game while monitoring the log, and I see that when the music is acting weird, the log shows the emulator is repeatedly switching between reading from the level's .stm music file and another music file, common.stm. Most evidently, when I beat the level and the end of mission menu music is playing, the emulator only accesses from the common.stm file and the reads continue uninterrupted. This, to me, seems like the emulator is having difficulty accurately replicating the correct behavior for dynamic presentation of music files, perhaps when trying to fade in and out using different assets.
I would love to test a different game that uses dynamic music cuing to see if the issue is game specific, but I don't know what games to look for.
I attached a snippet from my log output showing the game loading into a level, playing for a bit, and then the game moving to the mission complete menu where you can save, continue to the next level, quit, etc.
AMSW example log events.txt (Size: 44.16 KB / Downloads: 20)
Windows 10 Pro (22H2) x64
Intel i5-6500 @ 3.2Ghz
Nvidia GTX1060 6GB
Corsair Vengeance 2x8GB DDR4-2400MHz C14 @ 2133MHz
Emulator ran from Crucial M.2 NVMe SDD
Dolphin R2407-x64
Here are some Youtube videos I found that demonstrate the problem. The first is gameplay from an older version of Dolphin where the music issue is present. The second is a playthrough of the game recorded from physical GameCube hardware. Notably, the music is fine.
https://www.youtube.com/watch?v=KWKHsJjomcE&t=96s
https://www.youtube.com/watch?v=rZS29eRtDsA&t=11m37s
So far I have tried all combinations of the three audio emulation engines, the three APIs, and with and without Dolby Pro Logic II decoding and audio stretching, when applicable. I also tried all three engines with Cubeb in single core mode. I have also tried running the game with faster and slower CPU clock overrides, using the cached interpreter instead of JIT recompiler, and other options, but none have achieved anything. I have terrible performance using the cached interpreter with all other settings default, so I don't know how the game would play when using the LLE CPU engines alongside various other settings. I am thinking the issue is not audio playback itself, but maybe the handling of audio files that are segmented in some fashion. I am not exactly in my depth debugging emulators or console games.
After running through all of those options, I then played the game while monitoring the log, and I see that when the music is acting weird, the log shows the emulator is repeatedly switching between reading from the level's .stm music file and another music file, common.stm. Most evidently, when I beat the level and the end of mission menu music is playing, the emulator only accesses from the common.stm file and the reads continue uninterrupted. This, to me, seems like the emulator is having difficulty accurately replicating the correct behavior for dynamic presentation of music files, perhaps when trying to fade in and out using different assets.
I would love to test a different game that uses dynamic music cuing to see if the issue is game specific, but I don't know what games to look for.
I attached a snippet from my log output showing the game loading into a level, playing for a bit, and then the game moving to the mission complete menu where you can save, continue to the next level, quit, etc.
AMSW example log events.txt (Size: 44.16 KB / Downloads: 20)
Windows 10 Pro (22H2) x64
Intel i5-6500 @ 3.2Ghz
Nvidia GTX1060 6GB
Corsair Vengeance 2x8GB DDR4-2400MHz C14 @ 2133MHz
Emulator ran from Crucial M.2 NVMe SDD
Dolphin R2407-x64