【补丁使用】
该补丁将修改同目录下的Sango2.exe。请将补丁放在Sango2.exe同一目录下，并运行补丁。
修改有风险，请注意备份。

【说明】
本修改来自@一马双跨到西凉 。为实现调整音乐音量，代码有改动。

选取西凉改法而非石岛街人改法，理由是后者似乎强制要求有MOVIE文件夹；考虑到玩家惰性，感觉不是个好主意。

此处修改了4个地方：
1. 修改了453CE2（PlaySound_0）函数，该函数用于播放指定编号的音轨文件。西凉修改了该函数，其功能变为：
	a) 得到音乐MP3文件的路径；
	b) 检查当前正在播放的音乐，如果新的音乐与原来相同，则什么也不做；
	c) 如果正在播放音乐且与新的音乐不同，则停止原来的音乐，然后调用453E95函数。
	停止音乐使用mciSendCommandA()系统函数并指定行为MCI_STOP.
2. 修改了453E95函数，该函数用于打开并播放指定的音乐文件。
	打开音乐文件使用mciSendCommandA()系统函数发送MCI_OPEN，这样可以得到一个mciID，它与特定的音乐文件相关联。
	播放音乐文件使用mciSendCommandA()系统函数发送MCI_PLAY。
	在西凉的基础上，我在开始播放音乐后，立即按照当前的音乐音量设置调整其音量，即调用修改后的45413F（SetMusicVolume）函数。
3. 新增453EF7（原西凉的453EE9）函数，用于侦听系统的MM_MCINOTIFY事件，以在音乐播放完成时重播（循环播放）。
	该函数功能上和西凉的原代码相同，但因为前面的453E95函数加了一截代码，因此需要往后顺延。
	该函数代替了原EXE的44FEA0（InputHandle）函数，它是40AE70（Sango2WindowProc）事件侦听函数的default case，后者用于侦听系统事件，且当事件不属于特定需要处理的事件时，交由InputHandle函数处理。因此注入该函数可以新增我们自己的事件侦听逻辑。
	由于该函数代替了InputHandle函数，因此：
	a) 原40AE70（Sango2WindowProc）函数中，40AFFC位置的函数调用改为指向453EF7；
	b) 在本函数453EF7的末尾，直接跳转到44FEA0函数的开头部分（跳过push ebp; mov ebp, esp），以省去重复压栈的空间。
	函数自身做的事情是：
	a) 使用mciSendCommandA()系统函数发送MCI_SEEK，将音乐“倒带”至开头；
	b) 使用mciSendCommandA()系统函数发送MCI_PLAY，开始播放音乐。
	这里由于mciID没有变化，因此不需要重新调整音量。
4. 原“设定选项”中设置“音效音量”的部分，实际上是直接修改系统音量合成器中群2游戏的音量；在窗口化下打开系统音量合成器，拖动音效音量时，可以看到群2游戏的系统音量也会跟着变化。因此，不可能单独修改音效音量；唯一的办法是修改音乐音量。
	目标函数45413F（SetMusicVolume）。使用mciSendCommandA系统函数发送MCI_SETAUDIO指令，为当前的mciID调整音量。该mciID是和特定的音乐文件捆绑在一起的，因此不会影响音效的音量。这样就解决了。此外，注意新播放的音乐也需要调整，因此需要在453E95函数的末尾，开始播放音乐后，追加调整音乐音量（前已述）。

这样修改后，“音效音量”实际上成为“主音量”，但可以单独调整“音乐音量”了。


【UE（并不快速的）修改】
如果您因一些原因无法或不愿意使用补丁程序，您也可以使用UltraEdit打开Sango2.EXE，直接按如下方法修改相应地址处的内容。

A3FD: F6 8E

530E5: 8B 45 08 3B 05 94 67 4A 00 74 4B A3 94 67 4A 00 50 68 5B 3D 45 00 68 E0 39 4C 00 E8 DB 9D 01 00 83 C4 0C 83 3D A4 24 49 00 FF 74 23 33 C0 A3 80 7C 4C 00 68 80 7C 4C 00 6A 00 68 04 08 00 00 FF 35 A4 24 49 00 FF 15 8C 45 4D 00 85 C0 75 07 E8 5C 01 00 00 EB 03 31 C0 48 8B E5 5D C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 6D 70 33 5C 25 30 32 64 2E 6D 70 33 00 90

53295: 31 C0 B9 A0 7C 4C 00 89 01 89 41 08 B8 E0 39 4C 00 89 41 0C 51 68 02 03 00 00 68 03 08 00 00 6A 00 90 FF 15 8C 45 4D 00 85 C0 75 35 8B 15 A4 7C 4C 00 89 15 A4 24 49 00 A1 F0 66 4A 00 B9 80 7C 4C 00 89 01 51 6A 01 68 06 08 00 00 52 FF 15 8C 45 4D 00 FF 35 20 CD 48 00 E8 4C 02 00 00 83 C4 04 C3 55 89 E5 8B 45 0C 3D B9 03 00 00 75 51 83 7D 10 01 75 4B 31 C0 83 EC 10 89 45 F0 89 45 F4 89 45 F8 8D 45 F0 50 68 02 01 00 00 68 07 08 00 00 FF 35 A4 24 49 00 FF 15 8C 45 4D 00 B9 80 7C 4C 00 A1 F0 66 4A 00 89 01 51 6A 01 68 06 08 00 00 FF 35 A4 24 49 00 FF 15 8C 45 4D 00 83 C4 10 E9 49 BF FF FF 90 90 90 90 90

53548: 69 C0 E8 03 00 00 C1 F8 08 89 45 FC 31 C0 8B 15 F0 66 4A 00 89 55 E4 C7 45 E8 02 40 00 00 8B 55 FC 89 55 EC 89 45 F0 89 45 F4 89 45 F8 8D 4D E4 51 68 00 00 80 01 68 73 08 00 00 8B 0D A4 24 49 00 51 FF 15 8C 45 4D 00 89 EC 5D C3 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
