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.