Yet another DOOM port, this one specifically to be loaded on the TiDAL badge as a standard python module and integrated to the application manager.
This is experimental code, not a polished application, as such it has sharp edges that may cause you problems - take note and use caution:
pyboard.pyassuming a real serial port). If you know how to speed up
pyboard.pyor if a different tool/technique is faster to copy over to flash, please make it so!
doom.binfile. If you don't know what this means, you probably need to read some of the documentation about the TiDAL badge. There was a plan to back up the partition first, but it doesn't fit on the flash storage along with the WAD..
Makefileafter an initial install to speed things up. If you think this could work better (file size/hashes to avoid copying?), please make it so :)
Seriously... ok: https://knowyourmeme.com/memes/it-runs-doom
A much better question:
^ I had made about 4000LoC changes, to remove declared data and static variables
.mpy format doesn't support either. This turned out to
be a huge waste of effort, as I now build a separate application binary that
does support such things, and load it myself.
doomloader.mpyloadable python module and providing the uPython dynamic module API.
python3-pyelftoolspackage (on my Debian system)
First, ensure you have the Xtensa GCC cross-compiler for you host system installed (unpacked) somewhere easy to refer to by environment variable.
Second, clone this project, and yank those submodules (but not recursive!):
% cd <project dir> % git submodule init --update
Thirdly, check you can access the TiDAL badge python REPL via serial port
as this is how we'll be loading the test app (with the
from the micropython project).
Building should now work via GNU make, provided it's told where to find the Xtensa GCC:
% make COMPILER=<path to xtensa top level> ..or.. % export COMPILER=<path to xtensa top level> % make
Installing the built module and wrapper python looks like this:
% make install <..or..> % micropython/tools/pyboard.py --no-soft-reset -f mkdir /apps/Doom % micropython/tools/pyboard.py --no-soft-reset -f cp __init__.py :/apps/Doom/ % micropython/tools/pyboard.py --no-soft-reset -f cp doomloader.mpy :/apps/Doom/ % micropython/tools/pyboard.py --no-soft-reset -f cp build/doom.bin :/apps/Doom/ % micropython/tools/pyboard.py --no-soft-reset -f cp DOOM1.WAD :/apps/Doom/
Debugging is by resetting the badge, then connecting your favourite serial
terminal program (I like
minicom) to the TiDAL badge REPL, before selecting
Doom app on the badge screen...
phlashboot is a test program to ensure I can build/install/run a very simple
program on a bare metal device, and/or as an application in an OTA slot.
memstuff is my investigation of the workings of ESP32S3 memory mapping/caching
to make very sure I understand it, and see how it's used by micropython, so I can
do vile things without causing harm...
romreadand supporting bits is a
.mpymodule for poking about in memory..
binsegmentsis a trivial display program for ESP-IDF format
.binfiles that are loaded from bootstrap or an OTA partition.
After a month of effort on and off, it seems to work..
There is now a progress blog