This weekend, I took the first steps in project ultralight, which were to define a bytecode language, write an assembler from text into that bytecode language, and to write a runtime targeting the Game Boy Advance (GBA), along with associated image conversion tools.
As of a few minutes ago, I have created a minimal working runtime. It can play simple VNs. It is still missing many features, such as variable support (Ultralight will only support integer/boolean vars), rollback, load/save, etc. Still, it is enough to run a simple demo consisting of the first part of Moonlight Walks.
It also supports speculative rendering, in which while frame n is being displayed, frame n + 1 is rendered in an offscreen buffer, ready for a quick DMA to the video buffer when the user chooses to advance.
I should note that I am writing this demo directly in Ultralight code, which looks something like:
Code: Select all
LABEL start DRAW 1 TEXT 0 "Ren'Py Ultralight/GBA 0.1 - Press A to advance." SHOW PAUSE DRAW 2 DRAW 0 TEXT 1 "It was the summer before I started college. I had\nspent the past two years studying, taking tests,\nand applying for admission." SHOW PAUSE
License wise, I'm considering making Ultralight free for non-commercial use, and charging a fee for games sold, if anyone wants to use it commercially.
Still, I think what's working today is interesting enough that I'm posting it here. To play the demo, one needs a GBA emulator... I've been using Visual Boy Advance.