1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
|
#pragma once
#include <SDL.h>
#include <Core/gb.h>
#include "shader.h"
enum scaling_mode {
GB_SDL_SCALING_ENTIRE_WINDOW,
GB_SDL_SCALING_KEEP_RATIO,
GB_SDL_SCALING_INTEGER_FACTOR,
GB_SDL_SCALING_MAX,
};
enum {
GB_CONF_KEYS_RIGHT = GB_KEY_RIGHT,
GB_CONF_KEYS_LEFT = GB_KEY_LEFT,
GB_CONF_KEYS_UP = GB_KEY_UP,
GB_CONF_KEYS_DOWN = GB_KEY_DOWN,
GB_CONF_KEYS_A = GB_KEY_A,
GB_CONF_KEYS_B = GB_KEY_B,
GB_CONF_KEYS_SELECT = GB_KEY_SELECT,
GB_CONF_KEYS_START = GB_KEY_START,
GB_CONF_KEYS_TURBO,
GB_CONF_KEYS_COUNT,
};
enum {
GB_CONF_KEYS2_REWIND,
GB_CONF_KEYS2_UNDERCLOCK,
GB_CONF_KEYS2_RAPID_A,
GB_CONF_KEYS2_RAPID_B,
GB_CONF_KEYS2_COUNT = 32,
};
typedef enum {
JOYPAD_BUTTON_RIGHT,
JOYPAD_BUTTON_LEFT,
JOYPAD_BUTTON_UP,
JOYPAD_BUTTON_DOWN,
JOYPAD_BUTTON_A,
JOYPAD_BUTTON_B,
JOYPAD_BUTTON_SELECT,
JOYPAD_BUTTON_START,
JOYPAD_BUTTON_MENU,
JOYPAD_BUTTON_TURBO,
JOYPAD_BUTTON_REWIND,
JOYPAD_BUTTON_SLOW_MOTION,
JOYPAD_BUTTON_HOTKEY_1,
JOYPAD_BUTTON_HOTKEY_2,
JOYPAD_BUTTON_RAPID_A,
JOYPAD_BUTTON_RAPID_B,
JOYPAD_BUTTONS_MAX
} joypad_button_t;
typedef enum {
JOYPAD_AXISES_X,
JOYPAD_AXISES_Y,
JOYPAD_AXISES_MAX
} joypad_axis_t;
typedef enum {
HOTKEY_NONE,
HOTKEY_PAUSE,
HOTKEY_MUTE,
HOTKEY_RESET,
HOTKEY_QUIT,
HOTKEY_SAVE_STATE_1,
HOTKEY_LOAD_STATE_1,
HOTKEY_SAVE_STATE_2,
HOTKEY_LOAD_STATE_2,
HOTKEY_SAVE_STATE_3,
HOTKEY_LOAD_STATE_3,
HOTKEY_SAVE_STATE_4,
HOTKEY_LOAD_STATE_4,
HOTKEY_SAVE_STATE_5,
HOTKEY_LOAD_STATE_5,
HOTKEY_SAVE_STATE_6,
HOTKEY_LOAD_STATE_6,
HOTKEY_SAVE_STATE_7,
HOTKEY_LOAD_STATE_7,
HOTKEY_SAVE_STATE_8,
HOTKEY_LOAD_STATE_8,
HOTKEY_SAVE_STATE_9,
HOTKEY_LOAD_STATE_9,
HOTKEY_SAVE_STATE_10,
HOTKEY_LOAD_STATE_10,
HOTKEY_MAX = HOTKEY_LOAD_STATE_10,
} hotkey_action_t;
typedef struct {
SDL_Scancode keys[GB_CONF_KEYS_COUNT];
GB_color_correction_mode_t color_correction_mode;
enum scaling_mode scaling_mode;
uint8_t blending_mode;
GB_highpass_mode_t highpass_mode;
bool _deprecated_div_joystick;
bool _deprecated_flip_joystick_bit_1;
bool _deprecated_swap_joysticks_bits_1_and_2;
char filter[32];
enum {
MODEL_DMG,
MODEL_CGB,
MODEL_AGB,
MODEL_SGB,
MODEL_MGB,
MODEL_AUTO,
MODEL_MAX,
} model;
/* v0.11 */
uint32_t rewind_length;
SDL_Scancode keys_2[GB_CONF_KEYS2_COUNT]; /* Rewind and underclock, + padding for the future */
uint8_t joypad_configuration[32]; /* 14 Keys + padding for the future*/;
uint8_t joypad_axises[JOYPAD_AXISES_MAX];
/* v0.12 */
enum {
SGB_NTSC,
SGB_PAL,
SGB_2,
SGB_MAX
} sgb_revision;
/* v0.13 */
uint8_t dmg_palette;
GB_border_mode_t border_mode;
uint8_t volume;
GB_rumble_mode_t rumble_mode;
uint8_t default_scale;
/* v0.14 */
unsigned padding;
uint8_t color_temperature;
char bootrom_path[4096];
uint8_t interference_volume;
GB_rtc_mode_t rtc_mode;
/* v0.14.4 */
bool osd;
struct __attribute__((packed, aligned(4))) {
/* v0.15 */
bool allow_mouse_controls;
uint8_t cgb_revision;
/* v0.15.1 */
char audio_driver[16];
/* v0.15.2 */
bool allow_background_controllers;
bool gui_palette_enabled; // Change the GUI palette only once the user changed the DMG palette
char dmg_palette_name[25];
hotkey_action_t hotkey_actions[2];
uint16_t agb_revision;
/* v1.0 */
bool windows_associations_prompted; // Windows only
/* v1.0.1 */
bool disable_rounded_corners; // Windows only
bool use_faux_analog_inputs;
/* v1.0.2 */
int8_t vsync_mode;
uint8_t turbo_cap;
};
} configuration_t;
extern configuration_t configuration;
|