int WriteConfigFile() { FILE *infile; char str[256]; int joy_axis_min[4]; int joy_axis_center[4]; int joy_axis_max[4]; ubyte gamma = gr_palette_get_gamma(); joy_get_cal_vals(joy_axis_min, joy_axis_center, joy_axis_max); infile = fopen("descent.cfg", "wt"); if (infile == NULL) { return 1; } sprintf (str, "%s=0x%x\n", digi_dev_str, Config_digi_type); fputs(str, infile); sprintf (str, "%s=0x%x\n", digi_port_str, digi_driver_port); fputs(str, infile); sprintf (str, "%s=%d\n", digi_irq_str, digi_driver_irq); fputs(str, infile); sprintf (str, "%s=%d\n", digi_dma_str, digi_driver_dma); fputs(str, infile); sprintf (str, "%s=%d\n", digi_volume_str, Config_digi_volume); fputs(str, infile); sprintf (str, "%s=0x%x\n", midi_dev_str, Config_midi_type); fputs(str, infile); sprintf (str, "%s=0x%x\n", midi_port_str, digi_midi_port); fputs(str, infile); sprintf (str, "%s=%d\n", midi_volume_str, Config_midi_volume); fputs(str, infile); sprintf (str, "%s=%d\n", stereo_rev_str, Config_channels_reversed); fputs(str, infile); sprintf (str, "%s=%d\n", gamma_level_str, gamma); fputs(str, infile); if (Detail_level == NUM_DETAIL_LEVELS-1) sprintf (str, "%s=%d,%d,%d,%d,%d,%d,%d\n", detail_level_str, Detail_level, Object_complexity,Object_detail,Wall_detail,Wall_render_depth,Debris_amount,SoundChannels); else sprintf (str, "%s=%d\n", detail_level_str, Detail_level); fputs(str, infile); sprintf (str, "%s=%d,%d,%d,%d\n", joystick_min_str, joy_axis_min[0], joy_axis_min[1], joy_axis_min[2], joy_axis_min[3] ); fputs(str, infile); sprintf (str, "%s=%d,%d,%d,%d\n", joystick_cen_str, joy_axis_center[0], joy_axis_center[1], joy_axis_center[2], joy_axis_center[3] ); fputs(str, infile); sprintf (str, "%s=%d,%d,%d,%d\n", joystick_max_str, joy_axis_max[0], joy_axis_max[1], joy_axis_max[2], joy_axis_max[3] ); fputs(str, infile); sprintf (str, "%s=%s\n", last_player_str, Players[Player_num].callsign ); fputs(str, infile); sprintf (str, "%s=%s\n", last_mission_str, config_last_mission ); fputs(str, infile); sprintf (str, "%s=%d\n", config_vr_type_str, Config_vr_type ); fputs(str, infile); sprintf (str, "%s=%d\n", config_vr_tracking_str, Config_vr_tracking ); fputs(str, infile); fclose(infile); return 0; }
void do_options_menu() { // newmenu_item m[14]; newmenu_item m[14]; int i = 0; do { m[0].type = NM_TYPE_SLIDER; m[0].text=TXT_FX_VOLUME; m[0].value=Config_digi_volume;m[0].min_value=0; m[0].max_value=8; m[1].type = NM_TYPE_SLIDER; m[1].text=TXT_MUSIC_VOLUME; m[1].value=Config_midi_volume;m[1].min_value=0; m[1].max_value=8; m[2].type = NM_TYPE_CHECK; m[2].text=TXT_REVERSE_STEREO; m[2].value=Config_channels_reversed; m[3].type = NM_TYPE_TEXT; m[3].text=""; //added/changed on 10/27/98 by Victor Rachels to increase brightness range m[4].type = NM_TYPE_SLIDER; m[4].text=TXT_BRIGHTNESS; m[4].value=gr_palette_get_gamma();m[4].min_value=0; m[4].max_value=16; //end this section addition - Victor Rachels m[5].type = NM_TYPE_TEXT; m[5].text=""; m[6].type = NM_TYPE_MENU; m[6].text=TXT_CONTROLS_; m[7].type = NM_TYPE_MENU; m[7].text=TXT_DETAIL_LEVELS; m[8].type = NM_TYPE_MENU; m[8].text=TXT_CAL_JOYSTICK; //added/changed on 10/27/98 by Victor Rachels to increase sensitivity range m[9].type = NM_TYPE_SLIDER; m[9].text=TXT_JOYS_SENSITIVITY; m[9].value=Config_joystick_sensitivity; m[9].min_value =0; m[9].max_value = 8; //end this section addition - Victor Rachels //added on 4/13/99 by Victor Rachels to add joystick deadzone option m[10].type = NM_TYPE_SLIDER; m[10].text="Joystick Deadzone"; m[10].value=joy_deadzone; m[10].min_value=0; m[10].max_value=16; //end this section addition - VR m[11].type = NM_TYPE_TEXT; m[11].text=""; m[12].type = NM_TYPE_CHECK; m[12].text="Ship auto-leveling"; m[12].value=Auto_leveling_on; m[13].type = NM_TYPE_MENU; m[13].text="D1X options..."; i = newmenu_do1( NULL, TXT_OPTIONS, 14, m, joydef_menuset, i ); switch(i) { case 6: joydefs_config(); break; case 7: do_detail_level_menu(); break; case 8: joydefs_calibrate(); break; case 13: d1x_options_menu(); break; } Config_channels_reversed = m[2].value; Config_joystick_sensitivity = m[9].value; joy_deadzone = m[10].value; Auto_leveling_on = m[12].value; } while( i>-1 ); if ( Config_midi_volume < 1 ) { digi_play_midi_song( NULL, NULL, NULL, 0 ); } write_player_file(); }
void do_options_menu() { newmenu_item m[13]; int i = 0; do { // m[0].type = NM_TYPE_SLIDER; m[0].text=TXT_FX_VOLUME; m[0].value=Config_digi_volume;m[0].min_value=0; m[0].max_value=8; // m[1].type = NM_TYPE_SLIDER; m[1].text=TXT_MUSIC_VOLUME; m[1].value=Config_midi_volume;m[1].min_value=0; m[1].max_value=8; // m[2].type = NM_TYPE_CHECK; m[2].text=TXT_REVERSE_STEREO; m[2].value=Config_channels_reversed; m[0].type = NM_TYPE_MENU; m[0].text="Sound/Music Controls..."; m[1].type = NM_TYPE_TEXT; m[1].text=""; m[2].type = NM_TYPE_SLIDER; m[2].text=TXT_BRIGHTNESS; m[2].value=gr_palette_get_gamma();m[2].min_value=0; m[2].max_value=8; m[3].type = NM_TYPE_TEXT; m[3].text=""; #ifndef APPLE_OEM m[4].type = NM_TYPE_MENU; m[4].text=TXT_CONTROLS_; #else m[4].type = NM_TYPE_TEXT; m[4].text = ""; #endif m[5].type = NM_TYPE_MENU; m[5].text=TXT_DETAIL_LEVELS; m[6].type = NM_TYPE_MENU; m[6].text=TXT_CAL_JOYSTICK; m[7].type = NM_TYPE_TEXT; m[7].text=""; m[8].type = NM_TYPE_SLIDER; m[8].text=TXT_JOYS_SENSITIVITY; m[8].value=Config_joystick_sensitivity; m[8].min_value =0; m[8].max_value = 8; m[9].type = NM_TYPE_TEXT; m[9].text=""; m[10].type = NM_TYPE_CHECK; m[10].text="Pixel Double"; m[10].value=Scanline_double; m[11].type = NM_TYPE_CHECK; m[11].text="Ship auto-leveling"; m[11].value=Auto_leveling_on; i = newmenu_do4( NULL, TXT_OPTIONS, 12, m, joydef_menuset, i, NULL, -1, -1, 1 ); switch(i) { case 0: do_sound_menu(); break; case 4: joydefs_config(); break; case 5: do_detail_level_menu(); break; case 6: joydefs_calibrate(); break; } // Config_channels_reversed = m[2].value; Config_joystick_sensitivity = m[8].value; Auto_leveling_on = m[11].value; Scanline_double = m[10].value; } while( i>-1 ); // if ( Config_midi_volume < 1 ) { // digi_play_midi_song( NULL, NULL, NULL, 0 ); // } write_player_file(); }
int WriteConfigFile() { PHYSFS_file *infile; GameCfg.GammaLevel = gr_palette_get_gamma(); infile = PHYSFSX_openWriteBuffered("descent.cfg"); if (infile == NULL) { return 1; } PHYSFSX_printf(infile, "%s=%d\n", DigiVolumeStr, GameCfg.DigiVolume); PHYSFSX_printf(infile, "%s=%d\n", MusicVolumeStr, GameCfg.MusicVolume); PHYSFSX_printf(infile, "%s=%d\n", ReverseStereoStr, GameCfg.ReverseStereo); PHYSFSX_printf(infile, "%s=%d\n", OrigTrackOrderStr, GameCfg.OrigTrackOrder); PHYSFSX_printf(infile, "%s=%d\n", MusicTypeStr, GameCfg.MusicType); PHYSFSX_printf(infile, "%s=%d\n", CMLevelMusicPlayOrderStr, GameCfg.CMLevelMusicPlayOrder); PHYSFSX_printf(infile, "%s=%d\n", CMLevelMusicTrack0Str, GameCfg.CMLevelMusicTrack[0]); PHYSFSX_printf(infile, "%s=%d\n", CMLevelMusicTrack1Str, GameCfg.CMLevelMusicTrack[1]); PHYSFSX_printf(infile, "%s=%s\n", CMLevelMusicPathStr, GameCfg.CMLevelMusicPath); PHYSFSX_printf(infile, "%s=%s\n", CMMiscMusic0Str, GameCfg.CMMiscMusic[SONG_TITLE]); PHYSFSX_printf(infile, "%s=%s\n", CMMiscMusic1Str, GameCfg.CMMiscMusic[SONG_BRIEFING]); PHYSFSX_printf(infile, "%s=%s\n", CMMiscMusic2Str, GameCfg.CMMiscMusic[SONG_ENDLEVEL]); PHYSFSX_printf(infile, "%s=%s\n", CMMiscMusic3Str, GameCfg.CMMiscMusic[SONG_ENDGAME]); PHYSFSX_printf(infile, "%s=%s\n", CMMiscMusic4Str, GameCfg.CMMiscMusic[SONG_CREDITS]); PHYSFSX_printf(infile, "%s=%d\n", GammaLevelStr, GameCfg.GammaLevel); PHYSFSX_printf(infile, "%s=%s\n", LastPlayerStr, Players[Player_num].callsign); PHYSFSX_printf(infile, "%s=%s\n", LastMissionStr, GameCfg.LastMission); PHYSFSX_printf(infile, "%s=%i\n", ResolutionXStr, SM_W(Game_screen_mode)); PHYSFSX_printf(infile, "%s=%i\n", ResolutionYStr, SM_H(Game_screen_mode)); PHYSFSX_printf(infile, "%s=%i\n", AspectXStr, GameCfg.AspectX); PHYSFSX_printf(infile, "%s=%i\n", AspectYStr, GameCfg.AspectY); PHYSFSX_printf(infile, "%s=%i\n", WindowModeStr, GameCfg.WindowMode); PHYSFSX_printf(infile, "%s=%i\n", TexFiltStr, GameCfg.TexFilt); PHYSFSX_printf(infile, "%s=%i\n", VSyncStr, GameCfg.VSync); PHYSFSX_printf(infile, "%s=%i\n", MultisampleStr, GameCfg.Multisample); PHYSFSX_printf(infile, "%s=%i\n", FPSIndicatorStr, GameCfg.FPSIndicator); PHYSFSX_printf(infile, "%s=%i\n", GrabinputStr, GameCfg.Grabinput); PHYSFS_close(infile); return 0; }
int gr_init(void) { int org_gamma; int retcode; int mode = SM(320,200); // Only do this function once! if (gr_installed==1) return 3; #ifdef __DJGPP__ if (!__djgpp_nearptr_enable()) { printf("nearptr enable=%x\n", __dpmi_error); return 10; } #ifndef SAVEGR gr_video_memory = (unsigned char *)(__djgpp_conventional_base + 0xa0000); #else gr_video_memory=(unsigned char *)-1; #endif pVideoMode = (volatile ubyte *)(__djgpp_conventional_base+0x449); pNumColumns = (volatile ushort *)(__djgpp_conventional_base+0x44a); pNumRows = (volatile ubyte *)(__djgpp_conventional_base+0x484); pCharHeight = (volatile ushort *)(__djgpp_conventional_base+0x485); pCursorPos = (volatile ushort *)(__djgpp_conventional_base+0x450); pCursorType = (volatile ushort *)(__djgpp_conventional_base+0x460); pTextMemory = (volatile ushort *)(__djgpp_conventional_base+0xb8000); #endif #ifndef __DJGPP__ if (gr_init_A0000()) return 10; #endif // Save the current text screen mode if (gr_save_mode()==1) return 2; #ifndef NOGRAPH // Save the current palette, and fade it out to black. gr_palette_read( gr_pal_default ); gr_palette_faded_out = 0; org_gamma = gr_palette_get_gamma(); gr_palette_set_gamma( 0 ); gr_palette_fade_out( gr_pal_default, 32, 0 ); gr_palette_clear(); gr_palette_set_gamma( org_gamma ); gr_sync_display(); gr_sync_display(); #endif #ifdef __DJGPP__ #ifdef SAVEGR __djgpp_nearptr_disable(); #endif #endif MALLOC( grd_curscreen,grs_screen,1 ); memset( grd_curscreen, 0, sizeof(grs_screen)); // Set the mode. if ((retcode=gr_set_mode(mode))) { gr_restore_mode(); return retcode; } //JOHNgr_disable_default_palette_loading(); // Set all the screen, canvas, and bitmap variables that // aren't set by the gr_set_mode call: grd_curscreen->sc_canvas.cv_color = 0; grd_curscreen->sc_canvas.cv_drawmode = 0; grd_curscreen->sc_canvas.cv_font = NULL; grd_curscreen->sc_canvas.cv_font_fg_color = 0; grd_curscreen->sc_canvas.cv_font_bg_color = 0; gr_set_current_canvas( &grd_curscreen->sc_canvas ); #if 0 if (!dpmi_allocate_selector( &gr_fade_table, 256*GR_FADE_LEVELS, &gr_fade_table_selector )) Error( "Error allocating fade table selector!" ); if (!dpmi_allocate_selector( &gr_palette, 256*3, &gr_palette_selector )) Error( "Error allocating palette selector!" ); #endif // if (!dpmi_allocate_selector( &gr_inverse_table, 32*32*32, &gr_inverse_table_selector )) // Error( "Error allocating inverse table selector!" ); // Set flags indicating that this is installed. gr_installed = 1; #ifdef __GNUC__ atexit((void (*)) gr_close); #else atexit(gr_close); #endif return 0; }