• 11 Emulators and Counting

    Eugene Andruszczenkoa day ago 0 comments

    That's right. We have managed to fit 11 emulators onto the ESP32 Wrover.

    Supported Emulators

    What else do you need to know, there are 11 currently supported

    • Nintendo Entertainment System
    • Nintendo Game Boy
    • Nintendo Game Boy Color
    • Sega Master System
    • Sega Game Gear
    • Colecovision
    • Sinclair Zx Spectrum 48k
    • Atari 2600
    • Atari 7800
    • Atari Lynx
    • PC Engine

    Still working on integrating

    • Commodore 64
    • Nintendo Game & Watch

    Take a look at how tight our partition table is:

    #########################################################
    # Name,     Type,   SubType,    Offset,     Size
    nvs,        data,   nvs,        0x9000,     0x4000
    otadata,    data,   ota,        0xd000,     0x2000
    phy_init,   data,   phy,        0xf000,     0x1000
    factory,    app,    factory,    0x10000,    0x80000
    storage,    data,   spiffs,     0x100000,   0x100000
    launcher,   0,      ota_0,      0x200000,   0x80000
    nes,        0,      ota_1,      0x280000,   0xc0000
    gb,         0,      ota_2,      0x340000,   0xb0000
    sms,        0,      ota_3,      0x3F0000,   0x160000
    a26,        0,      ota_4,      0x550000,   0x1a0000
    a78,        0,      ota_5,      0x6F0000,   0xc0000
    lnx,        0,      ota_6,      0x7B0000,   0xe0000
    pce,        0,      ota_7,      0x890000,   0xb0000
    data_0,     0x40,   0x00,       0x940000,   0x400000
    #########################################################


    That means when flashing the ESP32 or creating distributable firmware, it's a precise address and space allocation.  

    A snippet from the OTA flasher

    esptool.py \
    --chip esp32 \
    --port ${PORT} \
    --baud ${BAUD} \
    --before default_reset \
    --after hard_reset write_flash -z \
    --flash_mode dio \
    --flash_freq 80m \
    --flash_size detect \
    0x1000 $FIRMWARE_PATH/Bins/bootloader.bin \
    0x8000 $FIRMWARE_PATH/Bins/partitions.bin \
    0x10000 $FIRMWARE_PATH/Bins/${BIN}.bin \
    0x200000 $FIRMWARE_PATH/Bins/${BIN}.bin \
    0x280000 $FIRMWARE_PATH/Bins/nesemu-go.bin \
    0x340000 $FIRMWARE_PATH/Bins/gnuboy-go.bin \
    0x3F0000 $FIRMWARE_PATH/Bins/smsplusgx-go.bin \
    0x550000 $FIRMWARE_PATH/Bins/stella-go.bin \
    0x6F0000 $FIRMWARE_PATH/Bins/prosystem-go.bin \
    0x7B0000 $FIRMWARE_PATH/Bins/handy-go.bin \
    0x890000 $FIRMWARE_PATH/Bins/pcengine-go.bin

    And an example from the firmware builder

    ffmpeg -i $FIRMWARE_PATH/Assets/${TILE}.jpg -f rawvideo -pix_fmt rgb565 $FIRMWARE_PATH/Assets/${TILE}.raw -y
    
    $MKFW_PATH/mkfw ${NAME} $FIRMWARE_PATH/Assets/${TILE}.raw \
    0 16 524288 ${BIN} $FIRMWARE_PATH/Bins/${BIN}.bin \
    0 17 786432 nesemu-go $FIRMWARE_PATH/Bins/nesemu-go.bin \
    0 18 720896 gnuboy-go $FIRMWARE_PATH/Bins/gnuboy-go.bin \
    0 19 1441792 smsplusgx-go $FIRMWARE_PATH/Bins/smsplusgx-go.bin \
    0 20 1703936 stella-go $FIRMWARE_PATH/Bins/stella-go.bin \
    0 21 786432 prosystem-go $FIRMWARE_PATH/Bins/prosystem-go.bin \
    0 22 1507328 handy-go $FIRMWARE_PATH/Bins/handy-go.bin \
    0 23 720896 pcengine-go $FIRMWARE_PATH/Bins/pcengine-go.bin
    
    mv firmware.fw $FIRMWARE_PATH/Releases/${NAME}.fw

    You know they say a picture is worth a thousand words?

    Well, we think a video is worth much more!

    Click image to open video