static void Driver_Music_LoadFile(const char *musicName) { Driver *music = g_driverMusic; Driver *sound = g_driverSound; Driver_Music_Stop(); if (music->index == 0xFFFF) return; if (music->content == sound->content) { music->content = NULL; music->filename = NULL; music->contentMalloced = false; } else { Driver_UnloadFile(music); } if (sound->filename != NULL && musicName != NULL && strcasecmp(Drivers_GenerateFilename(musicName, music), sound->filename) == 0) { g_driverMusic->content = g_driverSound->content; g_driverMusic->filename = g_driverSound->filename; g_driverMusic->contentMalloced = g_driverSound->contentMalloced; return; } Driver_LoadFile(musicName, music); }
void Driver_Sound_LoadFile(const char *musicName) { Driver *sound = g_driverSound; Driver *music = g_driverMusic; Driver_Sound_Stop(); if (sound->index == 0xFFFF) return; if (sound->content == music->content) { sound->content = NULL; sound->filename = NULL; sound->contentMalloced = false; } else { Driver_UnloadFile(sound); } if (music->filename != NULL) { char *filename; filename = Drivers_GenerateFilename(musicName, sound); if (strcasecmp(filename, music->filename) == 0) { sound->content = music->content; sound->filename = music->filename; sound->contentMalloced = music->contentMalloced; return; } } Driver_LoadFile(musicName, sound); }
static void Drivers_SoundMusic_Uninit() { Driver *sound = g_driverSound; Driver *music = g_driverMusic; if (music->index != 0xFFFF) { MSBuffer *buffer = g_bufferMusic; if (buffer->index != 0xFFFF) { MPU_Stop(buffer->index); MPU_ClearData(buffer->index); buffer->index = 0xFFFF; } free(buffer->buffer); buffer->buffer = NULL; } if (sound->index != 0xFFFF) { uint8 i; for (i = 0; i < 4; i++) { MSBuffer *buffer = g_bufferSound[i]; if (buffer->index != 0xFFFF) { MPU_Stop(buffer->index); MPU_ClearData(buffer->index); buffer->index = 0xFFFF; } free(buffer->buffer); buffer->buffer = NULL; } } if (music->content != sound->content) Driver_UnloadFile(music); Driver_UnloadFile(sound); /* Only Uninit() sound, as music is a copy of sound. */ Drivers_Uninit(sound); memcpy(music, sound, sizeof(Driver)); Timer_Remove(MPU_Interrupt); MPU_Uninit(); }
void Driver_LoadFile(const char *musicName, Driver *driver) { char *filename; filename = Drivers_GenerateFilename(musicName, driver); if (filename == NULL) return; Driver_UnloadFile(driver); driver->filename = malloc(strlen(filename) + 1); strcpy(driver->filename, filename); driver->content = File_ReadWholeFile(filename); driver->contentMalloced = true; }