예제 #1
0
파일: inputs.c 프로젝트: dafyddcrosby/meka
void    Input_ROM_Change (void)
{
    int     input = INPUT_JOYPAD;
    bool    glasses = FALSE;
    if (DB_CurrentEntry)
    {
        if (DB_CurrentEntry->emu_inputs != -1)
            input = DB_CurrentEntry->emu_inputs;
        if (DB_CurrentEntry->flags & DB_FLAG_EMU_3D)
            glasses = TRUE;
    }
    if (Inputs.Peripheral [PLAYER_1] != input)
    {
        Inputs.Peripheral [PLAYER_1] = input;
        Inputs_Switch_Current ();
    }
    if (Glasses.Enabled != glasses)
    {
        Glasses_Switch_Enable ();
    }
}
예제 #2
0
파일: glasses.cpp 프로젝트: maxim-zhao/meka
int     Glasses_Must_Skip_Frame(void)
{
    static int security_cnt = 0;
    // Msg(MSGT_DEBUG, "%02X-%02X-%02X-%02X", RAM[0x1FF8], RAM[0x1FF9], RAM[0x1FFA], RAM[0x1FFB]);

    const int side = (sms.Glasses_Register & 1);
    const bool ret = (Glasses.Mode == GLASSES_MODE_SHOW_ONLY_LEFT && !side) || (Glasses.Mode == GLASSES_MODE_SHOW_ONLY_RIGHT && side);
    if (ret == FALSE)
    {
        security_cnt = 0;
    }
    else
    {
        if (++security_cnt >= 180) // Arbitrary value (180 updates, should be 3 seconds)
        {
            security_cnt = 0;
            Msg(MSGT_USER, "%s", Msg_Get(MSG_Glasses_Unsupported));
            // Msg(MSGT_USER_BOX, "%s", Msg_Get(MSG_Glasses_Unsupported2));
            Glasses_Switch_Enable();
        }
    }
    return (ret);
}