TheAssemblyArmada / Vanilla-Conquer

Vanilla Conquer provides clean, cross-platform builds of the C&C Remastered Collection and the standalone legacy games.
Other
343 stars 52 forks source link

Vanilla RA: Music stops when starting skirmish or multiplayer game #719

Open tore29 opened 2 years ago

tore29 commented 2 years ago

Music stops when starting a skirmish or multiplayer game

Steps to reproduce:

  1. Start a skirmish or multiplayer game
  2. No music is playing

Music should play when starting any game

Gerwin2k commented 2 years ago

I can reproduce the other RA save/load music issue that you filed today, but cannot reproduce this one. Here both in TD and RA music starts playing in Skirmish mode automatically.

Using DEV Build: vanilla-conquer-win-gcc-i686-edb8391.zip

Gerwin2k commented 2 years ago

I tested it some more it and it seems that music on multiplayer/skirmish maps only auto-starts with certain map numbers. When I extract map 'Green Acres' SCM01EA and give it number SCM19EA, the music still auto-starts. Give it number SCM20EA or higher: no music. Does anyone know where this logic is hardcoded?

Gerwin2k commented 2 years ago

I found it. The logic that determines the music in skirmish is in line 90 of tiberiandawn\scenario.cpp

The "< 20" there limits the music to map scm19ea and lower. The song that gets chosen is 19 lines below: THEME_AOI = Act On Instinct.

As for any of the multiplayer modes, in tiberiandawn\init.cpp after line 1110 it sets "Options.ScoreVolume = 0;" on purpose for these game modes.

I have no suggestion yet. Just pointing out the cause.

        if (Scenario < 20 && (!Special.IsJurassic || !AreThingiesEnabled)) {
            if (Scenario != 1 || Whom == HOUSE_GOOD) {
                Play_Movie(IntroMovie);
            }
#ifndef REMASTER_BUILD
            if (Scenario > 1 || Whom == HOUSE_BAD) {
                if (briefing) {
                    PreserveVQAScreen = (Scenario == 1);
                    Play_Movie(BriefMovie);
                }
            }
#else
            if (briefing) {
                PreserveVQAScreen = (Scenario == 1);
                Play_Movie(BriefMovie);
            }
#endif
            Play_Movie(ActionMovie, TransitTheme);
            if (TransitTheme == THEME_NONE) {
                Theme.Queue_Song(THEME_AOI);
            }
        } else {
            Play_Movie(BriefMovie);
            Play_Movie(ActionMovie, TransitTheme);
OmniBlade commented 2 years ago

@tore29 I believe this is partly the result of an OG bug from the 3.xx patches that sets the multiplayer volume to 0 in the options constructor. If you change the line MultiplayerScoreVolume in your redalert.ini to something other than 0 it should be fixed. however it looks like there is an options bug that over writes the changes to redalert.ini on exit if they are changed within the game.

Gerwin2k commented 2 years ago

Seems I drifted off to VanillaTD without this issue originally being linked to TD, only RA. Should I file that in another ticket, with TD prefix, or can it remain here?

OmniBlade commented 2 years ago

@Gerwin2k Best make a separate issue since the causes of the two differ, just put this issues number in the new one and they will be linked so its easy to follow the discussion.

tore29 commented 1 year ago

Hmm this seems to still happen with the latest release (https://github.com/TheAssemblyArmada/Vanilla-Conquer/commit/83c152c43497223da3adad2e52e2221efd9087c4).

I start up skirmish on A Path Beyond and no music, when I check the options menu the music volume is 0. MultiplayerScoreVolume=1 is set in redalert.ini.