void window(char *file) { int loop; unsigned int framelimit; framelimit = 0; loop = 0; game.file = file; if (init_all() == 0 && game.map != NULL) { load_audio(); //load_intro(); while (loop == 0) { loop = get_input_menu(); load_menu(); while (loop == 1) { loop = get_input_game(); load_game(); framelimit = delay(framelimit); } framelimit = delay(framelimit); } } exit_game(); }
static HANDLE open_dsp(Devtab_t* dp, Pfd_t* fdp, Path_t *ip, int oflags, HANDLE *extra) { HANDLE hp; int blkno, minor = ip->name[1]; Pdev_t *pdev; unsigned short *blocks = devtab_ptr(Share->chardev_index, AUDIO_MAJOR); if(load_audio()) { /* If the device is already opened */ if(blkno = blocks[minor]) { logerr(LOG_DEV+5, "Device Busy"); errno = EBUSY; return 0; } else { WAVEFORMATEX *wp; if((blkno = block_alloc(BLK_PDEV)) == 0) return(0); pdev = dev_ptr(blkno); wp = (WAVEFORMATEX*)(pdev+1); ZeroMemory((void *)pdev, BLOCK_SIZE-1); /* Initialising the wave format sturcture */ wp->wFormatTag=WAVE_FORMAT_PCM; wp->nChannels=CHANNELS; wp->nSamplesPerSec=SAMPLES_PER_SEC; if(minor&1) wp->nSamplesPerSec *= 2; wp->wBitsPerSample=BITS_PER_SAMPLE; wp->nBlockAlign=(wp->wBitsPerSample*CHANNELS)/8 ; wp->nAvgBytesPerSec=wp->nSamplesPerSec*wp->nBlockAlign; wp->cbSize=EXTRA_FORMAT_SIZE; if(!audio_open(pdev,1)) { logerr(LOG_DEV+5, "waveOutOpen"); block_free((unsigned short)blkno); return 0; } hp = AUDIO_HANDLE; pdev->major=AUDIO_MAJOR; pdev->minor = minor; uwin_pathmap(ip->path, pdev->devname, sizeof(pdev->devname), UWIN_W2U); fdp->devno = blkno; blocks[minor] = blkno; pdev->devpid = P_CP->pid; } return hp; } else { logerr(0, "audio functions not supported"); return 0; } }
/** Initializes the sound subsystem **/ void SOUND_initialize() { //Load paddle left load_audio( paddle_left, ARRAY_SIZE(paddle_left) ); //Load paddle right load_audio( paddle_right, ARRAY_SIZE(paddle_right) ); //Load paddle miss load_audio( paddle_fail, ARRAY_SIZE(paddle_fail) ); //Load victory song load_audio( victory_song, ARRAY_SIZE(victory_song) ); //Load intro song load_audio( pong_song, ARRAY_SIZE(pong_song) ); //Finish up SOUND_stop(); //so that amplitude is calculated volume = 5; SOUND_change_volume( 0 ); }
static HANDLE audio_open(Pdev_t *pdev, int close) { HANDLE ph,th,hp=pdev->DeviceOutputHandle; DWORD err; WAVEFORMATEX *wp = (WAVEFORMATEX*)(pdev+1); if(!load_audio()) { logerr(0, "audio functions not supported"); return(0); } if(hp && P_CP->ntpid==pdev->NtPid) { if(!close) return(hp); (*pwaveOutReset)(hp); (*pwaveOutClose)(hp); } else if(pdev->NtPid && (ph=OpenProcess(PROCESS_ALL_ACCESS,FALSE,(DWORD)pdev->NtPid))) { /* remotely close the wave device */ if(th=CreateRemoteThread(ph,NULL,0,wave_close,(void*)hp,0,&err)) { if(WaitForSingleObject(th,1000)!=WAIT_OBJECT_0) logerr(LOG_PROC+2, "WaitForSingleObject"); closehandle(th,HT_THREAD); } else logerr(LOG_PROC+2, "CreateRemoteThread"); closehandle(ph,HT_PROC); } pdev->NtPid = 0; if(err=(*pwaveOutOpen)((HWAVEOUT*)&hp,WAVE_MAPPER,wp,0,0,WAVE_ALLOWSYNC)) { SetLastError(err); logerr(LOG_DEV+5, "waveOutOpen"); errno = maperr(err); return 0; } pdev->opencount = 1; pdev->NtPid = P_CP->ntpid; pdev->DeviceOutputHandle = hp; return(hp); }