// Copyright 2014 Citra Emulator Project // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include "common/common_types.h" #include "core/hle/service/cam/cam.h" namespace Settings { enum class LayoutOption { Default, SingleScreen, LargeScreen, }; namespace NativeButton { enum Values { A, B, X, Y, Up, Down, Left, Right, L, R, Start, Select, ZL, ZR, Home, NumButtons, }; constexpr int BUTTON_HID_BEGIN = A; constexpr int BUTTON_IR_BEGIN = ZL; constexpr int BUTTON_NS_BEGIN = Home; constexpr int BUTTON_HID_END = BUTTON_IR_BEGIN; constexpr int BUTTON_IR_END = BUTTON_NS_BEGIN; constexpr int BUTTON_NS_END = NumButtons; constexpr int NUM_BUTTONS_HID = BUTTON_HID_END - BUTTON_HID_BEGIN; constexpr int NUM_BUTTONS_IR = BUTTON_IR_END - BUTTON_IR_BEGIN; constexpr int NUM_BUTTONS_NS = BUTTON_NS_END - BUTTON_NS_BEGIN; static const std::array mapping = {{ "button_a", "button_b", "button_x", "button_y", "button_up", "button_down", "button_left", "button_right", "button_l", "button_r", "button_start", "button_select", "button_zl", "button_zr", "button_home", }}; } // namespace NativeButton namespace NativeAnalog { enum Values { CirclePad, CStick, NumAnalogs, }; static const std::array mapping = {{ "circle_pad", "c_stick", }}; } // namespace NumAnalog struct Values { // CheckNew3DS bool is_new_3ds; // Controls std::array buttons; std::array analogs; // Core bool use_cpu_jit; // Data Storage bool use_virtual_sd; // System Region int region_value; // Renderer bool use_hw_renderer; bool use_shader_jit; float resolution_factor; bool use_vsync; bool toggle_framelimit; LayoutOption layout_option; bool swap_screen; bool custom_layout; u16 custom_top_left; u16 custom_top_top; u16 custom_top_right; u16 custom_top_bottom; u16 custom_bottom_left; u16 custom_bottom_top; u16 custom_bottom_right; u16 custom_bottom_bottom; float bg_red; float bg_green; float bg_blue; std::string log_filter; // Audio std::string sink_id; bool enable_audio_stretching; std::string audio_device_id; // Camera std::array camera_name; std::array camera_config; // Debugging bool use_gdbstub; u16 gdbstub_port; } extern values; // a special value for Values::region_value indicating that citra will automatically select a region // value to fit the region lockout info of the game static constexpr int REGION_VALUE_AUTO_SELECT = -1; void Apply(); }