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
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.