diff --git a/board-package-source/boards.txt b/board-package-source/boards.txt index 096eea0..8c8041b 100644 --- a/board-package-source/boards.txt +++ b/board-package-source/boards.txt @@ -269,11 +269,173 @@ arduboy-homemade.menu.contrast.lowest.build.contrast=-DOLED_CONTRAST=0x00 arduboy-homemade.menu.contrast.highest=Highest arduboy-homemade.menu.contrast.highest.build.contrast=-DOLED_CONTRAST=0xFF +################################################################################ +# Arduboy FX board +################################################################################ + +arduboy-fx.name=Arduboy FX + +#Arduino Leonardo +arduboy-fx.vid.0=0x2341 +arduboy-fx.pid.0=0x0036 +arduboy-fx.vid.1=0x2341 +arduboy-fx.pid.1=0x8036 +arduboy-fx.vid.2=0x2A03 +arduboy-fx.pid.2=0x0036 +arduboy-fx.vid.3=0x2A03 +arduboy-fx.pid.3=0x8036 +#Arduino Micro +arduboy-fx.vid.4=0x2341 +arduboy-fx.pid.4=0x0037 +arduboy-fx.vid.5=0x2341 +arduboy-fx.pid.5=0x8037 +arduboy-fx.vid.6=0x2A03 +arduboy-fx.pid.6=0x0037 +arduboy-fx.vid.7=0x2A03 +arduboy-fx.pid.7=0x8037 +#Genuino Micro +arduboy-fx.vid.8=0x2341 +arduboy-fx.pid.8=0x8237 +#Sparkfun Pro Micro 5V +arduboy-fx.vid.8=0x1b4f +arduboy-fx.pid.8=0x9205 +arduboy-fx.vid.9=0x1b4f +arduboy-fx.pid.9=0x9206 + +arduboy-fx.upload.tool=arduino:avrdude +arduboy-fx.upload.protocol=avr109 +arduboy-fx.upload.maximum_size=28672 +arduboy-fx.upload.maximum_data_size=2560 +arduboy-fx.upload.speed=57600 +arduboy-fx.upload.disable_flushing=true +arduboy-fx.upload.use_1200bps_touch=true +arduboy-fx.upload.wait_for_upload_port=true + +arduboy-fx.bootloader.tool=arduino:avrdude +arduboy-fx.bootloader.low_fuses=0xff +arduboy-fx.bootloader.high_fuses=0xd2 +arduboy-fx.bootloader.extended_fuses=0xcb +arduboy-fx.bootloader.file=cathy3k/arduboy3k-bootloader-menu-sda.hex +arduboy-fx.bootloader.unlock_bits=0x3F +arduboy-fx.bootloader.lock_bits=0x2F + +arduboy-fx.build.mcu=atmega32u4 +arduboy-fx.build.f_cpu=16000000L +arduboy-fx.build.variant=arduboy +arduboy-fx.build.board=AVR_ARDUBOY +arduboy-fx.build.vid=0x2341 +arduboy-fx.build.pid=0x8036 +arduboy-fx.build.variant=arduboy +arduboy-fx.build.usb_product="Arduboy" +arduboy-fx.build.board=AVR_ARDUBOY +arduboy-fx.build.core=arduino:arduino +arduboy-fx.build.flash_cs=-DCART_CS_SDA +arduboy-fx.build.extra_flags=-DARDUBOY_10 {build.flash_cs} {build.usb_flags} + +# Arduboy FX menu options ###################################################### + +arduboy-fx.menu.core.arduboy-core=Arduboy optimized core +arduboy-fx.menu.core.arduboy-core.build.core=arduboy + +arduboy-fx.menu.core.arduino-core=Standard Arduino core +arduboy-fx.menu.core.arduino-core.build.core=arduino:arduino + +arduboy-fx.menu.boot.cathy3k=Cathy3K (starts with menu) +arduboy-fx.menu.boot.cathy3k.upload.maximum_size=29696 +arduboy-fx.menu.boot.cathy3k.bootloader.high_fuses=0xd2 +arduboy-fx.menu.boot.cathy3k.bootloader.file=cathy3k/arduboy3k-bootloader-menu-sda.hex + +arduboy-fx.menu.boot.cathy3kg=Cathy3K (starts with game) +arduboy-fx.menu.boot.cathy3kg.upload.maximum_size=29696 +arduboy-fx.menu.boot.cathy3kg.bootloader.high_fuses=0xd2 +arduboy-fx.menu.boot.cathy3kg.bootloader.file=cathy3k/arduboy3k-bootloader-game-sda.hex + +################################################################################ +# Arduboy FX DevKit board +################################################################################ + +arduboy-fx-devkit.name=Arduboy FX DevKit + +#Arduino Leonardo +arduboy-fx-devkit.vid.0=0x2341 +arduboy-fx-devkit.pid.0=0x0036 +arduboy-fx-devkit.vid.1=0x2341 +arduboy-fx-devkit.pid.1=0x8036 +arduboy-fx-devkit.vid.2=0x2A03 +arduboy-fx-devkit.pid.2=0x0036 +arduboy-fx-devkit.vid.3=0x2A03 +arduboy-fx-devkit.pid.3=0x8036 +#Arduino Micro +arduboy-fx-devkit.vid.4=0x2341 +arduboy-fx-devkit.pid.4=0x0037 +arduboy-fx-devkit.vid.5=0x2341 +arduboy-fx-devkit.pid.5=0x8037 +arduboy-fx-devkit.vid.6=0x2A03 +arduboy-fx-devkit.pid.6=0x0037 +arduboy-fx-devkit.vid.7=0x2A03 +arduboy-fx-devkit.pid.7=0x8037 +#Genuino Micro +arduboy-fx-devkit.vid.8=0x2341 +arduboy-fx-devkit.pid.8=0x8237 +#Sparkfun Pro Micro 5V +arduboy-fx-devkit.vid.8=0x1b4f +arduboy-fx-devkit.pid.8=0x9205 +arduboy-fx-devkit.vid.9=0x1b4f +arduboy-fx-devkit.pid.9=0x9206 + +arduboy-fx-devkit.upload.tool=arduino:avrdude +arduboy-fx-devkit.upload.protocol=avr109 +arduboy-fx-devkit.upload.maximum_size=28672 +arduboy-fx-devkit.upload.maximum_data_size=2560 +arduboy-fx-devkit.upload.speed=57600 +arduboy-fx-devkit.upload.disable_flushing=true +arduboy-fx-devkit.upload.use_1200bps_touch=true +arduboy-fx-devkit.upload.wait_for_upload_port=true + +arduboy-fx-devkit.bootloader.tool=arduino:avrdude +arduboy-fx-devkit.bootloader.low_fuses=0xff +arduboy-fx-devkit.bootloader.high_fuses=0xd2 +arduboy-fx-devkit.bootloader.extended_fuses=0xcb +arduboy-fx-devkit.bootloader.file=cathy3k/arduboy3k-bootloader-menu-sda.hex +arduboy-fx-devkit.bootloader.unlock_bits=0x3F +arduboy-fx-devkit.bootloader.lock_bits=0x2F + +arduboy-fx-devkit.build.mcu=atmega32u4 +arduboy-fx-devkit.build.f_cpu=16000000L +arduboy-fx-devkit.build.variant=arduboy +arduboy-fx-devkit.build.board=AVR_ARDUBOY +arduboy-fx-devkit.build.vid=0x2341 +arduboy-fx-devkit.build.pid=0x8036 +arduboy-fx-devkit.build.variant=arduboy +arduboy-fx-devkit.build.usb_product="Arduboy" +arduboy-fx-devkit.build.board=AVR_ARDUBOY +arduboy-fx-devkit.build.core=arduino:arduino +arduboy-fx-devkit.build.flash_cs=-DCART_CS_RX +arduboy-fx-devkit.build.extra_flags=-DARDUBOY_10 {build.flash_cs} {build.usb_flags} + +# Arduboy FX DevKit menu options ############################################### + +arduboy-fx-devkit.menu.core.arduboy-core=Arduboy optimized core +arduboy-fx-devkit.menu.core.arduboy-core.build.core=arduboy + +arduboy-fx-devkit.menu.core.arduino-core=Standard Arduino core +arduboy-fx-devkit.menu.core.arduino-core.build.core=arduino:arduino + +arduboy-fx-devkit.menu.boot.cathy3k=Cathy3K (starts with menu) +arduboy-fx-devkit.menu.boot.cathy3k.upload.maximum_size=29696 +arduboy-fx-devkit.menu.boot.cathy3k.bootloader.high_fuses=0xd2 +arduboy-fx-devkit.menu.boot.cathy3k.bootloader.file=cathy3k/arduboy3k-bootloader-menu-sda.hex + +arduboy-fx-devkit.menu.boot.cathy3kg=Cathy3K (starts with game) +arduboy-fx-devkit.menu.boot.cathy3kg.upload.maximum_size=29696 +arduboy-fx-devkit.menu.boot.cathy3kg.bootloader.high_fuses=0xd2 +arduboy-fx-devkit.menu.boot.cathy3kg.bootloader.file=cathy3k/arduboy3k-bootloader-game-sda.hex + ################################################################################ # Arduboy board ################################################################################ -arduboy.name=Arduboy (FX) +arduboy.name=Arduboy #Arduino Leonardo arduboy.vid.0=0x2341 @@ -484,7 +646,7 @@ arduboy-devkit.menu.boot.cathy3kg.bootloader.file=cathy3k/arduboy3k-bootloader-g 8bitcadexl.build.flash_cs=-DCART_CS_RX 8bitcadexl.build.extra_flags=-DARDUBOY_10 -DOLED_SSD1309 {build.flash_cs} {build.contrast} {build.usb_flags} -# Arduboy menu options ######################################################### +# 8BitCADE XL menu options ##################################################### #core select @@ -567,7 +729,7 @@ arduboy-devkit.menu.boot.cathy3kg.bootloader.file=cathy3k/arduboy3k-bootloader-g 8bitcadexlup.build.flash_cs=-DCART_CS_RX 8bitcadexlup.build.extra_flags=-DARDUBOY_10 -DOLED_SSD1309 -DSUPPORT_XY_BUTTONS {build.flash_cs} {build.contrast} {build.usb_flags} -# Arduboy menu options ######################################################### +# 8BitCADE XL Level UP menu options ############################################ #core select diff --git a/board-package-source/libraries/Arduboy2/src/Arduboy2.cpp b/board-package-source/libraries/Arduboy2/src/Arduboy2.cpp index d8d8501..5d6059c 100644 --- a/board-package-source/libraries/Arduboy2/src/Arduboy2.cpp +++ b/board-package-source/libraries/Arduboy2/src/Arduboy2.cpp @@ -101,7 +101,7 @@ void Arduboy2Base::sysCtrlSound(uint8_t buttons, uint8_t led, uint8_t eeVal) setRGBledBlueOff(); delayByte(200); digitalWriteRGB(led, RGB_ON); // turn on "acknowledge" LED - EEPROM.update(eepromAudioOnOff, eeVal); + eeprom_update_byte(eepromAudioOnOff, eeVal); delayShort(500); digitalWriteRGB(led, RGB_OFF); // turn off "acknowledge" LED @@ -1072,14 +1072,14 @@ bool Arduboy2Base::collide(Rect rect1, Rect rect2) uint16_t Arduboy2Base::readUnitID() { - return EEPROM.read(eepromUnitID) | - (((uint16_t)(EEPROM.read(eepromUnitID + 1))) << 8); + return eeprom_read_byte(eepromUnitID) | + (((uint16_t)(eeprom_read_byte(eepromUnitID + 1))) << 8); } void Arduboy2Base::writeUnitID(uint16_t id) { - EEPROM.update(eepromUnitID, (uint8_t)(id & 0xff)); - EEPROM.update(eepromUnitID + 1, (uint8_t)(id >> 8)); + eeprom_update_byte(eepromUnitID, (uint8_t)(id & 0xff)); + eeprom_update_byte(eepromUnitID + 1, (uint8_t)(id >> 8)); } uint8_t Arduboy2Base::readUnitName(char* name) @@ -1090,7 +1090,7 @@ uint8_t Arduboy2Base::readUnitName(char* name) for (dest = 0; dest < ARDUBOY_UNIT_NAME_LEN; dest++) { - val = EEPROM.read(src); + val = eeprom_read_byte(src); name[dest] = val; src++; if (val == 0x00 || (byte)val == 0xFF) { @@ -1113,48 +1113,48 @@ void Arduboy2Base::writeUnitName(const char* name) done = true; } // write character or 0 pad if finished - EEPROM.update(dest, done ? 0x00 : name[src]); + eeprom_update_byte(dest, done ? 0x00 : name[src]); dest++; } } bool Arduboy2Base::readShowBootLogoFlag() { - return (EEPROM.read(eepromSysFlags) & sysFlagShowLogoMask); + return (eeprom_read_byte(eepromSysFlags) & sysFlagShowLogoMask); } void Arduboy2Base::writeShowBootLogoFlag(bool val) { - uint8_t flags = EEPROM.read(eepromSysFlags); + uint8_t flags = eeprom_read_byte(eepromSysFlags); bitWrite(flags, sysFlagShowLogoBit, val); - EEPROM.update(eepromSysFlags, flags); + eeprom_update_byte(eepromSysFlags, flags); } bool Arduboy2Base::readShowUnitNameFlag() { - return (EEPROM.read(eepromSysFlags) & sysFlagUnameMask); + return (eeprom_read_byte(eepromSysFlags) & sysFlagUnameMask); } void Arduboy2Base::writeShowUnitNameFlag(bool val) { - uint8_t flags = EEPROM.read(eepromSysFlags); + uint8_t flags = eeprom_read_byte(eepromSysFlags); bitWrite(flags, sysFlagUnameBit, val); - EEPROM.update(eepromSysFlags, flags); + eeprom_update_byte(eepromSysFlags, flags); } bool Arduboy2Base::readShowBootLogoLEDsFlag() { - return (EEPROM.read(eepromSysFlags) & sysFlagShowLogoLEDsMask); + return (eeprom_read_byte(eepromSysFlags) & sysFlagShowLogoLEDsMask); } void Arduboy2Base::writeShowBootLogoLEDsFlag(bool val) { - uint8_t flags = EEPROM.read(eepromSysFlags); + uint8_t flags = eeprom_read_byte(eepromSysFlags); bitWrite(flags, sysFlagShowLogoLEDsBit, val); - EEPROM.update(eepromSysFlags, flags); + eeprom_update_byte(eepromSysFlags, flags); } void Arduboy2Base::swapInt16(int16_t& a, int16_t& b) @@ -1305,7 +1305,7 @@ void Arduboy2::bootLogoExtra() return; } - c = EEPROM.read(eepromUnitName); + c = eeprom_read_byte(eepromUnitName); if (c != 0xFF && c != 0x00) { @@ -1316,7 +1316,7 @@ void Arduboy2::bootLogoExtra() do { write(c); - c = EEPROM.read(++i); + c = eeprom_read_byte(++i); } while (i < eepromUnitName + ARDUBOY_UNIT_NAME_LEN); diff --git a/board-package-source/libraries/Arduboy2/src/Arduboy2.h b/board-package-source/libraries/Arduboy2/src/Arduboy2.h index f14ce1e..a6fdd60 100644 --- a/board-package-source/libraries/Arduboy2/src/Arduboy2.h +++ b/board-package-source/libraries/Arduboy2/src/Arduboy2.h @@ -8,7 +8,7 @@ #define ARDUBOY2_H #include -#include +#include #include "Arduboy2Core.h" #include "Arduboy2Audio.h" #include "Arduboy2Beep.h" diff --git a/board-package-source/libraries/Arduboy2/src/Arduboy2Core.cpp b/board-package-source/libraries/Arduboy2/src/Arduboy2Core.cpp index 8ab6490..1bb7790 100644 --- a/board-package-source/libraries/Arduboy2/src/Arduboy2Core.cpp +++ b/board-package-source/libraries/Arduboy2/src/Arduboy2Core.cpp @@ -901,6 +901,7 @@ void Arduboy2Core::paintScreen(uint8_t image[], bool clear) " inc r19 ;1 \n\t" " cpi r19,%[page_end] ;1 \n\t" " brne 1b ;1/2 \n\t" + " lpm r20, Z ;3 delay \n\t" " in __tmp_reg__, %[spsr] \n\t" //read SPSR to clear SPIF : [ptr] "+&z" (image) :