ft2_config.h (7873B)
1 #pragma once 2 3 #include <stdint.h> 4 #include <stdbool.h> 5 #include "ft2_replayer.h" 6 #include "ft2_palette.h" 7 8 #define CFG_ID_STR "FastTracker 2.0 configuration file\x1A" 9 #define CONFIG_FILE_SIZE 1736 10 11 enum 12 { 13 CONFIG_SCREEN_AUDIO, 14 CONFIG_SCREEN_LAYOUT, 15 CONFIG_SCREEN_MISCELLANEOUS, 16 #ifdef HAS_MIDI 17 CONFIG_SCREEN_MIDI_INPUT, 18 #endif 19 20 CONFIG_HIDE_ERRORS = 0, 21 CONFIG_SHOW_ERRORS = 1, 22 23 MOUSE_IDLE_SHAPE_NICE = 0, 24 MOUSE_IDLE_SHAPE_UGLY = 1, 25 MOUSE_IDLE_SHAPE_AWFUL = 2, 26 MOUSE_IDLE_SHAPE_USABLE = 3, 27 MOUSE_IDLE_TEXT_EDIT = 4, 28 29 MOUSE_BUSY_SHAPE_CLOCK = 0, 30 MOUSE_BUSY_SHAPE_GLASS = 2, 31 32 MAX_CHANS_SHOWN_4 = 0, 33 MAX_CHANS_SHOWN_6 = 1, 34 MAX_CHANS_SHOWN_8 = 2, 35 MAX_CHANS_SHOWN_12 = 3, 36 37 PATT_FONT_CAPITALS = 0, 38 PATT_FONT_LOWERCASE = 1, 39 PATT_FONT_FUTURE = 2, 40 PATT_FONT_BOLD = 3, 41 42 PAL_ARCTIC = 0, 43 PAL_AURORA_BOREALIS = 1, 44 PAL_BLUES = 2, 45 PAL_GOLD = 3, 46 PAL_HEAVY_METAL = 4, 47 PAL_JUNGLE = 5, 48 PAL_LITHE_DARK = 6, 49 PAL_ROSE = 7, 50 PAL_DARK_MODE = 8, // default 51 PAL_VIOLENT = 9, 52 PAL_WHY_COLORS = 10, 53 PAL_USER_DEFINED = 11, 54 55 FILESORT_EXT = 0, 56 FILESORT_NAME = 1, 57 58 DONT_SHOW_IMPORT_WARNING_FLAG = 64, 59 DONT_SHOW_NOT_YET_APPLIED_WARNING_FLAG = 32, 60 61 // specialFlags 62 NO_VOLRAMP_FLAG = 1, 63 BITDEPTH_16 = 2, 64 BITDEPTH_32 = 4, 65 BUFFSIZE_512 = 8, 66 BUFFSIZE_1024 = 16, 67 BUFFSIZE_2048 = 32, 68 // 64 is free for use 69 LINED_SCOPES = 128, 70 71 // specialFlags2 72 DITHERED_AUDIO = 1, /* DEPRECATED (but don't use it for anything else!) */ 73 HARDWARE_MOUSE = 2, 74 STRETCH_IMAGE = 4, 75 USE_OS_MOUSE_POINTER = 8, 76 77 // windowFlags 78 WINSIZE_AUTO = 1, 79 WINSIZE_1X = 2, 80 WINSIZE_2X = 4, 81 WINSIZE_3X = 8, 82 WINSIZE_4X = 16, 83 PIXEL_FILTER = 32, 84 FORCE_VSYNC_OFF = 64, 85 START_IN_FULLSCR = 128, 86 }; 87 88 #ifdef _MSC_VER 89 #pragma pack(push) 90 #pragma pack(1) 91 #endif 92 typedef struct highScoreType_t 93 { 94 uint8_t nameLen; 95 char name[22]; 96 int32_t score; 97 uint8_t level; 98 } 99 #ifdef __GNUC__ 100 __attribute__ ((packed)) 101 #endif 102 highScoreType; 103 104 // this has some Swedish names, those variables are not used in our clone. 105 typedef struct config_t // exact FT2.CFG layout (with some modifications) 106 { 107 char cfgID[35]; 108 uint16_t version; 109 uint32_t audioFreq; // was "BIOSSum" (never used in FT2) 110 int16_t utEnhet, masterVol, inputVol, inputDev; 111 uint8_t interpolation, internMode, stereoMode; 112 uint8_t specialFlags2; // was lo-byte of "sample16Bit" (was used for external audio sampling) 113 uint8_t dontShowAgainFlags; // was hi-byte of "sample16Bit" (was used for external audio sampling) 114 int16_t inEnhet, sbPort, sbDMA, sbHiDMA, sbInt, sbOutFilter; 115 uint8_t true16Bit, ptnStretch, ptnHex, ptnInstrZero, ptnFrmWrk, ptnLineLight, ptnShowVolColumn, ptnChnNumbers; 116 int16_t ptnLineLightStep, ptnFont, ptnAcc; 117 pal16 userPal[16]; 118 uint16_t comMacro[10], volMacro[10]; 119 uint8_t multiRec, multiKeyJazz, multiEdit, multiRecChn[32], recRelease, recQuant; 120 int16_t recQuantRes; 121 uint8_t recTrueInsert; 122 int16_t recMIDIChn; 123 uint8_t recMIDIAllChn, recMIDITransp; 124 int16_t recMIDITranspVal; 125 uint8_t recMIDIVelocity, recMIDIAftert; 126 int16_t recMIDIVolSens; 127 uint8_t useNewAboutScreen, smpCutToBuffer, ptnCutToBuffer, killNotesOnStopPlay; 128 uint8_t specialFlags; // was lo-byte of "ptnDefaultLen" (never used in FT2) 129 uint8_t windowFlags; // was hi-byte of "ptnDefaultLen" (never used in FT2) 130 uint8_t modulesPathLen; 131 char modulesPath[79+1]; 132 uint8_t instrPathLen; 133 char instrPath[79+1]; 134 uint8_t samplesPathLen; 135 char samplesPath[79+1]; 136 uint8_t patternsPathLen; 137 char patternsPath[79+1]; 138 uint8_t tracksPathLen; 139 char tracksPath[79+1]; 140 uint8_t id_FastLogo, id_TritonProd; 141 int16_t cfg_StdPalNum; 142 uint8_t cfg_AutoSave; 143 int16_t smpEd_SampleNote; 144 highScoreType NI_HighScore[10]; 145 int16_t NI_NumPlayers, NI_Speed; 146 uint8_t NI_Surround, NI_Grid, NI_Wrap; 147 int32_t NI_HighScoreChecksum; 148 int16_t mouseType, mouseAnimType, mouseSpeed, keyLayout, boostLevel, stdEnvPoints[6][2][12][2]; 149 uint16_t stdVolEnvLength[6], stdVolEnvSustain[6], stdVolEnvLoopStart[6], stdVolEnvLoopEnd[6]; 150 uint16_t stdPanEnvLength[6], stdPanEnvSustain[6], stdPanEnvLoopStart[6], stdPanEnvLoopEnd[6]; 151 uint16_t stdFadeout[6], stdVibRate[6], stdVibDepth[6], stdVibSweep[6], stdVibType[6]; 152 uint16_t stdVolEnvFlags[6], stdPanEnvFlags[6]; 153 int16_t antStars, ptnMaxChannels; 154 uint16_t sampleRates[16]; 155 uint8_t cfg_OverwriteWarning; 156 int16_t cfg_SortPriority, cfg_DPMIMemLimit; 157 uint8_t cfg_DPMIMemLimitEnabled; 158 uint8_t audioInputFreq; // was "cdr_Sync" 159 } 160 #ifdef __GNUC__ 161 __attribute__ ((packed)) 162 #endif 163 config_t; 164 165 #ifdef _MSC_VER 166 #pragma pack(pop) 167 #endif 168 169 void resetConfig(void); 170 bool loadConfig(bool showErrorFlag); 171 void loadConfig2(void); // called by "Load config" button 172 bool saveConfig(bool showErrorFlag); 173 void saveConfig2(void); // called by "Save config" button 174 void loadConfigOrSetDefaults(void); 175 void showConfigScreen(void); 176 void hideConfigScreen(void); 177 void exitConfigScreen(void); 178 void setConfigAudioRadioButtonStates(void); 179 void configToggleImportWarning(void); 180 void configToggleNotYetAppliedWarning(void); 181 void drawAudioOutputList(void); 182 void drawAudioInputList(void); 183 void configAmpDown(void); 184 void configAmpUp(void); 185 void configMasterVolDown(void); 186 void configMasterVolUp(void); 187 void configQuantizeUp(void); 188 void configQuantizeDown(void); 189 void configMIDIChnUp(void); 190 void configMIDIChnDown(void); 191 void configMIDITransUp(void); 192 void configMIDITransDown(void); 193 void configMIDISensDown(void); 194 void configMIDISensUp(void); 195 void rbConfigAudio(void); 196 void rbConfigLayout(void); 197 void rbConfigMiscellaneous(void); 198 #ifdef HAS_MIDI 199 void rbConfigMidiInput(void); 200 #endif 201 void rbConfigAudioBuffSmall(void); 202 void rbConfigAudioBuffMedium(void); 203 void rbConfigAudioBuffLarge(void); 204 void rbConfigAudio16Bit(void); 205 void rbConfigAudio32BitFloat(void); 206 void rbConfigAudioIntrpDisabled(void); 207 void rbConfigAudioIntrpLinear(void); 208 void rbConfigAudioIntrpQuadratic(void); 209 void rbConfigAudioIntrpCubic(void); 210 void rbConfigAudioIntrpSinc8(void); 211 void rbConfigAudioIntrpSinc16(void); 212 void rbConfigAudio44kHz(void); 213 void rbConfigAudio48kHz(void); 214 void rbConfigAudio96kHz(void); 215 void rbConfigAudioInput44kHz(void); 216 void rbConfigAudioInput48kHz(void); 217 void rbConfigAudioInput96kHz(void); 218 void rbConfigFreqSlidesAmiga(void); 219 void rbConfigFreqSlidesLinear(void); 220 void rbConfigMouseNice(void); 221 void rbConfigMouseUgly(void); 222 void rbConfigMouseAwful(void); 223 void rbConfigMouseUsable(void); 224 void rbConfigScopeStandard(void); 225 void rbConfigMouseBusyVogue(void); 226 void rbConfigMouseBusyMrH(void); 227 void rbConfigScopeLined(void); 228 void rbConfigPatt4Chans(void); 229 void rbConfigPatt6Chans(void); 230 void rbConfigPatt8Chans(void); 231 void rbConfigPatt12Chans(void); 232 void rbConfigFontCapitals(void); 233 void rbConfigFontLowerCase(void); 234 void rbConfigFontFuture(void); 235 void rbConfigFontBold(void); 236 void rbFileSortExt(void); 237 void rbFileSortName(void); 238 void rbWinSizeAuto(void); 239 void rbWinSize1x(void); 240 void rbWinSize2x(void); 241 void rbWinSize3x(void); 242 void rbWinSize4x(void); 243 void cbToggleAutoSaveConfig(void); 244 void cbConfigVolRamp(void); 245 void cbConfigPattStretch(void); 246 void cbConfigHexCount(void); 247 void cbConfigAccidential(void); 248 void cbConfigShowZeroes(void); 249 void cbConfigFramework(void); 250 void cbConfigLineColors(void); 251 void cbConfigChanNums(void); 252 void cbConfigShowVolCol(void); 253 void cbEnableCustomPointer(void); 254 void cbSoftwareMouse(void); 255 void cbSampCutToBuff(void); 256 void cbPattCutToBuff(void); 257 void cbKillNotesAtStop(void); 258 void cbFileOverwriteWarn(void); 259 void cbMultiChanRec(void); 260 void cbMultiChanKeyJazz(void); 261 void cbMultiChanEdit(void); 262 void cbRecKeyOff(void); 263 void cbQuantization(void); 264 void cbChangePattLenInsDel(void); 265 void cbUseOldAboutScreen(void); 266 void cbMIDIEnable(void); 267 void cbMIDIRecTransp(void); 268 void cbMIDIRecAllChn(void); 269 void cbMIDIRecVelocity(void); 270 void cbMIDIRecAftert(void); 271 void cbVsyncOff(void); 272 void cbFullScreen(void); 273 void cbPixelFilter(void); 274 void cbStretchImage(void); 275 void sbAmp(uint32_t pos); 276 void sbMasterVol(uint32_t pos); 277 void sbMIDISens(uint32_t pos); 278 279 extern config_t config;