void TVType_Set (int tv_type, bool verbose) { TV_Type_User = &TV_Type_Table[tv_type]; g_machine.TV = TV_Type_User; g_machine.TV_lines = TV_Type_User->screen_lines; // FIXME: CPU_Clock_Current is not taken into account for IPeriod in CPU emulation // 262 * 228 = 59736, * 60 = 3584160 // 313 * 228 = 71364, * 50 = 3568200 // SN76489_SetClock(opt.TV_Lines_Current * opt.Cur_IPeriod); // 59736 for NTSC // SN76489_SetClock(g_machine.TV->CPU_clock); Sound_UpdateClockSpeed(); if (Sound.LogVGM.Logging == VGM_LOGGING_ACCURACY_SAMPLE) VGM_Update_Timing (&Sound.LogVGM); if (verbose) { // Print message & and update GUI checks Msg(MSGT_USER, Msg_Get(MSG_TVType_Set), TV_Type_User->name); Msg(MSGT_USER_LOG, Msg_Get(MSG_TVType_Info_Speed), TV_Type_User->screen_frequency); gui_menu_uncheck_all (menus_ID.tvtype); gui_menu_check (menus_ID.tvtype, tv_type); // Note that GUI checks are NOT updated if verbose mode is not set. // The reason is the parameters in MEKA.NAM can force a TV type, but we don't // want the user to be notified by that (unless he manually reoverride it). } }
// ACTION: SWITCH SPRITE FLICKERING TO 'FALSE' ----------------------------------- void Action_Switch_Flickering_No (void) { g_Configuration.sprite_flickering = SPRITE_FLICKERING_NO; gui_menu_un_check (menus_ID.flickering); gui_menu_check (menus_ID.flickering, 2); Msg (MSGT_USER, Msg_Get (MSG_Flickering_No)); }
void Blitters_Switch_Common (void) { if (g_env.state == MEKA_STATE_GAME) Video_Setup_State(); Msg(MSGT_USER, Msg_Get(MSG_Blitters_Set), Blitters.current->name); gui_menu_uncheck_all (menus_ID.blitters); gui_menu_check (menus_ID.blitters, Blitters.current->index); }
void Glasses_Switch_Mode_Com_Port (void) { Glasses.Mode = GLASSES_MODE_COM_PORT; gui_menu_uncheck_range (menus_ID.glasses, 1, 4); gui_menu_check (menus_ID.glasses, 4); Msg(MSGT_USER, Msg_Get(MSG_Glasses_Com_Port), Glasses.ComPort); Msg(MSGT_USER_LOG, "%s", Msg_Get(MSG_Glasses_Com_Port2)); }
void Glasses_Switch_Mode_Show_Right (void) { Glasses_Close(); Glasses.Mode = GLASSES_MODE_SHOW_ONLY_RIGHT; gui_menu_uncheck_range (menus_ID.glasses, 1, 4); gui_menu_check (menus_ID.glasses, 3); Msg(MSGT_USER, "%s", Msg_Get(MSG_Glasses_Show_Right)); }
void FM_Emulator_Digital (void) { Sound.FM_Emulator_Current = FM_EMULATOR_EMU2413; FM_Digital_Active (); // FIXME: message gui_menu_un_check_area (menus_ID.fm_emu, 0, 1); gui_menu_check (menus_ID.fm_emu, 1); }
void FM_Enable (void) { Sound.FM_Enabled = TRUE; Msg (MSGT_USER, Msg_Get (MSG_FM_Enabled)); Msg (MSGT_USER_BOX, Msg_Get (MSG_Must_Reset)); gui_menu_un_check_area (menus_ID.fm, 0, 1); gui_menu_check (menus_ID.fm, 0); }
void Inputs_Switch_TVOekaki (void) { Inputs_CFG_Peripheral_Change (PLAYER_1, INPUT_TVOEKAKI); Msg (MSGT_USER, Msg_Get (MSG_Inputs_TVOekaki)); Msg (MSGT_USER_BOX, Msg_Get (MSG_Inputs_Play_Pen)); gui_menu_un_check_area (menus_ID.inputs, 0, 4); gui_menu_check (menus_ID.inputs, Inputs.Peripheral [PLAYER_1]); }
// ACTION: SET INPUT TO STANDARD JOYPADS -------------------------------------- void Inputs_Switch_Joypad (void) { Inputs_CFG_Peripheral_Change (PLAYER_1, INPUT_JOYPAD); Msg (MSGT_USER, Msg_Get (MSG_Inputs_Joypad)); Msg (MSGT_USER_BOX, Msg_Get (MSG_Inputs_Play_Digital)); gui_menu_un_check_area (menus_ID.inputs, 0, 4); gui_menu_check (menus_ID.inputs, Inputs.Peripheral [PLAYER_1]); }
void Inputs_Switch_SportsPad (void) { Inputs_CFG_Peripheral_Change (PLAYER_1, INPUT_SPORTSPAD); Msg (MSGT_USER, Msg_Get (MSG_Inputs_SportsPad)); Msg (MSGT_USER_BOX, Msg_Get (MSG_Inputs_Play_Mouse)); gui_menu_un_check_area (menus_ID.inputs, 0, 4); gui_menu_check (menus_ID.inputs, Inputs.Peripheral [PLAYER_1]); }
// INPUTS: SET INPUT TO LIGHT PHASER ------------------------------------------ void Inputs_Switch_LightPhaser (void) { Inputs_CFG_Peripheral_Change (PLAYER_1, INPUT_LIGHTPHASER); Msg (MSGT_USER, Msg_Get (MSG_Inputs_LightPhaser)); Msg (MSGT_USER_BOX, Msg_Get (MSG_Inputs_Play_Mouse)); gui_menu_un_check_area (menus_ID.inputs, 0, 4); gui_menu_check (menus_ID.inputs, Inputs.Peripheral [PLAYER_1]); }
void Glasses_Switch_Mode_Show_Both (void) { Glasses_Close(); Glasses.Mode = GLASSES_MODE_SHOW_BOTH; gui_menu_uncheck_range (menus_ID.glasses, 1, 4); gui_menu_check (menus_ID.glasses, 1); Msg(MSGT_USER, "%s", Msg_Get(MSG_Glasses_Show_Both)); }
// ACTION: SWITCH SPRITE FLICKERING TO 'AUTOMATIC' ---------------------------- void Action_Switch_Flickering_Auto (void) { g_Configuration.sprite_flickering = SPRITE_FLICKERING_AUTO; if (DB_CurrentEntry && (DB_CurrentEntry->flags & DB_FLAG_EMU_SPRITE_FLICKER)) g_Configuration.sprite_flickering |= SPRITE_FLICKERING_ENABLED; gui_menu_un_check (menus_ID.flickering); gui_menu_check (menus_ID.flickering, 0); Msg (MSGT_USER, Msg_Get (MSG_Flickering_Auto)); }
void Sound_Volume_Menu_Handler (t_menu_event *event) { const int volume = (int)event->user_data; Sound_MasterVolume_Set(volume); Msg (MSGT_USER /*_BOX*/, Msg_Get (MSG_Sound_Volume_Changed), volume); gui_menu_un_check (menus_ID.volume); gui_menu_check (menus_ID.volume, event->menu_item_idx); }
// INPUTS: SET INPUT TO PADDLE CONTROLLER ------------------------------------- void Inputs_Switch_PaddleControl (void) { Inputs_CFG_Peripheral_Change (PLAYER_1, INPUT_PADDLECONTROL); // Easter egg: Pong if (Inputs_KeyPressed (KEY_P, FALSE)) Pong_Start (); Msg (MSGT_USER, Msg_Get (MSG_Inputs_PaddleControl)); Msg (MSGT_USER_BOX, Msg_Get (MSG_Inputs_Play_Mouse)); Msg (MSGT_USER_BOX, Msg_Get (MSG_Inputs_Play_Digital_Unrecommended)); gui_menu_un_check_area (menus_ID.inputs, 0, 4); gui_menu_check (menus_ID.inputs, Inputs.Peripheral [PLAYER_1]); }
void FM_Emulator_OPL (void) { #ifdef MEKA_OPL Sound.FM_Emulator_Current = FM_EMULATOR_YM2413HD; FM_OPL_Active (); // FIXME: message gui_menu_un_check_area (menus_ID.fm_emu, 0, 1); gui_menu_check (menus_ID.fm_emu, 0); #else Msg (MSGT_DEBUG, "FM_Emulator_OPL() called while MEKA_OPL is not defined!"); #endif }
static void Lang_Set (t_menu_event *event) { Messages.Lang_Cur = (t_lang *)event->user_data; gui_menu_uncheck_all (menus_ID.languages); gui_menu_check (menus_ID.languages, event->menu_item_idx); Msg(MSGT_USER, Msg_Get(MSG_Language_Set), Messages.Lang_Cur->Name); Msg(MSGT_USER_BOX, "%s", Msg_Get(MSG_Language_Set_Warning)); // Post-process // FIXME: Rebuild menus gamebox_rename_all(); gui_relayout_all(); }
void Glasses_Switch_Enable (void) { Glasses_Close(); Glasses.Enabled ^= 1; if (Glasses.Enabled) { gui_menu_check (menus_ID.glasses, 0); Msg(MSGT_USER, "%s", Msg_Get(MSG_Glasses_Enabled)); } else { gui_menu_uncheck_range(menus_ID.glasses, 0, 0); Msg(MSGT_USER, "%s", Msg_Get(MSG_Glasses_Disabled)); } gui_menu_active_range (Glasses.Enabled, menus_ID.glasses, 1, 4); Inputs_CFG_Peripherals_Draw(); }
void Sound_Rate_Set (int value, int reinit_hardware) { int i; if (reinit_hardware) { Sound.SampleRate = value; Msg (MSGT_USER /*_BOX*/, Msg_Get (MSG_Sound_Rate_Changed), Sound.SampleRate); } gui_menu_un_check(menus_ID.rate); for (i = 0; Sound_Rate_Default_Table[i] != -1; i++) if (value == Sound_Rate_Default_Table[i]) { gui_menu_check (menus_ID.rate, i); break; } }
// Initialize actual sound engine --------------------------------------------- int Sound_Init (void) { // Set fake/null FM interface by default // This is to avoid crashing when using FM registers (savestates...) // if sound is disabled. FM_Null_Active(); // Skip if there is no need to initialize sound now // FIXME: will MEKA work properly with now soundcard ? // Are emulators functionning properly and saving good savestates ? if (Sound.Enabled == FALSE) return (MEKA_ERR_OK); if (Sound.SoundCard == SOUND_SOUNDCARD_NONE) { // Quit_Msg ("%s", Msg_Get (MSG_Sound_Init_Soundcard_No)); // return (MEKA_ERR_FAIL); return (MEKA_ERR_OK); } // Print Sound initialization message ConsolePrintf ("%s\n", Msg_Get (MSG_Sound_Init)); // Initialize SEAL Sound_Init_SEAL(); // Disable sound if user selected 'no soundcard' if (Sound.SoundCard == SOUND_SOUNDCARD_NONE) { // Sound.Enabled = FALSE; return (MEKA_ERR_OK); } // Initialize Sound Card, SEAL side // Start in pause mode, to avoid sound update on startup (could crash, before everything is initialized) Sound.Paused = TRUE; Sound_Init_SoundCard(); // Initialize OPL (if available) #ifdef MEKA_OPL Sound_Init_OPL(); #endif // Initialize Sound emulators Sound_Init_Emulators(); // Initialize Sound Engine (SEAL) if (Sound_Init_Engine(SOUND_STREAM_WAIT) != MEKA_ERR_OK) Quit (); // FIXME: CRAP! Legacy stuff again Sound.SampleRate = saGetSoundRate (); sound_icount = 0; Sound_Update_Count = 0; saSetSoundCPUClock (Sound_Calc_CPU_Time); // fm_delay_size = 6; // 0 // Setup checks in GUI // Note: this GUI sucks :( Sound.FM_Emulator_Current &= Sound.FM_Emulator_Available; gui_menu_un_check_area (menus_ID.fm_emu, 0, 1); gui_menu_active_area (FALSE, menus_ID.fm_emu, 0, 1); // Select FM emulator if (Sound.FM_Emulator_Available & FM_EMULATOR_YM2413HD) { gui_menu_active (AM_Active, menus_ID.fm_emu, 0); gui_menu_active (AM_Active, menus_ID.fm, 3); if (Sound.FM_Emulator_Current == FM_EMULATOR_NONE) Sound.FM_Emulator_Current = FM_EMULATOR_YM2413HD; } if (Sound.FM_Emulator_Available & FM_EMULATOR_EMU2413) { gui_menu_active (AM_Active, menus_ID.fm_emu, 1); if (Sound.FM_Emulator_Current == FM_EMULATOR_NONE) Sound.FM_Emulator_Current = FM_EMULATOR_EMU2413; } // Activate current FM emulator switch (Sound.FM_Emulator_Current) { #ifdef MEKA_OPL case FM_EMULATOR_YM2413HD: FM_OPL_Active (); gui_menu_check (menus_ID.fm_emu, 0); break; #endif case FM_EMULATOR_EMU2413: FM_Digital_Active (); gui_menu_check (menus_ID.fm_emu, 1); break; default: FM_Null_Active (); break; } // Ok Sound.Initialized = TRUE; return (MEKA_ERR_OK); }