void I_StartupTimer(void) { #ifndef NOTIMER extern int I_TimerISR(void); tprintf("I_StartupTimer()\n", 0); // installs master timer. Must be done before StartupTimer()! TSM_Install(SND_TICRATE); tsm_ID = TSM_NewService(I_TimerISR, 35, 255, 0); // max priority if (tsm_ID == -1) { I_Error("Can't register 35 Hz timer w/ DMX library"); } #endif }
int sound_init(int argc, char **argv) { int i,return_code, sr=SAMPLE_RATE,nc=NUMBER_CHANNELS; unsigned short ver; for (i=1;i<argc;i++) { if (!strcmp(argv[i],"-samplerate")) { i++; if (atoi(argv[i])<5000 || atoi(argv[i])>50000) printf("Bad sample rate : valid range is 5000..50000, default is %d",SAMPLE_RATE); else { printf("Sample rate set to %d\n",sr); sr=SAMPLE_RATE; } } else if (!strcmp(argv[i],"-channels")) { i++; if (atoi(argv[i])<1 || atoi(argv[i])>4) printf("Bad # of channels : valid range is 1..4, default is %d",NUMBER_CHANNELS); else { printf("# of channels set to %d\n",nc); nc=NUMBER_CHANNELS; } } else if (!strcmp(argv[i],"-sblaster")) { card=AHW_SOUND_BLASTER; if (music_card==NO_CARD) music_card=AHW_ADLIB; } else if (!strcmp(argv[i],"-proaudio")) { card=AHW_MEDIA_VISION; if (music_card==NO_CARD) music_card=AHW_ADLIB; } else if (!strcmp(argv[i],"-gravis") || !strcmp(argv[i],"-gus")) music_card=card=AHW_ULTRA_SOUND; else if (!strcmp(argv[i],"-speaker")) music_card=AHW_PC_SPEAKER; else if (!strcmp(argv[i],"-adlib")) music_card=AHW_ADLIB; else if (!strcmp(argv[i],"mpu401")) music_card=AHW_MPU_401; else if (!strcmp(argv[i],"-detect")) music_card=card=AHW_ANY; else if (!strcmp(argv[i],"-irq")) { i++; irq=atoi(argv[i]); } else if (!strcmp(argv[i],"-dma")) { i++; dma=atoi(argv[i]); } else if (!strcmp(argv[i],"-addr")) { i++; addr=atoi(argv[i]); } } if (card==NO_CARD && music_card==NO_CARD) return 0; TSM_Install(140); atexit(TSM_Remove); if (card==AHW_ANY || card==AHW_MEDIA_VISION) { if ( MV_Detect() == 0 ) { printf( "Detected MEDIA VISION card. (Pro Audio)\n" ); card=AHW_MEDIA_VISION; music_card=AHW_ADLIB; } else if (card==AHW_MEDIA_VISION) { printf("Warning : Detect failed for MEDIA VISION (Pro Audio) card.\n"); card=NO_CARD; } } if (card==AHW_ANY || card==AHW_ULTRA_SOUND) { if ( GF1_Detect() == 0 ) { printf( "Detected GRAVIS Ultrasound card.\n" ); music_card=card=AHW_ULTRA_SOUND; } else if (card==AHW_ULTRA_SOUND) { printf("Warning : Detect failed for GRAVIS Ultrasound card.\n"); card=NO_CARD; } } if (card==AHW_ANY) { if (!addr || !dma || !irq) { addr = dma = -1; irq = 0; return_code=SB_Detect( &addr, &irq, &dma, &ver); if (!return_code) printf( "SBlaster defaults are Port:%xh Irq:%d DMA:%d\n", addr, irq, dma ); printf( "Looking for a SOUND BLASTER card...\n" ); addr = irq = dma = -1; return_code = SB_Detect( &addr, &irq, &dma, &ver ); if (!return_code) { printf( "Found SoundBlaster card\n" ); printf( "ADDR:%03xh IRQ:%d DMA:%d Ver:%2x.%02x\n",addr, irq, dma, ver>>8,ver&0xff); SB_SetCard( addr, irq, dma ); } } else SB_SetCard( addr, irq, dma );