pouët.net

Blocks64 by optimus

Blocks64 by Optimus
-------------------

I wasn't going to go too much lower (really, every opcode is 4bytes long and there isn't much you can do) but as an exercise I tried to see if it's possible to do anything on just 64 bytes. The conclusion, not much, but there might be a bit of space for 128b.

What prompted me is finding some sources from Kieran, mainly this empty 256b framework https://github.com/kieranhj/proto-256b and realizing I could have saved few more bytes on my previous intro. I reduced that one to 224 bytes. The biggest saver was that I didn't know there is a simple SWI to get if Escape is pressed, instead of press Space check I previously got from ChibiAkumas tutorials (https://www.chibialiens.com/arm/platform.php#LessonP1). That one was 24 bytes before the branch, this one 4 bytes of course.

Anyway, later I tried to get the proto-256b framework and empty it (remove the effect example) as much as possible, just to see how low a basic skeleton is, init screen mode, get the vram start address, check for escape and exit cleanly to the OS. The code to disable the cursor is one SWI from my side (swi #36, I got this from Chibi) but on the proto-256b it's one MOV and one SWI. I don't really know if the shorter method could be less compatible, but it works on Arculator from A3000 to later models and also on my A7000+ archimedes.

I ended up with some empty versions, the original removing cursor, clean escape and everything is 52 bytes. Not removing the cursor (who cares for such tiny sizes?) 48 bytes. No escape to exit (must reboot the Archie :P) 40 bytes. It's on this mode that I could barely do anything to fit 64 bytes exactly. Read the vram address from where it's stored by the SWI, read monotonic timer with an SWI (in centiseconds (100hz)), inc the address and write value+timer to move some pattern, do a weird shift with S to account for flags in the branch (instead of setting a reg to 320*256 and subs reg,reg,#1 that took me 8 bytes) and I barely managed to fit this scrolling pattern in 64bytes, without problems or crashes, but no escape.

I guess there is some space and more experience with ARM for one 128b attempt now, but later I'll go higher in the categories again. Maybe a full demo at some point.

Optimus