File: configuration.h

package info (click to toggle)
sameboy 1.0.2%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 10,528 kB
  • sloc: ansic: 29,948; objc: 22,249; asm: 1,424; pascal: 1,373; makefile: 1,065; xml: 111
file content (171 lines) | stat: -rw-r--r-- 4,061 bytes parent folder | download | duplicates (2)
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;