int digi_init() { OSErr err; // CFILE *fp; int i; if (!use_sounds) return -1; num_sounds = (sizeof(sound_list) / sizeof(short)) - 1; i = MaxVoiceLoad(); err = InitSoundMusicSystem(MAX_MUSIC_CHANNELS, 4 + (digi_max_channels/2), digi_max_channels, digi_sound_quality); // err = InitSoundMusicSystem(MAX_MUSIC_CHANNELS, 10, 16, digi_sound_quality); if (err != noErr) return -1; master_save = GetMasterVolume(); if (master_save < 0) master_save = 0; else if ( master_save > 255 ) master_save = 255; #ifdef MAC_SHAREWARE PurgeSongs(1); LockSongs(0); #else init_redbook(); #endif digi_initialized = 1; // set volumes and then out of here.. digi_set_master_volume(Config_master_volume); digi_set_volume(digi_volume, midi_volume); digi_reset_digi_sounds(); atexit(digi_close); return 0; }
int ReadConfigFile() { FILE *infile; char line[80], *token, *value, *ptr; ubyte gamma; int joy_axis_min[4]; int joy_axis_center[4]; int joy_axis_max[4]; int i; strcpy( config_last_player, "" ); joy_axis_min[0] = joy_axis_min[1] = joy_axis_min[2] = joy_axis_min[3] = 0; joy_axis_max[0] = joy_axis_max[1] = joy_axis_max[2] = joy_axis_max[3] = 0; joy_axis_center[0] = joy_axis_center[1] = joy_axis_center[2] = joy_axis_center[3] = 0; joy_set_cal_vals(joy_axis_min, joy_axis_center, joy_axis_max); digi_driver_board = 0; digi_driver_port = 0; digi_driver_irq = 0; digi_driver_dma = 0; digi_midi_type = 0; digi_midi_port = 0; Config_digi_volume = 4; Config_midi_volume = 4; Config_control_type = 0; Config_channels_reversed = 0; infile = fopen("descent.cfg", "rt"); if (infile == NULL) { return 1; } while (!feof(infile)) { memset(line, 0, 80); fgets(line, 80, infile); ptr = &(line[0]); while (isspace(*ptr)) ptr++; if (*ptr != '\0') { token = strtok(ptr, "="); value = strtok(NULL, "="); if (!strcmp(token, digi_dev_str)) digi_driver_board = strtol(value, NULL, 16); else if (!strcmp(token, digi_port_str)) digi_driver_port = strtol(value, NULL, 16); else if (!strcmp(token, digi_irq_str)) digi_driver_irq = strtol(value, NULL, 10); else if (!strcmp(token, digi_dma_str)) digi_driver_dma = strtol(value, NULL, 10); else if (!strcmp(token, digi_volume_str)) Config_digi_volume = strtol(value, NULL, 10); else if (!strcmp(token, midi_dev_str)) digi_midi_type = strtol(value, NULL, 16); else if (!strcmp(token, midi_port_str)) digi_midi_port = strtol(value, NULL, 16); else if (!strcmp(token, midi_volume_str)) Config_midi_volume = strtol(value, NULL, 10); else if (!strcmp(token, stereo_rev_str)) Config_channels_reversed = strtol(value, NULL, 10); else if (!strcmp(token, gamma_level_str)) { gamma = strtol(value, NULL, 10); gr_palette_set_gamma( gamma ); } else if (!strcmp(token, detail_level_str)) { Detail_level = strtol(value, NULL, 10); if (Detail_level == NUM_DETAIL_LEVELS-1) { int count,dummy,oc,od,wd,wrd,da,sc; count = sscanf (value, "%d,%d,%d,%d,%d,%d,%d\n",&dummy,&oc,&od,&wd,&wrd,&da,&sc); if (count == 7) { Object_complexity = oc; Object_detail = od; Wall_detail = wd; Wall_render_depth = wrd; Debris_amount = da; SoundChannels = sc; set_custom_detail_vars(); } } } else if (!strcmp(token, joystick_min_str)) { sscanf( value, "%d,%d,%d,%d", &joy_axis_min[0], &joy_axis_min[1], &joy_axis_min[2], &joy_axis_min[3] ); } else if (!strcmp(token, joystick_max_str)) { sscanf( value, "%d,%d,%d,%d", &joy_axis_max[0], &joy_axis_max[1], &joy_axis_max[2], &joy_axis_max[3] ); } else if (!strcmp(token, joystick_cen_str)) { sscanf( value, "%d,%d,%d,%d", &joy_axis_center[0], &joy_axis_center[1], &joy_axis_center[2], &joy_axis_center[3] ); } else if (!strcmp(token, last_player_str)) { char * p; strncpy( config_last_player, value, CALLSIGN_LEN ); p = strchr( config_last_player, '\n'); if ( p ) *p = 0; } else if (!strcmp(token, last_mission_str)) { char * p; strncpy( config_last_mission, value, MISSION_NAME_LEN ); p = strchr( config_last_mission, '\n'); if ( p ) *p = 0; } else if (!strcmp(token, config_vr_type_str)) { Config_vr_type = strtol(value, NULL, 10); } else if (!strcmp(token, config_vr_tracking_str)) { Config_vr_tracking = strtol(value, NULL, 10); } } } fclose(infile); i = FindArg( "-volume" ); if ( i > 0 ) { i = atoi( Args[i+1] ); if ( i < 0 ) i = 0; if ( i > 100 ) i = 100; Config_digi_volume = (i*8)/100; Config_midi_volume = (i*8)/100; } if ( Config_digi_volume > 8 ) Config_digi_volume = 8; if ( Config_midi_volume > 8 ) Config_midi_volume = 8; joy_set_cal_vals(joy_axis_min, joy_axis_center, joy_axis_max); digi_set_volume( (Config_digi_volume*32768)/8, (Config_midi_volume*128)/8 ); /* printf( "DigiDeviceID: 0x%x\n", digi_driver_board ); printf( "DigiPort: 0x%x\n", digi_driver_port ); printf( "DigiIrq: 0x%x\n", digi_driver_irq ); printf( "DigiDma: 0x%x\n", digi_driver_dma ); printf( "MidiDeviceID: 0x%x\n", digi_midi_type ); printf( "MidiPort: 0x%x\n", digi_midi_port ); key_getch(); */ Config_midi_type = digi_midi_type; Config_digi_type = digi_driver_board; // HACK!!! //Hack to make the Crytal Lake look like Microsoft Sound System if ( digi_driver_board == 0xe200 ) { ubyte tmp; tmp = CrystalLakeReadMCP( CL_MC1 ); if ( !(tmp & 0x80) ) atexit( CrystalLakeSetSB ); // Restore to SB when done. CrystalLakeSetWSS(); digi_driver_board = 0;//_MICROSOFT_8_ST;<was this microsoft thing, but its irrelevant, because we have no sound here yet,being that its also undefined, I set it to 0 -KRB } return 0; }