git.y1.nz

SameBoy

Accurate GB/GBC emulator
download: https://git.y1.nz/archives/sameboy.tar.gz
README | Files | Log | Refs | LICENSE

SDL/configuration.h

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

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.