ft2-clone

Fasttracker 2 clone
Log | Files | Refs | README | LICENSE

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;