Any S3 board with 16MB of flash will do for partition choices.
If the partition numbers add up to about 15MB, then you're OK with that.
The right board also sets/selects other features, like pin allocation.
Pick a Waveshare AMOLED board that comes closest.
The easy way is to select the Huge (3MB sketch) option from the partition list.
My slightly old version of the official esp32 board has
$ grep '\.name=' ~/Library/Arduino15/packages/esp32/hardware/esp32/3.0.7/boards.txt | wc -l
311
different variants, with just two
$ grep '\.name=' ~/Library/Arduino15/packages/esp32/hardware/esp32/3.0.7/boards.txt | grep -n -i amoled
292:waveshare_esp32_s3_touch_amoled_18.name=Waveshare ESP32-S3-Touch-AMOLED-1.8
303:waveshare_esp32_s3_touch_amoled_241.name=Waveshare ESP32-S3-Touch-AMOLED-2.41
AMOLED boards (conveniently near the bottom). Both default to a 4MB partition scheme. Note that those include
- 1.2MB for your sketch
- another 1.2MB to hold an OTA (over the air) update, so you can switch to that and then alternate between them
- 1.5MB for SPIFFS or some other onboard file system
There are alternate schemes with smaller or no file system, or no OTA; the latter doubles the available sketch size. And also schemes for larger than 4MB, if those apply to your specific board. You choose the Partition Scheme under the Tools menu.
You can get more variants by installing other Board packages, but that may not be necessary.
The sales blurb for OP's board clearly states 16MB flash.
You are going to ignore 12Mb (3/4) of that by selecting a 4Mb board.
Now that's a waste of flash.
I would go through the available AMOLED boards until there is an option to select 3MB for the sketch. That should be enough for a huge sketch.
Come back if you need to use all of the flash forOTA and/or SPIFFS for tft images. I can talk you through making your own partition scheme.
Leo..
Here are the schemes for the 1.8 board
$ egrep -o 'amoled_18.+PartitionScheme\.\w+=(.+)' ~/Library/Arduino15/packages/esp32/hardware/esp32/3.0.7/boards.txt | \
egrep -o '[^=]+$'
16M Flash (3MB APP/9.9MB FATFS)
Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
No OTA (2MB APP/2MB SPIFFS)
No OTA (1MB APP/3MB SPIFFS)
No OTA (2MB APP/2MB FATFS)
No OTA (1MB APP/3MB FATFS)
Huge APP (3MB No OTA/1MB SPIFFS)
Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
RainMaker 4MB
RainMaker 8MB
16M Flash (2MB APP/12.5MB FATFS)
16M Flash (3MB APP/9.9MB FATFS)
OTA no FS (2MB APP with OTA)
Max APP (4MB APP no OTA)
Custom
Hmm, that 16MB one is listed twice
$ egrep -o 'amoled_18.+PartitionScheme\.\w+=(.+)' ~/Library/Arduino15/packages/esp32/hardware/esp32/3.0.7/boards.txt | \
egrep -o '\w+=[^=]+$' | \
sort
all_app=Max APP (4MB APP no OTA)
app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS)
app3M_fat9M_16MB=16M Flash (3MB APP/9.9MB FATFS)
custom=Custom
default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS)
defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS)
fatflash=16M Flash (2MB APP/12.5MB FATFS)
huge_app=Huge APP (3MB No OTA/1MB SPIFFS)
min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS)
no_ota=No OTA (2MB APP/2MB SPIFFS)
noota_3g=No OTA (1MB APP/3MB SPIFFS)
noota_3gffat=No OTA (1MB APP/3MB FATFS)
noota_ffat=No OTA (2MB APP/2MB FATFS)
otanofs=OTA no FS (2MB APP with OTA)
rainmaker_8MB=RainMaker 8MB
rainmaker=RainMaker 4MB
Anyway, the two built-in options don't really let you have gigantic sketches, but definitely more than 1.2MB: 2 and 3MB
The Waveshare ESP32-S3-Touch-AMOLED-1.43" has a default 3MB/9.9MB partition.
That's 3MB for the main sketch, 3MB fot OTA updates and 9.9MB for general storage.
And some for nvs and core dump.
You can see/inspect it all after uploading with ESPConnect.
Leo..
Note that CDC is enabled for printing to serial.
A huge Thank You to all who helped me with this; I am very happy. A lot of confusion for me from the start: I expected that Arduino would be fed the board specifics when connected (hence the Tools / Get Board Info menu), and expected that such choice would lean toward some meaningful allocation of memory. You folks have set reality in place. I was confused how a 16MB device would only let me use 1.2MB for my code, but as a novice I just tried to work around it - and that's why I focused on the biggest memory waster I could find: the WiFi library (which I still hold is significantly larger than it should be - but I am less concerned about that now).
You have pointed me in the right direction, got me to where something that did not work at all now works well, and even given me some tools (espConnect) along the way. Thanks for your giving spirit and patience!
These greps for board information are priceless! Thank you for this!

