cartreader/Cart_Reader/Config.h
Ancyker 010b7e7525 Firmware Updater support, 3.3V Fix, and more
Lots of changes/additions.

Added:
* Firmware Updater support: Supports the Firmware Updater app (release to follow soon). Enabled by default, can be disabled in the config.
* 3.3V Fix (3V3FIX): Enable if you have stability issues when using 3.3V, works best with VSELECT. Disabled by default, can be enabled in the config.
* `DynamicClockSerial`: Class that extends and modifies HardwareSerial to be compatible with a dynamically changing clock speed. Used through the `ClockedSerial` object/variable.
* `OSCR.cpp` & `OSCR.h`: New files for storing globals. Only contains these new additions for now. More code cleanup to come.

Changed:
* Moved configuration flags to `Config.h` and documented them better.
* Removed `vselect()` function. Now uses `setVoltage()` with the params `VOLTS_SET_3V3` and `VOLTS_SET_5V`.

Known Issues:
* Rarely the LCD backlight turns white when using 3V3FIX. Resetting fixes it. Doesn't affect functionality/usability; it's just weird.
2023-03-29 21:05:01 -04:00

390 lines
7.5 KiB
C

/********************************************************************
* Open Source Cartridge Reader *
********************************************************************/
#ifndef CONFIG_H_
#define CONFIG_H_
/***** FIRMWARE CONFIGURATION **************************************
*
* Add or remove the "//" in front of items to toggle them.
*
* Disabled:
* //#define HW5
*
* Enabled:
* #define HW5
*
* Things in ** blocks like this are comments. Changing them doesn't
* affect the firmware that is flashed to your OSCR.
*
* If you only get a blank screen or "Press Button" message after
* flashing you have enabled too many modules.
*
********************************************************************/
/*==== HARDWARE VERSION ===========================================*/
/*
* Choose your hardware version:
*/
//#define HW5
//#define HW4
//#define HW3
//#define HW2
//#define HW1
//#define SERIAL_MONITOR
/****/
/*==== HARDWARE MODULES ===========================================*/
/* [ Automatic Voltage Selection ---------------------------------- ]
* Enable this if you have the VSELECT module.
*/
//#define ENABLE_VSELECT
/****/
/* [ Clock Generator ---------------------------------------------- ]
* Enable this if you have the clock generator module.
*/
//#define clockgen_installed
/****/
/* [ Real Time Clock ---------------------------------------------- ]
* Enable this if you have the RTC module.
*/
//#define RTC_installed
/****/
/*==== GAME SYSTEM CORES ==========================================*/
/* [ Atari 2600 --------------------------------------------------- ]
*/
//#define enable_ATARI
/****/
/* [ Benesse Pocket Challenge W ----------------------------------- ]
*/
//#define enable_PCW
/****/
/* [ ColecoVision ------------------------------------------------- ]
*/
//#define enable_COLV
/****/
/* [ Emerson Arcadia 2001 ----------------------------------------- ]
*/
//#define enable_ARC
/****/
/* [ Fairchild Channel F ------------------------------------------ ]
*/
//#define enable_FAIRCHILD
/****/
/* [ Flashrom Programmer for SNES repros -------------------------- ]
*/
#define enable_FLASH
//#define enable_FLASH16
/****/
/* [ Game Boy (Color) and Advance --------------------------------- ]
*/
#define enable_GBX
/****/
/* [ Intellivision ------------------------------------------------ ]
*/
//#define enable_INTV
/****/
/* [ Neo Geo Pocket ----------------------------------------------- ]
*/
//#define enable_NGP
/****/
/* [ Nintendo 64 -------------------------------------------------- ]
*/
#define enable_N64
/****/
/* [ Nintendo Entertainment System/Family Computer ---------------- ]
*/
#define enable_NES
/****/
/* [ Magnavox Odyssey 2 ------------------------------------------- ]
*/
//#define enable_ODY2
/****/
/* [ PC Engine/TurboGrafx 16 -------------------------------------- ]
*/
//#define enable_PCE
/****/
/* [ Sega Master System/Mark III/Game Gear/SG-1000 ---------------- ]
*/
#define enable_SMS
/****/
/* [ Sega Mega Drive/Genesis -------------------------------------- ]
*/
#define enable_MD
/****/
/* [ Super Famicom SF Memory Cassette ----------------------------- ]
*/
#define enable_SFM
/****/
/* [ Super Famicom Satellaview ------------------------------------ ]
*/
#define enable_SV
/****/
/* [ Super Nintendo ----------------------------------------------- ]
*/
#define enable_SNES
/****/
/* [ Virtual Boy -------------------------------------------------- ]
*/
//#define enable_VBOY
/****/
/* [ Watara Supervision ------------------------------------------- ]
*/
//#define enable_WSV
/****/
/* [ WonderSwan and Benesse Pocket Challenge v2 ------------------- ]
*/
//#define enable_WS
/****/
/* [ Super A'can -------------------------------------------------- ]
*/
//#define enable_SUPRACAN
/****/
/*==== FIRMWARE OPTIONS ===========================================*/
/* [ LCD: Background Color ---------------------------------------- ]
* Set the backlight color of the LCD if you have one.
*
* PARAMETERS:
* Green, Red, Blue
*/
#define background_color 100, 0, 0
/****/
/* [ 3.3V Stability Fix (3V3FIX) ---------------------------------- ]
* Enable this if you are having stability issues when using 3.3V,
* works best with VSELECT.
*
* If not using VSELECT, always turn the cart reader on with the
* voltage switch set to 5V and switch to 5V before selecting a
* cartridge from the menu.
*/
//#define ENABLE_3V3FIX
/****/
/* [ Updater ------------------------------------------------------ ]
* Disable this if you don't plan to/want to use the firmware
* updater utility. This setting is ignored on hardware versions
* other than HW5 and HW3.
*/
#define ENABLE_UPDATER
/****/
/* [ Self Test ---------------------------------------------------- ]
* Tests for shorts and other issues in your OSCR build.
*/
#define enable_selftest
/****/
/* [ Start Menu --------------------------------------------------- ]
* Change this when using a single slot cart reader to always start
* in that menu.
*
* OPTIONS :
* mainMenu, snsMenu, mdMenu, n64Menu, gbxMenu, pcsMenu,
* flashMenu, nesMenu, smsMenu
*/
#define startMenu mainMenu
/****/
/* [ Logging ------------------------------------------------------ ]
* Write all info to OSCR_LOG.txt in root dir
*/
#define global_log
/****/
/* [ Use No Intro Database ---------------------------------------- ]
* Renames ROM if found in database
*/
#define nointro
/****/
/* [ SNES Core/CLOCKGEN: Read Clock Generator Calibration Data ---- ]
* Toggle to use calibration data from snes_clk.txt
*/
//#define clockgen_calibration
/****/
/* [ MegaDrive/Genesis Core: Compatibility Settings --------------- ]
* Allows you to create a text file on the SD card called
* "mdconf.txt" which you should place the following into:
*
* [segaSram16bit] N
*
* Where N is:
* 0: Output each byte once. Not supported by emulators. (default)
* 1: Duplicate each byte. Usable by Kega Fusion.
* 2: Same as 1 + pad with 0xFF so that the file size is 64KB.
*/
//#define use_md_conf
/*
* Alternatively, define it here by uncommenting and changing the
* following line. Setting both allows you to change the default.
*/
//#define DEFAULT_VALUE_segaSram16bit 0
/****/
/* [ N64 Core: Fast CRC ------------------------------------------- ]
* Toggle so the CRC for N64 Roms will be calculated during dumping
* from memory instead of after dumping from SD card, not compatible
* with all Cart Readers
*/
//#define fastcrc
/****/
/* [ N64 Core: Log Summary ---------------------------------------- ]
* Enable to save a n64log.txt file with rom info in /N64/ROM
*/
//#define savesummarytotxt
/****/
/*==== PROCESSING =================================================*/
/*
* You probably shouldn't change this stuff!
*/
#if (defined(HW4) || defined(HW5))
#define enable_LCD
#define enable_neopixel
#define enable_rotary
//#define rotate_counter_clockwise
#define clockgen_installed
#define fastcrc
#define ws_adapter_v2
#endif
#if (defined(HW2) || defined(HW3))
#define enable_OLED
#define enable_Button2
#define clockgen_installed
#define CA_LED
#define fastcrc
#endif
#if defined(HW1)
#define enable_OLED
//#define clockgen_installed
//#define fastcrc
#endif
#if defined(SERIAL_MONITOR)
#define enable_serial
//#define clockgen_installed
//#define fastcrc
#endif
/* Firmware updater only works with HW3 and HW5 */
#if !(defined(HW5) || defined(HW3))
#undef ENABLE_UPDATER
#endif
/* End of settings */
#endif /* CONFIG_H_ */