| 195 | } |
| 196 | |
| 197 | static S32 zMusicDo(S32 track) |
| 198 | { |
| 199 | S32 snd_enum; |
| 200 | F32 vol; |
| 201 | F32 pitch; |
| 202 | |
| 203 | vol = 1.0f; |
| 204 | if (globals.NoMusic != FALSE) |
| 205 | { |
| 206 | return 0; |
| 207 | } |
| 208 | |
| 209 | snd_enum = xrand() % 0x18; |
| 210 | switch (sMusicQueueData[track]->situation) |
| 211 | { |
| 212 | case 3: |
| 213 | case 5: |
| 214 | snd_enum = sMusicQueueData[track]->music_enum; |
| 215 | break; |
| 216 | case 6: |
| 217 | snd_enum = sMusicQueueData[track]->music_enum; |
| 218 | break; |
| 219 | case 0: |
| 220 | snd_enum = getCurrLevelMusicEnum(); |
| 221 | break; |
| 222 | case 7: |
| 223 | snd_enum = sMusicLastEnum[0]; |
| 224 | break; |
| 225 | case 2: |
| 226 | snd_enum = 1; |
| 227 | break; |
| 228 | case 4: |
| 229 | break; |
| 230 | default: |
| 231 | snd_enum = xrand() % 0x18; |
| 232 | } |
| 233 | |
| 234 | if (sMusicTrack[track].snd_id != 0) |
| 235 | { |
| 236 | xSndStop(sMusicTrack[track].snd_id); |
| 237 | sMusicTrack[track].snd_id = 0; |
| 238 | } |
| 239 | |
| 240 | sMusicTrack[track].loop = sMusicSoundID[snd_enum][1]; |
| 241 | |
| 242 | pitch = 0.0f; |
| 243 | if (snd_enum == 9 && globals.scenePreload->sceneID == 'KF04') |
| 244 | { |
| 245 | pitch = -12.0f; |
| 246 | vol *= 0.7f; |
| 247 | } |
| 248 | |
| 249 | // FIXME: loop operator |
| 250 | U32 snd_id = sMusicSoundID[snd_enum][track]; |
| 251 | sMusicTrack[track].snd_id = |
| 252 | xSndPlay(snd_id, vol, pitch, 0xFF, sMusicTrack[track].loop, 0, SND_CAT_MUSIC, 0.0f); |
| 253 | |
| 254 | // FIXME: This isn't quite right |
no test coverage detected