diff --git a/.gitignore b/.gitignore index 88ab228..bf1caa3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ +build/ +sdkconfig.old + rom.bin rom/ *.o -tme +components/tme/tme diff --git a/.gitmodules b/.gitmodules index 1a090bc..1f7909a 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "Musashi"] - path = musashi + path = components/tme/musashi url = https://github.com/kstenerud/Musashi.git diff --git a/Makefile b/Makefile index a9ef1d1..9f2c327 100644 --- a/Makefile +++ b/Makefile @@ -1,19 +1,9 @@ -TARGET:=tme -MUSASHI_GEN_SRC:=musashi/m68kops.c musashi/m68kopac.c musashi/m68kopdm.c musashi/m68kopnz.c -OBJ:=$(MUSASHI_GEN_SRC:%.x=%.o) musashi/m68kcpu.o main.o emu.o disp.o iwm.o via.o rtc.o ncr.o hd.o -#musashi/m68kdasm.o -CFLAGS=-Wall -I. -I./musashi -Og -ggdb `sdl2-config --cflags` -LDFLAGS=`sdl2-config --libs` +# +# This is a project Makefile. It is assumed the directory this Makefile resides in is a +# project subdirectory. +# -$(TARGET): $(OBJ) - $(CC) -o $(@) $(CFLAGS) $(LDFLAGS) $^ +PROJECT_NAME := app-template -$(MUSASHI_GEN_SRC): musashi/m68kmake - cd musashi; ../$(^) +include $(IDF_PATH)/make/project.mk -musashi/m68kmake: musashi/m68kmake.c - $(CC) -o $@ $^ - -clean: - rm -f $(MUSASHI_GEN_SRC) musashi/m68kmake - rm -f $(OBJ) $(TARGET) diff --git a/components/tme/disp.h b/components/tme/disp.h new file mode 100644 index 0000000..bbbdfa5 --- /dev/null +++ b/components/tme/disp.h @@ -0,0 +1,4 @@ +#include + +void dispInit(); +void dispDraw(uint8_t *mem); diff --git a/emu.c b/components/tme/emu.c similarity index 82% rename from emu.c rename to components/tme/emu.c index 3349740..ae6cda6 100644 --- a/emu.c +++ b/components/tme/emu.c @@ -6,7 +6,7 @@ #include #include #include -#include "config.h" +#include "tmeconfig.h" #include "m68k.h" #include "disp.h" #include "iwm.h" @@ -22,6 +22,7 @@ int rom_remap, video_remap=0, audio_remap=0; void m68k_instruction() { unsigned int pc=m68k_get_reg(NULL, M68K_REG_PC); + printf("Mon: %x\n", pc); int ok=0; if (pc < 0x400000) { if (rom_remap) { @@ -96,30 +97,52 @@ void printFps() { if (oldtv.tv_sec!=0) { long msec=(tv.tv_sec-oldtv.tv_sec)*1000; msec+=(tv.tv_usec-oldtv.tv_usec)/1000; - printf("Speed: %d%%\n", 100000/msec); + printf("Speed: %d%%\n", (int)(100000/msec)); } oldtv.tv_sec=tv.tv_sec; oldtv.tv_usec=tv.tv_usec; } +typedef void (m68ki_instruction_jump_call)(void); -void tmeStartEmu(void *rom) { +m68ki_instruction_jump_call **m68ki_instruction_jump_table; +unsigned char **m68ki_cycles; + + +void tmeStartEmu(void *ram, void *rom) { int ca1=0, ca2=0; int x, frame=0; macRom=rom; - macRam=malloc(TME_RAMSIZE); + macRam=ram; + printf("Allocating mem for m68k structs\n"); + m68ki_instruction_jump_table=malloc(sizeof(*m68ki_instruction_jump_table)*0x10000); + m68ki_cycles=malloc(sizeof(*m68ki_cycles)*4); + m68ki_cycles[0]=malloc(sizeof(**m68ki_cycles)*0x10000); + m68ki_cycles[1]=malloc(sizeof(**m68ki_cycles)*0x10000); + m68ki_cycles[2]=malloc(sizeof(**m68ki_cycles)*0x10000); + if (m68ki_instruction_jump_table==NULL || m68ki_cycles[2]==NULL) { + printf("Malloc of 68k emu structs failed.\n"); + abort(); + } + printf("Clearing ram...\n"); for (int x=0; xpixels; diff --git a/hd.c b/components/tme/sdl/hd.c similarity index 100% rename from hd.c rename to components/tme/sdl/hd.c diff --git a/main.c b/components/tme/sdl/main.c similarity index 84% rename from main.c rename to components/tme/sdl/main.c index a562ff9..e5c7b36 100644 --- a/main.c +++ b/components/tme/sdl/main.c @@ -6,7 +6,7 @@ #include #include #include -#include "config.h" +#include "tmeconfig.h" static void *loadRom(char *file) { @@ -23,5 +23,6 @@ static void *loadRom(char *file) { int main(int argc, char **argv) { void *rom=loadRom("rom.bin"); - tmeStartEmu(rom); + void *ram=malloc(TME_RAMSIZE); + tmeStartEmu(ram, rom); } diff --git a/via.c b/components/tme/via.c similarity index 100% rename from via.c rename to components/tme/via.c diff --git a/via.h b/components/tme/via.h similarity index 100% rename from via.h rename to components/tme/via.h diff --git a/config.h b/config.h deleted file mode 100644 index e609f90..0000000 --- a/config.h +++ /dev/null @@ -1,10 +0,0 @@ - - -#define TME_ROMSIZE (128*1024) - -#define TME_RAMSIZE (4096*1024) - -#define TME_SCREENBUF (TME_RAMSIZE-0x5900) -#define TME_SCREENBUF_ALT (TME_RAMSIZE-0xD900) - - diff --git a/disp.h b/disp.h deleted file mode 100644 index b69d3ee..0000000 --- a/disp.h +++ /dev/null @@ -1,2 +0,0 @@ -void dispInit(); -void dispDraw(char *mem); diff --git a/emu.h b/emu.h deleted file mode 100644 index 0e1a199..0000000 --- a/emu.h +++ /dev/null @@ -1,3 +0,0 @@ - - -void tmeStartEmu(void *rom); \ No newline at end of file diff --git a/flashhd.sh b/flashhd.sh new file mode 100755 index 0000000..23e8a1a --- /dev/null +++ b/flashhd.sh @@ -0,0 +1,4 @@ +#!/bin/bash +#python /home/jeroen/esp8266/esp32/esp-idf/bin/esptool.py --chip esp32 --port "/dev/ttyUSB0" --baud 115200 write_flash -z -fs 32m 0x100000 doom1-cut.wad +python /home/jeroen/esp8266/esp32/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port "/dev/ttyUSB1" --baud $((921600/2)) --before default_reset --after hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size detect 0x120000 $1 + diff --git a/flashrom.sh b/flashrom.sh new file mode 100755 index 0000000..0d01809 --- /dev/null +++ b/flashrom.sh @@ -0,0 +1,4 @@ +#!/bin/bash +#python /home/jeroen/esp8266/esp32/esp-idf/bin/esptool.py --chip esp32 --port "/dev/ttyUSB0" --baud 115200 write_flash -z -fs 32m 0x100000 doom1-cut.wad +python /home/jeroen/esp8266/esp32/esp-idf/components/esptool_py/esptool/esptool.py --chip esp32 --port "/dev/ttyUSB1" --baud $((921600/2)) --before default_reset --after hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size detect 0x100000 rom.bin + diff --git a/partitions.csv b/partitions.csv new file mode 100644 index 0000000..df77d1e --- /dev/null +++ b/partitions.csv @@ -0,0 +1,6 @@ +# Espressif ESP32 Partition Table +# Name, Type, SubType, Offset, Size +factory, app, factory, 0x10000, 928k +wifidata,data, nvs, 0xFC000, 16K +rom, 0x40, 0x01, 0x100000, 128K +hd, 0x40, 0x02, 0x120000, 0x2e0000 diff --git a/sdkconfig b/sdkconfig new file mode 100644 index 0000000..0f01627 --- /dev/null +++ b/sdkconfig @@ -0,0 +1,218 @@ +# +# 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 is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 + +# +# Security features +# +# CONFIG_SECURE_BOOT_ENABLED is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set + +# +# Serial flasher config +# +CONFIG_ESPTOOLPY_PORT="/dev/ttyUSB0" +# 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=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +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 + +# +# 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_PHY_DATA_OFFSET= +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set + +# +# Component config +# +# 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_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_MEMMAP_SPIRAM_ENABLE=y +CONFIG_MEMMAP_SPIRAM_TYPE_ESPPSRAM32=y +CONFIG_MEMMAP_SPIRAM_SIZE=4194304 +# CONFIG_MEMMAP_SPIRAM_NO_HEAPALLOC is not set +CONFIG_MEMMAP_SPIRAM_TEST=y +CONFIG_MEMMAP_SPIRAM_ENABLE_MALLOC=y +CONFIG_MEMMAP_SPIRAM_ALLOC_LIMIT_INTERNAL=40960 +# CONFIG_TWO_MAC_ADDRESS_FROM_EFUSE is not set +CONFIG_FOUR_MAC_ADDRESS_FROM_EFUSE=y +CONFIG_NUMBER_OF_MAC_ADDRESS_GENERATED_FROM_EFUSE=4 +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=4096 +CONFIG_MAIN_TASK_STACK_SIZE=4096 +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 is not set +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +CONFIG_ESP32_PANIC_GDBSTUB=y +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=y +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=0 +# CONFIG_WIFI_ENABLED is not set +# CONFIG_ETHERNET is not set + +# +# FreeRTOS +# +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_HZ=100 +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=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +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=2000 +# CONFIG_FREERTOS_LEGACY_HOOKS is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# 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=10 +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 + +# +# 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 +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set + +# +# 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