I have the m5 timer camera which is I believe the same board that is within the timer camera x housing.
I have a micropython(at commit: 517e82eb6b7d93134637b5658132479f4fc260e3) build for it here: https://github.com/mocleiri/tensorflow-micropython-examples/actions/runs/1767505151
Scroll down and download the microlite-spiram-cam-esp32-firmware.zip file.
Then flash using esptool; At least with mine you have to flash at 115200 or it won't work.
esptool.py -p COM5 -b 115200 --before default_reset --after hard_reset --chip esp32 write_flash --flash_mode dio --flash_size detect --flash_freq 40m 0x1000 bootloader/bootloader.bin 0x8000 partition_table/partition-table.bin 0x10000 micropython.bin
This firmware gives you a 2 MB heap and leaves 2MB for use by the esp32-camera driver.
The purpose of this firmware was to use the camera for the tensorflow lite for microcontrollers person detection example and we only capture a 96x96 image.
But still it could be useful if you want a micropython firmware that works with the ov3660 camera and to experiment with.
The main issue in getting this to work was to ensure the idf sdk config flag CONFIG_SPIRAM_USE_MALLOC was enabled.
And then a change into micropython to cause the heap allocated to micropython to be 1/2 of the available SPIRAM.
Both are only details if you make your own custom firmware.
You should be able to pick up the firmware from the above action or if that is expired there will be a more recent one to use.