Close

11 Emulators and Counting

A project log for Retro ESP32

Game Boy Pocket form factor of an ESP32 based gaming device

Eugene AndruszczenkoEugene Andruszczenko 08/21/2019 at 14:060 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

Still working on integrating

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

Discussions