From db96d92aae08488f5ca921daff03c7f45b65b313 Mon Sep 17 00:00:00 2001 From: Larry Li Date: Wed, 22 Jul 2020 17:59:02 +0800 Subject: [PATCH 1/4] fix lcd kconfig --- components/nofrendo-esp32/Kconfig.projbuild | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/components/nofrendo-esp32/Kconfig.projbuild b/components/nofrendo-esp32/Kconfig.projbuild index bd18b15..bc36932 100644 --- a/components/nofrendo-esp32/Kconfig.projbuild +++ b/components/nofrendo-esp32/Kconfig.projbuild @@ -43,35 +43,41 @@ config HW_LCD_TYPE default 1 if HW_LCD_TYPE_ST +config HW_LCD_MISO_GPIO_CUST + int "LCD MISO pin" + depends on HW_CUSTOM + range 1 35 + default 25 + config HW_LCD_MOSI_GPIO_CUST int "LCD MOSI pin" depends on HW_CUSTOM range 1 35 - default 25 - + default 23 + config HW_LCD_CLK_GPIO_CUST int "LCD CLK pin" depends on HW_CUSTOM range 1 35 - default 23 + default 19 config HW_LCD_CS_GPIO_CUST int "LCD CS pin" depends on HW_CUSTOM range 1 35 - default 19 + default 22 config HW_LCD_DC_GPIO_CUST int "LCD DC pin" depends on HW_CUSTOM range 1 35 - default 22 + default 21 config HW_LCD_RESET_GPIO_CUST int "LCD RESET pin" depends on HW_CUSTOM range 1 35 - default 21 + default 18 config HW_LCD_BL_GPIO_CUST int "LCD Backlight Enable pin" From 89279e849e8894024182cf43e25e22f5dfd07003 Mon Sep 17 00:00:00 2001 From: Larry Li Date: Wed, 22 Jul 2020 17:59:51 +0800 Subject: [PATCH 2/4] fix gcc error --- components/nofrendo/libsnss/libsnss.c | 2 +- components/nofrendo/nes/nes_rom.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/nofrendo/libsnss/libsnss.c b/components/nofrendo/libsnss/libsnss.c index 5541d24..f3a8ebc 100644 --- a/components/nofrendo/libsnss/libsnss.c +++ b/components/nofrendo/libsnss/libsnss.c @@ -182,7 +182,7 @@ SNSS_WriteFileHeader (SNSS_FILE *snssFile) char writeBuffer[8]; /* always place the SNSS tag in this field */ - strncpy (&writeBuffer[0], "SNSS", 4); + memcpy (&writeBuffer[0], "SNSS", 4); tempInt = swap32 (snssFile->headerBlock.numberOfBlocks); writeBuffer[4] = ((char *) &tempInt)[0]; writeBuffer[5] = ((char *) &tempInt)[1]; diff --git a/components/nofrendo/nes/nes_rom.c b/components/nofrendo/nes/nes_rom.c index 08580f0..7c73f54 100644 --- a/components/nofrendo/nes/nes_rom.c +++ b/components/nofrendo/nes/nes_rom.c @@ -465,7 +465,7 @@ rominfo_t *rom_load(const char *filename) if (rom_allocsram(rominfo)) goto _fail; - rom_loadtrainer(&rom, rominfo); + rom_loadtrainer(&rom, rominfo); if (rom_loadrom(&rom, rominfo)) goto _fail; From 3c51163633806f8c199477aac71a3ffffa4a62a9 Mon Sep 17 00:00:00 2001 From: Larry Li Date: Wed, 22 Jul 2020 18:01:40 +0800 Subject: [PATCH 3/4] use sdkconfig.defaults --- .gitignore | 2 +- sdkconfig | 281 --------------------------------------------- sdkconfig.defaults | 53 +++++++++ 3 files changed, 54 insertions(+), 282 deletions(-) delete mode 100644 sdkconfig create mode 100644 sdkconfig.defaults diff --git a/.gitignore b/.gitignore index f688810..b705f0f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ build/ +sdkconfig sdkconfig.old *.nes - diff --git a/sdkconfig b/sdkconfig deleted file mode 100644 index 70f420f..0000000 --- a/sdkconfig +++ /dev/null @@ -1,281 +0,0 @@ -# -# Automatically generated file; DO NOT EDIT. -# Espressif IoT Development Framework Configuration -# - -# -# SDK tool configuration -# -CONFIG_TOOLPREFIX="xtensa-esp32-elf-" -CONFIG_PYTHON="python" - -# -# Bootloader config -# -# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set -CONFIG_LOG_BOOTLOADER_LEVEL_WARN=y -# CONFIG_LOG_BOOTLOADER_LEVEL_INFO is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set -# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set -CONFIG_LOG_BOOTLOADER_LEVEL=2 - -# -# Security features -# -# CONFIG_SECURE_BOOT_ENABLED is not set -# CONFIG_FLASH_ENCRYPTION_ENABLED is not set - -# -# Serial flasher config -# -CONFIG_ESPTOOLPY_PORT="/dev/ttyUSB1" -# CONFIG_ESPTOOLPY_BAUD_115200B is not set -# CONFIG_ESPTOOLPY_BAUD_230400B is not set -CONFIG_ESPTOOLPY_BAUD_921600B=y -# CONFIG_ESPTOOLPY_BAUD_2MB is not set -# CONFIG_ESPTOOLPY_BAUD_OTHER is not set -CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 -CONFIG_ESPTOOLPY_BAUD=921600 -CONFIG_ESPTOOLPY_COMPRESSED=y -# CONFIG_FLASHMODE_QIO is not set -# CONFIG_FLASHMODE_QOUT is not set -CONFIG_FLASHMODE_DIO=y -# CONFIG_FLASHMODE_DOUT is not set -CONFIG_ESPTOOLPY_FLASHMODE="dio" -# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set -CONFIG_ESPTOOLPY_FLASHFREQ_40M=y -# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set -# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set -CONFIG_ESPTOOLPY_FLASHFREQ="40m" -# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y -# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set -# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set -CONFIG_ESPTOOLPY_FLASHSIZE="4MB" -CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y -CONFIG_ESPTOOLPY_BEFORE_RESET=y -# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set -CONFIG_ESPTOOLPY_BEFORE="default_reset" -CONFIG_ESPTOOLPY_AFTER_RESET=y -# CONFIG_ESPTOOLPY_AFTER_NORESET is not set -CONFIG_ESPTOOLPY_AFTER="hard_reset" -# CONFIG_MONITOR_BAUD_9600B is not set -# CONFIG_MONITOR_BAUD_57600B is not set -CONFIG_MONITOR_BAUD_115200B=y -# CONFIG_MONITOR_BAUD_230400B is not set -# CONFIG_MONITOR_BAUD_921600B is not set -# CONFIG_MONITOR_BAUD_2MB is not set -# CONFIG_MONITOR_BAUD_OTHER is not set -CONFIG_MONITOR_BAUD_OTHER_VAL=115200 -CONFIG_MONITOR_BAUD=115200 - -# -# Nofrendo ESP32-specific configuration -# -# CONFIG_HW_WROVERKIT_V1 is not set -CONFIG_HW_WROVERKIT_V2=y -# CONFIG_HW_CUSTOM is not set -CONFIG_HW_LCD_TYPE_ILI=y -# CONFIG_HW_LCD_TYPE_ST is not set -CONFIG_HW_WROVERKIT=y -CONFIG_HW_LCD_TYPE=0 -CONFIG_HW_INV_BL=y -CONFIG_HW_LCD_MISO_GPIO=25 -CONFIG_HW_LCD_MOSI_GPIO=23 -CONFIG_HW_LCD_CLK_GPIO=19 -CONFIG_HW_LCD_CS_GPIO=22 -CONFIG_HW_LCD_DC_GPIO=21 -CONFIG_HW_LCD_RESET_GPIO=18 -CONFIG_HW_LCD_BL_GPIO=5 -# CONFIG_SOUND_ENA is not set -CONFIG_HW_PSX_ENA=y -CONFIG_HW_PSX_CLK=14 -CONFIG_HW_PSX_DAT=27 -CONFIG_HW_PSX_ATT=16 -CONFIG_HW_PSX_CMD=2 - -# -# Partition Table -# -# CONFIG_PARTITION_TABLE_SINGLE_APP 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_CUSTOM_APP_BIN_OFFSET=0x10000 -CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" -CONFIG_APP_OFFSET=0x10000 -CONFIG_OPTIMIZATION_LEVEL_DEBUG=y -# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set - -# -# Component config -# -# CONFIG_AWS_IOT_SDK is not set -# CONFIG_BT_ENABLED is not set -CONFIG_BT_RESERVE_DRAM=0 - -# -# ESP32-specific -# -# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set -# CONFIG_ESP32_DEFAULT_CPU_FREQ_160 is not set -CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y -CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 -CONFIG_MEMMAP_SMP=y -# CONFIG_MEMMAP_TRACEMEM is not set -# CONFIG_MEMMAP_TRACEMEM_TWOBANKS is not set -# CONFIG_ESP32_TRAX is not set -CONFIG_TRACEMEM_RESERVE_DRAM=0x0 -# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set -# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set -CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y -# CONFIG_ESP32_ENABLE_COREDUMP is not set -# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set -# CONFIG_ESP32_APPTRACE_DEST_UART is not set -CONFIG_ESP32_APPTRACE_DEST_NONE=y -# CONFIG_ESP32_APPTRACE_ENABLE is not set -# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set -CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y -CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 -CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 -CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2048 -CONFIG_MAIN_TASK_STACK_SIZE=12240 -CONFIG_NEWLIB_STDOUT_ADDCR=y -# CONFIG_NEWLIB_NANO_FORMAT is not set -CONFIG_CONSOLE_UART_DEFAULT=y -# CONFIG_CONSOLE_UART_CUSTOM is not set -# CONFIG_CONSOLE_UART_NONE is not set -CONFIG_CONSOLE_UART_NUM=0 -CONFIG_CONSOLE_UART_BAUDRATE=115200 -# CONFIG_ULP_COPROC_ENABLED is not set -CONFIG_ULP_COPROC_RESERVE_MEM=0 -# CONFIG_ESP32_PANIC_PRINT_HALT is not set -CONFIG_ESP32_PANIC_PRINT_REBOOT=y -# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set -# CONFIG_ESP32_PANIC_GDBSTUB is not set -CONFIG_ESP32_DEBUG_OCDAWARE=y -# CONFIG_INT_WDT is not set -# CONFIG_TASK_WDT is not set -# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set -# CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1 is not set -# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set -CONFIG_ESP32_TIME_SYSCALL_USE_NONE=y -CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y -# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set -CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 -CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=0 -# CONFIG_ESP32_XTAL_FREQ_40 is not set -# CONFIG_ESP32_XTAL_FREQ_26 is not set -CONFIG_ESP32_XTAL_FREQ_AUTO=y -CONFIG_ESP32_XTAL_FREQ=0 -# CONFIG_WIFI_ENABLED is not set -# CONFIG_ETHERNET is not set - -# -# FAT Filesystem support -# -CONFIG_FATFS_CODEPAGE_ASCII=y -# CONFIG_FATFS_CODEPAGE_437 is not set -# CONFIG_FATFS_CODEPAGE_720 is not set -# CONFIG_FATFS_CODEPAGE_737 is not set -# CONFIG_FATFS_CODEPAGE_771 is not set -# CONFIG_FATFS_CODEPAGE_775 is not set -# CONFIG_FATFS_CODEPAGE_850 is not set -# CONFIG_FATFS_CODEPAGE_852 is not set -# CONFIG_FATFS_CODEPAGE_855 is not set -# CONFIG_FATFS_CODEPAGE_857 is not set -# CONFIG_FATFS_CODEPAGE_860 is not set -# CONFIG_FATFS_CODEPAGE_861 is not set -# CONFIG_FATFS_CODEPAGE_862 is not set -# CONFIG_FATFS_CODEPAGE_863 is not set -# CONFIG_FATFS_CODEPAGE_864 is not set -# CONFIG_FATFS_CODEPAGE_865 is not set -# CONFIG_FATFS_CODEPAGE_866 is not set -# CONFIG_FATFS_CODEPAGE_869 is not set -# CONFIG_FATFS_CODEPAGE_932 is not set -# CONFIG_FATFS_CODEPAGE_936 is not set -# CONFIG_FATFS_CODEPAGE_949 is not set -# CONFIG_FATFS_CODEPAGE_950 is not set -CONFIG_FATFS_CODEPAGE=1 -CONFIG_FATFS_MAX_LFN=255 - -# -# FreeRTOS -# -# CONFIG_FREERTOS_UNICORE is not set -CONFIG_FREERTOS_CORETIMER_0=y -# CONFIG_FREERTOS_CORETIMER_1 is not set -CONFIG_FREERTOS_HZ=1000 -CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y -# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set -# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set -CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y -# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set -CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3 -CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y -# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set -# CONFIG_FREERTOS_ASSERT_DISABLE is not set -CONFIG_FREERTOS_BREAK_ON_SCHEDULER_START_JTAG=y -# CONFIG_ENABLE_MEMORY_DEBUG is not set -CONFIG_FREERTOS_ISR_STACKSIZE=1536 -# CONFIG_FREERTOS_LEGACY_HOOKS is not set -CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 -# CONFIG_SUPPORT_STATIC_ALLOCATION is not set -CONFIG_TIMER_TASK_PRIORITY=1 -CONFIG_TIMER_TASK_STACK_DEPTH=2048 -CONFIG_TIMER_QUEUE_LENGTH=10 -# CONFIG_FREERTOS_DEBUG_INTERNALS is not set - -# -# Log output -# -# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set -# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set -# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set -CONFIG_LOG_DEFAULT_LEVEL_INFO=y -# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set -# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set -CONFIG_LOG_DEFAULT_LEVEL=3 -CONFIG_LOG_COLORS=y - -# -# LWIP -# -# CONFIG_L2_TO_L3_COPY is not set -CONFIG_LWIP_MAX_SOCKETS=4 -CONFIG_LWIP_THREAD_LOCAL_STORAGE_INDEX=0 -# CONFIG_LWIP_SO_REUSE is not set -# CONFIG_LWIP_SO_RCVBUF is not set -CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 -# CONFIG_LWIP_IP_FRAG is not set -# CONFIG_LWIP_IP_REASSEMBLY is not set -CONFIG_TCP_MAXRTX=12 -CONFIG_TCP_SYNMAXRTX=6 -# CONFIG_LWIP_DHCP_DOES_ARP_CHECK is not set -CONFIG_TCPIP_TASK_STACK_SIZE=2560 -# CONFIG_PPP_SUPPORT is not set - -# -# mbedTLS -# -CONFIG_MBEDTLS_SSL_MAX_CONTENT_LEN=16384 -# CONFIG_MBEDTLS_DEBUG is not set -CONFIG_MBEDTLS_HARDWARE_AES=y -CONFIG_MBEDTLS_HARDWARE_MPI=y -CONFIG_MBEDTLS_MPI_USE_INTERRUPT=y -CONFIG_MBEDTLS_HARDWARE_SHA=y - -# -# OpenSSL -# -# CONFIG_OPENSSL_DEBUG is not set -CONFIG_OPENSSL_ASSERT_DO_NOTHING=y -# CONFIG_OPENSSL_ASSERT_EXIT is not set - -# -# SPI Flash driver -# -# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set -CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y diff --git a/sdkconfig.defaults b/sdkconfig.defaults new file mode 100644 index 0000000..b8e10cf --- /dev/null +++ b/sdkconfig.defaults @@ -0,0 +1,53 @@ +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/ttyUSB1" +CONFIG_ESPTOOLPY_BAUD_921600B=y +CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 +CONFIG_ESPTOOLPY_BAUD=921600 +CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_ESPTOOLPY_FLASHSIZE="4MB" + +# +# Nofrendo ESP32-specific configuration +# +CONFIG_HW_WROVERKIT_V2=y +CONFIG_HW_LCD_TYPE_ILI=y +CONFIG_HW_WROVERKIT=y +CONFIG_HW_LCD_TYPE=0 +CONFIG_HW_INV_BL=y +CONFIG_HW_LCD_MISO_GPIO=25 +CONFIG_HW_LCD_MOSI_GPIO=23 +CONFIG_HW_LCD_CLK_GPIO=19 +CONFIG_HW_LCD_CS_GPIO=22 +CONFIG_HW_LCD_DC_GPIO=21 +CONFIG_HW_LCD_RESET_GPIO=18 +CONFIG_HW_LCD_BL_GPIO=5 +CONFIG_SOUND_ENA=n +CONFIG_HW_PSX_ENA=y +CONFIG_HW_PSX_CLK=14 +CONFIG_HW_PSX_DAT=27 +CONFIG_HW_PSX_ATT=16 +CONFIG_HW_PSX_CMD=2 + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_CUSTOM=y +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" + +# +# ESP32-specific +# +CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240 +CONFIG_MEMMAP_SMP=y +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=0 +CONFIG_ESP32_XTAL_FREQ_AUTO=y +CONFIG_ESP32_XTAL_FREQ=0 + +# +# FreeRTOS +# +CONFIG_FREERTOS_HZ=1000 +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=3 From f6f5c4af18529c43b7a3c8d3f10589836cd4b70c Mon Sep 17 00:00:00 2001 From: Larry Li Date: Wed, 22 Jul 2020 18:02:15 +0800 Subject: [PATCH 4/4] support idf 4.x cmake build --- CMakeLists.txt | 8 ++++++++ components/nofrendo-esp32/CMakeLists.txt | 5 +++++ components/nofrendo/CMakeLists.txt | 5 +++++ main/CMakeLists.txt | 4 ++++ 4 files changed, 22 insertions(+) create mode 100644 CMakeLists.txt create mode 100644 components/nofrendo-esp32/CMakeLists.txt create mode 100644 components/nofrendo/CMakeLists.txt create mode 100644 main/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..5a8b3db --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,8 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.5) + +set(SDKCONFIG_DEFAULTS sdkconfig.defaults) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(nesemu) \ No newline at end of file diff --git a/components/nofrendo-esp32/CMakeLists.txt b/components/nofrendo-esp32/CMakeLists.txt new file mode 100644 index 0000000..2a6c049 --- /dev/null +++ b/components/nofrendo-esp32/CMakeLists.txt @@ -0,0 +1,5 @@ +idf_component_register( + SRC_DIRS "." + INCLUDE_DIRS "." + REQUIRES nofrendo +) diff --git a/components/nofrendo/CMakeLists.txt b/components/nofrendo/CMakeLists.txt new file mode 100644 index 0000000..72c3fbd --- /dev/null +++ b/components/nofrendo/CMakeLists.txt @@ -0,0 +1,5 @@ +idf_component_register( + SRC_DIRS "cpu" "libsnss" "nes" "sndhrdw" "mappers" "." + INCLUDE_DIRS "cpu" "libsnss" "nes" "sndhrdw" "." +) +target_compile_options(${COMPONENT_LIB} PRIVATE -Wno-error=char-subscripts -Wno-error=attributes -DNOFRENDO_DEBUG) diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt new file mode 100644 index 0000000..23b31a7 --- /dev/null +++ b/main/CMakeLists.txt @@ -0,0 +1,4 @@ +idf_component_register( + SRC_DIRS "." + INCLUDE_DIRS "" +)