1 #pragma once 2 3 #include <stdint.h> 4 #include <stdbool.h> 5 #include "ft2_cpu.h" 6 7 enum // RADIOBUTTONS 8 { 9 // HELP 10 RB_HELP_FEATURES, 11 RB_HELP_EFFECTS, 12 RB_HELP_KEYBINDINGS, 13 RB_HELP_HOW_TO_USE_FT2, 14 RB_HELP_FAQ, 15 RB_HELP_KNOWN_BUGS, 16 17 // NIBBLES 18 RB_NIBBLES_1PLAYER, 19 RB_NIBBLES_2PLAYERS, 20 RB_NIBBLES_NOVICE, 21 RB_NIBBLES_AVERAGE, 22 RB_NIBBLES_PRO, 23 RB_NIBBLES_MANIAC, 24 25 // SAMPLER 26 RB_SAMPLE_NO_LOOP, 27 RB_SAMPLE_FORWARD_LOOP, 28 RB_SAMPLE_PINGPONG_LOOP, 29 RB_SAMPLE_8BIT, 30 RB_SAMPLE_16BIT, 31 32 // INSTRUMENT EDITOR 33 RB_INST_WAVE_SINE, 34 RB_INST_WAVE_SQUARE, 35 RB_INST_WAVE_RAMP_DOWN, 36 RB_INST_WAVE_RAMP_UP, 37 38 // CONFIG SELECT 39 RB_CONFIG_IO_DEVICES, 40 RB_CONFIG_LAYOUT, 41 RB_CONFIG_MISCELLANEOUS, 42 43 #ifdef HAS_MIDI 44 RB_CONFIG_MIDI_INPUT, 45 #endif 46 47 // CONFIG AUDIO 48 49 // SOUND BUFFER SIZE 50 RB_CONFIG_SBS_512, 51 RB_CONFIG_SBS_1024, 52 RB_CONFIG_SBS_2048, 53 54 // AUDIO BIT DEPTH 55 RB_CONFIG_AUDIO_16BIT, 56 RB_CONFIG_AUDIO_24BIT, 57 58 // AUDIO INTERPOLATION 59 RB_CONFIG_AUDIO_INTRP_NONE, 60 RB_CONFIG_AUDIO_INTRP_LINEAR, 61 RB_CONFIG_AUDIO_INTRP_SINC, 62 63 // AUDIO FREQUENCY 64 RB_CONFIG_AUDIO_44KHZ, 65 RB_CONFIG_AUDIO_48KHZ, 66 #if CPU_64BIT 67 RB_CONFIG_AUDIO_96KHZ, 68 RB_CONFIG_AUDIO_192KHZ, 69 #endif 70 71 // AUDIO INPUT FREQUENCY 72 RB_CONFIG_AUDIO_INPUT_44KHZ, 73 RB_CONFIG_AUDIO_INPUT_48KHZ, 74 RB_CONFIG_AUDIO_INPUT_96KHZ, 75 76 // FREQUENCY TABLE 77 RB_CONFIG_FREQ_AMIGA, 78 RB_CONFIG_FREQ_LINEAR, 79 80 // CONFIG LAYOUT 81 82 // MOUSE SHAPE 83 RB_CONFIG_MOUSE_NICE, 84 RB_CONFIG_MOUSE_UGLY, 85 RB_CONFIG_MOUSE_AWFUL, 86 RB_CONFIG_MOUSE_USABLE, 87 88 // MOUSE BUSY SHAPE 89 RB_CONFIG_MOUSE_BUSY_GLASS, 90 RB_CONFIG_MOUSE_BUSY_CLOCK, 91 92 // SCOPE STYLE 93 RB_CONFIG_SCOPE_NORMAL, 94 RB_CONFIG_SCOPE_LINED, 95 96 // PATTERN CHANNELS 97 RB_CONFIG_MAXCHAN_4, 98 RB_CONFIG_MAXCHAN_6, 99 RB_CONFIG_MAXCHAN_8, 100 RB_CONFIG_MAXCHAN_12, 101 102 // PATTERN FONT 103 RB_CONFIG_FONT_CAPITALS, 104 RB_CONFIG_FONT_LOWERCASE, 105 RB_CONFIG_FONT_FUTURE, 106 RB_CONFIG_FONT_BOLD, 107 108 // PALETTE ENTRIES 109 RB_CONFIG_PAL_PATTERNTEXT, 110 RB_CONFIG_PAL_BLOCKMARK, 111 RB_CONFIG_PAL_TEXTONBLOCK, 112 RB_CONFIG_PAL_MOUSE, 113 RB_CONFIG_PAL_DESKTOP, 114 RB_CONFIG_PAL_BUTTONS, 115 116 // PALETTE PRESETS 117 RB_CONFIG_PAL_ARCTIC, 118 RB_CONFIG_PAL_LITHE_DARK, 119 RB_CONFIG_PAL_AURORA_BOREALIS, 120 RB_CONFIG_PAL_ROSE, 121 RB_CONFIG_PAL_BLUES, 122 RB_CONFIG_PAL_DARK_MODE, 123 RB_CONFIG_PAL_GOLD, 124 RB_CONFIG_PAL_VIOLENT, 125 RB_CONFIG_PAL_HEAVY_METAL, 126 RB_CONFIG_PAL_WHY_COLORS, 127 RB_CONFIG_PAL_JUNGLE, 128 RB_CONFIG_PAL_USER_DEFINED, 129 130 // FILE SORTING 131 RB_CONFIG_FILESORT_EXT, 132 RB_CONFIG_FILESORT_NAME, 133 134 // WINDOW SIZE 135 RB_CONFIG_WIN_SIZE_AUTO, 136 RB_CONFIG_WIN_SIZE_1X, 137 RB_CONFIG_WIN_SIZE_3X, 138 RB_CONFIG_WIN_SIZE_2X, 139 RB_CONFIG_WIN_SIZE_4X, 140 141 // DISK OP 142 RB_DISKOP_MODULE, 143 RB_DISKOP_INSTR, 144 RB_DISKOP_SAMPLE, 145 RB_DISKOP_PATTERN, 146 RB_DISKOP_TRACK, 147 148 RB_DISKOP_MOD_SAVEAS_MOD, 149 RB_DISKOP_MOD_SAVEAS_XM, 150 RB_DISKOP_MOD_SAVEAS_WAV, 151 RB_DISKOP_INS_SAVEAS_XI, 152 RB_DISKOP_SMP_SAVEAS_RAW, 153 RB_DISKOP_SMP_SAVEAS_IFF, 154 RB_DISKOP_SMP_SAVEAS_WAV, 155 RB_DISKOP_PAT_SAVEAS_XP, 156 RB_DISKOP_TRK_SAVEAS_XT, 157 158 RB_WAV_RENDER_BITDEPTH16, 159 RB_WAV_RENDER_BITDEPTH32, 160 161 NUM_RADIOBUTTONS, 162 163 // groups (must be *after* NUM_RADIOBUTTONS) 164 165 RB_GROUP_HELP, 166 167 RB_GROUP_NIBBLES_PLAYERS, 168 RB_GROUP_NIBBLES_DIFFICULTY, 169 170 RB_GROUP_SAMPLE_LOOP, 171 RB_GROUP_SAMPLE_DEPTH, 172 RB_GROUP_INST_WAVEFORM, 173 174 RB_GROUP_CONFIG_SELECT, 175 RB_GROUP_CONFIG_SOUND_BUFF_SIZE, 176 RB_GROUP_CONFIG_AUDIO_BIT_DEPTH, 177 RB_GROUP_CONFIG_AUDIO_INTERPOLATION, 178 RB_GROUP_CONFIG_AUDIO_FREQ, 179 RB_GROUP_CONFIG_AUDIO_INPUT_FREQ, 180 RB_GROUP_CONFIG_FREQ_TABLE, 181 182 RB_GROUP_CONFIG_MOUSE, 183 RB_GROUP_CONFIG_MOUSE_BUSY, 184 RB_GROUP_CONFIG_SCOPE, 185 RB_GROUP_CONFIG_PATTERN_CHANS, 186 RB_GROUP_CONFIG_FONT, 187 RB_GROUP_CONFIG_PAL_ENTRIES, 188 RB_GROUP_CONFIG_PAL_PRESET, 189 190 RB_GROUP_CONFIG_FILESORT, 191 RB_GROUP_CONFIG_WIN_SIZE, 192 193 RB_GROUP_DISKOP_ITEM, 194 195 RB_GROUP_DISKOP_MOD_SAVEAS, 196 RB_GROUP_DISKOP_INS_SAVEAS, 197 RB_GROUP_DISKOP_SMP_SAVEAS, 198 RB_GROUP_DISKOP_PAT_SAVEAS, 199 RB_GROUP_DISKOP_TRK_SAVEAS, 200 201 RB_GROUP_WAV_RENDER_BITDEPTH, 202 }; 203 204 enum 205 { 206 RADIOBUTTON_UNCHECKED = 0, 207 RADIOBUTTON_CHECKED = 1, 208 RADIOBUTTON_PRESSED = 2 209 }; 210 211 #define RADIOBUTTON_W 11 212 #define RADIOBUTTON_H 11 213 #define RADIOBUTTON_STATES 3 214 215 typedef struct radioButton_t // DO NOT TOUCH! 216 { 217 uint16_t x, y, clickAreaWidth; 218 uint16_t group; 219 void (*callbackFunc)(void); 220 221 uint8_t state; 222 bool visible; 223 } radioButton_t; 224 225 void drawRadioButton(uint16_t radioButtonID); 226 void showRadioButton(uint16_t radioButtonID); 227 void hideRadioButton(uint16_t radioButtonID); 228 void checkRadioButton(uint16_t radioButtonID); 229 void uncheckRadioButtonGroup(uint16_t radioButtonGroup); 230 void showRadioButtonGroup(uint16_t radioButtonGroup); 231 void hideRadioButtonGroup(uint16_t radioButtonGroup); 232 void handleRadioButtonsWhileMouseDown(void); 233 bool testRadioButtonMouseDown(void); 234 void testRadioButtonMouseRelease(void); 235