/** * Play a sound of type "event". */ static void play_sound(game_event_type type, game_event_data *data, void *user) { int s, sound_id; if (hooks.play_sound_hook) { /* Paranoia */ assert(data->message.type >= 0); if (!message_sounds[data->message.type].num_sounds) return; /* No sounds for this message */ s = randint0(message_sounds[data->message.type].num_sounds); sound_id = message_sounds[data->message.type].sound_ids[s]; assert((sound_id >= 0) && (sound_id < next_sound_id)); /* Ensure the sound is loaded before we play it */ if (!sounds[sound_id].loaded) load_sound(&sounds[sound_id]); /* Only bother playing it if the platform can */ if (sounds[sound_id].loaded) hooks.play_sound_hook(&sounds[sound_id]); } }
void recurse_dir(char *path) { DIR *dir = opendir(path); if(dir == NULL) errx(-1, "Can't open directory '%s'", path); struct dirent *dp; while((dp = readdir(dir)) != NULL) { char *buf = malloc(strlen(path) + strlen(dp->d_name)+2); strcpy(buf, path); strcat(buf, "/"); strcat(buf, dp->d_name); struct stat statbuf; stat(buf, &statbuf); if(S_ISDIR(statbuf.st_mode) && dp->d_name[0] != '.') { recurse_dir(buf); } else if(strcmp(dp->d_name + strlen(dp->d_name)-4, ".png") == 0) { if(strncmp(dp->d_name, "ani_", 4) == 0) init_animation(buf); else load_texture(buf); } else if(strcmp(dp->d_name + strlen(dp->d_name)-4, ".wav") == 0) { load_sound(buf); } else if(strcmp(dp->d_name + strlen(dp->d_name)-4, ".sha") == 0) { load_shader_file(buf); } else if(strcmp(dp->d_name + strlen(dp->d_name)-4, ".obj") == 0) { load_model(buf); } free(buf); } closedir(dir); }
// seg000:0C5E void __pascal far load_opt_sounds(int first,int last) { // stub dat_type* ibm_dat = NULL; dat_type* digi_dat = NULL; dat_type* midi_dat = NULL; short current; ibm_dat = open_dat("IBM_SND2.DAT", 0); if (sound_flags & sfDigi) { digi_dat = open_dat("DIGISND2.DAT", 0); } if (sound_flags & sfMidi) { midi_dat = open_dat("MIDISND2.DAT", 0); } for (current = first; current <= last; ++current) { //We don't free sounds, so load only once. if (sound_pointers[current] != NULL) continue; /*if (demo_mode) { sound_pointers[current] = decompress_sound((sound_buffer_type*) load_from_opendats_alloc(current + 10000)); } else*/ { //sound_pointers[current] = (sound_buffer_type*) load_from_opendats_alloc(current + 10000, "bin", NULL, NULL); //printf("overwriting sound_pointers[%d] = %p\n", current, sound_pointers[current]); sound_pointers[current] = load_sound(current); } } if (midi_dat) close_dat(midi_dat); if (digi_dat) close_dat(digi_dat); close_dat(ibm_dat); }
bool load_media() { // prevent undefined shit with media for (int i=0;i<255;i++) { BITMAPS[i] = NULL; SOUNDS[i] = NULL; } FONT_GEORGIA = TTF_OpenFont("data//font//georgia.ttf", 16); if (FONT_GEORGIA == NULL){ printf("Unable to load font: %s %s \n", "data//font//georgia.ttf", TTF_GetError()); // Handle the error here. } // load images BITMAPS[IMG_INTRO] = load_bitmap("data//img//titlescreen.png"); BITMAPS[IMG_MAIN_MENU] = load_bitmap("data//img//mainmenu.png"); BITMAPS[IMG_HISTORY] = load_bitmap("data//img//history.png"); BITMAPS[IMG_NAMING] = load_bitmap("data//img//blank.png"); BITMAPS[IMG_CLASS] = load_bitmap("data//img//class.png"); BITMAPS[IMG_INITIAL_BUYING] = load_bitmap("data//img//blank.png"); BITMAPS[IMG_HIGH_SEAS_1] = load_bitmap("data//img//high_seas_1.png"); BITMAPS[IMG_HIGH_SEAS_2] = load_bitmap("data//img//high_seas_2.png"); BITMAPS[IMG_ENDSCREEN] = load_bitmap("data//img//endscreen.png"); BITMAPS[IMG_BECALMED] = load_bitmap("data//img//becalmed.png"); BITMAPS[IMG_VINLAND_REACHED] = load_bitmap("data//img//vinland.png"); BITMAPS[IMG_SCURVY] = load_bitmap("data//img//scurvy.png"); BITMAPS[IMG_BOAT_DAMAGED] = load_bitmap("data//img//boatdamage.png"); BITMAPS[IMG_BERGEN] = load_bitmap("data//img//landmark1.png"); BITMAPS[IMG_REYKYAVIK] = load_bitmap("data//img//landmark2.png"); BITMAPS[IMG_GREENLAND] = load_bitmap("data//img//landmark3.png"); BITMAPS[IMG_WHALING] = load_bitmap("data//img//whaling.png"); BITMAPS[IMG_FISHING] = load_bitmap("data//img//fishing.png"); BITMAPS[IMG_PILLAGE] = load_bitmap("data//img//pillage.png"); BITMAPS[IMG_BUYING] = load_bitmap("data//img//blank.png"); BITMAPS[IMG_REPAIR] = load_bitmap("data//img//blank.png"); BITMAPS[IMG_BEICED] = load_bitmap("data//img//beiced.png"); //load sounds SOUNDS[SND_MAIN_MENU] = load_sound("data//snd//menu.ogg"); SOUNDS[SND_OPENING] = load_sound("data//snd//opening.ogg"); SOUNDS[SND_VICTORY] = load_sound("data//snd//victory.ogg"); return true; }
void initialize_player(struct obj *self) { Mix_Chunk *sound = load_sound("electric_1.wav"); CHECK_EXTRA_STRUCT(self,sizeof(struct player_extra), struct player_extra, .keystate = SDL_GetKeyboardState(NULL), .gunSound = sound); cpBodyEachShape(self->body, shape_set_collision_type, CT_PLAYER); printf("old volume: %d", sound, -1); self->room->viewport.focus = self->body; self->room->viewport.focusLast = cpBodyGetPosition(self->body); }
// Initialize OpenGL void init() { glClearColor(1.0f, 1.0f, 1.0f, 1.0f); glClearDepth(100.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glShadeModel(GL_SMOOTH); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0); load_image(); load_sound(); printf("\nJalankan aplikasi.\n"); }
static t_env *init_env(int **map) { t_env *e; e = (t_env*)malloc(sizeof(t_env) * 1); ft_init_sdl(e); ft_create_win_sdl(e, 0, 0); e->rend = ft_init_renderer(e); e->map = map; init_cam(&e->cam); init_keys(e); load_image(e, "ressources/menu.bmp"); load_sound(e, "ressources/test.wav"); return (e); }
static duk_ret_t js_LoadSound(duk_context* ctx) { duk_int_t n_args = duk_get_top(ctx); const char* filename = duk_require_string(ctx, 0); duk_bool_t is_stream = n_args >= 2 ? duk_require_boolean(ctx, 1) : true; sound_t* sound; char* sound_path; sound_path = get_asset_path(filename, "sounds", false); sound = load_sound(sound_path, is_stream); free(sound_path); if (sound == NULL) duk_error_ni(ctx, -1, DUK_ERR_ERROR, "LoadSound(): Failed to load sound file '%s'", filename); duk_push_sphere_sound(ctx, sound); free_sound(sound); return 1; }
// seg000:0B72 void __pascal far load_sounds(int first,int last) { dat_type* ibm_dat = NULL; dat_type* digi1_dat = NULL; // dat_type* digi2_dat = NULL; dat_type* digi3_dat = NULL; dat_type* midi_dat = NULL; short current; ibm_dat = open_dat("IBM_SND1.DAT", 0); if (sound_flags & sfDigi) { digi1_dat = open_dat("DIGISND1.DAT", 0); // digi2_dat = open_dat("DIGISND2.DAT", 0); digi3_dat = open_dat("DIGISND3.DAT", 0); } if (sound_flags & sfMidi) { midi_dat = open_dat("MIDISND1.DAT", 0); } #ifdef USE_MIXER load_sound_names(); #endif for (current = first; current <= last; ++current) { if (sound_pointers[current] != NULL) continue; /*if (demo_mode) { sound_pointers[current] = decompress_sound((sound_buffer_type*) load_from_opendats_alloc(current + 10000)); } else*/ { //sound_pointers[current] = (sound_buffer_type*) load_from_opendats_alloc(current + 10000, "bin", NULL, NULL); //printf("overwriting sound_pointers[%d] = %p\n", current, sound_pointers[current]); sound_pointers[current] = load_sound(current); } } if (midi_dat) close_dat(midi_dat); if (digi1_dat) close_dat(digi1_dat); // if (digi2_dat) close_dat(digi2_dat); if (digi3_dat) close_dat(digi3_dat); close_dat(ibm_dat); }
void init(void) { int i; randomize(); printf("-------------------------------------------\n"); printf("Sound Mixing Library v1.21 by Ethan Brodsky\n"); if (!detect_settings(&baseio, &irq, &dma, &dma16)) { printf("ERROR: Invalid or non-existant BLASTER environment variable!\n"); exit(EXIT_FAILURE); } else { if (!init_sb(baseio, irq, dma, dma16)) { printf("ERROR: Error initializing sound card!\n"); exit(EXIT_FAILURE); } } printf("BaseIO=%Xh IRQ%u DMA8=%u DMA16=%u\n", baseio, irq, dma, dma16); printf("DSP version %.2f: ", dspversion); if (sixteenbit) printf("16-bit, "); else printf("8-bit, "); if (autoinit) printf("Auto-initialized\n"); else printf("Single-cycle\n"); if (!init_xms()) { printf("ERROR: Can not initialize extended memory\n"); printf("HIMEM.SYS must be installed\n"); exit(EXIT_FAILURE); } else { printf("Extended memory successfully initialized\n"); printf("Free XMS memory: %uk ", getfreexms()); if (!getfreexms()) { printf("ERROR: Insufficient free XMS\n"); exit(EXIT_FAILURE); } else { printf("Loading sounds\n"); #ifdef SHAREDEMB init_sharing(); #endif open_sound_resource_file(resource_file); for (i=0; i < NUMSOUNDS; i++) load_sound(&(sound[i]), sound_key[i]); atexit(ourexitproc); close_sound_resource_file(); } } init_mixing(); printf("\n"); }
void load_all_sounds() { /*load_sound(ANGEL_OF_DEATH, "sounds/angel_of_death.ogg");*/ load_sound(DETH_SOUND, "sounds/dethbleep.ogg"); }
void Sound::init_sounds() { load_sound("sounds/wall.wav", "Wall_Hit"); load_sound("sounds/line_complete.wav", "Line_Complete"); }
/* Load graphics/sounds shared between all levels: */ void loadshared() { int i; sprite_manager = new SpriteManager(datadir + "/supertux.strf"); music_manager = new MusicManager(); music_manager->enable_music(use_music); /* Tuxes: */ smalltux_star = sprite_manager->load("smalltux-star"); largetux_star = sprite_manager->load("largetux-star"); smalltux_gameover = sprite_manager->load("smalltux-gameover"); smalltux.stand_left = sprite_manager->load("smalltux-stand-left"); smalltux.stand_right = sprite_manager->load("smalltux-stand-right"); smalltux.walk_left = sprite_manager->load("smalltux-walk-left"); smalltux.walk_right = sprite_manager->load("smalltux-walk-right"); smalltux.jump_left = sprite_manager->load("smalltux-jump-left"); smalltux.jump_right = sprite_manager->load("smalltux-jump-right"); smalltux.kick_left = sprite_manager->load("smalltux-kick-left"); smalltux.kick_right = sprite_manager->load("smalltux-kick-right"); smalltux.skid_left = sprite_manager->load("smalltux-skid-left"); smalltux.skid_right = sprite_manager->load("smalltux-skid-right"); smalltux.grab_left = sprite_manager->load("smalltux-grab-left"); smalltux.grab_right = sprite_manager->load("smalltux-grab-right"); largetux.stand_left = sprite_manager->load("largetux-stand-left"); largetux.stand_right = sprite_manager->load("largetux-stand-right"); largetux.walk_left = sprite_manager->load("largetux-walk-left"); largetux.walk_right = sprite_manager->load("largetux-walk-right"); largetux.jump_left = sprite_manager->load("largetux-jump-left"); largetux.jump_right = sprite_manager->load("largetux-jump-right"); largetux.kick_left = sprite_manager->load("largetux-kick-left"); largetux.kick_right = sprite_manager->load("largetux-kick-right"); largetux.skid_right = sprite_manager->load("largetux-skid-right"); largetux.skid_left = sprite_manager->load("largetux-skid-left"); largetux.grab_left = sprite_manager->load("largetux-grab-left"); largetux.grab_right = sprite_manager->load("largetux-grab-right"); largetux.duck_left = sprite_manager->load("largetux-duck-left"); largetux.duck_right = sprite_manager->load("largetux-duck-right"); firetux.stand_left = sprite_manager->load("firetux-stand-left"); firetux.stand_right = sprite_manager->load("firetux-stand-right"); firetux.walk_left = sprite_manager->load("firetux-walk-left"); firetux.walk_right = sprite_manager->load("firetux-walk-right"); firetux.jump_left = sprite_manager->load("firetux-jump-left"); firetux.jump_right = sprite_manager->load("firetux-jump-right"); firetux.kick_left = sprite_manager->load("firetux-kick-left"); firetux.kick_right = sprite_manager->load("firetux-kick-right"); firetux.skid_right = sprite_manager->load("firetux-skid-right"); firetux.skid_left = sprite_manager->load("firetux-skid-left"); firetux.grab_left = sprite_manager->load("firetux-grab-left"); firetux.grab_right = sprite_manager->load("firetux-grab-right"); firetux.duck_left = sprite_manager->load("firetux-duck-left"); firetux.duck_right = sprite_manager->load("firetux-duck-right"); /* Water: */ img_water = new Surface(datadir + "/images/shared/water.png", IGNORE_ALPHA); img_waves[0] = new Surface(datadir + "/images/shared/waves-0.png", USE_ALPHA); img_waves[1] = new Surface(datadir + "/images/shared/waves-1.png", USE_ALPHA); img_waves[2] = new Surface(datadir + "/images/shared/waves-2.png", USE_ALPHA); /* Pole: */ img_pole = new Surface(datadir + "/images/shared/pole.png", USE_ALPHA); img_poletop = new Surface(datadir + "/images/shared/poletop.png", USE_ALPHA); /* Flag: */ img_flag[0] = new Surface(datadir + "/images/shared/flag-0.png", USE_ALPHA); img_flag[1] = new Surface(datadir + "/images/shared/flag-1.png", USE_ALPHA); /* Cloud: */ img_cloud[0][0] = new Surface(datadir + "/images/shared/cloud-00.png", USE_ALPHA); img_cloud[0][1] = new Surface(datadir + "/images/shared/cloud-01.png", USE_ALPHA); img_cloud[0][2] = new Surface(datadir + "/images/shared/cloud-02.png", USE_ALPHA); img_cloud[0][3] = new Surface(datadir + "/images/shared/cloud-03.png", USE_ALPHA); img_cloud[1][0] = new Surface(datadir + "/images/shared/cloud-10.png", USE_ALPHA); img_cloud[1][1] = new Surface(datadir + "/images/shared/cloud-11.png", USE_ALPHA); img_cloud[1][2] = new Surface(datadir + "/images/shared/cloud-12.png", USE_ALPHA); img_cloud[1][3] = new Surface(datadir + "/images/shared/cloud-13.png", USE_ALPHA); /* Bad guys: */ load_badguy_gfx(); /* Upgrades: */ load_special_gfx(); /* Distros: */ img_distro[0] = new Surface(datadir + "/images/tilesets/coin1.png", USE_ALPHA); img_distro[1] = new Surface(datadir + "/images/tilesets/coin2.png", USE_ALPHA); img_distro[2] = new Surface(datadir + "/images/tilesets/coin3.png", USE_ALPHA); img_distro[3] = new Surface(datadir + "/images/tilesets/coin2.png", USE_ALPHA); /* Tux life: */ tux_life = new Surface(datadir + "/images/shared/tux-life.png", USE_ALPHA); /* Sound effects: */ /* if (use_sound) // this will introduce SERIOUS bugs here ! because "load_sound" // initialize sounds[i] with the correct pointer's value: // NULL or something else. And it will be dangerous to // play with not-initialized pointers. // This is also true with if (use_music) Send a mail to me: [email protected], if you have another opinion. :) */ for (i = 0; i < NUM_SOUNDS; i++) sounds[i] = load_sound(datadir + soundfilenames[i]); /* Herring song */ herring_song = music_manager->load_music(datadir + "/music/SALCON.MOD"); level_end_song = music_manager->load_music(datadir + "/music/leveldone.mod"); }
size_t sound_archive::get_sound_duration(size_t iIndex) { SDL_RWops *pFile = load_sound(iIndex); if(!pFile) return 0; uint16_t iWaveAudioFormat = 0; uint16_t iWaveChannelCount = 0; uint32_t iWaveSampleRate = 0; uint32_t iWaveByteRate = 0; uint16_t iWaveBlockAlign = 0; uint16_t iWaveBitsPerSample = 0; uint32_t iWaveDataLength = 0; // This is a very crude RIFF parser, but it does the job. uint32_t iFourCC; uint32_t iChunkLength; for(;;) { if(SDL_RWread(pFile, &iFourCC, 4, 1) != 1) break; if(SDL_RWread(pFile, &iChunkLength, 4, 1) != 1) break; if(iFourCC == FOURCC('R','I','F','F') || iFourCC == FOURCC('L','I','S','T')) { if(iChunkLength >= 4) { if(SDL_RWread(pFile, &iFourCC, 4, 1) != 1) break; else continue; } } if(iFourCC == FOURCC('f','m','t',' ') && iChunkLength >= 16) { if(SDL_RWread(pFile, &iWaveAudioFormat, 2, 1) != 1) break; if(SDL_RWread(pFile, &iWaveChannelCount, 2, 1) != 1) break; if(SDL_RWread(pFile, &iWaveSampleRate, 4, 1) != 1) break; if(SDL_RWread(pFile, &iWaveByteRate, 4, 1) != 1) break; if(SDL_RWread(pFile, &iWaveBlockAlign, 2, 1) != 1) break; if(SDL_RWread(pFile, &iWaveBitsPerSample, 2, 1) != 1) break; iChunkLength -= 16; } //Finally: if(iFourCC == FOURCC('d','a','t','a')) { iWaveDataLength = iChunkLength; break; } if(SDL_RWseek(pFile, iChunkLength + (iChunkLength & 1), RW_SEEK_CUR) == -1) { break; } } SDL_RWclose(pFile); if(iWaveAudioFormat != 1 || iWaveChannelCount == 0 || iWaveSampleRate == 0 || iWaveDataLength == 0 || iWaveBitsPerSample == 0) { return 0; } #define mul64(a, b) (static_cast<uint64_t>(a) * static_cast<uint64_t>(b)) return static_cast<size_t>(mul64(iWaveDataLength, 8000) / mul64(mul64(iWaveBitsPerSample, iWaveChannelCount), iWaveSampleRate)); #undef mul64 }
/** * Parse a string of sound names provided by the preferences parser and: * - Allocate a unique 'sound id' to any new sounds and add them to the * 'sounds' array. * - Add each sound assigned to a message type to that message types * 'sound map */ void message_sound_define(u16b message_id, const char *sounds_str) { char *search; char *str; char *cur_token; char *next_token; u16b sound_id = 0; u32b hash; int i; bool found = false; /* Delete any existing mapping of message id to sound ids */ message_sounds[message_id].num_sounds = 0; /* sounds_str is a space separated list of sound names */ str = cur_token = string_make(sounds_str); search = strchr(cur_token, ' '); if (search) { search[0] = '\0'; next_token = search + 1; } else { next_token = NULL; } /* Find all the sample names and add them one by one */ while (cur_token) { found = false; /* Have we already processed this sound name? */ hash = djb2_hash(cur_token); i = 0; while ((!found) && (i < next_sound_id)) { if (sounds[i].hash == hash) { if (!strcmp(sounds[i].name, cur_token)) { found = true; sound_id = i; } } i++; } if (!found) { sound_id = next_sound_id; /* Add the new sound to the sound list and load it */ if (grow_sound_list()) { sounds[sound_id].name = string_make(cur_token); sounds[sound_id].hash = hash; if (preload_sounds) load_sound(&sounds[sound_id]); } next_sound_id++; } /* Add this sound (by id) to the message->sounds map */ if (message_sounds[message_id].num_sounds < (MAX_SOUNDS_PER_MESSAGE - 1)) { message_sounds[message_id].sound_ids[message_sounds[message_id].num_sounds] = sound_id; message_sounds[message_id].num_sounds++; } /* Figure out next token */ cur_token = next_token; if (next_token) { /* Try to find a space */ search = strchr(cur_token, ' '); /* If we can find one, terminate, and set new "next" */ if (search) { search[0] = '\0'; next_token = search + 1; } else { /* Otherwise prevent infinite looping */ next_token = NULL; } } } string_free(str); }