mirror of
https://github.com/Lorenzooone/cc3dsfs.git
synced 2025-06-18 16:45:39 -04:00
215 lines
5.9 KiB
C++
Executable File
215 lines
5.9 KiB
C++
Executable File
#ifndef __DISPLAY_STRUCTS_HPP
|
|
#define __DISPLAY_STRUCTS_HPP
|
|
|
|
#include "utils.hpp"
|
|
#include "hw_defs.hpp"
|
|
#include "shaders_list.hpp"
|
|
#include "WindowCommands.hpp"
|
|
|
|
#define DEFAULT_NO_POS_WINDOW_VALUE -1
|
|
#define DEFAULT_NO_VOLUME_VALUE -1
|
|
#define DEFAULT_NO_ENABLED_VALUE -1
|
|
#define DEFAULT_NO_SCALING_VALUE -1
|
|
|
|
#define DEFAULT_WINDOW_SCALING_VALUE 1.0
|
|
#define MIN_WINDOW_SCALING_VALUE 1.0
|
|
#define MAX_WINDOW_SCALING_VALUE 45.0
|
|
#define WINDOW_SCALING_CHANGE 0.5
|
|
|
|
#define SEP_FOLLOW_SCALING_MULTIPLIER WINDOW_SCALING_CHANGE
|
|
#define SEP_WINDOW_SCALING_MIN_MULTIPLIER SEP_FOLLOW_SCALING_MULTIPLIER
|
|
#define SEP_FULLSCREEN_SCALING_MIN_MULTIPLIER DEFAULT_WINDOW_SCALING_VALUE
|
|
#define DEFAULT_SEP_SIZE 0
|
|
#define MAX_SEP_SIZE 1000
|
|
|
|
enum ScreenType { TOP, BOTTOM, JOINT };
|
|
enum BottomRelativePosition { UNDER_TOP, LEFT_TOP, ABOVE_TOP, RIGHT_TOP, BOT_REL_POS_END };
|
|
enum SecondScreen3DRelativePosition { UNDER_FIRST, LEFT_FIRST, ABOVE_FIRST, RIGHT_FIRST, SECOND_SCREEN_3D_REL_POS_END };
|
|
enum NonIntegerScalingModes { SMALLER_PRIORITY, INVERSE_PROPORTIONAL_PRIORITY, EQUAL_PRIORITY, PROPORTIONAL_PRIORITY, BIGGER_PRIORITY, END_NONINT_SCALE_MODES };
|
|
enum CurrMenuType { DEFAULT_MENU_TYPE, CONNECT_MENU_TYPE, MAIN_MENU_TYPE, VIDEO_MENU_TYPE, AUDIO_MENU_TYPE, CROP_MENU_TYPE, TOP_PAR_MENU_TYPE, BOTTOM_PAR_MENU_TYPE, ROTATION_MENU_TYPE, OFFSET_MENU_TYPE, BFI_MENU_TYPE, LOAD_MENU_TYPE, SAVE_MENU_TYPE, RESOLUTION_MENU_TYPE, EXTRA_MENU_TYPE, STATUS_MENU_TYPE, LICENSES_MENU_TYPE, RELATIVE_POS_MENU_TYPE, SHORTCUTS_MENU_TYPE, ACTION_SELECTION_MENU_TYPE, SCALING_RATIO_MENU_TYPE, ISN_MENU_TYPE, VIDEO_EFFECTS_MENU_TYPE, INPUT_MENU_TYPE, AUDIO_DEVICE_MENU_TYPE, SEPARATOR_MENU_TYPE, COLOR_CORRECTION_MENU_TYPE, MAIN_3D_MENU_TYPE, SECOND_SCREEN_RELATIVE_POS_MENU_TYPE, USB_CONFLICT_RESOLUTION_MENU_TYPE, OPTIMIZE_3DS_MENU_TYPE };
|
|
enum InputColorspaceMode { FULL_COLORSPACE, DS_COLORSPACE, GBA_COLORSPACE, INPUT_COLORSPACE_END };
|
|
enum FrameBlendingMode { NO_FRAME_BLENDING, FULL_FRAME_BLENDING, DS_3D_BOTH_SCREENS_FRAME_BLENDING, FRAME_BLENDING_END };
|
|
|
|
struct override_win_data {
|
|
int pos_x = DEFAULT_NO_POS_WINDOW_VALUE;
|
|
int pos_y = DEFAULT_NO_POS_WINDOW_VALUE;
|
|
int enabled = DEFAULT_NO_ENABLED_VALUE;
|
|
double scaling = DEFAULT_NO_SCALING_VALUE;
|
|
};
|
|
|
|
struct ScreenInfo {
|
|
bool is_blurred;
|
|
int crop_kind;
|
|
int crop_kind_ds;
|
|
bool allow_games_crops;
|
|
double scaling;
|
|
bool is_fullscreen;
|
|
BottomRelativePosition bottom_pos;
|
|
SecondScreen3DRelativePosition second_screen_pos;
|
|
bool match_bottom_pos_and_second_screen_pos;
|
|
float subscreen_offset, subscreen_attached_offset, total_offset_x, total_offset_y;
|
|
int top_rotation, bot_rotation;
|
|
bool show_mouse;
|
|
bool v_sync_enabled;
|
|
bool async;
|
|
int top_scaling, bot_scaling;
|
|
int separator_pixel_size;
|
|
float separator_windowed_multiplier;
|
|
float separator_fullscreen_multiplier;
|
|
bool force_same_scaling;
|
|
float non_integer_top_scaling, non_integer_bot_scaling;
|
|
bool bfi;
|
|
int bfi_divider;
|
|
int bfi_amount;
|
|
double menu_scaling_factor;
|
|
bool rounded_corners_fix;
|
|
int top_par;
|
|
int bot_par;
|
|
int fullscreen_mode_width;
|
|
int fullscreen_mode_height;
|
|
int fullscreen_mode_bpp;
|
|
NonIntegerScalingModes non_integer_mode;
|
|
bool use_non_integer_scaling_top;
|
|
bool use_non_integer_scaling_bottom;
|
|
bool failed_fullscreen;
|
|
bool have_titlebar;
|
|
int top_color_correction;
|
|
int bot_color_correction;
|
|
InputColorspaceMode in_colorspace_top;
|
|
InputColorspaceMode in_colorspace_bot;
|
|
FrameBlendingMode frame_blending_top;
|
|
FrameBlendingMode frame_blending_bot;
|
|
bool squish_3d_top;
|
|
bool squish_3d_bot;
|
|
bool window_enabled;
|
|
int initial_pos_x;
|
|
int initial_pos_y;
|
|
};
|
|
|
|
struct DisplayData {
|
|
bool mono_app_mode;
|
|
bool last_connected_ds;
|
|
bool interleaved_3d;
|
|
bool force_disable_mouse;
|
|
};
|
|
|
|
struct ExtraButtonShortcuts {
|
|
const WindowCommand *enter_shortcut;
|
|
const WindowCommand *page_up_shortcut;
|
|
};
|
|
|
|
struct InputData {
|
|
bool fast_poll;
|
|
bool enable_controller_input;
|
|
bool enable_keyboard_input;
|
|
bool enable_mouse_input;
|
|
bool enable_buttons_input;
|
|
ExtraButtonShortcuts extra_button_shortcuts;
|
|
};
|
|
|
|
struct SharedData {
|
|
InputData input_data;
|
|
};
|
|
|
|
#pragma pack(push, 1)
|
|
|
|
// The internal order needs to be reversed... This is so confusing...
|
|
struct PACKED ALIGNED(2) VideoPixelRGB16 {
|
|
uint16_t b : 5;
|
|
uint16_t g : 6;
|
|
uint16_t r : 5;
|
|
};
|
|
|
|
// The internal order needs to be reversed... This is so confusing...
|
|
struct PACKED ALIGNED(2) VideoPixelBGR16 {
|
|
uint16_t r : 5;
|
|
uint16_t g : 6;
|
|
uint16_t b : 5;
|
|
};
|
|
|
|
struct PACKED VideoPixelRGB {
|
|
uint8_t r;
|
|
uint8_t g;
|
|
uint8_t b;
|
|
};
|
|
|
|
struct PACKED VideoPixelBGR {
|
|
uint8_t b;
|
|
uint8_t g;
|
|
uint8_t r;
|
|
};
|
|
|
|
struct PACKED VideoPixelRGBA {
|
|
uint8_t r;
|
|
uint8_t g;
|
|
uint8_t b;
|
|
uint8_t alpha;
|
|
};
|
|
|
|
struct PACKED ALIGNED(16) VideoOutputDataRGB16 {
|
|
VideoPixelRGB16 screen_data[MAX_IN_VIDEO_SIZE];
|
|
};
|
|
|
|
struct PACKED ALIGNED(16) VideoOutputDataBGR16 {
|
|
VideoPixelBGR16 screen_data[MAX_IN_VIDEO_SIZE];
|
|
};
|
|
|
|
struct PACKED ALIGNED(16) VideoOutputDataRGB {
|
|
VideoPixelRGB screen_data[MAX_IN_VIDEO_SIZE];
|
|
};
|
|
|
|
struct PACKED ALIGNED(16) VideoOutputDataBGR {
|
|
VideoPixelBGR screen_data[MAX_IN_VIDEO_SIZE];
|
|
};
|
|
|
|
struct PACKED ALIGNED(16) VideoOutputDataRGBA {
|
|
VideoPixelRGBA screen_data[MAX_IN_VIDEO_SIZE];
|
|
};
|
|
|
|
union PACKED ALIGNED(16) VideoOutputData {
|
|
VideoOutputDataRGB16 rgb16_video_output_data;
|
|
VideoOutputDataBGR16 bgr16_video_output_data;
|
|
VideoOutputDataRGB rgb_video_output_data;
|
|
VideoOutputDataBGR bgr_video_output_data;
|
|
VideoOutputDataRGBA rgba_video_output_data;
|
|
};
|
|
|
|
#pragma pack(pop)
|
|
|
|
struct CropData {
|
|
int top_width;
|
|
int top_height;
|
|
int top_x;
|
|
int top_y;
|
|
int bot_width;
|
|
int bot_height;
|
|
int bot_x;
|
|
int bot_y;
|
|
bool allowed_joint;
|
|
bool allowed_top;
|
|
bool allowed_bottom;
|
|
bool allowed_3ds;
|
|
bool allowed_ds;
|
|
bool is_game_specific;
|
|
std::string name;
|
|
};
|
|
|
|
struct PARData {
|
|
float width_multiplier;
|
|
float width_divisor;
|
|
bool is_width_main;
|
|
bool is_fit;
|
|
std::string name;
|
|
};
|
|
|
|
struct ShaderColorEmulationData {
|
|
float targetGamma;
|
|
float lum;
|
|
float rgb_mod[3][3];
|
|
float displayGamma;
|
|
bool is_valid;
|
|
std::string name;
|
|
};
|
|
|
|
#endif
|