SoundManager::SoundManager() { const char FileAmbiente[] = "resources/sound/wavs/pacman.ogg\0"; const char FilePaso[] = "resources/sound/wavs/paso.wav\0"; const char FileBoing[] = "resources/sound/wavs/boing.ogg\0"; const char FilePD[] = "resources/sound/wavs/playerdead.ogg\0"; const char FileBola[] = "resources/sound/wavs/bola.ogg\0"; if( !FSOUND_Init(44000, 8, 0) ) { Log::Instance().Write("Error inicializando sonido: %d\n", FSOUND_GetError()); } Ambiente = FSOUND_Sample_Load(FSOUND_UNMANAGED, FileAmbiente, FSOUND_LOOP_NORMAL | FSOUND_NORMAL | FSOUND_HW2D, 0, 0); if( !Ambiente ) Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FileAmbiente); Paso = FSOUND_Sample_Load(FSOUND_UNMANAGED, FilePaso, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0); if( !Paso ) Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FilePaso); Boing = FSOUND_Sample_Load(FSOUND_UNMANAGED, FileBoing, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0); if( !Boing ) Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FileBoing); PlayerDead = FSOUND_Sample_Load(FSOUND_UNMANAGED, FilePD, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0); if( !PlayerDead ) Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FilePD); Bola = FSOUND_Sample_Load(FSOUND_UNMANAGED, FileBola, FSOUND_LOOP_OFF | FSOUND_NORMAL | FSOUND_HW2D, 0, 0); if( !Bola ) Log::Instance().Write("Error %d cargando fichero de sonido %s", FSOUND_GetError(), FileBola); // FSOUND_PlaySound(FSOUND_FREE, Ambiente); }
void StaticEvent(struct s_map *map, struct s_lib_sprite *libsprite, struct s_lib_event *libevent) { unsigned int i; GET_MAPEVENT(6,12,map,libevent).type=EVENT_TELEPORT; GET_MAPEVENT(6,12,map,libevent).onaction=EVENT_ACTION_AUTO; GET_MAPEVENT(6,12,map,libevent).proba=100; GET_MAPEVENT(6,12,map,libevent).player_anim=-1; GET_MAPEVENT(6,12,map,libevent).sound=FSOUND_Sample_Load(FSOUND_FREE,EVENT_SON,FSOUND_NORMAL,0,0); GET_MAPEVENT(6,12,map,libevent).is_unique=0; GET_MAPEVENT(6,12,map,libevent).next=NULL; GET_MAPEVENT(6,12,map,libevent).param=calloc(1,sizeof(struct s_event_param_teleport)); ((struct s_event_param_teleport*)GET_MAPEVENT(6,12,map,libevent).param)->filename=(char*)strdup("map/village"); ((struct s_event_param_teleport*)GET_MAPEVENT(6,12,map,libevent).param)->startX=88*32; ((struct s_event_param_teleport*)GET_MAPEVENT(6,12,map,libevent).param)->startY=3*32; GET_MAPEVENT(2,4,map,libevent).type=EVENT_CHANGETILE; GET_MAPEVENT(2,4,map,libevent).onaction=EVENT_ACTION_ONKEYPRESS; GET_MAPEVENT(2,4,map,libevent).proba=100; GET_MAPEVENT(2,4,map,libevent).player_anim=-1; GET_MAPEVENT(2,4,map,libevent).sound=FSOUND_Sample_Load(FSOUND_FREE,EVENT_SON,FSOUND_NORMAL,0,0); GET_MAPEVENT(2,4,map,libevent).is_unique=1; GET_MAPEVENT(2,4,map,libevent).next=NULL; GET_MAPEVENT(2,4,map,libevent).param=calloc(1,sizeof(struct s_event_param_changetile)); ((struct s_event_param_changetile*)GET_MAPEVENT(2,4,map,libevent).param)->x=2; ((struct s_event_param_changetile*)GET_MAPEVENT(2,4,map,libevent).param)->y=3; ((struct s_event_param_changetile*)GET_MAPEVENT(2,4,map,libevent).param)->newtile=103; libevent->sprite_event[1].type=EVENT_SHOP; libevent->sprite_event[1].onaction=EVENT_ACTION_ONKEYPRESS; libevent->sprite_event[1].proba=100; libevent->sprite_event[1].player_anim=-1; libevent->sprite_event[1].sound=NULL; libevent->sprite_event[1].is_unique=0; libevent->sprite_event[1].next=NULL; libevent->sprite_event[1].param=calloc(1,sizeof(struct s_event_param_shop)); ((struct s_event_param_shop*)libevent->sprite_event[1].param)->n_item=3; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId=malloc(5*sizeof(unsigned int)); ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[0]=0; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[1]=1; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[2]=2; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[3]=4; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->itemId[4]=5; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem=malloc(5*sizeof(unsigned int)); ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[0]=15; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[1]=50; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[2]=75; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[3]=75; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[4]=75; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->coutItem[5]=75; ((struct s_event_param_shop*)libevent->sprite_event[1].param)->prixVente=malloc(MAX_ITEMS*sizeof(unsigned int)); for(i=0;i<MAX_ITEMS;i++) ((struct s_event_param_shop*)libevent->sprite_event[1].param)->prixVente[i]=50+(rand()%20); }
void SoundManager2::loadMusic(const char* filename){ musicHandle = FSOUND_Sample_Load (musicChannel, filename, 0, 0, 0); if(isDebug()){ printf("Music Loaded on Channel: %i\n", musicChannel); } //TODO allow loading a dictionary of music and playing them based on a selection }
void InitSound( void ) { #ifndef UseSDLMixer if (!FSOUND_Init(44100, 64, FSOUND_INIT_USEDEFAULTMIDISYNTH)) { musicOn = soundOn = false; return; } #endif for( int index=0; index<kNumSounds; index++ ) { #ifdef UseSDLMixer sound[index] = Mix_LoadWAV( QuickResourceName("snd", index+128, ".wav")); #else for( index=0; index<kNumSounds; index++ ) { sound[index] = FSOUND_Sample_Load( FSOUND_UNMANAGED, QuickResourceName( "snd", index+128, ".wav" ), FSOUND_NORMAL | FSOUND_LOOP_OFF | FSOUND_2D, 0, 0 ); if( sound[index] == NULL ) { Error( "InitSound: files are missing" ); } } #endif } }
BOOL CSoundBufferFMod::ReadWavBuffer(const STRING &name) { Release(); char* lpAddress = NULL; DWORD dwSize = CGameProcedure::s_pResourceProvider->loadResource(name.c_str(), lpAddress, "General"); if(dwSize > 0) { m_pFModSample = FSOUND_Sample_Load(FSOUND_FREE, lpAddress, FSOUND_HW3D | FSOUND_LOADMEMORY, 0, dwSize); CGameProcedure::s_pResourceProvider->unloadResource( lpAddress, dwSize ); } if(!m_pFModSample) { KLThrow("Invalid sound file:%s", name.c_str()); return FALSE; } //缺省所有声音都是不循环的 FSOUND_Sample_SetMode(m_pFModSample, FSOUND_LOOP_OFF); return TRUE; }
void SoundEffectFMOD::Load(void *inBuffer, int inSize) { // Loading the sound as a Loop off, 8bit mono, signed, not hardware accelerated sample mHandle = FSOUND_Sample_Load(FSOUND_FREE, (const char*)inBuffer, (FSOUND_NORMAL | FSOUND_LOADMEMORY), inSize, 0); }
void SoundEffectFMOD::Load(const std::string& inName) { // Loading the sound as a Loop off, 8bit mono, signed, not hardware accelerated sample mHandle = FSOUND_Sample_Load(FSOUND_FREE, inName.c_str(), FSOUND_NORMAL, 0, 0); SetFileName(inName); }
void Title::Init(GameEngine* game) { image1=ChargementImage("IMG/title.png"); image2=ChargementImage("IMG/cursor.pcx"); image02.x = 300; image02.y = 515; fondu = SDL_CreateRGBSurface(SDL_HWSURFACE, 800, 600, 32, 0, 0, 0, 0); SDL_FillRect(fondu, NULL, SDL_MapRGB(SDL_GetVideoSurface()->format, 0, 0, 0)); musique1 = FSOUND_Stream_Open("SOUND/music.mp3", 0, 0, 0); sonCurseurDeplacement = FSOUND_Sample_Load(FSOUND_FREE, "SOUND/cursormove.wav", 0, 0, 0); sonCurseurValider = FSOUND_Sample_Load(FSOUND_FREE, "SOUND/cursorselect.wav", 0, 0, 0); positionCurseur = 1; quit = false; }
/** * @author JoSch * @date 07-12-2005 */ void Fmod3SoundSample::load() throw (RuntimeException) { getSoundResource()->load(); DataStreamPtr stream = getSoundResource()->getDataStream(); stream->seek(0); int len = stream->size(); char *data = new char[len]; stream->read(data, len); unsigned int mode = FSOUND_LOADMEMORY; if (is3d()) { mode |= FSOUND_HW3D | FSOUND_FORCEMONO; } else { mode |= FSOUND_HW2D; } if (isLooping()) { mode |= FSOUND_LOOP_NORMAL; } else { mode |= FSOUND_LOOP_OFF; } mSample = FSOUND_Sample_Load(FSOUND_FREE, data, mode, 0, len); if (mSample == 0 && !is3d() ) { mode |= FSOUND_FORCEMONO; mSample = FSOUND_Sample_Load(FSOUND_FREE, data, mode, 0, len); } delete[] data; if( mSample == NULL ) { int err = FSOUND_GetError(); Throw( RuntimeException, "Fmod Error:" + Ogre::StringConverter::toString(err) + " while loading " + getName() ); } }
/****************************************************************************** * * Creates 2D (stereo) source * ******************************************************************************/ EXPORT INT32 HWRAPI (Add2DSource) (sfx_data_t *sfx) { FSOUND_SAMPLE *fmsample = NULL; INT32 chan = -1; if (!sfx) return chan; fmsample = FSOUND_Sample_Load(FSOUND_FREE, INT2CHAR(sfx->data), FSOUND_DOOMLOAD, SFXLENGTH); if (fmsample) { if (!FSOUND_Sample_SetDefaults(fmsample, (INT32)((float)(*((UINT16 *)sfx->data+1)) * recalc_pitch(sfx->pitch)), sfx->volume == -1 ? 255 : sfx->volume, sfx->sep == NORMAL_SEP ? FSOUND_STEREOPAN : sfx->sep, sfx->priority)) DBG_Printf("FMOD(Add2DSource, FSOUND_Sample_SetDefaults, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError())); if (!FSOUND_Sample_SetMode(fmsample,FSOUND_2D)) DBG_Printf("FMOD(Add2DSource, FSOUND_Sample_SetMode, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError())); chan = FSOUND_PlaySoundEx(FSOUND_FREE,fmsample,NULL,true); if (chan == -1) { DBG_Printf("FMOD(Add2DSource, FSOUND_PlaySoundEx, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError())); return chan; } #ifdef MORESTUFF else DBG_Printf("FMOD(Add2DSource, FSOUND_PlaySoundEx): sfxid# %i is playing on channel %i\n", sfx->id,chan); #endif } else { DBG_Printf("FMOD(Add2DSource,FSOUND_Sample_Load, sfxid# %i): %s\n", sfx->id,FMOD_ErrorString(FSOUND_GetError())); return chan; } if (FSOUND_GetCurrentSample(chan)) { if (!FSOUND_SetCurrentPosition(chan, 0)) DBG_Printf("FMOD(Add2DSource, FSOUND_SetCurrentPosition, channel %i, sfxid# %i): %s\n", chan,sfx->id,FMOD_ErrorString(FSOUND_GetError())); } return chan; }
void CAudioManager::LoadSample(int id, std::string filename){ if(m_bValidAudio == false) return; AUDIO_VEC temp; FSOUND_SAMPLE *handle; //handle=FSOUND_Sample_Load (FSOUND_FREE,filename.c_str(),0,0,0); handle=FSOUND_Sample_Load (id,filename.c_str(),0,0,0); if(handle == NULL){ //error return; } else{ //good temp.AudioID = id; temp.handle = handle; temp.filename = filename; temp.channelPlaying = -1; m_AudioClip.push_back(temp); } }
void CAudioManager::LoadSample(int id, std::string filename){ //if(m_bValidAudio == false) // return; AUDIO_VEC temp; FSOUND_SAMPLE *handle; handle=FSOUND_Sample_Load (id,filename.c_str(),FSOUND_HW3D, 0, 0);// | FSOUND_LOOP_NORMAL,0,0); //FSOUND_2D | FSOUND_LOOP_NORMAL if(handle == NULL){ //error return; } else{ //good temp.AudioID = id; temp.handle = handle; temp.filename = filename; temp.channelPlaying = -1; m_AudioClip.push_back(temp); } }
FSOUND_SAMPLE * SoundSystem::getSample( const FileName &fileName ) { map<FileName, FSOUND_SAMPLE*>::const_iterator i; FSOUND_SAMPLE *sound = 0; i = cache.find(fileName); // check for it in the cache if(i == cache.end()) { sound = FSOUND_Sample_Load(FSOUND_FREE, fileName.c_str(), 0, 0, 0); cache.insert(make_pair(fileName, sound)); // cache the sound chunk TRACE("Loaded and cached sound file:" + fileName.str()); } else { sound = i->second; } return sound; }
//----------------------------------------------------------------------------- // Func: void CShip::loadSounds() // Desc: Sounds are loaded (hence the name). // The names of the sound files to load are hard-coded // Note: Only loads sounds for the player //----------------------------------------------------------------------------- void CShip::loadSounds() { if( initialized || !isPlayer ) { return; } char *sndFile = "audio/ambmines.wav"; //"audio/b.wav"; // sndEngine = FSOUND_Sample_Load( FSOUND_FREE, sndFile, FSOUND_8BITS | FSOUND_MONO | FSOUND_LOOP_NORMAL, 0 ); if( sndEngine == NULL ) { error.msg( "CLIENT: CShip::loadSounds(): couldn't load %s", sndFile ); } channel = FSOUND_PlaySound( FSOUND_FREE, sndEngine ); FSOUND_SetVolume( channel, 0 ); error.msg( "CLIENT: Loaded sound %s", sndFile); }
int put_song_bcast(t_sdl *sdl, int x, int y) { FSOUND_SAMPLE *turkey; FSOUND_Init(44100, 32, 0); sdl->game.rec.x = (x - sdl->scrollX) * MAP_W + 30; sdl->game.rec.y = (y - sdl->scrollY) * MAP_H + HEADER_MENU + 10; sdl->game.rec.h = 17; sdl->game.rec.w = 17; xSDL_BlitSurface(sdl->game.bcast, NULL, sdl->screen, &sdl->game.rec); SDL_UpdateRects(sdl->screen, 1, &sdl->game.rec); if ((turkey = FSOUND_Sample_Load(FSOUND_FREE, "src_graphic/sound/gobble.wav", 0, 0, 0)) == NULL) { my_printf("Warning: Sound loading failled\n"); SDL_Delay(1000); return (0); } FSOUND_PlaySound(FSOUND_FREE, turkey); SDL_Delay(1000); FSOUND_Sample_Free(turkey); FSOUND_Close(); return (1); }
void StaticEvent(struct s_map *map, struct s_lib_sprite *libsprite, struct s_lib_event *libevent) { GET_MAPEVENT(10,3,map,libevent).type=EVENT_TELEPORT; GET_MAPEVENT(10,3,map,libevent).onaction=EVENT_ACTION_AUTO; GET_MAPEVENT(10,3,map,libevent).proba=100; GET_MAPEVENT(10,3,map,libevent).player_anim=-1; GET_MAPEVENT(10,3,map,libevent).sound=FSOUND_Sample_Load(FSOUND_FREE,EVENT_SON,FSOUND_NORMAL,0,0); GET_MAPEVENT(10,3,map,libevent).is_unique=0; GET_MAPEVENT(10,3,map,libevent).next=NULL; GET_MAPEVENT(10,3,map,libevent).param=calloc(1,sizeof(struct s_event_param_teleport)); ((struct s_event_param_teleport*)GET_MAPEVENT(10,3,map,libevent).param)->filename=(char*)strdup("map/maison2_1"); ((struct s_event_param_teleport*)GET_MAPEVENT(10,3,map,libevent).param)->startX=10*32; ((struct s_event_param_teleport*)GET_MAPEVENT(10,3,map,libevent).param)->startY=4*32; libevent->sprite_event[1].type=EVENT_INN; libevent->sprite_event[1].onaction=EVENT_ACTION_ONKEYPRESS; libevent->sprite_event[1].proba=100; libevent->sprite_event[1].player_anim=-1; libevent->sprite_event[1].sound=NULL; libevent->sprite_event[1].is_unique=0; libevent->sprite_event[1].next=NULL; libevent->sprite_event[1].param=calloc(1,sizeof(struct s_event_param_inn)); ((struct s_event_param_inn*)libevent->sprite_event[1].param)->cout=50; }
glui32 glk_schannel_play_ext(schanid_t chan, glui32 snd, glui32 repeats, glui32 notify) { FILE *file; long pos, len; glui32 type; char *buf; int offset = 0; int i; if (!chan) { gli_strict_warning("schannel_play_ext: invalid id."); return 0; } /* stop previous noise */ glk_schannel_stop(chan); if (repeats == 0) return 1; /* load sound resource into memory */ if (!giblorb_is_resource_map()) { char name[1024]; sprintf(name, "%s/SND%ld", gli_workdir, snd); file = fopen(name, "rb"); if (!file) return 0; fseek(file, 0, SEEK_END); len = ftell(file); buf = malloc(len); if (!buf) { fclose(file); return 0; } fseek(file, 0, 0); fread(buf, 1, len, file); fclose(file); /* identify by file magic the two types that fmod can do... */ type = 0; /* unidentified */ /* AIFF */ if (len > 4 && !memcmp(buf, "FORM", 4)) type = giblorb_ID_FORM; /* WAVE */ if (len > 4 && !memcmp(buf, "WAVE", 4)) type = giblorb_ID_WAVE; /* MIDI */ if (len > 4 && !memcmp(buf, "MThd", 4)) type = giblorb_ID_MIDI; /* Ogg Vorbis */ if (len > 4 && !memcmp(buf, "OggS", 4)) type = giblorb_ID_OGG; /* s3m */ if (len > 0x30 && !memcmp(buf + 0x2c, "SCRM", 4)) type = giblorb_ID_MOD; /* XM */ if (len > 20 && !memcmp(buf, "Extended Module: ", 17)) type = giblorb_ID_MOD; /* MOD */ if (len > 1084) { char resname[4]; memcpy(resname, buf + 1080, 4); if (!strcmp(resname+1, "CHN") || /* 4CHN, 6CHN, 8CHN */ !strcmp(resname+2, "CN") || /* 16CN, 32CN */ !strcmp(resname, "M.K.") || !strcmp(resname, "M!K!") || !strcmp(resname, "FLT4") || !strcmp(resname, "CD81") || !strcmp(resname, "OKTA") || !strcmp(resname, " ")) type = giblorb_ID_MOD; } if (!memcmp(buf, "\377\372", 2)) /* mp3 */ type = giblorb_ID_MP3; /* look for RIFF (future boy has broken resources...?) */ if (len > 128 && type == 0) for (i = 0; i < 124; i++) if (!memcmp(buf+i, "RIFF", 4)) { offset = i; type = giblorb_ID_WAVE; break; } if (type == 0) type = giblorb_ID_MP3; } else { giblorb_get_resource(giblorb_ID_Snd, snd, &file, &pos, &len, &type); if (!file) return 0; buf = malloc(len); if (!buf) return 0; fseek(file, pos, 0); fread(buf, 1, len, file); } switch (type) { case giblorb_ID_FORM: case giblorb_ID_WAVE: case giblorb_ID_MP3: chan->sample = FSOUND_Sample_Load(FSOUND_UNMANAGED, buf + offset, FSOUND_NORMAL|FSOUND_LOADMEMORY, 0, len); if (!chan->sample) { free(buf); return 0; } if (repeats != 1) FSOUND_Sample_SetMode(chan->sample, FSOUND_LOOP_NORMAL); else FSOUND_Sample_SetMode(chan->sample, FSOUND_LOOP_OFF); chan->channel = FSOUND_PlaySound(FSOUND_FREE, chan->sample); FSOUND_SetVolume(chan->channel, chan->volume / 256); FSOUND_SetPaused(chan->channel, 0); break; case giblorb_ID_MOD: case giblorb_ID_MIDI: chan->module = FMUSIC_LoadSongEx(buf, 0, len, FSOUND_LOADMEMORY, 0, 0); if (!chan->module) { free(buf); return 0; } if (repeats != 1) FMUSIC_SetLooping(chan->module, 1); else FMUSIC_SetLooping(chan->module, 0); FMUSIC_SetMasterVolume(chan->module, chan->volume / 256); FMUSIC_PlaySong(chan->module); break; default: gli_strict_warning("schannel_play_ext: unknown resource type."); } free(buf); return 1; }
/* [ [DESCRIPTION] [PARAMETERS] [RETURN_VALUE] [REMARKS] [SEE_ALSO] ] */ int main() { FSOUND_SAMPLE *samp1 = 0, *samp2 = 0; int key; int eqid1,eqid2; if (FSOUND_GetVersion() < FMOD_VERSION) { printf("Error : You are using the wrong DLL version! You should be using FMOD %.02f\n", FMOD_VERSION); return 1; } /* INITIALIZE */ FSOUND_SetBufferSize(100); /* This is nescessary to get FX to work on output buffer */ if (!FSOUND_Init(44100, 32, FSOUND_INIT_ENABLESYSTEMCHANNELFX)) { printf("Error!\n"); printf("%s\n", FMOD_ErrorString(FSOUND_GetError())); return 1; } /* LOAD SAMPLES */ /* PCM,44,100 Hz, 8 Bit, Mono */ samp1 = FSOUND_Sample_Load(FSOUND_FREE, "../../media/drumloop.wav", FSOUND_2D, 0, 0); if (!samp1) { printf("Error!\n"); printf("%s\n", FMOD_ErrorString(FSOUND_GetError())); return 1; } FSOUND_Sample_SetMode(samp1, FSOUND_LOOP_OFF); /* PCM,44,100 Hz, 16 Bit, Stereo */ samp2 = FSOUND_Sample_Load(FSOUND_FREE, "../../media/jules.mp3", FSOUND_HW2D | FSOUND_ENABLEFX, 0, 0); if (!samp2) { printf("Error!\n"); printf("%s\n", FMOD_ErrorString(FSOUND_GetError())); return 1; } /* DISPLAY HELP */ printf("FSOUND Output Method : "); switch (FSOUND_GetOutput()) { case FSOUND_OUTPUT_NOSOUND: printf("FSOUND_OUTPUT_NOSOUND\n"); break; case FSOUND_OUTPUT_WINMM: printf("FSOUND_OUTPUT_WINMM\n"); break; case FSOUND_OUTPUT_DSOUND: printf("FSOUND_OUTPUT_DSOUND\n"); break; case FSOUND_OUTPUT_ASIO: printf("FSOUND_OUTPUT_ASIO\n"); break; case FSOUND_OUTPUT_OSS: printf("FSOUND_OUTPUT_OSS\n"); break; case FSOUND_OUTPUT_ALSA: printf("FSOUND_OUTPUT_ALSA\n"); break; case FSOUND_OUTPUT_ESD: printf("FSOUND_OUTPUT_ESD\n"); break; }; printf("FSOUND Mixer : "); switch (FSOUND_GetMixer()) { case FSOUND_MIXER_QUALITY_FPU: printf("FSOUND_MIXER_QUALITY_FPU\n"); break; case FSOUND_MIXER_QUALITY_MMXP5: printf("FSOUND_MIXER_QUALITY_MMXP5\n"); break; case FSOUND_MIXER_QUALITY_MMXP6: printf("FSOUND_MIXER_QUALITY_MMXP6\n"); break; }; printf("FSOUND Driver : %s\n", FSOUND_GetDriverName(FSOUND_GetDriver())); printf("=========================================================================\n"); printf("Press 1 Play SOFTWARE sound affected by following reverb dsp unit (wet)\n"); printf(" 2 Play SOFTWARE sound unaffected by following reverb dsp unit (dry)\n"); if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND) { printf(" 3 Play HARDWARE FX enabled sound using Direct X 8 (echo+flange)\n"); printf(" 4 Set EQ on global software output to be affect by DX8 FX\n"); printf(" Press 1 or 2 to hear the effect (3 is unaffected)\n"); printf(" 5 Turn off EQ on global software output\n"); } printf(" ESC Quit\n"); printf("=========================================================================\n"); /* SET UP DSPS! */ SetupReverb(); /* Note if we are using a dsp unit for playing sounds, callback and parameter are ignored! */ DrySFXUnit = FSOUND_DSP_Create(NULL, FSOUND_DSP_DEFAULTPRIORITY_USER+100, 0); FSOUND_DSP_SetActive(DrySFXUnit, TRUE); /* You must pause the software output before getting the FX handle on it. */ if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND) { FSOUND_SetPaused(FSOUND_SYSTEMCHANNEL, TRUE); eqid1 = FSOUND_FX_Enable(FSOUND_SYSTEMCHANNEL, FSOUND_FX_PARAMEQ); eqid2 = FSOUND_FX_Enable(FSOUND_SYSTEMCHANNEL, FSOUND_FX_PARAMEQ); FSOUND_SetPaused(FSOUND_SYSTEMCHANNEL, FALSE); } /* START PLAYING! */ do { key = 0; printf("channels playing = %d cpu usage = %.02f%%\r", FSOUND_GetChannelsPlaying(), FSOUND_GetCPUUsage()); if (kbhit()) { key = getch(); if (key == '1') { int channel = FSOUND_PlaySound(FSOUND_FREE, samp1); } if (key == '2') { FSOUND_PlaySoundEx(FSOUND_FREE, samp1, DrySFXUnit, FALSE); } if (FSOUND_GetOutput() == FSOUND_OUTPUT_DSOUND) { if (key == '3') { static int fxchannel = FSOUND_FREE; static int echoid = -1, echoid2 = -1,flangeid = -1, firsttime; if (fxchannel == FSOUND_FREE) { firsttime = TRUE; } else { firsttime = FALSE; } fxchannel = FSOUND_PlaySoundEx(fxchannel, samp2, DrySFXUnit, TRUE); /* NOTE! Even though it is for hardware FX, set it to a DrySFXUnit just in case a non hardware output mode has been selected (such as WINMM/Linux etc) and it actually drops back to 100% software */ FSOUND_SetVolume(fxchannel, 120); /* turn it down a bit! */ if (firsttime) { echoid = FSOUND_FX_Enable(fxchannel, FSOUND_FX_ECHO); echoid2 = FSOUND_FX_Enable(fxchannel, FSOUND_FX_ECHO); flangeid = FSOUND_FX_Enable(fxchannel, FSOUND_FX_FLANGER); } FSOUND_SetPaused(fxchannel, FALSE); FSOUND_FX_SetEcho(echoid, 80.0f, 70.0f, 100.0f, 100.0f, TRUE); FSOUND_FX_SetEcho(echoid2, 100, 70.0f, 10, 10, FALSE); } if (key == '4') { FSOUND_FX_SetParamEQ(eqid1, 8000, 36, -15); FSOUND_FX_SetParamEQ(eqid2, 16000, 36, -15); } if (key == '5') { FSOUND_FX_SetParamEQ(eqid1, 8000, 15, 0); FSOUND_FX_SetParamEQ(eqid2, 8000, 15, 0); } } } Sleep(10); } while (key != 27); printf("\n"); /* CLEANUP AND SHUTDOWN */ FSOUND_DSP_Free(DrySFXUnit); CloseReverb(); FSOUND_Sample_Free(samp1); FSOUND_Sample_Free(samp2); FSOUND_Close(); return 0; }
perso *init_perso(perso *p) { int i; if(p != NULL) { p->etat = DEBOUT; p->transformation = SMALL_MARIO; p->personnage = 0; p->environnement = AIR; p->position.x = 32; p->position.y = 500; p->position_prec.x = p->position.x; p->position_prec.y = p->position.y; p->vitesse.x = 0; p->vitesse.y = 0; p->tps_invincible = 0; p->peut_grimper = 0; p->checkpoint = -1; p->tps_invincible_etoile = 0; p->monstre_porte = NULL; p->tps_transformation = 0; p->tps_attaque_speciale = 0; p->tps_attaque = 0; p->tps_pousse_carapace = 0; p->tps_mort = 0; p->tps_saut = 0; p->tuyau = NULL; p->cote = COTE_DROIT; p->taille.x = 1; p->taille.y = 1; p->texture_act = malloc(sizeof(data_texture)); p->texture_prec = malloc(sizeof(data_texture)); /* Initialisation du tableau de vitesse d'animation */ for (i = 0; i < NB_ETATS_TEXTURE; i++){ p->texture_act->nb_sprites[i] = 0; p->texture_prec->nb_sprites[i] = 0; p->texture_act->v_anim[i] = 0; p->texture_prec->v_anim[i] = 0; } /* Initialisation du tableau des sons */ p->sons[SND_SAUT] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Mario_Jump.wav", 0, 0, 0); p->sons[SND_TOUCHE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Mario_Retrecit.wav", 0, 0, 0); p->sons[SND_TRANSFORME_FEU] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Transformation_fire.wav", 0, 0, 0); p->sons[SND_VIE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/1-up.wav", 0, 0, 0); p->sons[SND_FIREBALL] = FSOUND_Sample_Load(FSOUND_FREE, "musics/fireball.wav", 0, 0, 0); p->sons[SND_THUNDER_BALL] = FSOUND_Sample_Load(FSOUND_FREE, "musics/thunder_ball.wav", 0, 0, 0); p->sons[SND_DERAPE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Derape.wav", 0, 0, 0); p->sons[SND_PIECE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/coin.wav", 0, 0, 0); p->sons[SND_BREAK_BLOCK] = FSOUND_Sample_Load(FSOUND_FREE, "musics/break_block.wav", 0, 0, 0); p->sons[SND_ITEM_BLOCK] = FSOUND_Sample_Load(FSOUND_FREE, "musics/item_block.wav", 0, 0, 0); p->sons[SND_UNBREAKABLE_BLOCK] = FSOUND_Sample_Load(FSOUND_FREE, "musics/unbreakable_block.wav", 0, 0, 0); p->sons[SND_INVINCIBLE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/invincible.mp3", 0, 0, 0); p->sons[SND_DIE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/die.ogg", 0, 0, 0); p->sons[SND_PIPE] = FSOUND_Sample_Load(FSOUND_FREE, "musics/pipe.wav", 0, 0, 0); p->sons[SND_CLEAR] = FSOUND_Sample_Load(FSOUND_FREE, "musics/smw-clear.wav", 0, 0, 0); p->sons[SND_CHECKPOINT] = FSOUND_Sample_Load(FSOUND_FREE, "musics/checkpoint.wav", 0, 0, 0); p->sons[SND_PTS_FINAL] = FSOUND_Sample_Load(FSOUND_FREE, "musics/Points_finaux.wav", 0, 0, 0); /* initialisation du HUD */ init_HUD(p); } return p; }
void CALLBACK midiCallback(HMIDIIN handle, UINT uMsg, DWORD dwInstance, DWORD dwParam1, DWORD dwParam2) { unsigned long int on, off; BITMAP* midipress = create_bitmap(800, 95); BITMAP *piano = load_bitmap( "resources/piano.bmp", NULL); draw_sprite(midipress, piano, 35, 0); rectfill(midipress, 0, 0, 35, 95, makecol(0, 0, 0)); rectfill(midipress, 765, 0, 800, 95, makecol(0, 0, 0)); //När midi devicen väljs skickas alltid en kontrollsignal som har dwParam1 som 0 if(dwParam1==0) { printf("\nMidi input starting"); } //När dwParam1 hamnar i detta intervall brukar noten ha släppts else if(dwParam1<4230000 && dwParam1>4200000) { off = 1+((dwParam1-144)%(256*256))/256; } //Annars kan vi anta att den slogs på else { BITMAP *keyleft = load_bitmap("resources/keyleftf.bmp", NULL); BITMAP *keyright = load_bitmap("resources/keyrightf.bmp", NULL); BITMAP *keymiddle = load_bitmap("resources/keymiddlef.bmp", NULL); BITMAP *keyblack = load_bitmap("resources/keyblackf.bmp", NULL); FSOUND_STREAM* music; char fil[11]="nox/00.wav"; fil[10]='\0'; on = ((dwParam1-144)%(256*256))/256; //printf("\nOn: %ld", on); textprintf_ex(midipress, font, 10, 0, makecol(255, 255, 255), -1, "%d", on); fil[4]=(on/10)+'0'; fil[5]=(on%10)+'0'; //Noternas placering förklaras mer ingående i drawnotes.c //A if(on%12==9%12)draw_sprite(midipress, keymiddle,35+(((7*floor((on-21)/12))+0)*730/52),12); //B else if(on%12==11%12)draw_sprite(midipress, keyright,35+(((7*floor((on-21)/12))+1)*730/52),12); //C else if(on%12==0)draw_sprite(midipress, keyleft,35+(((7*floor((on-21)/12))+2)*730/52),12); //D else if(on%12==2%12)draw_sprite(midipress, keymiddle,35+(((7*floor((on-21)/12))+3)*730/52),12); //E else if(on%12==4%12)draw_sprite(midipress, keyright,35+(((7*floor((on-21)/12))+4)*730/52),12); //F else if(on%12==5%12)draw_sprite(midipress, keyleft,35+(((7*floor((on-21)/12))+5)*730/52),12); //G else if(on%12==7%12)draw_sprite(midipress, keymiddle,35+(((7*floor((on-21)/12))+6)*730/52),12); //A# else if(on%12==10%12)draw_sprite(midipress, keyblack,10+35+98*floor((on-21)/12),12); //C# else if(on%12==1%12)draw_sprite(midipress, keyblack,38+35+98*floor((on-21)/12),12); //D# else if(on%12==3%12)draw_sprite(midipress, keyblack,52+35+98*floor((on-21)/12),12); //F# else if(on%12==6%12)draw_sprite(midipress, keyblack,80+35+98*floor((on-21)/12),12); //G# else if(on%12==8%12)draw_sprite(midipress, keyblack,94+35+98*floor((on-21)/12),12); //Spelar en ljudfil av noten som slogs music=FSOUND_Sample_Load(FSOUND_FREE,fil,0,0,0); FSOUND_PlaySound (FSOUND_FREE, music); //Det går inte att fria minnet till music //eftersom ljudfilen inte spelats klart när funktionen slutar, //det blir extra svårt av att funktionen är isolerad vilket leder till att //programmet läcker ungefär 500kb minne per slagen not (storleken av ljudfilen) destroy_bitmap(keyleft); destroy_bitmap(keymiddle); destroy_bitmap(keyright); destroy_bitmap(keyblack); } blit(midipress, screen, 0, 0, 0, 505, 800, 95); destroy_bitmap(midipress); destroy_bitmap(piano); }
/// <summary> Loads the sounds. </summary> /// /// <returns> The sounds. </returns> int CSound::LoadSounds() { s_engine = FSOUND_Sample_Load(FSOUND_FREE, "wav/engine.wav", FSOUND_LOOP_NORMAL,0,0); s_tanklaser = FSOUND_Sample_Load(FSOUND_FREE, "wav/laser.wav", FSOUND_NORMAL,0,0); s_fire = FSOUND_Sample_Load(FSOUND_FREE, "wav/fire.wav", FSOUND_NORMAL,0,0); s_build = FSOUND_Sample_Load(FSOUND_FREE, "wav/build.wav", FSOUND_NORMAL,0,0); s_die = FSOUND_Sample_Load(FSOUND_FREE, "wav/die.wav", FSOUND_NORMAL,0,0); s_eXplode = FSOUND_Sample_Load(FSOUND_FREE, "wav/eXplode.wav", FSOUND_NORMAL,0,0); s_turret = FSOUND_Sample_Load(FSOUND_FREE, "wav/turretfire.wav", FSOUND_NORMAL,0,0); s_buzz = FSOUND_Sample_Load(FSOUND_FREE, "wav/buzz.wav", FSOUND_NORMAL,0,0); s_click = FSOUND_Sample_Load(FSOUND_FREE, "wav/click.wav", FSOUND_NORMAL,0,0); s_bigturret = FSOUND_Sample_Load(FSOUND_FREE, "wav/bturr.wav", FSOUND_NORMAL,0,0); s_demolish = FSOUND_Sample_Load(FSOUND_FREE, "wav/demo.wav", FSOUND_NORMAL,0,0); s_screech = FSOUND_Sample_Load(FSOUND_FREE, "wav/screech.wav", FSOUND_NORMAL,0,0); s_hit = FSOUND_Sample_Load(FSOUND_FREE, "wav/hit.wav", FSOUND_NORMAL,0,0); s_cloak = FSOUND_Sample_Load(FSOUND_FREE, "cloak.wav", FSOUND_NORMAL,0,0); s_flare = FSOUND_Sample_Load(FSOUND_FREE, "flare.wav", FSOUND_NORMAL,0,0); if (!s_tanklaser || !s_fire || !s_engine || !s_build || !s_die || !s_eXplode || !s_turret || !s_buzz || !s_click || !s_bigturret || !s_demolish || !s_screech || !s_hit || !s_cloak || !s_flare) return 0; return 1; }
bool LLAudioBufferFMOD::loadWAV(const std::string& filename) { // Try to open a wav file from disk. This will eventually go away, as we don't // really want to block doing this. if (filename.empty()) { // invalid filename, abort. return false; } if (!LLAPRFile::isExist(filename, LL_APR_RPB)) { // File not found, abort. return false; } if (mSamplep) { // If there's already something loaded in this buffer, clean it up. FSOUND_Sample_Free(mSamplep); mSamplep = NULL; } // Load up the wav file into an fmod sample #if LL_WINDOWS // MikeS. - Loading the sound file manually and then handing it over to FMOD, // since FMOD uses posix IO internally, // which doesn't work with unicode file paths. LLFILE* sound_file = LLFile::fopen(filename,"rb"); /* Flawfinder: ignore */ if (sound_file) { fseek(sound_file,0,SEEK_END); U32 file_length = ftell(sound_file); //Find the length of the file by seeking to the end and getting the offset size_t read_count; fseek(sound_file,0,SEEK_SET); //Seek back to the beginning char* buffer = new char[file_length]; llassert(buffer); read_count = fread((void*)buffer,file_length,1,sound_file);//Load it.. if(ferror(sound_file)==0 && (read_count == 1)){//No read error, and we got 1 chunk of our size... unsigned int mode_flags = FSOUND_LOOP_NORMAL | FSOUND_LOADMEMORY; //FSOUND_16BITS | FSOUND_MONO | FSOUND_LOADMEMORY | FSOUND_LOOP_NORMAL; mSamplep = FSOUND_Sample_Load(FSOUND_UNMANAGED, buffer, mode_flags , 0, file_length); } delete[] buffer; fclose(sound_file); } #else mSamplep = FSOUND_Sample_Load(FSOUND_UNMANAGED, filename.c_str(), FSOUND_LOOP_NORMAL, 0, 0); #endif if (!mSamplep) { // We failed to load the file for some reason. llwarns << "Could not load data '" << filename << "': " << FMOD_ErrorString(FSOUND_GetError()) << llendl; // // If we EVER want to load wav files provided by end users, we need // to rethink this! // // file is probably corrupt - remove it. LLFile::remove(filename); return false; } // Everything went well, return true return true; }
// *************************************************************************** void CBufferFMod::loadDataToFMod(const uint8 *data) { // Delete old one if(_FModSample) { FSOUND_Sample_Free(_FModSample); _FModSample= NULL; } // if some data, create new one if(data) { uint8 *tmpData = NULL; const uint8 *uploadData = data; // if format is ADPCM, decode into Mono16 if(_Format==Mono16ADPCM) { // create Mono16 dest buffer uint nbSample= _Size*2; tmpData= new uint8 [nbSample * sizeof(sint16)]; // uncompress TADPCMState state; state.PreviousSample = 0; state.StepIndex = 0; decodeADPCM(data, (sint16*)tmpData, nbSample, state); // change upload data, _Format and _Size to fit the new format uploadData= tmpData; _Format= Mono16; _Size= nbSample*2; } // create FMod sample and upload according to format uint32 type= 0; switch(_Format) { case Mono8: type= FSOUND_8BITS|FSOUND_MONO; break; case Mono16: type= FSOUND_16BITS|FSOUND_MONO; break; case Stereo8: type= FSOUND_8BITS|FSOUND_STEREO; break; case Stereo16: type= FSOUND_16BITS|FSOUND_STEREO; break; default: nlstop; }; uint32 commonType= FSOUND_LOADRAW|FSOUND_LOOP_NORMAL|FSOUND_LOADMEMORY; // if can use hardware buffer if(!CSoundDriverFMod::getInstance()->forceSofwareBuffer()) commonType|= FSOUND_HW3D; // create FMod sample _FModSample= FSOUND_Sample_Load(FSOUND_FREE, (const char*)uploadData, commonType|type, 0, _Size); // clear any temporary data if(tmpData) { delete [] tmpData; } } }
void CSample::LoadCabSample(unsigned char *sdata,int ssize) { if(data) FSOUND_Sample_Free(data); size=ssize; data=FSOUND_Sample_Load(FSOUND_FREE ,(const char *)sdata,FSOUND_LOADMEMORY|FSOUND_LOOP_OFF,0,size); }
result_fMod_WIN = FMOD_System_CreateSound(system_fMod_WIN, "AUDIO/dung.wav", FMOD_SOFTWARE, 0, &sound2); result_fMod_WIN = FMOD_System_CreateSound(system_fMod_WIN, "AUDIO/g.wav", FMOD_HARDWARE, 0, &sound3); */ //######################################################################################################################### //_OLD_FMOD FSOUND_Init(44000,64,0); //------------------------------------------------------------------------ // attempt to open the mp3 file as a stream g_sample = FSOUND_Sample_Load(FSOUND_FREE,"AUDIO/bell6.wav",FSOUND_2D,0,0); //g_sample2 = FSOUND_Sample_Load(FSOUND_FREE,"AUDIO/dung.wav",FSOUND_2D,0,0); //------------------------------------------------------------------------ // start the sound playing ch = FSOUND_PlaySound(FSOUND_FREE,g_sample); FSOUND_SetLoopMode(ch,FSOUND_LOOP_OFF); //ch2 = FSOUND_PlaySound(FSOUND_FREE,g_sample2); //FSOUND_SetLoopMode(ch2,FSOUND_LOOP_NORMAL); //============================================================================================ //__________________________________________________________________frequencies // initialise fmod, 44000 Hz, 64 channels
//Chamada do main int main(void) { //Inicia o som FSOUND_SAMPLE *samp1 = 0; //cria um ponteiro para armazenar o som em memória if (FSOUND_GetVersion() < FMOD_VERSION) // verificação da versão do fmod caso a versão do FSOUND for menor que a do FMOD retorna uma menssagem de erro { printf("Error : You are using the wrong DLL version! You should be using FMOD %.02f\n", FMOD_VERSION); return 1; } // Seleciona a saída de audio FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND); // Seleção do driver FSOUND_GetOutput(); // indentifica o tipo de saida FSOUND_GetMixer(); // indentifica o mixer FSOUND_SetDriver(0); // seta o driver de som que vai ser usado // Inicializando o FMOD if (!FSOUND_Init(44100, 32, FSOUND_INIT_GLOBALFOCUS)) // se o valor do FSOUND_Init for 0 execute o tratamento de erro { printf("Error!\n"); printf("%s\n", FMOD_ErrorString(FSOUND_GetError())); return 1; } // Carrengando o Sample // PCM,44,100 Hz, 32 Bit, Mono ou uma mp3 ou outros formatos suportados pelo fmod samp1 = FSOUND_Sample_Load(FSOUND_UNMANAGED, "topgear.ogg", FSOUND_NORMAL | FSOUND_HW2D, 0, 0); if (!samp1) { printf("Error!\n"); printf("%s\n", FMOD_ErrorString(FSOUND_GetError())); return 1; } // Aqui fala qual maneira o sample ira tocar caso falhe excute o tratamento de erro if(!FSOUND_Sample_SetMode(samp1, FSOUND_LOOP_NORMAL))// o loop normal toca a musica continuamente ate o programa fechar { printf("Error!\n"); printf("%s\n", FMOD_ErrorString(FSOUND_GetError())); } // Aqui sera tocado o sample ,caso falhe, execute o tratamento de erro if(!FSOUND_PlaySound(FSOUND_FREE, samp1)) { printf("Error!\n"); printf("%s\n", FMOD_ErrorString(FSOUND_GetError())); } //Fim do codigo do som \\o \o/ o//\o/ //Sleep(10000); // executa o som durante 10 segundos (Essa funcao esta desativada no Street Frog) printf ("Jogo desenvolvido como Projeto Final para a Disciplina de Computacao Grafica"); printf ("\nUFRN - CT - DCA"); printf ("\nPor Claudio Henrique | Paulo Bruno | Thaisa Ramos"); //printf ("\n"); //E por fim a chamada para o OpenGL glutInitDisplayMode(GLUT_DOUBLE | GLUT_DEPTH | GLUT_RGB); //Modo para nao exibir rastros na tela glutInitWindowSize (890, 550); //Tamanho da janela glutInitWindowPosition (50, 50); //Localizacao inicial da janela glutCreateWindow("Ajude o menino a chegar em casa"); //Nome da janela glutKeyboardFunc(Teclado); //Chama as funcoes do teclado glutSpecialFunc(Mover); //Chama as funcoes especias do teclado (setas de movimento) Inicializa(); iniciaText(); glutDisplayFunc(Desenha); //Chama o desenho glutReshapeFunc(AlteraTamanhoJanela); //Correcao de largura e altura para a janela glutTimerFunc(10,movimentar,1); //Chamada de movimento do carro glutTimerFunc(10,movimentacarro,1); //Chamada de movimento do carro glutTimerFunc(10,movimentacarro2,1); //Chamada de movimento do carro glutTimerFunc(10,movermad,1); //Chamada de movimento da madeira glutTimerFunc(10,movermad1,1); //Chamada de movimento da madeira glutTimerFunc(10,movermad2,1); //Chamada de movimento da madeira glutMouseFunc(GerenciaMouse); //Ativa o botao direito glutMainLoop(); //Final das funcoes do OpenGL // limpando a memoria e fechando o fmod (Som) FSOUND_Sample_Free(samp1); // limpa a memoria ultilizada pelo ponteiro do sample FSOUND_Close(); // encerra a API FMOD }
void Jouer(SDL_Surface* ecran) { srand(time(NULL)); positionBallonOrig.x=positionBallonOrig.y=0; FSOUND_SAMPLE *pew = NULL; pew = FSOUND_Sample_Load(FSOUND_FREE, "paint.wav", 0, 0, 0); int continuer=1,etat=0; //on charge le jeu ou bien on commence un enouvelle partie //et decide la finitude de la partie int t1=0; // pour saisir l origine et la destination Ballon[EMPTY]=IMG_Load("empty.png"); Ballon[BLUE]=IMG_Load("blue.png"); Ballon[YELLOW]=IMG_Load("yellow.png"); Ballon[RED]=IMG_Load("red.png"); Ballon[GREEN]=IMG_Load("green.png"); Ballon[BLACK]=IMG_Load("black.png"); Ballon[WHITE]=IMG_Load("white.png"); Ballon[LBLUE]=IMG_Load("lblue.png"); Ballon[ATOMIC]=IMG_Load("atomic.png"); //Ballon[BOOM]=IMG_Load("boom.png"); SDL_Surface* bg=NULL; bg=IMG_Load("bg.jpg"); SDL_BlitSurface(bg,NULL,ecran,&positionBallonOrig); SDL_Surface* BallonActuel=NULL; SDL_Rect positionBallon; coefScore=1; SDL_Event event; int i,j; for(i=0;i<Nb_Bloc_Largeur;i++) for(j=0;j<Nb_Bloc_Hauteur;j++) { positionBallonOrig.x=i*Taille_Bloc+cte1; positionBallonOrig.y=j*Taille_Bloc + cte2; SDL_BlitSurface(Ballon[grille[i][j]],NULL,ecran,&positionBallonOrig); if(grille[i][j]!=0) etat=1; } if(etat==0) { Score=0; score(ecran,Score); next(ecran) ; continuer=caissier(ecran); } score(ecran,Score);// s il y a chargement alors bliter le scor et et les next ballons next(ecran); while(continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; break ; case SDL_MOUSEBUTTONUP: if(event.button.x>10 && event.button.x<109 && event.button.y>393 && event.button.y<424 ) {nouveaujeu(); continuer=0; break;} if(event.button.x>10 && event.button.x<109 && event.button.y>439 && event.button.y<472) { continuer=0; break;} if(event.button.x>cte1 && event.button.x<(450+cte1) && event.button.y>cte2 && event.button.y<(cte2+450)) { if(t1==0) { positionBallonOrig.x=event.button.x;//recuperer les coords de l origine positionBallonOrig.y=event.button.y; if(grille[(positionBallonOrig.x - cte1)/Taille_Bloc][(positionBallonOrig.y - cte2)/Taille_Bloc]!=EMPTY) { positionBallonOrig=position(positionBallonOrig); FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son SDL_BlitSurface(Ballon[ATOMIC],NULL,ecran,&positionBallonOrig); SDL_Flip(ecran); t1=1; break; } break; } if(t1==1) { positionBallonDest.x=event.button.x;//recuperer les coords de la destination positionBallonDest.y=event.button.y; if(grille[(positionBallonDest.x - cte1)/Taille_Bloc][(positionBallonDest.y - cte2)/Taille_Bloc]==EMPTY) { positionBallonDest=position(positionBallonDest); FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son t1=2; break; } else { SDL_BlitSurface(Ballon[grille[(positionBallonOrig.x-cte1)/Taille_Bloc][(positionBallonOrig.y-cte2)/Taille_Bloc]],NULL,ecran,&positionBallonOrig); FSOUND_PlaySound(FSOUND_FREE, pew);//jouer le son positionBallonOrig=position(positionBallonDest); SDL_BlitSurface(Ballon[ATOMIC],NULL,ecran,&positionBallonOrig); SDL_Flip(ecran); t1=1; break; } } } } if(t1==2) { if(Chemin(positionBallonOrig,positionBallonDest)==1) { BallonActuel=Ballon[PermuterBall(positionBallonOrig,positionBallonDest)]; // SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallonDest); //SDL_BlitSurface(Ballon[EMPTY],NULL,ecran,&positionBallonOrig); for(i=0; tri9[i].i != -1 ; i++) { positionBallon.x=tri9[i].i * Taille_Bloc + cte1; positionBallon.y=tri9[i].j * Taille_Bloc + cte2; SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallon); SDL_Flip(ecran); SDL_Delay(40); SDL_BlitSurface(Ballon[EMPTY],NULL,ecran,&positionBallon); } SDL_BlitSurface(BallonActuel,NULL,ecran,&positionBallonDest); SDL_Flip(ecran); //bombe(positionBallonDest,ecran); if(supligne(positionBallonDest,ecran)==0) { coefScore=1; etat=caissier(ecran); if(etat>0) { //SDL_Delay(100); for(i=0; i<3 && i<etat ;i++) { positionBallon.x=PNext[i].i * Taille_Bloc + cte1; positionBallon.y=PNext[i].j * Taille_Bloc + cte2; supligne(positionBallon,ecran); } next(ecran); } else {continuer=0; msgbox_terminer(); nouveaujeu();} } else coefScore++; t1=0; } else t1=1; } } // meilleurS(); SDL_free(Ballon[0]); SDL_free(Ballon[1]); SDL_free(Ballon[2]); SDL_free(Ballon[3]); SDL_free(Ballon[4]); SDL_free(Ballon[5]); SDL_free(Ballon[6]); SDL_free(Ballon[7]); SDL_free(Ballon[8]); return ; }
int CSound::Initialise(int rate,int channels,int svol,int mvol) { if((channels > 16) || (channels < 0)) { return 1; } FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND); FSOUND_Init(rate,channels,FSOUND_INIT_USEDEFAULTMIDISYNTH); songname = "Empty"; SetSoundVolume(svol); SetMusicVolume(mvol); CurrentSong = NULL; CurrentSound = 0; pan = 127; freq = 11250; FSOUND_Sample_Load(0,"sfx/click.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(1,"sfx/dong.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(3,"sfx/computer.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(4,"sfx/scitech.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(5,"sfx/speed.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(6,"sfx/placetrack.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(7,"sfx/removetrack.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(8, "sfx/click3.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(9, "sfx/pickuptrack.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(10, "sfx/cartexplode.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(11, "sfx/cart-good.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(12, "sfx/pickup.wav",FSOUND_LOOP_OFF,0); FSOUND_Sample_Load(13, "sfx/crusher.wav",FSOUND_LOOP_OFF, 0); return 0; }
void init_var(int cpu,var_game_t ** var) { int i; /*allocation de la structure de variable*/ *var = (var_game_t *)malloc(sizeof(var_game_t)); if(*var == NULL) exit(EXIT_FAILURE); /*affectation des valeurs aux variables de la structure*/ (*var)->remain_bat_hum = 5; (*var)->remain_bat_cpu = 5; /*initialisation du fichier d'erreur*/ init_fic_erreur(*var); (*var)->mer_cible_hum = (int *)malloc(100*sizeof(int)); (*var)->mer_home_hum = (int *)malloc(100*sizeof(int)); /*correctif 1.1*/ if( (*var)->mer_cible_hum == NULL || (*var)->mer_home_hum == NULL) { fprintf((*var)->log_erreur,"Erreur dans l'allocation des mers hum \n"); exit_err(*var); } /*fin correctif 1.1*/ for(i=0;i<100;i++) { (*var)->mer_cible_hum[i] = -1; (*var)->mer_home_hum[i] = -1; } if(cpu == 1) { (*var)->mer_home_cpu = (int *)malloc(100*sizeof(int)); (*var)->mer_cible_cpu = (int *)malloc(100*sizeof(int)); /*correctif 1.1*/ if( (*var)->mer_cible_cpu == NULL || (*var)->mer_home_cpu == NULL) { fprintf((*var)->log_erreur,"Erreur dans l'allocation des mers cpu\n"); exit_err(*var); } /*fin correctif 1.1*/ for(i=0;i<100;i++) { (*var)->mer_cible_cpu[i] = -1; (*var)->mer_home_cpu[i] = -1; } } /*initialisation des flottes*/ /*1er bateau*/ (*var)->flotte_hum[0].vie = 2; (*var)->flotte_cpu[0].vie = 2; (*var)->flotte_hum[0].taille = 2; (*var)->flotte_cpu[0].taille = 2; /*2ieme bateau*/ (*var)->flotte_hum[1].vie = 3; (*var)->flotte_cpu[1].vie = 3; (*var)->flotte_hum[1].taille = 3; (*var)->flotte_cpu[1].taille = 3; /*3ieme bateau*/ (*var)->flotte_hum[2].vie = 3; (*var)->flotte_cpu[2].vie = 3; (*var)->flotte_hum[2].taille = 3; (*var)->flotte_cpu[2].taille = 3; /*4ieme bateau*/ (*var)->flotte_hum[3].vie = 4; (*var)->flotte_cpu[3].vie = 4; (*var)->flotte_hum[3].taille = 4; (*var)->flotte_cpu[3].taille = 4; /*5ieme bateau*/ (*var)->flotte_hum[4].vie = 6; (*var)->flotte_cpu[4].vie = 6; (*var)->flotte_hum[4].taille = 6; (*var)->flotte_cpu[4].taille = 6; /*init parametre son*/ (*var)->mute = 1; #ifdef __WIN32__ (*var)->tir_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\tir.mp3", 0, 0, 0); #else (*var)->tir_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/tir.mp3", 0, 0, 0); #endif if((*var)->tir_sound == NULL) { fprintf((*var)->log_erreur,"fichier musique tir non trouve\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->rate_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\rate.wav", 0, 0, 0); #else (*var)->rate_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/rate.wav", 0, 0, 0); #endif if((*var)->rate_sound == NULL) { fprintf((*var)->log_erreur,"fichier musique rate non trouve\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->coule_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\coule.wav", 0, 0, 0); #else (*var)->coule_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/coule.wav", 0, 0, 0); #endif if((*var)->coule_sound == NULL) { fprintf((*var)->log_erreur,"fichier musique coule non trouve\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->touche_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\touche.wav", 0, 0, 0); #else (*var)->touche_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/touche.wav", 0, 0, 0); #endif if((*var)->touche_sound == NULL) { fprintf((*var)->log_erreur,"fichier musique touche non trouve\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->place_sound = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\place.wav", 0, 0, 0); #else (*var)->place_sound = FSOUND_Sample_Load(FSOUND_FREE, "./son/place.wav", 0, 0, 0); #endif if((*var)->place_sound == NULL) { fprintf((*var)->log_erreur,"fichier musique place non trouve\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->gagne = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\gagne.wav", 0, 0, 0); #else (*var)->gagne = FSOUND_Sample_Load(FSOUND_FREE, "./son/gagne.wav", 0, 0, 0); #endif if((*var)->gagne == NULL) { fprintf((*var)->log_erreur,"fichier musique gagne non trouve\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->perdu = FSOUND_Sample_Load(FSOUND_FREE, ".\\son\\perdu.wav", 0, 0, 0); #else (*var)->perdu = FSOUND_Sample_Load(FSOUND_FREE, "./son/perdu.wav", 0, 0, 0); #endif if((*var)->perdu == NULL) { fprintf((*var)->log_erreur,"fichier musique perdu non trouve\n"); exit_err(*var); } /*fin init parametre son*/ /*init parametres video*/ /*allocation des parametres de la message_box*/ #ifdef __WIN32__ (*var)->message_img = IMG_Load(".\\dessin\\box.jpg"); #else (*var)->message_img = IMG_Load("./dessin/box.jpg"); #endif if((*var)->message_img == NULL) { fprintf((*var)->log_erreur,"erreur chargement image box\n"); exit_err(*var); } (*var)->box_position.x = 100; (*var)->box_position.y = 725; #ifdef __WIN32__ (*var)->police_box = TTF_OpenFont(".\\police\\game_over.ttf",80); #else (*var)->police_box = TTF_OpenFont("./police/game_over.ttf",80); #endif if((*var)->police_box == NULL) { fprintf((*var)->log_erreur,"erreur chargement police game_over\n"); exit_err(*var); } /*allocation des parametres de l'affichage des scores*/ #ifdef __WIN32__ (*var)->score = IMG_Load(".\\dessin\\score.jpg"); #else (*var)->score = IMG_Load("./dessin/score.jpg"); #endif if((*var)->score == NULL) { fprintf((*var)->log_erreur,"erreur chargement image score\n"); exit_err(*var); } (*var)->score_position.x = 100; #ifdef __WIN32__ (*var)->police_score = TTF_OpenFont(".\\police\\score.ttf",100); #else (*var)->police_score = TTF_OpenFont("./police/score.ttf",100); #endif if((*var)->police_score == NULL) { fprintf((*var)->log_erreur,"erreur chargement police score\n"); exit_err(*var); } /*allocation des parametre d'affiche des boutons mute/unmute*/ /*mise en pause pour une version suivante (*var)->mute_button = IMG_Load("mute.jpg"); if((*var)->mute_button == NULL) { fprintf((*var)->log_erreur,"erreur chargement image mute\n"); exit_err(*var); } (*var)->unmute_button = IMG_Load("unmute.jpg"); if((*var)->unmute_button == NULL) { fprintf((*var)->log_erreur,"erreur chargement image unmute\n"); exit_err(*var); } (*var)->mute_position.x = 725; (*var)->mute_position.y = 25; fonctionnalite a develloper prochaine version*/ /*allocation des affichages rate/touche/fragments_bateau des mers*/ #ifdef __WIN32__ (*var)->rate = IMG_Load(".\\dessin\\rate.jpg"); #else (*var)->rate = IMG_Load("./dessin/rate.jpg"); #endif if((*var)->rate == NULL) { fprintf((*var)->log_erreur,"erreur chargement image rate\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->touche = IMG_Load(".\\dessin\\touche.jpg"); #else (*var)->touche = IMG_Load("./dessin/touche.jpg"); #endif if((*var)->touche == NULL) { fprintf((*var)->log_erreur,"erreur chargement image touche\n"); exit_err(*var); } #ifdef __WIN32__ (*var)->frag_bat = IMG_Load(".\\dessin\\fragbat.jpg"); #else (*var)->frag_bat = IMG_Load("./dessin/fragbat.jpg"); #endif if((*var)->frag_bat == NULL) { fprintf((*var)->log_erreur,"erreur chargement image fragment bateau\n"); exit_err(*var); } /*allocation fond d'ecran*/ #ifdef __WIN32__ (*var)->background = IMG_Load(".\\dessin\\background.jpg"); #else (*var)->background = IMG_Load("./dessin/background.jpg"); #endif if((*var)->background == NULL) { fprintf((*var)->log_erreur,"erreur chargement image background\n"); exit_err(*var); } (*var)->position_back.x = 0; (*var)->position_back.y = 0; }
bool CSoundManager::LoadWave(char *Filename, int Nr, bool looped) { if (false == InitSuccessfull) return false; if(GameRunning == false) return false; bool fromrar; char *pData; char Temp[256]; unsigned long Size; char Buffer[100]; fromrar = false; int Nummer = Nr; if (its_Sounds[Nummer] != NULL) { delete(its_Sounds[Nummer]); its_Sounds[Nummer] = NULL; } // Zuerst checken, ob sich der Sound in einem MOD-Ordner befindet if (CommandLineParams.RunOwnLevelList == true) { sprintf_s(Temp, "levels/%s/%s", CommandLineParams.OwnLevelList, Filename); if (FileExists(Temp)) goto loadfile; } // Dann checken, ob sich das File im Standard Ordner befindet sprintf_s(Temp, "data/%s", Filename); if (FileExists(Temp)) goto loadfile; // Auch nicht? Dann ist es hoffentlich im RAR file if (urarlib_get(&pData, &Size, Filename, RARFILENAME, convertText(RARFILEPASSWORD)) == false) { sprintf_s(Temp, "\n-> Error loading %s from Archive !\n", Filename); Protokoll.WriteText(Temp, true); return false; } else fromrar = true; loadfile: its_Sounds[Nummer] = new CWave(); // von Platte laden if (fromrar == false) { if (looped == false) its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, Temp, FSOUND_LOOP_OFF, 0, Size); else // mit Loop laden its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, Temp, FSOUND_LOOP_NORMAL, 0, Size); } // aus Rarfile laden else { if (looped == false) its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, pData, FSOUND_LOADMEMORY | FSOUND_LOOP_OFF, 0, Size); else // mit Loop laden its_Sounds[Nummer]->SoundData = FSOUND_Sample_Load(Nr, pData, FSOUND_LOADMEMORY | FSOUND_LOOP_NORMAL, 0, Size); free(pData); } // Temp Datei wieder löschen und Speicher freigeben //DeleteFile("temp.dat"); //free(pData); // Und bei bedarf den loop ausschalten //if (looped == false) // FSOUND_Sample_SetLoopMode(its_Sounds[Nummer]->SoundData, FSOUND_LOOP_OFF); // Fehler beim Laden ? // if (its_Sounds[Nummer]->SoundData == NULL) { // TODO FIX /* strcpy_s(Buffer, "\n-> Error loading "); strcat_s(Buffer, Filename); strcat_s(Buffer, "\n"); Protokoll.WriteText(Buffer, true); */ // return (-1); return false; } its_Sounds[Nummer]->isLooped = looped; its_LoadedSounds++; //its_Sounds[Nummer].Name = Filename; // kurz anspielen und wieder stoppen int Channel = FSOUND_PlaySound (FSOUND_FREE, its_Sounds[Nr]->SoundData); FSOUND_SetVolume(Channel, 0); FSOUND_StopSound(Channel); // TODO FIX /* strcpy_s(Buffer, TextArray [TEXT_LADE_WAVE]); strcat_s(Buffer, Filename); strcat_s(Buffer, TextArray [TEXT_LADEN_ERFOLGREICH]); strcat_s(Buffer, " \n"); Protokoll.WriteText(Buffer, false);*/ DisplayLoadInfo(Buffer); //return Nummer; return true; } // LoadWave