This commit is contained in:
parent
4ced120669
commit
90f061d9c0
@ -14,6 +14,7 @@ Retro-Go's shared library (or framework) provides an easy way to port emulators
|
||||
| [fri3d-2024](targets/fri3d-2024/docs/README.md) | |
|
||||
| [mrgc-g32](targets/mrgc-g32/docs/README.md) | Official |
|
||||
| [mrgc-gbm](targets/mrgc-gbm/docs/README.md) | |
|
||||
| [meowboy](targets/meowboy/config.h) | Experimental |
|
||||
| [nullnano](targets/nullnano/docs/README.md) | |
|
||||
| [odroid-go](targets/odroid-go/docs/README.md) | Official |
|
||||
| [qtpy-gamer](targets/qtpy-gamer/docs/README.md) | Broken |
|
||||
|
||||
@ -6,6 +6,8 @@
|
||||
#include "targets/mrgc-g32/config.h"
|
||||
#elif defined(RG_TARGET_RETRO_ESP32)
|
||||
#include "targets/retro-esp32/config.h"
|
||||
#elif defined(RG_TARGET_MEOWBOY)
|
||||
#include "targets/meowboy/config.h"
|
||||
#elif defined(RG_TARGET_RETRO_RULER_V1)
|
||||
#include "targets/retro-ruler-V1/config.h"
|
||||
#elif defined(RG_TARGET_SDL2)
|
||||
@ -38,6 +40,12 @@
|
||||
#define RG_TARGET_ODROID_GO
|
||||
#endif
|
||||
|
||||
#if defined(RG_TARGET_MEOWBOY)
|
||||
#undef RG_AUDIO_USE_BUZZER_PIN
|
||||
#define RG_AUDIO_USE_BUZZER_PIN 14
|
||||
#define RG_AUDIO_BUZZER_LEDC_CHANNEL LEDC_CHANNEL_1
|
||||
#define RG_AUDIO_BUZZER_LEDC_TIMER LEDC_TIMER_1
|
||||
#endif
|
||||
#ifndef RG_PROJECT_NAME
|
||||
#define RG_PROJECT_NAME "Retro-Go"
|
||||
#endif
|
||||
|
||||
@ -53,9 +53,19 @@ Note that there are some restrictions on how high the PWM frequency can be, and
|
||||
#define SOURCE_CLOCK_MIN_DIVIDER 2 // divider must be [2-65536], according to the docs
|
||||
#define SOURCE_CLOCK_FREQUENCY 80000000
|
||||
#define SOURCE_CLOCK_MAX_FREQUENCY SOURCE_CLOCK_FREQUENCY/SOURCE_CLOCK_MIN_DIVIDER
|
||||
#define LEDC_PWM_SPEED_MODE LEDC_LOW_SPEED_MODE
|
||||
#define LEDC_PWM_CHANNEL LEDC_CHANNEL_0
|
||||
#define LEDC_PWM_TIMER LEDC_TIMER_0
|
||||
#ifndef RG_AUDIO_BUZZER_LEDC_SPEED_MODE
|
||||
#define RG_AUDIO_BUZZER_LEDC_SPEED_MODE LEDC_LOW_SPEED_MODE
|
||||
#endif
|
||||
#ifndef RG_AUDIO_BUZZER_LEDC_CHANNEL
|
||||
#define RG_AUDIO_BUZZER_LEDC_CHANNEL LEDC_CHANNEL_0
|
||||
#endif
|
||||
#ifndef RG_AUDIO_BUZZER_LEDC_TIMER
|
||||
#define RG_AUDIO_BUZZER_LEDC_TIMER LEDC_TIMER_0
|
||||
#endif
|
||||
|
||||
#define LEDC_PWM_SPEED_MODE RG_AUDIO_BUZZER_LEDC_SPEED_MODE
|
||||
#define LEDC_PWM_CHANNEL RG_AUDIO_BUZZER_LEDC_CHANNEL
|
||||
#define LEDC_PWM_TIMER RG_AUDIO_BUZZER_LEDC_TIMER
|
||||
#define GENERAL_PURPOSE_TIMER_GROUP TIMER_GROUP_0
|
||||
#define GENERAL_PURPOSE_TIMER TIMER_0
|
||||
|
||||
@ -179,7 +189,7 @@ static bool buzzer_init(int device, int sampleRate)
|
||||
precompute_sine_wave(sampleRate);
|
||||
#endif
|
||||
|
||||
sampleQueue = xQueueCreate(cacheSamples*2, sizeof(int16_t*));
|
||||
sampleQueue = xQueueCreate(cacheSamples*2, sizeof(int16_t));
|
||||
if (!sampleQueue) {
|
||||
RG_LOGE("could not create sampleQueue");
|
||||
return false;
|
||||
|
||||
87
components/retro-go/targets/meowboy/config.h
Normal file
87
components/retro-go/targets/meowboy/config.h
Normal file
@ -0,0 +1,87 @@
|
||||
// Target definition
|
||||
#define RG_TARGET_NAME "MEOWBOY"
|
||||
|
||||
// Storage
|
||||
#define RG_STORAGE_ROOT "/sd"
|
||||
#define RG_STORAGE_SDSPI_HOST SPI2_HOST
|
||||
#define RG_STORAGE_SDSPI_SPEED SDMMC_FREQ_DEFAULT
|
||||
// #define RG_STORAGE_FLASH_PARTITION "vfs"
|
||||
|
||||
// Audio
|
||||
// The board has a buzzer/speaker on GPIO14. Do not enable DAC audio because
|
||||
// GPIO25/GPIO26 are exposed on external ports 4/3.
|
||||
#define RG_AUDIO_USE_BUZZER_PIN 14
|
||||
#define RG_AUDIO_USE_INT_DAC 0 // 0 = Disable, 1 = GPIO25, 2 = GPIO26, 3 = Both
|
||||
#define RG_AUDIO_USE_EXT_DAC 0 // 0 = Disable, 1 = Enable
|
||||
|
||||
// Video
|
||||
// The panel is driven like an ST7735 160x128 screen. Retro-Go's ILI9341 driver
|
||||
// is SPI-command based and works for this controller with a target init block.
|
||||
#define RG_SCREEN_DRIVER 0 // 0 = ILI9341/ST7789-compatible SPI LCD
|
||||
#define RG_SCREEN_HOST SPI2_HOST
|
||||
#define RG_SCREEN_SPEED 24000000
|
||||
#define RG_SCREEN_BACKLIGHT 1
|
||||
#define RG_SCREEN_WIDTH 160
|
||||
#define RG_SCREEN_HEIGHT 128
|
||||
#define RG_SCREEN_ROTATE 0
|
||||
#define RG_SCREEN_VISIBLE_AREA {0, 0, 0, 0}
|
||||
#define RG_SCREEN_SAFE_AREA {0, 0, 0, 0}
|
||||
#define RG_SCREEN_INIT() \
|
||||
ILI9341_CMD(0x11); \
|
||||
rg_usleep(100 * 1000); \
|
||||
ILI9341_CMD(0x36, 0x60); \
|
||||
ILI9341_CMD(0x3A, 0x05)
|
||||
#define RG_SCREEN_DEINIT() \
|
||||
lcd_set_backlight(0); \
|
||||
ILI9341_CMD(0x28)
|
||||
|
||||
// Input
|
||||
// All physical buttons are active-low. GPIO34 and GPIO35 are input-only and do
|
||||
// not support internal pullups, so they rely on the board's external pullups.
|
||||
// Refer to rg_input.h to see all available RG_KEY_* and RG_GAMEPAD_*_MAP types.
|
||||
#define RG_GAMEPAD_GPIO_MAP {\
|
||||
{RG_KEY_UP, .num = GPIO_NUM_2, .pullup = 1, .level = 0},\
|
||||
{RG_KEY_DOWN, .num = GPIO_NUM_13, .pullup = 1, .level = 0},\
|
||||
{RG_KEY_LEFT, .num = GPIO_NUM_27, .pullup = 1, .level = 0},\
|
||||
{RG_KEY_RIGHT, .num = GPIO_NUM_35, .pullup = 0, .level = 0},\
|
||||
{RG_KEY_A, .num = GPIO_NUM_34, .pullup = 0, .level = 0},\
|
||||
{RG_KEY_B, .num = GPIO_NUM_12, .pullup = 1, .level = 0},\
|
||||
}
|
||||
#define RG_GAMEPAD_VIRT_MAP {\
|
||||
{RG_KEY_SELECT, .src = RG_KEY_UP | RG_KEY_DOWN },\
|
||||
{RG_KEY_START, .src = RG_KEY_LEFT | RG_KEY_RIGHT},\
|
||||
{RG_KEY_MENU, .src = RG_KEY_A | RG_KEY_B },\
|
||||
{RG_KEY_OPTION, .src = RG_KEY_UP | RG_KEY_A },\
|
||||
}
|
||||
|
||||
// Battery
|
||||
// Battery measurement is not identified yet, so leave battery reporting disabled.
|
||||
// #define RG_BATTERY_DRIVER 1
|
||||
|
||||
// SPI Display
|
||||
#define RG_GPIO_LCD_MISO GPIO_NUM_19
|
||||
#define RG_GPIO_LCD_MOSI GPIO_NUM_23
|
||||
#define RG_GPIO_LCD_CLK GPIO_NUM_18
|
||||
#define RG_GPIO_LCD_CS GPIO_NUM_5
|
||||
#define RG_GPIO_LCD_DC GPIO_NUM_4
|
||||
#define RG_GPIO_LCD_BCKL GPIO_NUM_21
|
||||
// GPIO2 is shared with the UP key; use software reset to avoid stealing it.
|
||||
// #define RG_GPIO_LCD_RST GPIO_NUM_2
|
||||
|
||||
// SPI SD Card
|
||||
#define RG_GPIO_SDSPI_MISO GPIO_NUM_19
|
||||
#define RG_GPIO_SDSPI_MOSI GPIO_NUM_23
|
||||
#define RG_GPIO_SDSPI_CLK GPIO_NUM_18
|
||||
#define RG_GPIO_SDSPI_CS GPIO_NUM_22
|
||||
|
||||
// External I2S DAC
|
||||
#define RG_GPIO_SND_I2S_BCK GPIO_NUM_NC
|
||||
#define RG_GPIO_SND_I2S_WS GPIO_NUM_NC
|
||||
#define RG_GPIO_SND_I2S_DATA GPIO_NUM_NC
|
||||
// #define RG_GPIO_SND_AMP_ENABLE GPIO_NUM_NC
|
||||
|
||||
// Updater
|
||||
#define RG_UPDATER_ENABLE 1
|
||||
#define RG_UPDATER_APPLICATION RG_APP_FACTORY
|
||||
#define RG_UPDATER_DOWNLOAD_LOCATION RG_STORAGE_ROOT "/meowboy/firmware"
|
||||
|
||||
9
components/retro-go/targets/meowboy/env.py
Normal file
9
components/retro-go/targets/meowboy/env.py
Normal file
@ -0,0 +1,9 @@
|
||||
# This file is injected late into rg_tool.py, you can run arbitrary python code here
|
||||
# For example override python variables or set environment variables with os.putenv
|
||||
|
||||
# Espressif chip in the device
|
||||
IDF_TARGET = "esp32"
|
||||
# .fw file format, if supported by the device
|
||||
FW_FORMAT = "none"
|
||||
# The stock board appears to have 4MB flash, so keep the default image small.
|
||||
DEFAULT_APPS = "launcher retro-core"
|
||||
191
components/retro-go/targets/meowboy/sdkconfig
Normal file
191
components/retro-go/targets/meowboy/sdkconfig
Normal file
@ -0,0 +1,191 @@
|
||||
#
|
||||
# Serial flasher config
|
||||
#
|
||||
CONFIG_ESPTOOLPY_PORT="COM14"
|
||||
CONFIG_ESPTOOLPY_BAUD_115200B=n
|
||||
CONFIG_ESPTOOLPY_BAUD_230400B=n
|
||||
CONFIG_ESPTOOLPY_BAUD_921600B=y
|
||||
CONFIG_ESPTOOLPY_BAUD_2MB=n
|
||||
CONFIG_ESPTOOLPY_BAUD=921600
|
||||
CONFIG_ESPTOOLPY_COMPRESSED=y
|
||||
CONFIG_ESPTOOLPY_FLASHMODE="dio"
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_80M=y
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_40M=n
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_26M=n
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ_20M=n
|
||||
CONFIG_ESPTOOLPY_FLASHFREQ="80m"
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_1MB=n
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_2MB=n
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=n
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_16MB=n
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE="4MB"
|
||||
CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
|
||||
CONFIG_ESPTOOLPY_FLASHMODE_QIO=y
|
||||
|
||||
#
|
||||
# Compiler options
|
||||
#
|
||||
CONFIG_COMPILER_OPTIMIZATION_DEFAULT=n
|
||||
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
|
||||
# IMPORTANT: ENABLE=y adds almost 50K to the executable, can't fit in our current 2.5MB goal...
|
||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=n
|
||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT=y
|
||||
CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE=n
|
||||
CONFIG_COMPILER_CXX_EXCEPTIONS=n
|
||||
CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
|
||||
CONFIG_COMPILER_STACK_CHECK_MODE_NORM=n
|
||||
CONFIG_COMPILER_STACK_CHECK_MODE_STRONG=n
|
||||
CONFIG_COMPILER_STACK_CHECK_MODE_ALL=n
|
||||
CONFIG_COMPILER_STACK_CHECK=n
|
||||
|
||||
#
|
||||
# SPI configuration
|
||||
#
|
||||
CONFIG_SPI_MASTER_IN_IRAM=y
|
||||
CONFIG_SPI_MASTER_ISR_IN_IRAM=y
|
||||
|
||||
#
|
||||
# ESP32-specific
|
||||
#
|
||||
CONFIG_ESP32_REV_MIN_0=n
|
||||
CONFIG_ESP32_REV_MIN_1=y
|
||||
CONFIG_ESP32_REV_MIN_2=n
|
||||
CONFIG_ESP32_REV_MIN_3=n
|
||||
CONFIG_ESP32_REV_MIN=1
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_80=n
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_160=n
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
|
||||
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
|
||||
CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT=n
|
||||
CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
|
||||
CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT=n
|
||||
CONFIG_ESP_SYSTEM_PANIC_GDBSTUB=n
|
||||
CONFIG_ESP_DEBUG_OCDAWARE=n
|
||||
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192
|
||||
CONFIG_ESP_INT_WDT=y
|
||||
CONFIG_ESP_TASK_WDT=n
|
||||
CONFIG_NEWLIB_NANO_FORMAT=y
|
||||
|
||||
#
|
||||
# SPI RAM config
|
||||
#
|
||||
CONFIG_ESP32_SPIRAM_SUPPORT=y
|
||||
CONFIG_SPIRAM_BOOT_INIT=y
|
||||
CONFIG_SPIRAM_IGNORE_NOTFOUND=y
|
||||
CONFIG_SPIRAM_USE_MEMMAP=n
|
||||
CONFIG_SPIRAM_USE_CAPS_ALLOC=n
|
||||
CONFIG_SPIRAM_USE_MALLOC=y
|
||||
CONFIG_SPIRAM_TYPE_AUTO=y
|
||||
CONFIG_SPIRAM_TYPE_ESPPSRAM32=n
|
||||
CONFIG_SPIRAM_TYPE_ESPPSRAM64=n
|
||||
CONFIG_SPIRAM_SIZE=-1
|
||||
CONFIG_SPIRAM_SPEED_40M=n
|
||||
CONFIG_SPIRAM_SPEED_80M=y
|
||||
CONFIG_SPIRAM_MEMTEST=n
|
||||
CONFIG_SPIRAM_CACHE_WORKAROUND=n
|
||||
CONFIG_SPIRAM_BANKSWITCH_ENABLE=n
|
||||
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=32768
|
||||
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=32768
|
||||
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=n
|
||||
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
|
||||
CONFIG_SPIRAM_OCCUPY_HSPI_HOST=n
|
||||
CONFIG_SPIRAM_OCCUPY_VSPI_HOST=y
|
||||
CONFIG_SPIRAM_OCCUPY_NO_HOST=n
|
||||
|
||||
#
|
||||
# FAT Filesystem support
|
||||
#
|
||||
CONFIG_FATFS_CODEPAGE_437=y
|
||||
CONFIG_FATFS_CODEPAGE=437
|
||||
CONFIG_FATFS_LFN_NONE=n
|
||||
CONFIG_FATFS_LFN_HEAP=y
|
||||
CONFIG_FATFS_LFN_STACK=n
|
||||
CONFIG_FATFS_MAX_LFN=255
|
||||
CONFIG_FATFS_API_ENCODING_ANSI_OEM=n
|
||||
CONFIG_FATFS_API_ENCODING_UTF_16=n
|
||||
CONFIG_FATFS_API_ENCODING_UTF_8=y
|
||||
CONFIG_FATFS_USE_FASTSEEK=y
|
||||
|
||||
#
|
||||
# FreeRTOS
|
||||
#
|
||||
CONFIG_FREERTOS_HZ=100
|
||||
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE=n
|
||||
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL=y
|
||||
CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=n
|
||||
CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y
|
||||
CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE=n
|
||||
CONFIG_FREERTOS_ASSERT_DISABLE=n
|
||||
CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024
|
||||
CONFIG_FREERTOS_USE_TRACE_FACILITY=n
|
||||
CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS=n
|
||||
CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=n
|
||||
|
||||
#
|
||||
# Log output
|
||||
#
|
||||
CONFIG_LOG_DEFAULT_LEVEL_NONE=n
|
||||
CONFIG_LOG_DEFAULT_LEVEL_ERROR=n
|
||||
CONFIG_LOG_DEFAULT_LEVEL_WARN=y
|
||||
CONFIG_LOG_DEFAULT_LEVEL_INFO=n
|
||||
CONFIG_LOG_DEFAULT_LEVEL_DEBUG=n
|
||||
CONFIG_LOG_DEFAULT_LEVEL_VERBOSE=n
|
||||
CONFIG_LOG_DEFAULT_LEVEL=2
|
||||
CONFIG_LOG_COLORS=y
|
||||
|
||||
#
|
||||
# Misc
|
||||
#
|
||||
# ODROID-GO partition table doesn't use any checksum
|
||||
CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS=y
|
||||
CONFIG_PARTITION_TABLE_MD5=n
|
||||
CONFIG_APP_BUILD_BOOTLOADER=n
|
||||
|
||||
#
|
||||
# HTTP Server
|
||||
#
|
||||
CONFIG_HTTPD_MAX_REQ_HDR_LEN=1024
|
||||
CONFIG_HTTPD_MAX_URI_LEN=1024
|
||||
|
||||
#
|
||||
# TLS
|
||||
#
|
||||
# Not ideal but I don't want to deal with CAs right now :(
|
||||
CONFIG_ESP_TLS_INSECURE=y
|
||||
CONFIG_ESP_TLS_SKIP_SERVER_CERT_VERIFY=y
|
||||
|
||||
#
|
||||
# SPI Flash driver
|
||||
#
|
||||
CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=n
|
||||
|
||||
#
|
||||
# Wi-Fi
|
||||
#
|
||||
CONFIG_ESP32_WIFI_IRAM_OPT=n
|
||||
CONFIG_ESP32_WIFI_RX_IRAM_OPT=n
|
||||
CONFIG_ESP32_WIFI_NVS_ENABLED=n
|
||||
|
||||
#
|
||||
# Ethernet
|
||||
#
|
||||
CONFIG_ETH_USE_ESP32_EMAC=n
|
||||
CONFIG_ETH_USE_SPI_ETHERNET=n
|
||||
CONFIG_ETH_USE_OPENETH=n
|
||||
|
||||
#
|
||||
# Silence deprecations because I have no intention of fixing them right now
|
||||
#
|
||||
CONFIG_ADC_SUPPRESS_DEPRECATE_WARN=y
|
||||
CONFIG_I2S_SUPPRESS_DEPRECATE_WARN=y
|
||||
|
||||
#
|
||||
# Partition table
|
||||
#
|
||||
# CONFIG_PARTITION_TABLE_SINGLE_APP is not set
|
||||
# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set
|
||||
# CONFIG_PARTITION_TABLE_TWO_OTA is not set
|
||||
CONFIG_PARTITION_TABLE_CUSTOM=y
|
||||
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="../partitions.csv"
|
||||
CONFIG_PARTITION_TABLE_FILENAME="../partitions.csv"
|
||||
Loading…
x
Reference in New Issue
Block a user