Ejemplo n.º 1
0
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).
    }
}
Ejemplo n.º 2
0
// 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));
}
Ejemplo n.º 3
0
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);
}
Ejemplo n.º 4
0
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));
}
Ejemplo n.º 5
0
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));
}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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);
}
Ejemplo n.º 8
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]);
}
Ejemplo n.º 9
0
// 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]);
}
Ejemplo n.º 10
0
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]);
}
Ejemplo n.º 11
0
// 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]);
}
Ejemplo n.º 12
0
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));
}
Ejemplo n.º 13
0
// 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));
}
Ejemplo n.º 14
0
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);
}
Ejemplo n.º 15
0
// 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]);
}
Ejemplo n.º 16
0
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
}
Ejemplo n.º 17
0
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();
}
Ejemplo n.º 18
0
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();
}
Ejemplo n.º 19
0
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;
        }
}
Ejemplo n.º 20
0
// 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);
}