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); }
// ACTION: SWITCH BETWEEN FULLSCREEN AND INTERFACE MODES ---------------------- void Action_Switch_Mode (void) { switch (Meka_State) { case MEKA_STATE_FULLSCREEN: Meka_State = MEKA_STATE_GUI; break; case MEKA_STATE_GUI: Meka_State = MEKA_STATE_FULLSCREEN; break; default: // FIXME: Should not happen break; } Sound_Playback_Mute (); Video_Setup_State (); Sound_Playback_Resume (); }
//----------------------------------------------------------------------------- // Inputs_Check_GUI () // Check for GUI related inputs //----------------------------------------------------------------------------- // Note: 'sk1100_pressed' tells if SK-1100 emulation has taken a key yet. // Specific checks are being done here to avoid collision. //----------------------------------------------------------------------------- void Inputs_Check_GUI (bool sk1100_pressed) { // Update INPUTS configuration in priority, since it eat some keys Inputs_CFG_Update(&Inputs_CFG); //Inputs_CFG_Map_Change_Update(); //if (Inputs_CFG.active) // Inputs_CFG.Box->update (); switch (key_shifts & (KB_CTRL_FLAG | KB_ALT_FLAG | KB_SHIFT_FLAG)) { case 0: // No modifiers { // State save/load if (Inputs_KeyPressed (KEY_F5, FALSE)) Save_Game (); if (Inputs_KeyPressed (KEY_F7, FALSE)) Load_Game (); // State change slot /* if (cur_drv->id != DRV_COLECO) if (!gui.box_z_ordered[0]->focus_inputs_exclusive) // check note in inputs_u.c::Inputs_Emulation_Update() { if (Inputs_KeyPressed (KEY_0, FALSE)) Save_Set_Slot (0); if (Inputs_KeyPressed (KEY_1, FALSE)) Save_Set_Slot (1); if (Inputs_KeyPressed (KEY_2, FALSE)) Save_Set_Slot (2); if (Inputs_KeyPressed (KEY_3, FALSE)) Save_Set_Slot (3); if (Inputs_KeyPressed (KEY_4, FALSE)) Save_Set_Slot (4); if (Inputs_KeyPressed (KEY_5, FALSE)) Save_Set_Slot (5); if (Inputs_KeyPressed (KEY_6, FALSE)) Save_Set_Slot (6); if (Inputs_KeyPressed (KEY_7, FALSE)) Save_Set_Slot (7); if (Inputs_KeyPressed (KEY_8, FALSE)) Save_Set_Slot (8); if (Inputs_KeyPressed (KEY_9, FALSE)) Save_Set_Slot (9); } */ if (Inputs_KeyPressed_Repeat (KEY_F6, FALSE, 30, 3)) Save_Set_Slot (opt.State_Current - 1); if (Inputs_KeyPressed_Repeat (KEY_F8, FALSE, 30, 3)) Save_Set_Slot (opt.State_Current + 1); // Blitters switch if (Inputs_KeyPressed (KEY_F1, FALSE)) Blitters_SwitchNext(); // Speed & Frame skip if (Inputs_KeyPressed (KEY_F2, FALSE)) Frame_Skipper_Switch (); if (Inputs_KeyPressed (KEY_F3, FALSE)) Frame_Skipper_Configure (-1); if (Inputs_KeyPressed (KEY_F4, FALSE)) Frame_Skipper_Configure (1); // Input peripheral if (Inputs_KeyPressed (KEY_F9, FALSE)) Inputs_Peripheral_Next (PLAYER_1); // Switch mode (Fullscreen <-> GUI) if (Inputs_KeyPressed (Inputs.Cabinet_Mode ? KEY_F10 : KEY_ESC, FALSE)) Action_Switch_Mode (); // Sprites Refresh switch if (Inputs_KeyPressed (KEY_F11, FALSE)) Action_Switch_Layer_Sprites (); // Hard Pause if (Inputs_KeyPressed (KEY_F12, FALSE)) Machine_Pause_Need_To = TRUE; } break; case KB_CTRL_FLAG: { // Easter egg: Tetris if (!sk1100_pressed && Inputs_KeyPressed (KEY_T, FALSE)) Tetris_Start (); // Nintendon't - now removed because it is too violent #ifdef ARCH_DOS if (!sk1100_pressed && Inputs_KeyPressed (KEY_N, FALSE)) Quit_Msg ("Nintendont."); #endif // Hard Pause if (Inputs_KeyPressed (KEY_F12, FALSE) || (!sk1100_pressed && Inputs_KeyPressed (KEY_P, FALSE))) Machine_Pause_Need_To = TRUE; // Hard Reset if (!sk1100_pressed && Inputs_KeyPressed (KEY_BACKSPACE, TRUE)) // Note: eat backspace to avoid triggering software reset as well Machine_Reset (); // CTRL-TAB cycle thru boxes with TAB_STOP flag if (Inputs_KeyPressed(KEY_TAB, FALSE)) { int n; // Remove keypress // FIXME-KEYPRESS t_list *keypresses; for (keypresses = Inputs.KeyPressedQueue; keypresses != NULL; ) { t_key_press *keypress = keypresses->elem; keypresses = keypresses->next; if (keypress->scancode == KEY_TAB) list_remove(&Inputs.KeyPressedQueue, keypress); } // Cycle focus for (n = gui.boxes_count - 1; n >= 0; n--) { t_gui_box *b = gui.boxes_z_ordered[n]; if ((b->flags & GUI_BOX_FLAGS_TAB_STOP) && (b->flags & GUI_BOX_FLAGS_ACTIVE)) { gui_box_set_focus(b); break; } } } } break; case KB_ALT_FLAG: { // SK-1100 Keyboard switch if (Inputs_KeyPressed (KEY_F9, FALSE)) Keyboard_Switch (); // Background Refresh switch if (Inputs_KeyPressed (KEY_F11, FALSE)) Action_Switch_Layer_Background (); // Next frame (pause hack) if (Inputs_KeyPressed (KEY_F12, FALSE)) Machine_Pause_Need_To = (machine & MACHINE_PAUSED) ? 2 : 1; if (!sk1100_pressed) { // FPS Counter switch if (Inputs_KeyPressed (KEY_F, FALSE)) Frame_Skipper_Switch_FPS_Counter (); // Applets hotkeys if (Inputs_KeyPressed (KEY_L, FALSE)) FB_Switch (); if (Inputs_KeyPressed (KEY_O, FALSE)) Options_Switch (); if (Inputs_KeyPressed (KEY_M, FALSE)) TB_Message_Switch (); if (Inputs_KeyPressed (KEY_P, FALSE)) PaletteViewer_Switch(); if (Inputs_KeyPressed (KEY_T, FALSE)) TileViewer_Switch (); if (Inputs_KeyPressed (KEY_I, FALSE)) TechInfo_Switch (); // Quit emulator if (Inputs_KeyPressed (KEY_X, FALSE)) opt.Force_Quit = TRUE; // Hard Reset if (Inputs_KeyPressed (KEY_BACKSPACE, TRUE)) // Note: eat backspace to avoid triggering software reset as well Machine_Reset (); // GUI fullscreen/windowed if (Inputs_KeyPressed (KEY_ENTER, FALSE)) { if (Meka_State == MEKA_STATE_FULLSCREEN) { t_video_driver *driver = VideoDriver_FindByDriverId(Blitters.current->driver); if (driver && driver->drv_id_switch_fs_win) { // FIXME: Put that properly in blitter interface // FIXME: Not saved anywhere... better than nothing anyway. Blitters.current->driver = driver->drv_id_switch_fs_win; Video_Setup_State(); } } else if (Meka_State == MEKA_STATE_GUI) { t_video_driver *driver = VideoDriver_FindByDriverId(g_Configuration.video_mode_gui_driver); if (driver && driver->drv_id_switch_fs_win) { g_Configuration.video_mode_gui_driver = driver->drv_id_switch_fs_win; Video_GUI_ChangeVideoMode(g_Configuration.video_mode_gui_res_x, g_Configuration.video_mode_gui_res_y, g_Configuration.video_mode_gui_depth); } } return; } } } break; } // Quit emulator if (key [Inputs.Cabinet_Mode ? KEY_ESC : KEY_F10]) opt.Force_Quit = TRUE; // Debugger switch #ifdef MEKA_Z80_DEBUGGER // Disabled when SK-1100 is emulated because of collision in usage of ScrollLock key // Actually on SC-3000 it is hardwired to NMI if (!Inputs.Keyboard_Enabled && Inputs_KeyPressed (KEY_SCRLOCK, TRUE)) //if (!sk1100_pressed && Inputs_KeyPressed (KEY_SCRLOCK, TRUE)) Debugger_Switch (); #endif // Screen capture if (Inputs_KeyPressed (KEY_PRTSCR, FALSE)) Capture_Request(); // SF-7000 Disk 21 Bomber Raid // if (Test_Key(KEY_W)) // PSG.Registers[6] = PSG.Registers[6] ^ 0x04; // Wonder Boy III, Current Song //if (key[KEY_J]) // Msg (0, "RAM[0xFF9] = %02X", RAM[0xFF9]); // Old video modes debugging // if (Test_Key(KEY_J)) BACK_AREA -= 0x100; // if (Test_Key(KEY_K)) BACK_AREA += 0x100; // if (Test_Key(KEY_U)) BACK_AREA -= 0x1; // if (Test_Key(KEY_I)) BACK_AREA += 0x1; // SG-1000 stuff // if (Test_Key(KEY_U)) SG_BACK_TILE -= 0x100; // if (Test_Key(KEY_I)) SG_BACK_TILE += 0x100; // if (Test_Key(KEY_O)) SG_BACK_TILE -= 0x2000; }